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 devez appliquer une fonction de style au calque d'éléments géographiques de l'ensemble de données d'une carte. La couche d'entités de l'ensemble de données est créée 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.
    Section "Styles de carte associés" avec un bouton Plus "AJOUTER UN STYLE DE CARTE" à droite.
  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 style 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 style à chaque élément de l'ensemble de données.

Créer une fonction de fabrique de style

La fonction de fabrique de style est appliquée à chaque élément du calque de l'ensemble de données au moment où vous définissez la fonction sur le calque d'éléments. Cette fonction doit renvoyer un objet FeatureStyle qui spécifie comment styliser le polygone.

Si la fabrique de style renvoie null, la fonctionnalité donnée n'est pas affichée. Pour en savoir plus, consultez Supprimer le style d'un calque.

Le SDK Maps pour Android transmet une instance Feature à la fonction de fabrique de style. L'instance Feature représente les métadonnées de l'élément géographique, ce qui vous permet d'accéder aux métadonnées dans la fonction de fabrique de style.

La fonction de fabrique de style 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 cartographiques, 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'entités n'est plus utilisé.

Vous pouvez également appeler FeatureLayer.getDatasetId() pour obtenir l'ID de l'ensemble de données.

Définir le rayon du trait, du remplissage et du point

Lorsque vous définissez le style d'une entité dans la fonction de fabrique de style, vous pouvez définir les éléments suivants :

  • Couleur et opacité du trait de la bordure, telles que définies par la classe Color. La valeur par défaut est transparente (Color.TRANSPARENT).

  • Épaisseur du trait de la bordure en pixels à l'écran. La valeur par défaut est "2".

  • Couleur et opacité du remplissage, telles que définies par la classe Color. La valeur par défaut est transparente (Color.TRANSPARENT).

  • Rayon du point d'une entité ponctuelle, 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 FeatureLayer.StyleFactory qui crée 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'entité 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 une caractéristique. Vous pouvez ensuite personnaliser le style de la fonctionnalité en fonction de ses attributs.

Cet exemple détermine la valeur de l'attribut "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 dans le calque d'éléments géographiques de l'ensemble de données. La fonction de fabrique de style applique un style de remplissage et de trait personnalisé au polygone :

  1. Si ce n'est pas déjà fait, suivez les étapes de la section Commencer 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 "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 style et appliquez-la au calque d'éléments géographiques "Ensembles de données".

    L'exemple suivant applique le même remplissage et le même contour à toutes les caractéristiques 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.