【问题标题】:Android: Google Maps - draw path between multiple pointsAndroid:谷歌地图 - 在多个点之间绘制路径
【发布时间】:2014-03-07 09:27:40
【问题描述】:

我想做的是这样的:

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

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

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

【问题讨论】:

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


    【解决方案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】:

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

      【讨论】:

      • 嗯,我想你没有理解这个问题。我不想使用谷歌地图绘制地图,我希望通过给定点绘制路线。
      • 这里是一个如何在地图上绘制路线的例子。抽奖部分位于最有用答案的最后。 stackoverflow.com/questions/14444228/…
      【解决方案3】:

      关注这个:Android Google Map V3 PolyLine cannot be drawn 它会有所帮助。 您只需要解析点击 Google Directions API 后收到的数据

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-27
        • 2017-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-15
        相关资源
        最近更新 更多