Per applicare gli stili per tratto e riempimento ai poligoni limite in un livello di elementi:
Crea una funzione di fabbrica dello stile che implementi la funzione
FeatureLayer.StyleFactory
a riga di comando. Questa funzione definisce la logica dell'applicazione di stili per un livello di caratteristiche.Chiama
FeatureLayer.setFeatureStyle()
per applicare la funzione di fabbrica dello stile al livello delle caratteristiche.
La mappa di esempio seguente mostra l'evidenziazione del poligono di confine per una singola regione in un livello di funzionalità Località.
Crea una funzione di fabbrica dello stile
La funzione di fabbrica dello stile viene applicata a ogni poligono nell'elemento interessato.
nel momento in cui imposti la funzione sul livello delle caratteristiche. Questa funzione deve
restituisce un FeatureStyle
che specifica lo stile del poligono.
Maps SDK for Android trasmette un
Feature
alla funzione di stile di fabbrica. L'istanza Feature
rappresenta
dei metadati della caratteristica, consentendoti di accedere ai metadati nella fabbrica di stili.
personalizzata.
La funzione di fabbrica dello stile deve sempre restituire risultati coerenti quando è applicati. Ad esempio, per colorare in modo casuale un insieme di caratteristiche, parte casuale non deve avvenire nella funzione di stile delle caratteristiche, come nel caso potrebbero causare risultati indesiderati.
Poiché questa funzione viene eseguita su ogni caratteristica di un livello, l'ottimizzazione viene importanti. Per non influire sui tempi di rendering:
Abilita solo i livelli delle caratteristiche di cui hai bisogno.
Richiama
FeatureLayer.setFeatureStyle(null)
quando un livello delle funzionalità non è più in uso.
Imposta tratto e riempimento del poligono
Quando si definisce un poligono di confine nella funzione di fabbrica dello stile, puoi impostare:
Colore tratto e opacità del bordo del poligono nel formato colore ARGB. come definito
Color
: . Il valore predefinito è trasparente (0x00000000).Spessore tratto del bordo del poligono in pixel dello schermo. Il valore predefinito è 2.
Colore di riempimento e opacità del poligono nel formato colore ARGB, come definita dal
Color
: . Il valore predefinito è trasparente (0x00000000).
Cerca gli ID dei luoghi per scegliere come target le caratteristiche
Molte applicazioni applicano stili a un elemento in base alla sua posizione. Per Ad esempio, è possibile applicare lo stile a diversi paesi, territori regioni. La posizione dell'elemento è rappresentata da un ID luogo.
Gli ID luogo identificano in modo univoco un luogo nel database di Google Places e su Google Mappe. Per ottenere un ID luogo:
- Utilizzare le API Places e Geocoding per cercare regioni per nome e ottenere ID luogo per regioni all'interno di limiti specificati.
- Recuperare i dati dagli eventi di clic. Questa azione restituisce la caratteristica corrispondente a una regione selezionata, che fornisce accesso all'ID luogo e alla categoria del tipo di elemento.
La copertura varia in base alla regione. Consulta Copertura dei confini di Google per maggiori dettagli.
I nomi geografici sono disponibili da molte fonti, ad esempio Commissione per i nomi geografici dell'USGS, e ai Stati Uniti File di Gazetteer.
Utilizzare PlaceFeature per ottenere un ID luogo
La PlaceFeature
è una sottoclasse della classe Feature
.
Rappresenta un elemento geografico (un elemento con un ID luogo) che include
caratteristiche di tipo ADMINISTRATIVE_AREA_LEVEL_1
, ADMINISTRATIVE_AREA_LEVEL_2
,
COUNTRY
, LOCALITY
, POSTAL_CODE
e SCHOOL_DISTRICT
.
Quando l'ID luogo è disponibile,
Maps SDK for Android passa un'istanza di PlaceFeature
allo stile di fabbrica
in modo da poter determinare la posizione dell'elemento.
Esempio di stile di fabbrica
Questo esempio applica una funzione fabbrica di stile a un poligono nella località
delle caratteristiche. La funzione di fabbrica dello stile determina l'ID luogo dell'elemento
utilizzando l'istanza PlaceFeature
. Se l'ID luogo è per Hana, Hawaii,
la funzione applica uno stile di riempimento e tratto personalizzato al poligono:
Se non lo hai già fatto, segui la procedura descritta in Inizia per creare un nuovo ID mappa e un nuovo stile di mappa. Assicurati di attivare la casella Località. delle caratteristiche.
Ottieni un riferimento al livello degli elementi Località al momento dell'inizializzazione della mappa.
Java
private FeatureLayer localityLayer;
@Override public void onMapReady(GoogleMap map) { // Get the LOCALITY feature layer. localityLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build());
// Apply style factory function to LOCALITY layer. styleLocalityLayer(); }Kotlin
private var localityLayer: FeatureLayer? = null
override fun onMapReady(googleMap: GoogleMap) { // Get the LOCALITY feature layer. localityLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build())
// Apply style factory function to LOCALITY layer. styleLocalityLayer() }Creare una funzione di fabbrica dello stile e applicarla alla località delle caratteristiche.
L'esempio seguente applica la funzione solo se il luogo L'ID dell'elemento si riferisce a Hana, Hawaii ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo"). Se l'ID luogo specificato non è per Anna, Hawaii, lo stile non è applicati.
Java
private void styleLocalityLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature instanceof PlaceFeature) { PlaceFeature placeFeature = (PlaceFeature) feature;
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return new FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and solid purple border. .fillColor(0x80810FCB) .strokeColor(0xFF810FCB) .build(); } } return null; };
// Apply the style factory function to the feature layer. localityLayer.setFeatureStyle(styleFactory); }Kotlin
private fun styleLocalityLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature is PlaceFeature) { val placeFeature: PlaceFeature = feature as PlaceFeature
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return@StyleFactory FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and // solid purple border. .fillColor(0x80810FCB.toInt()) .strokeColor(0xFF810FCB.toInt()) .build() } } return@StyleFactory null }
// Apply the style factory function to the feature layer. localityLayer?.setFeatureStyle(styleFactory) }
Rimuovere lo stile da un livello
Per rimuovere lo stile da un livello, chiama FeatureLayer.setFeatureStyle(null)
.