🧐 문제 상황
Firebase Firestore에서 흡연 구역 데이터를 가져와 리스트에 표시하는 기능을 추가했는데, 리스트는 정상적으로 출력되지만 지도에 마커가 사라지는 문제 발생!
🔍 증상
- 앱 실행 후 초기 화면에서 마커가 정상적으로 표시됨
- 리스트 화면에서 데이터를 확인 후, 다시 지도로 돌아오면 모든 마커가 사라짐
- smokingAreas.count를 확인하니 데이터는 정상적으로 있음 (즉, Firestore에서 데이터는 정상적으로 가져옴)
- 하지만 지도에는 마커가 표시되지 않음
🏷 원인 분석
📌 1. Firestore 데이터는 정상적으로 불러옴
먼저 SmokingAreaData.shared.smokingAreas를 출력해보니, Firestore에서 가져온 데이터는 정상적으로 존재함. 즉, 데이터가 사라진 것이 아니라 마커가 지도에 추가되지 않은 문제였음.
print(SmokingAreaData.shared.smokingAreas) // ✅ 정상적으로 데이터가 있음!
📌 2. 마커 추가 로직이 실행되지 않음
Firestore에서 데이터를 가져오는 fetchSmokingAreas() 함수는 정상적으로 실행되었지만, 마커를 다시 추가하는 코드가 실행되지 않음!
// Firestore에서 데이터를 가져오지만 마커를 다시 추가하지 않음!
FirestoreManager.shared.fetchSmokingAreas { smokingAreas in
SmokingAreaData.shared.smokingAreas = smokingAreas // ✅ 리스트 업데이트
// ❌ 마커를 다시 추가하는 코드가 없음!
}
📌 3. NMFMarker.mapView = mapView가 실행되지 않음
마커를 추가하는 markerManager.addMarkers()가 실행되지 않았기 때문에, 기존 마커들이 지도에 반영되지 않음.
🚀 해결 방법
✅ Firestore에서 데이터를 가져온 후 마커도 다시 추가!
Firestore에서 데이터를 가져온 후 markerManager.addMarkers()를 실행해서 지도에도 반영되도록 수정
🔹 수정된 loadMarkers() 코드
private func loadMarkers() {
FirestoreManager.shared.fetchSmokingAreas { [weak self] smokingAreas in
guard let self = self else { return }
// ✅ 데이터를 가져온 후 마커 추가
self.markerManager.addMarkers(for: smokingAreas, to: self.naverMapView.mapView)
}
}
✅ 변경 후 동작
- Firestore에서 데이터를 불러온 후, smokingAreas 리스트를 업데이트
- 업데이트된 데이터를 기반으로 markerManager.addMarkers()를 호출하여 마커 추가
- 지도에 다시 마커가 정상적으로 표시됨! 🎉
🛠 추가 디버깅 체크 리스트
🔹 1. markerManager.addMarkers() 내부에서 mapView에 마커가 추가되고 있는지 확인
marker.mapView = mapView // ✅ 이 코드가 실행되지 않으면 마커가 안 보임!
🔹 2. Firestore에서 데이터 가져오는 시간이 걸릴 수 있음
Firestore 데이터 로딩이 완료된 후에 마커가 추가되는지 확인!
FirestoreManager.shared.fetchSmokingAreas { smokingAreas in
print("✅ Firestore에서 데이터 로딩 완료: \(smokingAreas.count)개")
}
🎯 결론
- Firestore에서 데이터를 불러오면 리스트만 업데이트할 게 아니라 마커도 다시 추가해야 함
- fetchSmokingAreas() 이후 markerManager.addMarkers()를 실행해야 마커가 정상적으로 보임!
- marker.mapView = mapView가 빠지지 않았는지 확인!
이제 마커가 정상적으로 표시됨! 🚀🔥
'iOS > swift' 카테고리의 다른 글
[Swift] Void에 대해 아라보자 (0) | 2025.02.24 |
---|---|
[Swift] 이벤트 소비와 전파 (0) | 2025.02.20 |
[Swift] ListView Detail 표시하는 법 (0) | 2025.02.12 |
[Swift] MVC 디자인 패턴을 아라보자 (0) | 2025.02.09 |
[iOS] xcode에 firebase 연결하기 (2) | 2025.01.22 |