URL Schemeのご紹介

NAVER MapアプリのURL Schemeを利用すれば、外部のアプリやウェブページからNAVER Mapアプリを実行し、場所表示、検索、経路検索、ナビゲーションなどの様々な地図機能を実行することができます。

URL Schemeの使用

基本情報

NAVER MapアプリのURL Schemeはnmap://で始まり、基本構造は次の通りです。

nmap://actionPath?parameter=value&appname={YOUR_APP_NAME}

actionPath部分には呼び出し機能のタイプを、parameter=value部分には各機能別に必要なパラメータを指定します。詳しい内容は機能別のパラメータの説明をご参考ください。

appname

appnameはURL Schemeを使用するアプリまたはウェブページを識別する文字列です。すべてのURLにはappnameパラメータが必ず含まれなければなりません。次のような値を指定します。

  • Android: アプリのapplicationId
  • iOS: アプリのバンドルID
  • ウェブページ: ウェブページのURL

地図のメイン表示

地図アプリのメイン画面を見せてくれます。

アクションパス

/map
パラメータ
パラメータ タイプ 必須 説明
lat double N 地図の中心緯度
-入力値: 31.43~44.35
-デフォルト値: アプリの従来の状態を維持
lng double N 地図の中心軽度
-入力値: 122.37~132.00
-デフォルト値: アプリの従来の状態を維持
zoom double N 地図のズームレベル
-入力値: 4~20
-デフォルト値: アプリの従来の状態を維持
例題

次は別途のパラメータなしに地図アプリのメイン画面を表示する例題です。

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 検索語
-入力値: URLエンコーディングされた文字列
例題

次は"江南駅"を検索語で入れて地図を検索する例題です。

nmap://search?query=%EA%B0%95%EB%82%A8%EC%97%AD&appname=com.example.myapp

呼び出しの結果は次の通りです。

江南駅を検索した結果

バス検索

検索語に合うバス検索の結果を表示します。

アクションパス
/search/bus
パラメータ
パラメータ タイプ 必須 説明
query string Y バスの番号
-入力値: URLエンコーディングされた文字列
例題

次は"222"番バスを検索する例題です。

nmap://search/bus?query=222&appname=com.example.myapp

呼び出しの結果は次の通りです。

222番バスを検索した結果

場所表示

指定された座標にマーカーを表示します。

アクションパス
/place
パラメータ
パラメータ タイプ 必須 説明
lat double Y 緯度
-入力値: 31.43~44.35
lng double Y 経度
-入力値: 122.37~132.00
name string Y 名前
-入力値: URLエンコーディングされた文字列
例題

次は(37.4979502, 127.0276368)位置に"京畿道城南市盆唐区亭子洞"マーカーを表示する例題です。

nmap://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:

呼び出しの結果は次の通りです。

盆唐区亭子洞をマップの上に表示した結果

経路検索

公共交通機関の経路検索

公共交通機関の経路を検索します。

アクションパス
/route/public
パラメータ

経路検索共通パラメータ項目をご参考ください。

例題

次はソウル大学校からオリンピック公園まで公共交通機関で行く経路を検索する例題です。

nmap://route/public?slat=37.4640070&slng=126.9522394&sname=%EC%84%9C%EC%9A%B8%EB%8C%80%ED%95%99%EA%B5%90&dlat=37.5209436&dlng=127.1230074&dname=%EC%98%AC%EB%A6%BC%ED%94%BD%EA%B3%B5%EC%9B%90&appname=com.example.myapp

呼び出しの結果は次の通りです。

ソウル大学校からオリンピック公園までの公共交通機関の経路を検索した結果

自動車の経路検索

自動車の経路を検索します。

アクションパス
/route/car
パラメータ

経路検索共通パラメータ項目をご参考ください。

例題

次はソウル大学校からオリンピック公園まで自動車で行く経路を検索する例題です。

nmap://route/car?slat=37.4640070&slng=126.9522394&sname=%EC%84%9C%EC%9A%B8%EB%8C%80%ED%95%99%EA%B5%90&dlat=37.5209436&dlng=127.1230074&dname=%EC%98%AC%EB%A6%BC%ED%94%BD%EA%B3%B5%EC%9B%90&appname=com.example.myapp

呼び出しの結果は次の通りです。

ソウル大学校からオリンピック公園までの経路を検索した結果

次はグリーンファクトリーからソウル大学校を経由して城南市庁まで自動車で行く経路を検索する例題です。

nmap://route/car?slat=37.3595953&slng=127.1053971&sname=%EA%B7%B8%EB%A6%B0%ED%8C%A9%ED%86%A0%EB%A6%AC&secoords=37.359761,127.10527&dlng=127.1267772&dlat=37.4200267&dname=%EC%84%B1%EB%82%A8%EC%8B%9C%EC%B2%AD&decoords=37.4189564,127.1256827&v1lng=126.9522394&v1lat=37.464007&v1name=%20%EC%84%9C%EC%9A%B8%EB%8C%80%ED%95%99%EA%B5%90&v1ecoords=37.466358,126.948357&appname=com.example.myapp

呼び出しの結果は次の通りです。

グリーンファクトリーからソウル大学校を経由して城南市庁まで行く経路を検索した結果

徒歩の経路検索

徒歩の経路を検索します。

アクションパス
/route/walk
パラメータ

経路検索共通パラメータ項目をご参考ください。

例題

次はソウル大学校から東遠落星垈アパートまで徒歩で行く経路を検索する例題です。

nmap://route/walk?slat=37.4640070&slng=126.9522394&sname=%EC%84%9C%EC%9A%B8%EB%8C%80%ED%95%99%EA%B5%90&dlat=37.4764356&dlng=126.9618302&dname=%EB%8F%99%EC%9B%90%EB%82%99%EC%84%B1%EB%8C%80%EC%95%84%ED%8C%8C%ED%8A%B8&appname=com.example.myapp

呼び出しの結果は次の通りです。

ソウル大学校から東遠落星垈アパートまでの徒歩の経路を検索した結果

自転車の経路検索

自転車の経路を検索します。

アクションパス
/route/bicycle
パラメータ

経路検索共通パラメータ項目をご参考ください。

例題

次はソウル大学校からオリンピック公園まで自転車で行く経路を検索する例題です。

nmap://route/bicycle?slat=37.4640070&slng=126.9522394&sname=%EC%84%9C%EC%9A%B8%EB%8C%80%ED%95%99%EA%B5%90&dlat=37.5209436&dlng=127.1230074&dname=%EC%98%AC%EB%A6%BC%ED%94%BD%EA%B3%B5%EC%9B%90&appname=com.example.myapp

呼び出しの結果は次の通りです。

ソウル大学校からオリンピック公園までの自転車の経路を検索した結果

ナビゲーション

ナビゲーションの経路を検索します。

アクションパス
/navigation
パラメータ

経路検索共通パラメータ項目をご参考ください。

例題

次は安全運転モードでナビゲーション画面を表示する例題です。

nmap://navigation?&appname=com.example.myapp

呼び出しの結果は次の通りです。

ナビゲーションの初期画面

次はユーザーの現在の位置からオリンピック公園までのナビゲーションの経路を検索する例題です。

nmap://navigation?dlat=37.5209436&dlng=127.1230074&dname=%EC%98%AC%EB%A6%BC%ED%94%BD%EA%B3%B5%EC%9B%90&appname=com.example.myapp

呼び出しの結果は次の通りです。

ユーザーの現在の位置からオリンピック公園までのナビゲーションの経路を検索した結果

経路検索共通パラメータ

経路検索(/route)とナビゲーション(/navigation)で使用する共通パラメータです。

パラメータ タイプ 必須 説明
slat double N 出発地の緯度
-入力値: 31.43~44.35
-デフォルト値: ユーザーの現在の位置を使用
slng double N 出発地の軽度
-入力値: 122.37~132.00
-デフォルト値: ユーザーの現在の位置を使用
sname string N 出発地の名前
-入力値: URLエンコーディングされた文字列
デフォルト値: ユーザーの現在の位置を使用
dlat double Y 到着地の緯度
-入力値: 31.43~44.35
dlng double Y 到着地の軽度
-入力値: 122.37~132.00
dname string N 到着地の名前
-入力値: URLエンコーディングされた文字列
-デフォルト値: 到着地の住所を表示
v1lat double N 経由地1の緯度
-入力値: 31.43~44.35
-デフォルト値: 経由地なし
v1lng double N 経由地1の軽度
-入力値: 122.37~132.00
-デフォルト値: 経由地なし
v1name string N 経由地1の名前
-入力値: URLエンコーディングされた文字列
-デフォルト値: 経由地なし
v2lat double N 経由地2の緯度
-入力値: 31.43~44.35
-デフォルト値: 経由地なし
v2lng double N 経由地2の軽度
-入力値: 122.37~132.00
-デフォルト値: 経由地なし
v2name string N 経由地2の名前
-入力値: URLエンコーディングされた文字列
-デフォルト値: 経由地なし
v3lat double N 経由地3の緯度
-入力値: 31.43~44.35
-デフォルト値: 経由地なし
v3lng double N 経由地3の軽度
-入力値: 122.37~132.00
-デフォルト値: 経由地なし
v3name string N 経由地3の名前
-入力値: URLエンコーディングされた文字列
-デフォルト値: 経由地なし
v4lat double N 経由地4の緯度
-入力値: 31.43~44.35
-デフォルト値: 経由地なし
v4lng double N 経由地4の軽度
-入力値: 122.37~132.00
-デフォルト値: 経由地なし
v4name string N 経由地4の名前
-入力値: URLエンコーディングされた文字列
-デフォルト値: 経由地なし
v5lat double N 経由地5の緯度
-入力値: 31.43~44.35
-デフォルト値: 経由地なし
v5lng double N 経由地5の軽度
-入力値: 122.37~132.00
-デフォルト値: 経由地なし
v5name string N 経由地5の名前
-入力値: URLエンコーディングされた文字列
-デフォルト値: 経由地なし

URL Schemeの使用における処理

ウェブページやアプリでNAVER Map URL Schemeを呼び出すと、NAVER Mapアプリが開かれ、URL Schemeが処理されます。この際、ユーザーの機器にNAVER Mapアプリがインストールされていない場合は、App StoreあるいはGoogle PlayのNAVER Mapアプリインストールページに移動してユーザーがアプリをインストールできるようにしなければなりません。

モバイルアプリ

Android

次のようにqueryIntentActivities)を呼び出してNAVER Mapアプリがインストールされているかを確認し、インストールされていない場合は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

info.plistにLSApplicationQueriesSchemesを作成してnmapを追加します。

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>nmap</string>
</array>

次のようにcanOpenURLを呼び出してNAVER Mapアプリがインストールされているかを確認し、インストールされていない場合は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)
}

モバイルウェブページ

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を処理するためには追加作業が必要です。

Android

次のようにWebViewClientshouldOverrideUrlLoading)をオーバーライドして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

次のようにWKWebviewdecidePolicyForに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)
}

に対する検索結果は~件です。 ""

    に対する検索結果がありません。 ""

    処理中...