0

何らかの理由で、Geofire クエリは、半径が正確に 1197 以上に設定されている場合にのみアイテムを返します。それ以下では何も返されません。データが返されて距離を記録すると、それらはすべて 1 km 未満であるため、これは意味がありません。

これについてのアイデアはありますか?

コード:

  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 が必要なようです。そのため、問題を解決するために、lat/lng を geohash に変換し、それも保存しました。

4

1 に答える 1

0

Geofire はデータベースを検索するために Geohash を必要とするようで、私の場合は緯度と経度のみが保存されていたので、問題を解決するために緯度/経度を geohash に変換し、それも保存しました。

座標をジオハッシュに変換するには、https://github.com/chrisveness/latlon-geohashを参照してください。これは完全に機能しました。

于 2015-10-08T14:43:57.120 に答える