Android:Google地图-在多个点之间绘制路径
我想做的是: 我收到一个方向/路径列表(用户必须使用我的应用程序遵循该列表)。 我在地图上画路径时遇到困难。方向/路径包含街道名称、街道坐标和街道段 我不知道如何在地图上绘制路径/路线并更新路线-例如,当用户移动(在途中)一个图标以指示用户的进度或为路线绘制的线变短时,这其实没什么大不了的。你能给我指一下我可以参考的教程吗Android:Google地图-在多个点之间绘制路径,android,google-maps,google-maps-api-2,Android,Google Maps,Google Maps Api 2,我想做的是: 我收到一个方向/路径列表(用户必须使用我的应用程序遵循该列表)。 我在地图上画路径时遇到困难。方向/路径包含街道名称、街道坐标和街道段 我不知道如何在地图上绘制路径/路线并更新路线-例如,当用户移动(在途中)一个图标以指示用户的进度或为路线绘制的线变短时,这其实没什么大不了的。你能给我指一下我可以参考的教程吗 到目前为止,我已经看到了很多,但大多数都是从谷歌地图上获得方向,或者所画的线只是从起点到终点的直线,根本不适合街道。尝试遵循本教程。您应该在用户位置和标记之间绘制。在用户端调
到目前为止,我已经看到了很多,但大多数都是从谷歌地图上获得方向,或者所画的线只是从起点到终点的直线,根本不适合街道。尝试遵循本教程。您应该在用户位置和标记之间绘制。在用户端调用函数onLocationChange以获取实际位置并重新绘制线路 遵循以下步骤: 这会有帮助的。
您只需解析点击Google Directions API后收到的数据即可实现此目的,请遵循以下步骤
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);
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;
}
私有列表getDirectionsUrl(ArrayList标记点){
List mUrls=new ArrayList();
if(markerPoints.size()>1){
String str_origin=markerPoints.get(0).纬度+“,”+markerPoints.get(0).经度;
String str_dest=markerPoints.get(1).纬度+“,”+markerPoints.get(1).经度;
字符串sensor=“sensor=false”;
String parameters=“origin=“+str_origin+”&destination=“+str_dest+”&“+传感器;
字符串输出=“json”;
字符串url=”https://maps.googleapis.com/maps/api/directions/“+输出+”?“+参数;
添加(url);
对于(int i=2;i
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);
}
}
}
List url=getDirectionsUrl(标记点);
如果(URL.size()>1){
对于(int i=0;i
上面的代码将调用创建多个路径,如A-B、B-D、D-C等嗯,我想你不明白这个问题。我不想用谷歌地图绘制地图,我希望路线是由给定的点绘制的。下面是一个如何在地图上绘制路线的示例。抽签部分是最有用答案的最后部分。