Bibliothèque d'utilitaires du SDK Maps pour Android

Vous souhaitez ajouter des éléments géographiques avancés à vos cartes ? La bibliothèque d'utilitaires du SDK Maps pour Android est une bibliothèque Open Source de classes utiles pour toute une gamme d'applications. Le dépôt GitHub inclut les classes d'utilitaires et une application de démonstration qui illustre l'utilisation de chaque classe.

Dans cette vidéo, Chris Broadfoot présente la bibliothèque d'utilitaires, en mettant l'accent sur le décodage des polylignes, la géométrie sphérique et les icônes en forme de bulle.

Configuration rapide

Pour installer la bibliothèque d'utilitaires du SDK Maps pour Android, suivez le guide de configuration.

Utilitaires

Une carte avec un calque GeoJSON

Importer des données GeoJSON dans votre carte

Vous pouvez stocker des fonctionnalités au format GeoJSON et utiliser cet utilitaire pour en effectuer le rendu sous forme de calque au-dessus d'une carte. Appelez addLayer() pour ajouter vos données GeoJSON à la carte. Vous pouvez également ajouter des fonctionnalités individuelles en appelant addFeature() et en transmettant un objet GeoJsonFeature.

Pour en savoir plus, consultez la documentation sur l'utilitaire GeoJSON de Google Maps pour Android.

Une carte avec un calque KML

Importer des données KML dans votre carte

Cet utilitaire permet de convertir des objets KML en formes géographiques et d'effectuer le rendu sous forme de calque au-dessus d'une carte. Appelez addLayerToMap() pour ajouter le calque à la carte. Vous pouvez accéder aux propriétés d'un objet KML en appelant getProperties() sur n'importe quel repère, superposition au sol, document ou dossier.

Pour en savoir plus, consultez la documentation sur l'utilitaire KML de Google Maps pour Android.

Une carte avec une carte de densité

Ajouter des cartes de densité à votre carte

Les cartes de densité permettent aux utilisateurs de mieux comprendre la répartition et l'intensité relative des points de données sur une carte. Au lieu de placer un repère sur chaque point géographique, les cartes de densité utilisent des couleurs et des formes pour représenter la répartition des données. Créez un HeatmapTileProvider en lui transmettant un ensemble d'objets LatLng représentant les points d'intérêt sur la carte. Créez ensuite un autre TileOverlay, en lui transmettant le fournisseur de tuiles de carte de densité, puis ajoutez la superposition de tuiles à la carte.

Pour en savoir plus, consultez la documentation sur l'utilitaire de carte de densité de Google Maps pour Android.

Une carte avec des icônes en forme de bulle

Personnaliser des repères avec des icônes en forme de bulle

Ajoutez un IconGenerator pour afficher des fragments d'informations sur vos repères. Cet utilitaire vous permet de donner l'apparence de fenêtres d'informations à vos icônes de repère, dans le sens où le repère lui-même peut contenir du texte et d'autres contenus. L'avantage est que plusieurs repères peuvent rester ouverts en même temps, contrairement à la fenêtre d'informations. Vous pouvez également styliser les repères, changer leur orientation et/ou contenu et changer l'image de fond/9-patch du repère.

Une carte avec des repères regroupés

Gérer des groupes de repères

ClusterManager vous aide à gérer plusieurs repères à différents niveaux de zoom. Cela signifie que vous pouvez placer un grand nombre de repères sur une carte sans qu'elle soit difficile à lire. Lorsque l'utilisateur affiche la carte à un niveau de zoom élevé, les différents repères s'affichent sur la carte. Lorsque l'utilisateur effectue un zoom arrière, les repères se regroupent pour faciliter la consultation de la carte.

Pour en savoir plus, consultez la documentation sur l'utilitaire de regroupement de repères Google Maps pour Android.

Une carte avec plusieurs calques

Ajouter plusieurs calques à une même carte

Il est possible d'afficher, sur une même carte, des éléments issus de GeoJSON, de KML et de clusters, ainsi que vos propres repères, polylignes et polygones. Vous pouvez également rendre ces calques interactifs en ajoutant un écouteur de clic à chaque calque. Il suffit d'instancier les classes MarkerManager, GroundOverlayManager, PolygonManager et PolylineManager, puis de les transmettre aux constructeurs de GeoJsonLayer, KmlLayer et ClusterManager lors de leur configuration. Vous pouvez ensuite utiliser les classes Manager ci-dessus directement pour ajouter vos propres repères, polylignes et polygones à la carte.

Pour en savoir plus, consultez la documentation sur la démonstration des calques multiples de Google Maps pour Android.

Une carte avec une polyligne encodée

Encoder et décoder des polylignes

PolyUtil est utile pour convertir des polylignes et des polygones encodés en coordonnées de latitude/longitude, et inversement.

Dans Google Maps, les coordonnées de latitude et de longitude qui définissent une polyligne ou un polygone sont stockés sous forme de chaîne encodée. Consultez une explication détaillée de l'encodage des polylignes. Vous pouvez recevoir cette chaîne encodée dans une réponse d'une API Google, telle que l'API Directions.

Vous pouvez utiliser PolyUtil dans la bibliothèque d''utilitaires du SDK Maps pour Android afin d'encoder une séquence de coordonnées de latitude/longitude ('LatLngs') en chaîne de tracé encodée, et pour décoder une chaîne de tracé encodée en séquence de LatLngs. Cela garantit l'interopérabilité avec les services Web des API Google Maps.

Distance calculée entre deux points sur une carte

Calculer des distances, des superficies et des caps avec la géométrie sphérique

Les utilitaires de géométrie sphérique de SphericalUtil vous permettent de calculer des distances, des superficies et des caps à partir de latitudes et de longitudes. Voici quelques-unes des méthodes disponibles dans cet utilitaire :

  • computeDistanceBetween() – renvoie la distance, en mètres, entre deux coordonnées de latitude/longitude.
  • computeHeading() – renvoie la direction, en degrés, entre deux coordonnées de latitude/longitude.
  • computeArea() – renvoie la superficie, en mètres carrés, d'un tracé fermé sur la Terre.
  • interpolate() – renvoie les coordonnées de latitude/longitude d'un point qui se trouve à une fraction donnée de la distance entre deux points donnés. Vous pouvez vous en servir pour animer un repère entre deux points, par exemple.

Reportez-vous à la documentation de référence pour obtenir la liste complète des méthodes de cet utilitaire.