Проблема:
Я пытаюсь извлечь координаты местоположения в моей базе данных Firebase, но кажется, что координаты (широта и долгота), обработанные в моем массиве, возвращают нулевое значение.Я получаю исключение NullPointerException.
Я думаю, что в этом проблема.выглядит так:
Моя база данных обновляет местоположение, но карта не позиционирует свой маркер в этом месте.Как мне это решить?
Что я попробовал:
Вот фрагмент моего кода о том, как я передаю свои данные в базу данных 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
... к которому я обращаюсь по вышеуказанному коду.Как я могу исправить мою проблему?