Rota ara noktalarınızı optimize edin

Yol noktası optimizasyonu, ComputeRoutes'i genişleten bir Tercih Edilen Rotalar özelliğidir. Kullanıcının rotasındaki ara yol işaretlerinin sırasını optimize ederek kullanıcının mümkün olan en verimli rotayı kullanmasını sağlar. ComputeRoutes Yol noktası optimizasyonunun uygulanması aşağıdaki seyahat modlarını destekler:

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

Yol noktası optimizasyonunu neden kullanmalısınız?

Kullanıcıları bir hedefe giderken çeşitli yol noktalarında yönlendiren bir uygulama oluştururken, kullanıcının yol noktalarını en uygun sırada geçmesi önemlidir. Bu sayede gezgin, her yol noktasına en kısa sürede varır.

İşleyiş şekli

Varsayılan olarak ComputeRoutes, yol işaretleri üzerinden bir rotayı ilk sağlandıkları sırayla hesaplar. Ara yol işaretlerini daha verimli bir sıraya göre yeniden düzenleyerek ComputeRoutes'ün rotayı optimize etmesini sağlayabilirsiniz. İstek gövdesinde optimizeWaypointOrder alanını true olarak ayarlarsanız optimize edilmiş yol işaretleri içeren bir rota alırsınız.

Not: Dönüş noktası optimizasyonu hesaplaması öncelikle 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ıralanmış yol noktalarını alma

Yeniden sıralanmış yol işaretleri içeren bir rota almak için isteğinizin gövdesinde optimizeWaypointOrder doğru/yanlış alanını true olarak ayarlayın.ComputeRoutes Ayrıca, alan maskesine optimizedIntermediateWaypointIndex alanını da ekleyin. Yanıt metni, 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ındaki bir rotayı sağlar. Rota yol işaretleri isteğinde sırayla sağlanmıştır. İstek, iki ara yol noktası içeren bir başlangıç ve hedef noktası 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 yol noktası dizinlerini, yanıt gövdesinde routes 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, yol noktalarının optimize edilmesiyle orijinal sıralarının tersine çevrildiğini görebilirsiniz.

Optimize edilmiş ara noktalar içeren bir isteğin işlenmesi, basit bir yönlendirme isteğine kıyasla daha uzun sürer. Bu nedenle, X-Server-Timeout istek üstbilgisi için en az on saniyelik bir değer 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ı

Dönüm noktası optimizasyonunu kullanmak için aşağıdaki kullanım sınırlamalarına ve koşullarına uymanız gerekir:

  • Rotanızdaki ara yol işaret noktaları için kullanım sınırına kadar belirtebilirsiniz:

    • Yalnızca enlem ve boylam koordinatlarını kullanarak 98'e kadar yol noktası.
    • Yer kimliklerini kullanarak ara nokta belirtiyorsanız en fazla 25 ara nokta.
  • Tüm yol noktalarınız durak türünde olmalıdır. Yol işaretçilerinizin hiçbiri via türüne sahip olamaz.

  • Alan maskesine routes.optimizedIntermediateWaypointIndex eklemeniz gerekir.

  • İsteğiniz 25 veya daha fazla ara yol noktası içeriyorsa aşağıdaki koşullara da uymalıdır:

    • Tüm yol noktaları arasındaki toplam düz çizgi mesafesi 1.000 km'den kısa olmalıdır. Bu mesafe hem kalkış hem de varış noktalarını içerir.

    • Ulaşım şekli DRIVE olmalıdır.