MapLibre einrichten
So verwenden Sie MapLibre Native über MapConductor. Es ist die kürzeste Startmethode ohne API-Schlüssel. Das Erscheinungsbild der Karte wird durch den Anbieter des Styles JSON bestimmt.
Bevor Sie beginnen
Mit Swift Package Manager hinzufügen
Geben Sie die Paket-URL über File > Add Package Dependencies in Xcode ein. Das MapLibre Native SDK wird automatisch als Abhängigkeit hinzugefügt.
https://github.com/MapConductor/ios-for-maplibre
dependencies: [
.package(url: "https://github.com/MapConductor/ios-sdk-core", from: "1.3.1"),
.package(url: "https://github.com/MapConductor/ios-for-maplibre", from: "1.0.0"),
],
targets: [
.target(
name: "YourApp",
dependencies: [
.product(name: "MapConductorCore", package: "ios-sdk-core"),
.product(name: "MapConductorForMapLibre", package: "ios-for-maplibre"),
]
),
]Stil festlegen
MapLibre selbst hat kein Konto und keinen Schlüssel. Sie müssen jedoch selbst den Anbieter der Kacheln festlegen. Wenn Sie einen kommerziellen Dienst wie MapTiler verwenden, wird der Schlüssel in die URL des Style JSON eingebettet. MapConductor ist nicht an der Authentifizierung des Kachelanbieters beteiligt.
// Built-in presets mapState.mapDesignType = MapLibreDesign.OsmBright mapState.mapDesignType = MapLibreDesign.OsmBrightJa mapState.mapDesignType = MapLibreDesign.MapTilerTonerEn mapState.mapDesignType = MapLibreDesign.DemoTiles
Standortberechtigung hinzufügen (falls erforderlich)
Wenn Sie den Standort verwenden, geben Sie den Zweck in Info.plist an und fordern Sie die Berechtigung in der App 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
Zeigen Sie die Karte mit dem angegebenen Stil an. Wenn die Kacheln geladen werden und Zoom und Schwen funktionieren, sind Sie fertig.
import SwiftUI
import MapConductorCore
import MapConductorForMapLibre
struct ContentView: View {
@StateObject var mapState = MapLibreViewState(
mapDesignType: MapLibreDesign.OsmBright,
cameraPosition: MapCameraPosition(
position: GeoPoint(latitude: 35.6812, longitude: 139.7671),
zoom: 12.0
)
)
var body: some View {
MapLibreMapView(state: mapState)
.ignoresSafeArea()
}
}Kartendesigns
MapLibreDesign ist ein Typ, der die URL des Style JSON umschließt. Bei Verwendung eines eigenen Stils erstellen Sie denselben Typ direkt.
Fehlerbehebung
Die Karte bleibt komplett weiß
- Prüfen Sie, ob die URL des Style JSON des gewählten MapLibreDesign erreichbar ist.
- Wenn Sie einen Kachelanbieter verwenden, prüfen Sie, ob der in der URL eingebettete Schlüssel gültig ist.
- Prüfen Sie, ob das Deployment Target iOS 15.1 oder höher ist.
Build schlägt fehl
- Löschen Sie den Build-Ordner (Cmd+Shift+K).
- Löschen Sie ~/Library/Developer/Xcode/DerivedData und bauen Sie neu.
- Aktualisieren Sie die Abhängigkeiten von Swift Package Manager. Vermeiden Sie die parallele Nutzung mit CocoaPods.
Weiter
Sobald MapLibreMapView erscheint, können Sie Overlays mit derselben gemeinsamen API wie bei anderen Anbietern überlagern.