โดยค่าเริ่มต้น API จะถือว่าจุดอ้างอิงระดับกลางเป็นจุดแวะพักตามเส้นทาง
อย่างไรก็ตาม คุณสามารถกำหนดค่าจุดอ้างอิงระดับกลางเป็นจุดอ้างอิงแบบผ่านviaที่ยานพาหนะจะผ่านไปโดยไม่หยุดได้
ใช้จุดอ้างอิงแบบผ่านเพื่อกำหนดรูปร่างหรือปรับเส้นทางที่เฉพาะเจาะจง แทนที่จะแบ่งเส้นทางออกเป็นจุดรับหรือจุดส่งแยกกัน จุดอ้างอิงแบบผ่านจะบังคับให้เครื่องมือการกำหนดเส้นทางผ่านสถานที่ที่เฉพาะเจาะจงระหว่างทางไปยังจุดหมาย เช่น เพื่อไปตามส่วนของถนนที่ต้องการหรือหลีกเลี่ยงอันตรายที่ทราบ
เส้นทางที่มีต้นทาง จุดอ้างอิงระดับกลางแบบผ่านอย่างน้อย 1 จุด และจุดหมายจะมีช่วงเส้นทางเดียวที่เชื่อมต่อต้นทางกับจุดหมายโดยตรง
หากต้องการกำหนดค่าจุดอ้างอิงระดับกลางเป็นจุดอ้างอิงแบบผ่าน ให้ตั้งค่าพร็อพเพอร์ตี้ via ของจุดอ้างอิงเป็น true ในทรัพยากร REST Waypoint หรือข้อความ gRPC Waypoint
แม้ว่า Routes API จะยอมรับที่อยู่ รหัสสถานที่ และพิกัดละติจูดและลองจิจูด แต่พิกัดละติจูดและลองจิจูด หรือ latLng จะช่วยให้การปรับเส้นทางแม่นยำที่สุดสำหรับจุดอ้างอิงที่ผ่าน
พร็อพเพอร์ตี้ via จะมีประสิทธิภาพมากที่สุดเมื่อคุณสร้างเส้นทางเพื่อตอบสนองต่อการลากจุดอ้างอิงบนแผนที่ วิธีนี้ช่วยให้คุณเห็นลักษณะของเส้นทางสุดท้ายแบบเรียลไทม์และช่วยให้คุณวางจุดอ้างอิงในตำแหน่งที่เข้าถึงได้
ตัวอย่าง: ตั้งค่าจุดอ้างอิงแบบผ่าน
ตัวอย่างต่อไปนี้แสดงวิธีตั้งค่า "via": true ในจุดอ้างอิงระดับกลางในคำขอ POST computeRoutes ที่สมบูรณ์
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 Code 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" } ] } }