본문 바로가기

iOS Dev/함께해보기

iOS개발하기 #17. 맵뷰 <MKMapView>


오늘의 주제

1. 맵뷰 띄우기


열 일곱번째 시간입니다.^^

지난 번까지는 화면 전환 기법 몇 가지를 알아보았습니다.
화면 전환은 상황과 때에 맞게 그리고 사용자의 요구에 맞게 적절하게 사용하면 되겠습니다~^^

자 그럼 오늘은 지도(구글 맵)을 한 번 띄워보도록 하지요~
출발~~~~~~~~~~~~


# MKMapView


긴 말 필요 없습니다 ㅋㅋㅋ 바로 실습 들어갑니다.
당연히 지난번 까지 쓰던 프로젝트 그대로 사용합니다~

새로운 뷰 컨트롤러 생성을 위하여 Root폴더에서 우클릭(또는 컨트롤+클릭) 하여 New File...을 선택!


UIViewController Subclass를 선택하고 Next~!
아... 이제 다음부터는 이거 캡쳐 안해야지... ㅋㅋㅋㅋㅋㅋㅋㅋ 


이름을 MyMapViewController라고 해줍니다. 체크박스와 Subclass of를 잘 확인하세요~


자 뷰 컨트롤러가 생성되었으면 MyMapViewController.xib파일을 엽니다.


View위에 Map View를 끌어다 놓습니다. 자동으로 화면 전체에 들어갈거예요~


그 위에 버튼 세개를 살포시 얹어줍니다. 그리고 속성창에 들어가서 Alpha 값을 0.5로 설정해 줍니다~



그 후에 이제 SecondViewController.m으로 갑니다. 우리는 이 MyMapViewController를 SecondViewController에서 Modal View로 띄울 생각이거든요^^
자, SecondViewController.m으로 와서 새로 만든 MyMapViewController를 import해줍니다.


그 후에 아래로 내려와서 지난번에 만들어 놓았던 modalButtonClick메소드를 수정해 줍니다.


그리고 나서 실행을 해 봅니다~
짠! 잘 되시나요?ㅋㅋㅋ


안ㅋ돼ㅋ요ㅋ

빌드에서 에러도 없는데 왜 안될까요 도대체 ㅠㅠㅠ
자... 그럼 우리가 새로 추가한 녀석이 누군가 떠올려 봅시다.
우리가 처음 써보는건 분명히 Map View네요^^

개발문서에서 MapView에 관해 검색해 보았습니다.
Map View의 클래스 이름은 MKMapView입니다.

자... 개발문서에서 Class Reference를 보시면 사용하는 Framework와 사용가능한 버전, 그리고 선언되어있는 헤더가 나오네요~
MapKit.framework와 MKMapView.h 등을 데려와야 하겠군요~


자, 프로젝트를 클릭하고 아래와 같은 곳에 Linked Frameworks and Libraries가 있네요~
말그대로 링크된 프레임워크와 라이브러리가 있어요~
우린 지금 MapKit프레임워크를 추가해야 하므로 +버튼을 눌러줍니다~


MapKit.framework를 Add해줍니다~


자, 이렇게 추가 했으면 잘 실행이 될거예요~

그런데 맵에서 닫기버튼이 동작을 안하면 모달뷰를 닫을 수가 없죠~
이제 버튼 동작을 만들어 봅시다~^^
자, 이거 다 어떻게 하는지 아시죠??
모르면 이 아래 캡쳐에서 오른쪽 위에 Editor가 어떻게 되어있는지 확인해보시구요~
아래 빨간 화살표는, 버튼을 오른쪽버튼 또는 컨트롤 클릭해서 끌어오라는 말씀입니다~^0^


버튼 액션을 요따구로 연결 해주시구요~^^


나머지 두 버튼들도 연결 해줍니다~


또 맵뷰도 똑같이 끌어오는데, 요놈은 액션이 아니라 아울렛으로 연결해주셔야겠죠?^^
요로코롬 연결 해봅니다~


흐미~ 근데 이게 왠 에러!!??
에러 내용을 보니 MKMapView가 Unknown type이라네요..;
얘가 맵뷰를 인식하지 못하고 있어요!!!!!!!!!!!!
그럼 이럴땐 어떻게 해줘야 할까요? 고민고민.. +_+


자, 아까 위에 개발문서에서 MKMapView 클래스를 사용하려면 어떻게 해야 했죠?ㅎㅎ
프레임워크랑 헤더파일을 추가해야 했죠?
헤더파일을 살포시 추가해 줍니다.
이래서 개발문서가 중요하다 중요하다 하는거예요~ 혼자 하다가 모르면 구글보다 요놈이 백만배 빠를수도 있으니까요^^&


짜잔~~~~~~~~~~~~~~
맵을 보셨나요?ㅎㅎㅎ
(p.s 시뮬레이터에서 자신의 위치는 캘리포니아 애플 본사로 찍힙니다.)
아직은 밋밋하고 재미없네요~ 조금 더 해볼까요?


이번에는 내가 있는 곳의 위치를 알아보는 기능도 써보고 싶습니다~
프레임 워크중에 CoreLocation.framework를 추가해줍니다~ 


짜잔~ 추가해주고 아래와 같은 코드들도 입력해 줍시다~
참, 캡쳐에는 빨간 네모가 없지만 CoreLocation.h 헤더도 import해줍니다~


그리고 나서 SEOUL버튼을 누르면!!!???
지도가 뿅하고 오긴 오는데... 흐음... 확대도 안되고 재미가 없네요 ㅋㅋ


그래서 이동도 되고 확대도 되도록 코드를 조금 바꿔 넣어줘 봅시다~
코드에 대한 설명은 코멘트에^^


짜잔~ 이렇게 서울 시청으로 오네요 ㅎㅎㅎ 


그리고 드디어! 내가 있는 곳으로 지도를 움직이고 싶을 때..!! 어떻게 해야 하나???
showUserLocation메소드에 아래와 같이 입력합니다.
그런데 에러...ㅠ_ㅠ
또 뭐가 문제일까요..?


자... 문제에 봉착했다면..?ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
그렇죠 개발문서!
뭔가 의심되는 부분이 있다면 알트키를 누른채로 그녀석 위로 커서를 올리면 손꾸락 모냥이 나옵니다~ 클릭!
그리고 Class reference로 가보는거죠~


MKUserLocation이라는 클래스는MKUserLocation에 선언되어 있군요!?


그렇다면 <MapKit/MKUserLocation.h> 헤더를 추가해 주고 빌드해 봅니다~

그래도... 에러...ㅠ_ㅠ

또다시 의심가는 부분에서 개발문서를 살펴봅니다~ 그 결과 저는 이렇게 두개의 헤더를 추가해줬습니다~
왜 CoreLocation/CLLocation.h 헤더를 추가했는지 여러분들도 찾아 보아용~ 이힛~!ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
(-_- 이런 표정이 되셨다면 죄송...;)


그리고 코드를 이쁘게 적어주고 빌드해봅니다~
빌드성공!!


실행 해 봅니다~
ME, Close, SEOUL 버튼들이 모두 잘 동작하는지 확인합니다~^^*


하아... 힘드네요 ㅠ_ㅠ

이제 아울렛 연결이나 액션 연결... 클래스 생성 등의 소소한거는 캡쳐 그만해야겠어요..ㅋㅋㅋ

요렇게 짧은거 하는데 이미지 캡쳐만 30개..ㅋㅋㅋㅋㅋㅋㅋㅋ

휴휴, 다음에는 또 뭘 해볼까요?

여러분들은 뭐가 더 필요하신가요? 댓글달아주세요~ 진짜 그거 해보게요 ㅋㅋ

저도 맵뷰 처음 써봐서(그래서 개발문서 캡쳐가 많은 것일지도..ㅋㅋ) 부족한 점이 많은데요, 요청하시는게 있으면 배워서라도 포스팅 할게요 ㅋㅋ
 
그럼 이만 빠바이~


by yagom

twitter : @yagomsoft

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   

↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? ^~^ 사랑합니다~ ↓↓↓