勉強したことのメモ

webプログラマが勉強したことのメモ。

無料でジオコーディング(住所→経度緯度)を行う

   

GoogleMapAPIでジオコーディングをするには、支払い情報を登録したアカウントにてAPIキーを発行する必要があり非常に面倒くさい。とはいえOSM+leaflet.jsの組み合わせでも有用な情報が見つからず結局のところ地理院地図のジオコーダーを使う方法に落ち着いた。以下に方法をメモ。

 

サンプル

http://sample.taitan916.info/osm/geocoder.php

 

ソース

ajax通信でジオコーダーに接続している。lengthが0の(結果が無い)場合は何もしないようにしているが、もうちょっとエラーチェックは入れたほうが良さそう。

尚、以下がリファレンスになる。

https://ucopendb.gsi.go.jp/ucode/help_with_API.html

 

OpenStreetMapのAPI

OSMでもAPIがあり以下のような形で接続できる。

しかしながら地理院よりも大幅に劣り、例えば「東京タワー」と入力すると正常に経度緯度を取得できるが、「東京都港区芝公園4丁目2−8」とかだと取得できず実際に使用するにはまだまだ厳しそう。

 

leaflet.jsのプラグイン

Leaflet Control OSM Geocoderというプラグインを使用すると地図から場所を検索するという機能を追加できる。しかしこちらでテキストボックスを用意し、何らかのアクションを起こした際に経度緯度を取得すると言う方法が分からなかった。

また、どの道OSMのジオコーダーを使うのであれば地理院やGoogleMapAPIクラスの精度は出ないのかもしれない。

 

所感

leaflet.jsとOSMで何とかしたかったので結論が出るまでにだいぶ時間をかけてしまった。しかしながら無料で面倒くさい手続き無く、ある程度精度の高いジオコーディングができればどのサービスでも良い。今後ジオコーディングが必要な際は地理院APIを選択肢の一つとする。

 - Ajax, JavaScript, jQuery

  関連記事

JavaScriptで全角半角を判別の上で文字数カウントを行う

やりたかった事は「全角5文字・半角10文字以内の入力フォーム」 みたいなもの。 ...

Ajaxでボタンとテキストボックス操作

ボタンを押して「https://aaa/bbb/ajax.php」からの 返答を ...

配列をjQueryで取り扱う

やりたかった事は、 ・テキストボックスが複数ある。そのページに送信するクエリによ ...

AjaxのJSONP使用でPHPで作った配列をJSに返す方法

AというサイトからBというサイトにAjax通信し、Bの方ではMySQLに接続して ...

Jcropを使ってブラウザ上で画像を範囲指定して切り抜き(トリミング)

やりたかった事は、画像をアップロードして必要な部分のみを範囲指定してもらい、指定 ...

Ajaxで負荷軽減

業務中、専用のページでfile_get_contents的なものは あまり使わな ...

Ajaxでプラグイン無しのファイルアップロード

画像ファイルを添付できて、尚且つAjaxを用いた非同期通信のフォームを作りたかっ ...

JavaScriptでFlashのバージョンを取得

既存のソースでFlashのバージョン取得を 行っているものがあり、使いそうなので ...

jQueryで画像(タグ内)のsrc情報を取得する場合

すぐに出てこなかったのでメモ。 $('#test').attr('src'); ...

FormDataを使ったAjax通信がiPhoneのみエラー

FormDataオブジェクトを使用したAjax通信するシステムがあり、PCやAn ...