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

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

我想做的是:

我收到一份方向/路径列表(用户必须使用我的应用程序遵循)。 我无法在 map 上绘制路径。方向/路径包含街道名称、街道坐标和街道段。

我不知道如何在 map 上绘制路径/路线并进行路线更新 - 例如,当用户移动(在途中)要移动的图标指示用户的进度或为路线变短了,这真的没那么重要。那么你能指出我可以引用的教程吗?

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

最佳答案

要做到这一点,请按照以下步骤操作

  1. 获取ArrayList标记点列表;

  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等

关于Android:谷歌地图 - 在多个点之间绘制路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22246188/

相关文章:

android - 在登录 android (Kotlin) 时添加扩展

android - 导航栏 fragment 内的 Google Map API 错误

javascript - 在谷歌地图中弹跳一次图钉

android - 如何修复关于 Google map 的新问题 "No virtual method zzts()"(Android)

android - 要有效地使用 proteus,我需要在 node.js 环境中托管文件还是 php 才能正常工作?

java - Android LinearLayout null 异常

java - 在 Activity 中显示谷歌地图(不是MainActivity)

javascript - 如何在 google maps api 中创建带有建议的 "did you mean"链接?

android - phonegap 应用程序 - 处理不同的分辨率

Javascript - Google map - 自动填充