티스토리 뷰

시작


제목은 구글맵을 이용하여서 내 위치 가져오는것 처럼 되었지만. 이전에 내가 포스팅한 글의 내용과 합쳐서 내용을 정리한것이라 그냥 일반적으로 다른 맵에서 사용하는 위치정보 가져오는 방법에 대해서 다루겠다.
기준 버전은 iOS8 기준으로 되어 있다. 다른 부분들은 다 동일하지만 8부터 위치정보를 가져올때 권한 팝업을 사용하여야 하는 부분이 다르다.


설정


info.plist에서 다음과 같은 부분을 추가하여야 한다.

사용할때만 위치정보를 이용하는것과 항상 위치정보를 이용한것에 대한 문구를 표현하여 준다.

NSLocationWhenInUseUsageDescription : 사용중
NSLocationAlwaysUsageDescription : 항상


코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
class ViewController: UIViewController {
    
    var mapView: GMSMapView!
    var myMarker = GMSMarker()
    let locationManager = CLLocationManager()
    
    override func loadView() {
        mapView = GMSMapView()
        view = mapView
    }
 
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.delegate = self
        
        // 사용할때만 위치정보를 사용한다는 팝업이 발생
//        locationManager.requestWhenInUseAuthorization()
        
        // 항상 위치정보를 사용한다는 판업이 발생
        locationManager.requestAlwaysAuthorization()
        
        locationManager.startUpdatingLocation()
        
        move(at: locationManager.location?.coordinate)
    }
}
 
extension ViewController {
    func move(at coordinate: CLLocationCoordinate2D?) {
        guard let coordinate = coordinate else {
            return
        }
        
        print("move = \(coordinate)")
        
        let latitude = coordinate.latitude
        let longitude = coordinate.longitude
        
        let camera = GMSCameraPosition.camera(withLatitude: latitude, longitude: longitude, zoom: 14.0)
        mapView.camera = camera
        
        myMarker.position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
        myMarker.title = "My Position"
        myMarker.snippet = "Known"
        myMarker.map = mapView
    }
}
 
extension ViewController: CLLocationManagerDelegate {
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        guard let firstLocation = locations.first else {
            return
        }
        
        move(at: firstLocation.coordinate)
    }
}
cs

특이한점은 없다고 생각한다. 대신에 권한을 요청하는 팝업의 경우에 request...Authorization() 이렇게 되어 있는 function을 구분해서 호출하는것이 다른점이다.


옵션


disiredAccuracy는 위치정보를 가져오는 우선도? 를 의미한다.

https://developer.apple.com/documentation/corelocation/cllocationaccuracy

문서에 나와 있는것 같이 사용하면 되며, 거의 제일 좋은 위치를 가지고 오기 위해서 Best를 사용할것이라고 생각한다.


끝.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함