我想做的是:
我收到一份方向/路径列表(用户必须使用我的应用程序遵循)。 我无法在 map 上绘制路径。方向/路径包含街道名称、街道坐标和街道段。
我不知道如何在 map 上绘制路径/路线并进行路线更新 - 例如,当用户移动(在途中)要移动的图标指示用户的进度或为路线变短了,这真的没那么重要。那么你能指出我可以引用的教程吗?
到目前为止,我已经看到了很多,但大多数都是从谷歌地图上获取方向,或者绘制的线只是从起点到终点的直线,根本不适合街道。
最佳答案
要做到这一点,请按照以下步骤操作
获取ArrayList标记点列表;
为其创建标记
单一路径,
LatLng origin = markerPoints.get(0); LatLng dest = markerPoints.get(1); // Getting URL to the Google Directions API String url = getDirectionsUrl(origin, dest); DownloadTask downloadTask = new DownloadTask(); // Start downloading json data from Google Directions API downloadTask.execute(url);
对于多个目标路径,例如A-B-D-C等
private List<String> getDirectionsUrl(ArrayList<LatLng> markerPoints) { List<String> mUrls = new ArrayList<>(); if (markerPoints.size() > 1) { String str_origin = markerPoints.get(0).latitude + "," + markerPoints.get(0).longitude; String str_dest = markerPoints.get(1).latitude + "," + markerPoints.get(1).longitude; String sensor = "sensor=false"; String parameters = "origin=" + str_origin + "&destination=" + str_dest + "&" + sensor; String output = "json"; String url = "https://maps.googleapis.com/maps/api/directions/" + output + "?" + parameters; mUrls.add(url); for (int i = 2; i < markerPoints.size(); i++)//loop starts from 2 because 0 and 1 are already printed { str_origin = str_dest; str_dest = markerPoints.get(i).latitude + "," + markerPoints.get(i).longitude; parameters = "origin=" + str_origin + "&destination=" + str_dest + "&" + sensor; url = "https://maps.googleapis.com/maps/api/directions/" + output + "?" + parameters; mUrls.add(url); } } return mUrls; }
调用上面的方法
List<String> urls = getDirectionsUrl(markerPoints); if (urls.size() > 1) { for (int i = 0; i < urls.size(); i++) { String url = urls.get(i); DownloadTask downloadTask = new DownloadTask(); // Start downloading json data from Google Directions API downloadTask.execute(url); } } }
上面的代码会要求创建多条路径,比如A-B、B-D、D-C等
关于Android:谷歌地图 - 在多个点之间绘制路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22246188/