Взаимодействие с картой (пакет SDK для Android)
Из этой статьи вы узнаете, как работать с диспетчером событий карт.
Примечание.
Прекращение использования пакета SDK для Android для Azure Maps
Пакет SDK для машинного кода Azure Maps для Android теперь не рекомендуется и будет снят с 3.31.25. Чтобы избежать сбоев в работе служб, перейдите в веб-пакет SDK Azure Maps на 3/31/25. Дополнительные сведения см . в руководстве по миграции пакета SDK для Android для Azure Maps.
Взаимодействие с картой
Карта управляет всеми событиями посредством свойства events
. В следующей таблице перечислены поддерживаемые события карты.
Мероприятие | Формат обработчика событий | Description |
---|---|---|
OnCameraIdle |
() |
Срабатывает после последнего кадра, отрисованного перед картой, введите состояние простоя:
|
OnCameraMove |
() |
Неоднократно возникает при анимированном переходе из одного представления в другое в результате взаимодействия с пользователем или методов. |
OnCameraMoveCanceled |
() |
Возникает при отмене запроса на перемещение к камере. |
OnCameraMoveStarted |
(int reason) |
Запускается непосредственно перед началом перехода из одного представления в другое в результате взаимодействия пользователя или методов. Аргумент reason прослушивателя событий возвращает целочисленное значение со сведениями о том, как было инициировано перемещение камеры. В списке ниже приведены возможные причины:
|
OnClick |
(double lat, double lon): boolean |
Возникает при нажатии и отпускании карты в той же точке на карте. Этот обработчик событий возвращает логическое значение, указывающее, должно ли событие быть использовано или же передано другим прослушивателям. |
OnFeatureClick |
(List<Feature>): boolean |
Возникает при нажатии и отпускании карты в той же точке в функции. Этот обработчик событий возвращает логическое значение, указывающее, должно ли событие быть использовано или же передано другим прослушивателям. |
OnLayerAdded |
(Layer layer) |
Возникает при добавлении слоя на карту. |
OnLayerRemoved |
(Layer layer) |
Возникает при удалении слоя с карты. |
OnLoaded |
() |
Запускается сразу после скачивания всех необходимых ресурсов и первая визуальная отрисовка карты. |
OnLongClick |
(double lat, double lon): boolean |
Возникает при нажатии, удержании, а затем отпускании карты в той же точке на карте. Этот обработчик событий возвращает логическое значение, указывающее, должно ли событие быть использовано или же передано другим прослушивателям. |
OnLongFeatureClick |
(List<Feature>): boolean |
Возникает при нажатии, удержании, а затем отпускании карты в той же точке в функции. Этот обработчик событий возвращает логическое значение, указывающее, должно ли событие быть использовано или же передано другим прослушивателям. |
OnReady |
(AzureMap map) |
Запускается при первоначальной загрузке карты, изменение ориентации, минимальная требуемая загрузка ресурсов карты и карта готова к программному взаимодействию. |
OnSourceAdded |
(Source source) |
Возникает при добавлении DataSource или VectorTileSource на карту. |
OnSourceRemoved |
(Source source) |
Возникает при удалении DataSource или VectorTileSource с карты. |
OnStyleChange |
() |
Возникает при загрузке или изменении стиля карты. |
В коде ниже показано, как добавить события OnClick
, OnFeatureClick
и OnCameraMove
в карту.
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.
})
Подробнее о том, как взаимодействовать с картой и активировать события, см. в документации Перемещение по карте.
Применение событий функции на слое
OnFeatureClick
При добавлении событий OnLongFeatureClick
на карту экземпляр слоя или идентификатор слоя можно передать в качестве второго параметра. Когда слой передается, событие возникает, если оно происходит на этом слое. Применяемые события поддерживаются уровнями символов, пузырьков, линий и многоугольников.
//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
)
Следующие шаги
Полные примеры кода см. в следующих статьях: