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 stylami.

Wymagania wstępne

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

Powiązanie identyfikatora zbioru danych ze stylem mapy

Aby nadać styl elementom zbioru danych, zastosuj funkcję stylizacji do warstwy elementów zbioru danych na mapie. Warstwę obiektów zbioru danych tworzysz, 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.
    Zrzut ekranu z przyciskiem DODAJ STYLU MAPY
  5. Kliknij 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 w zbiorze danych:

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

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

Tworzenie funkcji fabrycznej stylu

Funkcja fabryki stylów jest stosowana do każdej cechy w warstwie zbioru danych w momencie jej ustawienia w warstwie funkcji. Ta funkcja musi zwracać obiekt FeatureStyle, który określa sposób stylizacji wielokąta.

Jeśli fabryka stylów zwróci wartość null, dana funkcja nie zostanie wyrenderowana. Więcej informacji znajdziesz w sekcji Usuwanie stylizacji z poziomu.

Pakiet SDK Map na Androida przekazuje do funkcji fabryki stylów instancję Feature. Inicjalność Feature reprezentuje metadane funkcji, zapewniając dostęp do metadanych w funkcji fabryki stylów.

Funkcja style factory powinna zawsze zwracać spójne wyniki po jej zastosowaniu. Jeśli na przykład chcesz losowo zabarwić zestaw cech, część losowa nie powinna być uwzględniana w funkcji stylu cech, ponieważ może to spowodować niezamierzone wyniki.

Ta funkcja działa na każdej funkcji w warstwie, dlatego optymalizacja jest ważna. Aby uniknąć wpływu na czasy renderowania, wywołaj funkcję FeatureLayer.setFeatureStyle(null), gdy warstwa funkcji nie jest już używana.

Aby uzyskać identyfikator zbioru danych, możesz też wywołać funkcję FeatureLayer.getDatasetId().

Ustawianie krzywizny, wypełnienia i promienia punktu

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

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

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

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

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

Używanie prostych reguł stylów

Najprostszym sposobem stylizowania funkcji jest zdefiniowanie funkcji FeatureLayer.StyleFactory, która zawsze tworzy identyczny obiekt FeatureStyle, niezależnie od funkcji. Zastosuj opcje stylów cech bezpośrednio do warstwy cech zbioru danych lub użyj ich w połączeniu z elementem FeatureStyleFunction.

Używanie deklaratywnych reguł stylu

Możesz deklaratywnie ustawiać reguły stylów na podstawie atrybutu funkcji i stosować je w całym zbiorze danych. Funkcja stylu funkcji może zwracać wartość null, na przykład jeśli chcesz, aby podzbiór funkcji pozostał niewidoczny.

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

W tym przykładzie określamy wartość atrybutu „highlightColor” każdej cechy w danym zbiorze danych, aby kontrolować stylizację:

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; }

Zastosuj styl do warstwy cech zbioru danych

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

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

  2. Początkowy odczyt warstwy danych z zbiorów 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 funkcji w Datasets.

    W tym przykładzie do wszystkich obiektów w zbiorze danych zastosowano ten sam kolor wypełnienia i obrysu.

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

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

Możesz też zwrócić null z fabryki stylów, jeśli na przykład chcesz, aby niektóre funkcje pozostały niewidoczne.