소개

네이버 지도 SDK는 네이버 지도, AWAY, AKI 등 네이버의 여러 서비스에서 사용 중인 지도 엔진입니다. 대규모 사용자가 이용하는 서비스에 다년간 적용되어 기능과 안정성이 보장됩니다. 또한 개발자 친화적인 API를 제공하므로 SDK가 제공하는 강력한 기능을 쉽게 사용할 수 있습니다.

강력한 기능

네이버 지도 SDK는 네이버 지도같은 복잡한 서비스에서 요구되는 다양한 기능을 모두 수용하는 강력한 기능을 제공합니다.

풀 벡터 렌더링

모든 화면을 풀 벡터 렌더링하므로 지도를 확대하더라도 뭉개지는 현상이 일어나지 않습니다. 지도를 기울이거나 회전하더라도 항상 최적의 심벌이 서로 겹치지 않게 배치되며 정면을 향해 렌더링됩니다. 화면에 디스플레이되는 각종 속성을 동적으로 변경할 수도 있습니다.

풀 벡터 렌더링 - 1 풀 벡터 렌더링 - 2

다양한 지도 유형과 레이어

일반 지도, 위성 지도, 위성 겹쳐보기 지도, 지형도, 내비게이션 지도 등 다섯 가지의 배경 지도 유형을 제공합니다. 또한 건물, 실시간 교통정보, 대중교통, 자전거, 등산로, 지적편집도 등 여섯 가지의 레이어 그룹을 배경 지도와 함께 표현할 수 있습니다. 실내지도 기능도 빌트인으로 제공하며, 내비게이션용 야간 모드도 지원합니다.

지도 유형 레이어 실내지도

다양한 오버레이

마커, 정보 창, 바닥 오버레이, 셰이프 등 널리 사용되는 오버레이는 물론, 위치, 경로선, 화살표 등 특화된 오버레이도 다수 제공합니다. 특히 마커는 캡션, 서브 캡션, 겹침 제어 등 강력한 기능을 제공합니다.

오버레이

자연스러운 제스처

지도를 조작하는 사용자의 손가락을 정확히 따라가는 자연스러운 제스처 조작을 지원합니다. 스크롤, 핀치 등 기본적인 제스처 외에도 더블 탭, 두 손가락 탭, 한 손가락 줌 등 편리한 제스처를 제공합니다. 모든 제스처 조작에는 미세하기 조정된 관성 효과가 동반되며, 관성 효과를 개발자가 직접 조정할 수도 있습니다.

강력한 이벤트 시스템

오버레이, 지도뿐만 아니라 각 심벌도 탭할 수 있고 이벤트를 받을 수 있습니다. 또한 이벤트 핸들러를 등록하지 않으면 덮힌 요소가 이벤트를 받고, 이벤트를 소비하지 않으면 지도로 이벤트가 전파되는 등 진보한 이벤트 전파 시스템을 사용합니다.

쉬운 개발

네이버 지도 SDK는 개발자 친화적이고 직관적인 API를 제공하므로 SDK를 사용한 앱을 개발하기 쉽습니다.

Swift 호환

모든 API에 널 가능성 애너테이션이 붙어 있고 속성(property)의 명칭이 일관적으로 부여되어 있어 Swift 프로젝트에서도 잘 호환됩니다.

현대적인 API

불변 객체, 열거형 사용 등 최신 API 패러다임을 적용해 코드가 간결하고 직관적입니다.

let cameraUpdate = NMFCameraUpdate(scrollTo: NMGLatLng(lat: 37.5666102, lng: 126.9783881))
cameraUpdate.reason = 3
cameraUpdate.animation = .fly
cameraUpdate.animationDuration = 2
naverMap.moveCamera(cameraUpdate, completion: { (isCancelled) in
    if isCancelled {
        print("카메라 이동 취소")
    } else {
        print("카메라 이동 성공")
    }
})

Swift

let cameraUpdate = NMFCameraUpdate(scrollTo: NMGLatLng(lat: 37.5666102, lng: 126.9783881))
cameraUpdate.reason = 3
cameraUpdate.animation = .fly
cameraUpdate.animationDuration = 2
naverMap.moveCamera(cameraUpdate, completion: { (isCancelled) in
    if isCancelled {
        print("카메라 이동 취소")
    } else {
        print("카메라 이동 성공")
    }
})

Objective-C

NMFCameraUpdate *cameraUpdate = [NMFCameraUpdate cameraUpdateWithScrollTo:NMGLatLngMake(37.5666102, 126.9783881)];
cameraUpdate.reason = 3;
cameraUpdate.animation = NMFCameraUpdateAnimationFly;
cameraUpdate.animationDuration = 2;
[naverMap moveCamera:update completion:^(bool isCancelled) {
    if (isCancelled) {
        NSLog(@"카메라 이동 취소");
    } else {
        NSLog(@"카메라 이동 성공");
    }
}];

직관적인 API

객체가 필요하면 생성하고, 이벤트 처리가 필요하면 그 객체에 이벤트 핸들러를 달면 되는 등 직관적으로 예상할 수 있는 형태의 API 구조를 갖추고 있습니다.

let marker = NMFMarker(position: NMGLatLng(lat: 37.5670135, lng: 126.9783740))
marker.touchHandler = { (overlay) in
    print("마커 클릭됨")
    return true
}
marker.mapView = naverMap;

Swift

let marker = NMFMarker(position: NMGLatLng(lat: 37.5670135, lng: 126.9783740))
marker.touchHandler = { (overlay) in
    print("마커 클릭됨")
    return true
}
marker.mapView = naverMap;

Objective-C

NMFMarker marker = [NMFMarker markerWithPosition:NMGLatLngMake(37.5670135, 126.9783740)];
marker.touchHandler = ^BOOL(NMFOverlay *overlay) {
    NSLog(@"마커 클릭됨");
    return YES;
};
marker.mapView = naverMap;

양질의 문서와 데모 앱

개발 가이드, API 레퍼런스, 데모 앱 등 다양하고 수준 높은 자료가 제공되어 개발에 참고할 수 있습니다.

results matching ""

    No results matching ""