Firebaseのキー/フィールドの1つとして場所(緯度と経度)を保存しようとしています。彼らの例では SFVehicles 、情報が保存されたらクエリを実行する方法を示していますが、私の問題はどのように保存するかですそもそも。
彼らのブログ投稿 GeoFireはモバイルになります で、データがどのように見えるかを示しています-しかし、どうすればそのlocation
フィールドにデータを入力できますか?
ただし、他の種類の文字列をFirebaseに保存することはできます。以下のコードを使用します。質問はlocation
フィールドはどのデータ型である必要がありますか?
Firebase ref = new Firebase("https://myfirebaselink.firebaseio.com/");
//User
alan = new User("Alan Turing", 1912);
alanRef.setValue(obj);
location
をList<String>
にしようとしましたが、うまくいきませんでした。場所フィールドは次のようになりました。
編集:さらに調査したところ、 Googleによるこのブログ投稿 が見つかりましたが、キーとして保存されていますlatitude1 and
longitude. This probably was written before
GeoFire`が導入されました。
GeoFire for Javaプロジェクトには素晴らしいREADMEがあります 、(とりわけ) 位置データの設定 :
GeoFireでは、文字列キーで場所を設定およびクエリできます。キーの場所を設定するには、
setLocation()
メソッドを呼び出すだけです。メソッドには、キーが文字列として渡され、場所がGeoLocation
オブジェクトとして渡されます。このオブジェクトには場所の緯度と経度が含まれます。
_geoFire.setLocation("firebase-hq", new GeoLocation(37.7853889, -122.4056973));
_
書き込みがサーバーに正常に保存されたかどうかを確認するには、_
GeoFire.CompletionListener
_をsetLocation()
呼び出しに追加します。
_geoFire.setLocation("firebase-hq", new GeoLocation(37.7853889, -122.4056973), new GeoFire.CompletionListener() {
@Override
public void onComplete(String key, FirebaseError error) {
if (error != null) {
System.err.println("There was an error saving the location to GeoFire: " + error);
} else {
System.out.println("Location saved on server successfully!");
}
}
});
_
場所を削除してデータベースから削除するには、場所のキーをremoveLocationに渡すだけです。
_geoFire.removeLocation("firebase-hq");
_
here から見えます。83行目のように、オブジェクトのタイプはGeoLocationです。