Eso es todo.

Para comenzar a desarrollar, consulta nuestra documentación para desarrolladores.

Activar el Google Maps SDK for iOS

Para que puedas comenzar, te proporcionaremos orientación en la Google Developers Console a fin de que hagas primero algunas acciones:

  1. Crear o seleccionar un proyecto
  2. Activar el Google Maps SDK for iOS
  3. Crear claves correspondientes
Continuar

Objetos de mapas

Nota: En este documento, se describe cómo adicionar un Google Maps a una aplicación iOS. Si deseas conocer la manera de iniciar la aplicación independiente de Google Maps, consulta la documentación sobre esquemas de direcciones URL .

Los mapas se representan en la API a través de la clase GMSMapView, una sublase de UIView. El mapa es el objeto más importante del Google Maps SDK for iOS y proporciona los métodos necesarios para agregar, eliminar y administrar otrosobjetos, como marcadores y polilíneas.

Introducción

La Google Maps SDK for iOS te permite mostrar un mapa de Google en tu aplicación de iOS . El aspecto de estos mapas es idéntico al de los mapas que se ven en la aplicación Google Maps iOS app, y la SDK exhibe muchas funciones idénticas.

Además de la funcionalidad de asignación, la API admite una variedad de interacciones coherentes con el modelo de IU de iOS. Por ejemplo, puedes configurar interacciones con un mapa definiendo respondedores que reaccionen ante gestos del usuario, como toques simples y dobles.

Al trabajar con un objeto de Mapa, la clase fundamental es GMSMapView. GMSMapView administra las siguientes operaciones de manera automática:

  • conexión al servicio de Google Maps;
  • descarga de mosaicos de mapas;
  • visualización de mosaicos en la pantalla del dispositivo;
  • visualización de varios controles, como el desplazamiento y el zoom.
  • respuesta a gestos de desplazamiento y zoom a través del movimiento del mapa y su acercamiento o alejamiento.
  • respuesta a gestos de dos dedos a través de la inclinación del ángulo de visualización del mapa.

Además de estas operaciones automáticas, puedes controlar el comportamiento y el aspecto de los mapas a través de las propiedades y los métodos que exhibe la clase GMSMapView. GMSMapView te permite agregar y eliminar marcadores, superposiciones de suelo y polilíneas, cambiar el tipo de mapa que aparece, y controlar lo que se muestra a través de la clase GMSCameraPosition.

Agregar un Mapa

Los pasos básicos para agregar un mapa son los siguientes:

  1. (Solo debes realizar este paso una vez). Sigue los procedimientos de Primeros pasos para obtener el SDK, acceder a una clave y agregar los marcos necesarios.
  2. En tu AppDelegate, proporciona tu clave de API al método de clase provideAPIKey: en GMSServices.
  3. Crea o actualiza un ViewController. Si el mapa se muestra cuando este controlador de vista se vuelva visible, asegúrate de crearlo dentro de método loadView.
    1. Crea un objeto GMSCameraPosition que especifique el centro y el nivel de zoom del mapa. Al crear una instancia del objeto GMSMapView, debes pasar el objeto GMSCameraPosition como parámetro requerido.
    2. Configura una clase GMSMapView y crea una instancia de ella usando el métodoGMSMapView mapWithFrame:. Si debe usar el mapa como la única vista del controlador de vista, CGRectZero podría usarse como marco del mapa (el tamaño del mapa se modificará automáticamente).
    3. Configura el objeto GMSMapView como la vista del controlador de vista; p. ej., self.view = mapView;.

En el ejemplo siguiente se incluye un mapa, posicionado en el centro de Singapur, a una aplicación.

Swift

import UIKit
import GoogleMaps

class DemoViewController: UIViewController {
  override func loadView() {
    let camera = GMSCameraPosition.camera(withLatitude: 1.285, longitude: 103.848, zoom: 12)
    let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
    self.view = mapView
  }
}

Objective-C

#import "DemoViewController.h"
@import GoogleMaps;

@implementation DemoViewController

- (void)loadView {
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285
                                                          longitude:103.848
                                                               zoom:12];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  self.view = mapView;
}

@end

Una vez que sigas estos pasos, puedes continuar configurando el objeto GMSMapView.

Tipos de mapas

Puedes personalizar tu mapa con uno de los numerosos tipos de mapas. El tipode un mapa determina la representación general de este. Por ejemplo, un atlas generalmente contiene mapas políticos que se centran en la visualización de fronteras. En los mapas de carreteras se muestran todas las carreteras de una ciudad o región. El Google Maps SDK for iOS ofrece los siguientes tipos de mapas:

Tipo de Mapa
Normal
Value: kGMSTypeNormal
Mapa de carreteras típico. Muestra carreteras, algunas características creadas por el hombre y características naturales importantes, como ríos. También se ven etiquetas de carreteras y elementos. Es el modo de mapa predeterminado en Google Maps para iOS.
Híbrido
Value: kGMSTypeHybrid
Datos de fotos satelitales con mapas de carreteras agregados. También se ven etiquetas de carreteras y elementos. Este tipo de mapa puede habilitarse en la aplicación de Google Maps para iOS habilitando la vista Satélite.
Satélite
Value: kGMSTypeSatellite
Datos de fotos satelitales. No se ven etiquetas de carreteras y elementos. Este modo no se encuentra disponible en Google Maps para iOS.
Tierra
Value: kGMSTypeTerrain
Datos topográficos. En el mapa se incluyen colores, líneas de contornos y etiquetas, y sombreados de perspectiva. También se pueden ver carreteras y etiquetas.
Ninguno
Value: kGMSTypeNone
Ausencia de mosaicos de mapas. Estos mosaicos de mapas básicos no se representarán. Este modo resulta útil combinado con capas de mosaicos. Se deshabilitará la visualización de datos de tráfico cuando se fije en ninguno el tipo de mapa.

Cambiar el tipo de mapa

Para configurar el tipo de un mapa, asigna un nuevo valor a la propiedad GMSMapView.mapType. Por ejemplo, para que se muestre un tipo de mapa satelital:

Swift

let camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
mapView.mapType = kGMSTypeSatellite

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView.mapType = kGMSTypeSatellite;

En el cuadro de selección siguiente se muestra una comparación de mapas normales, híbridos y de tierra para la misma ubicación:

Mapas de interiores

Con altos niveles de zoom, el Google Maps SDK for iOS mostrará planos de pisos para espacios interiores, como en aeropuertos, centros comerciales, grandes tiendas minoristas y estaciones detransporte. Los planos de pisos de interiores se integran a los mosaicos de mapas predeterminados para el tipo de mapa “normal” (kGMSTypeNormal), y se habilitan en forma automática cuando el usuario aplica zoom de acercamiento y desaparecen cuando aplica zoom de alejamiento.

Puedes deshabilitar los mapas de interiores fijando la propiedadindoorEnabled de GMSMapView en el valor NO.

Swift

var mapView = GMSMapView.map(withFrame: .zero, camera:camera)
mapView.isIndoorEnabled = false

Objective-C

GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView.indoorEnabled = NO;

Como alternativa, puedes inhabilitar solo el control del seleccionador de pisos.

Agregar planos de pisos

Hay disponibles planos de pisos en ubicaciones seleccionadas. Si no hay disponibles datos de planos de pisos para un edificio que desees resaltar en tu aplicación, puedes:

  • Agregar planos de pisos a Google Maps de manera directa. Con esto, tus planos estarán disponibles para todos los usuarios de Google Maps.
  • Mostrar un plano de pisos como una superposición de suelo. Esto permitirá que solo los usuarios de tu aplicación vean tus planos de pisos.

Accesibilidad

De manera predeterminada, los elementos de accesibilidad del mapa vienen ocultos. Puedes habilitar la accesibilidad fijando la propiedadaccessibilityElementsHidden de GMSMapView en el valor NO. Con esto se generarán elementos de accesibilidad para objetos de superposiciones (como GMSMarker y las ventanas de información, GMSPolyline, etc.).

Swift

mapView.accessibilityElementsHidden = false

Objective-C

mapView.accessibilityElementsHidden = NO;

Esta propiedad se adecua al protocolo informal UIAccessibility, salvo cuando el valor predeterminado del Google Maps SDK for iOS sea YES.

My Location

De manera predeterminada, no se proporcionan datos sobre la ubicación en el mapa. Puedes habilitar el punto azul "My Location" y la orientación de la brújula configurando myLocationEnabled en GMSMapView.

Swift

mapView.isMyLocationEnabled = true

Objective-C

mapView.myLocationEnabled = YES;

Cuando se habilite esta función también se proporcionará la ubicación actual del usuario a través de la propiedad myLocation. Es posible que esta propiedad no esté disponible de inmediato; por ejemplo, si iOS solicita al usuario permiso para acceder a estos datos. En este caso, el valor será nulo.

Swift

// The myLocation attribute of the mapView may be null
if let mylocation = mapView.myLocation {
  print("User's location: \(mylocation)")
} else {
  print("User's location is unknown")
}

Objective-C

NSLog(@"User's location: %@", mapView.myLocation);

Relleno de mapas

Los mapas de Google están diseñados para abarcar toda la región definida por el objeto GMSMapView. Varios aspectos relacionados con la presentación y el comportamiento del mapa se definen por las dimensiones de la vista:

  • El objetivo de la cámara refleja el centro de la región con relleno.
  • Los controles del mapa tienen una posición relativa al límite del mapa.
  • La información legal, como las declaraciones de derechos de autor o el logotipo de Google, aparece en el límite inferior del mapa.

Puedes agregar relleno alrededor de los límites del mapa usando la propiedad GMSMapViewpadding. El mapa continuará rellenando todo el contenedor, pero el posicionamiento del texto y de los controles, los gestos de mapa y los movimientos de la cámara se comportarán como si este se posicionara en un espacio más pequeño. Esto genera los siguientes cambios:

  • Los movimientos de la cámara a través de llamadas de API o activaciones de botones (p. ej., brújula y “My Location”) guardarán relación con la región con relleno.
  • GMSMapView.projection devuelve una proyección que incluye solo la región con relleno.
  • Los controles de IU se desviarán del límite del contenedor a través del número de puntos especificado.

El relleno puede resultar útil al diseñar IU que se superpongan con una parte determinada del mapa. En la imagen siguiente, por ejemplo, el mapa se agrega en los límites superior y derecho. Los controles del mapa y el texto legal visibles aparecerán en los límites de la región con relleno, en color verde, mientras que el mapa continuará rellenando todo el contenedor, que se muestra en azul. En este ejemplo, se puede hacer flotante un menú del lado derecho del mapa sin oscurecer los controles de este.

Relleno de mapas.

Para agregar relleno a tu mapa, crea un objeto UIEdgeInsets y pásalo a la propiedad GMSMapView.padding.

Swift

let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 300.0)
mapView.padding = mapInsets

Objective-C

// Insets are specified in this order: top, left, bottom, right
UIEdgeInsets mapInsets = UIEdgeInsetsMake(100.0, 0.0, 0.0, 300.0);
mapView.padding = mapInsets;

Nota: Conforme a las condiciones de servicio de la Google Maps API, el logotipo de Google y los avisos de derechos de autor no deben eliminarse de tu aplicación ni ocultarse en ella. El relleno de mapas te permite cambiar la posición de estos elementos si es necesario. Si haces que aparezca una IU en la parte inferior del mapa, agrega relleno a esta parte para que el logotipo y los avisos legales siempre sean visibles.

Enviar comentarios sobre…

Google Maps SDK for iOS
Google Maps SDK for iOS
¿Necesitas ayuda? Visita nuestra página de asistencia.