MavericksのマップをURLスキームから利用する

2013年10月24日

iOSのマップをそのままMacにもってきたMavericksのマップ。

それならばiOSのマップと同じようにMavericksのマップをURLスキームから利用できるはずだと思いたち試してみました。

URLスキームから起動できれば、LaunchBarやAlfredなどのランチャーからマップを利用でき便利です。

まずiOSのURLスキームは佐長 Blogさんを参考にしました。

http://maps.apple.com/?<パラメータ>

というような形式でマップを起動できる模様。

パラメータ内容
q検索キーワード
saddr経路検索の出発地
daddr経路検索の目的地

東京駅を検索したいなら

http://maps.apple.com/?q=東京駅

という感じ。

上記URLをSafariのアドレスバーに貼り付けるかターミナルのopenコマンドの後に貼り付けて実行すると

Mavericks_maps_urlscheme

あっさり成功。

LaunchBarから利用するには

https://maps.apple.com/?q=*

Alfredから利用するには

https://maps.apple.com/?q={query}

というURLを検索テンプレートに登録します。

検索した地名の近くの施設を探したい場合はスペースで区切って施設名を入れるだけ。

Mavericks_maps_urlscheme2

マップが起動していない状態でいきなり「地名 施設名」検索をしても表示してくれないみたいです。

経路検索を利用する場合は

http://maps.apple.com/?saddr出発地=&daddr=目的地

という形式ですが、AlfredやLaunchBarなどのランチャーから快適に利用するには少し工夫が必要です。

ダイアログやLaunchBarから利用したい場合には以下のAppleScriptを「AppleScript エディタ」で開きファイルとして保存して利用。

on run --for Dialog
display dialog "出発地と目的地をスペースで区切って入力" default answer "" buttons {"OK"} default button 1
set theText to text returned of result
openMaps(theText)
end run
on handle_string(theText) --for LaunchBar
openMaps(theText)
end handle_string
on openMaps(theText)
set theList to makeList(theText, " ")
set saddrText to item 1 of theList
set daddrText to item 2 of theList
do shell script "open 'http://maps.apple.com/?saddr=" & saddrText & "&daddr=" & daddrText & "'"
end openMaps
on makeList(theText, theDelimiter)
set tmp to AppleScript's text item delimiters
set AppleScript's text item delimiters to theDelimiter
set theList to every text item of theText
set AppleScript's text item delimiters to tmp
return theList
end makeList

Alfred 2から利用したい場合はWorkflowを作成してBox.comにアップロードしましたので、ダウンロードしてインポートして利用してください。

Mavericks_maps_urlscheme3