From 89c43f392639c5a1156f4aad592e9dd1cebf96b9 Mon Sep 17 00:00:00 2001 From: Beer van der Drift Date: Thu, 5 Sep 2024 17:54:01 +0200 Subject: [PATCH 1/3] feat(ios): enable setSourceVisibility for Mapbox 11 --- ios/RNMBX/RNMBXMapView.swift | 37 +++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/ios/RNMBX/RNMBXMapView.swift b/ios/RNMBX/RNMBXMapView.swift index a5b00ac27..eec2280b7 100644 --- a/ios/RNMBX/RNMBXMapView.swift +++ b/ios/RNMBX/RNMBXMapView.swift @@ -1416,6 +1416,30 @@ extension RNMBXMapView { } } +#if RNMBX_11 +func getLayerSourceDetails(layer: (any Layer)?) -> (source: String?, sourceLayer: String?)? { + 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 +1448,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 = (layer?.source, 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 +1472,6 @@ extension RNMBXMapView { } } } - #endif } } } From a923aa524be7150fed5ce4b94e8c1e922fe33379 Mon Sep 17 00:00:00 2001 From: Beer van der Drift Date: Thu, 5 Sep 2024 18:05:03 +0200 Subject: [PATCH 2/3] docs: fix CONTRIBUTING file path typo --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 From bc8b78b89bc0be488a11af612b9c8f4d9868485c Mon Sep 17 00:00:00 2001 From: Beer van der Drift Date: Tue, 10 Sep 2024 16:21:28 +0200 Subject: [PATCH 3/3] fix: incomplete sourceDetails type in Mapbox 10 compile case --- ios/RNMBX/RNMBXMapView.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ios/RNMBX/RNMBXMapView.swift b/ios/RNMBX/RNMBXMapView.swift index eec2280b7..34248c843 100644 --- a/ios/RNMBX/RNMBXMapView.swift +++ b/ios/RNMBX/RNMBXMapView.swift @@ -1416,8 +1416,10 @@ extension RNMBXMapView { } } +typealias LayerSourceDetails = (source: String?, sourceLayer: String?) + #if RNMBX_11 -func getLayerSourceDetails(layer: (any Layer)?) -> (source: String?, sourceLayer: String?)? { +func getLayerSourceDetails(layer: (any Layer)?) -> LayerSourceDetails? { if let circleLayer = layer as? CircleLayer { return (circleLayer.source, circleLayer.sourceLayer) } else if let fillExtrusionLayer = layer as? FillExtrusionLayer { @@ -1452,7 +1454,7 @@ extension RNMBXMapView { #if RNMBX_11 let sourceDetails = getLayerSourceDetails(layer: layer) #else - let sourceDetails = (layer?.source, layer?.sourceLayer) + let sourceDetails: LayerSourceDetails? = (source: layer?.source, sourceLayer: layer?.sourceLayer) #endif if let layer = layer, let sourceDetails = sourceDetails {