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 el tiempo de ejecución del mapa. Para obtener información detallada 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:
- Cómo posicionar 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 IU que se deben mostrar, como los botones de zoom y brújula
- Los gestos que se deben habilitar
En el tiempo de ejecución, puedes establecer estos ajustes y algunos ajustes adicionales
actualizando los
GMSMapView
.
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.
|
Color de fondo | 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
GMSMapViewOptions
con los valores predeterminados directamente en 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 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 ser útil
anulan el color de fondo del mapa predeterminado. Para ello, se debe establecer
propiedad backgroundColor
de 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 un mapa rige la representación general del mapa. Por ejemplo, un atlas generalmente contiene mapas políticos centrados en mostrar fronteras, mapas de ruta que muestran todas las rutas de una ciudad o región. El SDK de Maps para iOS ofrece las los siguientes tipos de mapas:
Tipo de mapa | |
---|---|
Normal | Valor:
kGMSTypeNormal Mapa de ruta típico Muestra rutas, algunas características creadas por
los seres humanos y características
naturales importantes, como ríos. También muestra etiquetas de rutas y características. Admite la configuración del esquema de colores del mapa en oscuro, claro,
o seguir la configuración del sistema.
|
Híbrido | Valor:
kGMSTypeHybrid Datos de fotografías satelitales con mapas de rutas agregados. Ruta y característica
las etiquetas también están visibles. |
Satélite | Valor:
kGMSTypeSatellite Datos de fotos satelitales. Las etiquetas de rutas y elementos no están
sean visibles.
|
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. Admite
configurar el esquema de colores del mapa en oscuro, claro o seguir 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 los mosaicos
capas. La visualización de los datos de tráfico se inhabilita cuando el tipo de mapa es
establecido en Ninguno. |
Cómo cambiar el tipo de mapa
Para configurar el tipo de mapa, asigna un nuevo valor a GMSMapView.mapType
.
propiedad. 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 a continuación 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 de edificios para
espacios interiores, como aeropuertos, centros comerciales, grandes tiendas minoristas y servicios de
estaciones de carga. Los planos de interiores de pisos están integrados en los mosaicos de mapas predeterminados del
'normal' [normal] tipo de mapa (kGMSTypeNormal
) y se habilitan automáticamente cuando la
el usuario acerca la imagen y desaparece cuando se aleja el mapa.
Para inhabilitar los mapas de interiores, configura la propiedad indoorEnabled
de
GMSMapView
a NO
.
Swift
mapView.isIndoorEnabled = false
Objective-C
mapView.indoorEnabled = NO;
Como alternativa, puedes inhabilitar solo Control del seleccionador de pisos.
Cómo agregar planos del edificio
Los planos del edificio están disponibles en algunas seleccionadas ubicaciones. Si no dispones de datos de planos de edificios de un edificio que te gustaría destacar en tu aplicación, puedes:
- Agregar piso planes directamente a Google Maps. 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 solo permite que 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. Puedes activar y desactivar la capa de tráfico llamando
el
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. Puedes habilitar
de accesibilidad estableciendo la propiedad accessibilityElementsHidden
de
GMSMapView
a 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
, con la excepción de 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 botón azul “My
Ubicación la dirección de los puntos y la brújula configurando myLocationEnabled
activado
GMSMapView
Swift
mapView.isMyLocationEnabled = true
Objective-C
mapView.myLocationEnabled = YES;
Si habilitas esta función, se proporcionará la ubicación actual del usuario mediante el
myLocation
. Es posible que esta propiedad no esté disponible de inmediato por
por ejemplo, si iOS le solicita al usuario que permita el acceso a estos datos. Sí
nil
en este caso.
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, en la imagen de Seattle, Washington.
![Mapa 3D de edificios en Seattle, Washington.](https://developers.google.com/static/maps/documentation/ios-sdk/images/ios-3d-buildings.png?hl=es-419)
Puedes inhabilitar los edificios 3D estableciendo los parámetros de configuración
GMSMapView
en Swift o 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 cubrir toda la región definida por el 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 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 se sigue llenando
todo el contenedor, pero el posicionamiento del texto y los controles, los gestos del mapa y la cámara
los movimientos se comportan como si se colocaran en un espacio más pequeño. Esto da como resultado
los siguientes cambios:
- Los movimientos de la cámara mediante llamadas a la API o la pulsación de botones (por ejemplo, brújula, mi ubicación) son relativas a la región con padding.
GMSMapView
.projection
muestra una proyección que incluye solo el elemento con padding. región.- Los controles de la IU se desplazan desde el borde del contenedor por el valor especificado la cantidad de puntos.
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 a lo largo de los bordes del panel de región, en verde, mientras que el mapa sigue ocupando todo el contenedor, se muestran en azul. En este ejemplo, puedes hacer flotante un menú sobre el lado derecho de el mapa sin oscurecer los controles.
Para agregar padding a tu mapa, crea un objeto UIEdgeInsets
y pásalo al
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 usar la configuración actual del sistema. Por ejemplo, puedes oscurecer o aclarar el esquema de colores del mapa según la hora del día o el uso en interiores o exteriores, del dispositivo.
Usa 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;