diff --git a/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapModule.java b/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapModule.java index 02c43b2fb..2cec24eba 100644 --- a/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapModule.java +++ b/lib/android/src/main/java/com/airbnb/android/react/maps/AirMapModule.java @@ -12,6 +12,7 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.bridge.WritableMap; import com.facebook.react.bridge.WritableNativeMap; import com.facebook.react.uimanager.NativeViewHierarchyManager; import com.facebook.react.uimanager.UIBlock; diff --git a/lib/ios/AirMaps/AIRMapMarker.m b/lib/ios/AirMaps/AIRMapMarker.m index 8be20784e..9fc6c96f9 100644 --- a/lib/ios/AirMaps/AIRMapMarker.m +++ b/lib/ios/AirMaps/AIRMapMarker.m @@ -14,8 +14,11 @@ #import #import #import +NSInteger const CALLOUT_OPEN_ZINDEX_BASELINE = 999; @implementation AIREmptyCalloutBackgroundView +bool _calloutIsOpen = NO; +NSInteger _zIndexBeforeOpen = 0; @end @implementation AIRMapMarker { @@ -137,6 +140,9 @@ - (void)fillCalloutView:(SMCalloutView *)calloutView - (void)showCalloutView { + _calloutIsOpen = YES; + [self setZIndex:_zIndexBeforeOpen]; + MKAnnotationView *annotationView = [self getAnnotationView]; [self setSelected:YES animated:NO]; @@ -222,6 +228,8 @@ - (void)_handleTap:(UITapGestureRecognizer *)recognizer { - (void)hideCalloutView { + _calloutIsOpen = NO; + [self setZIndex:_zIndexBeforeOpen]; // hide the callout view [self.map.calloutView dismissCalloutAnimated:YES]; @@ -298,8 +306,9 @@ - (void)setPinColor:(UIColor *)pinColor - (void)setZIndex:(NSInteger)zIndex { - _zIndex = zIndex; - self.layer.zPosition = _zIndex; + _zIndexBeforeOpen = zIndex; + _zIndex = _calloutIsOpen ? zIndex + CALLOUT_OPEN_ZINDEX_BASELINE : zIndex; + self.layer.zPosition = zIndex; } @end