Как нарисовать маршрут от А до Б через несколько точек в GoogleMaps? - PullRequest
0 голосов
/ 04 июня 2019

Представьте, что я хочу пройти от А до Б через 3 путевые точки. У меня есть этот код, который формирует URL-адрес Google Maps:

 fun getMapsApiDirectionsUrl(): String {
        val origin = "origin=" + currentLocation.latitude + "," + currentLocation.longitude;
        val waypoints = "waypoints=optimize:true|" + loc1.latitude + "," + loc1.longitude + "|" + loc2.latitude + "," + loc2.longitude + "|" + loc3.latitude + "," + loc3.longitude
        val destination = "destination=" + loc4.latitude + "," + loc4.longitude
        val sensor = "sensor=false"
        val key = "key="+API_KEY;
        val params = "$origin&$waypoints&$destination&$sensor&$key"
        val output = "json"

        val url = "https://maps.googleapis.com/maps/api/directions/" + output + "?" + params
        System.out.println("map url: "+url)
        return url
    }

Открытие URL в браузере дало следующее:

{"route": [], "status": "ZERO_RESULTS"}

Но если я использую только 1 путевую точку (вместо 3, как показано выше), направление будет правильно отображаться в 1 большом JSON, например:

{"geocoded_waypoints": [ { "geocoder_status": "ОК", "place_id": "ChIJH87yjIXxaS4R5_ww8ZCufeo", "types": ["одежда_стор", "учреждение", "точка_заинтересованности", "магазин"] }, { "geocoder_status": "ОК", "place_id": "ChIJ1wVXzIDxaS4RkyUYgf3ZV0c", "types": ["street_address"] }, { "geocoder_status": "ОК", "place_id": "ChIJrfOSGBXxaS4Ro595K_5ClCg", "types": ["учреждение", "больница", "point_of_interest"] }], "маршруты": [ { "границы": { "к северо-востоку" : { "lat": -6.2399232, "lng": 106.8161445 }, "юго-запад": { "lat": -6.2684858, "lng": 106,7929824 } }, «авторские права»: «Картографические данные © Google 2019», "ноги": [ { "расстояние": { «текст»: «1,2 км», «значение»: 1205 }, "продолжительность": { «текст»: «4 минуты», «значение»: 254 }, "end_address": "Jl. Kemang Raya No.54, RT.8 / RW.2, Bangka, Kec. Mampang Prpt., Кота Джакарта Селатан, Дера Хусус Ibukota Jakarta 12730, Индонезия ", "end_location": { "lat": -6.263443499999999, "lng": 106.8160131 ....

Значит ли это, что я могу использовать только 1 путевую точку?

1 Ответ

0 голосов
/ 05 июня 2019

Нет пути от пункта отправления до пункта назначения через заданные путевые точки. Второй URL:

https://maps.googleapis.com/maps/api/directions/json?origin=-6.2684059,106.8103103&waypoints=optimize:true%7C-6.263459,106.815903%7C-6.240607,106.792831%7C-6.240607,106.792831&destination=-6.235759,6.823277&sensor=false&key=<YOUR_KEY>

содержит недоступный пункт назначения destination=-6.235759,6.823277 в Атлантическом океане. Вероятно, пункт назначения должен быть 106.823277 вместо 6.823277: destination=-6.235759,106.823277, если все позиции должны относиться к действительным местам в Джакарте. Итак, дважды проверьте код, который составляет URL для запроса API Directions.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...