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ć styl.

Zrzut ekranu przedstawiający dane wielokąta ze stylem.

Wymagania wstępne

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

Powiązanie identyfikatora zbioru danych ze stylem mapy

Aby nadać styl elementom zbioru danych, zastosuj funkcję stylu do warstwy mapy zbioru danych 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 plusa i napisem DODAJ STYL MAPY po prawej stronie.
  5. Zaznacz pola wyboru obok stylów mapy, które 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 interfejs FeatureLayer.StyleFactory. Ta funkcja definiuje logikę stylizacji zbioru danych.

  2. Wywołaj funkcję FeatureLayer.setFeatureStyle(), aby zastosować funkcję fabryczną stylu do każdego elementu w zbiorze danych.

Tworzenie funkcji fabryki stylów

Funkcja fabryczna stylu jest stosowana do wszystkich obiektów w warstwie zbioru danych w momencie ustawienia funkcji w warstwie mapy. Ta funkcja musi zwracać obiekt FeatureStyle, który określa sposób stylizowania wielokąta.

Jeśli fabryka stylów zwraca wartość null, dany element nie jest renderowany. Więcej informacji znajdziesz w artykule Usuwanie stylu z warstwy.

Pakiet Maps SDK na Androida przekazuje do funkcji fabryki stylów instancję Feature. Instancja Feature reprezentuje metadane funkcji, dając Ci dostęp do metadanych w funkcji fabryki stylów.

Funkcja fabryki stylu powinna zawsze zwracać spójne wyniki po zastosowaniu. Jeśli na przykład chcesz losowo pokolorować zestaw obiektów, losowanie nie powinno odbywać się w funkcji stylu obiektu, ponieważ spowodowałoby to niezamierzone wyniki.

Ta funkcja jest uruchamiana dla każdego obiektu w warstwie, dlatego optymalizacja jest ważna. Aby uniknąć wpływu na czas renderowania, wywołaj funkcję FeatureLayer.setFeatureStyle(null), gdy warstwa mapy nie jest już używana.

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

Ustawianie obrysu, wypełnienia i promienia punktu

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

  • Kolor i przezroczystość obramowania określone przez klasę Color. Wartością domyślną jest przezroczysty (Color.TRANSPARENT).

  • Szerokość obrysu obramowania w pikselach ekranu. Wartością domyślną jest 2.

  • Kolor wypełnienia i przezroczystość zdefiniowane przez klasę Color. Wartością domyślną jest przezroczysty (Color.TRANSPARENT).

  • Promień punktu obiektu punktowego od 0 do 128 pikseli.

Używanie prostych reguł stylu

Najprostszym sposobem na nadanie stylu elementom jest zdefiniowanie funkcji FeatureLayer.StyleFactory, która zawsze tworzy identyczny obiekt FeatureStyle, niezależnie od elementu. Opcje stylu cech możesz stosować bezpośrednio do warstwy mapy zbioru danych lub używać ich w połączeniu z FeatureStyleFunction.

Używanie reguł stylu deklaratywnego

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

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

W tym przykładzie określamy 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

W tym przykładzie funkcja fabryki stylów jest stosowana do wielokąta w warstwie mapy zbioru danych. Funkcja fabryki stylów stosuje do wielokąta niestandardowy styl wypełnienia i obrysu:

  1. Jeśli jeszcze nie masz identyfikatora mapy i stylu mapy, wykonaj czynności opisane w sekcji Pierwsze kroki, aby je utworzyć. Pamiętaj, aby włączyć warstwę mapy Zbiory danych.

  2. Uzyskaj odwołanie do warstwy mapy zbiorów danych podczas inicjowania mapy.

    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 zbiorów danych.

    W tym przykładzie do wszystkich obiektów w zbiorze danych stosowane jest to samo wypełnienie i obrys.

    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 stylu z warstwy

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

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