Alternatif rotalar isteme

Routes API, varsayılan olarak default (varsayılan) rotasını döndürür. Bu işlem genellikle kalkış noktasından hedefe kadar en hızlı rota. İstekte bulunduğunuzda alternatif rotalar içeriyorsa API, varsayılan rotayla birlikte en fazla üç rota döndürür. yol gösterir. 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 olmayan rotalar için alternatif rotalar isteyebilirsiniz ara hedefler. Rota belirtildiğinde alternatif rotalar isteme ara noktalar hataya neden olmaz. Ancak bunun yerine döndürülmüştür.

  • Yanıt en fazla üç alternatif rota içerir. Ancak, bazen alternatif bir yol da olmayabilir. Bu nedenle yanıt varsayılan rotadır.

  • Alternatif hesaplamaları hesaplamak için gereken ek işlem alternatif rotalar istemek yanıt süresini uzatabilir API.

Örnek alternatif rota isteği

Alternatif rotalar istemek için computeAlternativeRoutes değerini true olarak ayarlayın. İlgili içeriği oluşturmak için kullanılan aşağıdaki örnekte, computeRoutes yöntemi (REST) isteğiyle yapılabilir.

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, bir alan maskesi belirtirsiniz. Böylece yanıt yalnızca Her rota için duration, distanceMeters, ve routeLabels özellikleri. Sizin Müşteri, bu bilgileri kullanarak hangi rotayı alacağını seçebilir. Daha fazla Hangi bilgileri iade edeceğinizi seçme başlıklı makaleye bakın.

Örnek alternatif rota yanıtı

Yanıtta erişimi tanımlamak için routeLabels dizi özelliğini kullanın rota:

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

  • Alternatif rotalar için routeLabels özelliği DEFAULT_ROUTE_ALTERNATE.

Bu örnekte, yanıt varsayılan yolu ve iki alternatif gösterir. duration ve distanceMeters özelliklerinin değerlerine dikkat edin her rota için farklıdır:

{
  "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 rotayı seçmesini kolaylaştırmak için çoklu çizgi oluşturun. Ardından her çoklu çizgiyi harita üzerinde görüntüleyin.

Ç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"
      ]
    }
   ]
}