События в маркерах

Я работаю в приложении, чтобы заполнить MapView списком любимых сайтов. Теперь у меня есть все маркеры в MapView, но я хотел бы сделать событие для этих маркеров, чтобы при нажатии на один из них запустить другое действие.

Я пытаюсь сделать событие onTouch, которое получает координаты X и Y, и после этого проверить в базе данных, есть ли это GeoPoint, но проверить невозможно, потому что геопоинт так нагружен множеством десятичных знаков, и его так сложно получить. так же, как у меня в базе данных.

Вопрос: есть ли какой-нибудь способ сделать событие в этом маркере???

1 ответ

Решение

Для "списка любимых сайтов", предполагая скромное количество сайтов, ItemizedOverlay типичное наложение для использования. Если вы используете это, просто переопределите onTap() который предоставляет индекс конкретного маркера, на который нажал пользователь.

Если вы используете Overlay вместо ItemizedOverlay, вы можете найти элемент в вашей базе данных, который является ближайшим к постукивающим координатам пользователя, используя что-то вроде этого:

SELECT MIN(ABS(Latitude - ?) + ABS(Longitude - ?)), _ID FROM Sites GROUP BY _ID LIMIT 1;

где вы предоставляете свою широту и долготу в качестве двухэлементного String[] в rawQuery() и отрегулируйте имена столбцов в зависимости от ситуации. Обратите внимание, что я не пробовал этот запрос лично, поэтому могут возникнуть проблемы с моим преобразованием в SQLite.

(получено из T-SQL: поиск ближайшего местоположения объекта в сетке карты)

Другие вопросы по тегам