Делать что-то, когда телефон достигает местоположения? - PullRequest
5 голосов
/ 01 июня 2010

У меня есть список координат в базе данных, обозначенный как POI. Для города может быть> 100 записей.

Я хотел бы получить уведомление, когда телефон находится в радиусе 150 метров от одного из местоположений. Координаты местоположения тоже имеют ошибку / радиус, обычно от 10 до 100 метров. Поскольку я не считаю целесообразным добавлять каждое местоположение (может быть сотни) для триггера, как я могу оптимизировать код пробуждения?

Также у меня есть варианты удалить ранее настроенное уведомление из очереди?

Ответы [ 3 ]

2 голосов
/ 02 июня 2010

Вы можете хранить ваши POI в какой-то интеллектуальной таблице Hash-Table, используя координаты для вычисления уникального хэша. Каждый раз, когда приходит обновление местоположения, вы делаете поиск в своей хэш-таблице, чтобы увидеть, есть ли POI рядом с текущим местоположением. Этот поиск должен принимать только O (1), так как это поиск по хешу.

Нужный диапазон должен учитываться при вычислении хэшей и хранении POI.

Просто идея!

С уважением, mefiX

0 голосов
/ 04 июня 2010

Эта проблема напоминает мне графику в видеоиграх. Нет необходимости загружать точки, которые находятся далеко за пределами вашего диапазона движения. Я бы разбил карту на сетку, установил триггеры для 8 блоков приличной сетки и затем для каждого из POI в текущем блоке сетки. Когда новый блок сетки достигнут, триггеры обновляются. Вероятно, было бы разумно перекрывать блоки сетки с учетом диапазона ошибок.

0 голосов
/ 03 июня 2010

Существует приложение под названием Locale, которое может переключать различные события в зависимости от вашего местоположения GPS ИЛИ доступной сети Wi-Fi ИЛИ идентификатора сотовой станции и т. Д.

Он также имеет интерфейс плагинов. Для вас может быть полезно изучить это приложение и, возможно, написать для него плагин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...