วางแผนเส้นทาง

บางครั้งคุณอาจต้องการวางแผนเส้นทางที่แอปจะแสดงให้ผู้ใช้ การใช้โทเค็นเส้นทางจาก 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 เพื่อแนะนำวิธีกำหนดเส้นทางสำหรับยานพาหนะ

สิ่งที่จะเกิดขึ้นเมื่อคุณขอและใช้โทเค็นเส้นทาง

  1. Routes API, Routes Preferred API หรือ Route Optimization API จะส่งคืนโทเค็นเส้นทางที่เข้ารหัสซึ่งมีเส้นประกอบของเส้นทางและวัตถุประสงค์ของเส้นทาง

  2. คุณส่งโทเค็นเส้นทางไปยัง Navigation SDK

  3. Navigation SDK จะดึงข้อมูลเส้นทาง หรือหากเส้นทางไม่พร้อมใช้งานเนื่องจากมีการเปลี่ยนแปลงเงื่อนไข ก็จะดึงข้อมูลเส้นทางที่ตรงกันมากที่สุด

  4. ขณะขับรถตามเส้นทาง หากการจราจรหรือสภาพถนนอื่นๆ เปลี่ยนไป หรือหากยานพาหนะเบี่ยงเบนจากเส้นทางที่วางแผนไว้ เส้นทางที่แก้ไขจะพยายามจับคู่กับเส้นทางที่ดีที่สุดอย่างต่อเนื่องโดยอิงตามวัตถุประสงค์ของเส้นทางในโทเค็น

กระบวนการนี้จะช่วยให้เส้นทางจริงใกล้เคียงกับเส้นทางที่วางแผนไว้มากที่สุด

เหตุผลที่อาจไม่ได้ขับตามเส้นทางที่วางแผนไว้ทุกประการ

ให้คิดว่าเส้นทางที่วางแผนไว้และวัตถุประสงค์ของเส้นทางเป็นหลักเกณฑ์ที่ต้องปฏิบัติตาม ซึ่งไม่ใช่ข้อกำหนด คุณอาจเห็นความแตกต่างระหว่างเส้นทางที่วางแผนไว้กับเส้นทางที่การนำทางด้วยเสียงแนะนำเนื่องจากสภาพถนน ตำแหน่งเริ่มต้น หรือพารามิเตอร์อื่นๆ ที่เปลี่ยนแปลงไปนับตั้งแต่ที่คุณสร้างเส้นทางที่วางแผนไว้ ความแตกต่างนี้อาจทำให้เป้าหมายที่วางแผนไว้ไม่ตรงกับเป้าหมายจริงสำหรับระยะทางและเวลาถึงที่หมาย รวมถึงคุณภาพการเดินทางที่สำคัญอื่นๆ

วางแผนเส้นทางโดยใช้โทเค็นเส้นทาง

คุณสามารถวางแผนเส้นทางได้โดยสร้างโทเค็นเส้นทางแล้วส่งไปยัง Navigation SDK ตามที่อธิบายไว้ในขั้นตอนต่อไปนี้

ขั้นตอนที่ 1: สร้างโทเค็นเส้นทางโดยใช้ Routes API, Routes Preferred API หรือ Route Optimization API

  1. ขอโทเค็นเส้นทาง ด้วยวิธีใดวิธีหนึ่งต่อไปนี้

  2. ตั้งค่าคำขอ Routes API หรือ Routes Preferred API ให้เป็นไปตามข้อกำหนดในการใช้โทเค็นเส้นทาง ดังนี้

    • ตั้งค่า travel_mode เป็น DRIVE หรือ TWO_WHEELER
    • ตั้งค่า routing_preference เป็น TRAFFIC_AWARE หรือ TRAFFIC_AWARE_OPTIMAL
    • อย่าใช้จุดแวะพัก Via

ขั้นตอนที่ 2: ส่งโทเค็นเส้นทางไปยัง Navigation SDK

  1. จัดเก็บโทเค็นเส้นทาง: ใน Navigation SDK ให้ตั้งค่าสตริง เพื่อจัดเก็บโทเค็นเส้นทาง เช่น

    let routeToken = "route token returned by Routes API"
    

    ตัวอย่างโทเค็นเส้นทางที่ส่งคืน

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. ส่งโทเค็นเส้นทาง ไปยัง Navigation SDK โดยใช้ mapView.navigator.setDestinations ระบุจุดแวะพักปลายทางเดียวกันกับที่ใช้เมื่อสร้างโทเค็นเส้นทาง

    mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})
    

    เมธอด setDestinations จะส่งสถานะของคำขอไปยัง Callback หากพบเส้นทางจากตำแหน่งของผู้ใช้ไปยังปลายทางที่ระบุ สถานะจะเป็น .OK (GMSRouteStatusOK)

สถานการณ์ที่มีหลายจุดแวะพัก

คุณกำหนดค่าจุดแวะพักได้สูงสุด 25 จุด

เมธอด setDestinations ไม่รองรับการเดินทางที่มีหลายจุดแวะพัก ใช้ continueToNextDestinationWithCompletion() เพื่อเลื่อนจุดแวะพักไปยังส่วนถัดไปของการเดินทาง

ตัวอย่าง

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีดึงข้อมูลเส้นทางที่วางแผนไว้

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:location 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