Rota ara noktalarınızı optimize edin

Ara nokta optimizasyonu, ComputeRoutes özelliğini genişleten bir Tercih Edilen Rotalar özelliğidir. Gezginin rotasındaki ara yol noktalarının sırasını optimize ederek mümkün olan en verimli rotayı kullanmasını sağlar. ComputeRoutes Ara nokta optimizasyonunun uygulanması 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 belirli kontrol noktalarından geçiren bir uygulama oluştururken, yolcunun kontrol 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 noktaları üzerinden 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ış ara noktaları alma

Yeniden sıralanmış yol noktaları içeren bir rota almak için optimizeWaypointOrder boole alanını ComputeRoutes isteğinizin gövdesinde 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 nokta ile birlikte bir başlangıç noktası 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ın optimize edilmesinin orijinal sıralarını tersine çevirdiğini unutmayın.

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 saniye değerini 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ı

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 herhangi bir ara nokta belirtirseniz 25'e kadar ara nokta.
  • Tüm ara noktalarınız stopover türünde olmalıdır. Hiçbir ara noktanız via türünde olamaz.

  • routes.optimizedIntermediateWaypointIndex öğesini 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.

    • Seyahat modu DRIVE olmalıdır.