我正在为我的Android应用设置GeoFire。在从Firebase数据库检索数据开始时,我收到以下异常。
获取GeoFire位置时出错:DatabaseError:从Firebase数据库runloop调用的用户代码引发异常: W / System.err:java.lang.Throwable:GeoFire数据格式无效:{lon = 74.529964,lat = 31.4479225}
显然,它正在从数据库中检索数据但仍然抛出异常:(
我使用以下代码检索数据:
geoFire.getLocation("test1", new LocationCallback() {
@Override
public void onLocationResult(String key, GeoLocation location) {
if (location != null) {
System.out.println(String.format("The location for key %s is [%f,%f]", key, location.latitude, location.longitude));
} else {
System.out.println(String.format("There is no location for key %s in GeoFire", key));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.err.println("There was an error getting the GeoFire location: " + databaseError);
}
});
由于我是firebase的新手,有什么明显的遗漏吗?This is how my firebase database looks like
答案 0 :(得分:0)
GeoFire似乎没有使用您的示例中的密钥lat
和lon
,或Latitude
和Longitude
,而是使用了一些自定义的位置编码称为“g”的属性。保存位置以供GeoFire使用的正确方法似乎是GeoFire提供的setLocation方法。
有关数据库中结构应如何显示的讨论,请参阅How to save GeoFire coordinates along with other items in Firebase database?。