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

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

  • เส้นประกอบของเส้นทาง

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

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

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

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

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

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

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

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

  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 เป็น DRIVING หรือ 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