Google지도 MapView
을 사용하는 애플리케이션이 있습니다. 내 맵으로 Firebase Realtime 데이터베이스에 저장하는 마커를 삽입 할 수 있습니다. 나는 FirebaseMarker
클래스가 내 조각에서Android - Firebase가 올바르게 삽입되지 않음
public class FirebaseMarker {
String address;
String time;
double latitude;
double longitude;
...
}
을, 나는 및 마커 - 키를 눌러 넣어 HashMap
을 보유하고 있습니다. 버튼을 누르면이 마커가 데이터베이스에 저장됩니다.
public class MapFragment extends Fragment implements OnMapReadyCallback {
HashMap<String, Object> markers = new HashMap<>();
public void onMapReady(final GoogleMap googleMap) {
String markerIds = userRef.push().getKey();
FirebaseMarker marker = new FirebaseMarker(address, time, latitude, longitude);
markers.put(markerIds, marker);
}
private void saveToDatabase(){
userRef.child(sharedPreferences.getString("school", null)).child("markers").updateChildren(markers);
}
}
이 잘 작동하지만 나 또한 중포 기지의 다른 노드 내부의 몇 가지 특성 (PartialMarker
)와 같은 마커를 추가 할. 이것은 항상 데이터베이스에 하나의 부분 마커가 없기 때문에 나에게 문제가된다. 따라서 맵에 3 개의 마커를 넣으면 노드 안의 데이터베이스에 2 개의 부분 마커 만 저장됩니다. 그런 다음
public class PartialMarker {
String address;
String time;
..
}
을 내가 할 : 내가 한 일을
public class MapFragment extends Fragment implements OnMapReadyCallback {
HashMap<String, Object> partialMarkers= new HashMap<>();
public void onMapReady(final GoogleMap googleMap) {
for (Map.Entry<String, Object> entry : markers.entrySet()) {
String key = entry.getKey();
FirebaseMarker marker = (FirebaseMarker) entry.getValue();
partialMarkers.put(key, new PartialMarker(marker.getAddress(), marker.getTime()));
}
}
private void saveToDatabase(){
userRef.child(sharedPreferences.getString("school", null)).child("markers").updateChildren(markers);
userRef.child(sharedPreferences.getString("school", null)).child("routes").child(routeId).child("partialMarkers").updateChildren(partialMarkers);
}
}
마커 노드 :
부분 마커 노드 :
언제 saveToDatabase()를 사용합니까? 전체 코드를 추가하십시오. – MarcGV
코드가 정상적으로 보이므로 다른 문제가있을 수 있습니다. 전체 코드 샘플을 공유 할 수 있습니까? 'FirebaseMarker marker = new FirebaseMarker ([...])'와 같이 동시에 두 마커를 만들면 : PartialMarker partialMarker = new PartialMarker ([...]))'를 다른지도에 넣으면 각 목록에 항상 정확한 수의 항목이 있어야합니다. 'PartialMarker' 맵을'FirebaseMarker' 맵과 동기화되지 않게 만드는 것 같습니다. – Grimthorr
@Grimthorr이 말했듯이 부분 마커 맵의 동기화가 불가능할 가능성이 큽니다. 'saveToDatabase()'에 중단 점을 넣고 두 맵의 길이를 센다. 이들이 실제로 동일하다면, 내가 실행할 수있는 작은 조각으로 문제를 격리하려고 할 수 있습니까? 따라서 하드 코딩 된 값으로 테스트 할 앱에 복사하거나 붙여 넣을 수 있습니다. –