Referans noktası optimizasyonu, ComputeRoutes
hizmetini kapsayan bir Tercih Edilen Rotalar özelliğidir.
Yolcunun rotasındaki ara noktaların sırasını optimize ederek kullanıcıların mümkün olan en verimli rotayı izlemelerini sağlar. Referans noktası optimizasyonunun ComputeRoutes
uygulaması, aşağıdaki ulaşım şekillerini destekler:
- Araba
- Motorlu iki tekerlekli
- bisiklet
- Yürüyüş
Referans noktası optimizasyonunu neden kullanmalısınız?
Kullanıcıları, belirli bir hedefe giderken çeşitli ara noktalarda yönlendiren bir uygulama oluştururken, yolcunun ara noktaları en uygun sırayla katetmesi önemlidir. Bu sayede yolcular her ara noktaya en kısa sürede varır.
İşleyiş şekli
Varsayılan olarak ComputeRoutes
, bir rotayı referans noktalarında başlangıçta belirtildikleri sıraya göre hesaplar. Ara noktaları daha verimli bir şekilde yeniden düzenleyerek rotayı optimize etmek için ComputeRoutes
özelliğinden yararlanabilirsiniz.
İstek gövdesinde 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 temel olarak seyahat süresi temel alınır ancak özellik, mesafe ve dönüş sayısı gibi diğer faktörleri de dikkate alır.
Yeniden sıralanmış ara noktaları alın
Yeniden sıralanmış ara noktaları olan bir rota almak için isteğinizin gövdesindeki optimizeWaypointOrder
boole alanını true
olarak ayarlayın.ComputeRoutes
Ayrıca, alan maskesine optimizedIntermediateWaypointIndex
alanını dahil edin. Yanıt gövdesi, optimizedIntermediateWaypointIndex
alanlarındaki 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 örnek istek, Stanford Üniversitesi kampüsünün yakınındaki bir rotayı göstermektedir. İstekte rota ara noktaları sıralı olarak sağlandı. İstek, iki ara noktayla birlikte bir başlangıç ve 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 rota nesnesindeki optimizedIntermediateWaypointIndex
alanlarında bulabilirsiniz. Kodlanmış çoklu çizgi, Directions API ve ComputeRoutes'dakiyle 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 noktalar içeren 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ı değeri belirlemenizi ö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 kullanım sınırına kadar belirtebilirsiniz:
- Yalnızca enlem ve boylam koordinatları kullanılarak 98 adede kadar ara nokta.
- Yer kimliklerini kullanarak ara nokta belirtirseniz 25 ara nokta ekleyebilirsiniz.
Tüm ara noktalarınız ara durak türünde olmalıdır. Ara noktalarınızın hiçbiri üzerinden türde olamaz.
Alan maskesine
routes.optimizedIntermediateWaypointIndex
eklemeniz gerekir.İsteğinizde 25 veya daha fazla ara nokta varsa aşağıdaki koşulların da sağlanması gerekir:
Tüm ara noktalar arasındaki toplam düz çizgi mesafesi 1.000 km'den az olmalıdır. Bu mesafe hem başlangıç hem de varış noktasını kapsar.
Ulaşım şekli DRIVE olmalıdır.