Interact with the map (Android SDK)
This article shows you how to use the maps events manager.
Note
Azure Maps Android SDK retirement
The Azure Maps Native SDK for Android is now deprecated and will be retired on 3/31/25. To avoid service disruptions, migrate to the Azure Maps Web SDK by 3/31/25. For more information, see The Azure Maps Android SDK migration guide.
Interact with the map
The map manages all events through its events
property. The following table lists the supported map events.
Event | Event handler format | Description |
---|---|---|
OnCameraIdle |
() |
Fires after the last frame rendered before the map enters an "idle" state:
|
OnCameraMove |
() |
Fires repeatedly during an animated transition from one view to another, as the result of either user interaction or methods. |
OnCameraMoveCanceled |
() |
Fires when a movement request to the camera has been canceled. |
OnCameraMoveStarted |
(int reason) |
Fires just before the map begins a transition from one view to another, as the result of either user interaction or methods. The reason argument of the event listener returns an integer value that provides details of how the camera movement was initiated. The following list outlines the possible reasons:
|
OnClick |
(double lat, double lon): boolean |
Fires when the map is pressed and released at the same point on the map. This event handler returns a boolean value indicating if the event should be consumed or passed further to other event listeners. |
OnFeatureClick |
(List<Feature>): boolean |
Fires when the map is pressed and released at the same point on a feature. This event handler returns a boolean value indicating if the event should be consumed or passed further to other event listeners. |
OnLayerAdded |
(Layer layer) |
Fires when a layer is added to the map. |
OnLayerRemoved |
(Layer layer) |
Fires when a layer is removed from the map. |
OnLoaded |
() |
Fires immediately after all necessary resources have been downloaded and the first visually complete rendering of the map has occurred. |
OnLongClick |
(double lat, double lon): boolean |
Fires when the map is pressed, held for a moment, and then released at the same point on the map. This event handler returns a boolean value indicating if the event should be consumed or passed further to other event listeners. |
OnLongFeatureClick |
(List<Feature>): boolean |
Fires when the map is pressed, held for a moment, and then released at the same point on a feature. This event handler returns a boolean value indicating if the event should be consumed or passed further to other event listeners. |
OnReady |
(AzureMap map) |
Fires when the map initially loads, the orientation changes, the minimum required map resources load and the map is ready to be interacted with programmatically. |
OnSourceAdded |
(Source source) |
Fires when a DataSource or VectorTileSource is added to the map. |
OnSourceRemoved |
(Source source) |
Fires when a DataSource or VectorTileSource is removed from the map. |
OnStyleChange |
() |
Fires when the map's style loads or changes. |
The following code shows how to add the OnClick
, OnFeatureClick
, and OnCameraMove
events to the map.
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.
})
For more information, see the Navigating the map documentation on how to interact with the map and trigger events.
Scope feature events to layer
When the OnFeatureClick
or OnLongFeatureClick
events are added to the map, a layer instance or layer ID can be passed in as a second parameter. When a layer is passed in, an event fires if it occurs on that layer. Events scoped to layers are supported by the symbol, bubble, line, and polygon layers.
//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
)
Next steps
See the following articles for full code examples: