10

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

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

在此处输入图像描述

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

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

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


        alanRef.setValue(obj);

我试图location成为一个List<String>,但这没有用 - 位置字段如下所示:

在此处输入图像描述

编辑:在更多的研究中,谷歌发现了这篇博文,但它们也保存为键latitude1 and 经度. This probably was written before GeoFire` 被引入。

4

2 回答 2

7

GeoFire for Java 项目有一个很棒的自述文件,其中包括(除其他外)设置位置数据

在 GeoFire 中,您可以通过字符串键设置和查询位置。要设置键的位置,只需调用该setLocation()方法。该方法将键作为字符串传递,将位置作为GeoLocation包含位置纬度和经度的对象传递:

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

要检查写入是否成功保存在服务器上,您可以GeoFire.CompletionListenersetLocation()调用中添加:

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");
于 2016-04-10T20:38:52.117 回答
2

这里看起来 对象的类型是 GeoLocation ,就像第 83 行一样。

于 2016-04-10T19:40:40.463 回答