Skip to content

Commit 96552bc

Browse files
authored
feat(ios): enable setSourceVisibility for Mapbox 11 (#3616)
* feat(ios): enable setSourceVisibility for Mapbox 11 * docs: fix CONTRIBUTING file path typo * fix: incomplete sourceDetails type in Mapbox 10 compile case
1 parent 0def7d3 commit 96552bc

File tree

2 files changed

+36
-7
lines changed

2 files changed

+36
-7
lines changed

CONTRIBUTING.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ Some notes about example app:
2222
cd example/ios ; RNMBX11=1 pod update MapboxMaps
2323
```
2424
To build example in this mode on android:
25-
Change `RNMBX11=true` in `example/android/gralde.properties`
25+
Change `RNMBX11=true` in `example/android/gradle.properties`
2626
- NewArchitecture/Fabric:
2727
```
2828
cd example/ios ; RCT_NEW_ARCH_ENABLED=1 pod update MapboxMaps
2929
```
30-
On android change `newArchEnabled=true` in `example/android/gralde.properties`
30+
On android change `newArchEnabled=true` in `example/android/gradle.properties`
3131

3232
### Running example app for Web
3333

ios/RNMBX/RNMBXMapView.swift

+34-5
Original file line numberDiff line numberDiff line change
@@ -1416,6 +1416,32 @@ extension RNMBXMapView {
14161416
}
14171417
}
14181418

1419+
typealias LayerSourceDetails = (source: String?, sourceLayer: String?)
1420+
1421+
#if RNMBX_11
1422+
func getLayerSourceDetails(layer: (any Layer)?) -> LayerSourceDetails? {
1423+
if let circleLayer = layer as? CircleLayer {
1424+
return (circleLayer.source, circleLayer.sourceLayer)
1425+
} else if let fillExtrusionLayer = layer as? FillExtrusionLayer {
1426+
return (fillExtrusionLayer.source, fillExtrusionLayer.sourceLayer)
1427+
} else if let fillLayer = layer as? FillLayer {
1428+
return (fillLayer.source, fillLayer.sourceLayer)
1429+
} else if let heatmapLayer = layer as? HeatmapLayer {
1430+
return (heatmapLayer.source, heatmapLayer.sourceLayer)
1431+
} else if let hillshadeLayer = layer as? HillshadeLayer {
1432+
return (hillshadeLayer.source, hillshadeLayer.sourceLayer)
1433+
} else if let lineLayer = layer as? LineLayer {
1434+
return (lineLayer.source, lineLayer.sourceLayer)
1435+
} else if let rasterLayer = layer as? RasterLayer {
1436+
return (rasterLayer.source, rasterLayer.sourceLayer)
1437+
} else if let symbolLayer = layer as? SymbolLayer {
1438+
return (symbolLayer.source, symbolLayer.sourceLayer)
1439+
} else {
1440+
return nil
1441+
}
1442+
}
1443+
#endif
1444+
14191445
extension RNMBXMapView {
14201446
func setSourceVisibility(_ visible: Bool, sourceId: String, sourceLayerId: String?) -> Void {
14211447
let style = self.mapboxMap.style
@@ -1424,14 +1450,18 @@ extension RNMBXMapView {
14241450
let layer = logged("setSourceVisibility.layer", info: { "\(layerInfo.id)" }) {
14251451
try style.layer(withId: layerInfo.id)
14261452
}
1453+
14271454
#if RNMBX_11
1428-
// RNMBX_11_TODO
1455+
let sourceDetails = getLayerSourceDetails(layer: layer)
14291456
#else
1430-
if let layer = layer {
1431-
if layer.source == sourceId {
1457+
let sourceDetails: LayerSourceDetails? = (source: layer?.source, sourceLayer: layer?.sourceLayer)
1458+
#endif
1459+
1460+
if let layer = layer, let sourceDetails = sourceDetails {
1461+
if sourceDetails.source == sourceId {
14321462
var good = true
14331463
if let sourceLayerId = sourceLayerId {
1434-
if sourceLayerId != layer.sourceLayer {
1464+
if sourceLayerId != sourceDetails.sourceLayer {
14351465
good = false
14361466
}
14371467
}
@@ -1444,7 +1474,6 @@ extension RNMBXMapView {
14441474
}
14451475
}
14461476
}
1447-
#endif
14481477
}
14491478
}
14501479
}

0 commit comments

Comments
 (0)