1 回答
TA贡献1963条经验 获得超6个赞
首先,您没有getUserData()在任何地方调用方法。我读到您也尝试添加该逻辑onCreate(),但是没有用。
添加侦听器并不意味着您会立即获得预期的结果。
仅使用该onMapReady()方法设置地图,设置不依赖于User. 仅在检测到User数据更改时添加/修改地图标记。查看更改:
public void getUserData(){
String uID = mAuth.getCurrentUser().getUid();
myRef.child(uID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
dataSnapshot.getChildren();
user = dataSnapshot.getValue(User.class);
LatLng userL = new LatLng(user.getLat(),user.getLng());
if(mMap!=null){
mMap.clear();
mMap.addMarker(new MarkerOptions().position(userL).title("Your
Location"));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(userL,17));
}
Toast.makeText(Profile.this, "" + user.lng, Toast.LENGTH_LONG).show(); // Prints the value normally!
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(Profile.this, "Failed to read from database!", Toast.LENGTH_LONG).show();
}
});
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
}
请调用该方法getUserData()或将其代码移入onCreate().
添加回答
举报