2018년 11월 13일 Mobile Dynamic Map 3.0 버전이 출시됨에 따라, 기존의 2.0 버전의 서비스는 2019년 12월 31일까지만 제공될 예정입니다. 2020년 1월 이후에는 Mobile Dynamic Map 2.0 버전 사용 시 지도 초기 화면에서 오류메세지가 노출되며 기능을 사용할 수 없습니다.
이와 같이 2019년 12월 31일까지는 Mobile Dynamic Map 2.0 버전과 3.0 버전을 함께 이용할 수 있으나, 2020년 1월 1일부터는 2.0 버전은 종료되며, 새로운 3.0 버전만 이용할 수 있으니 2.0 버전 종료 이전에 전환을 요청드립니다.
Mobile Dynamic Map 2.0 버전에서 3.0 버전으로 이전하기 위한 상세한 가이드는 아래 링크를 참고하시길 바랍니다.
※ 서비스 종료 일정
- Mobile Dynamic Map SDK 2.0 버전 신규 다운로드 종료 : 2019년 8월 1일
- Mobile Dynamic Map 2.0 버전 서비스 종료 : 2020년 1월 1일
※ 서비스 이전(마이그레이션) 가이드
iOS용 라이브러리
iOS용 Maps 라이브러리에서 제공하는 클래스에 대한 정보를 제공합니다. 라이브러리에서는 지도를 화면에 표시하기 위한 지도 메인 클래스와 지도 위에 오버레이 데이터를 표시하기 위한 오버레이 클래스, 그리고 데이터 클래스를 제공합니다.
API 호출 예제
iOS Maps API 개발을 위한 준비사항은 다음과 같습니다.
- XCode에서 프로젝트 생성: 이때 입력하는 ‘Bundle Identifier’는 애플리케이션 등록설정의 iOS Bundle ID와 반드시 일치하도록 주의 합니다.
- https://github.com/navermaps/maps.ios에서 SDK를 다운로드합니다.
SDK의 NMapViewerSDK 프레임웍과 ApiGatewayMac 프레임웍을 프로젝트에 추가합니다. NMapViewerSDK는 Linked Frameworks로 ApiGatewayMac은 Embedded Binaries로 등록해야 합니다. Embedded Binaries로 등록하면 자동으로 Linked Frameworks 에도 등록됩니다. 프레임웍은 SDK의 Frameworks 폴더에 있습니다.
프로젝트 Build 설정에 아래 설정을 추가합니다.
- Linking > Other Linker Flags에 -ObjC -lxml2 플래그를 추가합니다.
Search Paths > Framework Search Paths에 NMapViewerSDK, ApiGatewayMac 프레임웍이 있는 폴더가 추가되어 있는지 확인합니다.
프로젝트 타겟의 Build Phases에 아래 설정을 추가합니다.
- New Run Script Phases에 strip-frameworks.sh 스크립트를 추가합니다.
스크립트의 위치에 따라 경로명을 조정해야 합니다.
Info.plist에 아래 설정을 추가합니다.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>LSApplicationCategoryType</key>
<string>NSLocationWhenInUseUsageDescription</string>
Swift를 이용하는 경우, 아래 작업이 추가로 필요합니다.
Objective-C Bridging Header를 아래 내용으로 생성합니다.
#ifndef your_project_Bridging_Header_h
#define your_project_Bridging_Header_h
#import <NMapViewerSDK/NMapView.h>
#import <NMapViewerSDK/NMapLocationManager.h>
#endif
- 프로젝트 Build 설정에 아래 설정을 추가합니다.
- Swift Compiler - General > Objective-C Bridging Header에 위에서 생성한 헤더파일을 추가합니다.
// 네이버 지도만 화면으로 띄우는 간단한 예제입니다.(파일명: MapViewController.m)
#import "MapViewController.h"
#import <NMapViewerSDK/NMapView.h>
#define kClientID @" YOUR_CLIENT_ID" //get your clientID
@interface ViewController () <NMapViewDelegate, NMapPOIdataOverlayDelegate>
@property (nonatomic, strong) NMapView *mapView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// create map view
self.mapView = [[NMapView alloc] initWithFrame:self.view.bounds];
// set delegate for map view
[self.mapView setDelegate:self];
// set Client ID for Open MapViewer Library
[self.mapView setClientId:kClientID];
[self.view addSubview:self.mapView];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
#pragma mark NMapViewDelegate Method
- (void) onMapView:(NMapView *)mapView initHandler:(NMapError *)error {
if (error == nil) { // success
// set map center and level
[self.mapView setMapCenter:NGeoPointMake(126.978371, 37.5666091) atLevel:11];
[self.mapView setMapEnlarged:YES mapHD:YES];
} else { // fail
NSLog(@"onMapView:initHandler: %@", [error description]);
}
}
#pragma mark NMapPOIdataOverlayDelegate
- (UIImage *) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay imageForOverlayItem:(NMapPOIitem *)poiItem selected:(BOOL)selected {
return nil;
}
- (CGPoint) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay anchorPointWithType:(NMapPOIflagType)poiFlagType {
return CGPointZero;
}
- (UIImage*) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay imageForCalloutOverlayItem:(NMapPOIitem *)poiItem
constraintSize:(CGSize)constraintSize selected:(BOOL)selected
imageForCalloutRightAccessory:(UIImage *)imageForCalloutRightAccessory
calloutPosition:(CGPoint *)calloutPosition calloutHitRect:(CGRect *)calloutHitRect {
return nil;
}
- (UIImage*) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay imageForCalloutOverlayItem:(NMapPOIitem *)poiItem
constraintSize:(CGSize)constraintSize selected:(BOOL)selected
imageForCalloutRightAccessory:(UIImage *)imageForCalloutRightAccessory
calloutPosition:(CGPoint *)calloutPosition calloutHitRect:(CGRect*)calloutHitRect {
return nil;
}
- (CGPoint) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay calloutOffsetWithType:(NMapPOIflagType)poiFlagType {
return CGPointZero;
}
@end
Data 클래스
NGeoPoint
Description
지도 상의 경위도 좌표를 나타내는 클래스입니다.Constructor
구문 | 설명 |
---|---|
NGeoPoint(double longitude, double latitude) | 경위도 좌표로 생성 |
- Fields
구문 | 설명 |
---|---|
double longitude | 경도 |
double latitude | 위도 |
NMapError
Initializer
에러 코드와 에러 메시지를 나타내는 클래스입니다.Constructor
구문 | 설명 |
---|---|
(id) initWithCode:(int)code message:(NSString *)message | 에러 코드와 에러 메시지로 초기화 |
- Properties
구문 | 설명 |
---|---|
@property (nonatomic, assign) int code | 에러 코드 |
@property (nonatomic, retain) NSString *message | 에러 메시지 |
NMapPlacemark
Description
경위도 좌표를 주소로 변환하는 메서드의 콜백 인터페이스로 전달되는 클래스입니다. 주소는 번지를 포함하지 않습니다.Initializer
구문 | 설명 |
---|---|
(id) initWithLocation:(NGeoPoint)location addressDictionary:(NSDictionary *)addressDictionary | 경위도 좌표와 해당 주소로 초기화 |
- Properties
구문 | 설명 |
---|---|
@property (nonatomic, readonly) NSString *doName | 주소의 광역시/도를 나타낸다. |
@property (nonatomic, readonly) NSString *siName | 주소의 시/군/구를 나타낸다. |
@property (nonatomic, readonly) NSString *dongName | 주소의 읍/면/동을 나타낸다. |
@property (nonatomic, readonly) NSString *address | 주소를 반환한다. |
NMapPlacemark
Description
경위도 좌표를 주소로 변환하는 메서드의 콜백 인터페이스로 전달되는 클래스입니다. 주소는 번지를 포함하지 않습니다.Initializer
구문 | 설명 |
---|---|
(id) initWithLocation:(NGeoPoint)location addressDictionary:(NSDictionary *)addressDictionary | 경위도 좌표와 해당 주소로 초기화 |
- Properties
구문 | 설명 |
---|---|
@property (nonatomic, readonly) NSString *doName | 주소의 광역시/도를 나타낸다. |
@property (nonatomic, readonly) NSString *siName | 주소의 시/군/구를 나타낸다. |
@property (nonatomic, readonly) NSString *dongName | 주소의 읍/면/동을 나타낸다. |
@property (nonatomic, readonly) NSString *address | 주소를 반환한다. |
- Methods
구문 | 설명 |
---|---|
String toString() | 주소를 반환한다. |
NMapLocationManager
Description
단말기의 현재 위치 탐색과 나침반 기능을 사용하기 위한 클래스입니다. 내부적으로 시스템에서 제공하는 CLLocationManager 클래스를 사용합니다. 나침반 기능은 현재 위치 탐색 상태에서만 사용 가능합니다.Constants
현재 위치 탐색 및 나침반 모니터링 실패에 대한 에러 종류는 아래와 같습니다.
구문 | 설명 |
---|---|
NMapLocationManagerErrorTypeTimeout | 일정 시간 이내에 현재 위치 탐색 실패 |
NMapLocationManagerErrorTypeUnavailableArea | 현재 위치를 지도에서 지원하지 않음 |
NMapLocationManagerErrorTypeDenied | 현재 위치 탐색이 거부됨 |
NMapLocationManagerErrorTypeUnknown | 알 수 없는 오류로 현재 위치 탐색 실패 |
NMapLocationManagerErrorTypeHeading | 나침반 모니터링 실패 |
- Properties
구문 | 설명 |
---|---|
@property (nonatomic, readonly) CLLocation *location | 현재 위치에 대한 정보를 나타낸다. |
- Methods
구문 | 설명 |
---|---|
(NMapLocationManager *) getSharedInstance | Singleton 객체를 반환한다. |
(void) setDelegate:(id)delegate | 현재 위치 및 나침반 상태 변경 시 호출될 객체를 설정한다. |
(void) startContinuousLocationInfo | 현재 위치 탐색을 시작한다. |
(void) stopUpdateLocationInfo | 현재 위치 탐색을 종료한다. |
(void) suspendUpdateLocationInfo | 현재 위치 탐색을 일시 중지한다. |
(void) resumeUpdateLocationInfo | 현재 위치 탐색을 재개한다. |
(BOOL) isUpdateLocationStarted | 현재 위치 탐색이 시작 여부를 반환한다. |
(BOOL) isUpdateLocationSuspended | 현재 위치 탐색 일시 중지 여부를 반환한다. |
(BOOL) isTrackingEnabled | 현재 위치 탐색 중인지 여부를 반환한다. |
(BOOL) headingAvailable | 단말기의 나침반 기능 지원 여부를 반환한다. |
(BOOL) isHeadingUpdateStarted | 나침반 모니터링 중인지 여부를 반환한다. |
(void) startUpdatingHeading | 나침반 모니터링을 시작한다. |
(void) stopUpdatingHeading | 나침반 모니터링을 종료한다. |
- Protocol – NMapLocationManagerDelegate
단말기의 현재 위치 또는 나침반 상태 변경 시 호출되는 프로토콜 정의합니다.
구문 | 설명 |
---|---|
(void) locationManager:(NMapLocationManager )locationManager didUpdateToLocation:(CLLocation )location | 현재 위치 변경 시 호출된다. location 객체에 변경된 위치 정보가 전달된다. |
(void) locationManager:(NMapLocationManager *)locationManager didFailWithError:(NMapLocationManagerErrorType)errorType | 현재 위치 탐색 실패 시 호출된다. 실패 원인은 errorType으로 전달된다. |
(void) locationManager:(NMapLocationManager )locationManager didUpdateHeading:(CLHeading )heading | 나침반 각도 변경 시 호출된다. heading 객체에 각도 정보가 전달된다. |
Map Main 클래스
NMapView
Description
지도 데이터를 화면에 표시하는 뷰 클래스이며 UIView 클래스를 상속받습니다. 본 클래스에서 관리하는 지도 데이터는 지도 이미지 이외에도 지도 위에 표시되는 오버레이 객체를 포함합니다.Initializer
구문 | 설명 |
---|---|
(id) initWithFrame:(CGRect)frame | 경위도 좌표와 해당 주소로 초기화 |
- Constants
지도 상태에 대한 상수 값은 아래와 같습니다.
구문 | 설명 |
---|---|
NMapViewStatusBeginAnimation | 애니메이션이 시작됨 |
NMapViewStatusEndAnimation | 애니메이션이 종료됨 |
지도 모드에 대한 상수 값은 아래와 같습니다.
구문 | 설명 |
---|---|
NMapViewModeVector | 일반 지도 보기 모드 |
NMapViewModeHybrid | 위성 지도 보기 모드 |
NMapViewModeTraffic | 실시간 교통 지도 보기 모드 |
NMapViewModeBicycle | 자전거 지도 보기 모드 |
NMapViewModePanorama | 파노라마 지도 보기 모드 |
- Properties
구문 | 설명 |
---|---|
@property (nonatomic, getter=isAutoRotateEnabled) BOOL autoRotateEnabled | 지도 자동 회전 기능 활성화 여부를 설정하거나 현재 상태를 반환한다. |
@property (nonatomic) CGFloat rotateAngle | 지도를 전달된 각도로 회전하거나 회전된 각도를 반환한다. 지도 자동 회전 기능이 활성화된 상태에서만 유효하다. |
@property (nonatomic, assign) id delegate | 지도 상태 변경, 터치 이벤트 발생 및 오버레이 아이템 처리 시 호출되는 콜백 인터페이스를 설정한다. |
@property (nonatomic, assign) id reverseGeocoderDelegate | 좌표를 주소를 변환하는 API 호출 시 서버 응답에 대한 콜백 인터페이스를 설정한다. |
@property (nonatomic, readonly) NMapOverlayManager *mapOverlayManager | 오버레이 데이터 관리를 위한 객체를 반환한다. |
@property (nonatomic, assign) BOOL isAnimating | 맵뷰의 상태가 애니메이션 중인지 여부를 반환한다. |
@property (nonatomic, assign) BOOL isPanning | 맵뷰의 상태가 패닝 중인지 여부를 반환한다. |
- Methods
구문 | 설명 |
---|---|
(BOOL) isValidLongitude: (double)lon latitude: (double)lat |
전달된 좌표를 지도 라이브러리에서 처리할 수 있는지 여부를 반환한다. 내부적으로 국내 영토를 감싸는 폴리곤 영역에 포함되는지 여부를 체크한다. |
(double)distanceFromLocation: (NGeoPoint)fromLocation toLocation: (NGeoPoint)toLocation |
두 경위도 좌표 사이의 거리(미터)를 반환한다. |
(void)setClientId:(NSString *)clientId; | 애플리케이션 등록 시 발급받은 클라이언트 아이디값을 설정하기 위한 메서드이다. |
(void) setApiKey:(NSString *)apiKey // deprecated | 기존 API 키 방식 호출을 위한 메서드로서, 오픈 지도 라이브러리 사용을 위해 등록된 키를 설정한다. 정상적으로 등록된 키를 설정하지 않은 경우에는 onMapView:initHandler: 콜백으로 에러가 전달된다. (deprecated 메서드로서 2016 년 말까지만 이용가능) |
(void) setEnlarged:(BOOL)isEnlarged mapHD:(BOOL)isMapHD | 지도 타일의 확대 여부 및 고해상도 타일 여부를 선택한다. 아이폰 4 이상의 레티나 단말을 타겟으로 한다면, 두 값을 모두 YES로 설정할 것을 권장한다. |
(void) setLogoImageOffsetX:(CGFloat)offsetX offsetY:(CGFloat)offsetY | 네이버 로고 이미지의 위치를 조정한다. 기준은 화면 왼쪽 하단이며, 화면 왼쪽 하단 끝보다 오른쪽이면 offsetX 값이 양수이고 위쪽이면 offsetY 값이 양수이다. |
(void) reload | 지도 타일을 다시 로딩한다. |
(void) invalidate | 지도 화면을 다시 그린다. |
(void) viewWillAppear | 지도가 포함된 UIViewController의 viewWillAppear에서 호출한다. |
(void) viewDidAppear | 지도가 포함된 UIViewController의 viewDidAppear에서 호출한다. |
(void) viewWillDisappear | 지도가 포함된 UIViewController의 viewWillDisappear에서 호출한다. |
(void) viewDidDisappear | 지도가 포함된 UIViewController의 viewDidDisappear에서 호출한다. |
(void) didReceiveMemoryWarning | 지도가 포함된 UIViewController의 didReceiveMemoryWarning에서 호출한다. |
- Protocol – NMapViewDelegate
지도 상태 변경 및 터치 이벤트 발생 시 호출되는 콜백 프로토콜을 정의합니다.
구문 | 설명 |
---|---|
(void) onMapView:(NMapView )mapView initHandler:(NMapError )error | 지도가 초기화된 후 호출된다. 정상적으로 초기화되면 error 객체에는 nil 이 전달되며, 초기화 실패 시 error 객체에 에러 원인이 전달된다. |
(void) onMapView:(NMapView *)mapView willChangeMapLevel:(int)toLevel | 지도 레벨 변경 시작 시 호출되며 변경된 지도 레벨이 파라미터로 전달된다. |
(void) onMapView:(NMapView *)mapView didChangeMapLevel:(int)level | 지도 레벨 변경 완료 후 호출되며 변경된 지도 레벨이 파라미터로 전달된다. |
(void) onMapView:(NMapView *)mapView didChangeViewStatus:(NMapViewStatus)status | 지도 애니메이션 시작 및 종료 변경 시 호출된다. |
(void) onMapView:(NMapView *)mapView didChangeMapCenter:(NGeoPoint)location | 지도 중심 변경 시 호출되며 변경된 중심 좌표는 파라미터로 전달된다. |
(void) onMapView:(NMapView )mapView touchesBegan:(NSSet )touches withEvent:(UIEvent *)event | 지도에서 터치 시작 이벤트 발생 시 호출된다. |
(void) onMapView:(NMapView )mapView touchesMoved:(NSSet )touches withEvent:(UIEvent *)event | 지도에서 터치 이동 이벤트 발생 시 호출된다. |
(void) onMapView:(NMapView )mapView touchesEnded:(NSSet )touches withEvent:(UIEvent *)event | 지도에서 터치 종료 이벤트 발생 시 호출된다. |
(void) onMapViewTouchesCanceled:(NMapView *)mapView | 지도에서 터치 취소 이벤트 발생 시 호출된다. |
(BOOL) onMapView:(NMapView *)mapView dispatchTouchesBeganPoint:(CGPoint)touchPoint withFrame:(CGRect)frame | 오버레이 아이템의 모드가 NMapPOIflagModeDispatch인 경우에, 터치 이벤트에 의해 해당 아이템이 선택되면 호출된다. frame에는 해당 아이템의 영역이 전달된다. 해당 아이템에 대한 터치 이벤트를 직접 처리하려면 YES를 반환한다. |
(BOOL) onMapView:(NMapView *)mapView dispatchTouchesBeganPoint:(CGPoint)touchPoint | 오버레이 아이템의 모드가 NMapPOIflagModeDispatch인 아이템이 선택된 경우에, 지도에서 발생한 터치 시작 이벤트를 전달한다. delegate에서 터치 이벤트를 직접 처리하려면 YES를 반환한다. |
(void) onMapView:(NMapView *)mapView dispatchTouchesMovedPoint:(CGPoint)touchPoint | 지도에서 터치 이동 이벤트 발생 시 호출된다. |
(void) onMapView:(NMapView *)mapView dispatchTouchesEndedPoint:(CGPoint)touchPoint | 지도에서 터치 종료 이벤트 발생 시 호출된다. |
(void) onMapViewDispatchTouchesCancelled:(NMapView *)mapView | 지도에서 터치 취소 이벤트 발생 시 호출된다. |
(void) onMapView:(NMapView )mapView forwordTouchesBegan:(NSSet )touches withEvent:(UIEvent *)event | 지도에서 터치 시작 이벤트 발생 시 호출된다.(맵뷰 내부적으로 터치 이벤트가 처리된 경우) |
(void) onMapView:(NMapView )mapView forwordTouchesEnded:(NSSet )touches withEvent:(UIEvent *)event | 지도에서 터치 취소 이벤트 발생 시 호출된다.(맵뷰 내부적으로 터치 이벤트가 처리된 경우) |
(void) onMapView:(NMapView )mapView handleLongPressGesture:(UIGestureRecognizer)recogniser | 지도에서 롱탭 이벤트 발생 시 호출된다. |
(void) onMapView:(NMapView )mapView handleSingleTapGesture:(UIGestureRecognizer)recogniser | 지도에서 싱글탭 이벤트 발생 시 호출된다. |
(void) onMapView:(NMapView )mapView didHandleSingleTapGesture:(UIGestureRecognizer)recogniser | 지도에서 싱글탭 이벤트 발생 시 호출된다.(맵뷰 내부적으로 터치 이벤트가 처리된 경우) |
NMapController
Description
NMapView 클래스의 카테고리 클래스이며 지도 뷰어를 컨트롤하는 역할을 수행합니다. 지도 중심 위치 및 지도 레벨 지정, 확대, 축소, 패닝 기능 등 다양한 기능을 수행합니다.Properties
구문 | 설명 |
---|---|
@property (nonatomic) NMapViewMode mapViewMode | 지도 보기 모드를 설정/반환한다. NMapViewModeVector : 일반 지도 NMapViewModeHybrid : 위성 지도 |
@property (nonatomic) BOOL mapViewTrafficMode | 실시간 교통 지도 보기 모드를 설정/반환한다. |
@property (nonatomic) BOOL mapViewBicycleMode | 자전거 지도 보기 모드를 설정/반환한다. |
@property (nonatomic) BOOL mapViewPanoramaMode | 파노라마 지도 보기 모드를 설정/반환한다. |
@property (nonatomic, readonly) NGeoPoint mapCenter | 지도 중심 좌표를 경위도 형식으로 반환한다. 지도 중심은 boundsVisible에 의해서 설정된 영역의 중심에 위치한다. |
@property (nonatomic) CGRect boundsVisible | 화면에 보이는 지도 영역을 설정/반환한다. 지도 전체 영역과 화면에 보이는 지도 영역이 다를 경우에 설정한다. 설정하지 않으면 지도 영역과 동일하다. |
- Methods
구문 | 설명 |
---|---|
(void) setMapCenter:(NGeoPoint)location atLevel:(int)level | 지도 중심 좌표 및 축척 레벨을 설정한다. 축척 레벨을 지정하지 않으면 중심 좌표만 변경된다. 유효 축척 레벨 범위는 1~14이다. 지도 중심은 boundsVisible에 의해서 설정된 영역의 중심에 위치한다. |
(NGeoPoint) mapBoundsCenter | 지도 중심 좌표를 경위도 형식으로 반환한다. |
(void) setZoomLevelMin:(int)minLevel max:(int)maxLevel | 최대, 최소 지도 축척 레벨을 설정한다. 유효 축척 레벨 범위는 1~14이다. |
(int) minZoomLevel | 최소 지도 축척 레벨을 반환한다. |
(int) maxZoomLevel | 최대 지도 축척 레벨을 반환한다. |
(void) setZoomEnabled:(BOOL)enabled; | 지도 확대/축소 가능 여부를 설정한다. |
(void) setPanEnabled:(BOOL)enabled | 지도 패닝 가능 여부를 설정한다. |
(int) zoomLevel | 현재 지도 축척 레벨을 반환한다. |
(BOOL) setZoomLevel:(int)level | 지도 축척 레벨을 변경하며 성공 여부를 반환한다. |
(void) zoomIn | 지도 축척 레벨을 한 단계 확대한다. |
(void) zoomOut | 지도 축척 레벨을 한 단계 축소한다. |
(void) moveByDx:(float)dX dY:(float)dY | 지도 중심을 전달된 변위 값만큼 이동한다. |
(void) zoomToBounds:(NGeoRect)bounds atLevel:(int)level | (int)level 전달된 영역이 화면에 표시되도록 지도 중심점 및 축척 레벨을 자동으로 변경한다. 축척 레벨을 지정하면 지정된 축척 레벨에서 지도 중심 좌표만 변경된다. bound는 경위도 좌표 값으로 구성된 영역이다. |
NMapProjection
Description NMapView 클래스의 카테고리 클래스이며 화면 좌표를 지도 좌표로 변환하는 기능을 수행합니다. 오버레이 레이어를 직접 구현할 경우에 사용해야 합니다.
Methods
구문 | 설명 |
---|---|
(NGeoPoint) fromPoint:(CGPoint)pt | 맵뷰의 화면 좌표에 해당하는 지도 좌표를 반환한다. |
(int) metersToPoints:(float)meters | 지도 중심에서 실제 거리(meters)를 화면상의 거리(points)로 변환한다. |
(int) metersToPoints:(float)meters atLocation:(NGeoPoint)location | 전달된 좌표를 중심으로 실제 거리(meters)를 화면상의 거리(points)로 변환한다. |
(CGPoint) toPointFromLocation:(NGeoPoint)location | 전달된 경위도 좌표에 해당하는 맵뷰의 화면 좌표를 반환한다. |
(NGPoint) toMapPointFromLocation: (NGeoPoint)location | 지전달된 경위도 좌표에 해당하는 맵뷰의 지도 좌표를 반환한다. 본 좌표는 오버레이 레이어에서 지도 위에 경로 등을 직접 드로잉 시에 사용한다. |
(BOOL) isVisibleLocation: (NGeoPoint)location | 전달된 지도 좌표가 현재 화면에 표시되는지 여부를 반환한다. |
(NGeoRect) screenBounds | 맵뷰의 화면 영역에 해당하는 지도 좌표 영역을 반환한다. |
(NGeoRect) screenBoundsBy: (double)areaRatio | 맵뷰의 화면 영역에 해당하는 지도 좌표 영역을 반환한다. 전달된 areaRatio는 화면 영역에 areaRatio를 곱한 영역에 대해서 지도 좌표 영역을 반환한다. |
NMapViewRotation
Description
NMapView 클래스의 카테고리 클래스이며 지도 회전 기능을 수행합니다.Properties
구문 | 설명 |
---|---|
@property (nonatomic, getter=isAutoRotateEnabled) BOOL autoRotateEnabled | 지도 자동 회전 기능 활성화 여부를 설정하거나 현재 상태를 반환한다. |
@property (nonatomic) CGFloat rotateAngle | 지도를 전달된 각도로 회전하거나 회전된 각도를 반환한다. 지도 자동 회전 기능이 활성화된 상태에서만 유효하다. |
NMapReverseGeocoder
Description
NMapView 클래스의 카테고리 클래스이며 좌표를 주소로 변환하는 메서드를 수행합니다.Methods
구문 | 설명 |
---|---|
(void) findPlacemarkAtLocation: (NGeoPoint)location | 좌표를 주소를 변환하는 서버 API를 호출한다. 서버 API는 비동기로 수행하면 결과는 NMapReverseGeocoderDelegate로 전달된다. |
- Protocol – NMapReverseGeocoderDelegate
좌표를 주소를 변환하는 API에 대한 응답 프로토콜을 정의합니다.
구문 | 설명 |
---|---|
(void) location:(NGeoPoint)location didFindPlacemark:(NMapPlacemark *)placemark | 좌표를 주소를 변환하는 API 호출 시 서버 응답에 대한 콜백 인터페이스이다. placemark 객체에는 요청한 좌표에 대한 주소 데이터를 포함한다. |
(void) location:(NGeoPoint)location didFailWithError:(NMapError *)error | 좌표를 주소를 변환하는 API 실패 시 호출된다. error 객체에 에러에 대한 정보가 전달된다. |
Overlay 클래스
NMapOverlay
Description
지도 위에 오버레이 객체를 표시하기 위한 기반 클래스입니다. 이 클래스를 상속받은 클래스에서는 아래의 메서드를 직접 구현해야 합니다.Properties
구문 | 설명 |
---|---|
@property (nonatomic, assign) BOOL hidden | 오버레이 객체의 화면 표시 여부를 설정/반환한다. |
@property (nonatomic, assign) NMapOverlayZPosition zPosition | 오버레이 객체의 화면에서 zPosition을 설정/반환한다. 값이 클수록 상위에 표시된다. |
- Methods
구문 | 설명 |
---|---|
(void) drawToLayer:(CALayer *)theLayer frame:(CGRect)rect | 오버레이 객체를 화면에 표시한다. 경로와 같이 지도 위에 직접 표시되는 오버레이 객체인 경우에 구현한다. |
(void) clearOverlay | 오버레이 객체가 화면에서 제거되는 경우에 호출된다. 경로와 같이 지도 위에 직접 표시되는 오버레이 객체인 경우에는 맵뷰의 invalidate 메서드를 호출해야 한다. |
(void) stopTimers | 오버레이 객체에서 사용하는 타이머를 종료한다. 맵뷰가 비활성화되는 경우에 호출된다. |
(void) layoutSublayers | 오버레이 객체에서 표시하는 레이어들의 위치를 조정한다. 맵뷰의 레이아웃이 변경되면 호출된다. |
(void) moveByDx:(float)dX dY:(float)dY | 오버레이 객체에서 표시하는 레이어들의 위치를 전달된 변위만큼 이동한다. 지도 패닝 시 호출된다. |
(void) initZoomByFactor: (float)zoomFactor near:(CGPoint)pivot | 확대/축소 애니메이션 시작 시에 호출된다. 애니메이션 시작 전에 필요한 작업을 수행한다. 애니메이션 도중에 화면에 표시되는 레이어들의 위치 변경이 필요한 경우에 구현한다. |
(void) zoomByFactor: (float)zoomFactor near:(CGPoint)pivot | 확대/축소 애니메이션 진행 중에 호출된다. pivot 위치를 중심으로 zoomFactor 배율로 확대 또는 축소된다. 애니메이션 도중에 화면에 표시되는 레이어들의 위치 변경이 필요한 경우에 구현한다. |
(BOOL) hasPathData | 오버레이 객체에서 지도 위에 직접 경로를 표시하는지 여부를 반환한다. |
(int) layerZPosition:(int)zPosition | 오버레이 객체에서 표시되는 레이어의 zPosition을 인자로 전달받아 맵뷰상의 오버레이 레이어의 zPosition으로 반환한다. |
NMapPOIitem
Description
지도 위에 표시되는 오버레이 아이템 클래스이며 NMapPOIdataOverlay 클래스에서 표시하는 기본 객체로 사용됩니다. 지도에 표시되는 마커 이미지는 NMapPOIdataOverlayDelegate 프로토콜을 통해서 전달합니다.Initializer
NMapPOIdataOverlay 클래스의 메서드를 사용하여 아이템 추가 시 내부적으로 생성됩니다.Constants
현재 위치 오버레이 객체를 표시하기 위하여 미리 정의된 마커의 종류는 아래와 같습니다. 지도 라이브러리에서 현재 위치 표시 기능을 사용하는 경우에는 애플리케이션에서 해당 마커의 이미지를 제공해야 합니다.
구문 | 설명 |
---|---|
NMapPOIflagTypeLocation | 현재 위치를 표시하는 마커 |
NMapPOIflagTypeLocationOff | 현재 위치를 표시하는 마커 |
NMapPOIflagTypeCompass | 현재 위치 마커 위에 나침반 방향을 표시하는 마커 |
오버레이 아이템의 속성은 아래와 같습니다.
구문 | 설명 |
---|---|
NMapPOIflagModeTouch | 터치 및 드래그 이벤트로 위치 변경이 가능한 아이템 |
NMapPOIflagModeDrag | 드래그 이벤트로 위치 변경이 가능한 아이템 |
NMapPOIflagModeFixed | 지도 상에 위치가 고정된 아이템 |
NMapPOIflagModeDispatch | 아이템 선택 시 터치 이벤트를 직접 처리하기 위한 아이템 |
- Properties
구문 | 설명 |
---|---|
@property (nonatomic, readonly) CGRect frame | 마커가 화면에 표시되는 영역을 반환한다. |
@property (nonatomic, assign, getter=isHidden) BOOL hidden | 마커의 표시 여부를 설정/반환한다. |
@property (nonatomic, retain) NSString *title | 마커의 타이틀을 설정/반환한다. 타이틀을 설정하지 않으면 마커 선택 시 말풍선이 표시되지 않는다. |
@property (nonatomic, assign) NGeoPoint location | 마커의 좌표를 설정/반환한다. |
@property (nonatomic, assign) int poiFlagType | 마커의 종류를 설정/반환한다. |
@property (nonatomic, retain) id object | 사용자 객체를 설정/반환한다. |
@property (nonatomic, assign) BOOL hasRightCalloutAccessory | 마커 선택 시 표시되는 말풍선에서 오른쪽 아이콘 표시 여부를 설정/반환한다. |
- Methods
구문 | 설명 |
---|---|
(void) setPOIflagMode: (NMapPOIflagMode)mode | 마커의 속성을 변경한다. |
NMapPOIdataOverlay
Description
여러 개의 오버레이 아이템을 포함할 수 있는 오버레이 클래스이며 NMapOverlay 클래스를 상속합니다. 그룹 오버레이 아이템을 효과적으로 처리할 수 있는 기능을 제공합니다.Initializer
NMapOverlayManager 클래스의 createPOIdataOverlay 메서드 호출 시 내부적으로 생성됩니다.Properties
구문 | 설명 |
---|---|
@property (nonatomic, readonly) int idxFocusedPOIitem | 선택된 아이템의 인덱스를 반환한다. |
@property (nonatomic, readonly) BOOL focusedBySelectItem | 터치 이벤트에 의해서 선택된 아이템인 경우에는 false를 반환하고 그 이외에는 true를 반환한다. |
- Methods
구문 | 설명 |
---|---|
(void) initPOIdata:(int)countOfPOIdata | POI 아이템 추가를 시작한다. |
(NMapPOIitem ) addPOIitemAtLocation:(NGeoPoint)location title:(NSString )title type:(NMapPOIflagType)poiFlagType iconIndex:(int)iconIndex withObject:(id)object | POI 아이템을 추가한다. 아이템이 표시될 좌표와 마커 종류는 필수 인자이며, title을 nil로 전달하면 마커 선택 시 말풍선이 표시되지 않는다. object는 마커 및 말풍선 선택 시 호출되는 콜백 인터페이스에서 사용하기 위해 전달한다. 반환된 객체로 추가적인 정보를 설정할 수 있다. |
(void) endPOIdata | POI 아이템 추가를 종료한다. |
(int) count; | POI 데이터의 아이템 개수를 반환한다. |
(NSArray *) poiData | POI 데이터를 반환한다. 반환된 배열은 NMapPOIitem 객체로 구성된다. |
(void) selectPOIitemAtIndex:(int)index moveToCenter:(BOOL)moveToCenter | POI 데이터에서 index에 해당하는 아이템을 선택한다. moveToCenter로 선택된 아이템을 화면 중앙에 표시되도록 지도를 이동할지 여부를 설정한다. |
(void) selectPOIitemWithType: (NMapPOIflagType)poiFlagType moveToCenter:(BOOL)moveToCenter | POI 데이터에서 마커 종류와 일치하는 아이템을 선택한다. moveToCenter로 선택된 아이템을 화면 중앙에 표시되도록 지도를 이동할지 여부를 설정한다. |
(void) selectPOIitemWithObject:(id)object moveToCenter:(BOOL)moveToCenter | POI 데이터에서 object를 소유한 아이템을 선택한다. moveToCenter로 선택된 아이템을 화면 중앙에 표시되도록 지도를 이동할지 여부를 설정한다. |
(void) showAllPOIdataAtLevel:(int)zoomLevel | POI 데이터가 모두 화면에 표시되도록 지도 축척 레벨 및 지도 중심을 변경한다. zoomLevel 이 0 이 아니면 지정한 지도 축척 레벨에서 지도 중심만 변경한다. |
(NMapPOIitem ) findPOIitemWithObject: (id)object foundIndex:(int )foundIndex | object를 소유한 POI 아이템을 반환한다. |
(CGRect) frameOfSelectedPOIitem | 선택된 아이템이 화면에서 표시되는 영역을 반환한다. |
(void) deselctFocusedPOIitem | 아이템을 선택 해제한다. |
(void) changeTitleOfPOIitemWithType: (NMapPOIflagType)poiFlagType title:(NSString *)title | *)title 마커 종류가 poiFlagType인 아이템의 타이틀을 변경한다. |
(void) updateImageAtIndex:(int)index | 아이템의 이미지를 업데이트하기 위해 호출한다. |
(BOOL) containsLocation:(NGeoPoint)location | 전체 POI 데이터를 포함하는 영역에 전달된 좌표가 포함되는지 여부를 반환한다. |
(int) indexForAdjacentLocation | 전달된 좌표를 중심으로 반경 이내에 인접한 아이템 |
(NGeoPoint)lonLat withinRadius:(float)radius | 인덱스를 반환한다. |
- Protocol – NMapPOIdataOverlayDelegate
오버레이 아이템 처리 시 호출되는 콜백 프로토콜을 정의합니다.
구문 | 설명 |
---|---|
(UIImage ) onMapOverlay:(NMapPOIdataOverlay )poiDataOverlay imageForOverlayItem: (NMapPOIitem *)poiItem selected:(BOOL)selected | 마커에 해당하는 이미지를 반환한다. 마커 선택 시 표시되는 이미지는 selected 값이 YES인 경우 반환한다. |
(CGPoint) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay anchorPointWithType:(NMapPOIflagType)poiFlagType | 마커의 기준 위치를 설정한다. 범위는 0.0 1.0이며 마커의 왼쪽 하단이 원점이다. |
(UIView) onMapOverlay:(NMapPOIdataOverlay )poiDataOverlay viewForCalloutOverlayItem:(NMapPOIitem )poiItem calloutPosition:(CGPoint )calloutPosition | 마커 선택 시 표시되는 말풍선의 내용을 뷰로 반환한다. poiItem : 선택된 오버레이 아이템 calloutPosition : 말풍선 표시 위치 해당 delegate를 구현하지 않거나 nil을 반환하면 이미지를 반환하는 onMapOverlay:imageForCalloutOverlayItem:...이 호출된다. |
(UIImage) onMapOverlay: (NMapPOIdataOverlay )poiDataOverlay imageForCalloutOverlayItem: (NMapPOIitem )poiItem constraintSize: (CGSize)constraintSize selected:(BOOL)selected imageForCalloutRightAccessory: (UIImage )imageForCalloutRightAccessory calloutPosition: (CGPoint )calloutPosition calloutHitRect:(CGRect )calloutHitRect | 마커 선택 시 표시되는 말풍선의 내용을 이미지로 반환한다. constraintSize : 말풍선 크기 제한 selected : 말풍선 영역 선택 여부 imageForCalloutRightAccessory : 말풍선 오른쪽 아이콘 이미지 calloutPosition : 말풍선 표시 위치 * calloutHitRect : 말풍선 터치 영역 |
(CGPoint) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay calloutOffsetWithType: (NMapPOIflagType)poiFlagType | 마커 선택 시 표시되는 말풍선의 상대 위치를 설정한다. |
(BOOL) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay didChangeSelectedPOIitemAtIndex: (int)index withObject:(id)object | 선택된 아이템이 변경되면 호출된다. |
(BOOL) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay didDeselectPOIitemAtIndex: (int)index withObject:(id)object | 이전에 선택된 아이템이 선택 해제되면 호출된다. |
(BOOL) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay didSelectCalloutOfPOIitemAtIndex: (int)index withObject:(id)object | 마커의 말풍선이 선택되면 호출된다. |
(BOOL) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay hasCalloutRightAccessoryAtIndex: (int)index withObject:(id)object | 마커의 말풍선이 오른쪽 아이콘 이미지를 표시하는지 여부를 반환한다. |
(UIImage ) onMapOverlay:(NMapPOIdataOverlay)poiDataOverlay imageForCalloutRightAccessoryAtIndex:(int)index selected:(BOOL)selected withObject:(id)object | 말풍선에 표시할 오른쪽 아이콘 이미지를 반환한다. |
(void) onMapOverlay:(NMapPOIdataOverlay *)poiDataOverlay didChangePOIitemLocationTo:(NGeoPoint)location withType:(NMapPOIflagType)poiFlagType | 플로팅 아이템의 위치가 변경되면 호출된다. |
NMapPathData
Description
지도 위에 표시되는 경로 선을 관리하는 클래스입니다.Constants
경로 선 스타일에 대한 상수 필드의 설명은 아래와 같습니다.
구문 | 설명 |
---|---|
NMapPathLineTypeSolid | 실선 |
NMapPathLineTypeDash | 점선 |
- Initializer
구문 | 설명 |
---|---|
(id)initWithCapacity:(int)capacity | 경로 데이터의 개수를 인자로 전달한다. |
- Methods
구문 | 설명 |
---|---|
(void) initPathData:(int)count | 경로 데이터 추가를 시작한다. |
(void) addPathPointLongitude:(double)longitude latitude:(double)latitude lineType:(NMapPathLineType)lineType | 경로 데이터의 보간점 좌표를 추가한다. lineType은 NMapPathLineType에서 정의된 값으로 전달한다. lineType을 0으로 전달하면 이전 보간점의 값을 그대로 사용한다. |
(void) endPathData | 경로 데이터 추가를 종료한다. |
NMapPathDataOverlay
Description
경로 데이터를 표시하기 위한 오버레이 클래스이며 NMapOverlay 클래스를 상속합니다. 단순한 경로 데이터 이외에도 폴리곤 및 원 데이터를 표시할 수 있습니다.Initializer
NMapOverlayManager 클래스의 createPathDataOverlay 메서드 호출 시 내부적으로 생성됩니다.Methods
구문 | 설명 |
---|---|
(void) setLineColorWithRed:(float)red green:(float)green blue:(float)blue alpha:(float)alpha | 디폴트 경로 선의 색상 값을 설정한다. |
(void) setLineWidth:(float)width | 디폴트 경로 선의 두께를 설정한다. |
(void) showAllPathDataAtLevel:(int)zoomLevel | 경로 데이터가 모두 화면에 표시되도록 지도 축척 레벨 및 지도 중심을 변경한다. zoomLevel 이 0 이 아니면 지정한 지도 축척 레벨에서 지도 중심만 변경한다. |
(BOOL) containsLocation:(NGeoPoint)location | 전체 경로를 포함하는 영역이 전달된 좌표를 포함하는지 여부를 반환한다. |
NMapOverlayManager
Description
지도 위에 표시되는 모든 오버레이 객체들을 관리합니다.Initializer
NMapView 클래스에서 내부적으로 생성됩니다.Properties
구문 | 설명 |
---|---|
@property (nonatomic, readonly) NMapMyLocationOverlay *myLocationOverlay | 현재 위치 오버레이 객체를 반환한다. |
@property (nonatomic, assign) CALayer *overlayLayer | 지도 위에 표시되는 오버레이 아이템들의 부모 객체를 나타낸다. NMapOverlay <#IOC_Overlay> 클래스를 상속받은 클래스에서 오버레이 아이템을 직접 처리하는 경우 사용한다. |
- Methods
구문 | 설명 |
---|---|
(void) addOverlay:(NMapOverlay *)overlay | 오버레이 객체를 추가한다. |
(void) clearOverlays | 재 위치 오버레이 객체를 제외한 모든 오버레이 객체를 제거한다. |
(void) setMyLocation:(NGeoPoint)location locationAccuracy:(float)locationAccuracy | 전달된 좌표 및 반경으로 현재 위치 오버레이 객체를 생성하여 추가한다. |
(NMapPathDataOverlay ) createPathDataOverlay:(NMapPathData )pathData | 경로 데이터를 인자로 전달하여 NMapPathDataOverlay 객체를 생성하여 추가한다. 반환되는 객체는 호출하는 곳에서 release 해야 한다. |
(NMapPOIdataOverlay *) createPOIdataOverlay NMapPOIdataOverlay | 객체를 생성하여 추가한다. 반환되는 객체는 호출하는 곳에서 release 해야 한다. |
(NMapPOIdataOverlay *) findFocusedPOIdataOverlay | 선택된 NMapPOIdataOverlay 객체를 반환한다. |
(BOOL) hasOverlay:(NMapOverlay *)overlay | 전달된 overlay 객체의 존재 여부를 반환한다. |
(void) releaseOverlay:(NMapOverlay *)overlay | 전달된 overlay 객체를 제거하고 release 한다. |
(void) clearMyLocationOverlay | 현재 위치 오버레이 객체를 제거한다. |
(BOOL) hasMyLocationOverlay | 현재 위치 overlay 객체의 존재 여부를 반환한다. |
(BOOL) canRefreshOverlayData:(BOOL)checkCallout | 오버레이 객체 업데이트 가능 여부를 반환한다. 지도 애니메이션 중에는 false를 반환한다. checkCallout 이 true 이면 말풍선이 표시된 상태에서도 false를 반환한다. |