当用户通过多点触控缩放地图它总是拍了拍我的ItemizedOverlay的项目。不需要点击
如何使我的MapView不调用覆盖的,如果的onTap用户实际multitouches为rezooming?
当用户通过多点触控缩放地图它总是拍了拍我的ItemizedOverlay的项目。不需要点击
如何使我的MapView不调用覆盖的,如果的onTap用户实际multitouches为rezooming?
我就遇到了这个问题了。
罗希特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;
}
//...
}
有可能是一个办法
你可以得到当前地图视图缩放级别在你中的onTap方法,如果你发现它与以前的不同,你可以调用return
我希望这能解决您的问题。