События в маркерах
Я работаю в приложении, чтобы заполнить 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: поиск ближайшего местоположения объекта в сетке карты)