问题:
我正在尝试在Firebase数据库上提取位置坐标,但是似乎在数组上处理的坐标(经纬度)正返回空值。我收到了NullPointerException。
我认为这是问题所在。
我在logcat上没有出现错误,但这是我的地图的样子:
我的数据库更新了位置,但是地图未将其标记定位到该位置。我该如何解决?
我尝试过的事情:
以下是我如何将数据传递到Firebase数据库的代码片段。
public void sendDataToFirebase(SmsMessage sms, Context context) {
FirebaseApp.initializeApp(context);
databaseLocation = FirebaseDatabase.getInstance().getReference("conilocationdata");
String senderNumber = sms.getOriginatingAddress();
String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
String message = sms.getMessageBody();
String[] separatedSMS = message.split("\\s+");
if(senderNumber.equals("+000000000000000")) {
DatabaseReference mRef = databaseLocation.push();
Double latitudedb = Double.parseDouble(separatedSMS[1]);
Double longitudedb = Double.parseDouble(separatedSMS[3]);
LocationArray locationArray = new LocationArray(mydate,senderNumber,latitudedb,longitudedb);
databaseLocation.child("conilocationdata").push().setValue(locationArray);
Log.e("FIREBASE OPERATIONS:","Location data inserted");
}
这是我的代码,用于在数据库中更新的当前位置添加标记。
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
googleMap.setOnMarkerClickListener(this);
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
mChild.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot s: dataSnapshot.getChildren()) {
LocationArray locationArray = s.getValue(LocationArray.class);
LatLng location = new LatLng(locationArray.latitude,locationArray.longitude);
mMap.addMarker(new MarkerOptions().position(location).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET)));
Log.e("MAP OPERATIONS:","Marker has been added to updated location");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
这是我的LocationArray.class
...我在上面的代码中一直在访问。我该如何解决我的问题?