Routes API, varsayılan olarak başlangıç noktasından varış noktasına giden en hızlı rota olan varsayılan rotayı döndürü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ı belirtirken alternatif rotalar istenmesi hataya neden olmaz. Ancak alternatif rota döndürülmez.
Yanıtta en fazla üç alternatif rota bulunur. Ancak bazen alternatif rotalar 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ğiDEFAULT_ROUTEiçerir.Alternatif rotalarda
routeLabelsözelliğiDEFAULT_ROUTE_ALTERNATEdeğ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ıtı çoklu çizgilerle birlikte gönder
Kullanıcının rotayı seçmesini kolaylaştırmak 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" ] } ] }