Alternatif rotalar alma

Avrupa Ekonomik Alanı (AEA) geliştiricileri

Routes API, varsayılan olarak varsayılan rotayı döndürür. Bu rota genellikle başlangıç noktasından varış noktasına giden en hızlı rotadır. Alternatif rotalar istediğinizde API, varsayılan rotayla birlikte en fazla üç rota döndürür. Müşterileriniz daha sonra gereksinimlerine en uygun rotayı seçebilir.

Alternatif rota isteğinde bulunurken dikkat edilmesi gereken noktalar

Alternatif rotalar isterken aşağıdaki noktaları göz önünde bulundurun:

  • Yalnızca ara yol noktası olmayan rotalar için alternatif rota isteğinde bulunabilirsiniz. Rota, ara yol noktaları belirttiğinde alternatif rotalar istenmesi hataya neden olmaz. Ancak alternatif rota döndürülmez.

  • Yanıtta en fazla üç alternatif rota bulunur. Ancak bazen alternatif rota bulunmadığı için yanıtta yalnızca varsayılan rota yer alır.

  • Alternatif rotaları hesaplamak için ek işlem yapılması gerektiğinden alternatif rota isteğinde bulunmak API'nin yanıt süresini uzatabilir.

Örnek alternatif rota isteği

Alternatif rotalar istemek için computeAlternativeRoutes seçeneğini true olarak ayarlayın. Aşağıdaki örnekte, computeRoutes yöntemi (REST) isteğinde alternatif rotaların nasıl isteneceği gösterilmektedir.

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 amacıyla bir alan maskesi belirtiyorsunuz. Müşteriniz daha sonra bu bilgileri kullanarak hangi rotayı kullanacağını seçebilir. Daha fazla bilgi için Hangi bilgilerin döndürüleceğini seçme başlıklı makaleyi inceleyin.

Örnek alternatif rota yanıtı

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

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

  • Alternatif rotalarda routeLabels özelliği DEFAULT_ROUTE_ALTERNATE değerini içerir.

Bu örnekte, yanıtta varsayılan rota ve iki alternatif rota yer alıyor. 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 çizgileri dahil etme

Kullanıcının rotayı daha kolay seçebilmesi için yanıta her rota için çoklu çizgi ekleyin. Daha sonra her çoklu çizgi haritada gösterilebilir.

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

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

Yanıt daha sonra her rota için çoklu çizgi 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"
      ]
    }
   ]
}