Cette page explique comment ajouter un ensemble de données à une carte et appliquer un style.
Prérequis
Avant de continuer, vous devez disposer d'un ID de carte, d'un style de carte et d'un ID d'ensemble de données.
Associer un ID d'ensemble de données à un style de carte
Pour styliser les éléments géographiques d'un ensemble de données, vous appliquez une fonction de style aux calque d'éléments géographiques d'un ensemble de données d'une carte. Le calque d'éléments géographiques de l'ensemble de données est créé lorsque associer un ensemble de données à un style de carte ;
Pour associer votre ensemble de données au style de carte:
- Dans la console Google Cloud, accédez à la page Ensembles de données.
- Cliquez sur le nom de l'ensemble de données. La page Détails de l'ensemble de données s'affiche.
- Cliquez sur l'onglet Aperçu.
- Dans la section Styles de carte associés, cliquez sur
AJOUTER UN STYLE DE CARTE.
- Cochez les cases des styles de carte à associer, puis cliquez sur ENREGISTRER.
Appliquer des styles à l'ensemble de données
Pour appliquer des styles à un ensemble de données, procédez comme suit:
Créez une fonction de fabrique de styles qui implémente le
FeatureLayer.StyleFactory
de commande. Cette fonction définit la logique de stylisation pour un ensemble de données.Appeler
FeatureLayer.setFeatureStyle()
pour appliquer la fonction de fabrique de styles à chaque caractéristique de l'ensemble de données.
Créer une fonction de fabrique de styles
La fonction de fabrique de styles est appliquée à chaque élément géographique de l'ensemble de données
au moment où vous définissez la fonction sur le calque d'éléments géographiques. Cette fonction ne doit
renvoyer un FeatureStyle
spécifiant comment styliser le polygone.
Si la fabrique de styles renvoie null
, l'élément cartographique donné n'est pas affiché. Pour plus
d'informations, consultez l'article Supprimer le style d'un calque.
Le SDK Maps pour Android transmet un
Feature
à la fonction de fabrique de style. L'instance Feature
représente
les métadonnées de la caractéristique, ce qui vous donne accès aux métadonnées de la fabrique de styles
.
La fonction de fabrique de style doit toujours renvoyer des résultats cohérents appliquée. Par exemple, si vous souhaitez colorer un ensemble d'éléments de manière aléatoire, une partie aléatoire ne doit pas avoir lieu dans la fonction de style d'éléments géographiques, peut entraîner des résultats inattendus.
Étant donné que cette fonction s'exécute sur chaque élément d'un calque, il est important de l'optimiser. Pour éviter d'affecter les délais d'affichage, appelez
FeatureLayer.setFeatureStyle(null)
lorsqu'un calque d'éléments n'est plus utilisé.
Vous pouvez également appeler FeatureLayer.getDatasetId()
pour obtenir l'ID de l'ensemble de données.
Définir le trait, le remplissage et le rayon des points
Lorsque vous appliquez un style à un élément géographique dans la fonction de fabrique de styles, vous pouvez définir les éléments suivants:
Couleur et opacité du trait de la bordure, telles que définies par les
Color
. La valeur par défaut est transparente (Color.TRANSPARENT
).Largeur du trait de la bordure en pixels de l'écran. La valeur par défaut est "2".
Couleur et opacité de remplissage, telles que définies par le
Color
. La valeur par défaut est transparente (Color.TRANSPARENT
).Rayon d'un point d'un élément géographique de type point compris entre 0 et 128 pixels.
Utiliser des règles de style simples
Le moyen le plus simple de styliser les éléments géographiques est de définir un FeatureLayer.StyleFactory
.
qui crée toujours un objet FeatureStyle
identique, quel que soit le
. Appliquez les options de style d'éléments géographiques directement au calque d'éléments géographiques d'un ensemble de données ou utilisez
conjointement avec un FeatureStyleFunction
.
Utiliser des règles de style déclaratives
Vous pouvez définir des règles de style déclaratives basées sur un attribut d'élément géographique,
et les appliquer à l'ensemble de données complet. Vous pouvez retourner null
depuis votre
fonction de style d'éléments géographiques, par exemple pour conserver un sous-ensemble d'éléments géographiques
invisibles.
Par exemple, utilisez la méthode DatasetFeature.getDatasetAttributes()
pour renvoyer une
Map<String,String>
des attributs de l'ensemble de données pour un élément géographique. Vous pouvez ensuite
personnaliser le style de l'élément géographique en fonction de ses attributs ;
Cet exemple détermine la valeur de la variable "highlightColor" de chaque caractéristique d'un ensemble de données pour contrôler le style:
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; }
Appliquer un style au calque d'éléments géographiques de l'ensemble de données
Cet exemple applique une fonction de fabrique de style à un polygone de l'ensemble de données d'un calque d'éléments géographiques. La fonction de fabrique de styles applique un style de remplissage et de trait personnalisé au polygone:
Si vous ne l'avez pas déjà fait, suivez les étapes de l'article Premiers pas pour créer un ID et un style de carte. Veillez à activer les ensembles de données d'un calque d'éléments géographiques.
Obtenez une référence au calque d'éléments géographiques "Ensembles de données" lors de l'initialisation de la carte.
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(); }Créer une fonction de fabrique de styles et l'appliquer aux ensembles de données d'un calque d'éléments géographiques.
L'exemple suivant applique le même remplissage et le même trait à tous les éléments géographiques dans l'ensemble de données.
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); }
Supprimer le style d'un calque
Pour supprimer le style d'un calque, appelez FeatureLayer.setFeatureStyle(null)
.
Vous pouvez également renvoyer null
à partir de votre fabrique de styles, par exemple si vous
souhaitez qu'un sous-ensemble
d'éléments géographiques reste invisible.