0

私は現在、ユーザーが自分の携帯電話がGoogleマップのどこにあったかを追跡できるようにするアプリケーションを構築しています。現在、onLocationChanged()メソッドが呼び出されると、アプリケーションは現在のGPS経度と緯度をデータベースに保存し、animateTo()メソッドを現在の位置に呼び出します。

SDK 1.5を使用して、オーバーレイを使用してMapViewに描画された色付きの線でこれらのポイントを接続するにはどうすればよいですか?

4

1 に答える 1

1

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()を介して新しいジオポイントを追加する必要がありますoverlay.addPoint。MapViewonCreate()が表示されるアクティビティの中で、追加する必要があります

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

描画速度を上げるために、ポイントが表示されている長方形になるかどうかも、描画(または他の場所)でチェックインする必要があります。

私はこれをコンパイルしようとはしていませんので、小さな間違いがあったとしても私を責めないでください。

于 2010-03-19T22:36:40.200 に答える