Photo by Hendrik Morkel on Unsplash
このたび Geolonia では、オープンソースかつ無料でご利用いただける住所から緯度経度を検索する(専門用語でジオコーディングといいます。)ための API 「Community Geocoder」を公開しました。
https://community-geocoder.geolonia.com/
この API は、経産省の 「IMI コンポーネントツール」 をフォークしたライブラリを使用しています。
先日、公開した IMI コンポーネントツールに関する記事 がとても大きな反響をいただきましたが、この記事を書いている段階で IMI コンポーネントツールのジオコーディグ機能に興味深い点を発見しました。
IMI コンポーネントツールの「住所変換コンポーネント」では、以下のようなフローで緯度経度を取得しています。
「住所変換コンポーネント」では、この levelDB にアクセスするために Node.js のサーバーとして起動して利用する仕様になっています。
そこで私たち Geolonia の開発チームは、キーバリューのデータを個々の JSON として静的にホスティングすることで、GitHub Pages 上にサーバーレスで API を設置することができるのではないかというアイディアを思いつきました。
こうすれば、IMI コンポーネントツールをクライアントサイドスクリプトとして利用できるように修正したライブラリを JavaScript API として提供することで、ジオコーディングサービスを提供できます。
ラッキーなことに、以前にプライベートで関わったプロジェクトで郵便番号から住所に変換する API を開発したことがありました。
https://github.com/madefor/postal-code-api
本サービスは、JavaScript API を使用して、みなさんのウェブサイト等に組み込むことが可能です。
まず、以下の HTML を組み込みたいページの </body>
タグ直前に設置してください。
<script src="https://cdn.geolonia.com/community-geocoder.js"></script>
以下の例のように、API 関数 getLatLng()
を任意のクリックイベント等でコールしてください。
document.getElementById('exec').addEventListener('click', () => {
if (document.getElementById('address').value) {
getLatLng(document.getElementById('address').value, (latlng) => {
map.setCenter(latlng)
})
}
})
API 関数の引数などの詳しい情報は README を御覧ください。
プルリクや Issue は大歓迎です。住所の正規化を工夫すれば精度があがりそうなので、そのあたりのアイディアを募集しています。