Partager via


Interagir avec la carte (SDK Android)

Cet article explique comment utiliser le gestionnaire des événements cartographiques.

Remarque

Mise hors service d’Android SDK Azure Maps

Le kit de développement logiciel (SDK) natif Azure Maps pour Android est désormais déconseillé et va être mis hors service le 31 mars 2025. Pour éviter toute interruption de service, nous vous recommandons de migrer vers le kit de développement logiciel (SDK) web Azure Maps avant le 31 mars 2025. Pour plus d’informations, consultez le Guide de migration Android SDK Azure Maps.

Interagir avec la carte

La carte gère tous les événements par le biais de sa propriété events. Le tableau suivant répertorie les événements cartographiques pris en charge.

Événement Format du gestionnaire d’événements Description
OnCameraIdle ()

Se déclenche après le rendu de la dernière image avant que la carte n’entre dans un état « inactif » :

  • Aucune transition de caméra n’est en cours.
  • Toutes les vignettes actuellement demandées ont été chargées.
  • Toutes les animations de fondu/transition sont terminées.

OnCameraMove () Se déclenche à plusieurs reprises pendant une transition animée d’une vue à l’autre, en raison d’une interaction ou de méthodes de l’utilisateur.
OnCameraMoveCanceled () Se déclenche lorsqu’une demande de mouvement faite à la caméra a été annulée.
OnCameraMoveStarted (int reason) Se déclenche avant que la carte ne commence une transition animée d’une vue à l’autre, en raison de l’interaction de l’utilisateur ou de méthodes. L’argument reason de l’écouteur d’événements retourne une valeur entière qui fournit des détails sur la manière dont le mouvement de la caméra a été initié. Voici la liste des raisons possibles :
  • 1 : Mouvement
  • 2 : Animation développeur
  • 3 : Animation API
OnClick (double lat, double lon): boolean Déclenche en cas de pression, puis relâchement de celle-ci, sur un point de la carte. Ce gestionnaire d’événements retourne une valeur booléenne indiquant si l’événement doit être consommé ou passé plus loin à d’autres écouteurs d’événements.
OnFeatureClick (List<Feature>): boolean Déclenche en cas de pression, puis relâchement de celle-ci, sur une fonctionnalité. Ce gestionnaire d’événements retourne une valeur booléenne indiquant si l’événement doit être consommé ou passé plus loin à d’autres écouteurs d’événements.
OnLayerAdded (Layer layer) Déclenche lors de l’ajout d’un calque à la carte.
OnLayerRemoved (Layer layer) Déclenche lors de la suppression d’un calque de la carte.
OnLoaded () Se déclenche immédiatement après que toutes les ressources nécessaires ont été téléchargées et que le premier rendu visuellement complet du mappage s’est produit.
OnLongClick (double lat, double lon): boolean Déclenche en cas de pression prolongée, puis relâchement de celle-ci, sur un point sur la carte. Ce gestionnaire d’événements retourne une valeur booléenne indiquant si l’événement doit être consommé ou passé plus loin à d’autres écouteurs d’événements.
OnLongFeatureClick (List<Feature>): boolean Déclenche en cas de pression prolongée, puis relâchement de celle-ci, sur une fonctionnalité. Ce gestionnaire d’événements retourne une valeur booléenne indiquant si l’événement doit être consommé ou passé plus loin à d’autres écouteurs d’événements.
 OnReady                (AzureMap map)       Se déclenche lorsque la carte se charge initialement, lorsque l’orientation change, que les ressources minimales requises sont chargées et que la carte est prête à être utilisée par programmation. 
OnSourceAdded (Source source) Déclenche lors de l’ajout de DataSource ou de VectorTileSource à la carte.
OnSourceRemoved (Source source) Déclenche lors de la suppression de DataSource ou de VectorTileSource de la carte.
OnStyleChange () Déclenche lors du chargement ou de la modification du style de la carte.

Le code suivant montre comment ajouter les événements OnClick, OnFeatureClick et OnCameraMove à la carte.

map.events.add((OnClick) (lat, lon) -> {
    //Map clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
});

map.events.add((OnFeatureClick) (features) -> {
    //Feature clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
});

map.events.add((OnCameraMove) () -> {
    //Map camera moved.
});
map.events.add(OnClick { lat: Double, lon: Double -> 
    //Map clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return false
})

map.events.add(OnFeatureClick { features: List<Feature?>? -> 
    //Feature clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return false
})

map.events.add(OnCameraMove {
    //Map camera moved.
})

Pour plus d’informations, consultez la documentation Navigation dans la carte pour savoir comment interagir avec les événements de la carte et du déclencheur.

Étendre les événements de fonctionnalité à la couche

Lorsque les événements OnFeatureClick ou OnLongFeatureClick sont ajoutés à la carte, une instance de couche ou un ID de couche peuvent être transmis en tant que second paramètre. Lorsqu’une couche est transmise, un événement se déclenche s’il se produit sur cette couche. Les événements inclus dans l’étendue de couches sont pris en charge par les couches de symboles, de bulles, de lignes et de polygones.

//Create a data source.
DataSource source = new DataSource();
map.sources.add(source);

//Add data to the data source.
source.add(Point.fromLngLat(0, 0));

//Create a layer and add it to the map.
BubbleLayer layer = new BubbleLayer(source);
map.layers.add(layer);

//Add a feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add((OnFeatureClick) (features) -> {
    //One or more features clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
}, layer);

//Add a long feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add((OnLongFeatureClick) (features) -> {
    //One or more features long clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
}, layer);
//Create a data source.
val source = DataSource()
map.sources.add(source)

//Add data to the data source.
source.add(Point.fromLngLat(0, 0))

//Create a layer and add it to the map.
val layer = BubbleLayer(source)
map.layers.add(layer)

//Add a feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add(
    OnFeatureClick { features: List<Feature?>? -> 
        //One or more features clicked.

        //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
        return false
    },
    layer
)

//Add a long feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add(
    OnLongFeatureClick { features: List<Feature?>? -> 
         //One or more features long clicked.

        //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
        return false
    },
    layer
)

Étapes suivantes

Pour voir des exemples de codes complets, consultez les articles suivants :