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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions