Я создаю приложение для Android, которое использует карту google. как навигационное приложение, которое обновляет местоположение на экране во время движения. Я разместил на карте несколько маркеров, и для каждого маркера имеется радиус 125. Когда текущее местоположение пересекается с радиусом маркера, я получаю предупреждающее сообщение. Это делается путем прокрутки всех маркеров и проверки того, пересекается ли текущее местоположение с радиусом любого из маркеров в OnLocationChangedMethod(). он работает хорошо, если у вас есть пара маркеров, но у меня более 30 маркеров. К тому времени, когда требуется перебрать все маркеры и сообщить, есть ли пересечение, текущее местоположение прошло бы через маркер. так что это занимает больше времени и не очень эффективно.Предупреждение, когда текущее местоположение рядом с маркером android map
Я надеюсь, что кто-то может помочь в более эффективном подходе к тому, как это сделать. Я прочитал пару решений, которые предлагают взять границы карты и найти видимый маркер. но это также перебирает все маркеры, и это займет то же время, что и мое решение.
Я был бы признателен, если бы кто-нибудь мог помочь.
Спасибо,
Абдулла
Почему бы вам не сохранить местоположения маркеров в своей базе данных и сравнить их с местоположением пользователя через каждые 45 секунд через ваш сервис. – Ranjit
Маркеры фактически хранятся на база данных сервера. при первой инициализации приложения маркеры загружаются и сохраняются локально в базе данных SQLite. 45 секунд он слишком длинный. радиус маркера составляет 250 метров. для прохождения маркера потребуется в среднем 25 секунд. времена не проблема. процесс проверки наличия пересечения фактически занимает время, основанное на количестве маркеров, хранящихся в базе данных. Я не знаю, есть ли решение, позволяющее маркерам действовать как радар, а не текущий маркер местоположения. –