บางครั้งคุณอาจต้องการวางแผนเส้นทางที่แอปจะแสดงให้ผู้ใช้เห็น การใช้โทเค็นเส้นทางจาก Routes API, Routes Preferred API หรือ Route Optimization API จะช่วยให้คุณระบุ 2 สิ่งต่อไปนี้สำหรับเส้นทางที่วางแผนไว้ได้
เส้นประกอบสำหรับเส้นทาง
วัตถุประสงค์ของเส้นทาง
ตัวอย่างวัตถุประสงค์ในการกำหนดเส้นทางที่คุณอาจมี ได้แก่
ลดเวลาในการนำส่ง: ธุรกิจที่นำส่งอาหารอาจต้องการลดเวลาที่ใช้ในการนำส่งอาหาร
ลดระยะเวลาเดินทางหรือการใช้เชื้อเพลิง: ธุรกิจโลจิสติกส์อาจต้องการปรับปรุงประสิทธิภาพของคนขับและลดต้นทุนเชื้อเพลิง
ลดเวลาในการเดินทางไปยังจุดหมาย: การดำเนินการจัดส่งบริการอาจต้องการลดเวลาที่ใช้ในการส่งผู้ปฏิบัติงานไปยังคำของาน
ลดต้นทุนและเพิ่มความปลอดภัย: ธุรกิจบริการร่วมเดินทางอาจต้องการค้นหาเส้นทางที่มีค่าใช้จ่ายน้อยลงสำหรับผู้ขับขี่และหลีกเลี่ยงบางพื้นที่เพื่อความปลอดภัย
ดูข้อมูลเพิ่มเติมเกี่ยวกับการวางแผนเส้นทางโดยใช้โทเค็นเส้นทางได้ที่หัวข้อรับโทเค็นเส้นทางใน Routes API และเปลี่ยนเส้นประกอบและโทเค็นเส้นทางใน 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 เพื่อเป็นแนวทางในการกำหนดเส้นทางของยานพาหนะ
สิ่งที่จะเกิดขึ้นเมื่อคุณขอและใช้โทเค็นเส้นทางมีดังนี้
Routes API, Routes Preferred API หรือ Route Optimization API จะแสดงผลโทเค็นเส้นทางที่เข้ารหัสซึ่งมีเส้นประกอบของเส้นทางและวัตถุประสงค์ของเส้นทาง
คุณส่งโทเค็นเส้นทางไปยัง Navigation SDK
Navigation SDK จะเริ่มการนำทางในเส้นทางที่วางแผนไว้ แม้ว่าจะมีเส้นทางที่เร็วกว่าก็ตาม
ในระหว่างการเดินทาง หากสภาพการจราจรหรือสภาพถนนเปลี่ยนแปลง หรือหากยานพาหนะออกนอกเส้นทางที่วางแผนไว้ Navigation SDK จะคำนวณเส้นทางใหม่ตามวัตถุประสงค์ของเส้นทางและตัวเลือกการกำหนดเส้นทางที่ตั้งค่าไว้ในโทเค็นเส้นทาง
กระบวนการนี้จะช่วยให้เส้นทางจริงใกล้เคียงกับเส้นทางที่วางแผนไว้มากที่สุด
สาเหตุที่ระบบอาจไม่ปฏิบัติตามเส้นทางที่วางแผนไว้อย่างเคร่งครัด
การนำทางจะเริ่มต้นในเส้นทางที่วางแผนไว้ แต่เส้นทางจริงอาจแตกต่างจากเส้นทางดังกล่าวในสถานการณ์ต่อไปนี้
- ยานพาหนะเริ่มออกตัวจากจุดเริ่มต้นที่วางแผนไว้
- สภาพการจราจรหรือสภาพถนนเปลี่ยนแปลงระหว่างการเดินทาง
- ยานพาหนะออกจากเส้นทางที่วางแผนไว้
ความแตกต่างเหล่านี้อาจส่งผลต่อระยะทาง, ETA และคุณภาพการเดินทางที่สำคัญอื่นๆ ที่คุณวางแผนไว้
วางแผนเส้นทางโดยใช้โทเค็นเส้นทาง
คุณวางแผนเส้นทางได้โดยสร้างโทเค็นเส้นทางแล้วส่งไปยัง 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 ได้ที่เส้นประกอบการเปลี่ยนผ่านและโทเค็นเส้นทาง
ตั้งค่าคำขอ Routes API หรือ Routes Preferred API ให้เป็นไปตามข้อกำหนดสำหรับการใช้โทเค็นเส้นทาง ดังนี้
- ตั้งค่า
travelModeเป็นDRIVEหรือTWO_WHEELER - ตั้งค่า
routingPreferenceเป็น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 จะจัดการเส้นทางที่วางแผนไว้ดังนี้
ลบล้างปลายทางที่ตั้งค่าไว้ก่อนหน้านี้
ใช้ตำแหน่งเริ่มต้นของยานพาหนะ
ปรับเปลี่ยนตามสภาพถนนและสภาพการจราจร ดูสาเหตุที่อาจไม่สามารถปฏิบัติตามเส้นทางที่วางแผนไว้ทุกประการ
ใช้ตัวเลือกการกำหนดเส้นทางที่ตั้งค่าไว้ในโทเค็นเส้นทางแทนการตั้งค่าต่อไปนี้ในแอป รวมถึงเมื่อคำนวณเส้นทางใหม่ระหว่างการเดินทาง
RoutingOptions.avoidHighways()RoutingOptions.avoidTolls()RoutingOptions.avoidFerries()Navigator.setLicensePlateRestrictionInfo()- โหมดการเดินทางที่ตั้งค่าไว้ในแอป
ทำตามการตั้งค่าต่อไปนี้เมื่อคำนวณหรือปรับเส้นทาง
วัตถุประสงค์ของเส้นทางจากโทเค็นเส้นทาง เช่น เส้นทางที่เป็นมิตรต่อสิ่งแวดล้อมหรือเส้นทางที่สั้นที่สุด หาก Navigation SDK ต้องปรับเส้นทาง ระบบจะใช้วัตถุประสงค์ของเส้นทางที่คุณระบุไว้เมื่อขอโทเค็นเส้นทาง
ตัวเลือกที่เกี่ยวข้องกับจุดอ้างอิงจากแอปของคุณ เช่น ค่ากำหนดด้านข้างถนน ใช้ตัวเลือกที่เกี่ยวข้องกับจุดอ้างอิงเดียวกันกับที่ระบุไว้เมื่อขอโทเค็นเส้นทาง