Dodaj zbiór danych do zbioru danych mapy i stylu

Wybierz platformę: Android iOS JavaScript

Na tej stronie dowiesz się, jak dodać zbiór danych do mapy i zastosować style.

Zrzut ekranu przedstawiający dane wielokątów ze stylami.

Wymagania wstępne

Zanim przejdziesz dalej, musisz mieć identyfikator mapy, styl mapy i identyfikator zbioru danych.

Powiązywanie identyfikatora zbioru danych ze stylem mapy

Aby określić styl elementów zbioru danych, zastosuj funkcję stylu do warstwy mapy na mapie. Warstwa mapy zbioru danych jest tworzona, gdy powiążesz zbiór danych ze stylem mapy.

Aby powiązać zbiór danych ze stylem mapy:

  1. W konsoli Google Cloud otwórz stronę Zbiory danych.
  2. Kliknij nazwę zbioru danych. Pojawi się strona Szczegóły zbioru danych.
  3. Kliknij kartę Podgląd.
  4. W sekcji Powiązane style mapy kliknij DODAJ STYL MAPY.
    Sekcja Powiązane style mapy z przyciskiem plus z napisem DODAJ STYL MAPY po prawej stronie.
  5. Zaznacz pole wyboru obok stylu mapy, który chcesz powiązać, a następnie kliknij ZAPISZ.

Stosowanie stylów do zbioru danych

Aby zastosować style do zbioru danych:

  1. Utwórz funkcję fabryki stylów, która implementuje FeatureLayer.StyleFactory interfejs. Ta funkcja określa logikę stylów dla zbioru danych.

  2. Wywołaj FeatureLayer.setFeatureStyle() , aby zastosować funkcję fabryki stylów do każdego elementu w zbiorze danych.

Tworzenie funkcji fabryki stylów

Funkcja fabryki stylów jest stosowana do każdego elementu w warstwie zbioru danych w momencie, gdy ustawisz tę funkcję w warstwie mapy. Ta funkcja musi zwracać obiekt FeatureStyle , który określa sposób stylizowania wielokąta.

Jeśli fabryka stylów zwróci wartość null, dany element nie zostanie wyrenderowany. Więcej informacji znajdziesz w artykule Usuwanie stylów z warstwy.

Maps SDK na Androida przekazuje Feature instancję do funkcji fabryki stylów. Instancja Feature reprezentuje metadane elementu, co umożliwia dostęp do metadanych w funkcji fabryki stylów.

Funkcja fabryki stylów powinna zawsze zwracać spójne wyniki. Jeśli na przykład chcesz losowo pokolorować zestaw elementów, losowa część nie powinna znajdować się w funkcji stylu elementu, ponieważ spowoduje to niepożądane wyniki.

Ponieważ ta funkcja działa na każdym elemencie w warstwie, optymalizacja jest ważna. Aby uniknąć wpływu na czas renderowania, wywołaj FeatureLayer.setFeatureStyle(null), gdy warstwa mapy nie jest już używana.

Możesz też wywołać FeatureLayer.getDatasetId(), aby uzyskać identyfikator zbioru danych.

Ustawianie kreski, wypełnienia i promienia punktu

Podczas stylizowania elementu w funkcji fabryki stylów możesz ustawić:

  • Kolor i nieprzezroczystość kreski obramowania zdefiniowane przez Color klasę. Wartość domyślna to przezroczysty (Color.TRANSPARENT).

  • Szerokość kreski obramowania w pikselach ekranu. Wartość domyślna to 2.

  • Kolor wypełnienia i przezroczystość zdefiniowane przez Color klasę. Wartość domyślna to przezroczysty (Color.TRANSPARENT).

  • Promień punktu elementu punktowego w zakresie od 0 do 128 pikseli.

Używanie prostych reguł stylu

Najprostszym sposobem na określenie stylu elementów jest zdefiniowanie FeatureLayer.StyleFactory, która zawsze tworzy identyczny obiekt FeatureStyle niezależnie od elementu. Zastosuj opcje stylu elementu bezpośrednio do warstwy mapy zbioru danych lub użyj ich w połączeniu z FeatureStyleFunction.

Używanie deklaratywnych reguł stylu

Możesz deklaratywnie ustawić reguły stylu na podstawie atrybutu elementu i zastosować je do całego zbioru danych. Możesz na przykład zwrócić wartość null z funkcji stylu elementu, jeśli chcesz, aby podzbiór elementów pozostał niewidoczny.

Na przykład użyj metody DatasetFeature.getDatasetAttributes(), aby zwrócić Map<String,String> atrybutów zbioru danych dla elementu. Następnie możesz dostosować styl elementu na podstawie jego atrybutów.

Ten przykład określa wartość atrybutu „highlightColor” każdego elementu zbioru danych, aby kontrolować styl:

Kotlin

// Get the dataset feature, so we can work with all of its attributes.
val datasetFeature: DatasetFeature = feature as DatasetFeature
// Create a switch statement based on the value of the // "highlightColor" attribute of the dataset. val attributeColor: MutableMap<String, String> = datasetFeature.getDatasetAttributes() when (attributeColor["highlightColor"]) { "Black" -> { ... } "Red" -> { ... } else -> { ... } }

Java

// Get the dataset feature, so we can work with all of its attributes.
DatasetFeature datasetFeature = (DatasetFeature) feature;
// Create a switch statement based on the value of the // "highlightColor" attribute of the dataset. Map<String, String> attributeColor = datasetFeature.getDatasetAttributes(); switch(attributeColor.get("highlightColor")) { case "Black": ... break; case "Red": ... break; default: // Color not defined. ... break; }

Stosowanie stylu do warstwy mapy zbioru danych

Ten przykład stosuje funkcję fabryki stylów do wielokąta w warstwie mapy zbioru danych. Funkcja fabryki stylów stosuje do wielokąta niestandardowy styl wypełnienia i kreski:

  1. Jeśli jeszcze tego nie zrobisz, wykonaj czynności opisane w sekcji Pierwsze kroki , aby utworzyć nowy identyfikator i styl mapy. Pamiętaj, aby włączyć warstwę mapy Zbiory danych.

  2. Po zainicjowaniu mapy uzyskaj odniesienie do warstwy mapy Zbiory danych.

    Kotlin

    private var datasetLayer: FeatureLayer? = null
    override fun onMapReady(googleMap: GoogleMap) { // Get the DATASET feature layer. datasetLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build())
    // Apply style factory function to DATASET layer. styleDatasetsLayer() }

    Java

    private FeatureLayer datasetLayer;
    @Override public void onMapReady(GoogleMap map) { // Get the DATASET feature layer. datasetLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build());
    // Apply style factory function to DATASET layer. styleDatasetsLayer(); }

  3. Utwórz funkcję fabryki stylów i zastosuj ją do warstwy mapy Zbiory danych.

    Poniższy przykład stosuje to samo wypełnienie i kreskę do wszystkich elementów w zbiorze danych.

    Kotlin

    private fun styleDatasetsLayer() {
    // Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
    // Check if the feature is an instance of DatasetFeature. if (feature is DatasetFeature) {
    return@StyleFactory FeatureStyle.Builder() // Define a style with green fill at 50% opacity and // solid green border. .fillColor(0x8000ff00.toInt()) .strokeColor(0xff00ff00.toInt()) .strokeWidth(2F) .build() } return@StyleFactory null }
    // Apply the style factory function to the feature layer. datasetLayer?.setFeatureStyle(styleFactory) }

    Java

    private void styleDatasetsLayer() {
    // Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
    // Check if the feature is an instance of DatasetFeature. if (feature instanceof DatasetFeature) {
    return new FeatureStyle.Builder() // Define a style with green fill at 50% opacity and solid green border. .fillColor(0x8000ff00) .strokeColor(0xff00ff00) .strokeWidth(2) .build(); } return null; };
    // Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }

Usuwanie stylów z warstwy

Aby usunąć style z warstwy, wywołaj FeatureLayer.setFeatureStyle(null).

Możesz też zwrócić wartość null z fabryki stylów, jeśli chcesz, aby podzbiór elementów pozostał niewidoczny.