Firebase locationRef = mRootRef.child("location");
locationRef.addValueEventListener(new com.firebase.client.ValueEventListener() {
@Override
public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) {
Map <Double, Double>map = dataSnapshot.getValue(Map.class);
Double latitude = map.get("latitude");
Double longitude = map.get("longitude");
Log.v("Lat_Long", String.valueOf(latitude) + " "+ String.valueOf(longitude));
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
以下是firebase中的数据结构:
从logcat,纬度返回正常。我只是不知道为什么经度会返回null。非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
可能是您从错误的位置读取(常见错误)。但绝对要试试这段代码:
Firebase locationRef = mRootRef.child("location");
locationRef.addValueEventListener(new com.firebase.client.ValueEventListener() {
@Override
public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) {
Double latitude = dataSnapshot.child("latitude").getValue(Double.class);
Double longitude = dataSnapshot.child("longitude").getValue(Double.class);
Log.v("Lat_Long", String.valueOf(latitude) + " "+ String.valueOf(longitude));
}
@Override
public void onCancelled(FirebaseError firebaseError) {
throw firebaseError.toException();
}
});
的变化:
DataSnapshot.child()
而不是转换为Map
如上所述:不确定这是否能解决问题,但对于您正在尝试做的事情,它肯定是更惯用的代码。
答案 1 :(得分:0)
我认为你在获取Double值时遇到问题,所以试试这个:
Double latitude = Double.parseDouble(map.get("latitude"));
Double longitude = Double.parseDouble(map.get("longitude"));