Rota ara noktalarınızı optimize edin

Referans noktası optimizasyonu, ComputeRoutes. Kullanıcının rotasındaki ara noktaların sırasını optimize eder. mümkün olan en verimli rotayı kullanmalarını sağlamak. ComputeRoutes Yol noktası optimizasyonunun uygulanması aşağıdaki seyahat modlarını destekler:

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

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

Kullanıcılara bir hedefe giden yolda belirli ara noktalarda kılavuzluk eden bir uygulama geliştirirken bir varış noktası varsa, seyahat eden kişinin bağlantı noktasındaki ara noktaları kat etmesi en ideal sıralamayı oluşturur. Bu, seyahat eden kişinin teslimat noktasındaki her ara noktaya varmasını ve süre tahminidir.

İşleyiş şekli

ComputeRoutes, varsayılan olarak rotayı aşağıdaki sırayla referans noktaları aracılığıyla hesaplar: yalnızca bu metinlerde yer alıyor. Optimizasyon için ComputeRoutes alabilirsiniz ara noktaları daha verimli bir sıraya sokarak rotayı çizin. optimizeWaypointOrder alanı, istek gövdesinde true olarak ayarlanır.

Not: Ara nokta optimizasyonu hesaplamasında öncelikle seyahat süresi, Ancak bu özellik, mesafe gibi diğer faktörleri de dikkate alır. ve dönüş sayısı.

Yeniden sıralanan ara noktaları alma

Yeniden sıralanmış ara noktalar içeren bir rota almak için boole alanını ayarlayın optimizeWaypointOrder to true, ComputeRoutes. Ayrıca, optimizedIntermediateWaypointIndex alanını da dahil et kullanabilirsiniz. Yanıt gövdesi, optimizedIntermediateWaypointIndex alanlarını doldurun.

Not: optimizedIntermediateWaypointIndex alanı sıfır temelli değerini döndürür değerler.

Örnek istek

Aşağıdaki örnek istek, Stanford yakınındaki bir rotayı belirtiyor Üniversite kampüsü. Güzergah ara noktaları, isteği gönderin. İstek, iki ara hedef içeren bir kaynak ve bir hedef içeriyor ara hedefler.

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 ara nokta dizinlerini Rota nesnesindeki optimizedIntermediateWaypointIndex alan yanıt gövdesi. Kodlanmış çoklu çizgi ile aynıdır Directions API ve ComputeRoutes.

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 orijinallerini tersine çevirdiğine dikkat edin. sipariş.

Optimize edilmiş ara noktalara sahip bir isteğin işlenmesi, basit bir yönlendirmeye göre daha uzun sürer isteği gönderin. Bu nedenle, yöntem çağrısında daha yüksek bir zaman aşımı ayarlamanızı öneririz. X-Server-Timeout istek başlığı için en az 10 olacak şekilde bir değer ayarlayarak saniye. Zaman aşımı hataları almaya devam ederseniz bir saniye daha ekleyebilirsiniz yeniden deneyin.

Kullanım sınırlamaları

Referans noktası optimizasyonunu kullanmak için aşağıdaki kullanım sınırlamalarına koşullar:

  • Web sunucunuzdaki ara ara noktalar için en fazla kullanım sınırı belirleyebilirsiniz rota:

    • 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 olabilir.

  • Alana routes.optimizedIntermediateWaypointIndex eklemelisiniz seçin.

  • İsteğinizde 25 veya daha fazla ara nokta varsa aşağıdaki koşullara uymanız gerekir:

    • Tüm ara noktalar arasındaki toplam düz çizgi mesafesi şu şekilde olmalıdır: 1.000 km'den az olmalıdır. Bu mesafe, hem başlangıç noktası hem de seçeceğiz.

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