【问题标题】:Update Location Marker and draw path on Google Maps V2 while walking/driving in Android在 Android 中步行/驾驶时更新位置标记并在 Google Maps V2 上绘制路径
【发布时间】:2013-04-03 15:08:49
【问题描述】:

我想在开车或步行时在 Google Maps V2 上绘制路径,但我找不到任何在线资源来帮助我解决这个问题。 我正在使用 onLocationChanged 侦听器方法。 谢谢。

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    扩展 OnMyLocationChangeListener。

    在地图设置中使用它:

    mMap.setOnMyLocationChangeListener(this);
    

    覆盖这个:

    @Override
    public void onMyLocationChange(Location location) {
              /* your code here */
    }
    

    例如,代码可能是这样的(未测试):

        Location lastLocationloc=null;
    @Override
    public void onMyLocationChange(Location location) {
        if(lastLocationloc == null)
            lastLocationloc = location;
        LatLng lastLatLng= locationToLatLng(lastLocationloc);
        LatLng thisLatLng= locationToLatLng(location);
        mMap.addPolyline(new PolylineOptions().add(lastLatLng).add(thisLatLng).width(3).color(Color.RED));
        lastLocationloc = location;
    }
    

    locationToLatLng 可能如下所示:

    public static LatLng locationToLatLng(Location loc) {
        if(loc != null)
            return new LatLng(loc.getLatitude(), loc.getLongitude());
        return null;
    }
    

    【讨论】:

      【解决方案2】:

      正如这里所说,您需要使用Polyline 对象,您可以收集所有路径点(LatLng 位置)并使用循环添加地图上的所有道路:

      Polyline newPolyline;
      GoogleMap mMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 
      PolylineOptions rectLine = new PolylineOptions().width(3).color(Color.RED);
      
      for(int i = 0 ; i < directionPoints.size() ; i++) 
      {          
          rectLine.add(directionPoints.get(i));
      }
      newPolyline = mMap.addPolyline(rectLine);
      

      或在每个位置更新中添加一行,因此将此代码放在onLocationChanged

      Polyline newPolyline;
      PolylineOptions rectLine = new PolylineOptions().width(3).color(Color.RED);
      rectLine.add(point); //your received location.
      newPolyline = mMap.addPolyline(rectLine);
      

      要更新标记的位置,只需删除旧标记并创建一个新标记(使用新坐标)即可。

      【讨论】:

      • 嗨 Emil Adz,感谢您的回答,但我需要在行走/驾驶时画线,当我移动时,线应该实时绘制....我使用 onLocationChanged 方法有什么办法吗?可以匹配我的场景。
      • 正如我在第二部分所说的:“在每个位置更新上添加一行”,因此将第二个 sn-p 放入 onLocationChanged 方法中
      • @Emil 我有一个类似的问题,除了我是从位置对象的实时流中为标记设置动画而不是绘制折线。
      【解决方案3】:

      您可以使用 Google 地图中的折线。它获取位置并将其绘制在地图上。

      【讨论】:

        猜你喜欢
        • 2012-07-29
        • 1970-01-01
        • 2012-11-09
        • 1970-01-01
        • 1970-01-01
        • 2015-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多