How To Get If Pinch Zoom In Is Performed Or Pinch Zoom Out In Android
I'm working on an application in which I have used custom mapView, and on that mapView if user pinch(two finger gesture), the camera position for map should change accordingly, for
Solution 1:
As pskink recommended, you need ScaleGestureDetector
object, which determines zoom "direction". Something like that:
ScaleGestureDetectormScaleDetector=newScaleGestureDetector(getContext(),
newScaleGestureDetector.SimpleOnScaleGestureListener() {
privatefloatscaleFactor=1f;
@OverridepublicbooleanonScale(ScaleGestureDetector detector) {
// store scale factor for detect zoom "direction" on end
scaleFactor = detector.getScaleFactor();
returntrue;
}
@OverridepublicvoidonScaleEnd(ScaleGestureDetector detector) {
floatcurrentZoom= mGoogleMap.getCameraPosition().zoom;
if (scaleFactor > 1) {
// zoom in detected
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mZoomCenter, currentZoom + 1));
} elseif (scaleFactor < 1) {
// zoom out detected
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mZoomCenter, currentZoom - 1));
}
super.onScaleEnd(detector);
}
});
And you can use it in your EnhanchedMapView.dispatchTouchEvent()
easily:
...
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
// just call .onTouchEvent() on your ScaleGestureDetector object
mScaleDetector.onTouchEvent(event);
switch (event.getAction() & MotionEvent.ACTION_MASK) {
...
NB! You need to disable GoogleMap
zoom gesture
@OverridepublicvoidonMapReady(GoogleMap googleMap) {
mGoogleMap = googleMap;
mGoogleMap.getUiSettings().setZoomGesturesEnabled(false);
...
}
and never enable it.
Post a Comment for "How To Get If Pinch Zoom In Is Performed Or Pinch Zoom Out In Android"