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

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

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

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

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

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

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

  • ลดเวลาในการปลายทาง: การดำเนินการมอบหมายบริการอาจต้องการ ลดเวลาที่ใช้ในการดึงโอเปอเรเตอร์มาที่คำของาน

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการวางแผนเส้นทางโดยใช้โทเค็นเส้นทาง โปรดดู ขอโทเค็นเส้นทาง

เหตุผลที่ควรใช้โทเค็นเส้นทางสำหรับวัตถุประสงค์ของเส้นทาง

เมื่อใช้โทเค็นเส้นทางจาก Routes หรือ Routes Preferred API คุณจึงมี ควบคุมเส้นทางที่ให้ไว้:

  • วางแผนเส้นทางล่วงหน้าเพื่อให้ Navigation SDK ใช้งาน หากเป็นไปได้

  • เลือกเส้นทางที่ดีที่สุดที่ Navigation SDK จะใช้ หากคุณขอโทเค็นเส้นทางเมื่อสร้างเส้นทางใน Routes API คุณจะได้รับโทเค็นเส้นทาง สำหรับแต่ละเส้นทางที่สร้างขึ้น จากนั้นคุณสามารถเลือกโทเค็น ที่คุณต้องการใช้เมื่อส่งผ่านไปยัง SDK การนำทาง

  • ประมาณราคาล่วงหน้า รวมถึงการประมาณเวลาถึงโดยประมาณและระยะทาง แม้ว่าค่าใช้จ่ายและเวลาจริงอาจแตกต่างกันไป แต่การประมาณนี้จะลดช่องว่างระหว่าง ค่าใช้จ่ายที่คาดไว้และเส้นทางจริง

  • ระบุวัตถุประสงค์ของเส้นทางขั้นสูง เช่น การกำหนดเส้นทางแบบประหยัดหรือสั้นที่สุด เส้นทาง

วิธีการทำงานของโทเค็นเส้นทาง API ของ Routes

คุณใช้ Routes API หรือ Routes Preferred API ได้ เพื่อวางแผนเส้นทางโดยใช้วัตถุประสงค์ของเส้นทาง Routes API จะแสดงผล โทเค็นเส้นทางที่คุณสามารถส่งไปยัง Navigation SDK เพื่อแนะนำวิธีการ กำหนดเส้นทางให้กับยานพาหนะของคุณ

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

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

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

  3. Navigation SDK จะเรียกคืนเส้นทาง หรือถ้าเส้นทางไม่ได้ พร้อมใช้งานเนื่องจากการเปลี่ยนแปลงเงื่อนไข รายการโฆษณาจะดึงข้อมูลการจับคู่ที่ดีที่สุด เส้นทาง

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

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

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

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

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

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

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

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

    • Routes API: computeRoutes สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ เมื่อส่งคำขอโทเค็นเส้นทางใน Routes API โปรดดู คำนวณเส้นทาง และ ขอโทเค็นเส้นทาง

    • Routes Preferred API: computeCustomRoutes สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ เมื่อส่งคำขอโทเค็นเส้นทางใน Routes Preferred API โปรดดู วางแผนเส้นทาง

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

    • ตั้งค่า travel_mode เป็น DRIVING
    • โปรดตั้งค่า routing_preference เป็น TRAFFIC_AWARE หรือ TRAFFIC_AWARE_OPTIMAL
    • อย่าใช้จุดอ้างอิง Via

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

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

    String routeToken = "route token returned by Routes API";

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

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

    setDestinations(List destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

    เช่น

    CustomRoutesOptions customRoutesOptions =
          CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .build();

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการนี้ ดูที่ Navigator.setDestinations

ตัวอย่าง

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีระบุเส้นทางที่วางแผนไว้โดยใช้ เพื่อกำหนดเส้นทาง

    ArrayList <Waypoint> destinations = Lists.newArrayList();
    Waypoint waypoint1 =
       Waypoint.builder()
          .setLatLng(10, 20)
          .setTitle("title")
          .setVehicleStopover(true)
          .build();
    destinations.add(waypoint1);
    Waypoint waypoint2 =
       Waypoint.builder()
          .setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
          .setTitle("title")
          .setVehicleStopover(true)
           .build()
    destinations.add(waypoint2);

    String routeToken = "route token returned by Routes API";

    CustomRoutesOptions customRoutesOptions =
       CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .setTravelMode(CustomRoutesOptions.TravelMode.TWO_WHEELER)
          .build();

    // Existing flow to get a Navigator.
    NavigationApi.getNavigator(...);

    // Existing flow for requesting routes.
    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions);

    // Or with display options.
    DisplayOptions displayOptions = new DisplayOptions();

    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions, displayOptions);

โทเค็นเส้นทางและ Navigation SDK ทำงานร่วมกันอย่างไร

ต่อไปนี้เป็นลักษณะของเส้นทางที่สร้างโดย Navigation SDK และ เส้นทางในโทเค็นเส้นทางมีการโต้ตอบ:

  • ลบล้างปลายทางที่ตั้งค่าไว้ก่อนหน้านี้

  • ใช้ตำแหน่งสตาร์ทรถ

  • ปรับตามสภาพการจราจรและสภาพการจราจร โปรดดู เหตุใดระบบจึงอาจไม่ตามเส้นทางที่วางแผนไว้ทุกประการ

  • ไม่สนใจตัวเลือกที่เกี่ยวข้องกับการกำหนดเส้นทางต่อไปนี้ที่ไม่จำเป็น

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • ติดตาม:

    • ตัวเลือกที่เกี่ยวข้องกับจุดอ้างอิง เช่น ค่ากำหนดข้างถนน

    • วัตถุประสงค์ของเส้นทาง หาก Navigation SDK จำเป็นต้อง ปรับเส้นทางที่ส่งคืนซึ่งใช้วัตถุประสงค์ของเส้นทางที่คุณระบุเมื่อ กำลังขอโทเค็นเส้นทาง ด้วยเหตุนี้ คุณจึงควรใช้วิธีการเดียวกันนี้ ตัวเลือกที่เกี่ยวข้องกับจุดอ้างอิงที่คุณระบุใน Routes API