Как обнаружить движение Google MapView в Android? - PullRequest
7 голосов
/ 02 августа 2011

Я хотел бы динамически обновлять карту / загружать новые наложения карты каждый раз, когда мой пользователь перемещает ее на определенное расстояние. Как мне это сделать? Есть ли слушатель каждый раз, когда пользователь перемещает карту? Скорее всего, я бы просто измерил расстояние между центральными точками.

Спасибо!

Ответы [ 3 ]

8 голосов
/ 04 августа 2011

Попробуйте это, чтобы обнаружить движения карты: http://pa.rezendi.com/2010/03/responding-to-zooms-and-pans-in.html

При запуске и после перемещения карты вы должны сохранить текущий центр карты. Как предполагает статья, отслеживайте ACTION_UP, чтобы определить, когда пользователь закончил движение карты. Затем сравните новый центр карты со старым центром карты. Для получения картографических центров используйте getMapCenter () MapView:

http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/MapView.html#getMapCenter()

РЕДАКТИРОВАТЬ: Я проделал некоторую дополнительную работу над этим, и у меня есть полное приложение с кодом для вашего удовольствия. Этот пост в блоге объясняет решение для таймера и содержит ссылку на источник Github: http://bricolsoftconsulting.com/extending-mapview-to-add-a-change-event/

0 голосов
/ 02 августа 2011

Вы можете сделать это, переопределив метод onTouch(...) в Activity (чтобы каждый раз, когда пользователь просматривал карту, вы могли пересчитывать границы карты). Вам нужно знать уровень масштабирования карты и границы, и т. Д., Чтобы загрузить эти наложения на основе расстояний до карты.

0 голосов
/ 02 августа 2011

Интерфейс карты, к сожалению, не включает никаких слушателей для мониторинга действий карты (масштабирование / панорамирование). Вам нужно установить какой-нибудь таймер, который проверяет уровень по центру / масштабированию, чтобы выяснить, изменились ли вещи, и соответственно обновить.

...