当用户通过多点触控缩放地图时,总是会点击我的ItemizedOverlay中的项目。
如果用户实际上是多重进行重新连接,如何让我的MapView不调用覆盖的onTap?
答案 0 :(得分:1)
可能有办法
您可以在onTap方法中获取当前地图视图的缩放级别,如果您发现它与上一个不同,则可以调用return
我希望这能解决你的问题。
答案 1 :(得分:0)
我也遇到了这个问题。
rohit mandiwal的想法很好,但是如果用户放大然后缩小到同一级别,可能仍会发生不需要的点击事件。
解决方案是检测onTouchEvent()
而不是onTap()
中的缩放级别更改。我试过这个,似乎工作。
这是我的代码:
private class LocationOverlay extends ItemizedOverlay<OverlayItem> {
private int lastZoomLevel;
private boolean onTapAllowed;
public LocationOverlay(...) {
//...
lastZoomLevel=mapView.getZoomLevel();
}
@Override
public boolean onTouchEvent(MotionEvent motionEvent, MapView mapView) {
if (mapView.getZoomLevel()!=lastZoomLevel) {
lastZoomLevel=mapView.getZoomLevel();
onTapAllowed=false;
}
return super.onTouchEvent(motionEvent, mapView);
}
@Override
public boolean onTap(GeoPoint geoPoint, MapView mapView) {
if (!onTapAllowed) {
Log.d("onTap","onTap cancelled, zoom level changed...");
lastZoomLevel=mapView.getZoomLevel();
onTapAllowed=true;
return true;
}
//...
}