Documentación / Configuración / iOS / Google Maps

Configurar Google Maps

Pasos para usar el Google Maps SDK para iOS con MapConductor. Elige esta opción para aplicaciones que ya dependen de Google Maps o cuando necesitas el tipo de mapa GoogleMapDesign.

PACKAGE
ios-for-googlemaps
API KEY
Requerido
MIN iOS
16.0
VIEW
GoogleMapView
El mismo proveedor, otras plataformasAndroidReact

Antes de empezar

Xcode 15 o posterior
Una cuenta de Google Cloud Console
Un proyecto de Google Cloud con Maps SDK para iOS habilitado
Destino de implementación iOS 16.0 o posterior
STEP 01

Obtener la clave de API

  1. Accede a Google Cloud Console.
  2. Crea un proyecto o selecciona uno existente.
  3. Habilita Maps SDK para iOS.
  4. Crea una clave de API en 'Credenciales'.
  5. Restringe la clave al ID de paquete (bundle ID) de la aplicación.
STEP 02

Agregar con Swift Package Manager

Ingresa la URL del paquete en Xcode > File > Add Package Dependencies. El SDK nativo se incluye automáticamente como dependencia, por lo que no necesitas agregarlo por separado.

Package URLSwift Package Manager
https://github.com/MapConductor/ios-for-googlemaps
Package.swiftSwift
dependencies: [
    .package(url: "https://github.com/MapConductor/ios-sdk-core", from: "1.3.1"),
    .package(url: "https://github.com/MapConductor/ios-for-googlemaps", from: "1.0.0"),
],
targets: [
    .target(
        name: "YourApp",
        dependencies: [
            .product(name: "MapConductorCore", package: "ios-sdk-core"),
            .product(name: "MapConductorForGoogleMaps", package: "ios-for-googlemaps"),
        ]
    ),
]
STEP 03

Inicializar el SDK

Llama a GMSServices.provideAPIKey(_:) una sola vez antes de que se cree la vista de mapa. La estructura App en @main es el lugar recomendado.

MyApp.swiftSwift
import SwiftUI
import GoogleMaps
import MapConductorForGoogleMaps

@main
struct MyApp: App {
    init() {
        GMSServices.provideAPIKey("YOUR_GOOGLE_MAPS_API_KEY")
    }

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
ContentView.swiftSwift
// Alternative: call it from the view's sdkInitialize closure
GoogleMapView(state: mapState, sdkInitialize: {
    GMSServices.provideAPIKey("YOUR_GOOGLE_MAPS_API_KEY")
})
PRECAUCIÓN
No escribas la clave de API directamente en el código fuente. Inyéctala en tiempo de compilación desde xcconfig o variables de entorno y no la incluyas en el repositorio.
STEP 04

Agregar permisos de ubicación (si es necesario)

Si usas el servicio de ubicación en Google Maps, describe el propósito en Info.plist y solicita el permiso desde la aplicación.

Info.plistXML
<key>NSLocationWhenInUseUsageDescription</key>
<string>We need your location to display on the map</string>
LocationManager.swiftSwift
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

Compila y ejecuta este ContentView. Si el mapa aparece y funcionan el zoom y el desplazamiento, has terminado.

ContentView.swiftSwiftUI
import SwiftUI
import MapConductorCore
import MapConductorForGoogleMaps

struct ContentView: View {
    @StateObject var mapState = GoogleMapViewState(
        cameraPosition: MapCameraPosition(
            position: GeoPoint(latitude: 35.6762, longitude: 139.6503),
            zoom: 12.0
        )
    )

    var body: some View {
        GoogleMapView(state: mapState)
            .ignoresSafeArea()
    }
}

Diseños de mapa

GoogleMapDesign es compatible con los tipos de mapa de Google.

GoogleMapDesign
Notes
Normal
Mapa de carreteras normal
Satellite
Imagen satelital
Hybrid
Imagen satelital con carreteras y etiquetas
Terrain
Mapa topográfico

Solución de problemas

El mapa no aparece (pantalla gris)

  • Verifica que se haya llamado a GMSServices.provideAPIKey(_:) antes de crear la vista de mapa.
  • Verifica en la consola si Maps SDK para iOS está habilitado.
  • Verifica que la restricción del ID de paquete de la clave coincida con el ID de paquete real.
  • Verifica que el destino de implementación sea iOS 16.0 o posterior.

Error de compilación

  • Limpia la carpeta de compilación (Cmd+Shift+K).
  • Elimina ~/Library/Developer/Xcode/DerivedData y vuelve a compilar.
  • Actualiza las dependencias de Swift Package Manager. Evita usarlo junto con CocoaPods.

Siguiente

Cuando aparece GoogleMapView, se pueden escribir Marker, Polyline y Circle con la API común. Incluso si se cambia el proveedor, no es necesario reescribir esa parte.