Событие KeyEntered происходит за пределами запроса - PullRequest
0 голосов
/ 18 апреля 2019

У меня проблемы с получением 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

Я не очень знаком с внутренней работой этой библиотеки. Я ожидаю, что запрос будет очень точным и не вернет никаких документов, которые находятся за пределами запроса. Кто-нибудь знает, что я делаю неправильно?

...