Definisci un poligono di confine

Seleziona la piattaforma: Android iOS JavaScript

Per applicare stili per tratto e riempimento ai poligoni di confine in un livello di funzionalità:

  1. Crea una funzione di fabbrica dello stile che implementi la funzione FeatureLayer.StyleFactory a riga di comando. Questa funzione definisce la logica di stile per un livello di elementi.

  2. Chiama FeatureLayer.setFeatureStyle() per applicare la funzione della factory di stili al livello di funzionalità.

La mappa di esempio seguente mostra l'evidenziazione del poligono di confine per una singola regione in un livello di funzionalità Località.

Uno screenshot che mostra il poligono di Hana, Hawaii.

Creare una funzione di fabbrica di stili

La funzione di fabbrica dello stile viene applicata a ogni poligono nell'elemento interessato. nel momento in cui imposti la funzione nel livello delle caratteristiche. Questa funzione deve restituisce un FeatureStyle che specifica lo stile del poligono.

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

La funzione di fabbrica dello stile deve sempre restituire risultati coerenti quando viene applicata. Ad esempio, se vuoi colorare in modo casuale un insieme di elementi, la parte aleatoria non deve essere presente nella funzione di stile degli elementi, in quanto causerebbe risultati indesiderati.

Poiché questa funzione viene eseguita su ogni elemento di un livello, l'ottimizzazione è importante. 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 del tratto del bordo del poligono in pixel dello schermo. Il valore predefinito è 2.

  • Colore e opacità di riempimento del poligono nel formato di colore ARGB, come definito dalla classe 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. Ad esempio, potresti voler applicare uno stile a paesi, territori o regioni diversi. 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 Maps. Per ottenere un ID luogo:

La copertura varia in base alla regione. Per maggiori dettagli, consulta la sezione Copertura dei confini di Google.

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 luogo (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 di fabbrica di stili a un poligono nel livello di funzionalità Località. La funzione di fabbrica dello stile determina l'ID posizione della funzionalità utilizzando l'istanza PlaceFeature. Se l'ID luogo è per Hana, Hawaii, la funzione applica uno stile di riempimento e tratto personalizzato al poligono:

  1. 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à. degli elementi.

  2. 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() }

  3. Crea una funzione di fabbrica di stili e applicala al livello di funzionalità Località.

    L'esempio seguente applica la funzione solo se il luogo L'ID della caratteristica 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).