Skip to content

DecodingError: ManeuverDirection "reverse" not found #594

@sj1914

Description

@sj1914

Hi there

We are frequently getting an error from mapbox when trying to calculate a route using the MapboxDirections API:

 ▿ underlying : Optional<Error>
      ▿ some : DecodingError
        ▿ dataCorrupted : Context
          ▿ codingPath : 10 elements
            - 0 : CodingKeys(stringValue: "routes", intValue: nil)
            ▿ 1 : _JSONKey(stringValue: "Index 0", intValue: 0)
              - stringValue : "Index 0"
              ▿ intValue : Optional<Int>
                - some : 0
            - 2 : CodingKeys(stringValue: "legs", intValue: nil)
            ▿ 3 : _JSONKey(stringValue: "Index 9", intValue: 9)
              - stringValue : "Index 9"
              ▿ intValue : Optional<Int>
                - some : 9
            - 4 : CodingKeys(stringValue: "steps", intValue: nil)
            ▿ 5 : _JSONKey(stringValue: "Index 0", intValue: 0)
              - stringValue : "Index 0"
              ▿ intValue : Optional<Int>
                - some : 0
            - 6 : CodingKeys(stringValue: "bannerInstructions", intValue: nil)
            ▿ 7 : _JSONKey(stringValue: "Index 0", intValue: 0)
              - stringValue : "Index 0"
              ▿ intValue : Optional<Int>
                - some : 0
            - 8 : CodingKeys(stringValue: "primary", intValue: nil)
            - 9 : CodingKeys(stringValue: "modifier", intValue: nil)
          - debugDescription : "Cannot initialize ManeuverDirection from invalid String value reverse"
          - underlyingError : nil
    - code : nil
    - message : nil

When diving in to this further, it looks like this enum value indeed does not exist in the code:

https://github.com/mapbox/mapbox-directions-swift/blob/main/Sources/MapboxDirections/RouteStep.swift

Here is a snippet of an example of one of the offending JSON responses:

                            "bannerInstructions": [
                                {
                                    "primary": {
                                        "components": [
                                            {
                                                "type": "text",
                                                "text": "Enter Winwick Interchange and take the 3rd exit"
                                            }
                                        ],
                                        "degrees": 307,
                                        "driving_side": "left",
                                        "type": "roundabout",
                                        "modifier": "reverse",  <---- ???? 
                                        "text": "Enter Winwick Interchange and take the 3rd exit"
                                    },
                                    "distanceAlongGeometry": 0
                                }
                            ],

Unless i am mistaken it appears the library is not equipped to decode this object.

Keen to hear of a solution, hope this is helpful!

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions