API, varsayılan olarak ara noktaları rota üzerindeki duraklar olarak değerlendirir.
Ancak bir ara noktayı, aracın durmadan geçtiği bir geçiş noktası via olarak yapılandırabilirsiniz.
Belirli bir rotayı şekillendirmek veya ayarlamak için geçiş noktalarını kullanın. Geçiş noktası, rotayı ayrı teslim alma veya bırakma duraklarına bölmek yerine rota motorunu, hedefe giden yolda belirli bir konumdan geçmeye zorlar. Örneğin, tercih edilen bir yol segmentini takip etmek veya bilinen bir tehlikeden kaçınmak için bu özellik kullanılabilir.
Başlangıç noktası, bir veya daha fazla geçiş ara noktası ve varış noktası içeren bir rota, başlangıç noktasını doğrudan varış noktasına bağlayan yalnızca bir rota ayağı içerir.
Bir ara noktayı geçiş noktası olarak yapılandırmak için REST Waypoint kaynağında veya gRPC Waypoint mesajında ara noktanın via özelliğini true olarak ayarlayın.
Routes API adresleri, yer kimliklerini ve enlem ve boylam koordinatlarını kabul etse de enlem ve boylam ya da latLng koordinatları, geçiş noktaları için en hassas rota ayarlamalarını sağlar.
via özelliği, bir harita üzerinde yol noktalarını sürükleyerek rota oluşturduğunuzda en etkili şekilde çalışır. Bu yaklaşım, son rotanın gerçek zamanlı olarak nasıl göründüğünü görmenizi sağlar ve ara noktaları erişilebilir konumlara yerleştirmenize yardımcı olur.
Örnek: Geçiş noktası ayarlama
Aşağıdaki örnekte, tam bir computeRoutes POST isteğinde ara yol noktasında "via": true değerinin nasıl ayarlanacağı gösterilmektedir:
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'
Geçiş noktaları için adresleri veya yer kimliklerini kullanma
Hassas geçiş rotası için enlem ve boylam koordinatlarını kullanmanızı öneririz. Ancak ara noktaları bir adres dizesi veya yer kimliği kullanarak da belirtebilirsiniz.
Geçiş noktası için bir adres veya yer kimliği kullandığınızda API, konumu en yakın gezilebilir yola göre tahmin eder ve sabitler. Bu yola sabitleme işlemi bazen tam koordinatlara kıyasla rota varyasyonlarına veya yanlışlıklara neden olabilir.
Bir adres dizesi veya Plus Code kullanarak bir ara nokta belirtirseniz API, konumu coğrafi olarak kodlar ve yanıttaki geocodingResults.intermediates dizisinde eşleşen yer kimliğini döndürür.
intermediates dizisindeki her öğe için intermediateWaypointRequestIndex özelliğini kullanarak istekteki hangi ara noktanın yanıttaki Yer Kimliğine karşılık geldiğini belirleyin.
Örnek: Geçiş noktaları için yer kimlikleri isteme
Aşağıdaki örnekte, her biri "via": true değerini belirten üç geçişli ara yol noktası içeren bir istek gösterilmektedir:
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'
Yanıt, başlangıç noktası, varış noktası ve istek dizini 0 ile dizin 2'de adresle belirttiğiniz iki ara noktanın yer kimliklerini içeren geocodingResults dizisini içerir. Enlem ve boylam koordinatlarını kullanarak
belirttiğiniz için API, dizinindeki 1. ara
noktayı geocodingResults değerinden çıkarır:
{ "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" } ] } }