Nesta página, mostramos como adicionar um conjunto de dados a um mapa e aplicar estilos.
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:
- 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 em
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:
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.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:
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.
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(); }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.