Authored by Thomas Rasch

o Zoom out with a two-finder single-tap

... ... @@ -14,6 +14,7 @@
// points are in the mapview coordinate space
- (void)mapTiledLayerView:(RMMapTiledLayerView *)aTiledLayerView singleTapAtPoint:(CGPoint)aPoint;
- (void)mapTiledLayerView:(RMMapTiledLayerView *)aTiledLayerView doubleTapAtPoint:(CGPoint)aPoint;
- (void)mapTiledLayerView:(RMMapTiledLayerView *)aTiledLayerView twoFingerSingleTapAtPoint:(CGPoint)aPoint;
- (void)mapTiledLayerView:(RMMapTiledLayerView *)aTiledLayerView twoFingerDoubleTapAtPoint:(CGPoint)aPoint;
- (void)mapTiledLayerView:(RMMapTiledLayerView *)aTiledLayerView longPressAtPoint:(CGPoint)aPoint;
... ...
... ... @@ -57,11 +57,16 @@
twoFingerDoubleTapRecognizer.numberOfTapsRequired = 2;
twoFingerDoubleTapRecognizer.numberOfTouchesRequired = 2;
UITapGestureRecognizer *twoFingerSingleTapRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerSingleTap:)] autorelease];
twoFingerSingleTapRecognizer.numberOfTouchesRequired = 2;
[twoFingerSingleTapRecognizer requireGestureRecognizerToFail:twoFingerDoubleTapRecognizer];
UILongPressGestureRecognizer *longPressRecognizer = [[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)] autorelease];
[self addGestureRecognizer:singleTapRecognizer];
[self addGestureRecognizer:doubleTapRecognizer];
[self addGestureRecognizer:twoFingerDoubleTapRecognizer];
[self addGestureRecognizer:twoFingerSingleTapRecognizer];
[self addGestureRecognizer:longPressRecognizer];
return self;
... ... @@ -106,6 +111,12 @@
[delegate mapTiledLayerView:self singleTapAtPoint:[recognizer locationInView:mapView]];
}
- (void)handleTwoFingerSingleTap:(UIGestureRecognizer *)recognizer
{
if ([delegate respondsToSelector:@selector(mapTiledLayerView:twoFingerSingleTapAtPoint:)])
[delegate mapTiledLayerView:self twoFingerSingleTapAtPoint:[recognizer locationInView:mapView]];
}
- (void)handleLongPress:(UILongPressGestureRecognizer *)recognizer
{
if (recognizer.state != UIGestureRecognizerStateBegan) return;
... ...
... ... @@ -104,6 +104,7 @@ typedef enum {
BOOL _delegateHasDoubleTapOnMap;
BOOL _delegateHasDoubleTapTwoFingersOnMap;
BOOL _delegateHasSingleTapOnMap;
BOOL _delegateHasSingleTapTwoFingersOnMap;
BOOL _delegateHasLongSingleTapOnMap;
BOOL _delegateHasTapOnAnnotation;
BOOL _delegateHasDoubleTapOnAnnotation;
... ...
... ... @@ -284,6 +284,7 @@
_delegateHasDoubleTapOnMap = [delegate respondsToSelector:@selector(doubleTapOnMap:at:)];
_delegateHasDoubleTapTwoFingersOnMap = [delegate respondsToSelector:@selector(doubleTapTwoFingersOnMap:at:)];
_delegateHasSingleTapOnMap = [delegate respondsToSelector:@selector(singleTapOnMap:at:)];
_delegateHasSingleTapTwoFingersOnMap = [delegate respondsToSelector:@selector(singleTapTwoFingersOnMap:at:)];
_delegateHasLongSingleTapOnMap = [delegate respondsToSelector:@selector(longSingleTapOnMap:at:)];
_delegateHasTapOnAnnotation = [delegate respondsToSelector:@selector(tapOnAnnotation:onMap:)];
... ... @@ -1053,6 +1054,14 @@
[delegate doubleTapTwoFingersOnMap:self at:aPoint];
}
- (void)mapTiledLayerView:(RMMapTiledLayerView *)aTiledLayerView twoFingerSingleTapAtPoint:(CGPoint)aPoint
{
[self zoomOutToNextNativeZoomAt:aPoint animated:YES];
if (_delegateHasSingleTapTwoFingersOnMap)
[delegate singleTapTwoFingersOnMap:self at:aPoint];
}
- (void)mapTiledLayerView:(RMMapTiledLayerView *)aTiledLayerView longPressAtPoint:(CGPoint)aPoint
{
if (_delegateHasLongSingleTapOnMap)
... ...
... ... @@ -55,6 +55,7 @@
- (void)doubleTapOnMap:(RMMapView *)map at:(CGPoint)point;
- (void)doubleTapTwoFingersOnMap:(RMMapView *)map at:(CGPoint)point;
- (void)singleTapOnMap:(RMMapView *)map at:(CGPoint)point;
- (void)singleTapTwoFingersOnMap:(RMMapView *)map at:(CGPoint)point;
- (void)longSingleTapOnMap:(RMMapView *)map at:(CGPoint)point;
- (void)tapOnAnnotation:(RMAnnotation *)annotation onMap:(RMMapView *)map;
... ...