在Android中步行/驾车时,更新位置标记并在Google Maps V2上绘制路径

时间:2013-04-03 15:08:49

标签: android google-maps

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

3 个答案:

答案 0 :(得分:1)

如前所述,您需要使用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);

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

答案 1 :(得分:0)

您可以使用Google地图中的折线。它需要位置并在地图上绘制它们。

答案 2 :(得分:0)

扩展OnMyLocationChangeListener。

在map-setup中使用它:

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;
}