java - 使用 Overlay 连接从 Android 数据库中获取的 GPS 坐标

标签 java android overlay android-mapview

我目前正在构建一个应用程序,允许用户跟踪他们的手机在 Google map 上的位置。此时,当调用 onLocationChanged() 方法时,应用程序会将当前 GPS 经度和纬度存储在数据库中,并调用 animateTo() 方法到达当前位置。

使用 SDK 1.5,我如何使用 Overlay 将这些点与在 MapView 上绘制的彩色线连接起来?

最佳答案

您必须创建自己的类来扩展 ItemizedOverlay 并在绘制方法中在 Canvas 上绘制线条。

例如:

public class MyOverlay extends ItemizedOverlay<OverlayItem> {
    private Projection projection;
    private Point linePaint;
    private Vector<GeoPoint> points;
    public MyOverlay(Drawable defaultMarker) {
        points = new Vector<GeoPoint>()
        linePaint = new Paint();
        //set color, stroke width etc.
    }

    public void addPoint(GeoPoint point) {
        points.addElement(point);
    }

    public void setProjection(Projection projection) {
        this.projection = projection;
    }

    public void draw(Canvas canvas, MapView mapView, boolean shadow) {
        int size = points.size();
        Point lastPoint = new Point();
        projection.toPixels(points.get(0), lastPoint);
        Point point = new Point();
        for(int i = 1; i<size; i++){
            projection.toPixels(points.get(i), point);
            canvas.drawLine(lastPoint.x, lastPoint.y, point.x, point.y, linePaint);
            lastPoint = point;
        }
    }
 }

onLocationChanged()中,您应该通过overlay.addPoint添加新的地理点。 在将显示 MapView 的 Activity 的 onCreate() 中,您必须添加

overlay = new MyOverlay(null); //overlay must be accessible from onLocationChanged
map.getOverlays().add(overlay); //map = (MapView) findViewById(R.id.mapview)

如果该点位于可见矩形中,您还应该在绘制(或其他地方)中进行检查,以提高绘制速度。

我还没有尝试编译这个,所以如果有一些小错误,请不要责怪我。

关于java - 使用 Overlay 连接从 Android 数据库中获取的 GPS 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2478866/

相关文章:

Android wear 不显示通知

java - 光标没有给出任何答案

wpf - WPF 应用程序中 WebBrowser 控件的叠加层?

overlay - Xwindow 父窗口中的透明窗口

java - 如何强制多个 hbm2ddl 执行单独运行?

java - 如何在没有上下文路径的情况下运行我的servlt(Jetty)

java - 安卓中的布局

java - 如果 HashMap 中存在值则登录用户

android - 在 Android 中打开预先存在的 sqlite 数据库的持续问题

javascript - 在全屏覆盖中打印文本?