Skip to content

Repository files navigation

Mapbox SDK for MapConductor iOS

Description

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.

Setup

https://mapconductor.com/setup/ios/mapbox/

API key

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.

Usage

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!")}}}}}

Components

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))}}}


Polygon Hole

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)}}}

Releases

Packages

Contributors

Languages