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

บางครั้งคุณอาจต้องการวางแผนเส้นทางที่แอปของคุณแสดงต่อผู้ใช้ การใช้โทเค็นเส้นทางจาก Routes API, Routes Preferred API หรือ Route Optimization API จะช่วยให้คุณระบุ 2 สิ่งสำหรับเส้นทางที่วางแผนไว้ได้ ดังนี้

  • เส้นประกอบสำหรับเส้นทาง

  • วัตถุประสงค์ของเส้นทาง

ตัวอย่างวัตถุประสงค์ในการกำหนดเส้นทางที่คุณอาจมี ได้แก่

  • ลดเวลาในการนำส่ง: ธุรกิจที่นำส่งอาหารอาจต้องการลดเวลาที่ใช้ในการนำส่งอาหาร

  • ลดเวลาเดินทางหรือการสิ้นเปลืองเชื้อเพลิง: ธุรกิจโลจิสติกส์อาจต้องการปรับปรุงประสิทธิภาพของคนขับและลดต้นทุนเชื้อเพลิง

  • ลดเวลาในการเดินทางไปยังจุดหมาย: การปฏิบัติงานในการส่งบริการอาจต้องการ ลดเวลาที่ใช้ในการนำผู้ปฏิบัติงานไปยังคำของาน

  • ลดต้นทุนและเพิ่มความปลอดภัย: ธุรกิจแชร์รถอาจต้องการ ค้นหาเส้นทางที่มีค่าใช้จ่ายน้อยลงสำหรับผู้โดยสารและหลีกเลี่ยงบางพื้นที่เพื่อความปลอดภัย

ดูข้อมูลเพิ่มเติมเกี่ยวกับการวางแผนเส้นทางโดยใช้โทเค็นเส้นทางได้ที่ขอโทเค็นเส้นทางใน Routes API และเปลี่ยนไปใช้ Polyline และโทเค็นเส้นทางใน 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 เพื่อกำหนดวิธีที่ SDK กำหนดเส้นทางสำหรับยานพาหนะได้

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

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

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

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

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

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

เหตุผลที่อาจไม่ได้ใช้เส้นทางที่วางแผนไว้

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

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

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

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

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

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

    • ตั้งค่า travel_mode เป็น DRIVING หรือ 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: {...})
    

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีนี้ได้ที่ GMSNavigator.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