ในบางครั้ง คุณอาจต้องการวางแผนเส้นทางที่แอปให้บริการแก่ผู้ขับ การใช้โทเค็นเส้นทางจาก Routes API (หรือ Routes Preferred API) จะช่วยให้คุณระบุ 2 สิ่งสำหรับเส้นทางที่วางแผนไว้ได้ดังนี้
เส้นประกอบของเส้นทาง
วัตถุประสงค์ของเส้นทาง
เช่น ตัวอย่างวัตถุประสงค์ของการกำหนดเส้นทางที่คุณอาจมีมีดังต่อไปนี้
ลดเวลาในการจัดส่ง: ธุรกิจที่ส่งอาหารอาจต้องการลดเวลาในการจัดส่งอาหาร
ลดเวลาในการเดินทางหรือปริมาณการใช้เชื้อเพลิง: ธุรกิจโลจิสติกส์อาจต้องการปรับปรุงประสิทธิภาพของคนขับและลดค่าใช้จ่ายด้านน้ำมันเชื้อเพลิง
ลดเวลาไปถึงปลายทาง: การดำเนินการมอบหมายบริการอาจต้องลดเวลาที่ต้องใช้ในการส่งผู้ปฏิบัติงานไปยังคำของาน
ลดค่าใช้จ่ายและเพิ่มความปลอดภัย: ธุรกิจบริการร่วมเดินทางอาจต้องการหาเส้นทางที่ราคาถูกสำหรับผู้โดยสารและเลี่ยงบางพื้นที่เพื่อความปลอดภัย
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการวางแผนเส้นทางโดยใช้โทเค็นเส้นทางที่หัวข้อขอโทเค็นเส้นทาง
เหตุผลที่ควรใช้โทเค็นเส้นทางเพื่อวัตถุประสงค์ของเส้นทาง
เมื่อใช้โทเค็นเส้นทางจาก Routes หรือ Routes Preferred API คุณจะควบคุมเส้นทางที่ระบุได้มากขึ้นดังนี้
วางแผนเส้นทางล่วงหน้าให้ Navigation SDK ใช้งานเมื่อเป็นไปได้
เลือกเส้นทางที่ดีที่สุดให้ Navigation SDK ใช้งาน หากขอโทเค็นเส้นทางเมื่อสร้างเส้นทางใน Routes API คุณจะได้รับโทเค็นเส้นทางสําหรับเส้นทางที่สร้างขึ้นแต่ละเส้นทาง จากนั้นคุณสามารถเลือกโทเค็น สำหรับเส้นทางที่ต้องการใช้เมื่อส่งผ่านโทเค็นไปยัง Navigation SDK
ประเมินราคาล่วงหน้า รวมถึงการประมาณเวลาถึงโดยประมาณและระยะทาง แม้ว่าค่าใช้จ่ายและเวลาจริงอาจแตกต่างกันไป แต่ค่าประมาณนี้จะช่วยลดช่องว่างระหว่างค่าใช้จ่ายที่คาดไว้กับค่าใช้จ่ายจริงของเส้นทางได้
ระบุวัตถุประสงค์ของเส้นทางขั้นสูงเพิ่มเติม เช่น เส้นทางที่เป็นมิตรต่อสิ่งแวดล้อมหรือเส้นทางที่สั้นที่สุด
วิธีการทำงานของโทเค็นเส้นทาง Routes API
คุณสามารถใช้ Routes API หรือ Routes Preferred API เพื่อวางแผนเส้นทางโดยใช้วัตถุประสงค์ของเส้นทางได้ Routes API จะส่งคืนโทเค็นสำหรับเส้นทางที่คุณสามารถส่งไปยัง Navigation SDK เพื่อแนะนำวิธีกำหนดเส้นทางให้กับรถของคุณ
สิ่งที่จะเกิดขึ้นเมื่อคุณขอและใช้โทเค็นเส้นทางจาก Routes API
Routes API จะแสดงผลโทเค็นเส้นทางที่เข้ารหัสซึ่งมีเส้นประกอบเส้นทางและวัตถุประสงค์ของเส้นทาง
คุณต้องส่งโทเค็นเส้นทางไปยัง Navigation SDK
Navigation SDK จะดึงข้อมูลเส้นทาง หรือหากเส้นทางไม่พร้อมใช้งานเนื่องจากมีการเปลี่ยนแปลงเงื่อนไข ก็จะดึงเส้นทางที่ตรงกันที่สุด
ขณะขับรถ หากสภาพการจราจรหรือสภาพถนนอื่นๆ มีการเปลี่ยนแปลง หรือเมื่อรถเบี่ยงออกจากเส้นทางที่วางแผนไว้ เส้นทางที่แก้ไขจะพยายามจับคู่เส้นทางที่ดีที่สุดต่อไปโดยอิงตามวัตถุประสงค์ของเส้นทางในโทเค็น
กระบวนการนี้จะเพิ่มระยะระหว่างเส้นทางจริงกับเส้นทางที่วางแผนไว้ให้มากที่สุด
ทำไมเส้นทางที่วางแผนไว้อาจไม่ตาม
ให้คิดว่าวัตถุประสงค์ของเส้นทางที่วางแผนไว้และวัตถุประสงค์ของเส้นทางที่ต้องปฏิบัติตามก็คือหลักเกณฑ์เหล่านี้ไม่ได้กำหนดไว้เป็นกฎเกณฑ์ตายตัว คุณอาจเห็นความแตกต่างระหว่างเส้นทางที่วางแผนไว้และเส้นทางจากการนำทางแบบมีคำแนะนำ เนื่องจากสภาพของถนน ตำแหน่งเริ่มต้น หรือพารามิเตอร์อื่นๆ ที่เปลี่ยนแปลงไปตั้งแต่สร้างเส้นทางที่วางแผนไว้นั้นแตกต่างกัน ความแตกต่างนี้อาจส่งผลให้เป้าหมายที่วางแผนไว้และเป้าหมายจริงสำหรับระยะทางและเวลาถึงโดยประมาณไม่ตรงกัน รวมถึงคุณภาพการเดินทางที่สำคัญอื่นๆ
วางแผนเส้นทางโดยใช้โทเค็นเส้นทาง
คุณสามารถวางแผนเส้นทางได้โดยสร้างโทเค็นเส้นทาง แล้วส่งไปยัง Navigation SDK ตามที่อธิบายไว้ในขั้นตอนต่อไปนี้
ขั้นตอนที่ 1: สร้างโทเค็นเส้นทางโดยใช้ Routes หรือ Routes Preferred API
ขอโทเค็นเส้นทางโดยใช้วิธีใดวิธีหนึ่งต่อไปนี้
Routes API:
computeRoutes
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการขอโทเค็นเส้นทางใน Routes API ที่คำนวณเส้นทางและขอโทเค็นเส้นทางRoutes ที่ต้องการ API:
computeCustomRoutes
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการขอโทเค็นเส้นทางใน Routes Preferred API ที่วางแผนเส้นทาง
ตั้งค่าคำขอเส้นทางเพื่อให้เป็นไปตามข้อกำหนดในการใช้โทเค็นเส้นทาง ดังนี้
- ตั้งค่า
travel_mode
เป็นDRIVING
- โปรดตั้งค่า
routing_preference
เป็นTRAFFIC_AWARE
หรือTRAFFIC_AWARE_OPTIMAL
- อย่าใช้จุดอ้างอิงผ่าน Via
- ตั้งค่า
ขั้นตอนที่ 2: ส่งโทเค็นเส้นทางไปยัง Navigation SDK
จัดเก็บโทเค็นเส้นทาง: ใน Navigation SDK ให้ตั้งค่าสตริงเพื่อเก็บโทเค็นเส้นทาง เช่น
let routeToken = "route token returned by Routes API"
ตัวอย่างโทเค็นเส้นทางที่ส่งคืน
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }
ส่งโทเค็นเส้นทางไปยัง Navigation SDK โดยใช้เมธอด
mapView.navigator setDestinations
โดยระบุจุดอ้างอิงปลายทางเดียวกับที่คุณใช้เมื่อสร้างโทเค็นเส้นทาง ดังนี้mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})
เมธอด Navigator.setDestinations
จะแสดงสถานะของคำขอ
หากพบเส้นทางจากตำแหน่งของผู้ใช้ไปยังปลายทางที่ระบุ ระบบจะแสดงผล RouteStatus.OK
อีกครั้ง
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการนี้ได้ที่ Navigator.setDestinations
ตัวอย่าง
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเรียกข้อมูลเส้นทางที่วางแผนไว้
Swift
let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint1 = GMSNavigationWaypoint(location: location, title: "waypoint from location")!
let waypoint2 = GMSNavigationWaypoint(placeID: "samplePlaceID", title: "waypoint from Place ID")!
let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})
Objective-C
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate title:@"waypoint from location"];
GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@"samplePlaceID"
title:@"waypoint from Place ID"];
NSString *routeToken = @"route token returned by Routes API";
[mapView.navigator setDestinations:@[waypoint1, waypoint2]
routeToken:routeToken
callback:^(GMSRouteStatus routeStatus){...}];
วิธีการทำงานร่วมกันของโทเค็นเส้นทางและ Navigation SDK
ต่อไปนี้เป็นการโต้ตอบของเส้นทางที่สร้างขึ้นโดย Navigation SDK และเส้นทางที่วางแผนไว้ในโทเค็นเส้นทาง
ลบล้างปลายทางที่ตั้งค่าไว้ก่อนหน้านี้
ใช้ตำแหน่งเริ่มต้นของพาหนะ
ปรับตามท้องถนนและสภาพการจราจร ดูสาเหตุที่เส้นทางอาจไม่เป็นไปตามเส้นทางที่วางแผนไว้
ไม่สนใจตัวเลือกเกี่ยวกับการกำหนดเส้นทางต่อไปนี้ว่าไม่จำเป็น
avoidsHighways
avoidsTolls
avoidsFerries
licensePlateRestriction
ติดตาม
ตัวเลือกที่เกี่ยวข้องกับจุดอ้างอิง เช่น ค่ากำหนดการเลี้ยวระหว่างทาง
วัตถุประสงค์ของเส้นทาง หาก Navigation SDK ต้องปรับเส้นทางที่แสดงผล ระบบจะใช้วัตถุประสงค์ของเส้นทางที่คุณระบุไว้เมื่อขอโทเค็นเส้นทาง ด้วยเหตุนี้ คุณจึงควรใช้ตัวเลือกที่เกี่ยวข้องกับจุดอ้างอิงเดียวกับที่ระบุไว้ใน Routes API