Questa pagina mostra come aggiungere un set di dati a una mappa e applicare uno stile.
Prerequisiti
Prima di procedere, devi disporre di un ID mappa, uno stile di mappa e un ID set di dati.
Associare un ID set di dati a uno stile di mappa
Per applicare uno stile alle caratteristiche di un set di dati, devi applicare 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:
- Nella console Google Cloud, vai alla pagina Set di dati.
- Fai clic sul nome del set di dati. Viene visualizzata la pagina Dettagli set di dati.
- Fai clic sulla scheda Anteprima.
- Nella sezione Stili di mappa associati, fai clic
AGGIUNGI STILE DI MAPPA.
- Fai clic sulle caselle di controllo degli stili di mappa da associare e poi su SALVA.
Applicare stili al set di dati
Per applicare stili a un set di dati:
Crea una funzione di fabbrica di stili che implementi l'
FeatureLayer.StyleFactoryinterfaccia. Questa funzione definisce la logica di stile per un set di dati.Chiama
FeatureLayer.setFeatureStyle()per applicare la funzione di fabbrica di stili a ogni caratteristica del set di dati.
Creare una funzione di fabbrica di stili
La funzione di factory di stili viene applicata a ogni caratteristica del livello del set di dati nel momento in cui imposti la funzione sul livello degli elementi. Questa funzione deve
restituire un FeatureStyle
oggetto che specifica come applicare lo stile al poligono.
Se la fabbrica di stili restituisce null, la caratteristica specificata non viene sottoposta a rendering. Per saperne di più, consulta Rimuovere lo stile da un livello.
Maps SDK for Android passa un'
Feature
istanza alla funzione di fabbrica di stili. L'istanza Feature rappresenta i metadati della caratteristica, consentendoti di accedere ai metadati nella funzione di fabbrica di stili.
La funzione di fabbrica di stili deve sempre restituire risultati coerenti quando viene applicata. Ad esempio, se vuoi colorare in modo casuale un insieme di caratteristiche, la parte casuale non deve avvenire nella funzione di stile delle caratteristiche, in quanto ciò causerebbe risultati imprevisti.
Poiché questa funzione viene eseguita su ogni caratteristica 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.
Impostare il raggio del tratto, del riempimento e del punto
Quando applichi uno stile a una caratteristica nella funzione di fabbrica di stili, puoi impostare:
Colore e opacità del tratto del bordo come definito dalla
Colorclasse. Il valore predefinito è trasparente (Color.TRANSPARENT).Larghezza del tratto del bordo in pixel dello schermo. Il valore predefinito è 2.
Colore di riempimento e opacità come definito dalla
Colorclasse. Il valore predefinito è trasparente (Color.TRANSPARENT).Raggio del punto di una caratteristica punto compreso tra 0 e 128 pixel.
Utilizzare regole di stile semplici
Il modo più semplice per applicare uno stile alle caratteristiche è definire un FeatureLayer.StyleFactory che crei sempre un oggetto FeatureStyle identico, indipendentemente dalla caratteristica. Applica le opzioni di stile degli elementi direttamente a un livello degli elementi del set di dati o utilizzale insieme a un FeatureStyleFunction.
Utilizzare regole di stile dichiarative
Puoi impostare le 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 delle caratteristiche, ad esempio se vuoi che un sottoinsieme di caratteristiche rimanga invisibile.
Ad esempio, utilizza il DatasetFeature.getDatasetAttributes() metodo per restituire un
Map<String,String> degli attributi del set di dati per una caratteristica. Puoi quindi personalizzare lo stile della caratteristica in base ai relativi attributi.
Questo esempio determina il valore dell'attributo "highlightColor" di ogni caratteristica 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; }
Applicare lo stile al livello degli elementi del set di dati
Questo esempio applica una funzione factory di stili a un poligono nel livello degli elementi del set di dati. La funzione di fabbrica di stili applica uno stile di riempimento e tratto personalizzato al poligono:
Se non l'hai già fatto, segui i passaggi descritti nella guida introduttiva per creare un nuovo ID mappa e uno stile di mappa. Assicurati di attivare il livello degli elementi Set di dati.
Ottieni un riferimento al livello degli elementi dei set di dati 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(); }Crea una funzione di fabbrica di stili e applicala al livello degli elementi dei set di dati.
L'esempio seguente applica lo stesso riempimento e 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); }
Rimuovere lo stile da un livello
Per rimuovere lo stile da un livello, chiama FeatureLayer.setFeatureStyle(null).
Puoi anche restituire null dalla fabbrica di stili, ad esempio se vuoi che un sottoinsieme di caratteristiche rimanga invisibile.