Alternatif rotalar isteme

Varsayılan olarak Routes API, default (varsayılan) rotayı döndürür. Bu genellikle başlangıç noktasından hedefe giden en hızlı rotadır. Alternatif rotalar istediğinizde API, varsayılan rotayla birlikte en fazla üç rota döndürür. Müşterileriniz, ihtiyaçlarına en uygun rotayı seçebilir.

Alternatif rota isterken dikkat edilmesi gereken noktalar

Alternatif rota isterken 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çerir. Ancak bazen alternatif rotalar olmadığından yanıt yalnızca varsayılan rotayı içerir.

  • Alternatif rotaları hesaplamak için gereken ek işleme nedeniyle alternatif rotalar istemek API'nin yanıt süresini uzatabilir.

Örnek alternatif rota isteği

Alternatif rotalar istemek için computeAlternativeRoutes değerini true olarak ayarlayın. Aşağıdaki örnek, computeRoutes yöntemi (REST) isteğinde alternatif rotaların nasıl isteneceğ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çermesini sağlayacak bir alan maskesi belirtirsiniz. Ardından, müşteriniz bu bilgileri kullanarak hangi rotayı izleyeceğini seçebilir. Daha fazla bilgi için Döndürülecek bilgileri seçme bölümüne bakın.

Örnek alternatif rota yanıtı

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

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

  • Alternatif rotalar için routeLabels özelliği, 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 çizgiler dahil et

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

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

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

Ardından 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"
      ]
    }
   ]
}