查询 Geofire 以获得该地区前 X 条记录?
Query Geofire for top X number of records in the area?
我正在努力了解 Geofire,所以暂时假设我的 firebase 数据库在 U.S 中排名靠前。在这种情况下,我的 firebase 查询将 return 该国排名前 100 的酒吧的评级列表。如果把地图缩小到全国,难道Geofire return 只显示全国前100 条吧?另外如果把地图放大到纽约,难道Geofire也只能return纽约的前100名吗?换句话说,我想 return 给定查看区域的前 100 个,其中列表随着列表的移动而明显变化。它能处理这个吗?如果是这样,我能看到一个例子吗?
提前致谢!
您可以使用地理查询来设置放大和缩小的中心和半径
var geoQuery = geoFire.query({
center: [10.38, 2.41],
radius: 10.5
});
var center = geoQuery.center(); // center === [10.38, 2.41]
var radius = geoQuery.radius(); // radius === 10.5
geoQuery.updateCriteria({
center: [-50.83, 100.19],
radius: 5
});
center = geoQuery.center(); // center === [-50.83, 100.19]
radius = geoQuery.radius(); // radius === 5
geoQuery.updateCriteria({
radius: 7
});
center = geoQuery.center(); // center === [-50.83, 100.19]
radius = geoQuery.radius(); // radius === 7
对于前 100 个,您可以使用当您收到当前 geoQery 的 100 个元素时调用取消的方法。
var geoQuery = geoFire.query({
center: [10.38, 2.41],
radius: 10.5
});
var bars = []
var onKeyExitedRegistration = geoQuery.on("key_exited", function(key, location, distance) {
console.log(key + " exited query to " + location + " (" + distance + " km from center)");
bars.push(key);
if(bars.length>=100)
{
geoQuery.cancel();
}
});
我正在努力了解 Geofire,所以暂时假设我的 firebase 数据库在 U.S 中排名靠前。在这种情况下,我的 firebase 查询将 return 该国排名前 100 的酒吧的评级列表。如果把地图缩小到全国,难道Geofire return 只显示全国前100 条吧?另外如果把地图放大到纽约,难道Geofire也只能return纽约的前100名吗?换句话说,我想 return 给定查看区域的前 100 个,其中列表随着列表的移动而明显变化。它能处理这个吗?如果是这样,我能看到一个例子吗?
提前致谢!
您可以使用地理查询来设置放大和缩小的中心和半径
var geoQuery = geoFire.query({
center: [10.38, 2.41],
radius: 10.5
});
var center = geoQuery.center(); // center === [10.38, 2.41]
var radius = geoQuery.radius(); // radius === 10.5
geoQuery.updateCriteria({
center: [-50.83, 100.19],
radius: 5
});
center = geoQuery.center(); // center === [-50.83, 100.19]
radius = geoQuery.radius(); // radius === 5
geoQuery.updateCriteria({
radius: 7
});
center = geoQuery.center(); // center === [-50.83, 100.19]
radius = geoQuery.radius(); // radius === 7
对于前 100 个,您可以使用当您收到当前 geoQery 的 100 个元素时调用取消的方法。
var geoQuery = geoFire.query({
center: [10.38, 2.41],
radius: 10.5
});
var bars = []
var onKeyExitedRegistration = geoQuery.on("key_exited", function(key, location, distance) {
console.log(key + " exited query to " + location + " (" + distance + " km from center)");
bars.push(key);
if(bars.length>=100)
{
geoQuery.cancel();
}
});