检索位置(经纬度)内GoogleMap的视口从火力地堡
问题描述:
如果我是在得到从mySQL
数据库指定视口内经纬度的列表来实现,我会查询类似SELECT * FROM places WHERE lat>=$east && lat<=$west && lng>=south && lng<=north
检索位置(经纬度)内GoogleMap的视口从火力地堡
我不知道,如果我们有效地哪有在Firebase中做类似的事情?
例如结构,
-lats
---12.34567
---23.45678
-lngs
---12.34567
---23.45678
我想检索,然后在每个节点比较每个孩子的在客户端的。
for(double lat: lats){
if(lat >= east && lat <= west){
myLats.add(lat);
}
}
for(double lng: lngs){
if(lng >= south && lng <= north){
myLngs.add(lngs);
}
}
我认为这是低效的,如果我们有1000个孩子从拉特和1000个来自lng的孩子。
我不知道是否有比这更好的方法?
答
Firebase数据库查询只能在单个条件下查询。所以通常不可能查询一个位置,因为这需要在经度和纬度上进行过滤。
幸运的是,有一个名为GeoFire的库(通过geo-hashes的魔法)允许对Firebase数据库运行地理查询。样本geo-query from the documentation:
// creates a new query around [37.7832, -122.4056] with a radius of 0.6 kilometers
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(37.7832, -122.4056), 0.6);
我建议你看看GeoFire for Java。
不完全相同,但也许我仍然能够想出我需要的行为。 –