Navigation SDK is currently available only to select customers. Contact sales to learn more.

Configura tu proyecto

Stay organized with collections Save and categorize content based on your preferences.

Sigue esta guía para integrar el SDK de Navigation para iOS en una app para iOS.

Requisitos previos

  • A fin de compilar un proyecto con el SDK de Navigation para iOS, necesitas la versión 13.0 o posterior de Xcode.
  • La versión mínima de iOS de destino para el SDK de navegación es 13.0.

Instalar el SDK

Instalación manual

Sigue estos pasos a fin de instalar los marcos de trabajo para el SDK de Navigation para iOS y el SDK de Maps para iOS:

  1. Descomprime los archivos fuente que recibiste de Google.
  2. Ejecuta Xcode y abre un proyecto existente o crea uno nuevo. Si eres nuevo en iOS, crea un proyecto nuevo y selecciona la plantilla de app para iOS.
  3. Quita todas las referencias a Maps y Places existentes del proyecto.
  4. Arrastra los siguientes paquetes a tu proyecto en Frameworks, bibliotecas y contenido incorporado para instalar los SDK de Maps y Navigation (cuando se te solicite, selecciona Copy items if needed):
    • GoogleMapsBase.framework
    • GoogleMaps.framework
    • GoogleMapsCore.framework
    • GoogleNavigation.framework
  5. Haz clic con el botón derecho en GoogleMaps.framework en tu proyecto y selecciona Show In Finder.
  6. Arrastra el archivo GoogleMaps.bundle de la carpeta Recursos al directorio de nivel superior de tu proyecto de Xcode. Cuando se te solicite, asegúrate de que la opción Copy items into destination group&s folder no esté seleccionada.
  7. Repite los dos pasos anteriores para agregar GoogleNavigation.bundle.
  8. Selecciona tu proyecto en el navegador de proyectos y elige el destino de tu aplicación.
  9. Abre la pestaña Fases de compilación y, en Vincular objeto binario con bibliotecas, agrega los siguientes marcos de trabajo y bibliotecas:
    • Accelerate.framework
    • AudioToolbox.framework
    • AVFoundation.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libxml2.tbd
    • libz.tbd
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
    • WebKit.framework
  10. En el destino de tu aplicación, selecciona la pestaña Funciones, activa los Modos en segundo plano y habilita los siguientes modos:
    • Audio, AirPlay y Pantalla en pantalla
    • Actualizaciones de ubicación
  11. Elige tu proyecto, en lugar de un destino específico, y abre la pestaña Configuración de compilación. En la sección Other Linker Flags, agrega ‑ObjC para debug y release. Si esta configuración no es visible, cambia el filtro de la barra Build Settings de Basic a All.
  12. Abre Info.plist y agrega los siguientes pares clave-valor:
    • Clave: NSLocationWhenInUseUsageDescription (Privacidad - Ubicación cuando se usa en descripción de uso)
      Valor: "Esta app necesita permiso para usar tu ubicación en la navegación paso a paso."
    • Clave: NSLocationAlwaysAndWhenInUseUsageDescription (Privacidad - Ubicación siempre y cuando esté en uso Descripción del uso)
      Valor: "Esta app necesita permiso para usar tu ubicación en la navegación paso a paso."

Instala XCFramework

Un XCFramework es un paquete binario que puedes usar en varias plataformas, incluidas máquinas que usan el conjunto de chips M1, para instalar el SDK de Maps para iOS. En esta guía, se muestra cómo agregar manualmente XCFramework que contiene el SDK de Maps para iOS a tu proyecto y configurar los ajustes de compilación en Xcode.

Sigue estos pasos a fin de instalar los marcos de trabajo para el SDK de Navigation para iOS y el SDK de Maps para iOS:

  1. Descomprime los archivos fuente que recibiste de Google.
  2. Ejecuta Xcode y abre un proyecto existente o crea uno nuevo. Si eres nuevo en iOS, crea un proyecto nuevo y selecciona la plantilla de app para iOS.
  3. Quita todas las referencias a Maps y Places existentes del proyecto.
  4. Arrastra los siguientes XCFramework a tu proyecto en Frameworks, Bibliotecas y contenido incorporado para instalar los mapas de Google y los SDK de Navigation (cuando se te solicite, selecciona Copy items if needed):
    • GoogleMapsBase.xcframework
    • GoogleMaps.xcframework
    • GoogleMapsCore.xcframework
    • GoogleNavigation.xcframework
  5. Haz clic con el botón derecho en GoogleMaps.xcframework en tu proyecto y selecciona Show In Finder.
  6. Arrastra el archivo GoogleMaps.bundle de la carpeta ios-arm64/GoogleMaps.framework/Resources al directorio de nivel superior de tu proyecto de Xcode. Cuando se te solicite, asegúrate de que la opción Copy items into destination group’s folder no esté seleccionada.
  7. Repite los dos pasos anteriores para agregar GoogleNavigation.bundle.
  8. Selecciona tu proyecto en el navegador de proyectos y elige el destino de tu aplicación.
  9. Abre la pestaña Fases de compilación y, en Vincular objeto binario con bibliotecas, agrega los siguientes marcos de trabajo y bibliotecas:
    • Accelerate.framework
    • AudioToolbox.framework
    • AVFoundation.framework
    • CoreData.framework
    • CoreGraphics.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.tbd
    • libxml2.tbd
    • libz.tbd
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
    • WebKit.framework
  10. En el destino de tu aplicación, selecciona la pestaña Funciones, activa los Modos en segundo plano y habilita los siguientes modos:
    • Audio, AirPlay y Pantalla en pantalla
    • Actualizaciones de ubicación
  11. Elige tu proyecto, en lugar de un destino específico, y abre la pestaña Configuración de compilación. En la sección Other Linker Flags, agrega ‑ObjC para debug y release. Si esta configuración no es visible, cambia el filtro de la barra Build Settings de Basic a All.
  12. Abre Info.plist y agrega los siguientes pares clave-valor:
    • Clave: NSLocationWhenInUseUsageDescription (Privacidad - Ubicación cuando se usa en descripción de uso)
      Valor: "Esta app necesita permiso para usar tu ubicación en la navegación paso a paso."
    • Clave: NSLocationAlwaysAndWhenInUseUsageDescription (Privacidad - Ubicación siempre y cuando esté en uso Descripción del uso)
      Valor: "Esta app necesita permiso para usar tu ubicación en la navegación paso a paso."

Agrega una clave de API a tu proyecto

En los siguientes ejemplos, se muestra cómo agregar la clave de API a tu proyecto en Xcode:

Swift

Agrega tu clave de API a AppDelegate.swift de la siguiente manera:

  1. Agrega las siguientes declaraciones de importación:
    import GoogleMaps
    import GoogleNavigation
  2. Agrega lo siguiente a tu método application(_:didFinishLaunchingWithOptions:):
    GMSServices.provideAPIKey("YOUR_API_KEY")

Objective‑C

Agrega tu clave de API a AppDelegate.m de la siguiente manera:

  1. Agrega las siguientes declaraciones de importación:
    @import GoogleMaps;
    @import GoogleNavigation;
  2. Agrega lo siguiente a tu método application:didFinishLaunchingWithOptions::
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];

Cómo agregar un mapa

En este código, se muestra cómo agregar un mapa simple a un objeto ViewController existente, incluidas algunas configuraciones iniciales para la navegación.

Antes de habilitar la navegación, el usuario debe aceptar los Términos y Condiciones. Para solicitar al usuario, llama a GMSNavigationServices.showTermsAndConditionsDialogIfNeeded() y verifica si se aceptaron los términos. Si el usuario rechaza los términos, mapView.isNavigationEnabled = true no tiene efecto y mapView.navigator es nulo.

Swift

import UIKit
import GoogleNavigation

class ViewController: UIViewController {

  var mapView: GMSMapView!
  var locationManager: CLLocationManager!

  override func loadView() {
    locationManager = CLLocationManager()
    locationManager.requestAlwaysAuthorization()

    let camera = GMSCameraPosition.camera(withLatitude: 47.67, longitude: -122.20, zoom: 14)
    mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)

    // Show the terms and conditions.
    let companyName = "Ride Sharing Co."
    GMSNavigationServices.showTermsAndConditionsDialogIfNeeded(
      withCompanyName: companyName) { (termsAccepted) in
      if (termsAccepted) {
        // Enable navigation if the user accepts the terms.
        self.mapView.isNavigationEnabled = true
      } else {
        // Handle the situation if the user rejects the terms and conditions.
      }
    }

    self.view = mapView
  }

  // TODO: Add navigation code.

}

Objective‑C

#import "ViewController.h"
@import GoogleNavigation;

@interface ViewController ()
@end

@implementation ViewController
GMSMapView *_mapView;
CLLocationManager *_locationManager;

- (void)loadView {

  _locationManager = [[CLLocationManager alloc] init];
  [_locationManager requestAlwaysAuthorization];

  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:47.67
                                                          longitude:-122.20
                                                               zoom:14];
  _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

  // Show the terms and conditions.
  NSString *companyName = @"Ride Sharing Co.";
  [GMSNavigationServices
    showTermsAndConditionsDialogIfNeededWithCompanyName:companyName
    callback:^(BOOL termsAccepted) {
     if (termsAccepted) {
       // Enable navigation if the user accepts the terms.
       _mapView.navigationEnabled = YES;
     } else {
       // Handle the situation if the user rejects the terms and conditions.
     }
   }];

  self.view = _mapView;
}

// TODO: Add navigation code.

@end

Ejecuta tu aplicación. Deberías ver un mapa centrado en Kirkland, Washington. Si no puede ver el mapa, confirme que proporcionó la clave de API correcta.