Cómo configurar un mapa

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Seleccionar plataforma: Android iOS

En este tema, 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 la configuración inicial y del entorno de ejecución del mapa. Para obtener información detallada acerca de cómo agregar un contenedor de mapas, consulta el artículo Cómo agregar un mapa.

La configuración inicial del mapa consta de las siguientes opciones:

  • 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 detalles sobre el posicionamiento de la cámara)
  • El tipo de mapa
  • Los componentes de la IU para mostrar, como los botones de zoom y la brújula
  • Los gestos para habilitar

En el entorno de ejecución, puedes establecer esta configuración y algunas configuraciones de actualización si actualizas el objeto GMSMapView.

Tipos de mapas

Puedes personalizar tu mapa con uno de los numerosos tipos de mapas. El tipo de mapa rige la representación general de este. Por ejemplo, los atlas suelen contener mapas políticos cuyo objetivo es mostrar las fronteras, mientras que los mapas de ruta 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 carreteras habitual. Muestra carreteras, algunas características creadas por el hombre y características naturales importantes, como ríos. También muestra etiquetas de rutas y elementos.
Híbrido
Valor: kGMSTypeHybrid
Datos de fotos satelitales con mapas agregados. También muestra etiquetas de rutas y elementos.
Satélite
Valor: kGMSTypeSatellite
Datos de fotos satelitales. Las etiquetas de rutas y elementos no son visibles.
Terreno
Valor: kGMSTypeTerrain
Datos topográficos. El mapa incluye colores, etiquetas y líneas de contorno, y sombreado de perspectiva. También muestra algunas rutas y etiquetas.
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 inhabilitará cuando el tipo de mapa se establezca 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 camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
mapView.mapType = .satellite
      

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, Maps SDK for iOS mostrará planos de interiores de los espacios interiores, como aeropuertos, centros comerciales, grandes tiendas minoristas y estaciones de transporte público. Los planos de edificios de interiores están integrados en los mosaicos de mapas predeterminados para el tipo de mapa "normal" (kGMSTypeNormal), y se habilitan automáticamente cuando el usuario acerca la imagen y desaparecen cuando la alejan.

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 seleccionador de pisos.

Agregar planos de edificios

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

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

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.

Mapa de Google Maps con la capa de tráfico activa

Accesibilidad

De manera predeterminada, los elementos de accesibilidad del mapa vienen ocultos. Para habilitar la accesibilidad, configura la propiedad accessibilityElementsHidden de GMSMapView como NO. Esto hará que se generen elementos de accesibilidad para objetos superpuestos (como GMSMarker y 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 en el 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, 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 le solicita al usuario que permita el acceso a estos datos. En este caso, será nulo.

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 ve en la imagen de Seattle, Washington a continuación.

Un mapa 3D de los edificios de Seattle, Washington.

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

Swift

mapView.isBuildingsEnabled = false
      

Objective‑C

[mapView setBuildingsEnabled:NO];
      

Mapas con padding

Un mapa de Google Maps está diseñado para ocupar toda la región definida por el objeto GMSMapView. Varios aspectos relacionados con la presentación y el comportamiento del mapa se definen según las dimensiones de la vista:

  • El objetivo de la cámara representa el centro de la región con padding.
  • La posición de los controles de mapa se define respecto de los bordes del mapa.
  • La información legal, como las declaraciones de derechos de autor o el logotipo de Google, aparecen en el borde inferior del mapa.

Puedes agregar padding en los bordes del mapa con el método GMSMapView.padding. El mapa seguirá 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 comportarán como si estuvieran en un espacio más pequeño. Esto provocará los siguientes cambios:

  • Los movimientos de la cámara generados mediante llamadas a la API o al presionar un botón (p.ej., brújula o “Mi ubicación”) estarán relacionados con la región con padding.
  • GMSMapView.projection mostrará una proyección que incluya solo la región con padding.
  • Los controles de la IU se ubicarán a cierta distancia (cantidad de puntos especificada) del borde del contenedor.

El padding puede resultar útil cuando se diseñan IU que se superponen con alguna parte del mapa. Por ejemplo, en la siguiente imagen, se muestra un mapa con padding a lo largo de los bordes superior y derecho. Los controles del mapa y el texto legal visibles aparecerán en los bordes de la región con padding, que se muestra en verde, mientras que el mapa seguirá 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.

Mapas 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;