Archive for the 'Maps.app' Category

2013/12/09 Maps.appで開始地点と到着地点の住所を指定して経路表示 v2

OS X 10.9, Mavericksから標準装備になったApple純正地図アプリケーション「マップ」(Maps.app)で、指定の2つの住所(名称)の間の経路を、通常地図形式で表示するAppleScriptです。

map31.png

map4.png

住所で番地まで指定するよりも、場所の名前(○○駅 など)を指定したほうが、検索エリアの見た目はいい感じになりますね。

スクリプト名:Maps.appで開始地点と到着地点の住所を指定して経路表示 v2

set fromAdr to "中村橋駅"
set toAdr to "よみうりホール"

set fromAdr to encodeURL(fromAdr) of me
set toAdr to encodeURL(toAdr) of me

set aURL to "http://maps.apple.com/?" & "saddr=" & fromAdr & "&" & "daddr=" & toAdr

open location aURL

on encodeURL(str)
  return do shell script ("python -c \"import sys, urllib; print urllib.quote(sys.argv[1]) \" " as Unicode text) & quoted form of str
end encodeURL

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2013/12/09 Maps.appで開始地点と到着地点の住所を指定して経路表示

OS X 10.9, Mavericksから標準装備になったApple純正地図アプリケーション「マップ」(Maps.app)で、指定の2つの住所の間の経路を、通常地図形式で表示するAppleScriptです。

map12.png

map21.png

実行すると、かならず「自動車」による経路情報を表示します。徒歩による経路情報を表示するためには、ユーザーの操作(かGUI Scriptingによるコントロール)を必要とします。

右側の検索欄に表示される住所は西武池袋線の中村橋駅を指定したはずなのですが、別の(同ブロック内にある)店の名前になってしまっています。たしか、改札の中にあるコンビニのはずなので……車で乗り付けられない上に、改札の中に入らないと店名を確認できません。

URLプロトコルの資料を見ると、始点と終点に指定できるのは住所のみ。緯度、経度は指定できないようです(指定できてもおかしくないですが、、、)。

スクリプト名:Maps.appで開始地点と到着地点の住所を指定して経路表示

set fromAdr to “東京都練馬区中村北4-2-1″
set toAdr to “東京都千代田区有楽町1-11-1″

set fromAdr to encodeURL(fromAdr) of me
set toAdr to encodeURL(toAdr) of me

set aURL to “http://maps.apple.com/?” & “saddr=” & fromAdr & “&” & “daddr=” & toAdr
open location aURL

on encodeURL(str)
  return do shell script (“python -c \”import sys, urllib; print urllib.quote(sys.argv[1]) \” “ as Unicode text) & quoted form of str
end encodeURL

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2013/12/08 iPhotoで選択した写真から緯度経度情報を取得してMaps.appで緯度経度とズームレベルを指定して地図表示

iPhoto 9.5上で選択した写真から緯度経度情報を取得して、その情報をマップ(Maps.app)で位置表示、同時にズームレベルを指定するAppleScriptです。

GPSつきのカメラ、たとえばiPhoneで撮影した写真であれば(GPSの使用を許可していれば)自動で緯度経度情報が写真に添付され、写真がiCloud経由でMacのiPhotoにも自動配信されます。この、緯度経度情報つきの写真をiPhoto上で選択している状態を実行の前提条件として想定しています。

iphoto1.png
▲行きつけの練馬区春日町のバッティングセンター

その緯度経度の情報のついた写真をOS X 10.9上のiPhoto 9.5上で選択しておき、本AppleScriptを実行すると、マップ(Maps.app)上で場所を表示します。

住所情報を「東京都練馬区春日町」などと指定した場合には、最もズーム倍率(ズームレベル)が高い状態で地図が表示されてしまい、ズーム倍率の指定が無視されます。

そのために、緯度経度の情報を直接数値で指定して実験してみました。結果は予想どおり、緯度経度を数値で指定した場合にはズーム倍率の指定(z=)が有効になりました。

ズーム倍率(ズームレベル)は0から20ぐらいが有効で、うち0から2は指定した場所が画面の中心に来ないわ、世界地図全体が表示されるわ、関係ない場所が画面に出てくるわでほとんど意味がありません。

20以上は、たしかにズーム倍率が変わったようには見えるもののほとんど誤差程度にしか変化はなく、20が最大値だと判断してよさそうです。

zoom03.png
▲Zoom Level=3

zoom04.png
▲Zoom Level=4

zoom05.png
▲Zoom Level=5

zoom06.png
▲Zoom Level=6

zoom07.png
▲Zoom Level=7

zoom08.png
▲Zoom Level=8

zoom09.png
▲Zoom Level=9

zoom10.png
▲Zoom Level=10

zoom11.png
▲Zoom Level=11

zoom12.png
▲Zoom Level=12

zoom13.png
▲Zoom Level=13

zoom14.png
▲Zoom Level=14

zoom15.png
▲Zoom Level=15

zoom16.png
▲Zoom Level=16

zoom17.png
▲Zoom Level=17

zoom18.png
▲Zoom Level=18

zoom19.png
▲Zoom Level=19

zoom20.png
▲Zoom Level=20

zoom21.png
▲Zoom Level=21

zoom22.png
▲Zoom Level=22

zoom23.png
▲Zoom Level=23

zoom24.png
▲Zoom Level=24

スクリプト名:iPhotoで選択した写真から緯度経度情報を取得してMaps.appで緯度経度とズームレベルを指定して地図表示

set {aLat, aLon} to getLatitudeAndLongitudeFromAPhoto() of me
if {aLat, aLon} = {} then return

set aURL to “http://maps.apple.com/?ll=”
set zoomNum to 20
set bURL to (aLat as string) & “,” & (aLon as string)
set cURL to aURL & bURL & “&z=” & (zoomNum as string)

open location cURL

–iPhoto上で選択した写真から緯度経度情報を取得する
on getLatitudeAndLongitudeFromAPhoto()
  
  
tell application “iPhoto”
    set aSel to selection
    
if length of aSel = 0 then return {} –選択中の写真がない場合にはヌルのリストを返す
    
    
set aaSel to first item of aSel
    
set aProp to properties of aaSel
    
set aLatLocal to latitude of aProp –緯度
    
set aLonLocal to longitude of aProp —経度
  end tell
  
  
return {aLatLocal, aLonLocal}
  
end getLatitudeAndLongitudeFromAPhoto

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2013/12/07 Maps.appで住所検索+地図タイプを指定して表示

OS X 10.9, Mavericksから標準装備になったApple純正地図アプリケーション「マップ」(Maps.app)で指定の住所を、指定の地図形式で表示するAppleScriptです。

map0.png

地図形式は、「標準(m: map)」「地図+写真(h: hybrid)」『航空写真(k: satellite)」のうちから1つを指定可能です。

map11.png

スクリプト名:Maps.appで住所検索表示(タイプ=標準地図を指定)
set aURL to “http://maps.apple.com/?q=”
set bURL to “東京都港区六本木6丁目10番1号” –Apple Japanの住所
set cURL to aURL & encodeURL(bURL) of me & “&t=m” –「標準」の地図を指定

open location cURL

on encodeURL(str)
  return do shell script (“python -c \”import sys, urllib; print urllib.quote(sys.argv[1]) \” “ as Unicode text) & quoted form of str
end encodeURL

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

map2.png

スクリプト名:Maps.appで住所検索表示(タイプ=地図+写真を指定)
set aURL to “http://maps.apple.com/?q=”
set bURL to “東京都港区六本木6丁目10番1号” –Apple Japanの住所
set cURL to aURL & encodeURL(bURL) of me & “&t=h” –「地図+写真」の地図を指定

open location cURL

on encodeURL(str)
  return do shell script (“python -c \”import sys, urllib; print urllib.quote(sys.argv[1]) \” “ as Unicode text) & quoted form of str
end encodeURL

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

map3.png

スクリプト名:Maps.appで住所検索表示(タイプ=航空写真を指定)
set aURL to “http://maps.apple.com/?q=”
set bURL to “東京都港区六本木6丁目10番1号” –Apple Japanの住所
set cURL to aURL & encodeURL(bURL) of me & “&t=k” –航空写真を指定

open location cURL

on encodeURL(str)
  return do shell script (“python -c \”import sys, urllib; print urllib.quote(sys.argv[1]) \” “ as Unicode text) & quoted form of str
end encodeURL

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2013/12/07 Maps.appで住所検索表示

OS X 10.9, Mavericksから標準装備になったApple純正地図アプリケーション「マップ」(Maps.app)で指定の住所を表示するAppleScriptです。

マップで住所なり緯度経度を指定して表示する方法は必ずあり、それはURL経由で行うということは分っていたのですが、まさか「http://」のプロトコル経由でできるとは思いませんでした。

そんなわけで、ものすごく安直にできてしまいます。プロトコルは「http://」ですが、Safari(などのWebブラウザ)が起動していない場合でも、起動を促されるのはMaps.appであり、本Scriptを実行するたびにSafariが立ち上がったりすることはありません。

AppleのSafari Developer Libraryサイト上にある「Apple URL Scheme Reference」の中に「Map Links」の項目があり、緯度経度の直接指定やら、表示地図種類の指定、ズームレベルの指定、2点間の住所指定などさまざまな表現が行える、とあります。

カスタムURLプロトコルを書く必要があると思っていたので、本当に意外でした。

map1.png

スクリプト名:Maps.appで住所検索表示
set aURL to “http://maps.apple.com/?q=”
set bURL to “東京都港区六本木6丁目10番1号” –Apple Japanの住所
set cURL to aURL & encodeURL(bURL) of me

open location cURL

on encodeURL(str)
  return do shell script (“python -c \”import sys, urllib; print urllib.quote(sys.argv[1]) \” “ as Unicode text) & quoted form of str
end encodeURL

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に