加载现有的 Geofire 位置(如果存在)
Load existing Geofire location if one exists
我希望 Geofire 做以下两件事之一; 1 - 在 Firebase 中寻找场地位置,如果 none 存在,则 2 - 创建一个。
所以澄清一下:
- 用户根据当前场地创建post。
- Geofire 检查它是否已经为该地理位置记录了一个地点(经度和纬度坐标)。如果它 确实 将该位置存储在 Firebase 中,那么它会将用户的新 post 和 ADDS 带到同一地点。
- 如果 Geofire 没有 在 Firebase 中检测到一个位置,它会创建一个新的场所并将 post 附加到它。
我已将场地详细信息与 Geofire 坐标分开,但我不明白如何让 Geofire 区分 Firebase 中是否存在此位置的条目。
当我 运行 我的应用程序时,它每次都会根据下面的屏幕截图创建一个新条目,这显然不是我想要的。
代码如下:
首先我设置了名称和目录的引用(我单独设置它们,因为我在少数情况下使用名称 ref)
override func viewDidLoad() {
super.viewDidLoad()
geoFireNameRef = Database.database().reference().childByAutoId()
geoFireRef = Database.database().reference().child("PostLocations").child("Coordinates")
geoFire = GeoFire (firebaseRef: geoFireRef)
}
然后在我的 post 方法中调用:
func savePost () {
let location = CLLocation.init(latitude: lat!, longitude: long!) //Get Coordinates
geoFire.setLocation(location, forKey: self.geoFireNameRef.key)// Save Coordinates
postLocationDB.child(self.geoFireNameRef.key).setValue(locationDictionary) // Save Venue Details
}
据我所知,您想检查是否有具有现有坐标的场地。我的建议是将这对夫妇存储在您的 Coordinates/{venueId} 节点下,作为一个由两个坐标组成的额外字段,如下所示:
- Coordinates
- -LAWR2LH.....
- l
- 0: 22.345
- 1: 22.345
- compoundL: "22.345-22.345"
然后使用结合了 queryOrderedByChild 和 queryEqualToValue 的查询直接查询实时数据库,以查找是否已经存在具有 compoundL = 22.345-22.345 的 Coordinates/Venue 节点。
我希望 Geofire 做以下两件事之一; 1 - 在 Firebase 中寻找场地位置,如果 none 存在,则 2 - 创建一个。
所以澄清一下:
- 用户根据当前场地创建post。
- Geofire 检查它是否已经为该地理位置记录了一个地点(经度和纬度坐标)。如果它 确实 将该位置存储在 Firebase 中,那么它会将用户的新 post 和 ADDS 带到同一地点。
- 如果 Geofire 没有 在 Firebase 中检测到一个位置,它会创建一个新的场所并将 post 附加到它。
我已将场地详细信息与 Geofire 坐标分开,但我不明白如何让 Geofire 区分 Firebase 中是否存在此位置的条目。
当我 运行 我的应用程序时,它每次都会根据下面的屏幕截图创建一个新条目,这显然不是我想要的。
代码如下:
首先我设置了名称和目录的引用(我单独设置它们,因为我在少数情况下使用名称 ref)
override func viewDidLoad() {
super.viewDidLoad()
geoFireNameRef = Database.database().reference().childByAutoId()
geoFireRef = Database.database().reference().child("PostLocations").child("Coordinates")
geoFire = GeoFire (firebaseRef: geoFireRef)
}
然后在我的 post 方法中调用:
func savePost () {
let location = CLLocation.init(latitude: lat!, longitude: long!) //Get Coordinates
geoFire.setLocation(location, forKey: self.geoFireNameRef.key)// Save Coordinates
postLocationDB.child(self.geoFireNameRef.key).setValue(locationDictionary) // Save Venue Details
}
据我所知,您想检查是否有具有现有坐标的场地。我的建议是将这对夫妇存储在您的 Coordinates/{venueId} 节点下,作为一个由两个坐标组成的额外字段,如下所示:
- Coordinates
- -LAWR2LH.....
- l
- 0: 22.345
- 1: 22.345
- compoundL: "22.345-22.345"
然后使用结合了 queryOrderedByChild 和 queryEqualToValue 的查询直接查询实时数据库,以查找是否已经存在具有 compoundL = 22.345-22.345 的 Coordinates/Venue 节点。