Alternatif rotalar isteme

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 bu sayede ihtiyaçlarına en uygun rotayı seçebilir.

Alternatif rota isteğinde bulunurken dikkat edilmesi gereken noktalar

Alternatif rota isteğinde bulunmak için aşağıdaki noktaları göz önünde bulundurun:

  • Yalnızca ara yol işareti içermeyen rotalar için alternatif rota isteğinde bulunabilirsiniz. Rotada ara yol işaretleri belirtildiğinde alternatif rotalar istemek hatayla sonuçlanmaz. Ancak alternatif rota döndürülmez.

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

  • Alternatif rotaların hesaplanması için gereken ek işlem nedeniyle, alternatif rota isteğinde bulunmak API'nin yanıt süresini uzatabilir.

Alternatif rota isteği örneği

Alternatif rota isteğinde bulunmak için computeAlternativeRoutes değerini true olarak ayarlayın. Aşağıdaki örnekte, computeRoutes yönteminde (REST) 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 belirtirsiniz. Müşteriniz bu bilgileri kullanarak hangi rotayı kullanacağını seçebilir. Daha fazla bilgi için Geri döndürülecek bilgileri seçme başlıklı makaleyi inceleyin.

Örnek alternatif rota yanıtı

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

  • Varsayılan rota için routeLabels mülkü DEFAULT_ROUTE içerir.

  • Alternatif rotalar için routeLabels mülkü DEFAULT_ROUTE_ALTERNATE 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 çizgiler ekleme

Kullanıcının rotayı seçmesini kolaylaştırmak için her rotanın çoklu çizgisini yanıta ekleyin. Ardından her bir çok çizgiyi haritada görüntüleyebilirsiniz.

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

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

Ardından yanıt, her rotanın poli çizgisini 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"
      ]
    }
   ]
}