Maps_API_기술선정 - boostcampwm-2024/and04-Nature-Album GitHub Wiki
💡 Maps API 기술 선정 개요
- 지도 API를 선택하는 과정에서 Google Maps, Naver Maps, Kakao Maps API를 검토하였다. 본 프로젝트는 주로 한국 지역을 타겟으로 하는 Android 애플리케이션으로, 사용자가 특정 위치에서 촬영한 생물의 정확한 위치를 지도에 표시하고 직관적인 지도 경험을 제공하는 것이 목표다. 이를 위해 한국 지역에 특화된 지도 API를 선택하는 것이 필수적이라고 판단했다.
- 또한, 팀원들이 Jetpack Compose를 처음 사용하고 있으며, View 시스템에서 Compose로 마이그레이션한 경험이 없다. 따라서 Compose와 View 시스템을 혼용하여 지도 API를 효율적으로 관리하고 생명주기를 제어하는 것은 학습 차원에서의 기술적 도전 과제가 될 것이다. 이로 인해 Compose에서 직접 지원되지 않는 Naver Maps API를 Compose 환경에서 적절히 적용할 방법을 찾아보는 도전 또한 해보고자 했다.
💡 Maps API 3가지 비교
1. Google Maps API
-
최소 지원 API 버전: Android 4.1 (API 레벨 16) 이상
-
최신 릴리즈: 2024년 10월 기준
-
UI 및 기능:
- 글로벌 커버리지와 높은 데이터 정확도
- 다양한 지도 유형(일반, 위성, 지형 등) 제공
- 지오코딩, 역지오코딩, 경로 안내, 장소 검색 등 광범위한 기능
- 실시간 교통 정보 및 거리뷰 지원
-
Compose 지원 여부:
-
공식 문서: [Google Maps Platform](https://developers.google.com/maps/documentation/android-sdk/overview)
2. Naver Maps API
- 최소 지원 API 버전: Android 5.0 (API 레벨 21) 이상
- 최신 릴리즈: 2024년 8월 기준
- UI 및 기능:
- 한국 지역에 특화된 상세한 지도 데이터와 높은 정확도
- 다양한 지도 유형과 레이어(교통, 지형 등) 제공
- 지오코딩, 역지오코딩, 경로 안내, 장소 검색 등 다양한 기능
- 실내 지도 및 3D 뷰 지원
- Compose 지원 여부: 공식적으로 Jetpack Compose를 지원하지 않으며, XML 기반의 뷰 시스템을 주로 사용
- 공식 문서: [Naver Maps Android SDK](https://navermaps.github.io/android-map-sdk/guide-ko/1.html)
3. Kakao Maps API
- 최소 지원 API 버전: Android 6.0 (API 레벨 23) 이상
- 최신 릴리즈: 2024년 10월 기준
- UI 및 기능:
- 한국 지역에 특화된 지도 데이터와 높은 정확도
- 다양한 지도 유형과 레이어(교통, 자전거 등) 제공
- 지오코딩, 역지오코딩, 장소 검색 등 다양한 기능
- 실시간 교통 정보 및 로드뷰 지원
- Compose 지원 여부: X
- 공식 문서: [Kakao Maps Android SDK](https://apis.map.kakao.com/android/guide/)
비교 요약
항목 | Google Maps API | Naver Maps API | Kakao Maps API |
---|---|---|---|
최소 지원 API | 16 | 21 | 23 |
최신 릴리즈 | 2024년 10월 | 2024년 8월 | 2024년 10월 |
한국 지역 지원 | 제한적 | 우수 | 우수 |
글로벌 커버리지 | 우수 | 제한적 | 제한적 |
Jetpack Compose 지원 | 미지원 | ||
따로 라이브러리 존재 | 미지원 | 미지원 | |
주요 기능 | 다양한 지도 유형, 지오코딩, 경로 안내 등 | 상세한 한국 지도, 실내 지도, 3D 뷰 등 | 상세한 한국 지도, 로드뷰, 실시간 교통 정보 등 |
💡 기술 선택 결론 ⇒ Naver Maps
현재 프로젝트가 Android 6.0(API 레벨 23) 이상을 타겟으로 하고, Jetpack Compose를 주로 사용하지만 지도 API가 XML만 지원된다면 부분적으로 XML을 적용할 계획이므로, 한국 지역에 특화된 지도 데이터를 제공하는 Naver Maps API나 Kakao Maps API를 고려하는 것이 좋다고 판단했다.
두 API 모두 Jetpack Compose를 공식적으로 지원하지 않으므로, XML 기반의 뷰 시스템을 일부 도입하여 지도를 구현해야 한다.
Naver Maps는 실내 지도가 더 풍부하고 커스터마이징 옵션이 다양하여, 특정 실내 공간 내에서도 상세한 위치 표시가 필요한 프로젝트에 유리하다. 반면, Kakao Maps는 대중교통 정보와 장소 검색에 강점을 가지고 있다.
특히, 실내 지도가 풍부한 Naver Maps는 실내에서 촬영된 생물의 위치를 보다 정확하게 표시하는 데 유리하다. 예를 들어 대형 쇼핑몰, 박물관, 공항 등에서 층별로 세밀하게 위치를 확인할 수 있어, 해당 공간 내에서 특정 위치를 확대해 정확히 확인할 수 있다.
이러한 이유로 우리 프로젝트는 지도 위치 표시와 커스터마이징이 중요한 요소이므로 Naver Maps가 더 적합하다고 결론 내렸다.
💡 기술 선택 결론 ⇒ Naver Maps
- 프로젝트는 Android 6.0(API 레벨 23) 이상을 타겟으로 하고 있으며, Jetpack Compose를 주로 사용하고 있다. 하지만 지도 API는 XML 기반으로만 지원되는 상황이라 Naver Maps API를 선택하더라도 Compose와 View 시스템을 혼용하여 XML을 사용할 필요가 있었다.
- 특히, Naver Maps는 한국 지역에 특화된 지도 데이터와 풍부한 실내 지도를 제공하여 프로젝트의 주요 요구사항인 위치 정확도와 사용자 친화적 UI 구현에 적합하다고 판단했다.
- 또한 Naver Maps API를 Compose와 함께 사용하는 것은 기술적 도전 과제로서 의미가 있다고 보았다. View 시스템에서 Compose로 마이그레이션을 경험하지 않은 팀원들에게, 두 시스템을 혼용하여 생명주기를 효율적으로 관리하는 방법을 익히는 것은 중요한 학습 기회가 된다.
- Compose를 지원하지 않는 API라도 프로젝트의 필요에 따라 적합한 기능을 선택하여 Compose와 연동하는 기술적 방법을 모색함으로써, 향후 유사한 상황에서의 대응 능력도 키울 수 있다고 판단했다.
💡 기술적 도전으로서의 Compose와 View 혼용
- 팀원 모두가 Compose에 익숙하지 않으며 View 시스템에서 Compose로의 마이그레이션 경험이 부족한 상태이다. 하지만 현재 다양한 앱이 View 시스템에서 Compose로 마이그레이션 되고 있는 시점에서, Compose와 View의 생명주기를 관리하며 지도 API를 Compose에서 효과적으로 활용하는 학습적 차원의 기술적 도전을 목표로 하였다.
- 또한 Compose를 지원하지 않는 지도 API라도 필요 기능을 제공한다면 이를 Compose 내에서 사용할 수 있는 방법을 모색하려는 의도이다. Naver Maps는 이러한 기술적 도전을 제공하며, 실내 지도의 커스터마이징 옵션이 풍부하다는 점에서 최종적으로 선택하게 되었다.