En esta página, se muestra cómo agregar un conjunto de datos a un mapa y aplicar diseños.
Requisitos previos
Antes de continuar, debes tener un ID de mapa, un diseño de mapa y un ID de conjunto de datos.
Asocia un ID de conjunto de datos a un diseño de mapa
Para aplicar diseño a los componentes de un conjunto de datos, aplica una función de diseño al capa de componentes del conjunto de datos de un mapa. La capa de componentes del conjunto de datos se crea asocia un conjunto de datos a un diseño de mapa.
Para asociar tu conjunto de datos al diseño de mapa, sigue estos pasos:
- En la consola de Google Cloud, ve a la página Conjuntos de datos.
- Haz clic en el nombre del conjunto de datos. Se abrirá la página Detalles del conjunto de datos.
- Haz clic en la pestaña Vista previa.
- En la sección Diseños de mapa asociados, haz clic en
AGREGAR DISEÑO DE MAPA
- Haz clic en las casillas de verificación correspondientes a los diseños de mapa que deseas asociar y, luego, en GUARDAR.
Aplica estilos al conjunto de datos
Para aplicar estilos a un conjunto de datos, sigue estos pasos:
Crea una función Style Factory que implemente el
FeatureLayer.StyleFactory
interfaz de usuario. Esta función define la lógica de diseño para un conjunto de datos.Llamada
FeatureLayer.setFeatureStyle()
para aplicar la función Style Factory a cada componente del conjunto de datos.
Crea una función de fábrica de diseño
La función de fábrica de diseño se aplica a cada componente del conjunto de datos.
cuando establezcas la función en la capa de componentes. Esta función debe
mostrar un FeatureStyle
que especifica cómo aplicar diseño al polígono.
Si la fábrica de diseños muestra null
, no se renderiza el componente determinado. Para ver más
consulta Cómo quitar el diseño aplicado a una capa.
El SDK de Maps para Android pasa un
Feature
a la función Style Factory. La instancia Feature
representa la
metadatos de la función, lo que te da acceso a los metadatos en la fábrica de estilo
.
La función Style Factory siempre debe devolver resultados coherentes cuando sea se aplicó. Por ejemplo, si quieres colorear al azar un conjunto de atributos, el parte al azar no debería ocurrir en la función de diseño de componentes, como causar resultados imprevistos.
Dado que esta función se ejecuta en todos los componentes de una capa, la optimización es importante. Para no afectar los tiempos de renderización, llama a
Se utiliza FeatureLayer.setFeatureStyle(null)
cuando una capa de componentes ya no está en uso.
También puedes llamar a FeatureLayer.getDatasetId()
para obtener el ID del conjunto de datos.
Cómo configurar el trazo, el relleno y el radio de punto
Al definir el diseño de una función con la función de fábrica de estilos, puedes configurar lo siguiente:
Color y opacidad del trazo del borde, según lo definido por la
Color
clase. El valor predeterminado es transparente (Color.TRANSPARENT
).Ancho del trazo del borde en píxeles de la pantalla. El valor predeterminado es 2.
Color y opacidad del relleno según lo definido por la
Color
clase. El valor predeterminado es transparente (Color.TRANSPARENT
).Radio de punto de un componente de punto de entre 0 y 128 píxeles
Utiliza reglas de diseño simples
La forma más sencilla de aplicar diseño a un componente es definir un FeatureLayer.StyleFactory
que siempre compila un objeto FeatureStyle
idéntico, independientemente de la
. Aplica opciones de diseño de componentes directamente a una capa de componentes del conjunto de datos, o bien usa
junto con un FeatureStyleFunction
.
Utiliza reglas de diseño declarativas
Puedes definir reglas de estilo declarativamente
según el atributo de un componente.
y aplicarlas en todo el conjunto de datos. Puedes devolver null
desde tu
función de diseño de componentes, por ejemplo, si deseas que un subconjunto de componentes permanezca
invisibles.
Por ejemplo, usa el método DatasetFeature.getDatasetAttributes()
para mostrar un
Map<String,String>
de atributos de conjunto de datos para un componente. Luego, puedes
personalizar el estilo de un elemento según sus atributos.
En este ejemplo, se determina el valor de “highlightColor” atributo de cada de un conjunto de datos para controlar el diseño:
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; }
Aplica diseño a la capa de componentes del conjunto de datos
En este ejemplo, se aplica una función de diseño de fábrica a un polígono del conjunto de datos. capa de componentes. La función de fábrica de estilos aplica un estilo de relleno y trazo personalizado al polígono:
Si aún no lo has hecho, sigue los pasos en Primeros pasos para crear un nuevo ID y diseño de mapa. Asegúrate de habilitar los Conjuntos de datos capa de componentes.
Obtén una referencia a la capa del componente Conjuntos de datos cuando se inicialice el mapa.
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(); }Crear una función de fábrica de diseño y aplicarla a los conjuntos de datos capa de componentes.
En el siguiente ejemplo, se aplica el mismo relleno y trazo a todos los componentes. del conjunto de datos.
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); }
Cómo quitar el diseño aplicado a una capa
Para quitar el diseño aplicado a una capa, llama a FeatureLayer.setFeatureStyle(null)
.
También puedes devolver null
de tu fábrica de estilos, por ejemplo, si
y quieres que un subconjunto
de atributos permanezca invisible.