การคำนวณเส้นทาง (รวมถึงการเปลี่ยนเส้นทาง) จะแสดงเส้นทางที่ใช้เวลาน้อยที่สุดในการนำทางเป็น เส้นทางที่ดีที่สุดเริ่มต้น แต่คุณสามารถเปลี่ยนกลยุทธ์การกำหนดเส้นทางเพื่อให้ระบบแสดงเส้นทางที่สั้นกว่าในเส้นทางทางเลือกแทนได้
คำว่า สั้นกว่า หมายถึงเส้นทางที่สั้นที่สุดในบรรดาเส้นทางที่เหมาะสมตามโมเดลต้นทุนเริ่มต้นของเรา เส้นทางที่สั้นกว่าอาจไม่ใช่เส้นทางที่สั้นที่สุด อย่างแท้จริง เนื่องจากตัวเลือกนั้นอาจเป็นทางเลือกที่ไม่ดี ตัวอย่างเช่น หากเส้นทางที่สั้นที่สุดอย่างแท้จริงมีระยะทาง 10 กม. และใช้เวลาเดินทาง 50 นาที และอีกเส้นทางหนึ่งมีระยะทาง 15 กม. แต่ใช้เวลาเดินทางเพียง 20 นาที ตัวเลือกที่ 2 จะเหมาะสมกว่า เนื่องจากใช้เวลาเพิ่ม 30 นาทีเพื่อลดระยะทาง 5 กม. ไม่ใช่ข้อแลกเปลี่ยนที่ดี
เมื่อคุณตั้งค่ากลยุทธ์การกำหนดเส้นทางสำหรับการเดินทางแล้ว กลยุทธ์ดังกล่าวจะไม่เปลี่ยนแปลงจนกว่าการเดินทางจะเสร็จสมบูรณ์ หากต้องการเปลี่ยนกลยุทธ์การกำหนดเส้นทางสำหรับการเดินทางที่มีอยู่ คุณต้องล้างจุดหมายและรีเซ็ตอีกครั้งด้วยกลยุทธ์การกำหนดเส้นทางใหม่
ดูรายละเอียดเส้นทาง
หากต้องการกำหนดกลยุทธ์เส้นทางที่เป็นตัวเลือกที่เหมาะสมที่สุดสำหรับจุดอ้างอิงที่กำหนด ให้เรียก getRouteInfoForDestination() เพื่อดูรายละเอียดเส้นทางสำหรับทั้งเส้นทางที่ดีที่สุดเริ่มต้นและเส้นทางที่สั้นกว่าอย่างแท้จริง รายละเอียดจะรวมถึงระยะเวลาและระยะทางไปยังจุดอ้างอิงปลายทาง
รายละเอียดเหล่านี้มาจาก
GMSNavigationRouteInfo
ในการเรียกกลับ
ตัวอย่าง
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีดูรายละเอียดเส้นทางสำหรับกลยุทธ์การกำหนดเส้นทางแต่ละรายการ
Swift
let routingOptions = GMSNavigationRoutingOptions()
navigator?.getRouteInfoForDestination(destination,
routingOptions: routingOptions) { routeInfo in
...
}
Objective-C
GMSNavigationRoutingOptions *routingOptions =
[[GMSNavigationRoutingOptions alloc] init];
[navigator getRouteInfoForDestination:destination
withRoutingOptions:routingOptions
callback:^(GMSNavigationRouteInfo *routeInfo){...}];
การตั้งค่ากลยุทธ์การกำหนดเส้นทาง
คุณสามารถกำหนดค่ากลยุทธ์การกำหนดเส้นทางได้โดยใช้ GMSNavigationRoutingOptions และตั้งค่า routingStrategy เมื่อเรียก setDestinations()
routingStrategy จะใช้ค่าการแจงนับค่าใดค่าหนึ่งต่อไปนี้
| ค่าการแจงนับ | คำอธิบาย |
|---|---|
| GMSNavigationRoutingStrategyDefaultBest | จัดอันดับเส้นทางตามโมเดลต้นทุนเริ่มต้นของ Navigation SDK นี่คือกลยุทธ์การกำหนดเส้นทางเริ่มต้น |
| GMSNavigationRoutingStrategyShorter | จัดอันดับเส้นทางตามระยะทาง เส้นทางที่ได้อันดับสูงสุดคือเส้นทางที่สั้นที่สุดในบรรดาเส้นทางที่แสดง |
ตัวอย่าง
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีตั้งค่ากลยุทธ์การกำหนดเส้นทางสำหรับเส้นทางที่สั้นกว่า
Swift
let routingOptions = GMSNavigationRoutingOptions(routingStrategy: .shorter)
navigator?.setDestinations(destinations,
routingOptions: routingOptions) { routeStatus in
...
}
Objective-C
GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithRoutingStrategy:GMSNavigationRoutingStrategyShorter];
[navigator setDestinations:destinations
routingOptions:routingOptions
callback:^(GMSRouteStatus routeStatus){...}];
เส้นทางที่มีเรือข้ามฟาก
โดยค่าเริ่มต้น Navigation SDK สำหรับ iOS จะไม่รวมเส้นทางที่มีเรือข้ามฟาก หากต้องการรวมตัวเลือกเรือข้ามฟากไว้ในเส้นทาง คุณสามารถปรับค่ากำหนดการกำหนดเส้นทางนี้เพื่อแสดงการเดินทางเป็นส่วนของเรือข้ามฟากโดยตั้งค่า avoidsFerries เป็น false
ตัวอย่าง
Swift
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
รูปแบบข้อความไฮไลต์เส้นทาง
ภายใต้กลยุทธ์การกำหนดเส้นทางสำหรับเส้นทางที่สั้นกว่า ข้อความไฮไลต์ตามเส้นทางจะแสดงรายละเอียดระยะทาง แต่คุณสามารถใช้ข้อความไฮไลต์เวลาถึงโดยประมาณแทนได้
การกำหนดค่ารูปแบบข้อความไฮไลต์เส้นทาง
คุณสามารถเปลี่ยนรูปแบบข้อความไฮไลต์เส้นทางได้โดยตั้งค่า routeCalloutFormat ใน GMSMapView routeCalloutFormat จะใช้ค่าการแจงนับค่าใดค่าหนึ่งต่อไปนี้
| ค่าการแจงนับ | คำอธิบาย |
|---|---|
| GMSNavigationRouteCalloutFormatDefault | แสดงเวลาที่เหลือเมื่อใช้กลยุทธ์การกำหนดเส้นทางสำหรับเส้นทางที่ดีที่สุดเริ่มต้น แสดงระยะทางที่เหลือเมื่อใช้กลยุทธ์การกำหนดเส้นทางสำหรับเส้นทางที่สั้นกว่า |
| GMSNavigationRouteCalloutFormatTime | แสดงเวลาที่เหลือ |
| GMSNavigationRouteCalloutFormatDistance | แสดงระยะทางที่เหลือ |
ตัวอย่าง
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีกำหนดค่ารูปแบบข้อความไฮไลต์เส้นทาง
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;