Configurar MapLibre
Instrucciones para usar MapLibre Native desde MapConductor. Es la forma más rápida de empezar y no requiere clave de API. La apariencia del mapa la determina la fuente del Style JSON.
Antes de empezar
Agregar con Swift Package Manager
Ingrese la URL del paquete desde File > Add Package Dependencies en Xcode. El MapLibre Native SDK se agregará automáticamente como dependencia.
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"),
]
),
]Definir el estilo
MapLibre en sí no tiene cuenta ni clave. Sin embargo, debe definir el proveedor de mosaicos. Si usa un servicio comercial como MapTiler, la clave se incrusta en la URL del Style JSON. MapConductor no interviene en la autenticación del proveedor de mosaicos.
// Built-in presets mapState.mapDesignType = MapLibreDesign.OsmBright mapState.mapDesignType = MapLibreDesign.OsmBrightJa mapState.mapDesignType = MapLibreDesign.MapTilerTonerEn mapState.mapDesignType = MapLibreDesign.DemoTiles
Agregar permiso de ubicación (si es necesario)
Si usa la ubicación, describa el propósito en Info.plist y solicite el permiso desde la aplicación.
<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()
}
}VERIFICAR
Lo que deberías ver
Muestre el mapa con el estilo especificado. Si se cargan los mosaicos y funcionan el zoom y el desplazamiento, ha terminado.
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()
}
}Diseños de mapa
MapLibreDesign es un tipo que envuelve la URL del Style JSON. Al usar un estilo propio, construya directamente el mismo tipo.
Solución de problemas
El mapa permanece completamente blanco
- Verifique que se pueda alcanzar la URL del Style JSON del MapLibreDesign elegido.
- Si usa un proveedor de mosaicos, verifique que la clave incrustada en la URL sea válida.
- Verifique que el Deployment Target sea iOS 15.1 o posterior.
Error de compilación
- Limpie la carpeta de compilación (Cmd+Shift+K).
- Elimine ~/Library/Developer/Xcode/DerivedData y vuelva a compilar.
- Actualice las dependencias de Swift Package Manager. Evite usarlo junto con CocoaPods.
Siguiente
Una vez que aparezca MapLibreMapView, puede superponer capas con la misma API común que otros proveedores.