-
Notifications
You must be signed in to change notification settings - Fork 117
Closed
Labels
Description
Run into the following crash 👇 when working with the latest changes brought in #1118 #1121
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 40819 path $.routeOptions.bearings
at com.google.gson.Gson.fromJson(Gson.java:944)
at com.google.gson.Gson.fromJson(Gson.java:897)
at com.google.gson.Gson.fromJson(Gson.java:846)
at com.google.gson.Gson.fromJson(Gson.java:817)
at com.mapbox.api.directions.v5.models.DirectionsRoute.fromJson(DirectionsRoute.java:158)
at com.mapbox.mapboxsdk.navigation.navigationmetrics.NavigationViewPerformanceTest.lambda$dca_Arboretum_Tunnels$1$NavigationViewPerformanceTest(NavigationViewPerformanceTest.java:90)
at com.mapbox.mapboxsdk.navigation.navigationmetrics.-$$Lambda$NavigationViewPerformanceTest$xHZIbREccwNrm2MB997ZgvqMktI.onInvokeAction(lambda)
at com.mapbox.mapboxsdk.navigation.navigationmetrics.action.NavigationViewAction.perform(NavigationViewAction.java:38)
at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:356)
at androidx.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:248)
at androidx.test.espresso.ViewInteraction.access$100(ViewInteraction.java:63)
at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:153)
at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:150)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 40819 path $.routeOptions.bearings
at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:351)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:80)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
at com.mapbox.api.directions.v5.models.AutoValue_RouteOptions$GsonTypeAdapter.read(AutoValue_RouteOptions.java:415)
at com.mapbox.api.directions.v5.models.AutoValue_RouteOptions$GsonTypeAdapter.read(AutoValue_RouteOptions.java:41)
at com.mapbox.api.directions.v5.models.AutoValue_DirectionsRoute$GsonTypeAdapter.read(AutoValue_DirectionsRoute.java:224)
at com.mapbox.api.directions.v5.models.AutoValue_DirectionsRoute$GsonTypeAdapter.read(AutoValue_DirectionsRoute.java:30)
at com.google.gson.Gson.fromJson(Gson.java:932)
... 20 more
Problem is that previous RouteOptions JSONs don't get serialized properly because now we expect Lists and before Strings.
Here there's a DirectionsRoute that was valid before and now fails to serialize 👇
{"distance":13105.3,"duration":1411.2,"geometry":"g~kbiAdgj}qC_fBdh@k}@|WaaAfb@qa@vMc@Je^zJsd@dNgWvFeOdAqKR_EGwIs@cOkAyQkCkMkDePuFqZaLei@{_@ea@e]}TcU}r@k|@a|@ubAmAoAq_@k`@qXoUiGgEqJyGyFsCiN_HgCoA{DgBwEiBeEcBkEwAuD_AkEgA{EkAcF}@iEe@eFq@{Fk@qEc@}DO{F_@mFI}DIaFFuENaFT_F\\wE^wEl@cFt@kEz@qE~@wEfAuFjB_EpAoD`BqFbCuDjBgDbBgF|CaDpBiElCoEvCqOpJoDrCoIjH{IxI{OvPsPtOcFvDeKfJkb@r[cF|BwDh@}DDgHmCqCsBgSkLuzAcwA{OaO_kC_gCsdAc_AkUm^aCkE_C_F}BoFsBiF_BsFeBgGoAcGgAqFcAaHs@mGc@eG]wGYcHSyGEmPBuHBwE?gIFkGAeGAoHKcHUaG[eHg@wGm@qGu@uGy@gGkAkGwAkGsAqFkBgG_BiFgB{FoBoEiBgEqCqF{BeEgDcFsj@}s@}I{K{_@ii@iDqFsCuEwCeFiDoHuFgLqC_HwAyDuBkG_BcGwAgFsBqHkA{EiAaGqAuG_AgFy@iFq@sEQcBu@iFy@mGq@cHoBcXUwF]{GU{GIqGGsPD_b@A}dAE}PQ{XuAu}@eAs|CQqdABi_@rCys@?cEA}GFyEHkDTe\\Fs_CWgQkAsRkBaOmCmMeFsP}EwMsAkCuCmDuC{EyCiEiGmJmJsGyDmCuTuHuIkB_Hm@kHe@iJBcPb@{IAyLT_F~@uEfAcExAqEdB{E|AiEdBmBjAsLzHgM`KcQxQsOhMmJrIsNzDi`@|IuUnE{xEtAozAPyvBhBiA?oEGoFHkc@CmA@gEHiGCeREmEDaF?gE?eF?uE?iF?cE?wE?aF?wE?qE?kF?iE?mF@kE?_E?eF@sECeF?{D@qF@iE?iF@{E@cE@eFEyE@w@EwaCu@sQ|@gN`D_V`JmUvN_D`BgEdCcEbCiDrBiEdCsEjCqDvB{DzBqElCgEdCsDvBcEzB{EpCyD|B}DzBkEfC}D|BkEfCmDpBkDpByDnBqBf@_ADoD?wBc@u@YoBuG_BoGkGaW}@sDw@{C_FeS{VgdAoD{NaZokA_l@eaCkLse@yEwOyD_PeFgTgAqEo`@u_BuDiOqHcZ_AeDmEePkH}[oE{PqF}U}BiJk@gCgu@o{CuZspAiSwy@eMah@}Iw^qE}QaYyiA{C}L}DaP{Qeu@mPop@u^yxAae@qkBa@iBuIe`@kDwK{GoXiJ}_@iSgz@aY_kAcy@ogDu[{qAiRqx@o^awAwByJcBwHiAgFaAmGyAuJaAiMUiCc@aRM{Yo@ij@EgCOwX~DaBzCmDdBcFbVuVbHaL~SgUfOgPbb@yc@|}@caAdFoFrA_Flh@j`@dTlOtKxHnE|CtFnCr@mG|A{\\?_OHemA?ujA?cq@@kf@NkFDu@Bw@JmBFu@vFyKtAaB~AoBvDsEnFqLr@wCQqDdAy@d@{@\\aBDaAnHwCIsEKqDgBaa@]kICs@q@cPg@sLm@_Q_@gLLuCXgEJwANuARuAl@gDfAwEf@iBhAmEf@}@|@wBbAqBhAkBdAyAzAiB~AeBdB{AfBuAjBqAfDqBv@a@lDcBtB{@|Bs@~Bq@`E_AbCe@dDg@xC]jBO","weight":1640.8,"weight_name":"routability","legs":[{"distance":13105.3,"duration":1411.2,"summary":"Aviation Circle - departures, New York Avenue Northeast","steps":[{"distance":785.2,"duration":286.7,"geometry":"g~kbiAdgj}qC_fBdh@k}@|WaaAfb@qa@vMc@Je^zJsd@dNgWvFeOdAqKR_EGwIs@cOkA","name":"Aviation Circle - departures","mode":"driving","maneuver":{"location":[-77.043331,38.853108],"bearing_before":0.0,"bearing_after":343.0,"instruction":"Head north on Aviation Circle - departures","type":"depart"},"voiceInstructions":[{"distanceAlongGeometry":785.2,"announcement":"Head north on Aviation Circle - departures for a half mile","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eHead north on Aviation Circle - departures for a half mile\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":191.7,"announcement":"In 700 feet, take the ramp","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eIn 700 feet, take the ramp\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":41.1,"announcement":"Take the ramp, then merge left onto George Washington Memorial Parkway","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eTake the ramp, then merge left onto George Washington Memorial Parkway\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":785.2,"primary":{"text":"Take the ramp","components":[{"text":"Take the ramp","type":"text"}],"type":"turn","modifier":"straight"}},{"distanceAlongGeometry":41.1,"primary":{"text":"Take the ramp","components":[{"text":"Take the ramp","type":"text"}],"type":"turn","modifier":"straight"},"sub":{"text":"GWMP","components":[{"text":"GWMP","type":"text"}],"type":"merge","modifier":"slight left"}}],"driving_side":"right","weight":286.8,"intersections":[{"location":[-77.043331,38.853108],"bearings":[343],"entry":[true],"out":0},{"location":[-77.045797,38.859331],"bearings":[5,178,185],"entry":[true,false,false],"in":1,"out":0}]},{"distance":145.3,"duration":9.4,"geometry":"adybiA`}n}qCyQkCkMkDePuFqZaL","name":"","mode":"driving","maneuver":{"location":[-77.045729,38.859857],"bearing_before":5.0,"bearing_after":9.0,"instruction":"Take the ramp","type":"on ramp","modifier":"straight"},"voiceInstructions":[{"distanceAlongGeometry":145.3,"announcement":"Merge left onto George Washington Memorial Parkway","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eMerge left onto George Washington Memorial Parkway\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":145.3,"primary":{"text":"GWMP","components":[{"text":"GWMP","type":"text"}],"type":"merge","modifier":"slight left"}}],"driving_side":"right","weight":15.4,"intersections":[{"location":[-77.045729,38.859857],"bearings":[15,180],"classes":["motorway"],"entry":[true,false],"in":1,"out":0}]},{"distance":1150.9,"duration":54.6,"geometry":"_r{biAp~m}qCei@{_@ea@e]}TcU}r@k|@a|@ubAmAoAq_@k`@qXoUiGgEqJyGyFsCiN_HgCoA{DgBwEiBeEcBkEwAuD_AkEgA{EkAcF}@iEe@eFq@{Fk@qEc@}DO{F_@mFI}DIaFFuENaFT_F\\wE^wEl@cFt@kEz@qE~@wEfAuFjB_EpAoD`BqFbCuDjBgDbBgF|CaDpBiElCoEvC","name":"George Washington Memorial Parkway (GWMP)","ref":"GWMP","mode":"driving","maneuver":{"location":[-77.045241,38.861104],"bearing_before":19.0,"bearing_after":30.0,"instruction":"Merge left onto George Washington Memorial Parkway","type":"merge","modifier":"slight left"},"voiceInstructions":[{"distanceAlongGeometry":1150.9,"announcement":"In a half mile, take the ramp towards I-395 North: Washington","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eIn a half mile, take the ramp towards \u003csay-as interpret-as\u003d\"address\"\u003eI-395\u003c/say-as\u003e North: Washington\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":402.0,"announcement":"Take the ramp towards I-395 North: Washington, then merge left onto I-395 North","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eTake the ramp towards \u003csay-as interpret-as\u003d\"address\"\u003eI-395\u003c/say-as\u003e North: Washington, then merge left onto \u003csay-as interpret-as\u003d\"address\"\u003eI-395\u003c/say-as\u003e North\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":1150.9,"primary":{"text":"I-395 North","components":[{"text":"I-395","type":"icon","imageBaseURL":"https://s3.amazonaws.com/mapbox/shields/v3/i-395"},{"text":"North","type":"text","abbr":"N","abbr_priority":0}],"type":"off ramp","modifier":"right"},"secondary":{"text":"Washington","components":[{"text":"Washington","type":"text"}],"type":"off ramp","modifier":"right"}},{"distanceAlongGeometry":527.0,"primary":{"text":"I-395 North","components":[{"text":"I-395","type":"icon","imageBaseURL":"https://s3.amazonaws.com/mapbox/shields/v3/i-395"},{"text":"North","type":"text","abbr":"N","abbr_priority":0}],"type":"off ramp","modifier":"right"},"secondary":{"text":"Washington","components":[{"text":"Washington","type":"text"}],"type":"off ramp","modifier":"right"},"sub":{"text":"I-395 North / US 1","components":[{"text":"I-395","type":"icon","imageBaseURL":"https://s3.amazonaws.com/mapbox/shields/v3/i-395"},{"text":"North","type":"text","abbr":"N","abbr_priority":0},{"text":"/","type":"delimiter"},{"text":"US 1","type":"icon","imageBaseURL":"https://s3.amazonaws.com/mapbox/shields/v3/us-1"}],"type":"merge","modifier":"slight left"}}],"driving_side":"right","weight":61.1,"intersections":[{"location":[-77.045241,38.861104],"bearings":[30,195,210],"classes":["motorway"],"entry":[true,false,false],"in":1,"out":0}]},{"distance":388.8,"duration":46.6,"geometry":"m~lciAhde}qCqOpJoDrCoIjH{IxI{OvPsPtOcFvDeKfJkb@r[cF|BwDh@}DDgHmCqCsBgSkL","name":"","destinations":"I-395 North: Washington","mode":"driving","maneuver":{"location":[-77.040725,38.870007],"bearing_before":331.0,"bearing_after":330.0,"instruction":"Take the ramp towards I-395 North: Washington","type":"off ramp","modifier":"slight right"},"voiceInstructions":[{"distanceAlongGeometry":320.8,"announcement":"Merge left onto I-395 North","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eMerge left onto \u003csay-as interpret-as\u003d\"address\"\u003eI-395\u003c/say-as\u003e North\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":388.8,"primary":{"text":"I-395 North / US 1","components":[{"text":"I-395","type":"icon","imageBaseURL":"https://s3.amazonaws.com/mapbox/shields/v3/i-395"},{"text":"North","type":"text","abbr":"N","abbr_priority":0},{"text":"/","type":"delimiter"},{"text":"US 1","type":"icon","imageBaseURL":"https://s3.amazonaws.com/mapbox/shields/v3/us-1"}],"type":"merge","modifier":"slight left"}}],"driving_side":"right","weight":52.5,"intersections":[{"location":[-77.040725,38.870007],"bearings":[152,324,332],"classes":["motorway"],"entry":[false,true,true],"in":0,"out":2}]},{"distance":706.0,"duration":36.3,"geometry":"}wrciAvhh}qCuzAcwA{OaO_kC_gCsdAc_A","name":"Arland D. Williams Junior Memorial Bridge (I-395 North; US 1)","ref":"I-395 North; US 1","mode":"driving","maneuver":{"location":[-77.042332,38.872975],"bearing_before":26.0,"bearing_after":36.0,"instruction":"Merge left onto I-395 North","type":"merge","modifier":"slight left"},"voiceInstructions":[{"distanceAlongGeometry":706.0,"announcement":"In a half mile, keep right onto I-395 North","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eIn a half mile, keep right onto \u003csay-as interpret-as\u003d\"address\"\u003eI-395\u003c/say-as\u003e North\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":402.0,"announcement":"Keep right onto I-395 North","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eKeep right onto \u003csay-as interpret-as\u003d\"address\"\u003eI-395\u003c/say-as\u003e North\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":706.0,"primary":{"text":"I-395 North","components":[{"text":"I-395","type":"icon","imageBaseURL":"https://s3.amazonaws.com/mapbox/shields/v3/i-395"},{"text":"North","type":"text","abbr":"N","abbr_priority":0}],"type":"fork","modifier":"right"}},{"distanceAlongGeometry":486.2,"primary":{"text":"I-395 North","components":[{"text":"I-395","type":"icon","imageBaseURL":"https://s3.amazonaws.com/mapbox/shields/v3/i-395"},{"text":"North","type":"text","abbr":"N","abbr_priority":0}],"type":"fork","modifier":"right"},"sub":{"text":"","components":[{"text":"","type":"lane","directions":["straight"],"active":false},{"text":"","type":"lane","directions":["straight","right"],"active":true},{"text":"","type":"lane","directions":["right"],"active":true},{"text":"","type":"lane","directions":["right"],"active":true}]}}],"driving_side":"right","weight":36.4,"intersections":[{"location":[-77.042332,38.872975],"bearings":[30,210,225],"classes":["motorway"],"entry":[true,false,false],"in":1,"out":0}]},{"distance":1780.6,"duration":92.1,"geometry":"cv|ciAlx~|qCkUm^aCkE_C_F}BoFsBiF_BsFeBgGoAcGgAqFcAaHs@mGc@eG]wGYcHSyGEmPBuHBwE?gIFkGAeGAoHKcHUaG[eHg@wGm@qGu@uGy@gGkAkGwAkGsAqFkBgG_BiFgB{FoBoEiBgEqCqF{BeEgDcFsj@}s@}I{K{_@ii@iDqFsCuEwCeFiDoHuFgLqC_HwAyDuBkG_BcGwAgFsBqHkA{EiAaGqAuG_AgFy@iFq@sEQcBu@iFy@mGq@cHoBcXUwF]{GU{GIqGGsPD_b@A}dAE}PQ{XuAu}@eAs|CQqdABi_@","name":"I-395 North","ref":"I-395 North","mode":"driving","maneuver":{"location":[-77.037463,38.878066],"bearing_before":35.0,"bearing_after":46.0,"instruction":"Keep right onto I-395 North","type":"fork","modifier":"slight right"},"voiceInstructions":[{"distanceAlongGeometry":1780.6,"announcement":"In 1 mile, keep right towards I-395 North: US Senate","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eIn 1 mile, keep right towards \u003csay-as interpret-as\u003d\"address\"\u003eI-395\u003c/say-as\u003e North: US Senate\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":804.0,"announcement":"In a half mile, keep right towards I-395 North: US Senate","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eIn a half mile, keep right towards \u003csay-as interpret-as\u003d\"address\"\u003eI-395\u003c/say-as\u003e North: US Senate\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":402.0,"announcement":"Keep right towards I-395 North: US Senate","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eKeep right towards \u003csay-as interpret-as\u003d\"address\"\u003eI-395\u003c/say-as\u003e North: US Senate\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":1780.6,"primary":{"text":"I-395 North","components":[{"text":"I-395","type":"icon","imageBaseURL":"https://s3.amazonaws.com/mapbox/shields/v3/i-395"},{"text":"North","type":"text","abbr":"N","abbr_priority":0}],"type":"fork","modifier":"right"},"secondary":{"text":"US Senate","components":[{"text":"US Senate","type":"text"}],"type":"fork","modifier":"right"}}],"driving_side":"right","weight":92.4,"intersections":[{"location":[-77.037463,38.878066],"bearings":[30,45,210],"classes":["motorway"],"entry":[true,true,false],"in":2,"out":1,"lanes":[{"valid":false,"indications":["straight"]},{"valid":true,"indications":["straight","right"]},{"valid":true,"indications":["right"]},{"valid":true,"indications":["right"]}]},{"location":[-77.035166,38.878965],"bearings":[90,95,264],"classes":["motorway"],"entry":[true,true,false],"in":2,"out":0},{"location":[-77.032939,38.87913],"bearings":[68,250,256],"classes":["motorway"],"entry":[true,false,false],"in":1,"out":0},{"location":[-77.031771,38.879698],"bearings":[43,224,231],"classes":["motorway"],"entry":[true,false,false],"in":2,"out":0},{"location":[-77.030924,38.880396],"bearings":[44,51,223],"classes":["motorway"],"entry":[true,true,false],"in":2,"out":0},{"location":[-77.027847,38.882068],"bearings":[75,255],"classes":["motorway"],"entry":[true,false],"in":1,"out":0},{"location":[-77.02617,38.88226],"bearings":[90,97,266],"classes":["motorway"],"entry":[true,true,false],"in":2,"out":0},{"location":[-77.022787,38.882313],"bearings":[89,267,274],"classes":["motorway"],"entry":[true,false,false],"in":1,"out":0},{"location":[-77.020265,38.882348],"bearings":[89,269,274],"classes":["motorway"],"entry":[true,false,false],"in":1,"out":0},{"location":[-77.019152,38.882357],"bearings":[90,255,270],"classes":["motorway"],"entry":[true,false,false],"in":2,"out":0}]},{"distance":3055.7,"duration":248.1,"geometry":"ebediAt_z{qCrCys@?cEA}GFyEHkDTe\\Fs_CWgQkAsRkBaOmCmMeFsP}EwMsAkCuCmDuC{EyCiEiGmJmJsGyDmCuTuHuIkB_Hm@kHe@iJBcPb@{IAyLT_F~@uEfAcExAqEdB{E|AiEdBmBjAsLzHgM`KcQxQsOhMmJrIsNzDi`@|IuUnE{xEtAozAPyvBhBiA?oEGoFHkc@CmA@gEHiGCeREmEDaF?gE?eF?uE?iF?cE?wE?aF?wE?qE?kF?iE?mF@kE?_E?eF@sECeF?{D@qF@iE?iF@{E@cE@eFEyE@w@EwaCu@sQ|@gN`D_V`JmUvN_D`BgEdCcEbCiDrBiEdCsEjCqDvB{DzBqElCgEdCsDvBcEzB{EpCyD|B}DzBkEfC}D|BkEfCmDpBkDpByDnBqBf@_ADoD?wBc@u@Y","name":"Center Leg Freeway (I-395 North)","ref":"I-395 North","destinations":"I-395 North: US Senate","mode":"driving","maneuver":{"location":[-77.018635,38.882355],"bearing_before":90.0,"bearing_after":95.0,"instruction":"Keep right towards I-395 North: US Senate","type":"fork","modifier":"slight right"},"voiceInstructions":[{"distanceAlongGeometry":3055.7,"announcement":"In 2 miles, merge left onto US 50","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eIn 2 miles, merge left onto New York Avenue Northwest (US \u003csay-as interpret-as\u003d\"address\"\u003e50\u003c/say-as\u003e)\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":804.0,"announcement":"In a half mile, merge left onto US 50","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eIn a half mile, merge left onto New York Avenue Northwest (US \u003csay-as interpret-as\u003d\"address\"\u003e50\u003c/say-as\u003e)\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":402.0,"announcement":"Merge left onto US 50","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eMerge left onto New York Avenue Northwest (US \u003csay-as interpret-as\u003d\"address\"\u003e50\u003c/say-as\u003e)\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":3055.7,"primary":{"text":"New York Avenue Northwest","components":[{"text":"New York Avenue","type":"text","abbr":"New York Ave","abbr_priority":0},{"text":"Northwest","type":"text","abbr":"NW","abbr_priority":1}],"type":"merge","modifier":"slight left"},"secondary":{"text":"US 50 / US 1 Alt","components":[{"text":"US 50","type":"icon","imageBaseURL":"https://s3.amazonaws.com/mapbox/shields/v3/us-50"},{"text":"/","type":"delimiter"},{"text":"US 1","type":"icon","imageBaseURL":"https://s3.amazonaws.com/mapbox/shields/v3/us-1"},{"text":"Alt","type":"text"}],"type":"merge","modifier":"slight left"}}],"driving_side":"right","weight":261.70000000000005,"intersections":[{"location":[-77.018635,38.882355],"bearings":[89,96,270],"classes":["motorway"],"entry":[true,true,false],"in":2,"out":1},{"location":[-77.014829,38.882258],"bearings":[90,270],"classes":["tunnel","motorway"],"entry":[true,false],"in":1,"out":0},{"location":[-77.013217,38.882659],"bearings":[45,240],"classes":["motorway"],"entry":[true,false],"in":1,"out":0},{"location":[-77.012849,38.882928],"bearings":[38,47,227],"classes":["motorway"],"entry":[true,true,false],"in":2,"out":1},{"location":[-77.012236,38.884999],"bearings":[165,180,345],"classes":["motorway"],"entry":[false,false,true],"in":1,"out":2},{"location":[-77.012536,38.885687],"bearings":[150,330],"classes":["tunnel","motorway"],"entry":[false,true],"in":0,"out":1},{"location":[-77.013417,38.886689],"bearings":[135,150,330],"classes":["tunnel","motorway"],"entry":[false,false,true],"in":1,"out":2},{"location":[-77.014003,38.891504],"bearings":[5,179,0],"classes":["tunnel","motorway"],"entry":[true,false,true],"in":1,"out":2},{"location":[-77.014012,38.892968],"bearings":[1,180,359],"classes":["tunnel","motorway"],"entry":[true,false,true],"in":1,"out":2},{"location":[-77.014065,38.894885],"bearings":[0,180],"classes":["motorway"],"entry":[true,false],"in":1,"out":0},{"location":[-77.014066,38.895146],"bearings":[0,180],"classes":["tunnel","motorway"],"entry":[true,false],"in":1,"out":0},{"location":[-77.014064,38.895728],"bearings":[0,180],"classes":["motorway"],"entry":[true,false],"in":1,"out":0},{"location":[-77.014068,38.896],"bearings":[0,180],"classes":["tunnel","motorway"],"entry":[true,false],"in":1,"out":0},{"location":[-77.014582,38.90262],"bearings":[150,330],"classes":["motorway"],"entry":[false,true],"in":0,"out":1}]},{"distance":3522.0,"duration":310.99999999999994,"geometry":"ybqeiAvtt{qCoBuG_BoGkGaW}@sDw@{C_FeS{VgdAoD{NaZokA_l@eaCkLse@yEwOyD_PeFgTgAqEo`@u_BuDiOqHcZ_AeDmEePkH}[oE{PqF}U}BiJk@gCgu@o{CuZspAiSwy@eMah@}Iw^qE}QaYyiA{C}L}DaP{Qeu@mPop@u^yxAae@qkBa@iBuIe`@kDwK{GoXiJ}_@iSgz@aY_kAcy@ogDu[{qAiRqx@o^awAwByJcBwHiAgFaAmGyAuJaAiMUiCc@aRM{Yo@ij@EgCOwX","name":"New York Avenue Northwest (US 50; US 1 Alt)","ref":"US 50; US 1 Alt","mode":"driving","maneuver":{"location":[-77.0159,38.904893],"bearing_before":14.0,"bearing_after":64.0,"instruction":"Merge left onto US 50","type":"merge","modifier":"slight left"},"voiceInstructions":[{"distanceAlongGeometry":3522.0,"announcement":"Continue on US 50 for 2 miles","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eContinue on US \u003csay-as interpret-as\u003d\"address\"\u003e50\u003c/say-as\u003e for 2 miles\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":792.7,"announcement":"In a half mile, make a slight right onto Montana Avenue","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eIn a half mile, make a slight right onto Montana Avenue\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":169.9,"announcement":"Make a slight right onto Montana Avenue, then keep right onto Montana Avenue Northeast","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eMake a slight right onto Montana Avenue, then keep right onto Montana Avenue Northeast\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":3522.0,"primary":{"text":"Montana Avenue","components":[{"text":"Montana Avenue","type":"text","abbr":"Montana Ave","abbr_priority":0}],"type":"turn","modifier":"slight right"}},{"distanceAlongGeometry":169.9,"primary":{"text":"Montana Avenue","components":[{"text":"Montana Avenue","type":"text","abbr":"Montana Ave","abbr_priority":0}],"type":"turn","modifier":"slight right"},"sub":{"text":"Montana Avenue Northeast","components":[{"text":"Montana Avenue","type":"text","abbr":"Montana Ave","abbr_priority":0},{"text":"Northeast","type":"text","abbr":"NE","abbr_priority":1}],"type":"fork","modifier":"right"}}],"driving_side":"right","weight":413.7,"intersections":[{"location":[-77.0159,38.904893],"bearings":[60,195,240],"entry":[true,false,false],"in":1,"out":0},{"location":[-77.014749,38.905302],"bearings":[60,165,240,345],"entry":[true,false,false,false],"in":2,"out":0,"lanes":[{"valid":true,"indications":["straight"]},{"valid":true,"indications":["straight"]},{"valid":true,"indications":["straight"]}]},{"location":[-77.013387,38.905772],"bearings":[60,105,240],"entry":[true,true,false],"in":2,"out":0},{"location":[-77.012163,38.906205],"bearings":[0,60,180,240],"entry":[false,true,true,false],"in":3,"out":1},{"location":[-77.009462,38.907139],"bearings":[60,75,240],"entry":[true,true,false],"in":2,"out":0},{"location":[-77.009194,38.907248],"bearings":[0,60,90,180,240],"entry":[false,true,true,true,false],"in":4,"out":1},{"location":[-77.008922,38.907341],"bearings":[0,60,180,240],"entry":[false,true,false,false],"in":3,"out":1},{"location":[-77.008582,38.907456],"bearings":[60,210,240],"entry":[true,false,false],"in":2,"out":0},{"location":[-77.005877,38.908407],"bearings":[0,60,180,240],"entry":[false,true,true,false],"in":3,"out":1},{"location":[-77.005414,38.908557],"bearings":[60,90,240,270],"entry":[true,true,false,false],"in":2,"out":0},{"location":[-77.004512,38.908867],"bearings":[60,120,240,300],"entry":[true,false,false,false],"in":2,"out":0,"lanes":[{"valid":true,"indications":["straight"]},{"valid":true,"indications":["straight"]},{"valid":true,"indications":["straight"]}]},{"location":[-76.998294,38.91101],"bearings":[60,150,240,330],"entry":[true,true,false,true],"in":2,"out":0},{"location":[-76.991184,38.913485],"bearings":[60,150,255,330],"entry":[true,true,false,false],"in":2,"out":0},{"location":[-76.99098,38.913571],"bearings":[60,150,240,330],"entry":[true,false,false,true],"in":2,"out":0},{"location":[-76.989097,38.914219],"bearings":[60,150,240,330],"entry":[true,true,false,true],"in":2,"out":0},{"location":[-76.987881,38.914636],"bearings":[60,150,240,330],"entry":[true,true,false,true],"in":2,"out":0},{"location":[-76.985185,38.915566],"bearings":[60,150,240,330],"entry":[true,true,false,true],"in":2,"out":0},{"location":[-76.983859,38.916025],"bearings":[60,150,240],"entry":[true,true,false],"in":2,"out":0},{"location":[-76.982938,38.916334],"bearings":[60,165,240,330],"entry":[true,true,false,true],"in":2,"out":0},{"location":[-76.981529,38.916838],"bearings":[75,150,240,330],"entry":[true,true,false,true],"in":2,"out":0}]},{"distance":34.4,"duration":8.2,"geometry":"}aifiAvukyqC~DaBzCmDdBcF","name":"Montana Avenue","mode":"driving","maneuver":{"location":[-76.97854,38.917167],"bearing_before":87.0,"bearing_after":158.0,"instruction":"Make a slight right onto Montana Avenue","type":"turn","modifier":"slight right"},"voiceInstructions":[{"distanceAlongGeometry":34.4,"announcement":"Keep right onto Montana Avenue Northeast","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eKeep right onto Montana Avenue Northeast\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":34.4,"primary":{"text":"Montana Avenue Northeast","components":[{"text":"Montana Avenue","type":"text","abbr":"Montana Ave","abbr_priority":0},{"text":"Northeast","type":"text","abbr":"NE","abbr_priority":1}],"type":"fork","modifier":"right"}}],"driving_side":"right","weight":20.4,"intersections":[{"location":[-76.97854,38.917167],"bearings":[0,90,165,180,270],"entry":[false,true,true,true,false],"in":4,"out":2}]},{"distance":415.4,"duration":39.0,"geometry":"{shfiAbfkyqCbVuVbHaL~SgUfOgPbb@yc@|}@caAdFoFrA_F","name":"Montana Avenue Northeast","mode":"driving","maneuver":{"location":[-76.97829,38.916942],"bearing_before":118.0,"bearing_after":140.0,"instruction":"Keep right onto Montana Avenue Northeast","type":"fork","modifier":"slight right"},"voiceInstructions":[{"distanceAlongGeometry":415.4,"announcement":"In a quarter mile, turn right onto Bladensburg Road Northeast","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eIn a quarter mile, turn right onto Bladensburg Road Northeast\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":159.8,"announcement":"Turn right onto Bladensburg Road Northeast","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eTurn right onto Bladensburg Road Northeast\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":415.4,"primary":{"text":"Bladensburg Road Northeast","components":[{"text":"Bladensburg Road","type":"text","abbr":"Bladensburg Rd","abbr_priority":0},{"text":"Northeast","type":"text","abbr":"NE","abbr_priority":1}],"type":"turn","modifier":"right"}}],"driving_side":"right","weight":56.7,"intersections":[{"location":[-76.97829,38.916942],"bearings":[105,135,225,300],"entry":[true,true,false,false],"in":3,"out":1},{"location":[-76.977702,38.916426],"bearings":[135,315,330],"entry":[true,false,true],"in":1,"out":0},{"location":[-76.97707,38.91583],"bearings":[135,225,315],"entry":[true,true,false],"in":2,"out":0}]},{"distance":185.9,"duration":21.9,"geometry":"obcfiAldeyqClh@j`@dTlOtKxHnE|CtFnC","name":"Bladensburg Road Northeast","mode":"driving","maneuver":{"location":[-76.975191,38.914104],"bearing_before":137.0,"bearing_after":210.0,"instruction":"Turn right onto Bladensburg Road Northeast","type":"turn","modifier":"right"},"voiceInstructions":[{"distanceAlongGeometry":185.9,"announcement":"In 700 feet, turn left onto R Street Northeast","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eIn 700 feet, turn left onto R Street Northeast\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":127.3,"announcement":"Turn left onto R Street Northeast","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eTurn left onto R Street Northeast\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":185.9,"primary":{"text":"R Street Northeast","components":[{"text":"R Street","type":"text","abbr":"R St","abbr_priority":0},{"text":"Northeast","type":"text","abbr":"NE","abbr_priority":1}],"type":"turn","modifier":"left"}}],"driving_side":"right","weight":62.300000000000004,"intersections":[{"location":[-76.975191,38.914104],"bearings":[30,105,210,315],"entry":[false,true,true,false],"in":3,"out":2},{"location":[-76.975725,38.913441],"bearings":[30,120,210],"entry":[false,true,true],"in":0,"out":2}]},{"distance":522.9,"duration":122.3,"geometry":"_i`fiAnigyqCr@mG|A{\\?_OHemA?ujA?cq@@kf@NkFDu@Bw@JmBFu@vFyKtAaB~AoBvDsEnFqLr@wCQqD","name":"R Street Northeast","mode":"driving","maneuver":{"location":[-76.976296,38.912672],"bearing_before":208.0,"bearing_after":102.0,"instruction":"Turn left onto R Street Northeast","type":"turn","modifier":"left"},"voiceInstructions":[{"distanceAlongGeometry":522.9,"announcement":"Continue on R Street Northeast for a quarter mile","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eContinue on R Street Northeast for a quarter mile\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":299.3,"announcement":"In 1000 feet, turn right","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eIn 1000 feet, turn right\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":64.1,"announcement":"Turn right, then turn left onto Azalea Road Northeast","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eTurn right, then turn left onto Azalea Road Northeast\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":522.9,"primary":{"text":"Turn right","components":[{"text":"Turn right","type":"text"}],"type":"roundabout","modifier":"right","degrees":145.0,"driving_side":"right"}},{"distanceAlongGeometry":64.1,"primary":{"text":"Turn right","components":[{"text":"Turn right","type":"text"}],"type":"roundabout","modifier":"right","degrees":145.0,"driving_side":"right"},"sub":{"text":"Azalea Road Northeast","components":[{"text":"Azalea Road","type":"text","abbr":"Azalea Rd","abbr_priority":0},{"text":"Northeast","type":"text","abbr":"NE","abbr_priority":1}],"type":"turn","modifier":"left"}}],"driving_side":"right","weight":126.3,"intersections":[{"location":[-76.976296,38.912672],"bearings":[30,105,195,285],"entry":[false,true,true,true],"in":0,"out":1},{"location":[-76.976161,38.912646],"bearings":[15,90,195,285],"entry":[true,true,false,false],"in":3,"out":1},{"location":[-76.974176,38.912594],"bearings":[0,90,270],"entry":[true,true,false],"in":2,"out":1},{"location":[-76.972163,38.912594],"bearings":[0,90,270],"entry":[true,true,false],"in":2,"out":1}]},{"distance":33.6,"duration":14.6,"geometry":"{f_fiA~}{xqCdAy@d@{@\\aBDaAnHwC","name":"","mode":"driving","maneuver":{"location":[-76.97048,38.912126],"bearing_before":81.0,"bearing_after":147.0,"instruction":"Turn right","type":"roundabout turn","modifier":"right","exit":1},"voiceInstructions":[{"distanceAlongGeometry":33.6,"announcement":"Turn left onto Azalea Road Northeast","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eTurn left onto Azalea Road Northeast\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":33.6,"primary":{"text":"Azalea Road Northeast","components":[{"text":"Azalea Road","type":"text","abbr":"Azalea Rd","abbr_priority":0},{"text":"Northeast","type":"text","abbr":"NE","abbr_priority":1}],"type":"turn","modifier":"left"}}],"driving_side":"right","weight":34.5,"intersections":[{"location":[-76.97048,38.912126],"bearings":[150,255,345],"entry":[true,false,false],"in":1,"out":0},{"location":[-76.970339,38.912054],"bearings":[75,165,270],"entry":[true,true,false],"in":2,"out":1}]},{"distance":167.5,"duration":54.7,"geometry":"{x~eiAlp{xqCIsEKqDgBaa@]kICs@q@cPg@sLm@_Q_@gL","name":"Azalea Road Northeast","mode":"driving","maneuver":{"location":[-76.970263,38.911902],"bearing_before":157.0,"bearing_after":85.0,"instruction":"Turn left onto Azalea Road Northeast","type":"end of road","modifier":"left"},"voiceInstructions":[{"distanceAlongGeometry":167.5,"announcement":"In 600 feet, keep right onto Ellipse Road Northeast","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eIn 600 feet, keep right onto Ellipse Road Northeast\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":45.9,"announcement":"Keep right onto Ellipse Road Northeast","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eKeep right onto Ellipse Road Northeast\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":167.5,"primary":{"text":"Ellipse Road Northeast","components":[{"text":"Ellipse Road","type":"text","abbr":"Ellipse Rd","abbr_priority":0},{"text":"Northeast","type":"text","abbr":"NE","abbr_priority":1}],"type":"fork","modifier":"right"}}],"driving_side":"right","weight":54.8,"intersections":[{"location":[-76.970263,38.911902],"bearings":[90,270,345],"entry":[true,true,false],"in":2,"out":0}]},{"distance":211.2,"duration":65.7,"geometry":"cc_fiAdxwxqCLuCXgEJwANuARuAl@gDfAwEf@iBhAmEf@}@|@wBbAqBhAkBdAyAzAiB~AeBdB{AfBuAjBqAfDqBv@a@lDcBtB{@|Bs@~Bq@`E_AbCe@dDg@xC]jBO","name":"Ellipse Road Northeast","mode":"driving","maneuver":{"location":[-76.968339,38.912066],"bearing_before":82.0,"bearing_after":97.0,"instruction":"Keep right onto Ellipse Road Northeast","type":"fork","modifier":"slight right"},"voiceInstructions":[{"distanceAlongGeometry":211.2,"announcement":"In 700 feet, you will arrive at your destination","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eIn 700 feet, you will arrive at your destination\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"},{"distanceAlongGeometry":32.1,"announcement":"You have arrived at your destination","ssmlAnnouncement":"\u003cspeak\u003e\u003camazon:effect name\u003d\"drc\"\u003e\u003cprosody rate\u003d\"1.08\"\u003eYou have arrived at your destination\u003c/prosody\u003e\u003c/amazon:effect\u003e\u003c/speak\u003e"}],"bannerInstructions":[{"distanceAlongGeometry":211.2,"primary":{"text":"You will arrive","components":[{"text":"You will arrive","type":"text"}],"type":"arrive","modifier":"straight"}},{"distanceAlongGeometry":32.1,"primary":{"text":"You have arrived","components":[{"text":"You have arrived","type":"text"}],"type":"arrive","modifier":"straight"}}],"driving_side":"right","weight":65.8,"intersections":[{"location":[-76.968339,38.912066],"bearings":[75,105,270],"entry":[true,true,false],"in":2,"out":1},{"location":[-76.967686,38.911906],"bearings":[0,120,300],"entry":[true,true,false],"in":2,"out":1}]},{"distance":0.0,"duration":0.0,"geometry":"_p|eiAr~txqC","name":"Ellipse Road Northeast","mode":"driving","maneuver":{"location":[-76.966906,38.910736],"bearing_before":173.0,"bearing_after":0.0,"instruction":"You have arrived at your destination","type":"arrive"},"voiceInstructions":[],"bannerInstructions":[],"driving_side":"right","weight":0.0,"intersections":[{"location":[-76.966906,38.910736],"bearings":[353],"entry":[true],"in":0}]}],"annotation":{"duration":[115.2,69.8,76.4,5.3,0.3,3.9,4.7,3.0,1.9,1.5,0.7,1.3,2.7,2.2,1.7,2.1,3.4,4.3,3.6,2.4,6.1,7.0,0.3,3.6,2.7,0.8,1.1,0.7,1.4,0.4,0.5,0.6,0.5,0.5,0.5,0.5,0.6,0.6,0.5,0.6,0.6,0.5,0.5,0.6,0.6,0.5,0.6,0.5,0.6,0.6,0.6,0.6,0.6,0.5,0.5,0.6,0.7,0.5,0.5,0.7,0.5,0.5,0.7,0.5,0.6,0.6,4.0,1.4,2.7,2.9,4.7,4.7,1.8,3.2,8.9,1.7,1.2,1.3,2.1,1.1,4.9,10.5,1.9,16.1,7.8,3.1,0.6,0.6,0.7,0.6,0.6,0.7,0.6,0.6,0.7,0.6,0.6,0.6,0.7,0.6,1.2,0.7,0.5,0.7,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.5,0.6,0.7,0.6,0.8,5.7,1.4,4.3,0.7,0.6,0.7,0.8,1.2,0.8,0.5,0.7,0.6,0.6,0.8,0.5,0.6,0.7,0.6,0.6,0.5,0.2,0.6,0.6,0.7,1.8,0.6,0.6,0.6,0.6,1.3,2.3,4.7,1.2,1.7,4.2,11.7,5.5,2.5,4.1,0.5,0.7,0.5,0.4,2.1,9.3,1.2,1.4,1.1,1.1,1.4,1.2,0.4,0.6,0.7,0.7,1.2,1.3,0.6,2.2,1.1,0.9,0.9,1.1,1.6,1.0,1.3,0.6,0.6,0.6,0.6,0.6,0.6,0.3,1.4,1.6,2.1,1.8,1.5,1.8,3.7,2.5,23.7,9.3,13.7,0.8,2.3,2.7,8.0,0.3,0.6,0.9,3.8,1.3,1.4,1.3,1.4,1.3,1.5,1.2,1.4,1.4,1.4,1.3,1.5,1.3,1.5,1.3,1.2,1.4,1.3,1.4,1.2,1.5,1.3,1.5,1.4,1.2,1.4,1.4,0.4,26.2,3.7,3.2,4.9,5.1,1.4,1.7,1.7,1.5,1.8,1.8,1.5,1.6,1.8,1.7,1.6,1.7,1.9,1.6,1.6,1.8,1.6,1.8,1.5,1.5,1.6,0.9,0.5,1.4,0.9,0.4,1.5,1.4,4.0,0.9,0.7,3.1,9.4,2.4,12.7,18.7,8.4,2.3,3.9,2.9,0.9,13.9,3.0,6.7,1.3,4.3,14.2,2.7,3.4,1.7,0.6,14.5,6.7,5.6,5.9,4.8,2.2,8.2,1.3,1.7,4.9,4.4,8.5,10.2,0.3,3.1,1.1,2.4,3.0,5.4,7.1,15.8,8.2,5.0,7.7,1.6,1.1,0.8,0.9,1.5,1.7,0.8,3.7,5.2,8.3,0.8,4.9,2.1,2.1,2.0,4.1,1.9,3.2,2.8,6.9,12.4,3.0,1.9,9.0,3.0,1.6,0.8,0.9,8.7,8.8,4.7,13.4,18.9,12.5,14.0,2.6,0.6,0.6,1.2,0.6,9.0,2.6,2.9,5.5,9.2,2.9,3.1,1.7,1.2,1.6,1.0,5.9,3.0,2.5,15.6,4.7,0.7,7.8,6.2,8.2,6.0,2.6,3.5,1.5,1.5,1.6,3.1,4.1,2.0,3.9,1.0,1.7,1.7,1.7,1.5,1.9,1.9,1.9,1.9,1.9,2.9,1.0,2.9,2.0,2.0,2.1,3.1,2.1,2.6,2.4,1.7],"congestion":["heavy","heavy","heavy","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","severe","severe","severe","heavy","low","low","low","moderate","heavy","moderate","heavy","moderate","moderate","heavy","moderate","heavy","moderate","heavy","moderate","heavy","heavy","heavy","heavy","moderate","moderate","moderate","moderate","heavy","moderate","heavy","heavy","heavy","moderate","moderate","heavy","heavy","moderate","moderate","heavy","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","moderate","low","low","low","low","low","low","low","low","moderate","low","moderate","low","moderate","low","low","moderate","moderate","low","low","low","severe","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","moderate","low","low","low","low","low","moderate","moderate","moderate","moderate","moderate","moderate","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","low","unknown","unknown","unknown","low","low","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown"]}}],"routeOptions":{"baseUrl":"https://api.mapbox.com","user":"mapbox","profile":"driving-traffic","coordinates":[[-77.043331,38.853108],[-76.966906,38.910736]],"alternatives":true,"language":"en","bearings":";","continue_straight":true,"roundabout_exits":true,"geometries":"polyline6","overview":"full","steps":true,"annotations":"duration,congestion","voice_instructions":true,"banner_instructions":true,"voice_units":"imperial","access_token":"pk.xx","uuid":"cjo7iw9ua07fx7sodhyftgyba"},"voiceLocale":"en-US"}
We're not providing backwards compatibility 👀
"routeOptions": {
"baseUrl": "https://api.mapbox.com",
"user": "mapbox",
"profile": "driving-traffic",
"coordinates": [
[-77.043331, 38.853108],
[-76.966906, 38.910736]
],
"alternatives": true,
"language": "en",
"bearings": ";",
"continue_straight": true,
"roundabout_exits": true,
"geometries": "polyline6",
"overview": "full",
"steps": true,
"annotations": "duration,congestion",
"voice_instructions": true,
"banner_instructions": true,
"voice_units": "imperial",
"access_token": "pk.xx",
"uuid": "cjo7iw9ua07fx7sodhyftgyba"
}For example, that bearings (";") is not valid anymore because we're expecting a list now.
Now we're expecting something like this 👀
"routeOptions": {
"baseUrl": "https://api.mapbox.com",
"user": "mapbox",
"profile": "driving-traffic",
"coordinates": [
[-77.043331, 38.853108],
[-76.966906, 38.910736]
],
"alternatives": true,
"language": "en",
"bearings": [
null, null
],
"continue_straight": true,
"roundabout_exits": true,
"geometries": "polyline6",
"overview": "full",
"steps": true,
"annotations": ["duration,congestion"],
"voice_instructions": true,
"banner_instructions": true,
"voice_units": "imperial",
"access_token": "pk.xx",
"uuid": "ck76g6vbp01236kqatv6c5x6s"
}For annotations is going to happen the same and for whatever field we converted from String to List. It's not a "problem" because we can bump to a major version but it'd be great avoiding breaking SemVer.
Refs. #1121 (comment)