住所を使って緯度経度を取得する(1)

(注意!)この記事は、旧APIであるGoogle Maps API version 2を解説したものです。version 2の利用は推奨されていないので、意図的に旧バージョンの情報を探していない場合は、新しいバージョンの解説をご覧下さい。


Google Maps APIには住所情報から緯度と経度を取得するGClientGeocoderというAPIがあります。 GClientGeocoder公開当初は日本の住所に対応していませんでしたが、2006年12月現在では使えるようになっています。 ここでは、GClientGeocoderの簡単な使い方を説明したいと思います。

住所を入力して移動する

以下のサンプルはGoogle MAPS APIを使ったページのソースです。 強調してある部分がGClientGeocoder関連箇所です。 下記サンプルを試すには「key=aaaaa」の「aaaaa」部分をご利用のAPI key文字列に変更してください。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Google Maps JavaScript API Example - simple</title>
    <script src="http://maps.google.com/maps?file=api&v=2&key=aaaaa"
        type="text/javascript" charset="utf-8"></script>
  </head>
  <body onload="load()">
    <div id="map" style="width:450px; height:400px"></div>
    <script type="text/javascript">
    //<![CDATA[


    var map = null;
    var geocoder = null;

    // 初期化
    // <body onload="load()"> で呼び出されています
    function load() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(35.67431, 139.69082), 13);

        // GClientGeocoderを初期化
        geocoder = new GClientGeocoder();
      }
    }

    // 「移動する」ボタンを押されると実行されます
    function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
              map.setCenter(point, 13);
              var marker = new GMarker(point);
              map.addOverlay(marker);
              marker.openInfoWindowHtml(address);
            }
          }
        );
      }
    }

    //]]>
    </script>

    <form action="#"
          onsubmit="showAddress(this.address.value); return false">
      <P>
        <input type="text" size="40"
                name="address" value="渋谷区1-1" />
        <input type="submit" value="移動する" />
      </P>
      <div id="map" style="width:500px; height:600px"></div>
    </form>

  </body>

</html>

GClientGeocoderにはgetLatLngというメソッドがあります。 そのメソッドに住所文字列を入れると、指定したfunctionに緯度経度情報が入ります。

上記サンプルでは、緯度経度情報を使ってマーカを地図に追加するとともに、openInfoWindowHtmlを使って住所情報文字列を表示しています。 上記サンプルでは、文字列の取得方法としてFORMを使っていますが、いきなりgetLatLngに「渋谷区1-1」という文字列を入れても同様に動作します。

表示例

表示例です。


IPv6基礎検定

YouTubeチャンネルやってます!