- 인쇄
- PDF
지도 앱 연동 URL Scheme
- 인쇄
- PDF
네이버 지도 앱 URL Scheme을 사용하여 사용자 앱이나 웹 페이지에서 네이버 지도 앱 호출함으로써 네이버 지도 기능을 사용할 수 있습니다.
구문
네이버 지도 앱 URL Scheme은 nmap://
으로 시작하며, 구문의 형식은 다음과 같습니다.
구성 요소 | 설명 | 필수 여부 |
---|---|---|
nmap:// | 네이버 지도 앱 접근 URL Scheme | 필수 |
actionPath | 호출 액션 | 필수 |
parameter=value | 호출 액션에 따른 입력 파라미터와 입력 값 | 액션에 따라 다름. 자세한 내용은 URL Scheme 사용 확인 |
appname | URL Scheme을 사용하는 앱 또는 웹 페이지를 식별하는 문자열
| 필수. 모든 URL에는 appname 파라미터가 반드시 포함되어야 함 |
사전 설정
네이버 지도 URL Scheme은 사용자의 기기에 네이버 지도 앱이 설치되어 있어야만 사용 가능합니다. 따라서 네이버 지도 앱이 설치되어 있지 않을 경우, App Store나 Google Play에서 네이버 지도 앱을 설치할 수 있도록 코드를 작성해야 합니다. 사용 환경별(모바일 앱, 모바일 웹, 인앱 브라우저) 작성해야 하는 코드는 다음과 같습니다.
모바일 앱
네이버 지도 URL Scheme을 사용하기 위해 모바일 앱에서 작성해야 하는 코드는 다음과 같습니다.
Android
다음 예제 코드와 같이 queryIntentActivities
를 호출해 네이버 지도 앱이 설치되어 있는지 확인하고, 설치되어 있지 않으면 Google Play로 이동합니다.
String url = "nmap://actionPath?parameter=value&appname={YOUR_APP_NAME}";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.addCategory(Intent.CATEGORY_BROWSABLE);
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (list == null || list.isEmpty()) {
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.nhn.android.nmap")));
} else {
context.startActivity(intent);
}
iOS
iOS 모바일 앱에서 작성해야 할 코드는 다음과 같습니다.
- info.plist에
LSApplicationQueriesSchemes
를 생성하고 nmap을 추가해 주십시오.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>nmap</string>
</array>
- 다음과 같이
canOpenURL
을 호출해 네이버 지도 앱이 설치되어 있는지 확인하고, 설치되어 있지 않으면 App Store로 이동해 주십시오.
let url = URL(string: "nmap://actionPath?parameter=value&appname={YOUR_APP_NAME}")!
let appStoreURL = URL(string: "http://itunes.apple.com/app/id311867728?mt=8")!
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url)
} else {
UIApplication.shared.open(appStoreURL)
}
모바일 웹
모바일 웹에서 네이버 지도 URL Scheme을 사용하려면 네이버 지도 앱을 설치하도록 구현해야 합니다.
Android
인텐트 URL을 사용하면 앱이 설치되어 있지 않은 경우 자동으로 Google Play 스토어로 이동합니다. 인텐트 URL의 구조는 다음과 같습니다.
intent://actionPath?parameter=value&appname={YOUR_APP_NAME}#Intent;scheme=nmap;action=android.intent.action.VIEW;category=android.intent.category.BROWSABLE;package=com.nhn.android.nmap;end
다음은 (37.4979502, 127.0276368)
위치에 '경기도 성남시 분당구 정자동' 마커를 표시하는 URL Scheme을 인텐트 URL로 나타낸 예제입니다.
intent://place?lat=37.4979502&lng=127.0276368&name=%EA%B2%BD%EA%B8%B0%EB%8F%84%20%EC%84%B1%EB%82%A8%EC%8B%9C%20%EB%B6%84%EB%8B%B9%EA%B5%AC%20%EC%A0%95%EC%9E%90%EB%8F%99&appname=com.example.myapp#Intent;scheme=nmap;action=android.intent.action.VIEW;category=android.intent.category.BROWSABLE;package=com.nhn.android.nmap;end
iOS
다음과 같이 웹 페이지에서 JavaScript 타이머를 이용해 App Store로 분기시키는 방법을 사용합니다.
<script>
function openNaverMapApp(url) {
var clickedAt = +new Date();
location.href = url;
setTimeout(function() {
if (+new Date() - clickedAt < 2000) {
location.href = 'http://itunes.apple.com/app/id311867728?mt=8';
}
}, 1500);
}
window.onload = function() {
openNaverMapApp("nmap://actionPath?parameter=value&appname={YOUR_APP_NAME}");
};
</script>
인앱 브라우저
인앱 브라우저에서 URL Scheme을 사용하려면 다음과 같이 URL Scheme 처리 코드를 추가해야 합니다.
Android
다음과 같이 WebViewClient
의 shouldOverrideUrlLoading
을 오버라이드 하여 URL Scheme 처리 코드를 추가합니다.
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("intent:")) {
Intent intent;
try {
intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
} catch (URISyntaxException e) {
return false;
}
if (TextUtils.isEmpty(intent.getPackage())) {
return false;
}
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (list == null || list.isEmpty()) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + intent.getPackage())));
} else {
startActivity(intent);
}
return true;
}
return false;
}
iOS
다음과 같이 WKWebview
의 decidePolicyFor
에 URL Scheme 처리 코드를 추가합니다.
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if let url = navigationAction.request.url {
if url.scheme == "nmap" {
UIApplication.shared.open(url)
decisionHandler(.cancel)
return
}
}
decisionHandler(.allow)
}
URL Scheme 사용
네이버 지도 앱 URL Scheme이 제공하는 액션에 대해 설명합니다. 이 가이드를 통해 학습하게 되는 액션 사용법은 다음과 같습니다.
길찾기(/route)와 내비게이션(/navigation)에서 사용하는 공통 파라미터는 본 아티클의 경로 탐색 공통 파라미터를 참조해 주십시오.
지도 메인 표시
네이버 지도 앱의 메인 화면을 보여줍니다.
액션 경로
/map
파라미터
파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
lat | double | N | 지도의 중심 위도
|
lng | double | N | 지도의 중심 경도
|
zoom | double | N | 지도의 줌 레벨
|
사용 예제
지도 앱 메인 화면 표시
다음은 입력 파라미터 없이 지도 앱의 메인 화면을 표시하는 예제입니다.
nmap://map?&appname=com.example.myapp
호출 결과는 다음과 같습니다.
중심 좌표 및 줌 레벨 반영
다음은 지도의 중심점을 (37.4979502, 127.0276368)
, 줌 레벨을 20으로 지정해 지도 앱의 메인 화면을 표시하는 예제입니다.
nmap://map?lat=37.4979502&lng=127.0276368&zoom=20&appname=com.example.myapp
호출 결과는 다음과 같습니다.
통합 검색
검색어에 맞는 지도 검색 결과를 보여줍니다.
액션 경로
/search
파라미터
파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
query | string | Y | 검색어
|
사용예제
다음은 '강남역'을 검색어로 넣어 지도를 검색하는 예제입니다.
nmap://search?query=%EA%B0%95%EB%82%A8%EC%97%AD&appname=com.example.myapp
호출 결과는 다음과 같습니다.
버스 검색
검색어에 맞는 버스 검색 결과를 보여줍니다.
액션 경로
/search/bus
파라미터
파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
query | string | Y | 버스 번호
|
사용예제
다음은 222번 버스를 검색하는 예제입니다.
nmap://search/bus?query=222&appname=com.example.myapp
호출 결과는 다음과 같습니다.
마커 표시
지정된 좌표에 마커를 표시합니다.
액션 경로
/place
파라미터
파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
lat | double | Y | 위도
|
lng | double | Y | 경도
|
name | string | Y | 이름
|
사용 예제
다음은 (37.3677345,127.1083617)
위치에 '경기도 성남시 분당구 정자동' 마커를 표시하는 예제입니다.
호출 결과는 다음과 같습니다.
대중교통 길찾기
대중교통 길찾기를 수행합니다.
액션 경로
/route/public
파라미터
경로 탐색 공통 파라미터 항목을 참조해 주십시오.
사용 예제
다음은 서울대학교에서 올림픽 공원까지 대중교통으로 가는 경로를 탐색하는 예제입니다.
호출 결과는 다음과 같습니다.
자동차 길찾기
자동차 길찾기를 수행합니다.
액션 경로
/route/car
파라미터
경로 탐색 공통 파라미터 항목을 참조해 주십시오.
사용 예제
서울대학교에서 올림픽 공원까지 자동차 길찾기 예제
다음은 서울대학교에서 올림픽 공원까지 자동차로 가는 경로를 탐색하는 예제입니다.
호출 결과는 다음과 같습니다.
경유지가 있을 경우 자동차 길찾기 예제
다음은 그린팩토리에서 서울대학교를 경유해 성남시청까지 자동차로 가는 경로를 탐색하는 예제입니다.
호출 결과는 다음과 같습니다.
도보 길찾기
도보 길찾기를 수행합니다.
액션 경로
/route/walk
파라미터
경로 탐색 공통 파라미터 항목을 참조해 주십시오.
사용 예제
다음은 서울대학교에서 동원 낙성대 아파트까지 도보로 가는 경로를 탐색하는 예제입니다.
호출 결과는 다음과 같습니다.
자전거 길찾기
자전거 길찾기를 수행합니다.
액션 경로
/route/bicycle
파라미터
경로 탐색 공통 파라미터 항목을 참조해 주십시오.
사용 예제
다음은 서울대학교에서 올림픽 공원까지 자전거로 가는 경로를 탐색하는 예제입니다.
호출 결과는 다음과 같습니다.
내비게이션
내비게이션 경로를 탐색합니다.
액션 경로
/navigation
파라미터
경로 탐색 공통 파라미터 항목을 참조해 주십시오.
사용 예제
안전 운행 모드 내비게이션
다음은 안전 운행 모드로 내비게이션 화면을 표시하는 예제입니다.
nmap://navigation?&appname=com.example.myapp
호출 결과는 다음과 같습니다.
현재 위치에서 목적지까지 내비게이션
다음은 사용자의 현재 위치로부터 올림픽 공원까지 내비게이션 경로를 탐색하는 예제입니다.
호출 결과는 다음과 같습니다.
경로 탐색 공통 파라미터
길찾기(/route
)와 내비게이션(/navigation
)에서 사용하는 공통 파라미터입니다.
파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
slat | double | N | 출발지 위도
|
slng | double | N | 출발지 경도
|
sname | string | N | 출발지 이름
|
dlat | double | Y | 도착지 위도
|
dlng | double | Y | 도착지 경도
|
dname | string | N | 도착지 이름
|
v1lat | double | N | 경유지 1 위도
|
v1lng | double | N | 경유지 1 경도
|
v1name | string | N | 경유지 1 이름
|
v2lat | double | N | 경유지 2 위도
|
v2lng | double | N | 경유지 2 경도
|
v2name | string | N | 경유지 2 이름
|
v3lat | double | N | 경유지 3 위도
|
v3lng | double | N | 경유지 3 경도
|
v3name | string | N | 경유지 3 이름
|
v4lat | double | N | 경유지 4 위도
|
v4lng | double | N | 경유지 4 경도
|
v4name | string | N | 경유지 4 이름
|
v5lat | double | N | 경유지 5 위도
|
v5lng | double | N | 경유지 5 경도
|
v5name | string | N | 경유지 5 이름
|