Список ближайших местоположений GeoFire в табличном представлении

В настоящее время, как показано ниже, в моем табличном представлении отображается все из Firebase. Как ограничить список тем, что рядом?

DataService.dataService.BUSINESS_REF.observeEventType(.Value, withBlock: { snapshot in

        // A snapshot of the businesses data

        self.businesses = []

        if let snapshots = snapshot.children.allObjects as? [FDataSnapshot] {

            for snap in snapshots {

                // Make business array for the tableview
                if let postDictionary = snap.value as? Dictionary<String, AnyObject> {

                    let key = snap.key
                    let business = Business(key: key, dictionary: postDictionary)

                    // Show newest business first
                    self.businesses.insert(business, atIndex: 0)
                }
            }
        }

        // Update the table when there is new data

        self.searchTableView.reloadData()
    }) 

Я новичок в программировании iOS, и приведенные выше коды взяты из учебника. Я понимаю, что мне нужно использовать объекты GeoFire GFQuery, но я просто не могу понять, куда поместить это в свой код. Заранее спасибо!


person Thien    schedule 10.04.2016    source источник


Ответы (1)


Догадаться. Надеюсь, кто-то может предложить лучший способ сделать это.

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

    firebase = Firebase(url:"https://myapp.firebaseio.com/")
    geoFire = GeoFire(firebaseRef: firebase!.childByAppendingPath("geo"))

    let userLocation:CLLocationCoordinate2D = (locationManager.location?.coordinate)!
    let center = CLLocation(latitude: userLocation.latitude, longitude: userLocation.longitude)
    let span = MKCoordinateSpanMake(0.0125, 0.0125)
    let region = MKCoordinateRegionMake(center.coordinate, span)
    let regionQuery = geoFire?.queryWithRegion(region)

    UIApplication.sharedApplication().networkActivityIndicatorVisible = true

    regionQuery!.observeEventType(GFEventTypeKeyEntered, withBlock: { (key: String!, location: CLLocation!) in

        // Check for changes in Firebase database
        DataService.dataService.BUSINESS_REF.queryOrderedByKey().queryEqualToValue(key).observeEventType(.Value, withBlock: { snapshot in

            if let snapshots = snapshot.children.allObjects as? [FDataSnapshot]  {

                for snap in snapshots {

                    if let postDictionary = snap.value as? Dictionary<String, AnyObject> {

                    //let key = snap.key
                    let business = Business(key: key, dictionary: postDictionary)

                    self.businesses.insert(business, atIndex: 0)

                    }
                }
            }

            self.searchTableView.reloadData()

        })
    })
}
person Thien    schedule 30.04.2016