Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:Google地图-在多个点之间绘制路径_Android_Google Maps_Google Maps Api 2 - Fatal编程技术网

Android:Google地图-在多个点之间绘制路径

Android:Google地图-在多个点之间绘制路径,android,google-maps,google-maps-api-2,Android,Google Maps,Google Maps Api 2,我想做的是: 我收到一个方向/路径列表(用户必须使用我的应用程序遵循该列表)。 我在地图上画路径时遇到困难。方向/路径包含街道名称、街道坐标和街道段 我不知道如何在地图上绘制路径/路线并更新路线-例如,当用户移动(在途中)一个图标以指示用户的进度或为路线绘制的线变短时,这其实没什么大不了的。你能给我指一下我可以参考的教程吗 到目前为止,我已经看到了很多,但大多数都是从谷歌地图上获得方向,或者所画的线只是从起点到终点的直线,根本不适合街道。尝试遵循本教程。您应该在用户位置和标记之间绘制。在用户端调

我想做的是:

我收到一个方向/路径列表(用户必须使用我的应用程序遵循该列表)。 我在地图上画路径时遇到困难。方向/路径包含街道名称、街道坐标和街道段

我不知道如何在地图上绘制路径/路线并更新路线-例如,当用户移动(在途中)一个图标以指示用户的进度或为路线绘制的线变短时,这其实没什么大不了的。你能给我指一下我可以参考的教程吗


到目前为止,我已经看到了很多,但大多数都是从谷歌地图上获得方向,或者所画的线只是从起点到终点的直线,根本不适合街道。

尝试遵循本教程。您应该在用户位置和标记之间绘制。在用户端调用函数onLocationChange以获取实际位置并重新绘制线路

遵循以下步骤: 这会有帮助的。
您只需解析点击Google Directions API后收到的数据即可实现此目的,请遵循以下步骤

  • 获取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;
    }
    
    私有列表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等


  • 嗯,我想你不明白这个问题。我不想用谷歌地图绘制地图,我希望路线是由给定的点绘制的。下面是一个如何在地图上绘制路线的示例。抽签部分是最有用答案的最后部分。