У меня есть приложение для Android, и я хочу обновить отображаемые маркеры, когда пользователь перемещает камеру на карте в зависимости от текущих значений LatLngBounds.
Проблема в том, что событие CameraMove срабатывает слишком часто. Даже небольшое движение пальцем вызывает десятки событий.
Метод GetData немного дорог, поэтому я не хочу вызывать его слишком часто.
Есть ли какой-то правильный способ рисовать данные только тогда, когда карта перестала «двигаться»?
Мое приложение на C # (Xamarin), но любая помощь на Java / Kotlin приветствуется.
public void OnMapReady(GoogleMap googleMap)
{
googleMap.CameraMove += GglMap_CameraMove;
}
private void GglMap_CameraMove(object sender, EventArgs e)
{
var googleMap = (GoogleMap)sender;
var bounds = googleMap.Projection.VisibleRegion.LatLngBounds;
var zoom = googleMap.CameraPosition.Zoom;
if (zoom>18)
{
var data = GetData(bounds);
DrawMarkers(data);
}
}
Также есть событие CameraMoveStarted, которое срабатывает только один раз, но CameraMoveEnded отсутствует.