获得纬度和经度的问题

时间:2018-01-21 13:57:40

标签: android firebase firebase-realtime-database

因此,我试图开发Geolocation Android应用程序的第一步是获取位置 ,纬度和经度..但是当我使用我的方法“getlat”时,它总是返回0.0,与经度相同。

Here is the database structure.

这是我获得纬度的方法

public Double getlat(String email) {
    myRef=FirebaseDatabase.getInstance().getReference();
    DatabaseReference rootRef = myRef.child("users").child(email);

    rootRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists())
                latitude = dataSnapshot.child("lat").getValue(Double.class);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });


    return latitude;
}

1 个答案:

答案 0 :(得分:0)

两种选择:

  1. 如果getLatitude位于Activity调用内,请在onDataChange内部进行ui update
  2. 使用界面作为回调
  3. ValueEventListener isasynchronous意味着它将在方法getLat的其他线程并行中执行。从上到下,调用getLat然后对Firebase的查询是对另一个线程的动作,并且该代码将在getLat方法内的代码的第一个段落,这意味着getLat中的代码执行仍在运行,下一个是返回声明。返回可以在Firrbase查询完成之前或之后发生。

相关问题