ট্রানজিশন পলিলাইন এবং রুট টোকেন
সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন
আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।
এই দৃশ্যটি রুট অপ্টিমাইজেশান API ব্যবহার করে রুট পলিলাইন সহ রুট টোকেন তৈরি করে।
আপনার OptimizeToursRequest
বার্তায়, OptimizeToursResponse
এ ShipmentRoute
ট্রানজিশনে routePolyline
( REST , gRPC ) এবং routeToken
( REST , gRPC ) ক্ষেত্র তৈরি করতে populateTransitionPolylines
( REST , gRPC ) সেট করুন ৷
populateTransitionPolylines=true সহ একটি উদাহরণ অনুরোধ দেখুন
{
"populateTransitionPolylines": true,
"model": {
"shipments": [
{
"pickups": [
{
"arrivalLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
}
}
],
"deliveries": [
{
"arrivalLocation": {
"latitude": 37.79581,
"longitude": -122.4218856
}
}
]
}
],
"vehicles": [
{
"startLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
},
"endLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
},
"costPerKilometer": 1.0
}
],
"globalStartTime": "2024-02-13T00:00:00.000Z",
"globalEndTime": "2024-02-14T06:00:00.000Z"
}
}
populateTransitionPolylines=true সহ অনুরোধের একটি উদাহরণের প্রতিক্রিয়া দেখুন
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:39:02Z",
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
{
"startTime": "2024-02-13T00:19:43Z",
"detour": "0s"
}
],
"transitions": [
{
"travelDuration": "0s",
"waitDuration": "0s",
"totalDuration": "0s",
"startTime": "2024-02-13T00:00:00Z",
"routePolyline": {}
},
{
"travelDuration": "1183s",
"travelDistanceMeters": 8591,
"waitDuration": "0s",
"totalDuration": "1183s",
"startTime": "2024-02-13T00:00:00Z",
"routePolyline": {
"points": "}{ieFlkdjV?A@I?E@K?S@K?GB]@W?C?G@O?C@E?E@EB_AB_@?G?Q?KAQCm@?MAOAU?K?A?C?CAK?K?A?A?A?CAC?QAM?KASAE?C?CAEAC?ACGIO]s@ACAACCAECEAEEECIKSOYEIMWCGIMGKCIGMAAEI?ACGAC?C?AAE?C@a@?C?G@O@k@@O?]Bc@@k@@k@@c@Bq@@k@@]Bu@@e@@_@?OD{A@c@?I@]@O?C@i@BcAFq@?_@gAGeACk@G]Ew@SQGOGOKMEMGk@g@UOc@Uy@i@IGKIe@YMIYU_@UGEECEC]YkBoAYS]Q[OMEOEc@Oq@Sy@Ww@SA?OCKCQC[Eo@MSAe@EYGYCi@GgAMG?e@GGAYC[AkAEeAEW@I?EAM?GAG?IAIAGAEAKAOCGCIAWIc@I_@IEASEMCUEICECIAo@Ok@Ka@I]IGAc@G_@EA?SCOASCWCUAI?O?g@AUA_@A[AI?I?I?SAI@K?Q?A?KV_@?S?Q@u@Ba@@I@eADG@m@Bk@Bc@@K@m@BQ@_@BK?_@BY@e@BY@I@Q@YDE?]DYFC@[F]LMDE@GBUJGDEBKFMHOJA@UPWVA?WXY^SVQV[d@GHq@fAGJCBQTILA@EFOPIHIJSRQPUPSNYNC@OHYLSFMDODYHI@C?QBMBYBQ?M?M@SAI?G?CAI?KAWCa@I]IMEOEMEOIQGMGQK]Og@[]QUMg@WMG]MOGMEYIQGOCWGg@Ic@ESCUAaAGSASAU?M?e@Ae@AE?gA?QPA@W@c@Bo@DU@UB[@WBg@BM@SBM?O@K@K@O@OBKBKDKBKDKDA@EBGBGDEDGDWTA@EFEFMLEHQVORMNINQTSZQVA@A@g@r@GJA@CDEFKNQ\\MPKPe@|@[h@KPCHEHEJENEPCPCPAL?\\@NBNDNBLFNFNLRVf@FLDLDJBLBJ@L@R?f@ANAZARC^EjAElAAPCtAAx@?FAf@EfFC`D?p@Ar@Ap@Ax@Ax@?NAd@?BAVA\\MV?BAJGj@Gb@Gj@CPGz@ANAB?FGj@C^?BAFEl@M|AAHC\\IjAENCHCHCDCBCBEDGDC@GBMBA?IFo@OSEMEyAc@cBs@[Oc@SGEAA]U_Ao@]Yk@JYHUFa@JuAXgAVe@HQB_AJs@L_@FA?A?iBT{ARuAPeALWBYDgAL_AJ_@De@Fw@H_ALYB]Di@Hu@Hs@H]HC?_@F_@DYDc@D_@Dy@Ja@D}APYDI@E?QBO@uAPWDYBMBQ@E@C?YD}@L]Da@Fy@Hs@Fk@Hs@Fi@Fa@F_@DYB[Hw@HI@_AJ[DWDMBi@FO@w@JWDK@e@FM@g@Di@FSB]F_@F}@J[Da@D_@DUBeALG@UBe@F]F_@DiANoANu@F_@Di@Fq@JK@QB[D_ALs@JUBaAJy@J]D[@c@DgALg@F[Hw@Hq@HU@[DSsCMqBCWDSRC"
},
"routeToken": "CvMBCpoBMpcBGnwKJwIWCTqXLDcqhgCkvimDkSzlkpMC-vjWAaDKOd3tCNPWjgKY9ZoCABIkp-WKdQga3q4YIIiUZ4H3B1KNfwDrYPeL9O2eVJwjIWAzanUeGgsAIAW-AdIBAg8hCioJIAJwdXUNbR4bPWHfPD9FaRDGPkjIybzk-fDMxbIBIhdUUlBpWnQ2NkJNeTRrZVFQdy02ZjhRVRAFGjsKOQoYCg0KAggBEQAAAAAAgGZAEQrXo3A9YZRAEgAiGQoXVFJQaVpzV1ZCTXk0a2VRUHctNmY4UVUoASIVANvZE2tQPAWkpIsvQ700Jn8qVo_m"
},
{
"travelDuration": "1159s",
"travelDistanceMeters": 8765,
"waitDuration": "0s",
"totalDuration": "1159s",
"startTime": "2024-02-13T00:19:43Z",
"routePolyline": {
"points": "{~teF`oejVHARCjAOr@IFx@NzBHtA?HBXBl@ZI^ENAl@It@IRC`AM~@KZEZE`@Gf@G`@GHAZEj@EZAfBUTCfC]ZE\\Gj@Gl@Gp@IREZE`AMRCf@E`@GVEXCj@G\\Ez@K\\Gf@ELCHA`@G\\C\\GRA|@MfAM`@Ep@Ih@G|@K\\ERCTCr@I~@K\\GXEPAp@I|@K\\EXE~@QbAKDATAzDe@VEd@ELALAVEVCNCHAVCRCLC^EVEPAZGj@Gn@I~ASj@I^E~BW^ENAtASn@GZE^E`AKd@I\\GXE\\Eb@Gr@Kd@IPEXGbB_@l@MXGb@I`AUp@O@AbAUREHC`@EDAdBa@TEr@Oj@OHCNCXIJEFEPKLKJGDAB?@AJ?d@@VBB?B@J@`@FL?B@B?r@BV@FHFDBBDDDBDBDDBDDFBHBF@F@J@F?H@HAH?HAHCFAHCFEFCFEDEDEDGBKDG@I?G?GAKAIEECGEEEEEGICKCICKAMAQ?Q@Q@UBc@Dc@Fw@F}@?C?CISB_@Be@B]?K?I@S@o@@q@@_@?g@@eB@y@@g@?}@@{@@s@?Y?[@m@?GByB@O?c@@]?[@a@Bc@Bq@JyBFq@Fu@Fk@BY@KToBJO?ALu@Da@Fe@@UBa@Bg@Bi@Dg@@O@OBO@M@EBSBMDQFYDQHYN]JWHSVc@LSLQZ]HIZSJGDAHCDAJEB?DADABAD?DABAD?FALAXCp@EH?PC@?HQjCK^C\\CPANAz@CJAB?VAj@CVAB?b@A@?^@R?Z@\\Bf@Ft@LXFNFF@RFPFTHLHHBLFFBHFLFPHXPVLPJDBPHRLb@RD@`@NB@XHXHRBNBH@L@PB@?Z@N?H?J?H?PAD?PAHALAPCVGJADANERIVIBALGXOZQROVSFILKPSNO\\c@NURWLST_@PY@?LSHMLSLOT[BEPQJMHKHI@?JKLIPONITOVMZM@?NEPGPENCXE@?ZEXC`@C\\CH?p@EH?VAfAGl@C\\C\\A@?v@EjAE`AEFAD?TAX?B?X?l@?d@BjAFNXXFFB\\HDBj@Nl@NVFFBXHLBR@@@NB^HJBB@B?JB@@@?B@D@XFLBHDNHJT@BDJJZDRBJDPBH@DBD@BDFBBDFFDFD@?@@B@D?B@D?B?D?@?B?BAB?BABA@?DCFIPQBCBALQBE@AV_@DIPWLMLOHGHGHGJELGFADCFADAHAH?B?F?L@J@H@HB\\Jf@Nl@NLDPDZHLDNDZHt@TL@D?L?JAFANE^IVGVEF?F?D?F?F@B@D@TFjCx@RFPHVJz@f@TNB@VPb@Xb@Vf@ZDDHD\\TXPLHb@ZJHTLPH\\V`@VPJb@\\XNXNVLTFv@T^Dn@H~@FjADGp@CbAAh@?BANA\\?HAb@EzA?NA^Ad@Ct@A\\Aj@Cp@Ab@Aj@Aj@Cb@?\\ANAj@AN?F?BA`@?B@D?@?B@BBF?@DH@@FLBHFJHLBFLVDHNXJRBHDD@DBD@DBB@@@B\\r@HNBF?@@B@D?B?B@D@R?J@L?P@B?B?@?@?@?J@J?B?B?@?J@T@N?LBl@@P?J?P?FC^C~@AD?DAD?BAN?F?BAVC\\?FAJ?RAJ?DAH?@"
},
"routeToken": "CvsBCqIBMp8BGoMBCisCFgtG1Hlkf4MAwCL3qQKkpALomZ4Ci7meAozjjAPP34kDmSPq3BeDoWEAEiQzanUe6iFiW5kIYp6_RksOUl0YSWqIhERXJcl7xeckmqblinUaCgALCSuQBwIAdR4qCTkbWSARAAocAzICAgE9aRDGPkU-QYY-SIWx4e-az6a28QEiF1RSUGladU8zQk15cmtlUVBvZnVyd0FzEAUaOwo5ChgKDQoCCAERAAAAAACAZkARCtejcD0ulEASACIZChdUUlBpWnQtVkJNeXJrZVFQb2Z1cndBcygBIhUA29kTa1qXXaY59KJpCuXOkxw-Vkw"
}
],
"metrics": {
"performedShipmentCount": 1,
"travelDuration": "2342s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2342s",
"travelDistanceMeters": 17356
},
"routeCosts": {
"model.vehicles.cost_per_kilometer": 17.356
},
"routeTotalCost": 17.356
}
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2342s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2342s",
"travelDistanceMeters": 17356
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:39:02Z",
"totalCost": 17.356,
"costs": {
"model.vehicles.cost_per_kilometer": 17.356
}
}
}
OptimizeTourResponse
থেকে একটি রুট টোকেন দিয়ে নেভিগেশন SDK-এ একটি নেভিগেশন সেশন শুরু করুন। নেভিগেশন সেশন রুট অপ্টিমাইজেশান API দ্বারা ফিরে আসা রুট অনুসরণ করার চেষ্টা করে। গতিশীল রাস্তার অবস্থার কারণে, একটি প্রদত্ত টোকেন দিয়ে তৈরি একটি রুট মূল রুট থেকে আলাদা হতে পারে। যদিও রুট টোকেনগুলির মেয়াদ শেষ হয় না, আমরা টোকেন তৈরির পরে যত তাড়াতাড়ি সম্ভব রুট টোকেন ব্যবহার করার পরামর্শ দিই যাতে প্রকৃত রুটটি পরিকল্পিত রুটের কতটা কাছাকাছি তা সর্বাধিক করে তোলা যায়।
Navigator.setDestinations
পদ্ধতি ব্যবহার করে রুট অপ্টিমাইজেশান API দ্বারা জেনারেট করা একটি রুট টোকেন নেভিগেশন SDK-তে পাস করার সময়, আপনাকে অবশ্যই একটি একক গন্তব্য নির্দিষ্ট করতে হবে যা ShipmentRoute
ট্রানজিশনের শেষ অবস্থানের সাথে মেলে।
রুট টোকেন সম্পর্কে আরও তথ্যের জন্য, Android এর জন্য নেভিগেশন SDK এবং iOS এর জন্য নেভিগেশন SDK-এর জন্য একটি রুট ডকুমেন্টেশন পরিকল্পনা করুন।
রুট পলিলাইন এনকোডিং সম্পর্কে বিস্তারিত জানার জন্য, পলিলাইন দেখুন।
অন্য কিছু উল্লেখ না করা থাকলে, এই পৃষ্ঠার কন্টেন্ট Creative Commons Attribution 4.0 License-এর অধীনে এবং কোডের নমুনাগুলি Apache 2.0 License-এর অধীনে লাইসেন্স প্রাপ্ত। আরও জানতে, Google Developers সাইট নীতি দেখুন। Java হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2025-08-29 UTC-তে শেষবার আপডেট করা হয়েছে।
[null,null,["2025-08-29 UTC-তে শেষবার আপডেট করা হয়েছে।"],[[["\u003cp\u003eBy setting \u003ccode\u003epopulateTransitionPolylines\u003c/code\u003e to true in your \u003ccode\u003eOptimizeToursRequest\u003c/code\u003e, you can generate route polylines and route tokens for transitions within a \u003ccode\u003eShipmentRoute\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eRoute tokens, generated by the Route Optimization API, can be used to start navigation sessions in the Navigation SDK, allowing you to follow a pre-planned route.\u003c/p\u003e\n"],["\u003cp\u003eWhile route tokens don't have an expiration date, it's recommended to use them as soon as possible to minimize deviations between the planned and actual routes due to real-time road conditions.\u003c/p\u003e\n"],["\u003cp\u003eWhen utilizing a route token with Navigation SDK's \u003ccode\u003eNavigator.setDestinations\u003c/code\u003e, you need to specify a single destination that corresponds to the end location of the \u003ccode\u003eShipmentRoute\u003c/code\u003e transition.\u003c/p\u003e\n"]]],[],null,["# Transition polylines and route tokens\n\nThis scenario generates route tokens with route polylines using the\nRoute Optimization API.\n\nIn your `OptimizeToursRequest` message, set `populateTransitionPolylines`\n([REST](/maps/documentation/route-optimization/reference/rest/v1/projects/optimizeTours#body.request_body.FIELDS.populate_transition_polylines), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.OptimizeToursRequest.FIELDS.bool.google.maps.routeoptimization.v1.OptimizeToursRequest.populate_transition_polylines)) to generate `routePolyline` ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentRoute#Transition.FIELDS.route_polyline), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.ShipmentRoute.Transition.FIELDS.google.maps.routeoptimization.v1.ShipmentRoute.EncodedPolyline.google.maps.routeoptimization.v1.ShipmentRoute.Transition.route_polyline)) and\n`routeToken` ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentRoute#Transition.FIELDS.route_token), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.ShipmentRoute.Transition.FIELDS.string.google.maps.routeoptimization.v1.ShipmentRoute.Transition.route_token)) fields in the transitions for a\n`ShipmentRoute` in the `OptimizeToursResponse`. \n\n#### See an example request with populateTransitionPolylines=true\n\n```json\n{\n \"populateTransitionPolylines\": true,\n \"model\": {\n \"shipments\": [\n {\n \"pickups\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n }\n }\n ],\n \"deliveries\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.79581,\n \"longitude\": -122.4218856\n }\n }\n ]\n }\n ],\n \"vehicles\": [\n {\n \"startLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n },\n \"endLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n },\n \"costPerKilometer\": 1.0\n }\n ],\n \"globalStartTime\": \"2024-02-13T00:00:00.000Z\",\n \"globalEndTime\": \"2024-02-14T06:00:00.000Z\"\n }\n}\n \n``` \n\n#### See an example response to the request with populateTransitionPolylines=true\n\n```json\n{\n \"routes\": [\n {\n \"vehicleStartTime\": \"2024-02-13T00:00:00Z\",\n \"vehicleEndTime\": \"2024-02-13T00:39:02Z\",\n \"visits\": [\n {\n \"isPickup\": true,\n \"startTime\": \"2024-02-13T00:00:00Z\",\n \"detour\": \"0s\"\n },\n {\n \"startTime\": \"2024-02-13T00:19:43Z\",\n \"detour\": \"0s\"\n }\n ],\n \"transitions\": [\n {\n \"travelDuration\": \"0s\",\n \"waitDuration\": \"0s\",\n \"totalDuration\": \"0s\",\n \"startTime\": \"2024-02-13T00:00:00Z\",\n \"routePolyline\": {}\n },\n {\n \"travelDuration\": \"1183s\",\n \"travelDistanceMeters\": 8591,\n \"waitDuration\": \"0s\",\n \"totalDuration\": \"1183s\",\n \"startTime\": \"2024-02-13T00:00:00Z\",\n \"routePolyline\": {\n \"points\": \"}{ieFlkdjV?A@I?E@K?S@K?GB]@W?C?G@O?C@E?E@EB_AB_@?G?Q?KAQCm@?MAOAU?K?A?C?CAK?K?A?A?A?CAC?QAM?KASAE?C?CAEAC?ACGIO]s@ACAACCAECEAEEECIKSOYEIMWCGIMGKCIGMAAEI?ACGAC?C?AAE?C@a@?C?G@O@k@@O?]Bc@@k@@k@@c@Bq@@k@@]Bu@@e@@_@?OD{A@c@?I@]@O?C@i@BcAFq@?_@gAGeACk@G]Ew@SQGOGOKMEMGk@g@UOc@Uy@i@IGKIe@YMIYU_@UGEECEC]YkBoAYS]Q[OMEOEc@Oq@Sy@Ww@SA?OCKCQC[Eo@MSAe@EYGYCi@GgAMG?e@GGAYC[AkAEeAEW@I?EAM?GAG?IAIAGAEAKAOCGCIAWIc@I_@IEASEMCUEICECIAo@Ok@Ka@I]IGAc@G_@EA?SCOASCWCUAI?O?g@AUA_@A[AI?I?I?SAI@K?Q?A?KV_@?S?Q@u@Ba@@I@eADG@m@Bk@Bc@@K@m@BQ@_@BK?_@BY@e@BY@I@Q@YDE?]DYFC@[F]LMDE@GBUJGDEBKFMHOJA@UPWVA?WXY^SVQV[d@GHq@fAGJCBQTILA@EFOPIHIJSRQPUPSNYNC@OHYLSFMDODYHI@C?QBMBYBQ?M?M@SAI?G?CAI?KAWCa@I]IMEOEMEOIQGMGQK]Og@[]QUMg@WMG]MOGMEYIQGOCWGg@Ic@ESCUAaAGSASAU?M?e@Ae@AE?gA?QPA@W@c@Bo@DU@UB[@WBg@BM@SBM?O@K@K@O@OBKBKDKBKDKDA@EBGBGDEDGDWTA@EFEFMLEHQVORMNINQTSZQVA@A@g@r@GJA@CDEFKNQ\\\\MPKPe@|@[h@KPCHEHEJENEPCPCPAL?\\\\@NBNDNBLFNFNLRVf@FLDLDJBLBJ@L@R?f@ANAZARC^EjAElAAPCtAAx@?FAf@EfFC`D?p@Ar@Ap@Ax@Ax@?NAd@?BAVA\\\\MV?BAJGj@Gb@Gj@CPGz@ANAB?FGj@C^?BAFEl@M|AAHC\\\\IjAENCHCHCDCBCBEDGDC@GBMBA?IFo@OSEMEyAc@cBs@[Oc@SGEAA]U_Ao@]Yk@JYHUFa@JuAXgAVe@HQB_AJs@L_@FA?A?iBT{ARuAPeALWBYDgAL_AJ_@De@Fw@H_ALYB]Di@Hu@Hs@H]HC?_@F_@DYDc@D_@Dy@Ja@D}APYDI@E?QBO@uAPWDYBMBQ@E@C?YD}@L]Da@Fy@Hs@Fk@Hs@Fi@Fa@F_@DYB[Hw@HI@_AJ[DWDMBi@FO@w@JWDK@e@FM@g@Di@FSB]F_@F}@J[Da@D_@DUBeALG@UBe@F]F_@DiANoANu@F_@Di@Fq@JK@QB[D_ALs@JUBaAJy@J]D[@c@DgALg@F[Hw@Hq@HU@[DSsCMqBCWDSRC\"\n },\n \"routeToken\": \"CvMBCpoBMpcBGnwKJwIWCTqXLDcqhgCkvimDkSzlkpMC-vjWAaDKOd3tCNPWjgKY9ZoCABIkp-WKdQga3q4YIIiUZ4H3B1KNfwDrYPeL9O2eVJwjIWAzanUeGgsAIAW-AdIBAg8hCioJIAJwdXUNbR4bPWHfPD9FaRDGPkjIybzk-fDMxbIBIhdUUlBpWnQ2NkJNeTRrZVFQdy02ZjhRVRAFGjsKOQoYCg0KAggBEQAAAAAAgGZAEQrXo3A9YZRAEgAiGQoXVFJQaVpzV1ZCTXk0a2VRUHctNmY4UVUoASIVANvZE2tQPAWkpIsvQ700Jn8qVo_m\"\n },\n {\n \"travelDuration\": \"1159s\",\n \"travelDistanceMeters\": 8765,\n \"waitDuration\": \"0s\",\n \"totalDuration\": \"1159s\",\n \"startTime\": \"2024-02-13T00:19:43Z\",\n \"routePolyline\": {\n \"points\": \"{~teF`oejVHARCjAOr@IFx@NzBHtA?HBXBl@ZI^ENAl@It@IRC`AM~@KZEZE`@Gf@G`@GHAZEj@EZAfBUTCfC]ZE\\\\Gj@Gl@Gp@IREZE`AMRCf@E`@GVEXCj@G\\\\Ez@K\\\\Gf@ELCHA`@G\\\\C\\\\GRA|@MfAM`@Ep@Ih@G|@K\\\\ERCTCr@I~@K\\\\GXEPAp@I|@K\\\\EXE~@QbAKDATAzDe@VEd@ELALAVEVCNCHAVCRCLC^EVEPAZGj@Gn@I~ASj@I^E~BW^ENAtASn@GZE^E`AKd@I\\\\GXE\\\\Eb@Gr@Kd@IPEXGbB_@l@MXGb@I`AUp@O@AbAUREHC`@EDAdBa@TEr@Oj@OHCNCXIJEFEPKLKJGDAB?@AJ?d@@VBB?B@J@`@FL?B@B?r@BV@FHFDBBDDDBDBDDBDDFBHBF@F@J@F?H@HAH?HAHCFAHCFEFCFEDEDEDGBKDG@I?G?GAKAIEECGEEEEEGICKCICKAMAQ?Q@Q@UBc@Dc@Fw@F}@?C?CISB_@Be@B]?K?I@S@o@@q@@_@?g@@eB@y@@g@?}@@{@@s@?Y?[@m@?GByB@O?c@@]?[@a@Bc@Bq@JyBFq@Fu@Fk@BY@KToBJO?ALu@Da@Fe@@UBa@Bg@Bi@Dg@@O@OBO@M@EBSBMDQFYDQHYN]JWHSVc@LSLQZ]HIZSJGDAHCDAJEB?DADABAD?DABAD?FALAXCp@EH?PC@?HQjCK^C\\\\CPANAz@CJAB?VAj@CVAB?b@A@?^@R?Z@\\\\Bf@Ft@LXFNFF@RFPFTHLHHBLFFBHFLFPHXPVLPJDBPHRLb@RD@`@NB@XHXHRBNBH@L@PB@?Z@N?H?J?H?PAD?PAHALAPCVGJADANERIVIBALGXOZQROVSFILKPSNO\\\\c@NURWLST_@PY@?LSHMLSLOT[BEPQJMHKHI@?JKLIPONITOVMZM@?NEPGPENCXE@?ZEXC`@C\\\\CH?p@EH?VAfAGl@C\\\\C\\\\A@?v@EjAE`AEFAD?TAX?B?X?l@?d@BjAFNXXFFB\\\\HDBj@Nl@NVFFBXHLBR@@@NB^HJBB@B?JB@@@?B@D@XFLBHDNHJT@BDJJZDRBJDPBH@DBD@BDFBBDFFDFD@?@@B@D?B@D?B?D?@?B?BAB?BABA@?DCFIPQBCBALQBE@AV_@DIPWLMLOHGHGHGJELGFADCFADAHAH?B?F?L@J@H@HB\\\\Jf@Nl@NLDPDZHLDNDZHt@TL@D?L?JAFANE^IVGVEF?F?D?F?F@B@D@TFjCx@RFPHVJz@f@TNB@VPb@Xb@Vf@ZDDHD\\\\TXPLHb@ZJHTLPH\\\\V`@VPJb@\\\\XNXNVLTFv@T^Dn@H~@FjADGp@CbAAh@?BANA\\\\?HAb@EzA?NA^Ad@Ct@A\\\\Aj@Cp@Ab@Aj@Aj@Cb@?\\\\ANAj@AN?F?BA`@?B@D?@?B@BBF?@DH@@FLBHFJHLBFLVDHNXJRBHDD@DBD@DBB@@@B\\\\r@HNBF?@@B@D?B?B@D@R?J@L?P@B?B?@?@?@?J@J?B?B?@?J@T@N?LBl@@P?J?P?FC^C~@AD?DAD?BAN?F?BAVC\\\\?FAJ?RAJ?DAH?@\"\n },\n \"routeToken\": \"CvsBCqIBMp8BGoMBCisCFgtG1Hlkf4MAwCL3qQKkpALomZ4Ci7meAozjjAPP34kDmSPq3BeDoWEAEiQzanUe6iFiW5kIYp6_RksOUl0YSWqIhERXJcl7xeckmqblinUaCgALCSuQBwIAdR4qCTkbWSARAAocAzICAgE9aRDGPkU-QYY-SIWx4e-az6a28QEiF1RSUGladU8zQk15cmtlUVBvZnVyd0FzEAUaOwo5ChgKDQoCCAERAAAAAACAZkARCtejcD0ulEASACIZChdUUlBpWnQtVkJNeXJrZVFQb2Z1cndBcygBIhUA29kTa1qXXaY59KJpCuXOkxw-Vkw\"\n }\n ],\n \"metrics\": {\n \"performedShipmentCount\": 1,\n \"travelDuration\": \"2342s\",\n \"waitDuration\": \"0s\",\n \"delayDuration\": \"0s\",\n \"breakDuration\": \"0s\",\n \"visitDuration\": \"0s\",\n \"totalDuration\": \"2342s\",\n \"travelDistanceMeters\": 17356\n },\n \"routeCosts\": {\n \"model.vehicles.cost_per_kilometer\": 17.356\n },\n \"routeTotalCost\": 17.356\n }\n ],\n \"metrics\": {\n \"aggregatedRouteMetrics\": {\n \"performedShipmentCount\": 1,\n \"travelDuration\": \"2342s\",\n \"waitDuration\": \"0s\",\n \"delayDuration\": \"0s\",\n \"breakDuration\": \"0s\",\n \"visitDuration\": \"0s\",\n \"totalDuration\": \"2342s\",\n \"travelDistanceMeters\": 17356\n },\n \"usedVehicleCount\": 1,\n \"earliestVehicleStartTime\": \"2024-02-13T00:00:00Z\",\n \"latestVehicleEndTime\": \"2024-02-13T00:39:02Z\",\n \"totalCost\": 17.356,\n \"costs\": {\n \"model.vehicles.cost_per_kilometer\": 17.356\n }\n }\n}\n \n```\n\nStart a navigation session in Navigation SDK with a route token\nfrom the `OptimizeTourResponse`. The navigation session attempts to follow the\nroute returned by the Route Optimization API. Due to dynamic road\nconditions, a route generated with a given token may differ from the original\nroute. Although route tokens don't expire, we recommend using the route token as\nsoon as feasible after token generation to maximize how close the actual route\nis to the planned route.\n\nWhen passing a route token generated by Route Optimization API to\nthe Navigation SDK using `Navigator.setDestinations` method, you\nmust specify a single destination that matches the end location of the\n`ShipmentRoute` transition.\n\nFor more information on route tokens, see the Plan a route documentation for [Navigation SDK for Android](/maps/documentation/navigation/android-sdk/customize-route) and [Navigation SDK for iOS](/maps/documentation/navigation/ios-sdk/route-customizations).\n\nFor details about route polyline encoding, see [Polylines](/maps/documentation/route-optimization/pickup-delivery-order-optimization#polylines)."]]