Google Maps API でMapの出力4 --日本のジオコーディング

Google Maps APIで日本のジオコーディングの利用方法
Google Mapsで座標を指定することでMapを任意の場所で表示することはできました。しかし座標をMapのクリック等で算出し設定するのは今ひとつ面倒です。できたらGoogle Mapsの本サイトでできるような、日常使う住所や駅名などで地図を呼び出したいところです。そこで今回は座標ではなく住所を指定して必要な場所のMapを呼び出してみたいと思います。
  1. ジオコーディングとは
    ジオコーディング(Geocoding)とは住所、郵便番号、電話番号等位置を連想させるワードから、緯度経度の位置情報を算出する技術です。これまでの作業で、Map表示にはまず中心座標を世界測地系(WGS84)で算出し、[setCenter(GLatLng(y, x))]に[y経度, x緯度]の順で指定する必要がありました。住所や郵便番号等はある程度の幅を持った空間ですが、これら幅をもった空間を代表となるになる座標と関連づけることで、手早く目的のMapを表示できるようになります。ある程度曖昧な指定でも、幅や奥行きのある空間から、いかに代表的な座標を算出できるかがこの技術のきもといえそうです。

  2. Google Maps APIで日本のジオコーディング(Geocoding API)
    Google Maps APIで日本のジオコーディングに対応したことが2006年12月に発表されました。上のGoogle Mapsのテキスト入力欄にご指定の住所を入力しサブミットして下さい。住所の座標への変換に成功すると瞬時にMapが移動します。住所から所定のMapを呼び出すには、このジオコーディングというサービスを利用します。これを自分のサイトに導入すれば誰もがGoogle Mapsと似たようなサービスを提供できるようになります。
    そもそも2006年6月に同様の発表がされ、この時日本を含む、アメリカ合衆国、カナダ、イタリア、ドイツ、スペインの6ヶ国が同時にGeocoding APIを利用できるようになりました。しかし間もなく日本のみこのリストから外れ2006年12月の再発表まで約半年間利用できない状態でした。
    Geocoding APIを利用すると「都道府県から何丁目何番何号」といった細かい指定から、「何町」といった曖昧な指定での算出も可能です。また駅名や「東京タワー」や「東京ディズニランド」等のランドマーク名称には対応しているようです。
    今回のMap動作スクリプト部分。このサンプルはケースはJavaScriptでGeocoding APIを利用する方法です。赤字部分は前回のMapとの変更点。
    <script type="text/javascript">
    //<![CDATA[
    window.onload=loadMap;
    var map = null;
    var geocoder = null;

    function loadMap()
    {
      map = new GMap2(document.getElementById("map"));
      map.setCenter(new GLatLng(35.698292249817314, 139.77313041687012), 15);
      geocoder = new GClientGeocoder();
    }
    function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
              map.setCenter(point, 15);
              var marker = new GMarker(point);
              map.addOverlay(marker);
              marker.openInfoWindowHtml(address);
            }
          }
        );
      }
    }

    window.onunload = GUnload;
    //]>
    </script>

  3. Google Maps APIで日本のジオコーディング(HTTP Get)
    Geocoding APIを利用してJavaScriptから直接呼び出す以外に、HTTP Get Methodを利用して座標を問い合わせる方法も提供されています。
    [http://maps.google.co.jp/maps/geo]に対して、[key=API Key]、[q=住所]、[output=xml もしくは json]、等パラメータを与えて呼び出します。結果はoutputで指定した形式で表示されます。住所と座標を変換するプログラムを組んだりする用途の場合、こちらの方が使い勝手が良さそうです。
    東京都新宿区新宿5-6-1をxml形式で表示
    東京都新宿区新宿5-6-1をjson形式で表示
    //東京都新宿区新宿5-6-1をxml形式で呼出
    http://maps.google.co.jp/maps/geo?key=ABQIA...&q=東京都新宿区新宿5-6-1&output=xml&ie=UTF8
    //東京都新宿区新宿5-6-1をjson形式で呼出
    http://maps.google.co.jp/maps/geo?key=ABQIA...&q=東京都新宿区新宿5-6-1&output=json&ie=UTF8

    //東京都新宿区新宿5-6-1をxml形式での結果
    東京都新宿区新宿5-6-1200geocode日本東京都新宿区新宿5丁目6−1JP東京都新宿区新宿5丁目6−1139.709646,35.691854,0
    //東京都新宿区新宿5-6-1をjson形式での結果
    {"name":"東京都新宿区新宿5-6-1","Status":{"code":200,"request":"geocode"},"Placemark":[{"address":"日本東京都新宿区新宿5丁目6−1","AddressDetails":{"Country":{"CountryNameCode":"JP","AddressLine":["東京都新宿区新宿5丁目6−1"]},"Accuracy": 1},"Point":{"coordinates":[139.709646,35.691854,0]}}]}
    上記技術を利用して、住所から座標、座標から住所に変換するプログラムを作成してみました。

  4. Google Mapsサイトでの住所指定表示
    目的値の住所が分かっている場合、下記のような記述でGoogle Mapsサイトを呼び出せば、直接指定のMapを表示することもできます。
    http://maps.google.co.jp/maps?q=東京都新宿区新宿5-6-1(株式会社アジャスト)

  5. ここまでの記述のまとめ
    ここまでの記述をhtmlにまとめました。

おわり
事業戦略室 石田 有史郎
comments(0)    trackback(0)     posted by 事業戦略室 at 1/ 8, 2007 23:14

コメント

コメントする

お名前とメールアドレスの入力は必須となっております。

 お名前

 メールアドレス

 URL

 コメント

      

トラックバック

トラックバックURL

最新10記事

事業部ごと一覧

カテゴリーごと一覧

芸人市場ブログ

芸人市場スタッフによるアテンド報告日記

記事一覧へ

リンク