2

MapView経度と緯度のパラメーターを正しく渡すことで、現在の場所を取得しています。しかし、その画像にフリーハンドのようにペイント(つまり、名前や線など)を描きたいですMapViewMapViewそれから、ユーザーによるそのペイントの画像の全体像が 必要です。これどうやってするの?

以下に示すように、ユーザーが自分のパスを別のユーザーに送信すると...

4

3 に答える 3

2

オーバーレイを使用します。 この例のオーバーレイを参照してください

コード例は次のとおりです。

public class overlayGeoPoints  extends Overlay {

    private GeoPoint geoPoint;
    private int radius = 20;

    @Override
    public boolean onTap(GeoPoint geoPoint, MapView mapView){
          this.geoPoint = geoPoint;
    }

    @Override
    public void draw(Canvas canvas, MapView mapView, boolean shadow) {

        // put your logic here to draw on the overlay
        // ie draw a circle
        Projection projection = mapView.getProjection();
        Point point = new Point();
        projection.toPixels(geoPoint, point);

        int px = point.x;
        int py = point.y;
        Paint paint = new Paint(paintSecondary.ANTI_ALIAS_FLAG);
        hl.setColor(intColor);
        canvas.drawCircle(px, py, radius, paint);
        canvas.save();

    }
}

このオーバーレイをマップに追加するだけです。

編集

ステップバイステップ(一般)は次のとおりです。

マップオブジェクト(マップ)が作成された後

// get a handle to the map overlays
List<Overlay> overlays = mapView.getOverlays();

// reset overlays as necessary
//overlays.clear();

// create your custom overly class
overlayGeoPoints olay = new overlayGeoPoints();

// append overlay to map overlays
overlays.add(olay);

// tell the map object to redraw
mapView.postInvalidate();
于 2012-10-11T12:26:29.930 に答える
1

私があなたの質問を正しく理解していれば、ドローイングの動きをキャプチャしてマップ上に表示したいと考えています。

手順:

  • Overlay を拡張する新しいクラスを作成する
  • オーバーライドonTouchEvent()して、ユーザーがタップして指を動かした位置 (x,y) を取得し、それらを Geopoint に変換して、その Geopoint を Path オブジェクトに追加します。呼び出しinvalidate()てマップを再描画します。
  • onDraw()上記のパスビルドを描画するようにオーバーライドしますcanvas.drawPath()
  • 最後に、オーバーレイを mapView.getOverlays() の最後に追加して、このオーバーレイが最初にタッチ イベントを取得するようにします。

幸運を。

于 2012-10-11T13:41:50.503 に答える