簡體   English   中英

使用Overlay連接從Android中的數據庫獲取的GPS坐標

[英]Connecting GPS coordinates taken from a database in Android using Overlay

我目前正在構建一個應用程序,該應用程序允許用戶跟蹤其手機在Google Map上的位置。 目前,當調用onLocationChanged()方法時,應用程序將當前的GPS經度和緯度存儲在數據庫中,並將animateTo()方法調用到當前位置。

使用SDK 1.5,如何將這些點與使用疊加層在MapView上繪制的彩色線連接起來?

您必須創建自己的擴展ItemizedOverlay的類,並在draw方法中在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()你應該通過增加新的GeoPoint 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)

您還應該在繪制(或其他位置)中檢查該點是否在可見矩形內以提高繪制速度。

我沒有嘗試編譯它,所以如果有一些小錯誤,也不要怪我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM