-
[ios - Swift] MapView 사용하기 (MKMapView 1 / 2)ios 2020. 12. 22. 17:21
이번 글에서는 MapView 이용한 간단한 위치 앱을 만들어 보도록 하겠습니다.
init.plist 에서 지도 권한을 요청할 수 있도록 추가합니다.
화면 구성은 다음과 같은 뷰로 구성되어있고 사용하려는 목적은 아래와 같습니다.
Segmented Control : 현 위치와 특정 위치로 이동합니다.
CollectionView : 맵 뷰에 나타나는 지역에서 해당하는 특정 건물을 찾습니다.
Label : 현 위치와 주소를 보여줍니다.
이제 viewDidLoad에서 델리게이트 및 권한 요구 코드를 작성해 주도록 합니다.
let locationManager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() mapkit.delegate = self locationManager.delegate = self // 정확도 설정 - 최고로 높은 정확도 locationManager.desiredAccuracy = kCLLocationAccuracyBest // 위치 데이터 승인 요구 locationManager.requestWhenInUseAuthorization() // 위치 업데이트 시작 locationManager.startUpdatingLocation() // 사용자 위치 보기 설정 mapkit.showsUserLocation = true // 줌 가능 여부 // mapKit.zoomEnabled = false // 스크롤 가능 여부 // mapKit.scrollEnabled = false // 회전 가능 여부 // mapKit.rotateEnabled = false // 각도 가능 여부 // mapKit.pitchEnabled = false }
현 위치를 클릭할 경우 특정 위치로 이동하고 해당 위치에 핀을 사용해 표시하도록 하겠습니다.
@IBAction func changeValue(_ sender: UISegmentedControl) { // "현재 위치" 선택 - 현재 위치 표시 if sender.selectedSegmentIndex == 0 { // 특정 위치 선택 - 애플 가로수길 표시 } else if sender.selectedSegmentIndex == 1 { moveLocation(latitudeValue: 37.5207945, longtudeValue: 127.0204729, delta: 0.01) setAnnotation(latitudeValue: 37.5207945, longitudeValue: 127.0204729, delta: 0.01, title: "가로수길 서비스 센터", subtitle: "서울 강남구 가로수길 43") self.mainTitle.text = "보고 계신 위치" self.subTitle.text = "가로수길 서비스 센터" } }
구글 지도에서 추출한 위도와 경도 값을 이용해 애플 가로수길 매장 주소를 찾은 후 입력합니다.
delta 값을 이용해서 맵 뷰에서 보이는 스케일 값을 조절할 수 있습니다.
func moveLocation(latitudeValue: CLLocationDegrees, longtudeValue: CLLocationDegrees, delta span: Double) { let pLocation = CLLocationCoordinate2DMake(latitudeValue, longtudeValue) let pSpanValue = MKCoordinateSpan(latitudeDelta: span, longitudeDelta: span) let pRegion = MKCoordinateRegion(center: pLocation, span: pSpanValue) mapkit.setRegion(pRegion, animated: true) }
맵 뷰를 해당 좌표로 이동합니다.
func setAnnotation(latitudeValue: CLLocationDegrees, longitudeValue: CLLocationDegrees, delta span :Double, title strTitle: String, subtitle strSubTitle:String) { mapkit.removeAnnotations(mapkit.annotations) let annotation = MKPointAnnotation() annotation.coordinate = CLLocationCoordinate2DMake(latitudeValue, longtudeValue) annotation.title = strTitle annotation.subtitle = strSubTitle mapkit.addAnnotation(annotation) }
해당 좌표에 Pin을 설치합니다.
특정 위치와 핀이 정상적으로 설치되어있는 것을 확인할 수 있습니다.
다음 글에서는 특정 지역에 검색 기능 및 특정 지역의 주소를 가져오는 방법을 소개하도록 하겠습니다.
'ios' 카테고리의 다른 글
[ios - Swift] FileManager 사용한 저장, 불러오기 (0) 2021.01.05 [ios - Swift] MapView 사용하기 (MKMapView 2 / 2) (0) 2020.12.23 [ios - Swift] Alamofire Example (0) 2020.12.21 [ios - Swift] PHCachingImageManager 사용하기 (0) 2020.12.14 [ios - Swift] UIImageView Gesture 동작 안하는 문제 (0) 2020.12.08