设置大半径时,Firebase Geofire 仅查询 returns 个附近的项目
Firebase Geofire query only returns nearby items when a huge radius is set
出于某种原因,如果半径设置为 1197 或以上,我的 Geofire 仅查询 returns 个项目。少了,什么都不会退回。当返回数据并记录距离时,它们都小于 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 来搜索数据库,所以为了解决我的问题,我开始将 lat/lng 转换为 geohashes 并存储它。
Geofire 似乎需要 Geohash 来搜索数据库,而我的只存储纬度和经度,所以为了解决我的问题,我开始将 lat/lng 转换为 geohashes 并存储它。
要将坐标转换为 geohash,请参阅 https://github.com/chrisveness/latlon-geohash,这非常有效。
出于某种原因,如果半径设置为 1197 或以上,我的 Geofire 仅查询 returns 个项目。少了,什么都不会退回。当返回数据并记录距离时,它们都小于 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 来搜索数据库,所以为了解决我的问题,我开始将 lat/lng 转换为 geohashes 并存储它。
Geofire 似乎需要 Geohash 来搜索数据库,而我的只存储纬度和经度,所以为了解决我的问题,我开始将 lat/lng 转换为 geohashes 并存储它。
要将坐标转换为 geohash,请参阅 https://github.com/chrisveness/latlon-geohash,这非常有效。