Маркеры рисования GoogleMap на CameraMove - PullRequest
0 голосов
/ 06 января 2019

У меня есть приложение для 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 отсутствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...