MapView
経度と緯度のパラメーターを正しく渡すことで、現在の場所を取得しています。しかし、その画像にフリーハンドのようにペイント(つまり、名前や線など)を描きたいですMapView
。MapView
それから、ユーザーによるそのペイントの画像の全体像が 必要です。これどうやってするの?
以下に示すように、ユーザーが自分のパスを別のユーザーに送信すると...
MapView
経度と緯度のパラメーターを正しく渡すことで、現在の場所を取得しています。しかし、その画像にフリーハンドのようにペイント(つまり、名前や線など)を描きたいですMapView
。MapView
それから、ユーザーによるそのペイントの画像の全体像が 必要です。これどうやってするの?
以下に示すように、ユーザーが自分のパスを別のユーザーに送信すると...
オーバーレイを使用します。 この例のオーバーレイを参照してください
コード例は次のとおりです。
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();
私があなたの質問を正しく理解していれば、ドローイングの動きをキャプチャしてマップ上に表示したいと考えています。
手順:
onTouchEvent()
して、ユーザーがタップして指を動かした位置 (x,y) を取得し、それらを Geopoint に変換して、その Geopoint を Path オブジェクトに追加します。呼び出しinvalidate()
てマップを再描画します。onDraw()
上記のパスビルドを描画するようにオーバーライドしますcanvas.drawPath()
幸運を。