Rota ara noktalarınızı optimize edin

Ara nokta optimizasyonu, ComputeRoutes'i genişleten bir Routes Preferred özelliğidir. Bu özellik, yolcuların rotasındaki ara noktaların sırasını optimize ederek mümkün olan en verimli rotada seyahat etmelerini sağlar. ComputeRoutes ara nokta optimizasyonu uygulaması aşağıdaki seyahat modlarını destekler:

  • Araba
  • Motorlu iki tekerlekli araç kullanma
  • bisiklet
  • Yaya

Ara nokta optimizasyonunu neden kullanmalısınız?

Kullanıcıları bir hedefe giden yolda bir dizi ara noktadan geçiren bir uygulama oluştururken, yolcunun ara noktalardan en uygun sırayla geçmesi önemlidir. Bu sayede yolcu, her ara noktaya en kısa sürede ulaşır.

İşleyiş şekli

Varsayılan olarak ComputeRoutes, rotayı başlangıçta sağlanan sırayla ara noktalar üzerinden hesaplar. Ara yol noktalarını daha verimli bir sıraya göre yeniden düzenleyerek rotayı optimize etmek için ComputeRoutes kullanabilirsiniz. İstek gövdesindeki optimizeWaypointOrder alanını true olarak ayarlarsanız optimize edilmiş ara noktalar içeren bir rota alırsınız.

Not: Yol noktası optimizasyonu hesaplaması temel 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 yol noktalarını alma

Yeniden sıralanmış ara noktalar içeren bir rota almak için ComputeRoutes isteğinizin gövdesinde optimizeWaypointOrder boole alanını true olarak ayarlayın. Ayrıca, alan maskesine optimizedIntermediateWaypointIndex alanını ekleyin. Yanıt gövdesi, 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ında bir rota sağlar. Rota ara noktaları, istekte sırayla sağlanmıştır. İstek, bir başlangıç noktası, bir varış noktası ve iki ara nokta 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 nokta dizinlerini, yanıt gövdesindeki rotalar nesnesinin içindeki optimizedIntermediateWaypointIndex alanlarında bulabilirsiniz. Kodlanmış çoklu çizgi, Directions API ve ComputeRoutes 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, yol noktalarının optimize edilmesinin orijinal sıralarını tersine çevirdiğine dikkat edin.

Optimize edilmiş yol noktaları içeren bir isteğin işlenmesi, basit bir rota isteğine kıyasla daha uzun sürer. Bu nedenle, X-Server-Timeout istek başlığı için en az on saniyelik bir değer belirleyerek yöntem çağrısında daha yüksek bir zaman aşımı süresi ayarlamanızı öneririz. Zaman aşımı hataları almaya devam ederseniz bir saniye daha ekleyip tekrar deneyebilirsiniz.

Kullanım sınırları

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 noktalar için kullanım sınırına kadar belirtebilirsiniz:

    • Yalnızca enlem ve boylam koordinatları kullanılarak en fazla 98 ara nokta.
    • Yer kimliklerini kullanarak herhangi bir referans noktası belirtirseniz en fazla 25 referans noktası.
  • Tüm ara noktalarınız mola yeri türünde olmalıdır. Ara noktalarınızın hiçbiri via türünde olamaz.

  • Alan maskesine routes.optimizedIntermediateWaypointIndex 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 toplam 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.