I have an iOS Swift project running with PHP back-end. The app gets user location (lng
& lat
), posts to API (back-end), and receives data back. The data is a list of locations nearby user's location.
Now, I move to Firebase. The data structure is like:
And the code I tried to get data from Firebase:
let radius: Double = 0.7
let lng_min = lng - radius/abs(cos(deg2rad(lat))*69)
let lng_max = lng + radius/abs(cos(deg2rad(lat))*69)
let lat_min = lat - (radius/69)
let lat_max = lat + (radius/69)
ref = FIRDatabase.database().reference()
ref.child("v1")
.queryOrderedByChild("lng")
.queryStartingAtValue(lng_min)
.queryEndingAtValue(lng_max)
.queryOrderedByChild("lat")
.queryStartingAtValue(lat_min)
.queryEndingAtValue(lat_max)
.observeEventType(.Value, withBlock: { snapshot in
print(snapshot.childrenCount)
})
App crashed while run with error: Cannot use multiple queryOrderedBy calls!
How can I query on Firebase like SQL query below?
SELECT lat, lng FROM `table`
WHERE (lng BETWEEN lng_min AND lng_max) //~> lng_min <= lng <= lng_max
AND (lat BETWEEN lat_min AND lat_max)