Pierwsze kroki

Wybierz platformę: Android iOS JavaScript

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

Tworzenie identyfikatora mapy

mapID to niepowtarzalny identyfikator, który reprezentuje pojedynczą instancję Mapy Google. Identyfikatory map i powiązane z nimi style możesz tworzyć i aktualizować w dowolnym momencie w konsoli Google Cloud.

Zrzut ekranu konsoli Google Cloud

Tworzenie nowego stylu mapy

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

Wybieranie warstw cech

W konsoli Google Cloud możesz wybrać, które warstwy funkcji mają być wyświetlane. Określa ona, jakie rodzaje granic mają być widoczne na mapie (np. granice miejscowości, stanów itp.).

Zarządzanie warstwami funkcji

  1. W konsoli Google Cloud otwórz stronę Styl mapy.

  2. Jeśli pojawi się monit, wybierz projekt.

  3. Wybierz styl mapy.

  4. Aby dodać lub usunąć warstwy, kliknij menu Warstwy funkcji.

  5. Aby zapisać zmiany i uzyskać do nich dostęp na mapach, kliknij Zapisz.

Zrzut ekranu pokazujący menu

Aktualizowanie kodu inicjalizacji mapy

Ten krok wymaga powiązania identyfikatora mapy ze stylem, w którym włączono co najmniej 1 warstwę obiektów. Aby sprawdzić, czy identyfikator mapy jest prawidłowo skonfigurowany w konsoli Google Cloud, sprawdź jego ustawienia 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 mapView = GMSMapView(frame: .zero, mapID: mapID, camera: GMSCameraPosition(latitude: 40, longitude: -80, zoom: 7))

Objective-C

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

GMSMapID *mapID = [GMSMapID mapIDWithIdentifier:@"MAP_ID"];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero mapID:mapID camera:[GMSCameraPosition cameraWithLatitude:40 longitude:-80 zoom:7]];

Dodawanie warstw obiektów do mapy

Aby uzyskać odwołanie do warstwy obiektów na mapie, wywołaj funkcję mapView.featureLayer(of:), gdy mapę inicjuje:

Swift

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

Objective-C

GMSFeatureLayer *layer = [mapView featureLayerOfFeatureType:GMSFeatureTypeLocality];

Sprawdzanie możliwości mapy

Stylizacja granic na podstawie danych wymaga funkcji włączonych w konsoli Google Cloud i powiązanych z identyfikatorem mapy. Identyfikatory map mogą się zmieniać, dlatego możesz wywołać funkcję mapView.mapCapabilities na obiekcie GMSMapView, aby sprawdzić, czy dana funkcja (np. stylizacja oparta na danych) jest dostępna przed jej wywołaniem.

Możesz też wykryć zmiany w funkcjach map, subskrybując GMSViewDelegate. Ten przykład pokazuje, jak za pomocą protokołu sprawdzić wymagania dotyczące stylizacji opartej na danych.

Swift

class SampleViewController: UIViewController {

  private lazy var mapView: GMSMapView = GMSMapView(frame: .zero, mapID: GMSMapID(identifier: "YOUR_MAP_ID"), camera: GMSCameraPosition(latitude: 40, longitude: -80, zoom: 7))

  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 {
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero mapID:[GMSMapID mapIDWithIdentifier:@"MAP_ID"] camera:[GMSCameraPosition cameraWithLatitude:40 longitude:-80 zoom:7]];
  mapView.delegete = 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