Pierwsze kroki

Wybierz platformę: Android iOS JavaScript

Aby używać stylów opartych na danych w przypadku granic, musisz utworzyć identyfikator mapy. Następnie musisz utworzyć nowy styl mapy, wybrać potrzebne warstwy elementów granic i powiązać styl z identyfikatorem mapy.

Tworzenie identyfikatora mapy

mapID to niepowtarzalny identyfikator, który reprezentuje pojedynczą instancję Mapy Google. W konsoli Google Cloud możesz w dowolnym momencie utworzyć identyfikatory mapy i zaktualizować styl powiązany z identyfikatorem mapy.

Zrzut ekranu konsoli Google Cloud

Tworzenie nowego stylu mapy

Aby utworzyć nowy styl mapy, postępuj zgodnie z instrukcjami w sekcji Zarządzanie stylami mapy. Po zakończeniu powiąż styl z nowo utworzonym identyfikatorem mapy.

Wybieranie warstw elementów

W konsoli Google Cloud możesz wybrać, które warstwy elementów mają być wyświetlane. Określa to, jakie rodzaje granic będą widoczne na mapie (np. miejscowości, stany itp.).

Zarządzanie warstwami elementów

  1. W konsoli Google Cloud otwórz stronę Style map.

  2. Jeśli pojawi się prośba, wybierz projekt.

  3. Wybierz styl mapy.

  4. Aby dodać lub usunąć warstwy, kliknij menu Warstwy elementów.

  5. Kliknij Zapisz , aby zapisać zmiany i udostępnić je na mapach.

Zrzut ekranu przedstawiający menu.

Aktualizowanie kodu inicjującego mapę

Ten krok wymaga powiązania identyfikatora mapy ze stylem z włączoną co najmniej jedną warstwą elementów. Aby sprawdzić, czy identyfikator mapy jest prawidłowo skonfigurowany w konsoli Cloud, sprawdź jego konfigurację w sekcji Zarządzanie mapami.

Swift

// A map ID using a style with one or more feature layers enabled

let mapID = GMSMapID(identifier: "YOUR_MAP_ID")
let camera = GMSCameraPosition(latitude: 40, longitude: -80, zoom: 7)
let options = GMSMapViewOptions()
options.camera = camera
options.mapID = mapID
let mapView = GMSMapView(options: options)

Objective-C

// A map ID using a style with one or more feature layers enabled

GMSMapID *mapID = [GMSMapID mapIDWithIdentifier:@"MAP_ID"];
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:40 longitude:-80 zoom:7];
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = camera;
options.mapID = mapID;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

Dodawanie warstw elementów do mapy

Aby uzyskać odniesienie do warstwy elementów na mapie, wywołaj mapView.featureLayer(of:) po zainicjowaniu mapy:

Swift

let layer = mapView.featureLayer(of: .locality)

Objective-C

GMSFeatureLayer *layer = [mapView featureLayerOfFeatureType:GMSFeatureTypeLocality];

Sprawdzanie możliwości mapy

Style oparte na danych w przypadku granic wymagają funkcji, które są włączone w konsoli Google Cloud i powiązane z identyfikatorem mapy. Identyfikatory mapy mogą się zmieniać, dlatego przed wywołaniem określonej funkcji (np. stylów opartych na danych) możesz wywołać mapView.mapCapabilities w GMSMapView, aby sprawdzić, czy jest ona dostępna.

Możesz też wykrywać zmiany w możliwościach mapy, subskrybując GMSViewDelegate. Ten przykład pokazuje, jak używać protokołu do sprawdzania wymagań dotyczących stylów opartych na danych.

Swift

class SampleViewController: UIViewController {

  private lazy var mapView: GMSMapView = {
    let options = GMSMapViewOptions()
    options.mapID = GMSMapID(identifier: "YOUR_MAP_ID")
    options.camera = GMSCameraPosition(latitude: 40, longitude: -80, zoom: 7)
    return GMSMapView(options: options)
  }()

  override func loadView() {
    self.view = mapView
    mapView.delegate = self
  }
}

extension SampleViewController: GMSMapViewDelegate {
  func mapView(_ mapView: GMSMapView, didChange mapCapabilities: GMSMapCapabilityFlags) {
    if (!mapCapabilities.contains(.dataDrivenStyling)) {
      // Data-driven styling is *not* available, add a fallback.
      // Existing feature layers are also unavailable.
    }
  }
}

Objective-C

@interface SampleViewController: UIViewController <GMSMapViewDelegate>
@end

@implementation SampleViewController
- (void)loadView {
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:40 longitude:-80 zoom:7];
  GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
  options.camera = camera;
  options.mapID = [GMSMapID mapIDWithIdentifier:@"MAP_ID"];
  GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
  mapView.delegate = self;
  self.view = mapView;
}

- (void)mapView:(GMSMapView *)mapView didChangeMapCapabilities:(GMSMapCapabilityFlags)mapCapabilities {
  if (!(mapCapabilities & GMSMapCapabilityFlagsDataDrivenStyling)) {
    // Data-driven styling is *not* available, add a fallback.
    // Existing feature layers are also unavailable.
  }
}
@end