【发布时间】:2013-04-03 15:08:49
【问题描述】:
我想在开车或步行时在 Google Maps V2 上绘制路径,但我找不到任何在线资源来帮助我解决这个问题。 我正在使用 onLocationChanged 侦听器方法。 谢谢。
【问题讨论】:
标签: android google-maps
我想在开车或步行时在 Google Maps V2 上绘制路径,但我找不到任何在线资源来帮助我解决这个问题。 我正在使用 onLocationChanged 侦听器方法。 谢谢。
【问题讨论】:
标签: android google-maps
扩展 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;
}
【讨论】:
正如这里所说,您需要使用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);
要更新标记的位置,只需删除旧标记并创建一个新标记(使用新坐标)即可。
【讨论】:
您可以使用 Google 地图中的折线。它获取位置并将其绘制在地图上。
【讨论】: