ปรับค่ากําหนดการกําหนดเส้นทาง

การคำนวณเส้นทาง (รวมถึงการเปลี่ยนเส้นทาง) จะแสดงเส้นทางที่ใช้เวลาน้อยที่สุดในการนำทางเป็น เส้นทางที่ดีที่สุดเริ่มต้น แต่คุณสามารถเปลี่ยนกลยุทธ์การกำหนดเส้นทางเพื่อให้ระบบแสดงเส้นทางที่สั้นกว่าในเส้นทางทางเลือกแทนได้

คำว่า สั้นกว่า หมายถึงเส้นทางที่สั้นที่สุดในบรรดาเส้นทางที่เหมาะสมตามโมเดลต้นทุนเริ่มต้นของเรา เส้นทางที่สั้นกว่าอาจไม่ใช่เส้นทางที่สั้นที่สุด อย่างแท้จริง เนื่องจากตัวเลือกนั้นอาจเป็นทางเลือกที่ไม่ดี ตัวอย่างเช่น หากเส้นทางที่สั้นที่สุดอย่างแท้จริงมีระยะทาง 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;