Я столько недель пытался заставить его работать. Я читал документацию много раз, и, похоже, в Интернете нет примеров этого.
Цель: все, что я хочу сделать, это распечатать на консоли все сообщения, которые находятся в радиусе 10 км от местоположения текущего пользователя.
Проблемы: я действительно не понимаю, какие параметры нужно поместить в geoFire.setLocation
местоположения пользователя или местоположение публикации. В документации показаны только координаты, введенные вручную. Я хочу вытащить свой из firebase и запросить его, когда пользователь окажется в пределах 10 км, они будут выведены на консоль. В настоящее время с кодом, который у меня нет, вообще ничего не печатается.
fileprivate func setupGeoFireLocation() {
let ref = Database.database().reference(withPath: "posts")
ref.observe(.childAdded, with: { (snapshot) in
guard let dictionary = snapshot.value as? [String: Any] else { return }
guard let latitude = dictionary["latitude"] as? String else { return }
guard let longitude = dictionary["longitude"] as? String else { return }
let postLat = (latitude as! NSString).doubleValue
let postLon = (longitude as! NSString).doubleValue
self.geoFire.setLocation(CLLocation(latitude: postLat, longitude: postLat), forKey: "posts")
//Not quite sure what's meant to be the "forKey:" parameter.
})
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let userLocation: CLLocation = locations[0] as CLLocation
ref = Database.database().reference()
geoFire = GeoFire(firebaseRef: ref)
let center = CLLocation(latitude: userLocation.coordinate.latitude, longitude: userLocation.coordinate.longitude)
let circleQuery = geoFire.query(at: center, withRadius: 10.0)
_ = circleQuery.observe(.keyEntered, with: { (key, location) in
print(key)
})
circleQuery.observeReady{
print("All initial data has been loaded and events have been fired for circle query!")
}
}
geoFire.setlocation
@Artem - person user   schedule 06.11.2018