Esta página mostra como adicionar um conjunto de dados a um mapa e aplicar um estilo.
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, aplique uma função de estilo à camada de elementos do conjunto de dados de um mapa. A camada de elementos do conjunto de dados é criada quando você associa um conjunto de dados a um estilo de mapa.
Para associar o conjunto de dados ao estilo de mapa:
- No console do Google Cloud, acesse a página Conjuntos de dados.
- Clique no nome do conjunto de dados. A página Detalhes do conjunto de dados vai aparecer.
- Clique na guia Visualização.
- Na seção Estilos de mapa associados, clique
ADICIONAR ESTILO DE MAPA.
- 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:
Crie uma função de fábrica de estilos que implemente a
FeatureLayer.StyleFactoryinterface. Essa função define a lógica de estilo de um conjunto de dados.Chame
FeatureLayer.setFeatureStyle()para aplicar a função de fábrica de estilos a cada elemento do conjunto de dados.
Criar uma função de fábrica de estilos
A função de fábrica de estilos é aplicada a cada elemento na camada do conjunto de dados no momento em que você define a função na camada de elementos. Essa função precisa
retornar um FeatureStyle
objeto que especifica como estilizar o 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 uma
Feature
instância para a função de fábrica de estilos. A instância Feature representa os metadados do elemento, acesso aos metadados na função de fábrica de estilos.
A função de fábrica de estilos precisa sempre retornar resultados consistentes quando é aplicada. Por exemplo, para colorir aleatoriamente um conjunto de elementos, a parte aleatória não pode ocorrer na função de estilo de elementos porque isso gera resultados indesejados.
Como essa função é executada em todos os elementos de uma camada, a otimização é importante. Para evitar impacto nos tempos de renderização, chame FeatureLayer.setFeatureStyle(null) quando uma camada de elementos não estiver mais em uso.
Também é possível chamar FeatureLayer.getDatasetId() para receber o ID do conjunto de dados.
Definir raio de traço, preenchimento e ponto
Ao estilizar um elemento na função de fábrica de estilos, você pode definir:
Cor e opacidade do traço da borda, conforme definido pela
Colorclasse. 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 pela
Colorclasse. 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 do elemento. Aplique opções de estilo de elemento diretamente a uma camada de elementos do conjunto de dados ou use com uma FeatureStyleFunction.
Usar regras de estilo declarativas
Você pode definir regras de estilo de forma declarativa com base em um atributo de elemento e aplicá-las a todo o conjunto de dados. Você também pode retornar null da função de estilo de elemento, por exemplo, se quiser que um subconjunto de elementos permaneça invisível.
Por exemplo, use o DatasetFeature.getDatasetAttributes() método para retornar um
Map<String,String> de atributos de conjunto de dados para um elemento. Em seguida, você pode personalizar o estilo do elemento com base nos atributos dele.
Este exemplo determina o valor do atributo "highlightColor" de cada elemento 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 estilos a um polígono na camada de elementos do conjunto de dados. A função de fábrica de estilos aplica um estilo de preenchimento e traço personalizado ao polígono:
Consulte Começar para criar um novo ID e estilo de mapa, caso ainda não tenha feito isso. Ative a camada de elementos Conjuntos de dados.
Receba uma referência à camada de elementos Conjuntos 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(); }Crie uma função de fábrica de estilos e aplique-a à camada de elementos Conjuntos de dados.
O exemplo a seguir aplica o mesmo preenchimento e traço a todos os elementos do 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(2) .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).
Você também pode retornar null da fábrica de estilos, por exemplo, se quiser que um subconjunto de elementos permaneça invisível.