Ajouter un ensemble de données à un ensemble de données de carte et de style

Sélectionnez une plate-forme : Android iOS JavaScript

Cette page explique comment ajouter un ensemble de données à une carte et appliquer un style.

Capture d'écran montrant des données de polygone stylisées.

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 au 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 vous associez un ensemble de données à un style de carte.

Pour associer votre ensemble de données au style de carte :

  1. Dans la console Google Cloud, accédez à la page Ensembles de données.
  2. Cliquez sur le nom de l'ensemble de données. La page Détails de l'ensemble de données s'affiche.
  3. Cliquez sur l'onglet Aperçu.
  4. Dans la section Styles de carte associés, cliquez sur AJOUTER UN STYLE DE CARTE.
    Capture d'écran du bouton AJOUTER UN STYLE DE CARTE
  5. 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 :

  1. Créez une fonction de fabrique de styles qui implémente l'interface FeatureLayer.StyleFactory. Cette fonction définit la logique de stylisation d'un ensemble de données.

  2. Appelez FeatureLayer.setFeatureStyle() pour appliquer la fonction de fabrique de styles à chaque élément géographique 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 la couche de l'ensemble de données au moment où vous définissez la fonction sur le calque d'éléments géographiques. Cette fonction doit renvoyer un objet FeatureStyle qui spécifie comment styliser le polygone.

Si la fabrique de styles renvoie null, l'élément géographique donné n'est pas affiché. Pour en savoir plus, consultez Supprimer le style d'une couche.

Le SDK Maps pour Android transmet une instance Feature à la fonction de fabrique de styles. L'instance Feature représente les métadonnées de l'élément cartographique. Vous pouvez ainsi accéder aux métadonnées dans la fonction de fabrique de styles.

La fonction de fabrique de styles doit toujours renvoyer des résultats cohérents lorsqu'elle est appliquée. Par exemple, si vous souhaitez colorer un ensemble d'éléments de manière aléatoire, la partie aléatoire ne doit pas se situer dans la fonction de style d'éléments géographiques, car cela générerait des résultats indésirables.

É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 géographiques 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 du point

Lorsque vous stylisez un élément géographique dans la fonction de style, vous pouvez définir les éléments suivants :

  • Couleur et opacité du trait de la bordure, comme défini par la classe 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 la classe 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 consiste à définir un élément FeatureLayer.StyleFactory qui compile toujours un objet FeatureStyle identique, quel que soit l'élément géographique. Appliquez des options de style d'éléments géographiques directement au calque d'éléments géographiques d'un ensemble de données ou combinez-les à une FeatureStyleFunction.

Utiliser des règles de style déclaratives

Vous pouvez définir des règles de style de manière déclarative en fonction d'un attribut d'élément géographique et les appliquer à l'ensemble de votre ensemble de données. Vous pouvez renvoyer null à partir de votre fonction de style d'éléments géographiques, par exemple, si vous souhaitez qu'un sous-ensemble d'éléments géographiques reste invisible.

Par exemple, utilisez la méthode DatasetFeature.getDatasetAttributes() pour renvoyer un Map<String,String> d'attributs d'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 l'attribut "highlightColor" de chaque élément géographique d'un ensemble de données afin de 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 styles à un polygone du calque d'éléments géographiques de l'ensemble de données. La fonction de fabrique de styles applique un style de remplissage et de trait personnalisé au polygone:

  1. Si vous ne l'avez pas déjà fait, suivez les étapes de la section Premiers pas pour créer un ID et un style de carte. N'oubliez pas d'activer le calque d'éléments Ensembles de données.

  2. 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(); }

  3. Créez une fonction de fabrique de styles et appliquez-la au calque d'éléments "Ensembles de données".

    L'exemple suivant applique le même remplissage et le même trait à tous les éléments géographiques de 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(2) .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.