-
[Swift/Study] KakaoMap 여러가지 기능 구현해보기 2Study/ios 2023. 7. 21. 17:39
저번 글에서 카카오 맵의 다양한 기능을 구현해 보았다!
https://eunduk2.tistory.com/40
이어서 몇 개의 기능을 더 구현해보고 카카오 맵에 관한 내용은 마치려고 한다.
첫번째로 구현한 기능은
주소를 입력받아 지도에 핀을 찍는 기능이다.
import CoreLocation // CLGeocoder를 사용하기 위한 프레임워크 func addPinForAddress(_ address: String) { // 지리적인 정보를 처리하는 CLGeocoder 사용 let geocoder = CLGeocoder() // 주소를 지리적인 정보로 변환하고 geocoder.geocodeAddressString(address) { (placemarks, error) in if let error = error { // 변환 중 오류가 발생하면 오류 메시지 출력 print("Error geocoding address: \(error.localizedDescription)") } else if let placemark = placemarks?.first, let location = placemark.location { // 변환된 지리 정보로 위치 저장 // 주소를 위도와 경도로 변환한 위치에 핀을 생성 self.createPin(itemName: address, mapPoint: MTMapPoint(geoCoord: MTMapPointGeo(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)) , markerType: .redPin) // 핀이 찍힌 위치로 이동 self.mapView.setMapCenter(MTMapPoint(geoCoord: MTMapPointGeo(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)), animated: true) } } } // 텍스트 필드의 주소를 가져와 위 함수 발동 @IBAction func onSearch(_ sender: Any) { addPinForAddress(textField.text!) }
입력받은 주소를 위도와 경도로 변환하여 핀을 찍고 지도의 중심을 그 핀으로 이동시킨다.
결과 화면
다음으로는 지도를 더블 터치하면 노란 마커를 생성하고 생성된 곳의 위도와 경도 값을 가져오는 기능이다.
더블 탭 액션으로 구현하다가 삽질좀 하고..
아래 델리게이트 패턴으로 간단하게 구현할 수 있다.
// 말풍선을 터치했을 때 액션 func mapView(_ mapView: MTMapView!, touchedCalloutBalloonOf poiItem: MTMapPOIItem!) { // 웹뷰를 담고 있는 컨트롤러를 푸시 let ViewController2 = storyboard!.instantiateViewController(withIdentifier: "ViewController2") as! ViewController2 navigationController?.pushViewController(ViewController2, animated: true) }
결과 화면
끝 !
'Study > ios' 카테고리의 다른 글
[Swift/Clone] 마이루틴 앱 팝업뷰 구현하기 (0) 2023.08.08 [Swift/Clone] 야놀자 TabBar 따라해보기 (0) 2023.07.24 [Swift/Study] KakaoMap 여러가지 기능 구현해보기 1 (0) 2023.07.19 [Swift/Study] Kakao Map API 적용해보기 (0) 2023.07.18 [Swift/Study] UISearchController를 사용하여 테이블 뷰 검색 기능 구현하기 (0) 2023.07.17