2014-01-12 2 views
3

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

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

Я был бы признателен, если бы кто-нибудь мог помочь.

Спасибо,

Абдулла

+0

Почему бы вам не сохранить местоположения маркеров в своей базе данных и сравнить их с местоположением пользователя через каждые 45 секунд через ваш сервис. – Ranjit

+0

Маркеры фактически хранятся на база данных сервера. при первой инициализации приложения маркеры загружаются и сохраняются локально в базе данных SQLite. 45 секунд он слишком длинный. радиус маркера составляет 250 метров. для прохождения маркера потребуется в среднем 25 секунд. времена не проблема. процесс проверки наличия пересечения фактически занимает время, основанное на количестве маркеров, хранящихся в базе данных. Я не знаю, есть ли решение, позволяющее маркерам действовать как радар, а не текущий маркер местоположения. –

ответ

6

Это похоже на то, что вы бы лучше подошли для Geofencing, потому что это в основном то, что вы пытаетесь сделать. Нет необходимости во всех этих различных сервисах и в тех случаях, когда есть что-то уже построенное в

+0

После большой интеграции с моим кодом и картой google. он работает очень хорошо. Большое спасибо. Быстрый вопрос. есть ли ограничение на количество точек геоцентричности, которые вы добавляете или нет? –

+0

100 - предел – tyczj

0

Использование двух служб. Один, чтобы получить текущее местоположение, а другое - рассчитать расстояния.

+0

Что вы подразумеваете под двумя услугами ?? вы имеете в виду нить? –

+0

Услуги как в http://developer.android.com/guide/components/services.html –

+0

У меня недостаточно времени, чтобы закончить мой ответ. Используйте две службы. Одна служба, которая передает местоположение и другую службу, которая вычисляет близость к каждой точке. Таким образом, теоретически, в любом случае, и о лучшем, что можно сделать в данных обстоятельствах, расчет близости не будет задерживать передачу местоположения. –

Смежные вопросы