【发布时间】:2011-05-06 07:35:19
【问题描述】:
您将如何创建覆盖整个地图的 ItemizedOverlay?
我在地图上有多个标记,它们是 ItemizedOverlay 类。
我想创建另一个覆盖整个地图的 ItemizedOverlay,以拦截不在我的标记上而是在地图本身上的触摸事件。我读过类似one 的其他 SO 问题,唯一的方法是通过 ItemizedOverlay->onTap。问题是我不知道如何创建覆盖整个地图的可绘制标记。
我已经尝试过 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>
提前致谢
【问题讨论】:
-
为什么要中断没有标记区域的触摸事件?
-
我使用背景触摸来关闭用户点击标记时显示的弹出视图。
标签: android android-mapview itemizedoverlay