0

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

4

3 回答 3

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

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

于 2013-04-04T00:11:44.853 回答
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;
}
于 2013-04-05T12:36:09.250 回答
0

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

于 2013-04-03T18:01:54.413 回答