Rota ara noktalarınızı optimize edin

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.

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.