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

时间:2014-03-07 09:27:40

标签: android google-maps google-maps-api-2

我想做的是:

我收到一个路线/路径列表(用户必须使用我的应用关注)。 我在地图上绘制路径时遇到问题。方向/路径包含街道名称,街道坐标和街道段。

我无法弄清楚如何在地图上绘制路径/路线并使路线更新 - 例如当用户移动(途中)时,移动一个图标以指示用户的进度或为此绘制的线路线越来越短,这真的无关紧要。所以你能指点我可以参考的教程吗?

到目前为止,我已经看过很多,但是大多数人都会从Google地图中获取路线,或者绘制的线条只是从起点到终点的直线,并且根本不适合街道。

3 个答案:

答案 0 :(得分:1)

尝试遵循本教程。您应该在用户位置和标记之间绘制。在用户端调用函数onLocationChange以获取实际位置并重绘该行。 http://wptrafficanalyzer.in/blog/driving-route-from-my-location-to-destination-in-google-maps-android-api-v2/

答案 1 :(得分:1)

要实现此目的,请执行以下步骤

  1. 获取ArrayList markerPoints列表;

  2. 为其创建标记

  3. 单一路径,

     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);
    
  4. 用于多个目标路径,例如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;
    }
    
  5. 调用上述方法
       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等

答案 2 :(得分:0)

请按照以下步骤操作:Android Google Map V3 PolyLine cannot be drawn 这会有所帮助。 您只需要在点击Google Directions API

后解析收到的数据