Referans noktası optimizasyonu, ComputeRoutes
kapsamını genişleten bir Rota Tercih Edilir özelliğidir.
Kullanıcının rotasındaki ara noktaların sırasını optimize ederek, rotanın mümkün olan en verimli rotaya gitmesini sağlar. Ara nokta optimizasyonunun ComputeRoutes
uygulaması, aşağıdaki ulaşım modlarını destekler:
- Araba
- Motorlu iki tekerlekli araç
- bisiklet
- Yürüyüş
Referans noktası optimizasyonunu neden kullanmalısınız?
Kullanıcıları bir hedefe giden yolda çeşitli ara noktalarda yönlendiren bir uygulama geliştirirken, kullanıcının ara noktaları en uygun sırayla çekmesi önemlidir. Bu, yolcunun her ara noktaya en kısa sürede varmasını sağlar.
İşleyiş şekli
Varsayılan olarak ComputeRoutes
, ara noktaları kullanarak rotayı başlangıçta sağlandıkları sırayla hesaplar. Ara ara noktaları daha verimli bir sırada yeniden düzenleyerek rotayı optimize etmek için ComputeRoutes
işlevinden yararlanabilirsiniz.
İstek gövdesindeki optimizeWaypointOrder
alanını true
olarak ayarlarsanız, optimize edilmiş ara noktalar içeren bir rota alırsınız.
Not: Referans noktası optimizasyonu hesaplamasında esas olarak 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ıralanan ara noktaları alma
Yeniden sıralanmış ara noktalara sahip bir rota elde etmek için isteğinizin gövdesindeki optimizeWaypointOrder
boole alanını true
olarak ComputeRoutes
olarak ayarlayın. Ayrıca, alan maskesine optimizedIntermediateWaypointIndex
alanını da ekleyin. Yanıt gövdesi, optimizedIntermediateWaypointIndex
alanlarında optimize edilmiş ara nokta sırasını içerir.
Not: optimizedIntermediateWaypointIndex
alanı, sıfır tabanlı değerler döndürür.
Örnek istek
Aşağıdaki örnekte, Stanford Üniversitesi kampüsünün yakınındaki bir rota belirtilmektedir. Rota ara noktaları, istekte sıralı olarak sağlanmıştır. İstek, iki ara ara nokta içeren bir başlangıç ve bir hedef 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 referans noktası dizinlerini, yanıt gövdesindeki rotalar nesnesindeki optimizedIntermediateWaypointIndex
alanlarında bulabilirsiniz. Kodlanmış çoklu çizgi, Directions API ve ComputeRoutes'daki ile 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, ara noktaları optimize etmenin orijinal sıralarını tersine çevirdiğine dikkat edin.
Önerilen uygulamalar
Optimize edilmiş ara noktalara sahip bir isteğin işlenmesi, basit bir yönlendirme isteğine göre daha uzun sürer. Bu nedenle, X-Server-Timeout
istek başlığı için en az on saniyeye bir değer ayarlayarak yöntem çağrısında daha yüksek bir zaman aşımı ayarlamanızı öneririz. Zaman aşımı hataları almaya devam ederseniz bir saniye daha ekleyip tekrar deneyebilirsiniz.
Kullanım sınırlamaları
Referans noktası optimizasyonunu kullanmak için aşağıdaki kullanım sınırlamalarına ve koşullarına uymanız gerekir:
Rotanızdaki ara ara noktalar için en fazla kullanım sınırı belirtebilirsiniz:
- Yalnızca enlem ve boylam koordinatlarının kullanıldığı 98'e kadar ara nokta.
- Yer kimliklerini kullanarak herhangi bir ara nokta belirtirseniz en fazla 25 ara nokta.
Tüm ara noktalarınız duraklatma türünde olmalıdır. Hiçbir ara noktanız aracılığıyla türünde olamaz.
Alan maskesine
routes.optimizedIntermediateWaypointIndex
eklemeniz gerekir.İsteğinizde 25 veya daha fazla ara ara nokta varsa aşağıdaki koşullara da uygun olmalıdır:
Tüm ara noktalar arasındaki toplam düz çizgi mesafesi 1.000 km'den az olmalıdır. Bu mesafe,hem başlangıç noktasını hem de hedefi içerir.
Ulaşım şekli DRIVE olmalıdır.