зная, когда карта перестала прокручиваться (например, «moveend» в javascript API)

Мне нужно определять, когда MapView был прокручен или увеличен, например событие "moveend" в javascript API. Я хотел бы подождать, пока представление не перестанет двигаться, чтобы затем я мог определить, нужно ли мне запрашивать мой сервер для элементов, находящихся в прямоугольнике просмотра, и, если да, отправить запрос. (на самом деле я отправляю запрос на немного большую площадь, чем прямоугольник просмотра)

Очевидно, я бы предпочел не отправлять запрос данных, если представление все еще движется. Но еще хуже то, что я не знаю, что мне нужно отправить еще один запрос, оставляя участки карты без маркеров.

В настоящее время я создаю подкласс MapView и обрабатываю событие onTouchEvent следующим образом:

 public boolean onTouchEvent(android.view.MotionEvent ev) {
        super.onTouchEvent (ev);
        if (ev.getAction() == MotionEvent.ACTION_UP) {
            GeoPoint center = getMapCenter();
            int latSpan = getLatitudeSpan(), lngSpan = getLongitudeSpan();
            /* (check if it has moved enough to need a new set of data)  */    
        }
        return true;
    }

Проблема в том, что я не делаю этого. Я не знаю, остановился ли просмотр, поскольку прокрутка имеет тенденцию к инерции и может продолжаться после события «ACTION_UP».

Есть ли какое-то событие, которое я могу задействовать, которое будет предупреждать меня, когда вид карты переместится (или масштабируется)? Если нет, кто-нибудь написал логику для обнаружения этого? Теоретически я мог бы сделать предположение, посмотрев на все действия, и настроить что-то, чтобы появиться позже и проверить это ... но ... это кажется беспорядочным и PITA. Но если кто-то это уже написал .... :)

11
задан rob 4 December 2010 в 03:17
поделиться