SGIS 오픈플랫폼 지도제공 API 정의 ios Version 1.0 1
목 차 1. 개요... 3 1.1. 목적... 3 1.2. 고려사항... 3 1.3. 서비스개요... 3 1.3.1. 서비스요약... 3 2. API... 4 2.1. API 목록... 4 2.2. API 정의... 6 2.2.1. 지도생성... 6 2.2.1.1. MapView... 6 2.2.2. 레이어관리... 12 2.2.2.1. Overlay... 12 2.2.2.2. InforWindowOverlay... 13 2.2.2.3. MarkerOverlay... 15 2.2.2.4. ImageOverlay... 16 2.2.2.5. LabelOverlay... 17 2.2.2.6. VectorOverlay... 18 2.2.2.7. CircleOverlay... 19 2.2.2.8. PolygonOverlay... 20 2.2.2.9. PolylineOverlay... 22 2.2.2.10. RectangleOverlay... 23 2.2.3. 컨트롤관리... 25 2.2.3.1. MapViewDelegate... 25 2.2.3.2. OverlayDelegate... 28 2
1. 개요 1.1. 목적 본문서는 SGIS 오픈플랫폼이제공하는 ios 용 SDK 를이용하여서비스개발시 API 전반의 기능설명및변수정보를기술함으로써, 개발자의 API 에대한이해를돕기위해작성되었다. 1.2. 고려사항 본문서에는개발자가 API 사용시클래스, 함수, 전달변수등의전반적인내용을기록하였다. 수정사항및추가사항발생시에는상호협의하여보완후매뉴얼내용보완을진행한다. 매뉴얼변경시에는주요변경내용을명시하고변경에따른버전을관리한다. 1.3. 서비스개요 1.3.1. 서비스요약 SGIS 오픈플랫폼 (SOP) 서비스는통계청의센서스통계정보와각종공공및민간의정보를공간정보기반으로융합 분석하여사용자에게제공함으로써사용자들이각종정보에대해지도를기반으로한직관적인이해를가능하게한다. 기반지도를개별서비스에서개발하기에는시간이중복적으로확보되어야하고, 전문적인인력도투입되어야하므로좀더손쉽게서비스를개발할수있도록 ios Native API 제공한다. 3
2. API 2.1. API 목록 구분 클래스 API 비고 지도생성 MapView startmapservice:(nsstring*)key consumersecret:(nsstring*)secret checkstartmapservice clearallcache clearcache:(int)layerid setcentercoordinate:(coord)coord animated:(bool)animated setangle:(double)angle animated:(bool)animated getoverlays addoverlay:(overlay*)overlay removeoverlay:(overlay*)overlay removealloverlays removeallinforwindowoverlays convertcoordinate:(coord) coordinate convertcoordinate:(coord) coordinate incoordtype:(coordtype)intype outcoordtype:(coordtype)outtype convertpoint:(cgpoint) point zoomtoextent:(kbounds)overlaybounds showinforwindowoverlay:(overlay *)overlay 레이어관리 Overlay center:(coord) defaultcenter getoverlayview hittest:(cgpoint) point Coord:(Coord)coord Tolerance:(double)tolerance isvector getbounds InforWindowOverlay initwithowner:(overlay*)owneroverlay Size:(CGSize)size setinforwindowtitle:(nsstring *)title frame:(cgrect)frame 4
MarkerOverlay ImageOverlay initwithtype:(int)markertype initwithimage:(uiimage *)image initwithtext:(nsstring *)text LabelOverlay Font:(UIFont*)font 컨트롤관리 VectorOverlay CircleOverlay PolygonOverlay PolylineOverlay RectangleOverlay MapViewDelegate OverlayDelegate setlabeltext:(nsstring*)text setstrokecolor setlinewidth setlinetype initwithcoord:(coord)coord Radius:(double)radius initwithcoordlist:(coordlist*)coordlist initwithcoordlist:(coordlist*)coordlist initwithcoord:(coord)lefttop Coord:(Coord)rightBottom maptouchbegan:(mapview*)mapview Events:(UIEvent*)event maptouchended:(mapview*)mapview Events:(UIEvent*)event maptouchmoved:(mapview*)mapview Events:(UIEvent*)event maptouched:(mapview*)mapview Events:(UIEvent*)event mapdoubletouched:(mapview*)mapview Events:(UIEvent*)event mapmultitouched:(mapview*)mapview Events:(UIEvent*)event maplongtouched:(nsvalue *)coord mapstatuschanged:(nsnumber *)mapload iszoom:(nsnumber *)iszoom mapboundschanged:(mapview*)mapview Bounds:(KBounds)bounds overlaytouched:(overlay *)overlay overlaydoubletouched:(overlay *)overlay overlayinforwindowtouched:(overlay *)overlay 5
2.2. API 정의 2.2.1. 지도생성 2.2.1.1. MapView ios 기기들에쉽게지도기능을구현할수있도록지도타일이미지표출, 터치에의한지도이동, 줌인, 줌아웃등의기능을수행하고관리하는클래스임. 해당클래스를이용하여지도를생성한뒤 에사용을하면됨. (void) startmapservice:(nsstring*)key consumersecret:(nsstring*)secret 함수명 consumer key 와 consumer secret 값을이용하여맵인증을하고인증이성공되면 config 파일을읽어와서서비스를시작하는함수임. Key 사용관련인증된 consumer kery 입력 Secret 사용관련인증된 consumer secret 입력없음예제 MapView* mapview = [[MapView alloc] init]; mapview.delegate = self; NSString *consumerkey = @"--"; // 전달받은서비스 ID 입력 NSString *consumersecret = @"--"; // 전달받은서비스 Secret 입력 // 지도실행요청 [mapview startmapservice: consumerkey consumersecret: consumersecret]; 함수명 int (int) checkstartmapservice 맵설정이성공했는지여부를체크한다. 해당함수를이용하여지도생성이정상적으로되었는지확인이가능하다. 없음 0: 세팅준비 1: 세팅실패 2: 재시도중 6
3: 정상적으로세팅완료 (void) clearallcache 모든 cache file 삭제및메모리캐쉬를초기화한다. 지도타일은앱의함수명로컬폴더에저장이되며해당함수를이용하여로컬폴더에저장된지도데이터들을삭제할수있다. 없음없음예제 - (IBAction) clearallcache:(id)sender { [mapview clearallcache]; 함수명 layerid (void) clearcache:(int)layerid 입력한 layerid (SOPMapType) 의 cache file 삭제및메모리캐쉬를초기화한다. 지도타입별앱의로컬폴더에저장된지도데이터들을삭제할수있다. SOPMapType에정의된지도타입을입력하면되며현재지원되고있는지도타입은 MapTypeStandard임. 없음 (void) setcentercoordinate:(coord)coord animated:(bool)animated 화면에보이는지도의중심점을설정한다. Coord 로중심점좌표 (UTMK) 를함수명입력한다. 지도좌표 ( 위도, 경도 ) 를입력하면해당지도좌표를중심으로지도를이동시킨다. 이동하고자하는지도의좌표. 해당좌표를기준으로지도화면의중심좌표를 coord 설정한다. animated 지도이동시애니메이션효과를할지여부를선택한다. 없음예제 - (IBAction) movetest:(id)sender { [mapview setcentercoordinate:coordmake(953803, 1953463) animated:yes]; 7
(void) setangle:(double)angle animated:(bool)animated 함수명화면에보이는지도의회전값을설정한다. angle 로회전각을입력하면지도가설정된 angle 에맞추어회전한다. angle 회전하고싶은각도를입력. animated 지도회전시애니메이션효과를할지여부를선택한다. 없음 (NSArray*) getoverlays 함수명지도화면에표출되고있는 overlay 객체들을반환한다. Overlay 객체들은지도에표출하기위해생성한 overlay 들이다. 없음 NSArray 현재지도화면에표출되고있는 overlay 들의집합예제 // 지도화면에그려진전체 overlay들의개수를확인 NSLog(@" overlay count : %lu", (unsigned long)[[mapview getoverlays] count]); (BOOL) addoverlay:(overlay*)overlay 함수명지도화면에 overlay 객체를추가한다. 생성한 mapview 에 addoverlay 가되어야지도에추가한 overlay 가보여진다. overaly 추가할 overlay 객체 BOOL 정상적으로추가되었는여부예제 - (IBAction) addmarker:(id)sender { MarkerOverlay* overlay = [[MarkerOverlay alloc] initwithtype:0]; overlay.coord = mapview.centercoordinate; overlay.delegate = self; [mapview addoverlay:overlay]; // 지도화면에 overlay 추가 [overlay release]; 함수명 (void) removeoverlay:(overlay*)overlay 8
지도화면에추가된 overlay 객체를삭제한다. overaly 삭제하고싶은 overlay 객체 없음 (void) removealloverlays 함수명지도화면에추가된 overlay 객체를모두삭제한다. 없음없음예제 - (IBAction) clearoverlays:(id)sender { [mapview removealloverlays]; 함수명 (void) removeallinforwindowoverlays 지도화면에추가된모든 inforwindowoverlay 객체를삭제한다. 없음없음 (CGPoint) convertcoordinate:(coord) coordinate 함수명지도좌표 (UTMK 위도, 경도 ) 를화면좌표 (x, y) 로변환한다. coordinate 변환하고자하는지도좌표 (UTMK) 의위도, 경도 CGPoint 변환된화면좌표 x, y 값예제 // 현재화면에보여지고있는지도의중심화면좌표취득 CGPoint centerpos = [mapview convertcoordinate:mapview.centercoordinate]; 함수명 (Coord) convertcoordinate:(coord) coordinate incoordtype:(coordtype)intype outcoordtype:(coordtype)outtype 9
intype 으로전달된지도좌표를 outtype 으로변환한다. 예를들어 intype 으로 UTMK 를선택하고 UTMK 좌표를 coordinate 로입력하고 outtype 으로 WGS84를선택하여실행하면 UTMK 좌표가 WGS84 좌표로변환된다. coordinate 변환할지도좌표입력 intype 입력한지도좌표의좌표계타입입력 outtype 변환을원하는지도좌표의좌표계타입입력 Coord 좌표계에맞게변환된지도좌표예제 - (void)maplongtouched:(nsvalue *)coord { Coord tmp; [coord getvalue:&tmp]; NSLog(@"%f, %f", tmp.x, tmp.y); Coord outcoord = [mapview convertcoordinate:tmp incoordtype:kcoordtype_utmk outcoordtype:kcoordtype_wgs84]; NSLog(@"Convert Coordinate - x : %f, y : %f", outcoord.x, outcoord.y); (Coord) convertpoint:(cgpoint) point 함수명화면좌표 (x, y) 를지도좌표 (UTMK 위도, 경도 ) 로변환한다. point 변환할화면좌표의 x, y값입력 Coord 변환된지도좌표의위도, 경도값예제 // 화면좌표취득 CGPoint centerpos = [mapview convertcoordinate:mapview.centercoordinate]; centerpos.x += (tmp.frame.origin.x); // 좌표조정 [mapview setcentercoordinate:[mapview convertpoint:centerpos]]; // 지도좌표세팅 함수명 Overlay Bounds (void) zoomtoextent:(kbounds)overlaybounds 주어진영역을한화면에보여줄수있도록지도영역및레벨을조정한다. 입력한값에맞추어지도화면이변환된다. 원하는영역의 minx, miny, maxx, maxy 값을입력 10
없음예제 - (void) overlaydoubletouched:(overlay *)overlay { [mapview zoomtoextent:overlay.getbounds]; //overlay double touch 시화면조정 함수명 overlay (void) showinforwindowoverlay:(overlay *)overlay 전달된 overlay 객체를검색하여 inforwindow Overlay 를화면에표시한다. 정보창을띄워줄 overlay 객체없음 11
2.2.2. 레이어관리 2.2.2.1. Overlay Overlay 들의최상위클래스로 Marker, Image, Label, Vector Overlay 들에서상속하고있으며지도에 표시하고싶은이미지, 도형, 선들을그릴때사용된다. (Coord) center:(coord) defaultcenter 함수명지도화면에그리기위한 Overlay 객체의중심점 (UTMK 위도, 경도좌표 ) 을설정한다. 해당중심점을기준으로 overaly 가그려진다. defaultcenter Overlay 객체의중심지도좌표 ( 위도, 경도 ) Coord 설정된값의위도, 경도지도좌표 함수명 UIView (UIView*) getoverlayview 각각의 Overlay 객체들이 view 를포함하고있다면해당 veiw 의객체를반환한다. View 가없으면 null 값이리턴된다. 없음 Overlay 가포함하고있는 UIVeiw 객체 (BOOL) hittest:(cgpoint) point Coord:(Coord)coord Tolerance:(double)tolerance 함수명입력한좌표들이지도위에그려진 overlay 객체의영역안에있는확인한다. 입력으로화면좌표 (x, y) 또는지도좌표 (UTMK 위도, 경도 ) 를받는다. point x, y 화면좌표입력 ( 선택입력 ) coord 위도, 경도지도좌표입력 ( 선택입력 ) tolerance 허용오차입력 ( 선택입력 ) BOOL Overlay 객체의영역안에있는지여부 함수명 (BOOL) isvector Overlay 가 vector type(circle, polygon, polyline) 인지체크한다. 12
없음 BOOL Vector type 인지체크한결과값 함수명 KBounds (KBounds) getbounds Overlay 의 bounds 를반환한다. 없음 Overlay 의 Bounds 값 2.2.2.2. InforWindowOverlay 지도화면위에정보를표시하기위한창을띄워준다. 해당클래스는이미선언된 overlay 에종속적 인클래스로서독립적으로수행될수없다. 예를들어 markeroveraly 를선언하여지도에그린뒤 에 inforwindowoverlay 를 markeroverlay 에종속적으로그릴수있다. (id) initwithowner:(overlay*)owneroverlay Size:(CGSize)size 함수명 inforwindowoverlay 를해당 overaly 와 size 로초기화한다. 초기화됨과동시에지도화면에그려진다. owneroverlay inforwindowoverlay가표출될 overlay 객체 size inforwindowoverlay의 width, height 설정 id 초기화된객체예제 - (void)overlaytouched:(overlay *)_overlay { if(_overlay.tag ==1) { // 객체생성시설정한태그를확인한다. //InforWindow 객체생성한다. InforWindowOverlay* overlay = [[InforWindowOverlay alloc] initwithowner:_overlay Size:CGSizeMake(184,67)]; overlay.coord = _overlay.coord; // 표시할지도좌표설정. UIView* overlayview = [overlay overlayview]; //InforWindow 이미지설정. UIImageView* imageview = [[UIImageView alloc] initwithimage: [UIImage imagenamed:@"defaultinforwindow.png"]]; imageview.userinteractionenabled = YES; 13
[overlayview addsubview:imageview]; // 이미지추가. //Button event 추가. UIButton* calloutbutton = [UIButton buttonwithtype:uibuttontypecustom]; calloutbutton.frame = CGRectMake(11, 6, 163, 36); [imageview addsubview:calloutbutton]; [calloutbutton addtarget:self action:@selector(oninforwindowbutton:) forcontrolevents:uicontroleventtouchupinside]; //InforWindow 텍스트설정. UILabel* label = [[UILabel alloc] initwithframe:cgrectmake(10,10,140,20)]; label.text = @" 터치 InforWindow"; label.textalignment = NSTextAlignmentCenter; label.backgroundcolor = [UIColor clearcolor]; label.textcolor = [UIColor greencolor]; [calloutbutton addsubview:label]; [label release]; [mapview addoverlay:overlay]; // 지도에오버레이를추가한다. [overlay release]; 예제실행결과화면 함수명 (void) setinforwindowtitle:(nsstring *)title frame:(cgrect)frame inforwindowoverlay 에인자로전달된문자열을출력한다. 14
title frame 정보창에표시할문자열 정보창에표시할문자열의 frame 설정 없음 2.2.2.3. MarkerOverlay 지도화면위의지정된좌표에 marker 를그리는클래스임. (id) initwithtype:(int)markertype 함수명 Marker overlay 를초기화하고지도위에마커를그리는기능을한다. 현재 marker type 은 red pin 만지원한다. markertype 표시하고싶은 marker type 입력. 현재는 red pin만지원함. id 초기화된객체예제 - (IBAction) addmarker:(id)sender { // 마커오버레이객체를생성한다. MarkerOverlay* overlay = [[MarkerOverlay alloc] initwithtype:0]; overlay.coord = mapview.centercoordinate; // 마커를표시할좌표를설정. overlay.delegate = self; [mapview addoverlay:overlay]; // 지도에오버레이를추가한다. [overlay release]; 예제실행결과화면 15
2.2.2.4. ImageOverlay 지도화면위의지정된좌표에 image 를그리기위한클래스임. (id) initwithimage:(uiimage *)image 함수명 Image overlay 를초기화하고지도위에입력한이미지를그리는기능을한다. image 지도위에표시하고싶은이미지입력 id 초기화된객체예제 - (IBAction) addimage:(id)sender { // 이미지오버레이객체를생성한다. ImageOverlay* overlay = [[ImageOverlay alloc] initwithimage: [UIImage imagenamed:@"smile.png"]]; overlay.coord = mapview.centercoordinate; // 이미지를표시할좌표를설정. overlay.delegate = self; [mapview addoverlay:overlay]; // 지도에오버레이를추가한다. [overlay release]; 예제실행결과화면 16
2.2.2.5. LabelOverlay 지도화면위의지정된좌표에텍스트를표출하기위한클래스임. 함수명 text font id (id) initwithtext:(nsstring *)text Font:(UIFont*)font Label overlay 를텍스트와폰트로초기화한다. 지도위에표시하고문자열입력문자열의 font 설정초기화된객체 함수명 text (void) setlabeltext:(nsstring*)text Label overlay 의텍스트를입력한텍스트로입력하거나변경한다. 지도위에표시하고문자열입력없음 17
2.2.2.6. VectorOverlay Vector overlay(circle, polygon, polyline) 들의상위클래스이다. Circle, polygon polyline 들은 vectoroveraly 를부모클래스로사용함으로써지도에선과도형을그릴수있다. 함수명 (CGColorRef) setstrokecolor Vector overlay 들의선색을설정한다. 값설정시아래와같은구현이필요하다. 색을설정하기위한컬러값을입력한다. CGColorRef Ex) CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB(); CGColorRef stroke = CGColorCreate(rgb, (CGFloat[]){0,0,0,1); overlay.strokecolor = stroke; CGColorSpaceRelease(rgb); CFRelease(stroke); 없음 함수명 float (float) setlinewidth Vector overlay 들의선굵기를설정한다. 원하는선굵기입력없음 함수명 (OverlayLineType) setlinetype Vector overlay 들의선타입을설정한다. 실선과점선을설정할수있다. 원하는선타입입력 float - klinetype_solid: 실선 (Default) - klinetype_dash: 점선 없음 18
2.2.2.7. CircleOverlay 지도화면위의지정된좌표를기준점으로원을그리기위한클래스이다. 원안의색상, 원의선색 상, 선굵기들을설정하여그릴수있다. (id) initwithcoord:(coord)coord Radius:(double)radius 함수명원의중심점과반경값을설정하여지도위에원을그린다. coord 원의중심좌표입력 ( 위도, 경도좌표 ) radius 반경값입력 id 초기화된객체예제 - (IBAction) addcircle:(id)sender { //Circle 오버레이객체를생성하고원의중심좌표와반경을설정한다. CircleOverlay* overlay = [[CircleOverlay alloc] initwithcoord:mapview.centercoordinate Radius:100]; overlay.linewidth =1; // 선굵기설정. overlay.delegate = self; [mapview addoverlay:overlay]; // 지도에오버레이를추가한다. [overlay release]; 예제실행결과화면 19
2.2.2.8. PolygonOverlay 지도화면위에다각형의도형을그리기위한클래스이다. 다각형의선색상, 선굵기, 내부색상 들을설정하여그릴수있다. (id) initwithcoordlist:(coordlist*)coordlist 함수명다각형의꼭짓점리스트를기반으로다각형을그린다. coordlist 다각형의꼭짓점좌표들의리스트를입력 id 초기화된객체예제 - (IBAction) addpolygon:(id)sender { CoordList* coordlist = [[[CoordList alloc] init] autorelease]; double size =90; Coord coord = mapview.centercoordinate; // 지도중심좌표를가져옴. // 선들의시작과끝점좌표를입력한다. [coordlist addcoord:coordmake(coord.x-size,coord.y-size)]; [coordlist addcoord:coordmake(coord.x+size,coord.y-size)]; [coordlist addcoord:coordmake(coord.x+size,coord.y+size)]; 20
// 폴리곤오버레이객체를생성한다. PolygonOverlay* overlay = [[PolygonOverlay alloc] initwithcoordlist:coordlist]; overlay.linewidth =2; // 다각형의선의굵기설정. overlay.delegate = self; // 다각형외부선의색상 (RGB) 설정 CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB(); CGColorRef stroke = CGColorCreate(rgb, (CGFloat[]){0,0,1,1); overlay.strokecolor = stroke; // 다각형안의내부색상 (RGB) 및투명도 (alpha) 설정 CGColorRef fill = CGColorCreate(rgb, (CGFloat[]){1,1,0,0.4); overlay.fillcolor = fill; CGColorSpaceRelease(rgb); CFRelease(stroke); CFRelease(fill); [mapview addoverlay:overlay]; // 지도에오버레이를추가한다. [overlay release]; 예제실행결과화면 21
2.2.2.9. PolylineOverlay 지도화면위에여러개좌표들의점들을연결하는선을그리는클래스이다. 선색상, 선굵기들을 설정하여그릴수있다. (id) initwithcoordlist:(coordlist*)coordlist 함수명입력된좌표들을기반으로좌표점들을연결하는선을그린다. coordlist 연결하기위한선분의양쪽끝좌표들의리스트를입력 id 초기화된객체예제 - (IBAction)addpolyLine: (id)sender { CoordList* coordlist = [[[CoordList alloc] init] autorelease]; double size=100; Coord coord = mapview.centercoordinate; // 지도중심좌표를가져옴. // 선들의시작과끝점좌표를입력한다. [coordlist addcoord:coordmake(coord.x-size,coord.y-size)]; [coordlist addcoord:coordmake(coord.x+size,coord.y-size)]; [coordlist addcoord:coordmake(coord.x+size,coord.y+size)]; [coordlist addcoord:coordmake(coord.x-size,coord.y+size)]; // 폴리라인오버레이객체를생성한다. PolylineOverlay* overlay = [[PolylineOverlay alloc] initwithcoordlist:coordlist]; overlay.linewidth =2; // 선의굵기설정. overlay.linetype = LineType_Dash; // 점선또는선타입설정. overlay.delegate = self; [mapview addoverlay:overlay]; // 지도에오버레이를추가한다. [overlay release]; 예제실행결과화면 22
2.2.2.10. RectangleOverlay 지도화면위에사각형을그리기위한클래스이다. 사각형의선색사으선굵기, 내부색상들을설 정하여그릴수있다. (id) initwithcoord:(coord)lefttop Coord:(Coord)rightBottom 함수명지도위에그리고자하는사각형의왼쪽위모서리좌표와오른쪽아래의모서리좌표를입력하면사각형이그려진다. lefttop 사각형의왼쪽위의지도좌표입력 rightbottom 사각형의오른쪽아래의지도좌표입력 id 초기화된객체예제 - (IBAction) addrectangle:(id)sender { // 사각형을그릴좌표를설정한다. 사각형의왼쪽위, 오른쪽아래좌표를입력 double size = 150; Coord lefttopcoord = CoordMake(mapView.centerCoordinate.x-size, mapview.centercoordinate.y-size); Coord rightbottomcoord = CoordMake(mapView.centerCoordinate.x+size, mapview.centercoordinate.y+size); 23
//Rectangle 오버레이객체를생성한다. RectangleOverlay* overlay = [[RectangleOverlay alloc] initwithcoord:lefttopcoord Coord:rightBottomCoord]; overlay.linewidth =3; // 선굵기설정. overlay.delegate = self; // 사각형의외부선의색상 (RGB) 설정 CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB(); CGColorRef stroke = CGColorCreate(rgb, (CGFloat[]){0,1,1,1); overlay.strokecolor = stroke; // 사각형의내부색상 (RGB) 및투명도 (alpha) 설정 CGColorRef fill = CGColorCreate(rgb, (CGFloat[]){1,0,0,0.8); overlay.fillcolor = fill; CGColorSpaceRelease(rgb); CFRelease(stroke); CFRelease(fill); [mapview addoverlay:overlay]; // 지도에오버레이를추가한다. [overlay release]; 예제실행결과화면 24
2.2.3. 컨트롤관리 2.2.3.1. MapViewDelegate 이벤트전달을위한 MapView 의 delegate 이다. 생성한 mapview 에서상위 view 로해당이벤트들 을전달한다. 해당이벤트들을받아지도를컨트롤하거나변경할수있다. 함수명 mapview event (void) maptouchbegan:(mapview*)mapview Events:(UIEvent*)event 지도에대한 touch 가시작되었을때발생된다. 없음현재터치이벤트가발생되고있는 mapview 객체터치이벤트 함수명 mapview event (void) maptouchended:(mapview*)mapview Events:(UIEvent*)event 지도에대한 touch 가종료되었을때발생된다없음현재터치이벤트가발생되고있는 mapview 객체터치이벤트 함수명 mapview event (void) maptouchmoved:(mapview*)mapview Events:(UIEvent*)event 지도에대한 touch 가이동되었을때발생된다없음현재터치이벤트가발생되고있는 mapview 객체터치이벤트 함수명 (void) maptouched:(mapview*)mapview Events:(UIEvent*)event 지도가 touch 되었을때발생된다. 없음 25
mapview event 현재터치이벤트가발생되고있는 mapview 객체 터치이벤트 함수명 mapview event (void) mapdoubletouched:(mapview*)mapview Events:(UIEvent*)event 지도에대한 touch 가 double touch 되었을때발생된다없음현재터치이벤트가발생되고있는 mapview 객체터치이벤트 함수명 mapview event (void) mapmultitouched:(mapview*)mapview Events:(UIEvent*)event 지도에대한 touch 가한번에다중으로되었을때발생된다없음현재터치이벤트가발생되고있는 mapview 객체터치이벤트 (void) maplongtouched:(nsvalue *)coord 함수명지도에대한 touch 가일정시간지속되었을때발생된다없음 coord Long touched 된곳의지도좌표예제 - (void)maplongtouched:(nsvalue *)coord { // 지도화면 long touch 시 touch하고있는영역의지도좌표를반환한다. Coord tmp; [coord getvalue:&tmp]; // 지도좌표타입변환 Coord outcoord = [mapview convertcoordinate:tmp incoordtype:coordtype_utmk outcoordtype:coordtype_wgs84]; UIAlertView *alert = [[UIAlertView alloc]initwithtitle:@"long touch" message:[nsstring stringwithformat:@"x : %f, y : %f", outcoord.x, outcoord.y] delegate:nil cancelbuttontitle:nil otherbuttontitles:@"ok",nil]; 26
[alert show]; [alert release]; 예제실행결과화면 함수명 mapload iszoom (void) mapstatuschanged:(nsnumber *)mapload iszoom:(nsnumber *)iszoom 지도의상태가변경되면발생된다. 지도이동상태및줌레벨이변경되면발생된다. 지도이동상태는이동시작 (0), 이동중 (1), 이동완료 (2) 로구분된다. 없음이동시작 (0), 이동중 (1), 이동완료 (2) 로구분되어전달 Zoom 인지여부 함수명 mapview bounds (void) mapboundschanged:(mapview*)mapview Bounds:(KBounds)bounds 지도의 bound 가변경되었을때발생된다. 없음현재터치이벤트가발생되고있는 mapview 객체변경된 bounds 27
2.2.3.2. OverlayDelegate 이벤트전달을위한 Overlay 의 delegate 이다. 생성한 mapview 를통해상위 view 로전달되며해 당이벤트들을통하여 overalay 들을컨트롤하거나변경할수있다. 함수명 overlay overlaytouched:(overlay *)overlay 지도위에그려진 overlay 에한번의 touch 가발생되면호출된다. 없음 Touch 가발생된 overlay 객체 함수명 overlay overlaydoubletouched:(overlay *)overlay 지도위에그려진 overlay 에두번의 touch 가발생되면호출된다. 없음 Double Touch 가발생된 overlay 객체 함수명 overlay overlayinforwindowtouched:(overlay *)overlay 지도위에그려진 overlay 의 inforwindow 에 touch 가발생되면호출된다. 없음 Touch 가발생된 overlay 객체 28