🗺️

iPhoneショートカットでGoogleマップからAppleマップを開くには?

に公開

実現したい動作

iPhoneでGoogleマップの共有リンクからAppleマップを開く。
GoogleマップからAppleマップを開く操作イメージ

https://x.com/yugooku/status/1926622803152777642

なぜ実現したいのか

Googleマップ、iOSマップにはそれぞれに便利さがあります。

  1. Googleマップはレビューや検索のヒット率の良さ
  2. Appleマップはロック画面からのアクセスのしやすさ、Apple Watchとの連携(マップがそのまま表示される)の良さがあります。

検索はGoogleマップで行い、徒歩のルート案内などはiOSマップでルート案内を行いたい。

技術的課題

標準ではGoogleマップからiOSマップに位置情報を共有する方法が用意されていないので、ショートカットを作成する必要があります。

実装方法

以下にショートカットの画像を示します。
ショートカットの全容

ショートカットの解説

  1. 共有シートからURLの入力を受け取る
  2. ショートカットの入力(共有シートのURL)を展開
    URLの展開とは短縮 URL やリダイレクトを含む URL をたどり、最終的にたどり着く “本当の” URL(最終 Location)を取得します。
  3. 展開された URL からクエリ文字列を取得
    例:https://www.google.co.jp/maps/search/?q=東京スカイツリー → q=東京スカイツリーを取得します。
  4. URL のコンポーネントを URL デコード
    %E3%80%92131-0045+ → 東京スカイツリー など、エンコードを解除します。
  5. (?<=\bq=)[^&]+(正規表現)でテキスト検索
    q= の直後から & の前まで(=検索ワード)を抽出。
  6. 置換(+が残るので空白に置き換える)
    住所+東京スカイツリー → 住所 東京スカイツリー
  7. Appleマップで検索

以下に解説した画像を示します。
ショートカットの解説

精度(完璧ではない)

  • 成功例
    東京スカイツリー
    成功例 - 東京スカイツリー

  • 失敗例(共有した目的地からズレる)
    東京駅
    失敗例 - 東京駅(少しズレる)
    新宿駅
    失敗例 - 新宿駅(大きくズレる)

原因:
ショートカットでは住所+名称で検索していますが、実際の動作では住所のみで検索処理をしている可能性が考えられます。
そのため、駅名などには弱い結果となっています。
→ある程度近くまでは検索できているので駅名などをタップすることで簡単に正しい目的地を設定することはできます。

ショートカットの共有

以下にショートカットの共有リンクを示します。
利用は自己責任でお願いします。

https://www.icloud.com/shortcuts/81a5c758619a450eb7fbe04b81407cfb

Discussion