Estilizar um polígono de limites

Selecione a plataforma: Android iOS JavaScript

Para aplicar estilos para traçados e preenchimentos a polígonos de limites em uma camada de elementos:

  1. Criar uma função de fábrica de estilo que implemente FeatureLayer.StyleFactory interface gráfica do usuário. Essa função define a lógica de estilo de uma camada de elementos.

  2. Ligação FeatureLayer.setFeatureStyle() para aplicar a função de fábrica de estilo à camada de elementos.

O mapa de exemplo a seguir demonstra o destaque do polígono de limites de um região única em uma camada de elementos de localidade.

Captura de tela mostrando o polígono de Hana, Havaí.

Criar uma função de fábrica de estilo

A função de fábrica de estilo é aplicada a todos os polígonos no elemento afetado camada no momento em que define a função na camada de elementos. Essa função deve retornar um FeatureStyle; que especifica como o estilo do polígono.

O SDK do Maps para Android transmite um Feature para a função de fábrica de estilo. A instância Feature representa metadados do recurso, o que dá acesso aos metadados da fábrica de estilo função.

A função de fábrica de estilo deve sempre retornar resultados consistentes quando é aplicada. Por exemplo, se você quisesse colorir aleatoriamente um conjunto de elementos, a parte aleatória não deve ocorrer na função de estilo do elemento, pois isso pode causar resultados não intencionais.

Como essa função é executada em todos os elementos de uma camada, a otimização é importante. Para não afetar os tempos de renderização:

  • Ative somente as camadas de elementos necessárias.

  • Chamar FeatureLayer.setFeatureStyle(null) quando uma camada de elementos não estiver mais em uso.

Definir traço e preenchimento do polígono

Ao estilizar um polígono de limites na função de fábrica de estilo, é possível definir:

  • Cor do traço e opacidade da borda do polígono no formato de cores ARGB conforme definido pelo Color . O valor padrão é transparente (0x00000000).

  • Largura do traço da borda do polígono em pixels da tela. O valor padrão é 2.

  • Cor de preenchimento e opacidade do polígono no formato de cores ARGB, conforme definido pelo Color . O valor padrão é transparente (0x00000000).

Pesquisar IDs de lugares para segmentar elementos

Muitos aplicativos aplicam estilos a um recurso com base no local. Para exemplo, convém aplicar o estilo a diferentes países, territórios ou ou várias regiões. O local do elemento é representado ID de lugar.

IDs de lugares identificam um local de forma exclusiva no banco de dados do Google Places e no Google Google Maps. Para conseguir um ID de lugar:

A cobertura varia de acordo com a região. Consulte Cobertura de limites do Google para mais detalhes.

Os nomes geográficos estão disponíveis em muitas fontes, como Conselho de Nomes Geográficos do USGS, e o Estados Unidos Arquivos do visualizador.

Usar PlaceFeature para conseguir um ID de lugar

O PlaceFeature é uma subclasse da classe Feature. Ela representa um elemento de lugar (um elemento com um ID de lugar) que inclui atributos do tipo ADMINISTRATIVE_AREA_LEVEL_1, ADMINISTRATIVE_AREA_LEVEL_2, COUNTRY, LOCALITY, POSTAL_CODE e SCHOOL_DISTRICT.

Quando o ID de lugar está disponível, o O SDK do Maps para Android transmite uma instância de PlaceFeature para a fábrica de estilos para determinar a localização do elemento.

Exemplo de fábrica de estilo

Este exemplo aplica uma função de fábrica de estilo a um polígono na região administrativa camada de elementos. A função de fábrica de estilo determina o ID de lugar do elemento usando a instância PlaceFeature. Se o ID de lugar for de Hana, Havaí, a função aplica um estilo personalizado de preenchimento e traço ao polígono:

  1. Caso ainda não tenha feito isso, siga as etapas em Vamos começar para criar um novo ID e estilo de mapa. Ative a camada de elemento Região administrativa.

  2. Gere uma referência à camada de elemento "Região administrativa" quando o mapa for inicializado.

    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. Criar uma função de fábrica de estilo e aplicá-la à região administrativa. camada de elementos.

    O exemplo a seguir só se aplica a função se o lugar O código do recurso é para Hana, Havaí ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo"). Se o ID de lugar especificado não for para Hana, Havaí, o estilo não será aplicada.

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

Remover o estilo de uma camada

Para remover o estilo de uma camada, chame FeatureLayer.setFeatureStyle(null).