API, varsayılan olarak ara yol noktalarını rota üzerindeki duraklar olarak değerlendirir.
Ancak, ara yol noktasını, aracın durmadan geçeceği bir geçiş via
yol noktası olarak yapılandırabilirsiniz.
Belirli bir rotayı şekillendirmek veya ayarlamak için geçiş noktalarını kullanın. Rota, ayrı alma veya bırakma duraklarına bölünmek yerine, geçiş amaçlı bir ara nokta, yönlendirme motorunu hedefe giderken belirli bir konumdan geçmeye zorlar. Örneğin, tercih edilen bir yol segmentini takip etmek veya bilinen bir tehlikeden kaçınmak için.
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 tek bir rota ayağı içerir.
Bir ara noktayı geçiş noktası olarak yapılandırmak için ara noktanın via özelliğini REST Waypoint kaynağında veya gRPC Waypoint mesajında true olarak ayarlayın.
Routes API; adresleri, yer kimliklerini ve enlem/boylam
koordinatlarını kabul etse de enlem ve boylam ya da latLng koordinatları, geçiş noktaları için
en doğru rota ayarlamalarını sağlar.
via özelliği, bir haritada ara noktaları sürükleyerek rota oluşturduğunuzda en etkili şekilde çalışır. Bu yaklaşım, son rotanın nasıl göründüğünü gerçek zamanlı olarak görmenizi sağlar ve yol noktalarını 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ına "via": true 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
Tam geçiş yönlendirmesi için enlem ve boylam koordinatlarını kullanmanızı önersek de adres dizesi veya yer kimliği kullanarak ara geçiş noktaları da belirtebilirsiniz.
Geçiş noktası için adres veya yer kimliği kullandığınızda API, konumu enterpolasyon yaparak en yakın gezinilebilir yola sabitler. Bu yol tutma işlemi bazen tam koordinatlara kıyasla rota farklılıklarına veya yanlışlıklara neden olabilir.
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, yanıttaki Yer Kimliğine istekteki hangi ara noktanın karşılık geldiğini belirlemek üzere intermediateWaypointRequestIndex özelliğini kullanın.
Örnek: Geçiş noktaları için yer kimlikleri isteğinde bulunma
Aşağıdaki örnekte, her biri "via": true 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ıtta, başlangıç noktası, varış noktası ve istek dizini 0 ile dizin 2'de adresle belirttiğiniz iki ara nokta için yer kimliklerini içeren geocodingResults dizisi yer alır. API, dizin 1'deki ara yol noktasını geocodingResults parametresinden çıkarır. Bunun nedeni, bu noktayı enlem ve boylam koordinatlarını kullanarak belirtmiş olmanızdı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" } ] } }