iOS/흡구오디 -> 어딨쥐

[흡구오디] 네이버 지도에서 현재 위치 가져와서 현재 위치를 지도에 띄우기

23g 2025. 8. 11.

안녕하세요

 

오늘은 삽질 100번하고 알아낸 

사용자의 현재 위치 가져와서 띄우기!를 공유해볼게요

 

이번 글에서는 네이버 지도 SDK를 이용해 앱에서 현재 위치를 지도에 띄우는 방법을 소개합니다~

 

우선 우리는 지도에 사용자의 현재 위치를 띄우기 위해서 무엇을 할꺼냐!

현재 위치 좌표 가져오기 -> 네이버 지도 기능으로 그 좌표로 카메라 이동시켜서 -> 화면에 사용자의 위치 띄워주기!

1. 준비 작업

필수 라이브러리 설치하기

: 저는 네이버 지도 sdk를 SPM으로 깔아줬어요

 

https://github.com/navermaps/SPM-NMapsMap.git

 

GitHub - navermaps/SPM-NMapsMap

Contribute to navermaps/SPM-NMapsMap development by creating an account on GitHub.

github.com

 

잠만 근데 이거 왜이렇게 인기가 없음

링크 찾다가 당연히 이거 아닌줄..? ;;;

 

Info.plist 권한 설정

<key>NSLocationWhenInUseUsageDescription</key>
<string>현재 위치를 표시하기 위해 위치 권한이 필요합니다.</string>

 

이 과정을 잘 안해주면 나중에 앱 심사 리젝 맞을 가능성이 크대요

2. ViewController 기본 구성

final class HomeViewController: UIViewController, CLLocationManagerDelegate, NMFMapViewCameraDelegate {
    
    private let mapView = NMFMapView()
   
    private let locationManager = CLLocationManager()
    
    override func viewDidLoad() {
        ...
    }
}

 

- NMFMapView : 네이버 지도 객체

  • 여기서 중요한 점!!! 삽질 포인트
    네이버 지도에서 제공하는 현위치 버튼을 사용할 수도 있으나
    현위치 버튼을 활성화 시키기 위해서는 NMFMapView() 가 아닌 NMFNaverMapView()를 선언해줘야함...
    즉, 우리는 NMFMapView()로 선언해줬기 때문에 현위치 버튼 사용 불가!

    그렇다면 왜 NMFMapView()를 사용하냐고?

    이걸 사용해야 카메라 업데이트(지도 화면 현위치로 옮기는거) 가능함 ㄱ-,,,
    이거 모두가 알아줬으면 좋겠다..

    왤까,,, 네이버님께서 다 생각이 있으시겠지,,,암튼 그러함

    나는 결국 카메라 업데이트를 선택하고 현위치 버튼은 내가 알아서 커스텀으로 만들기로 웅웅

- CLLocationManager : 위치 권한 요청 및 위치 가져오기 담당

 

(현위채 버튼 관련 문서 : https://navermaps.github.io/ios-map-sdk/guide-ko/4-1.html)

 

사용자 인터페이스 · NAVER Map iOS SDK

사용자 인터페이스 사용자는 컨트롤, 제스처 등 다양한 방법으로 지도와 상호작용할 수 있습니다. 개발자는 사용자가 지도와 상호작용하는 방법을 제어하고, UI 이벤트를 처리해 알맞은 피드백

navermaps.github.io

 

3. 위치 권한 요청 & 지도 카메라 이동

private func setLocationManager() {
    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.requestWhenInUseAuthorization()
    
    // 사용자의 위치 좌표 가져오기 ⭐️ ⭐️ ⭐️
    let userLocationCoordinate = locationManager.location?.coordinate
        ?? CLLocationCoordinate2D(latitude: 37.5666102, longitude: 126.9783881) // 기본값: 서울시청
    
    print("사용자의 현재 위치 : \(userLocationCoordinate)")
    
    cameraUpdate(lat: userLocationCoordinate.latitude, lng: userLocationCoordinate.longitude)
}

private func cameraUpdate(lat: Double, lng: Double) {
	// 얻은 좌표로 카메라 이동 시켜 주기 ⭐️ ⭐️ ⭐️
    let cameraUpdate = NMFCameraUpdate(scrollTo: NMGLatLng(lat: lat, lng: lng))
    mapView.moveCamera(cameraUpdate)
}

- locationManager.delegate = self 해주기

- requestWhenInUseAuthorization() : 앱 사용 시 위치 접근 권한 요청

- locationManager.location?.coordinate : 현재 위치 가져오기 (없으면 기본 좌표 사용, 난 서울시청으로 해줌)

- NMFCameraUpdate : 지도 카메라를 해당 좌표로 이동

 

이렇게 하면 끝~

 

솔직히 다른 사람들 다 엄청 어렵게 하던데 내가 제일 쉽게 구현한거 같음요...!!!

다들 보고 쉽게 따라하시길,,,

그리고 시뮬레이터에서는 현재 위치가 이 미국 땅으로 나온다고 함

왜 님의 현재 위치 안나오냐고 슬퍼하지 말기 ㅎ

 

그럼 안녕~

댓글