2016.10.27
2017.5.26

インテントを利用して外部マップアプリを起動する方法

AndroidまたはiOSでインテントを利用して外部マップアプリを起動する方法です。

目次

  • プラグイン
  • Android
  • iOS
  • 備考

プラグイン

今回、使用するプラグインは以下のものです。インストールや使い方は下記のリンクを参照してください。

GitHub - lampaa/com.lampa.startapp

Android

以下は、AndroidからGoogleマップを起動するコードです。


var uri = "geo:";
uri += "0,0";
uri += "?q=35.681298,139.766247(" + encodeURI("東京駅") + ")";
uri += "&z=15"

startApp.set({
    "action": "ACTION_VIEW",
    "package": "com.google.android.apps.maps",
    "uri": uri
}).start(
    function () { },
    function (error) { console.log(error); }
);

「package」を設定していない場合、他に起動できるアプリがインストールされていると以下のように「アプリケーション選択」ダイアログが表示されてしまいます。

ちゃんと起動できればダイアログでアプリを選択できてもいいのですが、上記のURIではYahoo!カーナビには対応していません。

Googleマップのインテントで指定できるパラメータについては下記を参照してください。

Google マップ インテント  |  Google Maps Android API  |  Google Developers

iOS

以下は、iOSからAppleが提供しているマップを起動するコードです。


var uri = "maps://";
uri += "?q=" + encodeURI("東京駅");
uri += "&ll=35.681298,139.766247";

startApp.set(uri).start(
    function () { },
    function (error) { console.log(error); }
);

iOSマップのインテントで指定できるパラメータについては下記を参照してください。

Map Links

iOSからGoogleマップを起動したい場合は、下記が参考になると思います。

Google マップ URL スキーム  |  Google Maps SDK for iOS  |  Google Developers

備考

外部アプリを起動する場合、サイトによっては使用するURLのアクセスを許可しておくため、以下のような設定をconfig.xmlに追記しています。


<access origin="geo:*" launch-external="yes" />
<access origin="maps://*" launch-external="yes" />
<access origin="comgooglemaps://*" launch-external="yes" />

ただ、今回使用したプラグインでは上記の設定がなくても起動できたので、必要かどうか分かりません。参考程度としてください。

Cordova】関連記事