2013-06-27 1 views
3

У меня есть около 3500 географических точек интереса в области 9000 км^2, и я хочу, чтобы мое приложение запускалось в фоновом режиме и уведомляло пользователя, когда он или она в непосредственной близости от любого из вышеупомянутых пунктов.Отслеживание более 100 одновременных геофонов с новым API для Android

Новый Geofence API, представленный во время Google I/O 2013, оказался идеальным для работы, особенно потому, что он оптимизирован для работы от батареи, но я не могу зарегистрировать более 100 геообъектов, прежде чем получить код состояния GEOFENCE_TOO_MANY_GEOFENCES (используя измененная версия демонстрационного приложения).

Можно ли увеличить этот предел? Возможно, через некоторые настройки или API?

+0

Что удерживает вас от сохранения ваших очков в массиве и для сравнения текущего местоположения с ними? –

+0

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

ответ

14

Я бы порекомендовал загружать все точки на базу данных sqlite на устройстве. Затем найдите ближайшие 99 баллов с чем-то вроде этого: SQlite Getting nearest locations (with latitude and longitude) и зарегистрируйте эти очки с Android для мониторинга.

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

+1

Интересно. Да, ты прав, это может сработать. Если я возьму наименьший круг, содержащий эти 99 баллов, а затем уменьшаю его радиус до тех пор, пока он больше не пересечется с какими-либо другими геологиями, он должен работать как «существенное изменение» геозонности. – aadnk

1

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

+0

В итоге я написал свою собственную систему геозондирования. Места расположения были слишком сгруппированы для меня, чтобы отслеживать только самые близкие 100 очков, и мне, вероятно, нужна точность GPS, чтобы сделать это надежно. Но тогда я мог бы сам реализовать остальных. Тем не менее, если вы хотите использовать Geofence API, это, вероятно, правильное решение. Поэтому я просто буду отмечать это как принято. – aadnk

+0

@aadnk вы можете поделиться своей системой геозондирования? – rokonoid

+2

К сожалению, нет, поскольку я написал это для своего работодателя. Но я могу объяснить, как я это сделал: я разделил область на ячейки 30x30, каждая ячейка содержит список геофотоснимков, ближайший к центру ячейки. Чтобы найти геозонность из точки, я линейно искал все геозоны в ближайшей к точке ячейке и трех ближайших соседних ячейках. – aadnk