为什么GeoFirestore(快速)查询返回错误的结果

时间:2019-12-19 03:06:02

标签: swift geofirestore

我正在尝试将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

0 个答案:

没有答案