Archive for the 'Location Helper' Category

2016/12/01 現在位置の住所を取得する

Location Helperを利用して(Assisted GPS)現在のGPS座標を取得し、GPS座標をもとに住所を取得するAppleScriptです。

実行時にはWiFiによるネットワーク接続を行なっていることが必要です。Location HelperはMac AppStoreで無料で配布されています。

現在位置の取得についてはAppleScriptだけで(Location Helperを使わずに)行うこともできるわけですが、手軽ということでいえば圧倒的にLocation Helperです。

ただし、Location HelperはGoogleのWebサービスを呼び出しているため、連続して何度も(短時間に)呼び出すと、ペナルティが発生する可能性があります。また、Location Helper自体を勝手に再配布できないため、個人的にはなるべくこれに依存しないように書いています(客先に納品するという概念が存在しない場所では関係のない話です)。

とはいうものの、緯度経度情報から住所を取得する「逆住所ジオコーディング」についてはLocation Helperに頼る必要があるので、とりあえず一番簡単な記述を行なってみました。

ちなみに、Location Helperは不可視プロセスで実行されるため、Dock上にアイコンが表示されたりしません。AppleScriptから呼び出すための専用ツールです。

問い合わせを行なった結果は、同じ住所情報が異なる表現方法で11パターンほど返ってきました。ここに掲載できないほどズバリの住所が返ってくるので、実際に役に立つものと思われます。

AppleScript名:現在位置の住所を取得する
– Created 2016-12-01 by Takaaki Naganoya
– 2016 Piyomaru Software
use AppleScript version “2.4″
use scripting additions
–http://piyocast.com/as/archives/4338

tell application “Location Helper”
  set {aLat, aLong} to get location coordinates
  
set aRes to reverse geocode location {aLat, aLong}
end tell

★Click Here to Open This Script 

2011/12/23 Google Maps API Web ServicesをAppleScriptから呼び出す「Location Helper」

GoogleのMaps API Web ServicesにAppleScriptから簡単にアクセスできるようにするツール「Location Helper for AppleScript」がMacApp Storeからフリーで配布されています

作者は、David Blishen氏

jhelp.jpg

同氏はほかに「JSON Helper」という同様のツールもMac AppStoreで同様にフリー配布しており、こちらも注目していました(Location HelperはJSON Helperの機能を含んでいます)。

JSON Helper/Location Helperはともにバックグラウンドで稼働するGUIなしアプリケーションであり、起動してもDockには起動表示は出ません(Mac AppStoreの評価コメントに「起動しない」といったものがありますが、完全な勘違いです)。アクティビティモニタで見ると、Location Helperが起動していることが確認できます。

それでは、Location HelperのGoogle Maps API関連の機能を実際にAppleScriptから呼び出してみましょう。

実行時には、インターネットへの接続が必要となります。

スクリプト名:現在地の緯度、経度を求める
tell application “Location Helper”
  get location coordinates
end tell
–> {35.xxxxxxxxxxxxx, 139.xxxxxxxxxxxx}

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

現在位置については、初回起動時に勝手に取得してよいかダイアログが表示されます。

loc1.jpeg

スクリプト名:現在地の海抜を求める
tell application “Location Helper”
  get location altitude
end tell
–> -1

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

-1が返ってくる場合には海抜の情報が取得できていないケース、とAppleScript用語辞書に書かれています。

スクリプト名:現在地の情報をレコード形式で取得
tell application “Location Helper”
  get location record
end tell
–> {course:-1.0, v_accuracy:-1.0, speed:0.0, timestamp:date “2011年12月23日金曜日 16:30:08″, coordinates:{35.xxxxxxxxxxxxx, 139.xxxxxxxxxxxxx}, lat:35.xxxxxx, lng:139.xxxxxxx, h_accuracy:127.0, altitude:-1}

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

スクリプト名:現在地の情報をテキスト形式で取得
tell application “Location Helper”
  get location string
end tell
–> “< +35.xxxx, +139.xxxx> +/- 127.00m (speed 0.00 mps / course -1.00) @ 2011-12-23 16:30:08 +0900″

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

スクリプト名:現在地の緯度・経度から住所情報を取得
tell application “Location Helper”
  reverse geocode location
end tell

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

スクリプト名:指定住所の緯度・経度情報を取得
tell application “Location Helper”
  geocode address “東京都新宿区西新宿三丁目20-2″ –アップルジャパン合同会社の所在地
end tell
–> {results:{{formatted_address:”日本, 東京都新宿区西新宿3丁目20−2”, address_components:{{short_name:”2”, long_name:”2”, types:{”sublocality_level_4″, “sublocality”, “political”}}, {short_name:”20”, long_name:”20”, types:{”sublocality_level_3″, “sublocality”, “political”}}, {short_name:”3丁目”, long_name:”3丁目”, types:{”sublocality_level_2″, “sublocality”, “political”}}, {short_name:”西新宿”, long_name:”西新宿”, types:{”sublocality_level_1″, “sublocality”, “political”}}, {short_name:”新宿区”, long_name:”新宿区”, types:{”locality”, “political”}}, {short_name:”東京都”, long_name:”東京都”, types:{”administrative_area_level_1″, “political”}}, {short_name:”JP”, long_name:”日本”, types:{”country”, “political”}}}, geometry:{viewport:{northeast:{lat:35.684300980292, lng:139.688203280291}, southwest:{lat:35.681603019708, lng:139.685505319709}}, location:{lat:35.682952, lng:139.6868543}, location_type:”APPROXIMATE”}, types:{”sublocality_level_4″, “sublocality”, “political”}}}, status:”OK”}

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

スクリプト名:現在地と指定の緯度・経度との距離をメートルで返す
tell application “Location Helper”
  get distance from coordinates {35.739, 139.63}
end tell
–> 911.86243144354

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

JSON Helper / Location Helperは非常に有用なツールですが、AppleScriptでGUIつきアプリケーションを作る環境AppleScriptObjCで、プログラムと一緒にLocation Helperを配布するわけにもいかないので、同等の機能を自前で実装する必要が出てくる感じでしょうか。Location Helperとまで行かないまでも、JSON Helperの機能については、別途実装したいところです。