Adicionar conjunto de dados a um mapa e estilizar conjunto de dados

Selecione a plataforma: Android iOS JavaScript

Nesta página, mostramos como adicionar um conjunto de dados a um mapa e aplicar estilos.

Captura de tela mostrando um dado de polígono estilizado.

Pré-requisitos

Antes de continuar, você precisa ter um ID do mapa, um estilo de mapa e um ID do conjunto de dados.

Associar um ID do conjunto de dados a um estilo de mapa

Para estilizar os elementos de um conjunto de dados, você aplica uma função de estilo ao camada de elementos do conjunto de dados de um mapa. A camada de elementos do conjunto de dados é criada associar um conjunto de dados a um estilo de mapa.

Para associar seu conjunto de dados ao estilo de mapa:

  1. No console do Google Cloud, acesse a página Conjuntos de dados.
  2. Clique no nome do conjunto de dados. A página Detalhes do conjunto de dados vai aparecer.
  3. Clique na guia Visualização.
  4. Na seção Estilos de mapa associados, clique em ADICIONAR ESTILO DE MAPA.
    Captura de tela do botão ADICIONAR ESTILO DE MAPA.
  5. Clique nas caixas de seleção dos estilos de mapa que serão associados e clique em SALVAR.

Aplicar estilos ao conjunto de dados

Para aplicar estilos a um conjunto de dados:

  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 um conjunto de dados.

  2. Ligação FeatureLayer.setFeatureStyle() para aplicar a função de fábrica de estilo a cada recurso do conjunto de dados.

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

A função de fábrica de estilo é aplicada a todos os recursos no conjunto de dados. 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.

Se a fábrica de estilos retornar null, o recurso especificado não será renderizado. Para mais informações, consulte Remover o estilo de uma camada.

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, chame FeatureLayer.setFeatureStyle(null) quando uma camada de elementos não está mais em uso.

Também é possível chamar FeatureLayer.getDatasetId() para receber o ID do conjunto de dados.

Definir traço, preenchimento e raio do ponto

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

  • Cor do traço e opacidade da borda, conforme definido pelo Color . O valor padrão é transparente (Color.TRANSPARENT).

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

  • Cor de preenchimento e opacidade conforme definido pelo Color . O valor padrão é transparente (Color.TRANSPARENT).

  • Raio do ponto de um elemento de ponto entre 0 e 128 pixels.

Usar regras de estilo simples

A maneira mais simples de definir o estilo dos elementos é definir uma FeatureLayer.StyleFactory que sempre cria um objeto FeatureStyle idêntico, independentemente da . Aplique opções de estilo de elementos diretamente a uma camada de elementos do conjunto de dados ou use em conjunto com um FeatureStyleFunction.

Usar regras de estilo declarativas

É possível definir regras de estilo de maneira declarativa com base em um atributo de recurso, e aplicá-las em todo o conjunto de dados. Você pode devolver null do seu função de estilo dos elementos, por exemplo, se você quiser que um subconjunto de elementos permaneça invisível.

Por exemplo, use o método DatasetFeature.getDatasetAttributes() para retornar uma Map<String,String> de atributos do conjunto de dados para um recurso. É possível personalizar o estilo do elemento com base nos seus atributos.

Este exemplo determina o valor do campo "highlightColor" atributo de cada de um conjunto de dados para controlar o estilo:

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

Aplicar estilo à camada de elementos do conjunto de dados

Este exemplo aplica uma função de fábrica de estilo a um polígono no conjunto de dados camada de elementos. A função de fábrica de estilo aplica um preenchimento e estilo de traço personalizados 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 opção Conjuntos de dados camada de elementos.

  2. Receba uma referência para a camada de elementos do conjunto de dados quando o mapa for inicializado.

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

    O exemplo a seguir aplica o mesmo preenchimento e traço a todos os elementos no conjunto de dados.

    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(2F) .build(); } return null; };
    // Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }

Remover o estilo de uma camada

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

Também é possível retornar null da fábrica de estilo, por exemplo, se você quer que um subconjunto de atributos permaneça invisível.