Skip to content Skip to sidebar Skip to footer

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"