android - 如何通过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 个航点?
解决方案
没有通过设置的航路点从起点到目的地的方式。第二个网址:
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
所有位置都应该引用雅加达的有效位置。因此,请仔细检查构成 Directions API 请求 URL 的代码。
推荐阅读
- javascript - 点击提交按钮后,会出现一张卡片,显示我提交的信息,但问题是它只显示几秒钟
- continuous-integration - 与使用 trigger 关键字相比,Gitlab-CI api 触发器有什么优势吗?
- java - 键盘出现时使整个布局变小
- c# - 以 xamarin 形式捕获照片
- android - 在 Android Studio 3.5.3 中构建时仅生成 -debug.apk 文件
- c++ - constexpr 指向 C++17 中的 constexpr 静态成员的指针
- flutter - 带有 Flutter 包的 Web 功能:mapbox_gl
- arrays - Flutter如何在堆栈中显示图像
- gnu-make - 使用 gnu make 的给定项目的最佳并行性
- objective-c - 使用(Apple 登录)获取用户的照片 URL