Na tej stronie dowiesz się, jak dodać zbiór danych do mapy i zastosować styl.
Wymagania wstępne
Zanim przejdziesz dalej, przygotuj identyfikator i styl mapy oraz identyfikator zbioru danych.
Powiąż identyfikator zbioru danych ze stylem mapy
Aby określić styl cech zbioru danych, zastosuj funkcję stylu do warstwy cech zbioru danych mapy. Warstwa cech zbioru danych jest tworzona, gdy powiąż zbiór danych ze stylem mapy.
Aby powiązać zbiór danych ze stylem mapy:
- W konsoli Google Cloud otwórz stronę Zbiory danych.
- Kliknij nazwę zbioru danych. Pojawi się strona Szczegóły zbioru danych.
- Kliknij kartę Podgląd.
- W sekcji Powiązane style mapy kliknij
DODAJ STYL MAPY
- Kliknij pola wyboru Style mapy, które chcesz powiązać, a następnie kliknij ZAPISZ.
Zastosuj style do zbioru danych
Aby zastosować style do zbioru danych:
Utwórz funkcję fabryczną stylu, która stosuje
FeatureLayer.StyleFactory
za pomocą prostego interfejsu online. Ta funkcja definiuje logikę określania stylu zbioru danych.Zadzwoń do nas
FeatureLayer.setFeatureStyle()
aby zastosować funkcję fabryki stylu do każdej cechy w zbiorze danych.
Utwórz funkcję fabryczną stylu
Funkcja fabryki stylu jest stosowana do każdej cechy w zbiorze danych
podczas ustawiania funkcji w warstwie cech. Ta funkcja musi
zwraca FeatureStyle
który określa styl wielokąta.
Jeśli fabryka stylu zwraca wartość null
, dana cecha nie jest renderowana. Więcej
więcej informacji znajdziesz w artykule Usuwanie stylu z warstwy.
Maps SDK na Androida przekazuje
Feature
do funkcji fabrycznej stylu. 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.
Możesz też wywołać FeatureLayer.getDatasetId()
, aby uzyskać identyfikator zbioru danych.
Ustawianie kreski, wypełnienia i promienia punktu
Podczas określania stylu elementu w funkcji ustawień fabrycznych możesz ustawić:
Kolor i przezroczystość obramowania, określone w parametrach
Color
zajęcia. Wartością domyślną jest przezroczysta (Color.TRANSPARENT
).Szerokość kreski obramowania w pikselach ekranu. Wartością domyślną jest 2.
Kolor i przezroczystość określone w parametrach
Color
zajęcia. Wartością domyślną jest przezroczysta (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 stylu cech bezpośrednio do warstwy cech zbioru danych lub użyj
je w połączeniu z FeatureStyleFunction
.
Używaj reguł stylu deklaratywnego
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, aby podzbiór obiektów pozostała
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 obiektu na podstawie jego 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:
W razie potrzeby wykonaj czynności opisane w Pierwsze kroki aby utworzyć nowy identyfikator i styl mapy. Pamiętaj, aby włączyć Zbiory danych warstwy cech.
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(); }Utwórz funkcję fabryczną stylu i zastosuj ją do zbiorów danych warstwy cech.
W przykładzie poniżej zastosowano to samo wypełnienie i kreskę do wszystkich obiektó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(2F) .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ć produkt null
ze swojej fabryki stylów, na przykład jeśli
chcesz, aby podzbiór cech pozostała niewidoczny.