🗺️
iPhoneショートカットでGoogleマップからAppleマップを開くには?
実現したい動作
iPhoneでGoogleマップの共有リンクからAppleマップを開く。
なぜ実現したいのか
Googleマップ、iOSマップにはそれぞれに便利さがあります。
-
Googleマップ
はレビューや検索のヒット率の良さ -
Appleマップ
はロック画面からのアクセスのしやすさ、Apple Watchとの連携(マップがそのまま表示される)の良さがあります。
検索はGoogleマップで行い、徒歩のルート案内などはiOSマップでルート案内を行いたい。
技術的課題
標準ではGoogleマップからiOSマップに位置情報を共有する方法が用意されていないので、ショートカットを作成する必要があります。
実装方法
以下にショートカットの画像を示します。
ショートカットの解説
- 共有シートからURLの入力を受け取る
- ショートカットの入力(共有シートのURL)を展開
URLの展開とは短縮 URL やリダイレクトを含む URL をたどり、最終的にたどり着く “本当の” URL(最終 Location)を取得します。 - 展開された URL からクエリ文字列を取得
例:https://www.google.co.jp/maps/search/?q=東京スカイツリー
→ q=東京スカイツリーを取得します。 - URL のコンポーネントを URL デコード
%E3%80%92131-0045+ → 東京スカイツリー など、エンコードを解除します。 -
(?<=\bq=)[^&]+
(正規表現)でテキスト検索
q= の直後から & の前まで(=検索ワード)を抽出。 - 置換(+が残るので空白に置き換える)
住所+東京スカイツリー → 住所 東京スカイツリー - Appleマップで検索
以下に解説した画像を示します。
精度(完璧ではない)
-
成功例
東京スカイツリー
-
失敗例(共有した目的地からズレる)
東京駅
新宿駅
原因:
ショートカットでは住所+名称で検索していますが、実際の動作では住所のみで検索処理をしている可能性が考えられます。
そのため、駅名などには弱い結果となっています。
→ある程度近くまでは検索できているので駅名などをタップすることで簡単に正しい目的地を設定することはできます。
ショートカットの共有
以下にショートカットの共有リンクを示します。
利用は自己責任でお願いします。
Discussion