Configura un mapa

Selecciona la plataforma: Android iOS

En esta descripción general, se describe cómo configurar un mapa que se agregó a una app para iOS con el SDK de Maps para iOS.

Descripción general

Después de agregar un mapa a tu app, puedes establecer las opciones iniciales y los ajustes del tiempo de ejecución del mapa. Para obtener detalles acerca de cómo agregar el contenedor de un mapa, consulta el artículo Cómo agregar un mapa.

Los parámetros de configuración iniciales del mapa abarcan lo siguiente:

  • La posición de la cámara, lo que incluye la ubicación, el zoom, el rumbo y la inclinación Consulta Cámara y vista para obtener más información sobre el posicionamiento de la cámara.
  • El color de fondo del mapa.
  • El tipo de mapa
  • Los componentes de la IU que se deben mostrar, como los botones de zoom y la brújula
  • Los gestos que se deben habilitar

Durante el tiempo de ejecución, puedes actualizar el objeto GMSMapView para definir esta configuración y otras adicionales.

Opciones del mapa

Cuando inicializas tu vista de mapa, las opciones de configuración se establecen con GMSMapViewOptions. Las propiedades de opción incluyen frame, camera, mapID o backgroundColor.

Opciones de mapas
marco
Valor: CGRect
El marco del mapa. La configuración predeterminada es CGRectZero.
cámara
Valor: GMSCameraPosition
La posición predeterminada de la cámara del mapa
mapID
Valor: GMSMapID
ID de mapa de Google Parámetro opcional.
backgroundColor
Valor: UIColor
La configuración predeterminada es UIColor.lightGray.

Configurar las opciones del mapa

Puedes establecer tus propias propiedades de opciones o pasar una instancia de GMSMapViewOptions con valores predeterminados directamente a GMSMapView.

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)

Objective‑C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

El siguiente es un ejemplo de cómo pasar un objeto GMSMapViewOptions con valores predeterminados directamente a GMSMapView.

Swift

let options = GMSMapViewOptions()
let mapView = GMSMapView(options:options) //initialized with default values

Objective‑C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; //initialized with default values

Configurar el color de fondo

Cuando trabajas en modo oscuro o alternas entre vistas de mapa, puede resultar útil anular el color de fondo del mapa predeterminado. Para ello, configura la propiedad backgroundColor de las opciones del mapa.

Swift

let options = GMSMapViewOptions()
options.backgroundColor = UIColor.yellowColor
let mapView = GMSMapView(options:options)

Objective‑C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.backgroundColor = UIColor.yellowColor;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

Tipos de mapas

Puedes personalizar tu mapa con uno de los numerosos tipos de mapas. El tipo de mapa determina la representación general de este. Por ejemplo, un atlas generalmente contiene mapas políticos que se centran en mostrar límites, y mapas de ruta que muestran todas las rutas de una ciudad o región. El SDK de Maps para iOS ofrece los siguientes tipos de mapas:

Tipo de mapa
Normal
Valor: kGMSTypeNormal
Mapa de ruta típico Muestra rutas, algunas características creadas por el hombre y características naturales importantes, como ríos. También muestra etiquetas de rutas y características. Se admite la configuración del esquema de colores del mapa en oscuro, claro o conforme a la configuración del sistema.
Híbrido
Valor: kGMSTypeHybrid
Datos de fotografías satelitales con mapas de rutas agregados. También muestra etiquetas de rutas y características.
Satélite
Valor: kGMSTypeSatellite
Datos de fotos satelitales. No se ven etiquetas de rutas y elementos.
Terreno
Valor: kGMSTypeTerrain
Datos topográficos. El mapa incluye colores, líneas de contorno y etiquetas, y sombras de perspectiva. También muestra algunas rutas y etiquetas. Se admite la configuración del esquema de colores del mapa en oscuro, claro o conforme a la configuración del sistema.
Ninguno
Valor: kGMSTypeNone
No hay mosaicos de mapas. Estos mosaicos de mapas básicos no se representarán. Este modo es útil junto con las capas de mosaicos. La visualización de los datos de tráfico se inhabilita cuando el tipo de mapa se establece en Ninguno.

Cómo cambiar el tipo de mapa

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

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)
mapView.mapType = .satellite

Objective‑C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                  longitude:151.2086
                                                        zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
mapView.mapType = kGMSTypeSatellite;

El selector siguiente muestra una comparación de mapas normales, híbridos y de terreno para la misma ubicación:

Mapas de interiores

Cuando se utilizan altos niveles de zoom, el SDK de Maps para iOS mostrará planos del edificio para espacios interiores, como aeropuertos, centros comerciales, grandes tiendas minoristas y estaciones de transporte público. Los planos de interiores de edificios están integrados en los mosaicos de mapas predeterminados para el tipo de mapa "normal" (kGMSTypeNormal), se habilitan automáticamente cuando el usuario acerca la imagen y se atenúan cuando la aleja.

Para inhabilitar los mapas de interiores, establece la propiedad indoorEnabled de GMSMapView en NO.

Swift

mapView.isIndoorEnabled = false
      

Objective‑C

mapView.indoorEnabled = NO;
      

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

Cómo agregar planos del edificio

Los planos del edificio están disponibles en ciertas ubicaciones. Si no hay datos disponibles del plano del edificio de un edificio que quieras destacar en tu aplicación, puedes hacer lo siguiente:

  • Agrega planos del edificio a Google Maps directamente. Esto hace que tus planes estén disponibles para todos los usuarios de Google Maps.
  • Muestra un plano del edificio como una superposición de suelo. Esto permite que solo los usuarios de tu aplicación vean los planos del edificio.

Capa de tráfico

Puedes darles a tus usuarios la posibilidad de ver el mapa con información superpuesta sobre la densidad del tráfico. Esto les proporcionará un resumen visual de la situación del tráfico local. Llama al método trafficEnabled para activar y desactivar la capa de tráfico. En el siguiente ejemplo, se ve cómo podría mostrarse la capa de tráfico en un mapa.

Un mapa de Google Maps
que muestra la capa de tráfico

Accesibilidad

De manera predeterminada, los elementos de accesibilidad del mapa vienen ocultos. Para habilitar la accesibilidad, establece la propiedad accessibilityElementsHidden de GMSMapView en NO. De esta manera, se generan elementos de accesibilidad para objetos superpuestos (como GMSMarker y las ventanas de información, GMSPolyline, etcétera).

Swift

mapView.accessibilityElementsHidden = false
      

Objective‑C

mapView.accessibilityElementsHidden = NO;
      

Esta propiedad se basa en el protocolo informal UIAccessibility, excepto que el valor predeterminado del SDK de Maps para iOS es YES.

Mi ubicación

De manera predeterminada, no se proporcionan datos sobre la ubicación en el mapa. Puedes habilitar el punto azul "Mi ubicación" y la dirección de la brújula si configuras myLocationEnabled en GMSMapView.

Swift

mapView.isMyLocationEnabled = true
      

Objective‑C

mapView.myLocationEnabled = YES;
      

Si habilitas esta función, se proporciona 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 le solicita al usuario que permita el acceso a estos datos. En este caso, es nil.

Swift

print("User's location: \(String(describing: mapView.myLocation))")
      

Objective‑C

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

Edificios 3D

A través de una vista ampliada, en muchas ciudades habrá edificios 3D visibles, tal como se muestra en la imagen de Seattle, Washington (a continuación).

Mapa 3D de edificios en Seattle, Washington.

Para inhabilitar los edificios 3D, configura la propiedad GMSMapView correspondiente en Swift o en Objective-C, como se muestra a continuación:

Swift

mapView.isBuildingsEnabled = false
      

Objective‑C

[mapView setBuildingsEnabled:NO];
      

Mapas con padding

Se diseñó un mapa de Google Maps para llenar toda la región definida por el GMSMapView. Hay varios aspectos relacionados con la apariencia y el comportamiento del mapa que se definen según las dimensiones de la vista:

  • El objetivo de la cámara refleja el centro de la región con padding.
  • La posición de los controles del mapa es relativa a los bordes del mapa.
  • La información legal, como las declaraciones de derechos de autor o el logotipo de Google, aparece en el borde inferior del mapa.

Puedes agregar padding en los bordes del mapa con el método GMSMapView.padding. El mapa continúa ocupando todo el contenedor, pero la posición del texto y los controles, los gestos del mapa y los movimientos de la cámara se comportan como si estuvieran en un espacio más pequeño. Esto genera los siguientes cambios:

  • Los movimientos de la cámara realizados con llamadas a la API o presionando un botón (p.ej., brújula o Mi ubicación) se relacionan con la región con padding.
  • GMSMapView.projection muestra una proyección que incluye solo la región con padding.
  • Los controles de la IU se alejan del borde del contenedor en la cantidad de puntos especificada.

El padding puede resultar útil cuando se diseñan IUs que se superponen con alguna parte del mapa. Por ejemplo, en la imagen, el mapa tiene padding a lo largo de los bordes superior y derecho. Los controles del mapa y el texto legal visibles se muestran en los bordes de la región con padding, que se muestra en verde, mientras que el mapa continúa ocupando todo el contenedor, que se muestra en azul. En este ejemplo, puedes utilizar un menú flotante en el lado derecho del mapa sin oscurecer los controles.

Mapa con padding

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

Swift

// Insets are specified in this order: top, left, bottom, right
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;
      

Esquema de colores del mapa

Para los mapas de tipo normal y de terreno, puedes definir el esquema de colores del mapa en oscuro o claro, o bien utilizar la configuración actual del sistema. Por ejemplo, puedes oscurecer o iluminar el esquema de colores del mapa según la hora del día o el uso interior o exterior del dispositivo.

Utiliza GMSMapView overrideUserInterfaceStyle: para establecer y actualizar el esquema de colores del mapa.

Swift

let options = GMSMapViewOptions()
// Map is init to use light mode by default.
let mapView = GMSMapView(options: options)
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = .dark
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = .light
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = .unspecified

Objective‑C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
// Map is init to always use light mode.
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleDark;
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;