Open
Conversation
* **build: CocoaPods 플러그인 및 의존성 추가**
* `gradle/libs.versions.toml`에 `kotlinCocoapods` 플러그인을 정의했습니다.
* 루트 `build.gradle.kts` 및 `composeApp/build.gradle.kts`에 CocoaPods 플러그인을 적용했습니다.
* **build: iOS 네이버 지도 SDK(NMapsMap) 포드 추가**
* `composeApp/build.gradle.kts` 내 `cocoapods` 블록을 설정했습니다. (버전 `2.0.1`, iOS 타겟 `16.0`)
* iOS 네이티브 지도 기능을 사용하기 위해 `NMapsMap` (v3.23.1) 포드 의존성을 추가했습니다.
* **chore: .gitignore 업데이트**
* CocoaPods 관련 파일(`*.podspec`)이 버전 관리 시스템에 포함되지 않도록 `.gitignore`에 추가했습니다.
* **build: Naver Map SDK 관련 의존성 및 저장소 추가**
* `settings.gradle.kts`에 네이버 지도 SDK를 위한 메이븐 저장소(repository.map.naver.com)를 추가했습니다.
* `gradle/libs.versions.toml`에 네이버 지도 SDK(`com.naver.maps:map-sdk`) 라이브러리와 버전(`3.22.1`)을 정의했습니다.
* `composeApp/build.gradle.kts`의 `androidMain` 소스 세트에 `map-sdk` 의존성을 추가했습니다.
* **build: Kotlin 컴파일러 옵션 수정**
* `composeApp/build.gradle.kts`에 `-Xexpect-actual-classes` 컴파일러 인자를 추가하여 `expect`/`actual` 클래스 사용 관련 경고를 처리할 수 있도록 설정했습니다.
* **feat: 공통 LatLng 클래스 추가**
* Kotlin Multiplatform의 `expect/actual` 메커니즘을 사용하여 위도/경도 좌표를 표현하는 `LatLng` 클래스를 추가했습니다.
* **Android**: 네이버 지도 SDK의 `LatLng`과 연동되도록 구현했습니다.
* **iOS**: 네이버 지도 SDK(NMapsMap)의 `NMGLatLng`과 연동되도록 구현했습니다.
* **feat: 공통 OverlayImage 클래스 추가**
* 지도 오버레이에 사용될 이미지를 처리하는 `OverlayImage` 클래스를 추가했습니다.
* `DrawableResource`를 입력받아 각 플랫폼의 이미지 객체로 변환하는 비동기 `create` 함수를 구현했습니다.
* **Android**: `BitmapFactory`를 사용하여 리소스를 `Bitmap`으로 변환 후 네이버 지도 `OverlayImage`를 생성합니다.
* **iOS**: 리소스 바이트 데이터를 `NSData` 및 `UIImage`로 변환 후 `NMFOverlayImage`를 생성합니다.
* **feat: 지도 및 장소 관련 UI 모델 추가**
* `CoordinateUiModel`: 위도/경도 정보를 담는 모델과 `LatLng` 변환 함수를 추가했습니다.
* `PlaceCategoryUiModel`: 음식점, 부스, 화장실 등 장소 카테고리 정의 및 카테고리별 아이콘, 색상, 문자열 리소스 매핑 로직을 구현했습니다.
* `PlaceCoordinateUiModel`, `PlaceUiModel`: 장소의 지리적 정보 및 세부 정보를 관리하는 UI 모델을 추가했습니다.
* `InitialMapSettingUiModel`: 초기 중심점, 줌 레벨, 경계선 등 지도의 초기 설정값 모델을 추가했습니다.
* **feat: OverlayImageManager 추가**
* Flyweight 패턴을 적용하여 지도 마커 등에 사용되는 `OverlayImage` 리소스를 효율적으로 캐싱하고 관리하는 매니저 클래스를 추가했습니다.
* **feat: 도메인 모델 확장을 통한 UI 모델 변환 로직 구현**
* `Coordinate`, `PlaceCategory`, `PlaceGeography`, `OrganizationGeography`, `Place` 등 도메인 모델을 UI 레이어 모델로 변환하는 확장 함수(`toUiModel`)를 추가했습니다.
* **style: 테스트 코드 스타일 및 포맷 수정**
* `LineupDataSourceTest.kt` 및 `FestivalRemoteDataSourceTest.kt` 파일에 ktlint 포맷팅을 적용했습니다.
* 불필요한 공백을 제거하고, 리스트 및 객체 생성 시 후행 쉼표(trailing comma)를 추가했습니다.
* 코드 가독성 향상을 위해 줄바꿈 및 들여쓰기를 조정했습니다.
* **refactor: Android 플랫폼 지도 객체 별칭 및 프로퍼티 네이밍 수정**
* `LatLng.android.kt`: `NaverLatLng` 별칭을 `PlatformLatLng`로 변경했습니다.
* `OverlayImage.android.kt`: `NaverOverlayImage` 별칭을 `PlatformOverlayImage`로 변경했습니다.
* 각 클래스 내부에서 사용되는 `platform` 프로퍼티의 타입을 변경된 별칭에 맞게 수정하여 플랫폼 간 추상화 구조를 명확히 했습니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#️⃣ 이슈 번호
🛠️ 작업 내용
🙇🏻 중점 리뷰 요청
이유는 다음과 같습니다.
특히 NaverMap은 expect fun으로 만들 경우, 입 출력 타입이 모두 플랫폼별로 다르기 때문에, expect class를 사용하는 것이 가장 깔끔하다고 생각합니다.
📸 이미지 첨부 (Optional)