我正在尝试将GeoFirestore与Swift 5配合使用以从Firestore数据库中指定半径的圆中选择点。查询是:
sfQuery = geoFirestore.query(withCenter: testLocation, radius: 4.0)
使用GeoFirestore将点添加到数据库中,这为每个位置添加了相应的l和g字段。通过初始化观察者激活查询时:
let _ = sfQuery.observe(.documentEntered, with:
{ (key, location) in
if let key = key, let loc = location
{
print("The document with documentID '\(String(describing: key))' entered the search area and is at location '\(String(describing: loc))'")
}
})
返回选定的点,但结果不准确。我已经从“ testLocation”中独立计算了所有点的Haversine距离(并从物理上知道它们有多远)。使用半径为4km的示例查询,应该选择2个点,而返回4个点。他们两个人的Haversine距离为8.6公里。如果我以10公里为半径运行查询,则应合理选择上述4个点。但是,返回7分。其中3个的Haversine距离分别为11.0、12.1和22.9 km。
有没有其他人观察到类似现象并且对为什么会发生有任何见解?
Thx。 RB