บางครั้งคุณอาจต้องการวางแผนเส้นทางที่แอปของคุณแสดงต่อผู้ใช้ การใช้โทเค็นเส้นทางจาก Routes API, Routes Preferred API หรือ Route Optimization API จะช่วยให้คุณระบุ 2 สิ่งสำหรับเส้นทางที่วางแผนไว้ได้ ดังนี้
- เส้นประกอบสำหรับเส้นทาง 
- วัตถุประสงค์ของเส้นทาง 
ตัวอย่างวัตถุประสงค์ในการกำหนดเส้นทางที่คุณอาจมี ได้แก่
- ลดเวลาในการนำส่ง: ธุรกิจที่นำส่งอาหารอาจต้องการ ลดเวลาที่ใช้ในการนำส่งอาหาร 
- ลดเวลาเดินทางหรือการสิ้นเปลืองเชื้อเพลิง: ธุรกิจโลจิสติกส์อาจต้องการปรับปรุงประสิทธิภาพของคนขับและลดต้นทุนเชื้อเพลิง 
- ลดเวลาในการเดินทางไปยังจุดหมาย: การปฏิบัติงานในการส่งบริการอาจต้องการ ลดเวลาที่ใช้ในการนำผู้ปฏิบัติงานไปยังคำของาน 
- ลดต้นทุนและเพิ่มความปลอดภัย: ธุรกิจแชร์รถอาจต้องการ ค้นหาเส้นทางที่ผู้โดยสารเสียค่าใช้จ่ายน้อยลงและหลีกเลี่ยงบางพื้นที่เพื่อความปลอดภัย 
ดูข้อมูลเพิ่มเติมเกี่ยวกับการวางแผนเส้นทางโดยใช้โทเค็นเส้นทางได้ที่ขอโทเค็นเส้นทางใน Routes API และเปลี่ยนจาก Polyline เป็นโทเค็นเส้นทางใน Route Optimization API
เหตุผลที่ควรใช้โทเค็นเส้นทางสำหรับวัตถุประสงค์ของเส้นทาง
เมื่อใช้โทเค็นเส้นทางจาก Routes API, Routes Preferred API หรือ Route Optimization API คุณจะควบคุมเส้นทางที่ระบุได้มากขึ้น ดังนี้
- วางแผนเส้นทางล่วงหน้าเพื่อให้ Navigation SDK ใช้เมื่อเป็นไปได้ 
- เลือกเส้นทางที่ดีที่สุดสำหรับ Navigation SDK เพื่อใช้ หากคุณ ขอโทเค็นเส้นทางเมื่อสร้างเส้นทางใน Routes API คุณจะได้รับโทเค็นเส้นทางสำหรับแต่ละเส้นทางที่สร้างขึ้น จากนั้นคุณจะเลือกโทเค็นสำหรับเส้นทางที่ต้องการใช้เมื่อส่งไปยัง Navigation SDK ได้ 
- ประเมินราคาล่วงหน้า รวมถึงการประเมินเวลาถึงโดยประมาณและ ระยะทาง แม้ว่าค่าใช้จ่ายและเวลาจริงอาจแตกต่างกันไป แต่การประมาณนี้จะช่วยลด ช่องว่างระหว่างค่าใช้จ่ายของเส้นทางที่คาดไว้กับค่าใช้จ่ายจริง 
- ระบุวัตถุประสงค์ของเส้นทางขั้นสูงเพิ่มเติม เช่น การกำหนดเส้นทางที่เป็นมิตรต่อสิ่งแวดล้อมหรือ เส้นทางที่สั้นที่สุด 
วิธีการทำงานของโทเค็นเส้นทาง
คุณใช้ Routes API, Routes Preferred API หรือ Route Optimization API เพื่อวางแผนเส้นทางโดยใช้วัตถุประสงค์ของเส้นทางได้ คุณ ส่งโทเค็นเส้นทางที่ได้จาก API เหล่านี้ไปยัง Navigation SDK เพื่อกำหนดวิธีที่ SDK กำหนดเส้นทางสำหรับยานพาหนะได้
สิ่งที่จะเกิดขึ้นเมื่อคุณขอและใช้โทเค็นเส้นทางมีดังนี้
- Routes API, Routes Preferred API หรือ Route Optimization API จะแสดงโทเค็นเส้นทางที่เข้ารหัสซึ่ง มีโพลีไลน์ของเส้นทางและวัตถุประสงค์ของเส้นทาง 
- คุณส่งโทเค็นเส้นทางไปยัง Navigation SDK 
- Navigation SDK จะดึงเส้นทาง หรือหากเส้นทางไม่พร้อมใช้งานเนื่องจากสภาพแวดล้อมเปลี่ยนแปลงไป SDK จะดึงเส้นทางที่ตรงกันมากที่สุด 
- ขณะขับรถตามเส้นทาง หากการจราจรหรือสภาพถนนอื่นๆ เปลี่ยนแปลง หรือหาก ยานพาหนะเบี่ยงเบนไปจากเส้นทางที่วางแผนไว้ เส้นทางที่แก้ไขจะพยายาม จับคู่กับเส้นทางที่ดีที่สุดอย่างต่อเนื่องโดยอิงตามวัตถุประสงค์ของเส้นทางในโทเค็น 
กระบวนการนี้จะช่วยให้เส้นทางจริงใกล้เคียงกับเส้นทางที่วางแผนไว้มากที่สุด
เหตุผลที่อาจไม่ได้ใช้เส้นทางที่วางแผนไว้
โปรดคิดว่าเส้นทางที่วางแผนไว้และวัตถุประสงค์ของเส้นทางเป็นหลักเกณฑ์ที่ต้องปฏิบัติตาม โดยหลักเกณฑ์เหล่านี้ ไม่ได้เป็นการกำหนด คุณอาจเห็นความแตกต่างระหว่างเส้นทางที่วางแผนไว้กับเส้นทางที่การนำทางแบบมีคำแนะนำระบุ เนื่องจากสภาพถนน สถานที่เริ่มต้น หรือพารามิเตอร์อื่นๆ ที่เปลี่ยนแปลงไปนับตั้งแต่ที่คุณสร้างเส้นทางที่วางแผนไว้ ความแตกต่างนี้อาจส่งผลให้เป้าหมายที่วางแผนไว้และเป้าหมายจริงสำหรับระยะทางและเวลาถึงโดยประมาณไม่ตรงกัน รวมถึงคุณภาพการเดินทางที่สำคัญอื่นๆ
สถานการณ์ที่มีหลายจุดแวะพัก
สถานการณ์ที่มีหลายจุดแวะพัก
วิธี setDestinations ไม่รองรับการเดินทางแบบหลายป้าย ใช้ continueToNextDestination() เพื่อเลื่อนจุดอ้างอิงไปยังช่วงถัดไปของการเดินทาง
วางแผนเส้นทางโดยใช้โทเค็นเส้นทาง
คุณวางแผนเส้นทางได้โดยสร้างโทเค็นเส้นทางแล้วส่งไปยัง Navigation SDK ตามที่อธิบายไว้ในขั้นตอนต่อไปนี้
ขั้นตอนที่ 1: สร้างโทเค็นเส้นทางโดยใช้ Routes API, Routes Preferred API หรือ Route Optimization API
- ขอโทเค็นเส้นทางด้วยวิธีใดวิธีหนึ่งต่อไปนี้ - Routes API: - computeRoutesดูข้อมูลเพิ่มเติม เกี่ยวกับการขอโทเค็นเส้นทางใน Routes API ได้ที่ คำนวณเส้นทาง และขอโทเค็น เส้นทาง
- Routes Preferred API: - computeCustomRoutesดูข้อมูลเพิ่มเติมเกี่ยวกับการขอโทเค็นเส้นทางใน Routes Preferred API ได้ที่วางแผน เส้นทาง
- Route Optimization API: - optimizeToursหรือ- batchOptimizeToursดูข้อมูลเพิ่มเติมเกี่ยวกับการขอโทเค็นเส้นทางใน Route Optimization API ได้ที่เปลี่ยนจาก Polyline เป็นโทเค็นเส้นทาง
 
- ตั้งค่าคำขอ Routes API หรือ Routes Preferred API ให้เป็นไปตามข้อกำหนดในการใช้โทเค็นเส้นทาง - ตั้งค่า travel_modeเป็นDRIVINGหรือTWO_WHEELER
- ตั้งค่า routing_preferenceเป็นTRAFFIC_AWAREหรือTRAFFIC_AWARE_OPTIMAL
- อย่าใช้Viaจุดอ้างอิง
 
- ตั้งค่า 
ขั้นตอนที่ 2: ส่งโทเค็นเส้นทางไปยัง Navigation SDK
- จัดเก็บโทเค็นเส้นทาง: ใน Navigation SDK ให้ตั้งค่าสตริง เพื่อจัดเก็บโทเค็นเส้นทาง เช่น - String routeToken = "route token returned by Routes API"; - ตัวอย่างโทเค็นเส้นทางที่ส่งคืน - { // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }
- ส่งโทเค็นเส้นทางไปยัง Navigation SDK โดยใช้เมธอด - Navigator.setDestinationsระบุจุดแวะพักปลายทางเดียวกันกับที่คุณใช้เมื่อสร้างโทเค็นเส้นทาง- setDestinations(List - destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions); - เช่น - CustomRoutesOptions customRoutesOptions = CustomRoutesOptions.builder() .setRouteToken(routeToken) .setTravelMode(TravelMode.DRIVING) .build(); 
Navigator.setDestinations เมธอดจะแสดงผลสถานะของคำขอ หากพบเส้นทางจากตำแหน่งของยานพาหนะไปยังจุดหมายที่ระบุ
ฟังก์ชันจะแสดงผลRouteStatus.OK
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีนี้ได้ที่
Navigator.setDestinations
ตัวอย่าง
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีระบุเส้นทางที่วางแผนไว้โดยใช้โทเค็นเส้นทาง
    ArrayList <Waypoint> destinations = Lists.newArrayList();
    Waypoint waypoint1 =
       Waypoint.builder()
          .setLatLng(10, 20)
          .setTitle("title")
          .setVehicleStopover(true)
          .build();
    destinations.add(waypoint1);
    Waypoint waypoint2 =
       Waypoint.builder()
          .setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
          .setTitle("title")
          .setVehicleStopover(true)
           .build()
    destinations.add(waypoint2);
    String routeToken = "route token returned by Routes API";
    CustomRoutesOptions customRoutesOptions =
       CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .setTravelMode(TravelMode.DRIVING)
          .build();
    // Existing flow to get a Navigator.
    NavigationApi.getNavigator(...);
    // Existing flow for requesting routes.
    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions);
    // Or with display options.
    DisplayOptions displayOptions = new DisplayOptions();
    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions, displayOptions);
วิธีที่โทเค็นเส้นทางและ Navigation SDK ทำงานร่วมกัน
เส้นทางที่สร้างโดย Navigation SDK และเส้นทางที่วางแผนไว้ในโทเค็นเส้นทางจะทำงานร่วมกันดังนี้
- ลบล้างปลายทางที่ตั้งไว้ก่อนหน้านี้ 
- ใช้ตำแหน่งเริ่มต้นของรถ 
- ปรับตามสภาพถนนและการจราจร ดูเหตุผลที่อาจไม่ได้ใช้เส้นทางที่วางแผนไว้ทุกประการ 
- ไม่สนใจตัวเลือกที่เกี่ยวข้องกับการกำหนดเส้นทางต่อไปนี้เนื่องจากไม่จำเป็น - avoidsHighways
- avoidsTolls
- avoidsFerries
- licensePlateRestriction
 
- การติดตาม - ตัวเลือกที่เกี่ยวข้องกับจุดอ้างอิง เช่น ค่ากำหนดด้านข้างของถนน 
- วัตถุประสงค์ของเส้นทาง หาก Navigation SDK ต้องปรับเส้นทางที่ส่งคืน ระบบจะใช้วัตถุประสงค์ของเส้นทางที่คุณระบุเมื่อขอโทเค็นเส้นทาง ด้วยเหตุนี้ คุณจึงควรใช้ตัวเลือกที่เกี่ยวข้องกับจุดอ้างอิงเดียวกันกับที่ระบุไว้ใน Routes API