У меня уже есть собственное местоположение пользователя с помощью CL Location Manager. Это местоположение также уже есть в базе данных Firebase по адресу koordinaten. Теперь я хочу взять координату пользователя текущего пользователя и найти пользователей, которые находятся в той же области. Если да, то они должны получить пин-код на карте текущего пользователя.
Поэтому у меня есть этот код:
let db = Firestore.firestore()
db.collection("users").whereField("uid", isEqualTo: Auth.auth().currentUser?.uid ?? "x")
.getDocuments { (querySnapshot, err) in
let location = querySnapshot!.documents[0].get("koordinaten")
let geofire = GeoFire(firebaseRef: querySnapshot!.documents[0].get("koordinaten") as! DatabaseReference)
let center = CLLocation(coder: location as! NSCoder)
let circleQuery = geofire.query(at: center!, withRadius: 5000000000000000000000000000);
var queryHandle = circleQuery.observe(.keyEntered) { (key: String!, location: CLLocation!) in
print("Key '\(String(describing: key))' entered the search area and is at location '\(String(describing: location))'")
let newPin = MKPointAnnotation()
newPin.coordinate = location.coordinate
self.MapView.addAnnotation(newPin)
}
}
Но на самом деле это не работает так, как должно. Кто-нибудь знает, как это решить? Я знаю, что есть похожие вопросы... но код, например, из Получение ключей из GeoFire в радиусе в Swift не работает в моем приложении? раздражающий.
circleQuery.observe
замыкание вроде не вызывает. Пожалуйста, поставьте точку останова на строкуlet location = ...
и на строку с операторомprint
и проверьте, выполняются ли они. - person Andreas Oetjen   schedule 08.02.2021