Vous êtes prêt !

Pour passer à l'étape de développement, accédez à notre documentation pour les développeurs.

Activer Google Maps Android API

Pour commencer, nous allons vous guider à travers la console Google Developers et effectuer deux ou trois petites choses :

  1. Créer ou choisir un projet
  2. Activer Google Maps Android API
  3. Créer les clés appropriées
Continuer

Utilitaire de regroupement de marqueurs Google Maps Android

Le regroupement de marqueurs vous permet de placer un grand nombre de marqueurs sur une carte sans la rendre difficile à lire.

Introduction

Cette vidéo explique l'utilisation du regroupement de marqueurs lorsque vos données nécessitent un grand nombre de points de données sur la carte.

L'utilitaire de regroupement de marqueurs vous aide à gérer plusieurs marqueurs à différents niveaux de zoom. Précisément, les « marqueurs » sont en fait des « éléments » à ce stade et ne deviennent réellement des « marqueurs » qu'après leur rendu. Par souci de clarté, nous ne parlerons que de « marqueurs » dans ce document.

Lorsqu'un utilisateur affiche la carte à un niveau de zoom élevé, les différents marqueurs s'affichent sur la carte. Lorsqu'il effectue un zoom arrière, les marqueurs se regroupent pour faciliter la consultation de la carte. L'utilitaire de regroupement de marqueurs est intégré à la Bibliothèque d'utilitaires de Google Maps Android API. Si vous n'avez pas encore configuré cette bibliothèque, suivez le guide de configuration avant de poursuivre la lecture de cette page.

Une carte avec des marqueurs regroupés
Marqueurs regroupés

Pour utiliser l'utilitaire de regroupement de marqueurs, vous devez ajouter des marqueurs en tant qu'objets ClusterItem dans le ClusterManager. Le ClusterManager transmet les marqueurs à l'objet Algorithm, qui les transforme ensuite en ensemble de groupements (clusters). ClusterRenderer se charge du rendu, en ajoutant et en supprimant les groupements et les marqueurs individuels. Les objets ClusterRenderer et Algorithm sont intégrables et personnalisables.

La bibliothèque d'utilitaires est livrée avec une application de démo fournissant des échantillons d'implémentation de l'utilitaire de regroupement de marqueurs. Pour obtenir de l'aide sur l'exécution de l'application de démo, voir le guide de configuration. L'application de démo inclut les échantillons de regroupement de marqueurs suivants :

  • ClusteringDemoActivity : Une activité simple montrant le regroupement de marqueurs.
  • BigClusteringDemoActivity : Regroupement de 2 000 marqueurs.
  • CustomMarkerClusteringDemoActivity : Création d'un design personnalisé pour les marqueurs regroupés.

Ajouter un regroupement de marqueurs simple

Procédez comme suit pour créer un regroupement simple de dix marqueurs. Le résultat sera semblable à ce qui suit, même si le nombre de marqueurs affichés/regroupés varie en fonction du niveau de zoom :

Une carte avec dix marqueurs regroupés
Dix marqueurs regroupés

Voici un résumé des étapes requises :

  1. Implémentez ClusterItem pour représenter un marqueur sur la carte. L'élément de regroupement renvoie la position du marqueur en tant qu'objet LatLng.
  2. Ajoutez un nouveau ClusterManager pour regrouper les éléments (marqueurs) en fonction du niveau de zoom.
  3. Définissez le OnCameraIdleListener() de la carte sur le ClusterManager, puisque ClusterManager implémente l'écouteur.
  4. Si vous souhaitez ajouter une fonctionnalité particulière en réponse à un événement de clic sur un marqueur, définissez le OnMarkerClickListener() de la carte sur le ClusterManager, puisque ClusterManager implémente l'écouteur.
  5. Insérez les marqueurs dans le ClusterManager.

Examinons les étapes plus en détail : Pour créer notre regroupement simple de dix marqueurs, créez tout d'abord une classe MyItem qui implémente ClusterItem.

public class MyItem implements ClusterItem {
    private final LatLng mPosition;

    public MyItem(double lat, double lng) {
        mPosition = new LatLng(lat, lng);
    }

    @Override
    public LatLng getPosition() {
        return mPosition;
    }
}

Dans votre activité de carte, ajoutez le ClusterManager et ajoutez-y les éléments du regroupement. Notez l'argument de type <MyItem>, qui déclare le ClusterManager comme étant de type MyItem.

// Declare a variable for the cluster manager.
private ClusterManager<MyItem> mClusterManager;

private void setUpClusterer() {
    // Position the map.
    getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(51.503186, -0.126446), 10));

    // Initialize the manager with the context and the map.
    // (Activity extends context, so we can pass 'this' in the constructor.)
    mClusterManager = new ClusterManager<MyItem>(this, getMap());

    // Point the map's listeners at the listeners implemented by the cluster
    // manager.
    getMap().setOnCameraIdleListener(mClusterManager);
    getMap().setOnMarkerClickListener(mClusterManager);

    // Add cluster items (markers) to the cluster manager.
    addItems();
}

private void addItems() {

    // Set some lat/lng coordinates to start with.
    double lat = 51.5145160;
    double lng = -0.1270060;

    // Add ten cluster items in close proximity, for purposes of this example.
    for (int i = 0; i < 10; i++) {
        double offset = i / 60d;
        lat = lat + offset;
        lng = lng + offset;
        MyItem offsetItem = new MyItem(lat, lng);
        mClusterManager.addItem(offsetItem);
    }
}

Personnaliser les regroupements de marqueurs

Le constructeur ClusterManager crée un DefaultClusterRenderer et un NonHierarchicalDistanceBasedAlgorithm. Vous pouvez modifier les objets ClusterRenderer et Algorithm en utilisant les méthodes setAlgorithm(Algorithm<T> algorithm) et setRenderer(ClusterRenderer<T> view) de ClusterManager.

Vous pouvez implémenter ClusterRenderer pour personnaliser le rendu des regroupements. DefaultClusterRenderer constitue un bon point de départ. En créant une sous-classe de DefaultClusterRenderer, vous pouvez remplacer les valeurs par défaut.

Pour un exemple approfondi de personnalisation, consultez l'activité CustomMarkerClusteringDemoActivity dans l'application de démo intégrée à la bibliothèque d'utilitaires.

Une carte avec un regroupement de marqueurs personnalisé
Regroupement de marqueurs personnalisé

L'activité CustomMarkerClusteringDemoActivity définit son propre élément de regroupement, Person, et en effectue le rendu en étendant DefaultClusterRenderer comme PersonRenderer.

La démo vous montre également comment implémenter l'interface ClusterManager.OnClusterClickListener<Person> afin d'afficher davantage d'informations sur l'élément Person lors d'un clic sur le regroupement. Vous pouvez également implémenter ClusterManager.OnClusterItemClickListener<Person> de la même façon.

Pour obtenir de l'aide sur l'exécution de l'application de démo, voir le guide de configuration.

Envoyer des commentaires concernant…

Google Maps Android API
Google Maps Android API
Besoin d'aide ? Consultez notre page d'assistance.