Yol noktası optimizasyonu, ComputeRoutes
'i genişleten bir Tercih Edilen Rotalar özelliğidir.
Kullanıcının rotasındaki ara yol işaretlerinin sırasını optimize ederek kullanıcının mümkün olan en verimli rotayı kullanmasını sağlar. ComputeRoutes
Yol noktası optimizasyonunun uygulanması aşağıdaki seyahat modlarını destekler:
- Araba
- Motorlu iki tekerlekli araçlar
- bisiklet
- Yaya
Yol noktası optimizasyonunu neden kullanmalısınız?
Kullanıcıları bir hedefe giderken çeşitli yol noktalarında yönlendiren bir uygulama oluştururken, kullanıcının yol noktalarını en uygun sırada geçmesi önemlidir. Bu sayede gezgin, her yol noktasına en kısa sürede varır.
İşleyiş şekli
Varsayılan olarak ComputeRoutes
, yol işaretleri üzerinden bir rotayı ilk sağlandıkları sırayla hesaplar. Ara yol işaretlerini daha verimli bir sıraya göre yeniden düzenleyerek ComputeRoutes
'ün rotayı optimize etmesini sağlayabilirsiniz.
İstek gövdesinde optimizeWaypointOrder
alanını true
olarak ayarlarsanız optimize edilmiş yol işaretleri içeren bir rota alırsınız.
Not: Dönüş noktası optimizasyonu hesaplaması öncelikle seyahat süresine dayanır ancak bu özellik mesafe ve dönüş sayısı gibi diğer faktörleri de dikkate alır.
Yeniden sıralanmış yol noktalarını alma
Yeniden sıralanmış yol işaretleri içeren bir rota almak için isteğinizin gövdesinde optimizeWaypointOrder
doğru/yanlış alanını true
olarak ayarlayın.ComputeRoutes
Ayrıca, alan maskesine optimizedIntermediateWaypointIndex
alanını da ekleyin. Yanıt metni, optimizedIntermediateWaypointIndex
alanlarında optimize edilmiş yol noktası sırasını içerir.
Not: optimizedIntermediateWaypointIndex
alanı sıfır tabanlı değerler döndürür.
Örnek istek
Aşağıdaki örnek istek, Stanford Üniversitesi kampüsünün yakınındaki bir rotayı sağlar. Rota yol işaretleri isteğinde sırayla sağlanmıştır. İstek, iki ara yol noktası içeren bir başlangıç ve hedef noktası içerir.
POST /v1alpha:computeRoutes
Host: routespreferred.googleapis.com
Content-Type: application/json
X-Server-Timeout: 10
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
{
"origin":{
"location":{
"latLng":{
"latitude": 37.418956,
"longitude": -122.160815
}
}
},
"intermediates": [
{
"location":{
"latLng":{
"latitude": 37.4176423,
"longitude":-122.1102246
}
}
},
{
"location":{
"latLng":{
"latitude": 37.407689,
"longitude": -122.1360597
}
}
}
],
"destination":{
"location":{
"latLng":{
"latitude": 37.4032137,
"longitude": -122.0349119
}
}
},
"travelMode": "DRIVE",
"optimizeWaypointOrder": true,
"routingPreference": "TRAFFIC_AWARE"}
Örnek yanıt
Yeniden sıralanan ara yol noktası dizinlerini, yanıt gövdesinde routes nesnesinin optimizedIntermediateWaypointIndex
alanlarında bulabilirsiniz. Kodlanmış çoklu çizgi, Directions API ve ComputeRoutes'takiyle aynıdır.
routes {
distance_meters: 17647
duration {
seconds: 1866
}
polyline {
encoded_polyline: "wkkcFvorhVU{@Ec@C}CG}@Mm@[}@i@y@[[g@_@Tk@BSjCgGfF|D\\Pv@Lj@@XaCTeC\\aCTs@`ByD`@k@h@e@x@Yh@GtADhBF|@G`AWpAs@lAsAdA{A`BmDr@cBmUqQoS}OyGmFiBsAgEwD}CaCU_@Og@@e@Hy@nGkO~@sBr@cBlDqIlByEp@}AjIfGnBbBHLLd@^p@~ErDfNrKrA~@DIhEeBTQ~AqDlE{KjBgE|FnEh@aAi@`A}FoE~AmD`A}BcAm@mHwFwD}CkLwIsDqCgF_EG[GKnCsDrA_BrC_CnCoBpEkD`EyClCsBcBeBIAkGkH]k@eJmKQKsAuA_@g@wCoDGQmEmFmIqROKaDuHvBkBxAgANCRH^f@v@dBHDD?`AUiBqEhBpEaATMCQYm@wAY]SIOByAfAwBjB_ByDaAwBiCeIA[c@aBqEuNOm@IQbA{c@p@aZFmCTuBLg@Tc@BUAKxOeV~Vy_@nBoDv@_BvAcDzA_EdG{RdC{HtIsY|B{Hx@mDbAuFdBsMbKsv@TaBf@}AdF{Sn@_DJq@Lo@aE`@]GUQmAmAQk@@g@RK`Ce@d@UDEPc@f@cCrAyGJs@X{AbIem@bA{JD_AIaAMg@o@{A_Ad@y@NaCLCsCK_FGI"
}
optimizedIntermediateWaypointIndex: 1
optimizedIntermediateWaypointIndex: 0
}
Bu örnekte, yol noktalarının optimize edilmesiyle orijinal sıralarının tersine çevrildiğini görebilirsiniz.
Önerilen uygulamalar
Optimize edilmiş ara noktalar içeren bir isteğin işlenmesi, basit bir yönlendirme isteğine kıyasla daha uzun sürer. Bu nedenle, X-Server-Timeout
istek üstbilgisi için en az on saniyelik bir değer ayarlayarak yöntem çağrısında daha yüksek bir zaman aşımı belirlemenizi öneririz. Zaman aşımı hataları almaya devam ederseniz bir saniye daha ekleyip tekrar deneyebilirsiniz.
Kullanım sınırlamaları
Dönüm noktası optimizasyonunu kullanmak için aşağıdaki kullanım sınırlamalarına ve koşullarına uymanız gerekir:
Rotanızdaki ara yol işaret noktaları için kullanım sınırına kadar belirtebilirsiniz:
- Yalnızca enlem ve boylam koordinatlarını kullanarak 98'e kadar yol noktası.
- Yer kimliklerini kullanarak ara nokta belirtiyorsanız en fazla 25 ara nokta.
Tüm yol noktalarınız durak türünde olmalıdır. Yol işaretçilerinizin hiçbiri via türüne sahip olamaz.
Alan maskesine
routes.optimizedIntermediateWaypointIndex
eklemeniz gerekir.İsteğiniz 25 veya daha fazla ara yol noktası içeriyorsa aşağıdaki koşullara da uymalıdır:
Tüm yol noktaları arasındaki toplam düz çizgi mesafesi 1.000 km'den kısa olmalıdır. Bu mesafe hem kalkış hem de varış noktalarını içerir.
Ulaşım şekli DRIVE olmalıdır.