Ara nokta optimizasyonu, ComputeRoutes
özelliğini genişleten bir Tercih Edilen Rotalar özelliğidir.
Bu özellik, bir gezginin rotasındaki ara noktalara ulaşım sırasını optimize ederek mümkün olan en verimli rotayı kullanmasını sağlar. ComputeRoutes
Ara nokta optimizasyonu uygulaması aşağıdaki seyahat modlarını destekler:
- Araba
- Motorlu iki tekerlekli araçlar
- bisiklet
- Yaya
Neden ara nokta optimizasyonu kullanmalısınız?
Kullanıcıları bir hedefe giderken çeşitli yol noktalarından geçiren bir uygulama oluştururken, yolcunun yol noktalarını en uygun sırayla geçmesi önemlidir. Bu, yolcunun her bir ara noktaya en kısa sürede ulaşmasını sağlar.
İşleyiş şekli
Varsayılan olarak ComputeRoutes
, rotayı başlangıçta sağlandıkları sırayla ara noktalardan geçerek hesaplar. Ara durakları daha verimli bir sıraya göre yeniden düzenleyerek rotayı optimize etmek için ComputeRoutes
simgesine dokunabilirsiniz.
İstek gövdesindeki optimizeWaypointOrder
alanını true
olarak ayarlarsanız optimize edilmiş yol noktaları içeren bir rota alırsınız.
Not: Ara nokta optimizasyonu hesaplaması öncelikle seyahat süresine dayanır ancak ö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 noktaları içeren bir rota almak için isteğinizin gövdesindeki optimizeWaypointOrder
boole alanını ComputeRoutes
için true
olarak ayarlayın. Ayrıca, alan maskesine optimizedIntermediateWaypointIndex
alanını da ekleyin. Yanıt gövdesi, optimizedIntermediateWaypointIndex
alanlarında optimize edilmiş rota 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ında bir rota sağlar. Rota üzerindeki ara noktalar, istekte sırayla sağlanmıştır. İstek, iki ara yol noktasıyla birlikte bir başlangıç ve bir hedef içeriyor.
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övdesindeki rotalar 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, ara noktaları optimize etmenin orijinal sıralarını tersine çevirdiğini unutmayın.
Önerilen uygulamalar
Ara noktaları optimize edilmiş bir isteğin işlenmesi, basit bir yönlendirme isteğine göre daha uzun sürer. Bu nedenle, X-Server-Timeout
istek üstbilgisi için en az on saniyelik bir değer belirleyerek 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ı
Ara nokta optimizasyonunu kullanmak için aşağıdaki kullanım sınırlamalarına ve koşullarına uymanız gerekir:
Rotanızdaki ara yol noktaları için kullanım sınırına kadar belirtebilirsiniz:
- Yalnızca enlem ve boylam koordinatları kullanılarak 98'e kadar ara nokta.
- Yer kimliklerini kullanarak ara nokta belirtirseniz 25'e kadar ara nokta.
Tüm ara noktalarınız mola türünde olmalıdır. Hiçbir ara noktanız via türünde olamaz.
routes.optimizedIntermediateWaypointIndex
değerini alan maskesine eklemeniz gerekir.İsteğinizde 25 veya daha fazla ara nokta varsa aşağıdaki koşullara da uyması gerekir:
Tüm ara noktalar arasındaki birikmiş düz çizgi mesafesi 1.000 km'den az olmalıdır. Bu mesafeye hem başlangıç hem de varış noktası dahildir.
Ulaşım şekli ARABA olmalıdır.