En esta página, se ofrece una guía rápida para dar estilo a tu mapa, utilizando el modo nocturno como ejemplo.
Descripción general
Con las opciones de diseño, puedes personalizar la presentación de los diseños estándares de los mapas de Google y cambiar la representación visual de ciertos componentes, como rutas, parques, negocios y otros lugares de interés. Esto significa que puedes resaltar determinados componentes del mapa o hacer que este complemente el estilo de tu app.
El diseño solo funciona en el tipo de mapa kGMSTypeNormal.
Cómo aplicar diseños a tu mapa
Para aplicar diseños de mapa personalizados a un mapa, llama a GMSMapStyle(...) a fin de crear una instancia de GMSMapStyle y pasa una URL para un archivo JSON local o una string JSON que contenga definiciones de diseño. Asigna la instancia de GMSMapStyle a la propiedad mapStyle del mapa.
Usa un archivo JSON
En los siguientes ejemplos, se muestra cómo llamar a GMSMapStyle(...) y pasar una URL para un archivo local:
Swift
import GoogleMaps
class MapStyling: UIViewController {
// Set the status bar style to complement night-mode.
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
override func loadView() {
let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 14.0)
let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
do {
// Set the map style by passing the URL of the local file.
if let styleURL = Bundle.main.url(forResource: "style", withExtension: "json") {
mapView.mapStyle = try GMSMapStyle(contentsOfFileURL: styleURL)
} else {
NSLog("Unable to find style.json")
}
} catch {
NSLog("One or more of the map styles failed to load. \(error)")
}
self.view = mapView
}
}
Objective‑C
#import "MapStyling.h"
@import GoogleMaps;
@interface MapStyling ()
@end
@implementation MapStyling
// Set the status bar style to complement night-mode.
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
- (void)loadView {
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
longitude:151.20
zoom:12];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView.myLocationEnabled = YES;
NSBundle *mainBundle = [NSBundle mainBundle];
NSURL *styleUrl = [mainBundle URLForResource:@"style" withExtension:@"json"];
NSError *error;
// Set the map style by passing the URL for style.json.
GMSMapStyle *style = [GMSMapStyle styleWithContentsOfFileURL:styleUrl error:&error];
if (!style) {
NSLog(@"The style definition could not be loaded: %@", error);
}
mapView.mapStyle = style;
self.view = mapView;
}
@end
Para definir las opciones de estilo, agrega un archivo nuevo a tu proyecto llamado style.json y pega la siguiente declaración de estilo JSON para el estilo de modo nocturno:
En los siguientes ejemplos, se muestra cómo llamar a GMSMapStyle(...) y pasar un recurso de strings:
Swift
class MapStylingStringResource: UIViewController {
let MapStyle = "JSON_STYLE_GOES_HERE"
// Set the status bar style to complement night-mode.
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
override func loadView() {
let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 14.0)
let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
do {
// Set the map style by passing a valid JSON string.
mapView.mapStyle = try GMSMapStyle(jsonString: MapStyle)
} catch {
NSLog("One or more of the map styles failed to load. \(error)")
}
self.view = mapView
}
}
Objective‑C
@implementation MapStylingStringResource
// Paste the JSON string to use.
static NSString *const kMapStyle = @"JSON_STYLE_GOES_HERE";
// Set the status bar style to complement night-mode.
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
- (void)loadView {
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
longitude:151.20
zoom:12];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView.myLocationEnabled = YES;
NSError *error;
// Set the map style by passing a valid JSON string.
GMSMapStyle *style = [GMSMapStyle styleWithJSONString:kMapStyle error:&error];
if (!style) {
NSLog(@"The style definition could not be loaded: %@", error);
}
mapView.mapStyle = style;
self.view = mapView;
}
@end
Para definir las opciones de diseño, pega la siguiente string de diseño como el valor de la variable kMapStyle:
En los mapas con estilos, se utilizan dos conceptos para aplicar colores y otros cambios de estilo a un mapa:
Los selectores especifican los componentes geográficos a los que puedes ajustarles el estilo en el mapa. Estos componentes incluyen rutas, parques y masas de agua, entre otros, así como sus respectivas etiquetas. Los selectores incluyen características y elementos, que se especifican como propiedades featureType y elementType.
Los parámetros de estilo son propiedades de color y visibilidad que puedes aplicar a los elementos del mapa. Definen el color de visualización a través de una combinación de valores de tonalidad, color y luminosidad o gamma.
Consulta la referencia de estilo para acceder a una descripción detallada de las opciones de diseño del objeto JSON.
Utiliza el Asistente de diseño de Maps Platform como una forma rápida de generar un objeto de diseño JSON. El SDK de Maps para iOS admite las mismas declaraciones de estilo que la API de Maps JavaScript.
Muestras de código completas
El repositorio ApiDemos en GitHub incluye ejemplos que muestran el uso de los ajustes de diseño.