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 configurar las opciones iniciales y la configuración del tiempo de ejecución del mapa. Para obtener información detallada acerca de cómo agregar un contenedor de mapas, consulta Agrega 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 detalles sobre el posicionamiento de la cámara)
- El color de fondo del mapa.
- El tipo de mapa
- Los componentes de la IU para mostrar, como los botones de zoom y la brújula
- Los gestos para habilitar
Durante el tiempo de ejecución, puedes actualizar el objeto GMSMapView
para configurar esta y otras opciones adicionales.
Opciones de 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 Es la posición predeterminada de la cámara de mapas.
|
mapID | Valor:
GMSMapID ID de mapa de Google. Parámetro opcional.
|
backgroundColor | Valor:
UIColor La configuración predeterminada es UIColor.lightGray.
|
Configura las opciones del mapa
Puedes establecer tus propias opciones 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];
Este es un ejemplo de 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
Al trabajar en el modo oscuro o alternar entre las vistas de mapa, puede resultar útil anular el color de fondo predeterminado del mapa. Para ello, configura la propiedad backgroundColor
de las opciones de 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 del mapa. 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 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.
|
Híbrida | Valor:
kGMSTypeHybrid Datos de fotos satelitales con mapas de rutas agregados. También muestra etiquetas de rutas y elementos. |
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 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 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 siguiente selector muestra una comparación de los mapas normales, híbridos y de terreno de la misma ubicación:
Mapas de interiores
Cuando se utilicen 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 del edificio 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 se atenúan cuando aleja el mapa.
Para inhabilitar los mapas de interiores, debes establecer 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.
Agregar planos del edificio
Los planos del edificio están disponibles en ubicaciones seleccionadas. 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 planos del edificio directamente a Google Maps. De esta manera, tus planes estarán disponibles para todos los usuarios de Google Maps.
- Muestra un plano del edificio como una superposición de suelo. De esta manera, solo los usuarios de tu aplicación podrán ver 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. Para activar y desactivar la capa de tráfico, llama al método trafficEnabled
. En el siguiente ejemplo, se ve cómo podría mostrarse la capa de tráfico en un mapa.
Accesibilidad
De manera predeterminada, los elementos de accesibilidad del mapa vienen ocultos. Para habilitar la accesibilidad, establece la propiedad accessibilityElementsHidden
de GMSMapView
en NO
. Esto hace 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 cumple con 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. Para habilitar el punto azul "Mi ubicación" y la dirección de la brújula, configura myLocationEnabled
en GMSMapView
.
Swift
mapView.isMyLocationEnabled = true
Objective‑C
mapView.myLocationEnabled = YES;
Si se habilita esta función, se proporcionará la ubicación actual del usuario mediante la propiedad myLocation
. Es posible que esta propiedad no esté disponible de inmediato, por ejemplo, si iOS le solicita al usuario permiso para acceder 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 ve en la imagen de Seattle, Washington a continuación.
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
Los mapas de Google Maps están diseñados para ocupar toda la región definida por GMSMapView
.
Varios aspectos relacionados con la forma en que aparece y se comporta el mapa se definen por 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 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
.Propiedad padding
. El mapa sigue 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 que se realizan con llamadas a la API o al presionar 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 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, se muestra un mapa con padding a lo largo de los bordes superior y derecho. Los controles del mapa y el texto legal visibles aparecen 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.
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;