當用戶通過多點觸控縮放地圖它總是拍了拍我的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
我希望這能解決您的問題。