Aggiungi una mappa con stili

Seleziona la piattaforma: Android iOS JavaScript

Questa pagina è una breve guida per applicare uno stile alla mappa, utilizzando la modalità notturna come esempio.

Panoramica

Con le opzioni di stile puoi personalizzare la presentazione dei stili di mappa, cambiando la visualizzazione visiva di elementi quali strade, parchi attività commerciali e altri punti d'interesse. Ciò significa che puoi enfatizzare particolari componenti della mappa o adattarla allo stile del tuo dell'app.

Gli stili funzionano solo sul tipo di mappa kGMSTypeNormal.

Applicazione di stili alla mappa

Per applicare stili di mappa personalizzati a una mappa, chiama GMSMapStyle(...) per creare una GMSMapStyle, passando un URL per un file JSON locale o un file JSON stringa contenente definizioni di stile. Assegna l'istanza GMSMapStyle alla proprietà mapStyle della mappa.

Utilizzo di un file JSON

Gli esempi seguenti mostrano la chiamata a GMSMapStyle(...) e il trasferimento di un URL per un file locale:

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
      

Per definire le opzioni di stile, aggiungi un nuovo file al tuo progetto denominato style.json. e incolla la seguente dichiarazione di stile JSON per lo stile in modalità notturna:

Utilizzo di una risorsa stringa

Gli esempi seguenti mostrano la chiamata a GMSMapStyle(...) e il trasferimento di una stringa risorsa:

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
      

Per definire le opzioni di stile, incolla la seguente stringa di stile come valore di la variabile kMapStyle:

Dichiarazioni di stile JSON

Le mappe con stili utilizzano due concetti per applicare colori e altre modifiche di stile a un mappa:

  • I selettori specificano i componenti geografici che puoi stilizzare sulla mappa. tra cui strade, parchi, masse d'acqua oltre alle relative etichette. I selettori includono le caratteristiche e elements, specificati come featureType e elementType proprietà.
  • I parametri di stile sono proprietà di colore e visibilità che puoi applicare agli elementi della mappa. Definiscono il colore visualizzato tramite una combinazione di valori di tonalità, colore e luminosità/gamma.

Consulta il riferimento dello stile per una descrizione dettagliata del Opzioni per gli stili JSON.

Procedura guidata per gli stili di Maps Platform

Utilizza la procedura guidata degli stili di Maps Platform come metodo rapido per generare un oggetto di stile JSON. Maps SDK per iOS supporta dichiarazioni con lo stesso stile dell'API Maps JavaScript.

Esempi di codice completi

Il repository ApiDemos su GitHub include esempi che dimostrano l'uso degli stili.

Passaggio successivo

Scopri come nascondere gli elementi sulla mappa con lo stile.