티스토리 뷰
시작
제목은 구글맵을 이용하여서 내 위치 가져오는것 처럼 되었지만. 이전에 내가 포스팅한 글의 내용과 합쳐서 내용을 정리한것이라 그냥 일반적으로 다른 맵에서 사용하는 위치정보 가져오는 방법에 대해서 다루겠다.
기준 버전은 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를 사용할것이라고 생각한다.
끝.
'Mobile > iOS' 카테고리의 다른 글
[iOS/Objective-C] Objective-C에서 guard, iflet 사용하기 (0) | 2017.11.22 |
---|---|
[iOS/swift] JavaScript를 JavaScriptCore를 사용하기 (2) | 2017.11.09 |
[iOS/swift] 컴파일 시간 줄이기 (0) | 2017.10.20 |
[iOS/swift] Google Map 사용해보기 (0) | 2017.10.20 |
[iOS/swift] iOS Model Identifier 가져오기 (0) | 2017.10.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- git
- Linux
- Kotlin
- Python
- enum
- Java
- SWIFT
- CentOS
- windows10
- rxswift
- docker
- Codable
- ios
- ubuntu
- Xcode
- go
- Spring
- php
- cocoapods
- MySQL
- intellij
- nodejs
- war
- tomcat
- centos8
- github
- Gradle
- golang
- android
- Windows
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함