web-dev-qa-db-ja.com

Firebaseに位置情報を保存する方法

Firebaseのキー/フィールドの1つとして場所(緯度と経度)を保存しようとしています。彼らの例では SFVehicles 、情報が保存されたらクエリを実行する方法を示していますが、私の問題はどのように保存するかですそもそも。

彼らのブログ投稿 GeoFireはモバイルになります で、データがどのように見えるかを示しています-しかし、どうすればそのlocationフィールドにデータを入力できますか?

enter image description here

ただし、他の種類の文字列をFirebaseに保存することはできます。以下のコードを使用します。質問はlocationフィールドはどのデータ型である必要がありますか?

        Firebase ref = new Firebase("https://myfirebaselink.firebaseio.com/");

       //User 
       alan = new User("Alan Turing", 1912);


        alanRef.setValue(obj);

locationList<String>にしようとしましたが、うまくいきませんでした。場所フィールドは次のようになりました。

enter image description here

編集:さらに調査したところ、 Googleによるこのブログ投稿 が見つかりましたが、キーとして保存されていますlatitude1 andlongitude. This probably was written beforeGeoFire`が導入されました。

8
user1406716

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");
_
6

here から見えます。83行目のように、オブジェクトのタイプはGeoLocationです。

2
Nir Rauch