【问题标题】:Draw a path following your location on Google Maps for Android在 Android 版 Google 地图上沿着您的位置绘制路径
【发布时间】:2011-05-06 16:26:11
【问题描述】:
我正在开发一个应用程序,当位置发生变化时,我需要在 Google 地图上绘制路径以显示用户所在的位置。我曾尝试使用 MyLocationOverlay 类,认为我可以重写绘制位置的方法,但我未能成功确定要重写的方法。此外,每次绘制位置时,MyLocationOverlay 似乎都会绘制一张新地图。我目前正在使用 ItemizedOverlay 并且每次位置更改时都会在列表中添加一个点。这行得通,当我走路时我会得到一条虚线的路径,但我真的很想要一条实心的路径。有什么建议吗?
我也看到了这个post,但我无法让它工作。您不需要叠加层才能将其显示在地图上吗?
【问题讨论】:
标签:
java
android
google-maps
【解决方案1】:
我认为最简单的方法是继承 Overlay 类,然后覆盖 draw 方法。 draw 方法非常开放,绘制路径应该不会太难。示例如下所示:
public class PathOverlay extends Overlay{
private List<GeoPoint> gpoints;
public PathOverlay(List<GeoPoint> gpoints){
this.gpoints = gpoints;
}
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when)
{
List<Point> mpoints = new ArrayList<Point>();
// Convert to a point that can be drawn on the map.
for(GeoPoint g : gpoints){
Point tpoint = new Point();
mapView.getProjection().toPixels(g, tpoint);
mpoints.add(tpoint);
}
Path path = new Path();
// Create a path from the points
path.moveTo(mpoints.get(0).x, mpoints.get(0).y);
for(Point p : mpoints){
path.lineTo(p.x, p.y);
}
Paint paint = new Paint();
paint.setARGB(255, 255, 0, 0);
paint.setStyle(Style.STROKE);
// Draw to the map
canvas.drawPath(path,paint);
return true;
}
}
然后可以将此类的对象添加到 MapView.getOverlays() 返回的列表中以添加到地图中。