如何在Firebase中保存位置信息

时间:2016-04-10 18:52:21

标签: java android firebase geofire

我正在尝试将位置(所以latitide和经度)保存为Firebase中的键/字段之一。在他们的示例SFVehicles中,他们确实展示了如何在存储信息后进行查询,但我的问题是如何首先保存。

在他们的博客文章GeoFire goes Mobile中,他们展示了数据的外观 - 但如何填充arr字段呢?

enter image description here

我可以将其他类型的字符串保存到Firebase。我只是使用下面的代码。 问题 location字段应该是什么数据类型?

location

我尝试 Firebase ref = new Firebase("https://myfirebaselink.firebaseio.com/"); //User alan = new User("Alan Turing", 1912); alanRef.setValue(obj); 成为location,但这不起作用 - 位置字段如下所示:

enter image description here

修改:在更多研究中,发现了this blog post by Google,但他们也在保存密钥List<String>经度latitude1 and GeoFire`。

2 个答案:

答案 0 :(得分:6)

GeoFire for Java project has a great README,涵盖(以及其他)setting location data

  

在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");

答案 1 :(得分:2)

它来自here 对象的类型是GeoLocation,如第83行所示。