2016-04-10 2 views
7

Ich versuche den Speicherort (also Längen- und Breitengrad) als einen der Schlüssel/Felder in Firebase zu speichern. In ihrem Beispiel SFVehicles zeigen sie, wie man abfragt, sobald die Information gespeichert wird, aber mein Problem ist, wie ich an erster Stelle speichern kann.So speichern Sie Standortinformationen in Firebase

In ihrem Blogpost, GeoFire goes Mobile, zeigen sie, wie die Daten aussehen würden - aber wie bekomme ich das location Feld ausgefüllt?

enter image description here

Ich bin in der Lage, obwohl andere Arten von Saiten auf die Firebase zu speichern. Ich benutze einfach den folgenden Code. Frage ist Welchen Datentyp sollte das location Feld sein?

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

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


     alanRef.setValue(obj); 

versuchte ich location ein List<String> zu sein, aber das hat nicht funktioniert - das Standortfeld wie unten sah:

enter image description here

Edit: Auf mehr Forschung fand this blog post by Google aber sie sind auch Speichern als Schlüssel latitude1 and Längengrad . This probably was written before GeoFire wurde eingeführt.

+0

Sie haben ein Bild des JSON Baum in Ihrer Frage enthalten. Bitte ersetzen Sie dies durch den tatsächlichen JSON als Text, den Sie einfach erhalten, indem Sie auf die Schaltfläche "Exportieren" in Ihrer Firebase-Datenbank klicken. Da der JSON als Text durchsuchbar ist, können wir ihn einfach verwenden, um mit Ihren tatsächlichen Daten zu testen und sie in unserer Antwort zu verwenden, und im Allgemeinen ist dies nur eine gute Sache. –

+0

Der Blogeintrag googlegeodeveloper verwendet GeoFire nicht. Es ist also für Sie irrelevant, wenn Sie GeoFire verwenden möchten. –

Antwort

8

Die GeoFire for Java project has a great README, dass Abdeckungen (unter anderem) setting location data:

In GeoFire können Sie einstellen, und Abfrage von Speicherorten nach Schlüssel. Um einen Speicherort für einen Schlüssel festzulegen, rufen Sie einfach die Methode setLocation() auf. Das Verfahren ist ein Schlüssel als String übergeben und die Position als GeoLocation Objekt Standort der Breiten- und Längen enthält:

geoFire.setLocation("firebase-hq", new GeoLocation(37.7853889, -122.4056973)); 

Um zu überprüfen, ob ein Schreibvorgang erfolgreich auf dem Server gespeichert wurde, können Sie eine hinzufügen GeoFire.CompletionListener zum setLocation() Aufruf:

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!"); 
     } 
    } 
}); 

einen Ort zu entfernen und sie aus der Datenbank löschen simpl y Standort der Schlüssel zum removeLocation passieren:

geoFire.removeLocation("firebase-hq"); 
+0

Danke, die Readme ist ziemlich gut und erklärt alle Operationen klar. Dumm, ich habe es verpasst, danke. – user1406716

2

Es sieht aus here , dass die Art des Objekts ist GeoLocation, wie in Zeile 83.