检索位置(经纬度)内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

+0

不完全相同,但也许我仍然能够想出我需要的行为。 –