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ąż identyfikator 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 pokazujący przycisk DODAJ STYL 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 do zbioru danych:

  1. Utwórz funkcję fabryczną stylu, która stosuje FeatureLayer.StyleFactory za pomocą prostego interfejsu online. Ta funkcja definiuje logikę określania stylu zbioru danych.

  2. Zadzwoń do nas FeatureLayer.setFeatureStyle() aby zastosować funkcję fabryki stylu do każdej cechy w zbiorze danych.

Utwórz funkcję fabryczną stylu

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

Jeśli fabryka stylu zwraca wartość null, dana cecha nie jest renderowana. Więcej informacji znajdziesz w sekcji Usuwanie stylizacji z poziomu.

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

Funkcja fabryczna stylu powinna zawsze zwracać spójne wyniki, jeśli jest zastosowano. Na przykład jeśli chcesz losowo pokolorować zestaw obiektów, część losowa nie powinna mieć miejsca w funkcji stylu cech, ponieważ mogą spowodować niezamierzone skutki.

Ponieważ funkcja ta działa po wszystkich elementach w warstwie, optymalizacja są ważne. Aby uniknąć wpływu na czas renderowania, wywołaj funkcję FeatureLayer.setFeatureStyle(null), gdy warstwa cech 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ść kreski obramowania 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 obiektu punktowego o zakresie od 0 do 128 pikseli.

Używanie prostych reguł stylu

Najprostszym sposobem określenia stylu cech jest zdefiniowanie atrybutu FeatureLayer.StyleFactory który zawsze tworzy taki sam obiekt FeatureStyle, niezależnie od funkcji. Zastosuj opcje stylizacji cech bezpośrednio do warstwy cech zbioru danych lub użyj ich w połączeniu z elementem FeatureStyleFunction.

Używanie reguł deklaratywnych

Możesz ustawić reguły stylu deklaratywnie oparte na atrybucie cechy, i zastosować je w całym zbiorze danych. Możesz zwrócić null ze swojego funkcji stylu cech, na przykład jeśli chcesz zachować podzbiór obiektów niewidoczny.

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

Ten przykład określa wartość atrybutu „highlightColor” każdej wartości w celu kontrolowania stylu:

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 zastosowano fabryczną funkcję stylu do wielokąta w zbiorze danych warstwy cech. Funkcja fabryki stylu stosuje niestandardowy styl wypełnienia i kreski do wielokąta:

  1. W razie potrzeby wykonaj czynności opisane w Pierwsze kroki aby utworzyć nowy identyfikator i styl mapy. Pamiętaj, aby włączyć warstwę danych Zbiory danych.

  2. Uzyskaj odwołanie do warstwy cech Zbiory danych przy zainicjowaniu 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 funkcji w Datasets.

    W tym przykładzie do wszystkich obiektów w 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 stylu z warstwy

Aby usunąć styl z warstwy, wywołaj 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.