在Android的Google地图上绘制跟随您位置的路径

5
我正在开发一个应用程序,需要在谷歌地图上绘制路径以显示用户的位置变化。我尝试使用MyLocationOverlay类,认为可以重写绘制位置的方法,但我无法确定要重写哪个方法。此外,每次绘制位置时,MyLocationOverlay似乎会绘制新地图。目前,我正在使用ItemizedOverlay,并在每次位置变化时向列表中添加一个点。这种方法有效,我可以获得一条虚线路径,但我真的想要一条实线路径。有什么建议吗?
我还看到了这个post,但我无法让它工作。难道不需要叠加层才能将其放在地图上吗?
1个回答

3

我认为最简单的方法是继承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()返回的列表中,以便将它们添加到地图上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接