บางครั้งคุณอาจต้องวางแผนเส้นทางที่แอปแสดงต่อผู้ใช้ การใช้โทเค็นเส้นทางจาก Routes API (หรือ Routes Preferred API) จะช่วยระบุ 2 สิ่งต่อไปนี้สำหรับเส้นทางที่วางแผนไว้
เส้นประกอบสำหรับเส้นทาง
วัตถุประสงค์ของเส้นทางของคุณ
ตัวอย่างเช่น ต่อไปนี้เป็นตัวอย่างของวัตถุประสงค์ในการกำหนดเส้นทางที่คุณอาจมี
ลดเวลาในการจัดส่ง: ธุรกิจที่จัดส่งอาหารอาจต้องการลดเวลาที่ใช้ในการจัดส่งอาหาร
ลดเวลาเดินทางหรือปริมาณการใช้เชื้อเพลิง: ธุรกิจโลจิสติกส์อาจต้องการปรับปรุงประสิทธิภาพของผู้ขับขี่และลดค่าใช้จ่ายด้านเชื้อเพลิง
ลดเวลาในการเดินทางไปยังปลายทาง: การดำเนินการจ่ายงานบริการอาจต้องการลดเวลาที่ใช้ในการนำโอเปอเรเตอร์ไปยังคำของาน
ประหยัดค่าใช้จ่ายและเพิ่มความปลอดภัย: ธุรกิจบริการร่วมเดินทางอาจต้องการค้นหาเส้นทางที่ประหยัดค่าใช้จ่ายสำหรับผู้โดยสาร และหลีกเลี่ยงบางพื้นที่ด้วยเหตุผลด้านความปลอดภัย
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการวางแผนเส้นทางโดยใช้โทเค็นเส้นทางที่หัวข้อขอโทเค็นเส้นทาง
เหตุผลที่ควรใช้โทเค็นเส้นทางสำหรับวัตถุประสงค์ของเส้นทาง
เมื่อใช้โทเค็นเส้นทางจาก Routes หรือ Routes Preferred API คุณจะควบคุมเส้นทางที่ระบุได้มากขึ้น ดังนี้
วางแผนเส้นทางล่วงหน้าเพื่อให้ Navigation SDK ใช้เมื่อเป็นไปได้
เลือกเส้นทางที่ดีที่สุดที่ Navigation SDK จะใช้ หากขอโทเค็นเส้นทางเมื่อสร้างเส้นทางใน Routes API คุณจะได้รับโทเค็นเส้นทางสําหรับเส้นทางที่สร้างขึ้นแต่ละเส้นทาง จากนั้นคุณจะเลือกโทเค็น สำหรับเส้นทางที่ต้องการใช้เมื่อส่งผ่านไปยัง รหัสการนำทาง SDK ได้
ประมาณราคาล่วงหน้า รวมถึงการประมาณเวลาถึงโดยประมาณและระยะทาง แม้ว่าค่าใช้จ่ายและเวลาจริงอาจแตกต่างกันไป แต่การประมาณนี้จะลดช่องว่างระหว่างค่าใช้จ่ายที่คาดไว้กับค่าใช้จ่ายจริงสำหรับเส้นทาง
ระบุวัตถุประสงค์ของเส้นทางขั้นสูง เช่น การกำหนดเส้นทางแบบประหยัดหรือเส้นทางที่สั้นที่สุด
วิธีการทำงานของโทเค็นเส้นทาง API ของ Routes
คุณใช้ Routes API หรือ Routes Preferred API เพื่อวางแผนเส้นทางโดยใช้วัตถุประสงค์ของเส้นทางได้ Routes API จะส่งคืนโทเค็นเส้นทางที่คุณสามารถส่งไปยัง Navigation SDK เพื่อเป็นแนวทางในการกำหนดเส้นทางรถของคุณ
สิ่งที่จะเกิดขึ้นเมื่อคุณขอและใช้โทเค็นเส้นทางจาก Routes API
Routes API จะแสดงผลโทเค็นเส้นทางที่เข้ารหัส ซึ่งประกอบด้วยเส้นประกอบเส้นทางและวัตถุประสงค์ของเส้นทาง
คุณส่งโทเค็นเส้นทางไปยัง Navigation SDK
Navigation SDK จะดึงข้อมูลเส้นทาง หรือหากเส้นทางไม่พร้อมใช้งานเนื่องจากการเปลี่ยนแปลงเงื่อนไข SDK จะดึงข้อมูลเส้นทางที่ตรงกันมากที่สุด
ขณะขับรถ หากการจราจรหรือสภาพถนนอื่นๆ เปลี่ยนแปลง หรือหากยานพาหนะเบี่ยงเบนออกจากเส้นทางที่วางแผนไว้ เส้นทางที่แก้ไขจะพยายามจับคู่เส้นทางที่ดีที่สุดอย่างต่อเนื่องโดยอิงตามวัตถุประสงค์ของเส้นทางในโทเค็น
กระบวนการนี้ช่วยเพิ่มระยะใกล้ของเส้นทางจริงกับเส้นทางที่คุณวางแผนไว้ให้ได้มากที่สุด
สาเหตุที่อาจไม่ได้ไปตามเส้นทางที่วางแผนไว้ทุกประการ
ให้คิดว่าเส้นทางและวัตถุประสงค์ของเส้นทางที่วางแผนไว้เป็นหลักเกณฑ์ที่คุณต้องปฏิบัติตาม ทั้ง 2 อย่างนี้ไม่ได้เป็นแบบกำหนดตายตัว คุณอาจเห็นความแตกต่างระหว่างเส้นทางที่วางแผนไว้กับการนำทางที่มีคำแนะนำ ทั้งนี้เนื่องจากสภาพถนน ตำแหน่งเริ่มต้น หรือพารามิเตอร์อื่นๆ ที่มีการเปลี่ยนแปลงตั้งแต่สร้างเส้นทางที่วางแผนไว้แตกต่างกัน ความแตกต่างนี้อาจทำให้ระหว่างเป้าหมายที่วางแผนกับเป้าหมายจริงสำหรับระยะทางและเวลาถึงโดยประมาณ รวมถึงคุณภาพการเดินทางที่สำคัญอื่นๆ ไม่ตรงกัน
วางแผนเส้นทางโดยใช้โทเค็นเส้นทาง
คุณวางแผนเส้นทางได้ด้วยการสร้างโทเค็นเส้นทางแล้วส่งต่อไปยัง Navigation SDK ตามที่อธิบายไว้ในขั้นตอนต่อไปนี้
ขั้นตอนที่ 1: สร้างโทเค็นเส้นทางโดยใช้ Routes หรือ Routes Preferred API
ขอโทเค็นเส้นทางโดยใช้วิธีใดวิธีหนึ่งต่อไปนี้
Routes API:
computeRoutes
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการขอโทเค็นเส้นทางใน Routes API ที่หัวข้อประมวลผลเส้นทางและขอโทเค็นเส้นทางRoutes Preferred API:
computeCustomRoutes
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการขอโทเค็นเส้นทางใน Routes Preferred API ที่หัวข้อวางแผนเส้นทาง
ตั้งค่าคำขอเส้นทางเพื่อให้เป็นไปตามข้อกำหนดในการใช้โทเค็นเส้นทาง ดังนี้
- ตั้งค่า
travel_mode
เป็นDRIVING
- โปรดตั้งค่า
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) .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(CustomRoutesOptions.TravelMode.TWO_WHEELER)
.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