1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GPS座標から住所を求める JXA Ver.3

1
Posted at

なぜか3年ごとに同様の記事を書いている気がするが、以前の記事を書いてから Google Maps の無料扱いが微妙に変化して、以前の API-Key では動作しなくなっていて、新たに API-Key の取得もちょっと面倒だった。

3年前の投稿記事

今度は、Open streat map のサービスを利用

Open streat map についてはこちらを
https://openstreetmap.jp/
API-Key を取得することなく使えるので、敷居は低い。このプロジェクトに感謝します。

さっそくソースコードを

JXA(JavaScript for Automation)のコードはこちら。

RevGeoCode_OSMap.scpt
//
// 緯度、軽度から住所を求める
// 		
// 戻り値は JSON 形式

var app = Application.currentApplication();
app.includeStandardAdditions = true;

var latlon = app.displayDialog("緯度,経度を入力", {defaultAnswer: ""}).textReturned;
var lat = latlon.split(',')[0].trim();
var lon = latlon.split(',')[1].trim();

var url = `"https://nominatim.openstreetmap.org/reverse?format=json&lat=${lat}&lon=${lon}&zoom=18&addressdetails=1&accept-language=ja"`;

var ans = app.doShellScript('curl -s ' + url);

var data = JSON.parse(ans);
var a = data.address;
            // 日本の住所体系に合わせた並びに
var parts = [
    	a.province || a.prefecture || "",
   		a.county || "",
    	a.city || a.town || a.village || a.suburb || "",
    	a.quarter || a.neighbourhood || a.road || ""
    ];
var joined = parts.join("").trim();
var adrs =  joined || data.display_name.split(',')[0];	
	app.displayDialog(latlon + 'の住所\r' + adrs + '\nをクリップボードにコピーします。')
	app.setTheClipboardTo(adrs)


使い方

上記のソースコードを「スクリプトエディタ」の新規のスクリプトにコピペする。
この時、スクリプトの種類を AppleScript ではなく、JavaScript にする。
あとは、保存して実行するだけ。

ダイアログが出たら、緯度と経度をカンマ区切りで入力する。

(入力例)
スクリーンショット 2026-04-02 16.21.10.png
「OK」ボタンを押すと、結果が出力されます。
スクリーンショット 2026-04-02 16.21.19.png
結果として盛岡市役所付近の住所が表示されました。
「OK」ボタンを押すと、住所の部分だけクリップボードにコピーされます。

ソースの簡単な解説

Open streat map から返ってくる値は、JSON 形式なので、"display_name" キーにはまとまった形式があるが、項目順が日本の形式とは逆順になっている(カンマ区切りテキスト)。
これを取り出して逆順にする方法もあるのだが、「道路名」まで付いてくることが多い。
Street map というくらいなので、仕方がないので、個別に取り出すようにしている。
ただし、"quarter" も "neighbourhood" のどちらも無いときには道路名を表示するようにしていますが、不要ならその部分 "a.road ||" を削除してお使いください。
なんなら、"display_name" を使うように改造もできます。

コメント歓迎

これで、API-Kay を取得するという面倒なことをせずに逆ジオコーディングが利用できます。
このような素晴らしい環境を提供してくれている Open streat map に支援しましょう。

お気づきの点や、誤りの指摘など歓迎します。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?