กําหนดจุดผ่าน

นักพัฒนาซอฟต์แวร์ในเขตเศรษฐกิจยุโรป (EEA)

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

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

เส้นทางที่มีต้นทาง จุดแวะพักกลางอย่างน้อย 1 จุด และปลายทางจะมีขาของเส้นทางเพียงขาเดียวที่เชื่อมต่อต้นทาง กับปลายทางโดยตรง

หากต้องการกำหนดค่าจุดแวะพักกลางเป็นจุดแวะพักแบบส่งผ่าน ให้ตั้งค่าพร็อพเพอร์ตี้ viaของจุดแวะพักเป็น true ในทรัพยากร Waypoint ของ REST หรือข้อความ Waypoint ของ gRPC

แม้ว่า Routes API จะยอมรับที่อยู่ รหัสสถานที่ และพิกัดละติจูดและลองจิจูด แต่พิกัดละติจูดและลองจิจูดหรือlatLngจะให้การปรับเส้นทางที่แม่นยำที่สุด สำหรับจุดแวะพักแบบส่งต่อ

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

ตัวอย่าง: ตั้งค่าจุดอ้างอิงแบบผ่าน

ตัวอย่างต่อไปนี้แสดงวิธีตั้งค่า "via": true ในจุดแวะพักกลางทาง ในคำขอ computeRoutes POST ที่สมบูรณ์

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    }
  ],
  "travelMode": "DRIVE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

การใช้ที่อยู่หรือรหัสสถานที่สำหรับจุดอ้างอิงแบบส่งผ่าน

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

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

หากคุณระบุจุดแวะพักโดยใช้สตริงที่อยู่หรือโค้ด Plus API จะ แปลงรหัสพิกัดภูมิศาสตร์ของสถานที่ตั้งและแสดงรหัสสถานที่ที่ตรงกันในอาร์เรย์ geocodingResults.intermediates ในการตอบกลับ

สําหรับองค์ประกอบแต่ละรายการในอาร์เรย์ intermediates ให้ใช้พร็อพเพอร์ตี้ intermediateWaypointRequestIndex เพื่อกําหนดว่าจุดแวะพักกลาง ทางใดในคําขอที่สอดคล้องกับรหัสสถานที่ในคําตอบ

ตัวอย่าง: ขอรหัสสถานที่สำหรับจุดอ้างอิงแบบส่งผ่าน

ตัวอย่างต่อไปนี้แสดงคำขอที่มีจุดแวะพักระดับกลางแบบส่งผ่าน 3 จุด ซึ่งแต่ละจุดระบุ "via": true

curl -X POST -d '{
  "origin":{
    "address": "1600 Amphitheatre Parkway, Mountain View, CA"
  },
  "destination":{
    "address": "24 Willie Mays Plaza, San Francisco, CA 94107"
  },
  "intermediates": [
    {
      "address": "450 Serra Mall, Stanford, CA 94305, USA",
      "via": true
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    },
    {
      "address": "1836 El Camino Real, Redwood City, CA 94063",
      "via": true
    }
  ],
  "travelMode": "DRIVE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,geocodingResults' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

การตอบกลับจะมีอาร์เรย์ geocodingResults ที่มีรหัสสถานที่สำหรับ ต้นทาง ปลายทาง และจุดแวะพัก 2 จุดที่คุณระบุ ตามที่อยู่ที่ดัชนีคำขอ 0 และดัชนี 2 API จะละเว้นจุดแวะพักกลางที่ดัชนี 1 จาก geocodingResults เนื่องจากคุณระบุโดยใช้พิกัดละติจูดและลองจิจูด

{
  "routes": [
    {
      "distanceMeters": 54200,
      "duration": "2400s",
      "legs": [
        {
          "distanceMeters": 54200,
          "duration": "2400s",
          "startLocation": {
            "latLng": {
              "latitude": 37.4220,
              "longitude": -122.0841
            }
          },
          "endLocation": {
            "latLng": {
              "latitude": 37.7786,
              "longitude": -122.3893
            }
          }
        }
      ]
    }
  ],
  "geocodingResults": {
    "origin": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJj38IfwK6j4ARNcyPDnEGa9g"
    },
    "destination": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJI7ES6tl_j4ARVpDZoXbWAiY"
    },
    "intermediates": [
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 0,
        "type": [
          "street_address"
        ],
        "placeId": "ChIJvdLMGyq7j4ARScE5tWX_C0Y"
      },
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 2,
        "type": [
          "premise"
        ],
        "placeId": "ChIJkTc0GKajj4AR9UMsOSHwGD0"
      }
    ]
  }
}