我正在尝试将位置(所以latitide和经度)保存为Firebase中的键/字段之一。在他们的示例SFVehicles中,他们确实展示了如何在存储信息后进行查询,但我的问题是如何首先保存。
在他们的博客文章GeoFire goes Mobile中,他们展示了数据的外观 - 但如何填充arr
字段呢?
我可以将其他类型的字符串保存到Firebase。我只是使用下面的代码。
问题 location
字段应该是什么数据类型?
location
我尝试 Firebase ref = new Firebase("https://myfirebaselink.firebaseio.com/");
//User
alan = new User("Alan Turing", 1912);
alanRef.setValue(obj);
成为location
,但这不起作用 - 位置字段如下所示:
修改:在更多研究中,发现了this blog post by Google,但他们也在保存密钥List<String>
经度latitude1 and
GeoFire`。
答案 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行所示。