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

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

    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)
          .setTravelMode(TravelMode.DRIVING)
          .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(TravelMode.DRIVING)
          .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