0

在我的firebase数据库中给出了一个用户列表,其位置(长& lat)和半径(以公里为单位),有效地定义了各个“行动圈”。获取个人地理范围内的用户列表

{ 
    "users": { 
    "foo": { 
     "lat": 11.2549387, 
     "long": 17.3419559, 
     "radius": 50 
    }, 
    "bar": { 
     "lat": 9.5123445, 
     "long": 17.1221547, 
     "radius": 80 
    } 
    } 
} 

我现在的目标是要查询其圈涵盖了指定位置的所有用户(再次长& LAT)。由于用户列表可能很长,因此每次只计算每个用户的距离就没有意义。

我知道GeoFire for JavaScript,但这并不能完全解决我的问题,因为它不适合用非固定半径进行计算。

该解决方案应该是客户端(JavaScript)或云端功能。有关于此的任何想法?

回答

-1

Well GeoFire是您的解决方案,因为它可以为您优化查询。

我对JavaScript知道GeoFire的,但这并不能完全解决我的问题 ,因为它是不适合用 非固定半径计算。

它将与您刚刚需要的非固定半径一起工作,以便更新您的查询的半径和/或纬度与新用户并且它将获得附近的用户。

对于Geofire,您需要额外的seprate节点来存储每个用户的地理位置对象

+0

感谢您的回答。恐怕这样做可能会导致我的最终用户(数据库中有几百个用户)的响应时间相当长。或者我可能高估了处理时间? – sonovice

+0

它将被优化,geofire将索引geohash上的数据,而不是计算距离,它将使用geohash来查找最近的项目。检查使用geohash的好处。 –

+0

因此处理时间不会很长 –