1

在我的应用程序中,要求是当我触摸地图中的任何位置时,我必须创建一个新的叠加层并用标记显示它,如果我点击任何标记的位置,我必须在气球中显示其详细信息。

我的 ItemizedOverlay 类中编写的 onTap() 和 onTouchEvent() 如下:

@Override
protected boolean onTap(int index) {
    if(!super.onTap(index)) {
        MyOverlayItem<OverlayItem> overlayItem = new MyOverlayItem<OverlayItem>(
            createItem(index).getPoint(), createItem(index).getTitle(), 
            createItem(index).getSnippet(), mapView, activity);
        overlayItem.onTap(createItem(index).getPoint(), mapView);       
    }
    return true;
}

@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView) {
    GeoPoint point = mapView.getProjection().fromPixels(
            (int) event.getX(),
            (int) event.getY());
    addPoint(point);
    return true;
}

MyOverlayItem里面的onTap()如下:

public boolean onTap(GeoPoint point, MapView mapView) {
    createBalloon(); //creates the balloon view.
    return true;
}

我的问题是:

如果我添加此 onTouchEvent(),则不会调用 onTap()。总是有一个新的点被添加。

我怎样才能达到我的要求?我对这两种方法都感到困惑。谁能帮帮我。提前致谢。

4

0 回答 0