분류 | 기능 | 비고 |
---|---|---|
기본사항 | 지도생성 | 지도를 표출하는 가장 기본 기능 |
지도 확대/축소 | 화면 터치 및 컨트롤바 조작을 통해 표출되는 지도를 좀더 확대/축소 하는 기능 | |
오버레이 | 폴리라인 생성 | 폴리라인 생성 기능 제공 |
폴리라인 색상 변경 | 폴리라인 색상 변경 기능 제공 | |
폴리곤 생성 | 폴리곤 생성 기능 제공 | |
폴리곤 색상 변경 | 폴리곤 내부 색상 변경 기능 제공 | |
마커 생성 | 마커 생성 기능 제공 | |
커스텀 마커 생성 | 커스텀 마커 생성 기능 제공 | |
원 생성 | 원 생성 기능 제공 | |
원 내부 색상 변경 | 원 내부 색상 변경 기능 제공 | |
인포윈도우 생성 | 인포윈도우 생성 기능 제공 | |
사각형 생성 | 사각형 생성 기능 제공 | |
사각형 내부 색상 변경 | 사각형 내부 색상 변경 기능 제공 | |
이벤트 | 지도 터치 | 지도화면을 짧게 누를 경우 발생 |
지도 롱 터치 | 지도화면을 길게 누를 경우 발생 | |
오버레이 이벤트 | 오버레이된 객체를 누를 경우 발생 |
- (void)viewDidLoad {
[super viewDidLoad];
MapView* mapView = [[MapView alloc] init];
mapView.delegate = self;
NSString *consumerKey = @"--"; //전달받은 서비스ID 입력
NSString *consumerSecret = @"--"; //전달받은 서비스Secret 입력
//지도 실행 요청
[mapView startMapService: consumerKey consumerSecret: consumerSecret];
//지도 세팅이 정상적으로 이루어져있는지 확인할 수 있는 메소드
// 0 - 세팅 준비,
// 1 - 세팅 실패,
// 2 - 재시도 중,
// 3 - 정상적으로 세팅 완료
NSLog(@”check: %d” [mapview checkStartMapService]);
- (IBAction)zoomIn: (id)sender {
int zoomin = mapView.zoomLevel; //현재의 줌 레벨을 가져 옴.
zoomin++; //줌 레벨을 증가 시킴.
[mapView setZoomLevel: zoomin]; //새로운 줌 레벨을 설정한다.
}
- (IBAction)zoomOut: (id)sender {
int zoomout = mapView.zoomLevel; //현재의 줌 레벨을 가져 옴.
Zoomout--; //줌 레벨을 감소 시킴.
[mapView setZoomLevel: zoomout]; //새로운 줌 레벨을 설정한다.
}
- (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];
}
- (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;
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
CGColorRef stroke = CGColorCreate(rgb, (CGFloat[]){1,0,0,1}); //선 색상 설정
overlay.strokeColor = stroke;
CGColorSpaceRelease(rgb);
CFRelease(stroke);
[mapView addOverlay:overlay]; //지도에 오버레이를 추가한다.
[overlay release];
}
- (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)];
//폴리곤 오버레이 객체를 생성한다.
PolygonOverlay* overlay = [[PolygonOverlay alloc] initWithCoordList:coordList];
overlay.lineWidth =2; //다각형의 선의 굵기 설정.
overlay.delegate = self;
[mapView addOverlay:overlay]; //지도에 오버레이를 추가한다.
[overlay release];
}
- (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)];
//폴리곤 오버레이 객체를 생성한다.
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];
}
- (IBAction) addMarker:(id)sender
{
//마커 오버레이 객체를 생성한다.
MarkerOverlay* overlay = [[MarkerOverlay alloc] initWithType:0];
overlay.coord = mapView.centerCoordinate; //마커를 표시할 좌표를 설정.
overlay.delegate = self;
[mapView addOverlay:overlay]; //지도에 오버레이를 추가한다.
[overlay release];
}
- (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];
}
- (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];
}
- (IBAction) addCircle:(id)sender
{
//Circle 오버레이 객체를 생성한다.
//원의 중심 좌표와 반경을 설정한다.
CircleOverlay* overlay = [[CircleOverlay alloc]
initWithCoord:mapView.centerCoordinate Radius:100];
overlay.lineWidth =1; //선 굵기 설정.
overlay.delegate = self;
//원의 외부 선의 색상(RGB) 설정
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
CGColorRef stroke = CGColorCreate(rgb, (CGFloat[]){0,1,0,1});
overlay.strokeColor = stroke;
//원의 내부 색상(RGB) 및 투명도(alpha) 설정
CGColorRef fill = CGColorCreate(rgb, (CGFloat[]){0,1,1,0.4});
overlay.fillColor = fill;
CGColorSpaceRelease(rgb);
CFRelease(stroke);
CFRelease(fill);
[mapView addOverlay:overlay]; //지도에 오버레이를 추가한다.
[overlay release];
}
- (IBAction) addMarker:(id)sender
{
//마커 오버레이 객체를 생성한다.
MarkerOverlay* overlay = [[MarkerOverlay alloc] initWithType:0];
overlay.coord = mapView.centerCoordinate; //마커를 표시할 좌표를 설정.
overlay.delegate = self;
overlay.title = @"User InforWindow";//인포윈도우의 텍스트 설정.
overlay.canShowInforWindow = YES; //인포윈도우 표시 설정.
[mapView addOverlay:overlay]; //지도에 오버레이를 추가한다.
[overlay release];
}
- (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);
//Rectangle 오버레이 객체를 생성한다.
RectangleOverlay* overlay = [[RectangleOverlay alloc]
initWithCoord:leftTopCoord Coord:rightBottomCoord];
overlay.lineWidth =3; //선 굵기 설정.
overlay.delegate = self;
[mapView addOverlay:overlay]; //지도에 오버레이를 추가한다.
[overlay release];
}
- (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);
//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];
}
//지도화면 touch 시 발생 이벤트.
- (void)mapTouched:(MapView*)_mapView Events:(UIEvent*)event
{
//지도화면 touch 시 화면 중심의 지도 좌표를 알림 창으로 보이기 위한 예제
Coord outcoord = [mapView convertCoordinate:_mapView.centerCoordinate
inCoordType:CoordType_UTMK outCoordType:CoordType_WGS84];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"map touch"
message:[NSString stringWithFormat:@"x : %f, y : %f", outcoord.x, outcoord.y]
delegate:nil
cancelButtonTitle:nil
otherButtonTitles:@"OK",nil];
[alert show];
[alert release];
}
//지도화면 touch 시작 시 발생 이벤트
- (void)mapTouchBegan:(MapView*)_mapView Events:(UIEvent*)event
{
NSLog(@"mapTouchBegan\n");
}
//지도화면 touch 종료 시 발생 이벤트
- (void)mapTouchEnded:(MapView*)_mapView Events:(UIEvent*)event
{
NSLog(@"mapTouchEnded\n");
}
//지도화면 touch 되어 이동 시 발생 이벤트
- (void)mapTouchMoved:(MapView*)_mapView Events:(UIEvent*)event
{
NSLog(@"mapTouchMoved\n");
}
//지도화면 long touch 시 발생 이벤트.
- (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];
[alert show];
[alert release];
}
- (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;
[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];
}
}