diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 139d0d655..d6a53252a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,12 +22,12 @@ Some notes about example app: cd example/ios ; RNMBX11=1 pod update MapboxMaps ``` To build example in this mode on android: - Change `RNMBX11=true` in `example/android/gralde.properties` + Change `RNMBX11=true` in `example/android/gradle.properties` - NewArchitecture/Fabric: ``` cd example/ios ; RCT_NEW_ARCH_ENABLED=1 pod update MapboxMaps ``` - On android change `newArchEnabled=true` in `example/android/gralde.properties` + On android change `newArchEnabled=true` in `example/android/gradle.properties` ### Running example app for Web diff --git a/ios/RNMBX/RNMBXMapView.swift b/ios/RNMBX/RNMBXMapView.swift index a5b00ac27..34248c843 100644 --- a/ios/RNMBX/RNMBXMapView.swift +++ b/ios/RNMBX/RNMBXMapView.swift @@ -1416,6 +1416,32 @@ extension RNMBXMapView { } } +typealias LayerSourceDetails = (source: String?, sourceLayer: String?) + +#if RNMBX_11 +func getLayerSourceDetails(layer: (any Layer)?) -> LayerSourceDetails? { + if let circleLayer = layer as? CircleLayer { + return (circleLayer.source, circleLayer.sourceLayer) + } else if let fillExtrusionLayer = layer as? FillExtrusionLayer { + return (fillExtrusionLayer.source, fillExtrusionLayer.sourceLayer) + } else if let fillLayer = layer as? FillLayer { + return (fillLayer.source, fillLayer.sourceLayer) + } else if let heatmapLayer = layer as? HeatmapLayer { + return (heatmapLayer.source, heatmapLayer.sourceLayer) + } else if let hillshadeLayer = layer as? HillshadeLayer { + return (hillshadeLayer.source, hillshadeLayer.sourceLayer) + } else if let lineLayer = layer as? LineLayer { + return (lineLayer.source, lineLayer.sourceLayer) + } else if let rasterLayer = layer as? RasterLayer { + return (rasterLayer.source, rasterLayer.sourceLayer) + } else if let symbolLayer = layer as? SymbolLayer { + return (symbolLayer.source, symbolLayer.sourceLayer) + } else { + return nil + } +} +#endif + extension RNMBXMapView { func setSourceVisibility(_ visible: Bool, sourceId: String, sourceLayerId: String?) -> Void { let style = self.mapboxMap.style @@ -1424,14 +1450,18 @@ extension RNMBXMapView { let layer = logged("setSourceVisibility.layer", info: { "\(layerInfo.id)" }) { try style.layer(withId: layerInfo.id) } + #if RNMBX_11 - // RNMBX_11_TODO + let sourceDetails = getLayerSourceDetails(layer: layer) #else - if let layer = layer { - if layer.source == sourceId { + let sourceDetails: LayerSourceDetails? = (source: layer?.source, sourceLayer: layer?.sourceLayer) + #endif + + if let layer = layer, let sourceDetails = sourceDetails { + if sourceDetails.source == sourceId { var good = true if let sourceLayerId = sourceLayerId { - if sourceLayerId != layer.sourceLayer { + if sourceLayerId != sourceDetails.sourceLayer { good = false } } @@ -1444,7 +1474,6 @@ extension RNMBXMapView { } } } - #endif } } }