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