У меня проблемы с получением GeoFirestore
для работы с моим проектом (обратите внимание, что это GeoFirestore-iOS
, а не библиотека javascript).
KeyEntered
события запускаются, когда их нет в запросе. Если область находится рядом с местом расположения документа, событие сработает, даже если оно находится на расстоянии около 1 км.
Как только событие KeyEntered
запускается в первый раз, оно продолжает срабатывать даже после того, как область запроса была перемещена на значительное расстояние от местоположения. При отладке кода я вижу, что в функции updateLocations()
для info.isInQuery
установлено значение false, но событие все еще вызывается? Он также иногда возвращает два одинаковых объекта для ключевых введенных событий. Я ожидаю, что это связано с той же проблемой.
Я не совсем уверен, что я делаю неправильно. Вот где я настроил запрос:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let userLocation:CLLocation = locations[0] as CLLocation
self.currentLocation = CLLocation(latitude: userLocation.coordinate.latitude, longitude: userLocation.coordinate.longitude)
if self.activeSearchQuery == "Current Location" && self.initialLocationsUpdate == true {
centerMapOnLocation(location: currentLocation)
self.regionQuery = GlobalDatabase.geoFirestore.query(inRegion: self.mapView.region)
let queryHandle = self.regionQuery.observe(.documentEntered, with: { (key, location) in
print("The document with documentID '\(key)' entered the search area and is at location '\(location)'")
// Get document here
}
})
self.initialLocationsUpdate = false
}
}
Затем я обновляю регион, когда пользователь перемещает местоположение на карте:
self.regionQuery.region = self.mapView.region
Я не очень знаком с внутренней работой этой библиотеки. Я ожидаю, что запрос будет очень точным и не вернет никаких документов, которые находятся за пределами запроса. Кто-нибудь знает, что я делаю неправильно?