Mapbox einrichten
Schritte zur Verwendung des Mapbox Maps SDK für iOS mit MapConductor. Wählen Sie dies für Apps, die bereits von Mapbox abhängen oder die Mapbox-Style-URL benötigen.
Bevor Sie beginnen
Zugriffstoken abrufen
- Erstellen Sie ein Mapbox-Konto oder melden Sie sich an.
- Kopieren Sie das Standard öffentliche Token aus "Tokens".
- Erstellen Sie bei Bedarf ein neues Token mit dem Scope maps:read.
Mit Swift Package Manager hinzufügen
Geben Sie die Paket-URL über File > Add Package Dependencies in Xcode ein. Das Mapbox Maps SDK wird automatisch als Abhängigkeit hinzugefügt.
https://github.com/MapConductor/ios-for-mapbox
dependencies: [
.package(url: "https://github.com/MapConductor/ios-sdk-core", from: "1.3.1"),
.package(url: "https://github.com/MapConductor/ios-for-mapbox", from: "1.0.0"),
],
targets: [
.target(
name: "YourApp",
dependencies: [
.product(name: "MapConductorCore", package: "ios-sdk-core"),
.product(name: "MapConductorForMapbox", package: "ios-for-mapbox"),
]
),
]SDK initialisieren
Rufen Sie initializeMapbox(accessToken:) genau einmal auf, bevor die Kartenansicht erstellt wird.
import SwiftUI
import MapConductorForMapbox
@main
struct MyApp: App {
init() {
initializeMapbox(accessToken: "YOUR_MAPBOX_PUBLIC_TOKEN")
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}// Alternative: call it from the view's sdkInitialize closure
MapboxMapView(state: mapState, sdkInitialize: {
initializeMapbox(accessToken: "YOUR_MAPBOX_PUBLIC_TOKEN")
})Standortberechtigung hinzufügen (falls erforderlich)
Wenn Sie den Standort verwenden, geben Sie den Verwendungszweck in Info.plist an.
<key>NSLocationWhenInUseUsageDescription</key> <string>We need your location to display on the map</string>
import CoreLocation
final class LocationManager: NSObject, ObservableObject, CLLocationManagerDelegate {
private let manager = CLLocationManager()
override init() {
super.init()
manager.delegate = self
}
func requestPermission() {
manager.requestWhenInUseAuthorization()
}
}PRÜFEN
Was Sie sehen sollten
Wenn die Karte mit einem Mapbox-Style angezeigt wird und Zoom und Pan funktionieren, sind Sie fertig.
import SwiftUI
import MapConductorCore
import MapConductorForMapbox
struct ContentView: View {
@StateObject var mapState = MapboxViewState(
mapDesignType: MapboxMapDesign.Standard,
cameraPosition: MapCameraPosition(
position: GeoPoint(latitude: 35.6812, longitude: 139.7671),
zoom: 12.0
)
)
var body: some View {
MapboxMapView(state: mapState)
.ignoresSafeArea()
}
}Kartendesigns
MapboxMapDesign unterstützt die Standard-Styles von Mapbox. Benutzerdefinierte Styles werden mit MapboxMapDesign.custom(styleURI:) angegeben.
Fehlerbehebung
Karte bleibt komplett weiß
- Stellen Sie sicher, dass initializeMapbox(accessToken:) vor der Kartenansicht aufgerufen wird.
- Überprüfen Sie, ob das Token den Scope maps:read hat.
- Überprüfen Sie, ob das Deployment-Ziel iOS 17.0 oder höher ist.
"Ungültiges Zugriffstoken" wird angezeigt
- Überprüfen Sie den Wert des Tokens und stellen Sie sicher, dass es nicht abgelaufen ist.
- Überprüfen Sie, ob Sie das öffentliche Token und nicht das Secret-Token verwenden.
Build schlägt fehl
- Löschen Sie den Build-Ordner (Cmd+Shift+K).
- Löschen Sie ~/Library/Developer/Xcode/DerivedData und erstellen Sie neu.
- Aktualisieren Sie die Abhängigkeiten von Swift Package Manager. Vermeiden Sie die gleichzeitige Verwendung mit CocoaPods.
Weiter
Wenn MapboxMapView angezeigt wird, können Sie Overlays mit derselben gemeinsamen API wie bei anderen Anbietern überlagern.