맵뷰에서 선택하는 곳에 어노테이션을 찍어보자
1. 맵뷰에 탭 제스쳐를 추가한다.
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(mapViewTapped(_ :)))
mapView.addGestureRecognizer(tapGesture)
2. sender.location(in: )을 통해 임의로 탭한 위치를 가져온다.
@objc private func mapViewTapped(_ sender: UITapGestureRecognizer) {
let location: CGPoint = sender.location(in: mainView.mapView)
let mapPoint: CLLocationCoordinate2D = mainView.mapView.convert(location, toCoordinateFrom: mainView.mapView)
setAnnotation(center: mapPoint)
}
3. convert
mapView의 convert 메서드를 이용하여 선택한 위치의 좌표를 얻는다.
4. 어노테이션 추가하기
func setAnnotation(center: CLLocationCoordinate2D) {
let region = MKCoordinateRegion(center: center, latitudinalMeters: 1000, longitudinalMeters: 1000)
mapView.setRegion(region, animated: true)
let annotation = MKPointAnnotation()
annotation.coordinate = center
mapView.addAnnotation(annotation)
}
선택 좌표를 중심으로 설정하여 지도를 보여준다.
선택 시 하나의 이전에 선택한 어노테이션은 지우고 선택한 어노테이션만 남기고 싶다면?
선택 위치의 어노테이션을 추가하기 전에 모든 어노테이션을 지워준다!
func removeAllAnotation() {
let annotations = mapView.annotations
mapView.removeAnnotations(annotations)
}
'iOS > 🔎 swift 정리하기' 카테고리의 다른 글
[iOS/Swift] MapKit Annotation displayPriority 지정하기 (0) | 2023.10.20 |
---|---|
MapKit CustomAnnotation (0) | 2023.10.10 |
[iOS/Swift] Realm - 백업 및 복구 구현하기 (0) | 2023.09.16 |
[iOS/Swift] Realm - Migration (0) | 2023.09.16 |
[iOS/Swift] Realm - 이미지 파일 저장하기 (0) | 2023.09.16 |