Есть ли простой и эффективный способ запрашивать гео-точки в Firebase? - PullRequest
0 голосов
/ 26 октября 2019

В настоящее время я разрабатываю приложение Flutter, основанное на геолокации, мне нужно запросить на основе переменного радиуса.

Каждый документ в моей базе данных имеет поле с именем "position" с геохами и геопунктом,проблема в том, что единственная библиотека, которую я знаю, это geofire, но она не очень эффективна, потому что, если я запрашиваю определенный радиус (10 км), а затем мне нужно запросить от 10 км до 20 км, я не могу: я могу просто запроситьснова с фиксированным радиусом 20 км, что означает, что я запрашиваю (и плачу) первые 10 км бесплатно, потому что они у меня уже были.

1 Ответ

0 голосов
/ 26 октября 2019

проблема в том, что единственная библиотека, которую я знаю, это geofire,

Насколько я знаю, на данный момент это единственная библиотека.

ЕслиЯ запрашиваю определенный радиус (10 км)

Это возможно наверняка.

, чем мне нужно запросить от 10 км до 20 км, я не могу

Вы не можете запрашивать, но вы можете получить местоположения от 10 км до 20 км, что, я думаю, то, что вы хотите. Поскольку у вас уже есть местоположения в пределах 10 км, когда вы запрашиваете местоположения от 0 до 20 км, каждое полученное вами место является новым, что означает, что оно находится в пределах от 10 км до 20 км.

, что означает, что я запрашиваю(и платить) первые 10 км даром, потому что они у меня уже были.

Нет, вы не платите за те местоположения, которые находятся в пределах 10 км, так как эти местоположения поступают из кеша. Поэтому, когда вы выполняете второй запрос (от 10 км до 20 км), вы будете платить только за места в этом диапазоне.

Проблема возникает, если вы хотите получить местоположения от 10 км до 20 км напрямую, не имеяместа от 0км до 10км. В этом случае вы получаете все местоположения от 0 км до 20 км, а затем выполняете другой запрос, чтобы получить все местоположения от 0 км до 10 км. Теперь, чтобы все местоположения были от 10 км до 20 км, просто удалите все местоположения, которые вы получите из второго запроса. Так что в обоих случаях вам нужно выполнить два запроса.

...