マップ全体をカバーするItemizedOverlayをどのように作成しますか?
ItemizedOverlayクラスである複数のマーカーがマップ上にあります。
マップ全体をカバーする別のItemizedOverlayを作成して、マーカーではなくマップ自体にあるタッチイベントをインターセプトしたいと思います。このような他のSOの質問を読んだことがありますが、これを行う唯一の方法はItemizedOverlay->onTapを使用することです。問題は、マップ全体をカバーするDrawableマーカーの作成方法がわからないことです。
LinearLayoutのドローアブルを試しましたが、ドローアブル画像をマーカーとして使用できるように見えます。
これが私のコードです
private class BackgroundOverlay<Item extends OverlayItem> extends ItemizedOverlay<OverlayItem>{
private ArrayList<OverlayItem> overlays = new ArrayList<OverlayItem>();
/**
* @param defaultMarker
*/
public BackgroundOverlay(Drawable defaultMarker,Context context) {
super(boundCenterBottom(defaultMarker));
}
@Override
protected OverlayItem createItem(int i) {
return overlays.get(i);
}
@Override
public int size() {
return overlays.size();
}
public void addOverlay(OverlayItem overlay) {
overlays.add(overlay);
populate();
}
protected boolean onTap(int index){
Toast.makeText(getApplicationContext(), "Touched background",Toast.LENGTH_SHORT).show();
return true;
}
}
オーバーレイを作成します
Drawable d=this.getResources().getDrawable(R.layout.full_screen);
BackgroundOverlay<OverlayItem> lay = new BackgroundOverlay<OverlayItem>(d,this);
overlayItem = new OverlayItem(this.mapView.getMapCenter(), "", "");
lay.addOverlay(overlayItem);
mapOverlays.add(lay);
とドローアブルxml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/blue">
</LinearLayout>
前もって感謝します