Configurar Mapbox
Pasos para usar el Mapbox Maps SDK para iOS con MapConductor. Selecciónelo para aplicaciones que ya dependen de Mapbox o que necesitan la URL de estilo de Mapbox.
Antes de empezar
Obtener el token de acceso
- Cree una cuenta de Mapbox o inicie sesión.
- Copie el token público predeterminado desde "Tokens".
- Si es necesario, cree un token nuevo con el alcance maps:read.
Agregar con Swift Package Manager
Ingrese la URL del paquete desde File > Add Package Dependencies en Xcode. El Mapbox Maps SDK se agrega automáticamente como una dependencia.
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"),
]
),
]Inicializar el SDK
Llame a initializeMapbox(accessToken:) una sola vez antes de que se cree la vista de mapa.
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")
})Agregar permisos de ubicación (si es necesario)
Si usa la ubicación, escriba el propósito en Info.plist.
<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
Si aparece el mapa con un estilo de Mapbox y funcionan el zoom y el desplazamiento, ha terminado.
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()
}
}Diseños de mapa
MapboxMapDesign es compatible con los estándares de Mapbox. Los estilos personalizados se especifican con MapboxMapDesign.custom(styleURI:).
Solución de problemas
El mapa se queda completamente blanco
- Asegúrese de que se llame a initializeMapbox(accessToken:) antes que la vista de mapa.
- Verifique que el token tenga el alcance maps:read.
- Verifique que el destino de implementación sea iOS 17.0 o posterior.
Aparece "Token de acceso no válido"
- Verifique el valor del token y asegúrese de que no haya expirado.
- Verifique que esté usando el token público y no el token secreto.
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
Cuando aparece MapboxMapView, puede superponer capas con la misma API común que con otros proveedores.