从Firebase检索时,经度返回null

时间:2016-09-25 18:30:23

标签: android firebase firebase-realtime-database

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中的数据结构:

enter image description here

从logcat,纬度返回正常。我只是不知道为什么经度会返回null。非常感谢任何帮助,谢谢。

2 个答案:

答案 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();
    }
});

的变化:

  1. 使用DataSnapshot.child()而不是转换为Map
  2. 不会忽略错误
  3. 如上所述:不确定这是否能解决问题,但对于您正在尝试做的事情,它肯定是更惯用的代码。

答案 1 :(得分:0)

我认为你在获取Double值时遇到问题,所以试试这个:

Double latitude = Double.parseDouble(map.get("latitude"));
Double longitude = Double.parseDouble(map.get("longitude"));