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çinDEFAULT_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" ] } ] }