Поскольку нативные GeoQueries еще не поддерживаются, я подумал о возможном решении, но хотел бы знать о его действительности и эффективности.
Что я хочу: У меня есть коллекцияоколо 2000 документов, каждый из которых содержит Geopoint.Я хотел бы запросить, например, 20 ближайших документов к текущему местоположению пользователя.
Возможное решение: Могу ли я создать другой документ в коллекции и получить его в качестве моего «индекса».Каждое имя поля будет строкой каждого документа ID.Значением каждого поля будет соответствующий Geopoint.Тогда мне понадобится только 1 операция чтения, когда приложение открыто ... Могу ли я затем использовать функцию для работы с полями документа 2000, чтобы вычислить и упорядочить расстояние каждого местоположения от пользователя?Наконец, могу ли я взять 20 ближайших результатов, а затем просто создать прослушиватель и получить только эти результаты?
Редактировать: Попытка моего предложения.Подался после столкновения с постоянными проблемами.Я получил рабочий индексный документ и смог его скачать, упорядочить, чтобы найти ближайшие места и соответствующий идентификатор документа.Однако у меня было много проблем с использованием массива идентификаторов документов для установки слушателей.Я использовал цикл for для циклического прохождения каждого идентификатора в массиве и установки прослушивателя для каждого, но он выполнялся только первым, и случайные сбои продолжали происходить.Кроме того, я заметил, что получение документа заняло немного больше времени ... Итак, я решил отказаться от высокоточного решения и просто запросить гео-точки, чтобы найти местоположения в квадрате вокруг пользователя.