Aggiungi una mappa con stili

Seleziona la piattaforma: Android iOS JavaScript

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

Panoramica

Con le opzioni di stile puoi personalizzare la presentazione degli stili di mappa standard di Google, modificando la visualizzazione di elementi come strade, parchi, attività e altri punti di interesse. Ciò significa che puoi enfatizzare determinati componenti della mappa o fare in modo che la mappa si integri con lo stile della tua app.

Lo stile funziona solo sul tipo di mappa kGMSTypeNormal.

Applica stili alla mappa

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

Utilizza un file JSON

Gli esempi seguenti mostrano la chiamata di GMSMapStyle(...) e il passaggio 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 options = GMSMapViewOptions()
    options.camera = camera
    let mapView = GMSMapView(options: options)

    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];
  GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
  options.camera = camera;
  GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
  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 denominato style.json al progetto e incolla la seguente dichiarazione di stile JSON per lo stile della modalità notturna:

Utilizza una risorsa stringa

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

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 options = GMSMapViewOptions()
    options.camera = camera
    let mapView = GMSMapView(options: options)

    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];
  GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
  options.camera = camera;
  GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
  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 della variabile kMapStyle:

Dichiarazioni di stile JSON

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

  • I selettori specificano i componenti geografici di cui puoi applicare lo stile sulla mappa. Sono inclusi strade, parchi, specchi d'acqua e altro ancora, oltre alle relative etichette. I selettori includono caratteristiche ed elementi, specificati come proprietà featureType ed elementType.
  • Gli stili sono proprietà di colore e visibilità che puoi applicare agli elementi della mappa. Definiscono il colore visualizzato tramite una combinazione di tonalità, colore, luminosità e valori gamma.

Consulta il riferimento per gli stili per una descrizione dettagliata delle opzioni di stile JSON.

Procedura guidata per gli stili di Maps Platform

Utilizza la procedura guidata per gli stili di Maps Platform per generare rapidamente un oggetto di stile JSON. Maps SDK for iOS supporta le stesse dichiarazioni di stile dell'API Maps JavaScript.

Esempi di codice completi

Il repository ApiDemos su GitHub include esempi che mostrano l'utilizzo degli stili.

Passaggio successivo

Scopri come nascondere gli elementi sulla mappa con l'applicazione di uno stile.