私はGeoFireを使用して、半径(例えば、10kmの距離のすべて)を取得しようとしています。FirebaseとGeoFireを使用して半径を使って位置データを取得する
明確にするため、私は詳細と場所をデータベースに別々に保存していますので、詳細は 'idは場所のIDと同じです。データを保存している間、私が使用します。
var details = ["a":"a", "b":"b", etc]
let checkpointRef = eventRef.childByAutoId()
checkpointRef.setValue(details)
let checkpointId = checkpointRef.key
let geofireRef = ref.childByAppendingPath("checkpointLocations")
let geoFire = GeoFire(firebaseRef: geofireRef)
geoFire.setLocation(CLLocation(latitude: usersLatitude, longitude: userLongitude), forKey: checkpointId) {...
ここまでは、すべてがデータベースに罰金です。第一の問題は、observeEventType()
とここに発生する
func retrieve() {
let geofireRef = Firebase(url: self.baseurl + "/checkpointLocations")
let geoFire = GeoFire(firebaseRef: geofireRef)
let center = CLLocation(latitude: usersLatitude, longitude: usersLongitude)
var circleQuery = geoFire.queryAtLocation(center, withRadius: 10)
circleQuery.observeEventType(.KeyEntered, withBlock: { (key: String!, location: CLLocation!) in
print("Key '\(key)' entered the search area and is at location '\(location)'")
})
:に
データを取得しているときには、コアの場所からユーザーの緯度と経度を取得した後、私がしようとしています。私はイベントを継続的に観察したくありません。代わりに、古典的なTableViewのように、データを一度取得して表示し、「プル・トゥ・リフレッシュ」機能でデータを再取得したいと考えています。私のの最初の質問は、GeoFireがFirebaseのobserveSingleEventOfType
として動作し、一度データを取得する機能はありますか?不特定のインデックスを使用して[Firebase]
:
は第二に、この関数は、時間のこの警告カップルを印刷しています。より良いパフォーマンスのために、セキュリティルールに ".indexOn": "g"を追加することを検討してください。
しかし、これ以外のログは記録されません。私はそれがprint("Key..
部分を印刷しないので、関数の中に入るとは思わない。それもprint("A")
ではありません。
「Firebase Rules」のために発生している可能性があります。
"rules": {
"checkpointLocations": {
"$key": {
".read": true,
".write": true,
"geofire": {
".indexOn": "g"
}
}
}
}
もこの:
"rules": {
"checkpointLocations": {
".read": true,
".write": true,
"geofire": {
".indexOn": "g"
}
}
}
しかし、どちらの作品をSOにこのanswerを使用して、私はこれを追加してみました。
更新:グレッグの答え@使用
、私はしかし、それはまだ閉鎖の内側に行かない、警告を修正しました。
ありがとうございます!それは警告を修正した。しかし、それは閉鎖の中のものを印刷していません。理由は何ですか?私はエラーが問題だと思ったが、明らかにそうではなかった。 – senty
編集:まったく私の間違いだった。コアの場所を取得する前に取得しようとしています。巨大な感謝! – senty
'' .indexOn "'に '.'をどのように追加できましたか?私がしようとするたびに、キーとして '.'を挿入できないというエラーが表示されます – KellysOnTop23