Aggiungi set di dati a una mappa e a un set di dati di stili

Seleziona la piattaforma: Android iOS JavaScript

Questa pagina mostra come aggiungere un set di dati a una mappa e applicare lo stile.

Uno screenshot che mostra i dati dei poligoni con stile.

Prerequisiti

Prima di procedere, devi avere un ID mappa, uno stile di mappa e un ID set di dati.

Associa un ID set di dati a uno stile di mappa

Per applicare uno stile agli elementi di un set di dati, applica una funzione di stile al livello degli elementi del set di dati di una mappa. Il livello degli elementi del set di dati viene creato quando associ un set di dati a uno stile di mappa.

Per associare il set di dati allo stile di mappa:

  1. Nella console Google Cloud, vai alla pagina Set di dati.
  2. Fai clic sul nome del set di dati. Viene visualizzata la pagina Dettagli set di dati.
  3. Fai clic sulla scheda Anteprima.
  4. Nella sezione Stili di mappa associati, fai clic su AGGIUNGI STILE DI MAPPA.
    La sezione Stili di mappa associati con un pulsante Più che riporta la dicitura AGGIUNGI STILE DI MAPPA a destra.
  5. Fai clic sulle caselle di controllo degli stili di mappa da associare e poi su SALVA.

Applica gli stili al set di dati

Per applicare gli stili a un set di dati:

  1. Crea una funzione factory di stile che implementi l'interfaccia FeatureLayer.StyleFactory. Questa funzione definisce la logica di stile per un set di dati.

  2. Chiama FeatureLayer.setFeatureStyle() per applicare la funzione di stile factory a ogni elemento del set di dati.

Crea una funzione factory di stile

La funzione di stile factory viene applicata a ogni elemento nel livello del set di dati nel momento in cui imposti la funzione sul livello degli elementi. Questa funzione deve restituire un oggetto FeatureStyle che specifica lo stile del poligono.

Se la factory di stile restituisce null, la caratteristica specificata non viene visualizzata. Per saperne di più, consulta Rimuovi lo stile da un livello.

Maps SDK for Android passa un'istanza Feature alla funzione factory di stile. L'istanza Feature rappresenta i metadati della caratteristica, consentendoti di accedere ai metadati nella funzione di stile factory.

La funzione factory di stile deve sempre restituire risultati coerenti quando viene applicata. Ad esempio, se vuoi colorare in modo casuale un insieme di elementi, la parte casuale non deve essere eseguita nella funzione di stile degli elementi, poiché ciò causerebbe risultati indesiderati.

Poiché questa funzione viene eseguita su ogni elemento di un livello, l'ottimizzazione è importante. Per evitare di influire sui tempi di rendering, chiama FeatureLayer.setFeatureStyle(null) quando un livello degli elementi non è più in uso.

Puoi anche chiamare FeatureLayer.getDatasetId() per ottenere l'ID del set di dati.

Imposta tratto, riempimento e raggio del punto

Quando applichi uno stile a una caratteristica nella funzione di stile factory, puoi impostare:

  • Colore e opacità del tratto del bordo, come definito dalla classe Color. Il valore predefinito è trasparente (Color.TRANSPARENT).

  • Larghezza del tratto del bordo in pixel dello schermo. Il valore predefinito è 2.

  • Colore e opacità di riempimento definiti dalla classe Color. Il valore predefinito è trasparente (Color.TRANSPARENT).

  • Raggio del punto di una caratteristica punto compreso tra 0 e 128 pixel.

Utilizza regole di stile semplici

Il modo più semplice per applicare uno stile agli elementi è definire un FeatureLayer.StyleFactory che crei sempre un oggetto FeatureStyle identico, indipendentemente dall'elemento. Applica le opzioni di stile degli elementi direttamente a un livello degli elementi del set di dati o utilizzale insieme a un FeatureStyleFunction.

Utilizza regole di stile dichiarative

Puoi impostare regole di stile in modo dichiarativo in base a un attributo della caratteristica e applicarle all'intero set di dati. Puoi restituire null dalla funzione di stile degli elementi, ad esempio se vuoi che un sottoinsieme di elementi rimanga invisibile.

Ad esempio, utilizza il metodo DatasetFeature.getDatasetAttributes() per restituire un Map<String,String> di attributi del set di dati per una caratteristica. Puoi quindi personalizzare lo stile della caratteristica in base ai suoi attributi.

Questo esempio determina il valore dell'attributo "highlightColor" di ogni elemento di un set di dati per controllare lo stile:

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

Applica lo stile al livello degli elementi del set di dati

Questo esempio applica una funzione factory di stile a un poligono nel livello degli elementi del set di dati. La funzione di stile factory applica uno stile di riempimento e tratto personalizzato al poligono:

  1. Se non l'hai ancora fatto, segui i passaggi descritti in Inizia per creare un nuovo ID mappa e un nuovo stile di mappa. Assicurati di attivare il livello degli elementi Set di dati.

  2. Ottieni un riferimento al livello degli elementi di Datasets quando la mappa viene inizializzata.

    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. Crea una funzione di stile factory e applicala al livello degli elementi dei set di dati.

    L'esempio seguente applica lo stesso riempimento e lo stesso tratto a tutte le caratteristiche del set di dati.

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

Rimuovi lo stile da un livello

Per rimuovere lo stile da un livello, chiama FeatureLayer.setFeatureStyle(null).

Puoi anche restituire null dalla tua factory di stili, ad esempio se vuoi che un sottoinsieme di elementi rimanga invisibile.