Pour appliquer des styles de trait et de remplissage à des polygones de limite dans un calque d'éléments géographiques:
Créez une fonction de fabrique de styles qui implémente le
FeatureLayer.StyleFactory
de commande. Cette fonction définit la logique de style pour un calque d'éléments géographiques.Appeler
FeatureLayer.setFeatureStyle()
pour appliquer la fonction de fabrique de styles au calque d'éléments géographiques.
L'exemple de carte suivant montre comment mettre en surbrillance le polygone de limite d'une une seule région dans un calque d'éléments géographiques de localité.
Créer une fonction de fabrique de styles
La fonction de fabrique de styles est appliquée à chaque polygone de l'élément géographique concerné.
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.
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 :
Activez uniquement les calques d'éléments dont vous avez besoin.
Appelez
FeatureLayer.setFeatureStyle(null)
lorsqu'un calque d'éléments n'est plus en cours d'utilisation.
Définir le trait et le remplissage du polygone
Lorsque vous appliquez un style à un polygone de limite dans la fonction de fabrique de style, vous pouvez définir les éléments suivants:
Couleur et opacité du trait de la bordure du polygone au format de couleur ARVB comme défini par le
Color
. La valeur par défaut est transparente (0x00000000).Épaisseur de la bordure du polygone en pixels de l'écran. La valeur par défaut est égal à 2.
Couleur et opacité de remplissage du polygone au format de couleurs ARVB, défini par le
Color
. La valeur par défaut est transparente (0x00000000).
Rechercher des ID de lieu pour cibler des éléments géographiques
De nombreuses applications appliquent des styles à un élément géographique en fonction de son emplacement. Pour Par exemple, vous pouvez appliquer un style à d'autres pays, territoires ou dans différentes régions. L'emplacement de l'élément est représenté par une identifiant de lieu.
Les ID de lieu identifient de manière unique un lieu dans la base de données Google Places et sur Google. Maps. Pour obtenir un ID de lieu:
- Utiliser les API Places et Geocoding pour rechercher des régions par nom et obtenir des ID de lieu pour des régions au sein de les limites spécifiées.
- Obtenez les données concernant les événements de clic. Cela renvoie l'élément géographique correspondant à la région sur laquelle l'utilisateur a cliqué, ce qui donne l'accès à son ID de lieu et à sa catégorie de type d'élément.
La couverture varie selon les régions. Voir Couverture des limites Google pour en savoir plus.
Les noms géographiques sont disponibles à partir de nombreuses sources, comme le USGS Board on Geographic Names et États-Unis Fichiers de géographie.
Utiliser PlaceFeature pour obtenir un ID de lieu
PlaceFeature
est une sous-classe de la classe Feature
.
Il représente un élément géographique de lieu (un élément géographique avec un ID de lieu) qui inclut :
les caractéristiques de type ADMINISTRATIVE_AREA_LEVEL_1
, ADMINISTRATIVE_AREA_LEVEL_2
COUNTRY
, LOCALITY
, POSTAL_CODE
et SCHOOL_DISTRICT
.
Lorsque l'ID de lieu est disponible, le
Le SDK Maps pour Android transmet une instance de PlaceFeature
à la fabrique de styles
afin de déterminer son emplacement.
Exemple de fabrique de styles
Cet exemple applique une fonction de fabrique de style à un polygone de la localité
d'un calque d'éléments géographiques. La fonction de fabrique de styles détermine l'ID de lieu de l'élément géographique.
à l'aide de l'instance PlaceFeature
. Si l'ID de lieu correspond à Hana, Hawaï,
la fonction 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. N'oubliez pas d'activer le calque d'éléments Localité.
Obtenez une référence au calque d'éléments géographiques de localité lors de l'initialisation de la carte.
Java
private FeatureLayer localityLayer;
@Override public void onMapReady(GoogleMap map) { // Get the LOCALITY feature layer. localityLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build());
// Apply style factory function to LOCALITY layer. styleLocalityLayer(); }Kotlin
private var localityLayer: FeatureLayer? = null
override fun onMapReady(googleMap: GoogleMap) { // Get the LOCALITY feature layer. localityLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build())
// Apply style factory function to LOCALITY layer. styleLocalityLayer() }Créer une fonction de fabrique de styles et l'appliquer à la localité d'un calque d'éléments géographiques.
L'exemple suivant n'applique la fonction que si le lieu L'ID de la fonctionnalité correspond à Hana, Hawaï ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo"). Si l'ID de lieu spécifié ne correspond pas à Hana (Hawaï), le style n'est pas appliquée.
Java
private void styleLocalityLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature instanceof PlaceFeature) { PlaceFeature placeFeature = (PlaceFeature) feature;
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return new FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and solid purple border. .fillColor(0x80810FCB) .strokeColor(0xFF810FCB) .build(); } } return null; };
// Apply the style factory function to the feature layer. localityLayer.setFeatureStyle(styleFactory); }Kotlin
private fun styleLocalityLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature is PlaceFeature) { val placeFeature: PlaceFeature = feature as PlaceFeature
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return@StyleFactory FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and // solid purple border. .fillColor(0x80810FCB.toInt()) .strokeColor(0xFF810FCB.toInt()) .build() } } return@StyleFactory null }
// Apply the style factory function to the feature layer. localityLayer?.setFeatureStyle(styleFactory) }
Supprimer le style d'un calque
Pour supprimer le style d'un calque, appelez FeatureLayer.setFeatureStyle(null)
.