Rota ara noktalarınızı optimize edin

Referans noktası optimizasyonu, ComputeRoutes hizmetini kapsayan bir Tercih Edilen Rotalar özelliğidir. Yolcunun rotasındaki ara noktaların sırasını optimize ederek kullanıcıların mümkün olan en verimli rotayı izlemelerini sağlar. Referans noktası optimizasyonunun ComputeRoutes uygulaması, aşağıdaki ulaşım şekillerini destekler:

  • Araba
  • Motorlu iki tekerlekli
  • bisiklet
  • Yürüyüş

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

Kullanıcıları, belirli bir hedefe giderken çeşitli ara noktalarda yönlendiren bir uygulama oluştururken, yolcunun ara noktaları en uygun sırayla katetmesi önemlidir. Bu sayede yolcular her ara noktaya en kısa sürede varır.

İşleyiş şekli

Varsayılan olarak ComputeRoutes, bir rotayı referans noktalarında başlangıçta belirtildikleri sıraya göre hesaplar. Ara noktaları daha verimli bir şekilde yeniden düzenleyerek rotayı optimize etmek için ComputeRoutes özelliğinden yararlanabilirsiniz. İstek gövdesinde 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 temel olarak seyahat süresi temel alınır ancak özellik, mesafe ve dönüş sayısı gibi diğer faktörleri de dikkate alır.

Yeniden sıralanmış ara noktaları alın

Yeniden sıralanmış ara noktaları olan bir rota almak için isteğinizin gövdesindeki optimizeWaypointOrder boole alanını true olarak ayarlayın.ComputeRoutes Ayrıca, alan maskesine optimizedIntermediateWaypointIndex alanını dahil edin. Yanıt gövdesi, optimizedIntermediateWaypointIndex alanlarındaki 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 örnek istek, Stanford Üniversitesi kampüsünün yakınındaki bir rotayı göstermektedir. İstekte rota ara noktaları sıralı olarak sağlandı. İstek, iki ara noktayla birlikte bir başlangıç ve 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 rota nesnesindeki optimizedIntermediateWaypointIndex alanlarında bulabilirsiniz. Kodlanmış çoklu çizgi, Directions API ve ComputeRoutes'dakiyle 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 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 saniyeye bir değer ayarlayarak yöntem çağrısında daha yüksek bir zaman aşımı değeri belirlemenizi ö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 kullanım sınırına kadar belirtebilirsiniz:

    • Yalnızca enlem ve boylam koordinatları kullanılarak 98 adede kadar ara nokta.
    • Yer kimliklerini kullanarak ara nokta belirtirseniz 25 ara nokta ekleyebilirsiniz.
  • Tüm ara noktalarınız ara durak türünde olmalıdır. Ara noktalarınızın hiçbiri üzerinden türde olamaz.

  • Alan maskesine routes.optimizedIntermediateWaypointIndex eklemeniz gerekir.

  • İsteğinizde 25 veya daha fazla ara nokta varsa aşağıdaki koşulların da sağlanması gerekir:

    • Tüm ara noktalar arasındaki toplam düz çizgi mesafesi 1.000 km'den az olmalıdır. Bu mesafe hem başlangıç hem de varış noktasını kapsar.

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