gpt4 book ai didi

swift - GeoFire 圆查询 NSException

转载 作者:行者123 更新时间:2023-11-30 10:29:09 25 4
gpt4 key购买 nike

我在 Swift 应用中使用 Firebase 和 GeoFire 3.0 Cocoapod,用世界各地的标记填充 map 。以下是执行圆形查询以获取 map 上当前显示区域内的标记的代码:

        dbRef = Database.database().reference()
let geoRef = GeoFire(firebaseRef: dbRef.child("markers"))
let center = CLLocation(latitude: currentLocation.latitude, longitude: currentLocation.longitude)
print("Center: "," Lat: ",currentLocation.latitude," Long: ",currentLocation.longitude )
let circleQuery = geoRef.query(at: center, withRadius: 100)
circleQuery.observe(.keyEntered, with: { key, location in
print("key: ",key,"Location: ",location)
let markerKey = key
let markerLat = location.coordinate.latitude
let markerLong = location.coordinate.longitude
//read "verified" flag from firebase record "key"
self.dbRef.child(markerKey).observeSingleEvent(of: .value, with: { (snapshot) in
let value = snapshot.value as? NSDictionary
let verified = value?["verified"] as? Bool
print("key: ",key,"Location: ",location,"verified: ",verified as Any)
...
})
})

当用户缩小以显示整个世界的 map (半径为 8000 Km (4791 MI))而扩展圆形查询时,查询将因 NSException 中止。

Xcode 调试器显示 GeoFire 计算出的纬度为 105.9793939...,经度为 -112.05707936...

Geofire 应将纬度限制在 +/- 90 度,经度限制在 +/- 180 度,在这种情况下,所有 GeoFire 数据都应从查询中返回。

这是 Xcode 中错误的屏幕截图: Xcode Error Screenshot

还有其他人看到过这个问题和/或找到解决方案吗?

最佳答案

由于 GeoFire 显然按照您希望的方式限制纬度和经度,因此您有两个选择

  1. 报告 GeoFire 存储库上的问题,并可能自己提出 PR。
  2. 将值限制在您自己的应用代码中所需的范围内。

我建议采用第二种方法,因为无论如何您都希望/需要表明您在用户界面中剪切/限制了范围。

关于swift - GeoFire 圆查询 NSException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59494688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com