Поделиться через


Взаимодействие с картой (пакет 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 прослушивателя событий возвращает целочисленное значение со сведениями о том, как было инициировано перемещение камеры. В списке ниже приведены возможные причины:
  • 1. Жест
  • 2. Анимация разработчика
  • 3. Анимация API
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
)

Следующие шаги

Полные примеры кода см. в следующих статьях: