아이폰강좌 0.4 야매로 배우기! Map을 통해보는 내위치?

View Comments

0.4 아이폰 강좌  야매로 코딩코딩!

-Map view로 나의 위치를 찾아보자!! 


yenos!

조금 늦었습니다..핳.... 늦은만큼 열심히 메모하겠습니다:(

오늘의 컨셉은 뭐다?  

맵스럽게. 지도하겠습니다 하하하하....

요즘 어플들 지도 안드러가는 어플이 음스므리다!!

그만큼 map은 스마트폰 앱에서 이미 굉장히 중요한 자리에 매김하고 있지요?

그렇다면..

그 맵을 어떻게 구현해야 할 것인가? 어떠한 맵의 방식이 처음에 가장 많이 쓰이는가?

를 생각해 보았을떄... 

최고로! 야비하게 예제를 짜보도록할게욬ㅋㅋ 



추천부탁드립니다:)

감사합니다~헷




0.1 내위치를 적절히 찾아주련? 

대충 개요가 어떻게 되느냐? 

우리가 어떠한 방식으로 내 위치를 실시간으로 찾아낼것이냐?



대충 요론 느낌으로. 프로젝트에 임할 겁니다. 

ㅋㅋㅋㅋㅋㅋㅋ

간단하죠?  저느낌 그대로. 코딩으로 궈 궈 쓍 할거에요!


마찬가지로 저번 프로젝트 이어서 진행합니다~ 

혹.. 삭제하셨거나..잊어버리셨으면.. 

저번강좌를 살펴주세요 ~,~



저번에 만들었던 2번째 탭녀석의 uiimageview 객체를 없애주시고!! 대신 요 맵 뷰를 끌어 넣을거에요 ㅎㅎ

요놈을 드래그해서 2번째 탭 뷰에 끌어놓습니다!



요롭게 말이죠.. 

요정도는 간단간단~

하.. 그런데.. 그런데 그런데...

우리가 맵을 쓰기위해서는.. 다른 기구가 필요해요..음.. 맵이란녀석이 워낙 거대한자식이니.. 요놈을 어느정도 통제할 만한 통을 미리 만들어 넣어놓은 것이!

이름하여  mapkit.framwork!!!!

framwork는 걍 쉽게 생각해서 공구 통이라고 생각하시면되요.. 나사가 필요하면 나사통.. 못이 필요하면 못통? ㅋㅋㅋ

야매이니깐요~ 

그럼 추가해 봅세다~



1- 2- 3 순서로 똬다다 눌러주시요!



그러묜 요롷콤 창이나오죠...

map..으로 검색해서 Add!!!!!!!!

쉽죠? 야매니깐 따라만와요~

프레임까지 추가 완료됬나요?? 왼쪽 네비게이션 리스트에 프레임킷이 노란색 아이콘모양과 같이 리스트에 추가가됩니닿ㅎㅎㅎ



왜.. 저는 태평양 한가운데가 ㅠㅠㅠㅠ

어디가 나오든.. 지금은 중요치 않아요!!

그럼 찾아볼까요??? 내위치를??




여느 때와 마찬가지로! 스토리보드에서 저 파란 창을 눌러!!! 

코드창을 띄운다음!! 

 control끌어당기기 신공으로 .h파일에 아울렛을 연결해줍니다!!
저는 간단히 mymap이라고 이름을 지었구요 ㅎㅎㅎㅎㅎㅎ

(앗!! 참고로 저번 강좌떄 이미지를 띄우기위해  끌어놓았던 아울렛과, .m파일에서  조금 코딩한 것들은 모두 지웠습니다!.h파일에서는 UIImageView * secondImage 요 줄이 었고,,.m 파일에선 @synthesize SecondImage, UIIamge *yenos, [secondImage setImage:yenos], 요론거 들어가는 녀석들 다 지웠다는 말입니다 ㅎㅎㅎ지금은 map을 띄어야하니깐요 ㅎㅎ)

그리고.

이제 내위치를 찍기위하여 새로운 프레임워크를 또 또 !!! 추가해야합니다 !!!

아까랑 같은방법으로하는 거니깐.. 간단히 ㅎㅎㅎㅎ



어 Corelocation ? 이녀석은 어떤 상자냐고요??

위치에 관한 공구를 담는 녀석이랍니다. 내 현재위치를 따내기위해 요녀석을 이용할거에요!

추가까지 마무리 하셨나요 ㅎㅎ??

그럼 이제 코딩해보고! 설명을 뙇땋따!!



두번째 탭바의 .h 파일입니다!

예전보다 import된녀석이 많죠?? 우리가 공구를 써서 그래요.. 공구를 쓰겠다!!! 라고 선언을 해줘야

xcode가 오..  어떤 클래스가 어느 공구에서 나왔구나.. 라는걸 알 수 있거든요..

그럼 차근차근.. 살펴볼까요?

mapkit은 말그대로. 맵킷 프레임워크, Core들어가는 녀석들은 모두 corelocation에 속한 녀석들입니다

5번쨰줄을 보니 <cllocationMangerDelegate>가 있네요? 

이녀석은 우리가  CLLocation타입의 형태를 사용 가능하게 허락해 주는녀석이에요. 

Delegate개념도 다음에 몰아서! 

허락해준 녀석을 바로 이용합니다. 

CLLocation *currentLocation ---- 이녀석이 바로 현재 위치를 받게될 녀석입니다. 

다음 .m파일을 볼까나요???


괜찮아요.. 하나하나 살펴볼깝

#import는 .h와 똑같이해주시고~

CLLocation manger를 설정해둡니다. 

이어서 viewwillAppear이란 녀석을 추가해줬다!!

요녀석은 뷰가 실행 될떄마다!! 무조건 나와주는 녀석이다.. 여기서는 왜 필요할까? 


1. 우리가 지도를 보기편하도록 내 중심. 적절한 줌인이 필요함.

2. 내가 위치를 이동할떄마다 내 위치정보를 파악해 실시간으로 업데이트 해줌.


1번을 충족시켜주는 놈이 바로 viewWillAppear!

정보가 오든 말든 현재 내가 아이폰을 보았을떄의 기본적으로 설정되어야할것들에대해 정해주는 것이지.                           (지도의 기본 조정이라고 보면 쉽습니다.)



MKcoordiateRegin 타입의 viewRegion이란 놈을 설정해주고 이놈에게..

MKcoordinateRegionMakewith Distance란 녀석을 이용해 내 위치와 어는정도 줌을 할지를 저장해둔다                              (화면조정만 해주는 녀석이라고 보면된다..정보를 받고 빼고 하는게 아니라. . 그냥 화면위치조정만 해준다, 축척?)

괄호안에는 내맵에서의 위치조정 과 줌을 얼마나 할것인지가 나와있음!!

점으로 나누어질수록. 점점더 하위 레벨이라는 것이고!!(mymap이 udserlocation보다 상위에 존재함!,쉽게 말해 더 큰 범위)

0.005, 이 두녀석은 얼마나 줌을 할지 설정해주는것!!

(숫자를 크게하면 줌이 덜 된다... 내위치에서 미국까지 볼수도 있어요..ㅋㅋㅋㅋ)


다음이

-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

요놈인데... 이놈은 그냥 위치를 받지 못할 경우 에러창을 띄우는 녀석인데..

너무 간단하고! 나중에 알람창에대해서 이야기 할 것임으로 패스!!


현재 위치를 따주는 녀석.. NSLog는 이제 매번 위치가 바뀜에 따라 업데이트 되어진 내용을 찍어주는 녀석이다.

매번 나오는 새로운 로케이션이.. 현재 로케이션으로 저장됨으로. currentlocation에 newolocation을 매번 대입해주고..

만약 위치가 이동된다!!(현재위치값이 널값이 아니다! 즉 아무것도 없는것? 0? 이 아니다=======위치의 변화가있다)

그헣다면~

region- 지도의 넓이.

span - 보여줄 지도의 넓이.(줌인 개념)

region center는 지도의 중앙값을 정한다! 어떻게 정할 것이냐?? CLLocationcoordinate2dmake를 이용해!! 현재 위도, 경도 값을 위와 같이 넣어주면!! 성공!)

모든것이 설정이 되었으면.. 실질적으로 

mymap에서 이용될 수 있도록 적용하여준다 .. 밑에 3줄을 통하여!


어느새 마지막! 

여기선 위치관리자에 관한 정의 를 해주파트!

또 delegate.. 요녀석은 다음을 위해 패스! 다음

Accuracy??  요놈은 말그대로 정밀도다.. 최고로 설정을 하였지만.. 이럴수록 배러리가! 조금 더  빨리단다..ㅋ.ㅋ

startupdating요놈은 .. 이제 본격적으로 manager를 시작하게 만드는 녀석!

그리고 마찬가지로 mymap에 적용시켜준다..

끝!





햐.. 이로써 길고 긴.. 맵 알아보기가 끝났다...

하도 복잡하게 써서.. 정리가 안되네.... 마지막으로 정리를 해보면..

locationmanger가 위치를 받아온다.. 받아온 위치를 매번 currentlocation으로 옮겨

매번 새 위치를 알려주고.. 이 위치를 기반으로 현재 위치가 매번 업데이트 된다. 

현재위치를 중앙에 꽂아주고 각종 멤소드를 이용해 기본적인 화면크기, 축척 정도를 설정한다.

대충 느낌이 오나요..

요고 한번만 하시면.. 그래도 맵에대한 개념은 잡히실거에요..

물론 요걸로 만족하지 마시구.. 구글링 구글링 무한 구글링!을 해야겠지요??




*ps.  여기저기 보고 한거라.. optimazing은 안되었을 수 있습니다.. 공부한다는 마음으로 봐주셨으면 감사하겠습니다..

*ps2.  모르는 거나.. 어려운거 있으면 같이 공부하구 가요. 힝 혼자 찾지말고... 댓글play  GoGo!! 

*ps3.  죄송합니다.. 시뮬레이션상에서는 위치서비스를 제공하지않아 현재 고갱님(?)의 위치는   찍히지 않습니다.. 애플본사 or 태평양 한가운데가 찍힐거에요... 하지만. 위에 말대로 따라했다면. 백프로 아이폰연결시 현재위치가 뜹니다


8 Comments (+add yours?)

Leave a Reply

Tracbacks (+view to the desc.)