首页 > 解决方案 > 如何通过GoogleMaps上的多个点绘制从A到B的路线?

问题描述

想象一下,我想通过 3 个航路点从 A 到 B。我有这个代码,它形成了谷歌地图方向 URL:

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 给出了这个:

{“路线”:[],“状态”:“ZERO_RESULTS”}

但如果我只使用 1 个航路点(而不是上面显示的 3 个),方向将正确显示在 1 个大 JSON 中,如下所示:

{“geocoded_waypoints”:[{“geocoder_status”:“OK”,“place_id”:“ChIJH87yjIXxaS4R5_ww8ZCufeo”,“类型”:[“clothing_store”,“建立”,“point_of_interest”,“store”]},{“geocoder_status” :“OK”,“place_id”:“ChIJ1wVXzIDxaS4RkyUYgf3ZV0c”,“types”:[“street_address”]},{“geocoder_status”:“OK”,“place_id”:“ChIJrfOSGBXxaS4Ro595K_5ClCg”,“types”:[“建立”, “医院”,“point_of_interest”] } ],“路线”:[{“边界”:{“东北”:{“纬度”:-6.2399232,“lng”:106.8161445},“西南”:{“纬度”: -6。2684858, "lng" : 106.7929824 } }, "copyrights" : "地图数据 ©2019 Google", "legs" : [ { "distance" : { "text" : "1.2 km", "value" : 1205 }, " duration" : { "text" : "4 mins", "value" : 254 }, "end_address" : "Jl. Kemang Raya No.54, RT.8/RW.2, Bangka, Kec. Mampang Prpt., Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12730, Indonesia", "end_location" : { "lat" : -6.263443499999999, "lng" : 106.8160131 ...., "value" : 254 }, "end_address" : "Jl. Kemang Raya No.54, RT.8/RW.2, Bangka, Kec. Mampang Prpt., Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12730, Indonesia", “end_location”:{“lat”:-6.263443499999999,“lng”:106.8160131 ...., "value" : 254 }, "end_address" : "Jl. Kemang Raya No.54, RT.8/RW.2, Bangka, Kec. Mampang Prpt., Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12730, Indonesia", “end_location”:{“lat”:-6.263443499999999,“lng”:106.8160131 ....

那么这是否意味着我只能使用 1 个航点?

标签: androidgoogle-mapskotlin

解决方案


没有通过设置的航路点从起点到目的地的方式。第二个网址:

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.8232776.823277如果destination=-6.235759,106.823277所有位置都应该引用雅加达的有效位置。因此,请仔细检查构成 Directions API 请求 URL 的代码。


推荐阅读