Мне нужно определять, когда 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. Но если кто-то это уже написал .... :)