私は自分のアプリケーションにグーグルマップを実装しました。ItemizedOverlayを拡張してオーバーレイを追加する独自のオーバーレイクラスを作成しました。同じオーバーレイクラスを使用して、地図上の現在の場所を表示するオーバーレイも追加します。
このオーバーレイクラスのonTouchEventは、タッチが行われた場所を判別し、オーバーレイオブジェクトをマップ上の任意の場所に移動できるようにするために使用されます。ただし、これはいくつかの問題を引き起こしています。現在地へのポインタも移動可能になります。この現在位置ポインタを修正したいと思います。
このために、以前に作成したカスタムオーバーレイを拡張する新しいクラスMyNewLocationOverLayを作成しています。私の計画は、onTouchEventメソッドをオーバーライドし、他のオーバーレイにタッチした場合はsuper.onTouchEventを返し、mylocationオーバーレイにタッチした場合はtrueを返すことです。クリックされたオーバーレイを確認するにはどうすればよいですか。私は試した:
public class myOverlayclass extends OverLayClass {
public myOverlayclass(Drawable marker) {
super(marker);
// TODO Auto-generated constructor stub
}
public boolean onTouchEvent(MotionEvent motionEvent, MapView mapView) {
System.out.println("The overlays are*************"+mapView.getOverlays()); //this lists the overlays
return super.onTouchEvent(motionEvent, mapView);
}
}
これを比較して、どのオーバーレイがタッチされたかを見つける必要があります。オーバーレイを比較するにはどうすればよいですか。
if (mapView.getOverlays().contains(mYLocationOverLay))
動作しないようです。