Запрос Firebase Geofire возвращает близлежащие элементы только в том случае, если установлен огромный радиус

По какой-то причине мой запрос Geofire возвращает элементы только в том случае, если радиус установлен точно на 1197 или выше. Меньше и ничего не вернешь. Когда данные возвращаются и я регистрирую расстояния, все они меньше 1 км, поэтому для меня это не имеет никакого смысла.

Любые идеи для этого?

Код:

  this.firebaseRef = new Firebase("<my firebase - this is fine>");
  this.geoFire = new GeoFire(this.firebaseRef);

  this.geoQuery = this.geoFire.query({
    center: [50.72001, -1.8800],
    radius: 1197
  });

  this.geoQuery.on("key_entered", function(key, location, distance){
    console.log(key + ', ' + location + ', ' + distance);
  });

Я должен упомянуть, что использую React, и это в методе componentWillMount.

Спасибо!

ОБНОВЛЕНИЕ: кажется, что Geofire требует Geohash для поиска в базе данных, поэтому, чтобы решить мою проблему, я начал преобразовывать широту/долготу в геохэши и также сохранил их.


person sherlock    schedule 07.10.2015    source источник
comment
GeoFire предоставляет методы для сохранения широты и долготы, которые должны создавать геохеш от вашего имени. Это может быть полезно.   -  person Kato    schedule 08.10.2015


Ответы (1)


Похоже, что Geofire требует Geohash для поиска в базе данных, а мой хранил только широту и долготу, поэтому, чтобы решить мою проблему, я начал преобразовывать широту/долготу в геохэши и тоже сохранял их.

Чтобы преобразовать координаты в геохеш, см. https://github.com/chrisveness/latlon-geohash. , это сработало отлично.

person sherlock    schedule 08.10.2015
comment
Возможно ли это в Javascript? Для поиска ключей (списка ключей) близлежащих статических (фиксированных) местоположений, которые предварительно добавлены в хранилище данных Firebase. Примечание: не используйте «key_entered», потому что «key_entered» срабатывает только при обновлении новой или позиции. Как насчет ранее добавленных локаций, но попадающих под заданный радиус. Как это возможно?? - person Ankit Maheshwari; 26.04.2017
comment
Да, это определенно возможно с помощью Geofire. Я бы порекомендовал посмотреть документацию для этого, я не работал с Geofire больше года, поэтому не могу вспомнить, как это сделать. - person sherlock; 26.04.2017
comment
Нет, не нашел! Подробнее см. этот вопрос: stackoverflow.com/questions/43632746/ - person Ankit Maheshwari; 27.04.2017