Alternatif rotalar isteme

Varsayılan olarak Routes API, varsayılan rotayı döndürür. Bu, genellikle başlangıç noktasından hedefe olan en hızlı rotadır. Alternatif rotalar istediğinizde API, varsayılan rotayla birlikte en fazla üç rota döndürür. Bu sayede müşterileriniz, gereksinimlerine en uygun rotayı seçebilir.

Alternatif rotalar isterken dikkat edilmesi gereken noktalar

Alternatif rotalar istemek için aşağıdaki noktaları göz önünde bulundurun:

  • Yalnızca ara noktaları olmayan rotalar için alternatif rotalar isteyebilirsiniz. Rota ara ara noktalar belirttiğinde alternatif rotalar istemek bir hataya neden olmaz. Ancak, alternatif rotalar döndürülmez.

  • Yanıt en fazla üç alternatif rota içerebilir. Ancak bazen alternatif rota olmadığından yanıt yalnızca varsayılan rotayı içerir.

  • Alternatif rotaları hesaplamak için gereken ek işlemler nedeniyle, alternatif rotalar istemek API'nin yanıt süresini artırabilir.

Örnek alternatif rota isteği

Alternatif rotalar istemek için computeAlternativeRoutes konumunu true olarak ayarlayın. Aşağıdaki örnek, bir computeRoutes yöntem (REST) isteğinde nasıl alternatif rota isteyeceğini gösterir.

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude":42.340173523716736,
        "longitude":-71.05997968330408
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude":42.075698891472804,
        "longitude": -72.59806562080408
      }
    }
  },
  "travelMode": "DRIVE",
  "routingPreference":"TRAFFIC_AWARE",
  "computeAlternativeRoutes": true
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Bu örnekte, yanıtın her rota için yalnızca duration, distanceMeters, ve routeLabels özelliklerini içermesi için bir alan maskesi belirtirsiniz. Müşteriniz bu bilgileri kullanarak hangi rotayı takip edeceğini seçebilir. Daha fazla bilgi için Döndürülecek bilgileri seçme bölümüne bakın.

Örnek alternatif rotalar yanıtı

Yanıtta, erişim rotasını tanımlamak için routeLabels dizisi özelliğini kullanın:

  • Varsayılan rota için routeLabels özelliği, DEFAULT_ROUTE değerini içerir.

  • routeLabels özelliği, alternatif rotalar için DEFAULT_ROUTE_ALTERNATE değerini içerir.

Bu örnekte yanıt, varsayılan rotayı ve iki alternatif rotayı içerir. duration ve distanceMeters özelliklerinin değerlerinin her rota için farklı olduğuna dikkat edin:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}

Yanıta çoklu çizgi ekle

Kullanıcının rotayı seçmesini kolaylaştırmak için yanıta her rotanın çoklu çizgisini ekleyin. Daha sonra, her bir çoklu çizgiyi harita üzerinde görüntüleyebilirsiniz.

Çoklu çizgiyi eklemek için alan maskesine routes.polyline ekleyin:

-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'

Yanıt, her rota için çoklu çizgiyi içerir:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "polyline": {
        "encodedPolyline": "mrlaGtavpLPLBTm…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "polyline": {
        "encodedPolyline": "DmEd`@e@pCo@pCs@z…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "polyline": {
        "encodedPolyline": "FVLL|Af@HPAV…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}