【发布时间】:2018-04-05 05:05:12
【问题描述】:
我正在尝试保存和检索来自 Firebase 的位置并将其放入 Google 地图。纬度和经度值在用户 ID 下,因为它将用于特定用户的位置。保存位置成功,但我无法检索它。我正在尝试检索它,但我不断收到
java.lang.NullPointerException:尝试调用虚拟方法 空对象引用上的'double java.lang.Double.doubleValue()' 错误。
有什么办法可以解决或做到这一点?提前谢谢你。
这是保存位置的代码:
profDatabase = FirebaseDatabase.getInstance().getReference().child("Profile");
if (auth.getCurrentUser() != null){
String userid = auth.getCurrentUser().getUid();
final DatabaseReference locDatabase = FirebaseDatabase.getInstance()
.getReferenceFromUrl("https://sholoco-9cf1e.firebaseio.com/Profile/" + userid);
profDatabase.child(userid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String stallname = dataSnapshot.child("StallName").getValue().toString();
Marker marker = mMap.addMarker(new
MarkerOptions().position(point).title(stallname));
final LatLng latlng = marker.getPosition();
mSaveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//DatabaseReference newPost = profDatabase.push();
//newPost.setValue(latlng);
String latkey = "latitude";
double latvalue = latlng.latitude;
DatabaseReference child = locDatabase.child(latkey);
child.setValue(latvalue);
String longkey = "longitude";
double longvalue = latlng.longitude;
child = locDatabase.child(longkey);
child.setValue(longvalue);
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
这是我检索位置的代码:
profDatabase = FirebaseDatabase.getInstance().getReference().child("Profile");
if (auth.getCurrentUser() != null) {
String userid = auth.getCurrentUser().getUid();
profDatabase.child(userid).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
double latt = (double) dataSnapshot.child("latitude").getValue();
double longg = (double) dataSnapshot.child("longitude").getValue();
String stallname = dataSnapshot.child("StallName").getValue().toString();
LatLng newLocation = new LatLng(latt, longg);
mMap.addMarker(new MarkerOptions()
.position(newLocation)
.title(stallname));
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
我的数据库截图:
【问题讨论】:
标签: android google-maps firebase firebase-realtime-database google-api