Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to save Location Info in Firebase

I am trying to save location (so latitide and longitude) as one of the keys/fields in Firebase. In their example SFVehicles, they do show how to query once the information is stored but my problem is how do i save in the first place.

In their blog post, GeoFire goes Mobile, they are showing how the data would look like - but how do I get that location field populated?

enter image description here

I am able to save other types of strings to the Firebase though. I just use the code below. Question is What data type should the location field be?

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

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


        alanRef.setValue(obj);

I tried location to be a List<String>, but that did not work -- the location field looked like below:

enter image description here

Edit: On more research, found this blog post by Google but they are also saving as keys latitude1 and longitude. This probably was written before GeoFire` was introduced.

like image 346
user1406716 Avatar asked Apr 10 '16 18:04

user1406716


People also ask

How do I store my geolocation on firestore?

Saving Geolocation Data in FirestoreYou name the object whatever you want and save multiple points on a single document. The library provides a the point method to help you create this data. If updating an existing doc, you can use setPoint(id, lat, lng) to non-destructively update the document.

How do I store data in Firebase and retrieve?

Firebase data is retrieved by either a one time call to GetValueAsync() or attaching to an event on a FirebaseDatabase reference. The event listener is called once for the initial state of the data and again anytime the data changes.


2 Answers

The GeoFire for Java project has a great README, that covers (amongst other) setting location data:

In GeoFire you can set and query locations by string keys. To set a location for a key simply call the setLocation() method. The method is passed a key as a string and the location as a GeoLocation object containing the location's latitude and longitude:

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

To check if a write was successfully saved on the server, you can add a GeoFire.CompletionListener to the setLocation() call:

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

To remove a location and delete it from the database simply pass the location's key to removeLocation:

geoFire.removeLocation("firebase-hq");
like image 169
Frank van Puffelen Avatar answered Oct 08 '22 23:10

Frank van Puffelen


It looks from here That the type of the object is GeoLocation , like in line 83.

like image 34
Nir Rauch Avatar answered Oct 09 '22 00:10

Nir Rauch