マップアプリ連携 URL Scheme
    • PDF

    マップアプリ連携 URL Scheme

    • PDF

    Article Summary

    Classic/VPC環境で利用できます。

    NAVERマップアプリの URL Schemeを使用して、ユーザーアプリやウェブページから NAVERマップアプリを呼び出すことで、NAVERマップ機能を使用できます。

    構文

    NAVERマップアプリの URL Schemeは nmap://で始まり、構文の形式は次の通りです。

    naverapp-urlscheme-syntax

    構成要素説明要否
    nmap://NAVERマップアプリアクセス URL Scheme必須
    actionPath呼び出しアクション必須
    parameter=value呼び出しアクションによる入力パラメータと入力値アクションによって異なる。詳細は、URL Scheme を使用するを確認
    appnameURL Schemeを使用するアプリまたはウェブページを識別する文字列
  • Androidアプリ: アプリの applicationId
  • iOS アプリ: アプリのバンドル ID
  • モバイルウェブ: ウェブページの URL
  • 必須。すべての URLには、appnameパラメータを必ず含めること

    事前設定

    NAVERマップの URL Schemeは、ユーザーのデバイスに NAVERマップアプリがインストールされている場合にのみ使用できます。そのため、NAVERマップアプリがインストールされていない場合、App Storeや Google Playから NAVERマップアプリをインストールできるようにコードを作成する必要があります。動作環境別(モバイルアプリ、モバイルウェブ、アプリ内ブラウザ)に作成するコードは、次の通りです。

    モバイルアプリ

    NAVERマップの URL Schemeを使うためにモバイルアプリで作成するコードは、次の通りです。

    Android

    次のサンプルコードのように queryIntentActivitiesを呼び出して NAVERマップアプリがインストールされているか確認し、インストールされていない場合は 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モバイルアプリで作成するコードは、次の通りです。

    1. Info.plistに LSApplicationQueriesSchemesを作成し、nmapを追加します。
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>nmap</string>
    </array>
    
    1. 次のように canOpenURLを呼び出して NAVERマップアプリがインストールされているか確認し、インストールされていない場合は 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)
    }
    

    モバイルウェブ

    モバイルウェブで NAVERマップの URL Schemeを使うためには、NAVERマップアプリをインストールするように実装する必要があります。

    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

    以下のように 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)
    }
    

    URL Scheme を使用する

    NAVERマップアプリの URL Schemeが提供するアクションについて説明します。このガイドで学習するアクションの使い方は、次の通りです。

    参考

    ルート検索(/route)とナビゲーション(/navigation)で使用する共通パラメータは、本記事のルート検索共通パラメータをご参照ください。

    マップのメイン画面表示

    NAVERマップアプリのメイン画面を表示します。

    アクションパス

    /map
    

    パラメータ

    パラメータタイプ要否説明
    latdoubleNマップの中心緯度
    -入力値: 31.43 ~ 44.35
    -デフォルト値: アプリの既存ステータスを維持
    lngdoubleNマップの中心経度
    -入力値: 122.37 ~ 132.00
    -デフォルト値: アプリの既存ステータスを維持
    zoomdoubleNマップのズームレベル
    -入力値: 4 ~ 20
    -デフォルト値: アプリの既存ステータスを維持

    ユースケース

    マップアプリのメイン画面表示
    以下は、入力パラメータなしでマップアプリのメイン画面を表示するユースケースです。

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

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

    url-scheme-map-no-parameter_ja

    中心座標とズームレベルの反映
    以下はマップの中心点を (37.4979502, 127.0276368)、ズームレベルを20に指定してマップアプリのメイン画面を表示するユースケースです。

    nmap://map?lat=37.4979502&lng=127.0276368&zoom=20&appname=com.example.myapp

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

    url-scheme-map-parameter_ja

    統合検索

    検索キーワードに合ったマップ検索結果を表示します。

    アクションパス

    /search
    

    パラメータ

    パラメータタイプ要否説明
    querystringY検索キーワード
    -入力値: URLエンコードされた文字列

    ユースケース

    以下は、「江南駅」を検索キーワードにしてマップを検索するユースケースです。

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

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

    url-scheme-search-normal_ja

    バス検索

    検索キーワードに合ったバス検索結果を表示します。

    アクションパス

    /search/bus
    

    パラメータ

    パラメータタイプ要否説明
    querystringYバス番号
    -入力値: URLエンコードされた文字列

    ユースケース

    以下は、「222」番バスを検索するユースケースです。

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

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

    url-scheme-search-bus_ja

    マーカー表示

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

    アクションパス

    /place
    

    パラメータ

    パラメータタイプ要否説明
    latdoubleY緯度
    -入力値: 31.43 ~ 44.35
    lngdoubleY経度
    -入力値: 122.37 ~ 132.00
    namestringY名前
    -入力値: URLエンコードされた文字列

    ユースケース

    以下は、(37.3677345,127.1083617)の位置に「京畿道 城南市 盆唐区 貞子洞」のマーカーを表示するユースケースです。

    nmap://place?lat=37.3677345&lng=127.1083617&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

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

    url-scheme-place_ja

    公共交通ルート検索

    公共交通ルート検索を実行します。

    アクションパス

    /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

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

    url-scheme-route-public_ja

    自動車ルート検索

    自動車ルート検索を実行します。

    アクションパス

    /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

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

    url-scheme-route-car-1_ja

    経由地がある場合の自動車ルート検索のユースケース
    以下は、グリーンファクトリーからソウル大学校を経由して城南市役所まで自動車で行くルートを検索するユースケースです。

    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

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

    url-scheme-route-car-2_ja

    徒歩ルート検索

    徒歩ルート検索を実行します。

    アクションパス

    /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

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

    url-scheme-route-walk_ja

    自転車ルート検索

    自転車ルート検索を実行します。

    アクションパス

    /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

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

    url-scheme-route-bicycle_ja

    ナビゲーション

    ナビゲーションルートを検索します。

    アクションパス

    /navigation
    

    パラメータ

    ルート検索共通パラメータの項目をご参照ください。

    ユースケース

    安全運転モードのナビゲーション
    以下は、安全運転モードでナビゲーション画面を表示するユースケースです。

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

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

    url-scheme-navi-1_ko

    現在地から目的地までのナビゲーション
    以下は、ユーザーの現在地からオリンピック公園までのナビゲーションルートを検索するユースケースです。

    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

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

    url-scheme-navi-2_ja

    ルート検索共通パラメータ

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

    パラメータタイプ要否説明
    slatdoubleN出発地の緯度
    -入力値: 31.43 ~ 44.35
    -デフォルト値: ユーザーの現在地を使用
    slngdoubleN出発地の経度
    -入力値: 122.37 ~ 132.00
    -デフォルト値: ユーザーの現在地を使用
    snamestringN出発地名
    -入力値: URLエンコードされた文字列
    -デフォルト値: ユーザーの現在地を使用
    dlatdoubleY目的地の緯度
    -入力値: 31.43 ~ 44.35
    dlngdoubleY目的地の経度
    -入力値: 122.37 ~ 132.00
    dnamestringN目的地名
    -入力値: URLエンコードされた文字列
    -デフォルト値: 目的地の住所を表示
    v1latdoubleN経由地1の緯度
    -入力値: 31.43 ~ 44.35
    -デフォルト値: 経由地なし
    v1lngdoubleN経由地1の経度
    -入力値: 122.37 ~ 132.00
    -デフォルト値: 経由地なし
    v1namestringN経由地1の名前
    -入力値: URLエンコードされた文字列
    -デフォルト値: 経由地なし
    v2latdoubleN経由地2の緯度
    -入力値: 31.43 ~ 44.35
    -デフォルト値: 経由地なし
    v2lngdoubleN経由地2の経度
    -入力値: 122.37 ~ 132.00
    -デフォルト値: 経由地なし
    v2namestringN経由地2の名前
    -入力値: URLエンコードされた文字列
    -デフォルト値: 経由地なし
    v3latdoubleN経由地3の緯度
    -入力値: 31.43 ~ 44.35
    -デフォルト値: 経由地なし
    v3lngdoubleN経由地3の経度
    -入力値: 122.37 ~ 132.00
    -デフォルト値: 経由地なし
    v3namestringN経由地3の名前
    -入力値: URLエンコードされた文字列
    -デフォルト値: 経由地なし
    v4latdoubleN経由地4の緯度
    -入力値: 31.43 ~ 44.35
    -デフォルト値: 経由地なし
    v4lngdoubleN経由地4の経度
    -入力値: 122.37 ~ 132.00
    -デフォルト値: 経由地なし
    v4namestringN経由地4の名前
    -入力値: URLエンコードされた文字列
    -デフォルト値: 経由地なし
    v5latdoubleN経由地5の緯度
    -入力値: 31.43 ~ 44.35
    -デフォルト値: 経由地なし
    v5lngdoubleN経由地5の経度
    -入力値: 122.37 ~ 132.00
    -デフォルト値: 経由地なし
    v5namestringN経由地5の名前
    -入力値: URLエンコードされた文字列
    -デフォルト値: 経由地なし

    この記事は役に立ちましたか?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.