MapConductor provides a unified API for iOS SwiftUI. You can use Mapbox view with SwiftUI, but you can also switch to other Maps SDKs (such as MapLibre, MapKit, and so on), anytime. Even using the wrapper API, you can still access the native Mapbox view if you want.
https://mapconductor.com/setup/ios/mapbox/
This module ships an initialiser. Call it once, before the first MapboxMapView:
initializeMapbox(accessToken: mapboxAccessToken)Read the value from your build configuration rather than committing it.
import SwiftUI
import MapConductorCore
import MapConductorForMapbox
structMapView:View{@StateObjectprivatevarmapViewState=MapboxViewState(
cameraPosition:MapCameraPosition(
position:GeoPoint(latitude:35.6762, longitude:139.6503),
zoom:2))@StateprivatevarselectedMarker:MarkerState?=nilletcenter=GeoPoint(latitude:35.6762, longitude:139.6503)varbody:someView{MapboxMapView(state: mapViewState){Marker(
position: center,
icon:DefaultMarkerIcon(label:"Tokyo"),
onClick:{ state in selectedMarker = state })iflet selected = selectedMarker {InfoBubble(marker: selected){Text("Hello, world!")}}}}}MapboxMapView [docs]
structMapExample:View{@StateObjectprivatevarmapViewState=MapboxViewState(
cameraPosition:MapCameraPosition(
position:GeoPoint(latitude:38.90662, longitude:-77.044434),
zoom:17,
tilt:60,
bearing:30))varbody:someView{MapboxMapView(state: mapViewState)}}Marker [docs]
structMarkerExample:View{@StateprivatevarmarkerState=MarkerState(
position:GeoPoint(latitude:35.6762, longitude:139.6503),
icon:DefaultMarkerIcon(label:"Tokyo"),
onClick:{ state in state.animate(.bounce)})varbody:someView{MapboxMapView(state: mapViewState){Marker(state: markerState)}}}InfoBubble [docs]
structInfoBubbleExample:View{@StateprivatevarselectedMarker:MarkerState?=nil@StateprivatevarmarkerState=MarkerState(
position:GeoPoint(latitude:35.6762, longitude:139.6503),
onClick:{[self] state in selectedMarker = state })varbody:someView{MapboxMapView(state: mapViewState){iflet selected = selectedMarker {InfoBubble(marker: selected){Text("Hello, world!")}}Marker(state: markerState)}}}Circle [docs]
structCircleExample:View{varbody:someView{MapboxMapView(state: mapViewState){Circle(
center:GeoPoint(latitude:35.6762, longitude:139.6503),
radiusMeters:50,
fillColor:UIColor.blue.withAlphaComponent(0.5),
onClick:{ state in
state.fillColor =UIColor.red.withAlphaComponent(0.5)})}}}Polyline [docs]
structPolylineExample:View{varbody:someView{MapboxMapView(state: mapViewState){Polyline(
points: airports,
strokeColor:UIColor.blue.withAlphaComponent(0.5),
geodesic:true)}}}Polygon [docs]
structPolygonExample:View{varbody:someView{MapboxMapView(state: mapViewState){Polygon(
points: goryokaku,
strokeColor:UIColor.red.withAlphaComponent(0.5),
fillColor:UIColor.red.withAlphaComponent(0.7))}}}structPolygonHoleExample:View{varbody:someView{MapboxMapView(state: mapViewState){Polygon(
points: outerPoints,
holes:[innerPoints1, innerPoints2],
fillColor:UIColor(red:0.47, green:0.47, blue:0.50, alpha:0.8),
strokeColor:UIColor.red,
strokeWidth:2)}}}GroundImage [docs]
structGroundImageExample:View{varbody:someView{MapboxMapView(state: mapViewState){GroundImage(
bounds:GeoRectBounds(
southWest:GeoPoint.fromLatLong(...),
northEast:GeoPoint.fromLatLong(...)),
image: uiImage,
opacity:0.5)}}}







