例−16:住所からマーカをマッピングする(GClientGeocoderの例) + マーカーに複数の情報を渡す

  スポット名 住所 電話番号
スポット1:
スポット2:
スポット3:
スポット4:

GClientGeocoderを使って、住所から緯度経度に変換し、マーカーを追加しています。 これはあくまでサンプルなので、実用的ではありません。 大量(10個以上)に変換する場合には、住所から緯度経度あらかじめ変換しておくほうが無難です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Google Maps JavaScript API Example</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
 
    <script src="http://maps.google.co.jp/maps?file=api&v=2&key=[あなたのAPIキー]&sensor=false"
            type="text/javascript"></script>
 
    <script type="text/javascript">
    //<![CDATA[
    
    //地図のインスタンスを保持するmap変数
    var map;
    
    //ジオコーダのインスタンスを保持するgGeo変数
    var gGeo;
    
    function load(){ 
      
      //地図の作成
      map = new GMap2(document.getElementById("map")); 
      map.setCenter(new GLatLng(36, 138), 6); 
      
      //コントロールの追加
      map.addControl(new GLargeMapControl());
      
      //ジオコーダの作成
      gGeo = new GClientGeocoder();
      
      
      //住所からマーカーを作成する
      max = 4;
      for(i = 1; i <= max; i++) { 
          //マーカー作成
          addGeoMarkerIndex(i);
      } 
    }
    
    function addGeoMarkerIndex(idx) { 
      
      //項目から住所を取得
      var address = document.getElementById("q" + idx + "-name").value; 
      
      //ジオコーディングをリクエストする
      gGeo.getLatLng(address, function(point) {
        addGeoMarker_callback(point, idx);
      });
    }
    
    function addGeoMarker_callback(point, idx) {
      if (point !== null) {
        //マーカーを作成 
        var marker = new GMarker(point); 
        
        //情報を取得する
        var address = document.getElementById("q" + idx + "-address").value;
        var name = document.getElementById("q" + idx + "-name").value;
        var tel = document.getElementById("q" + idx + "-tel").value;
        
        //マーカーがクリックされたら、情報を表示する
        GEvent.addListener(marker, "click", function() {
          var txt="<div align='left'>"
                 + "<b>名前:</b>" + name + "<br />"
                 + "<b>住所:</b>" + address + "<br />"
                 + "<b>電話:</b>" + tel + "</div>"; 
          marker.openInfoWindowHtml(txt); 
        });
        
        //マーカーを地図上に配置 
        map.addOverlay(marker); 
      }
    }

    //ページがロードされたら、load 関数を実行して、地図を表示する
    window.onload = load;
    
    //ページを抜けるとき、メモリ開放
    window.onunload = GUnload;
    //]]>
    </script>

  </head>
  <body >
    <div id="map" style="width: 600px; height: 600px"></div>
    <table border="1" style="width:auto;">
    <tr>
    	<th> </th>
    	<th>スポット:</th>
    	<th>住所</th>
    	<th>電話番号</th>
    </tr>
    <tr>
    	<td>スポット1:</td>
    	<td><input type="text" id="q1-name" value="エキスポランド" ></td>
    	<td><input type="text" id="q1-address" value="吹田市千里万博公園" ></td>
    	<td><input type="text" id="q1-tel" value="06-6877-0560" ></td>
    </tr>
    <tr>
    	<td>スポット2:</td>
    	<td><input type="text" id="q2-name" value="ナガシマスパーランド" ></td>
    	<td><input type="text" id="q2-address" value="三重県桑名市長島町浦安333" ></td>
    	<td><input type="text" id="q2-tel" value="0594-45-1111" ></td>
    </tr>
    <tr>
    	<td>スポット3:</td>
    	<td><input type="text" id="q3-name" value="富士急ハイランド" ></td>
    	<td><input type="text" id="q3-address" value="山梨県富士吉田市新西原5-6-1" ></td>
    	<td><input type="text" id="q3-tel" value="0555-23-2111" ></td>
    </tr>
    <tr>
    	<td>スポット4:</td>
    	<td><input type="text" id="q4-name" value="東京ディズニーランド" ></td>
    	<td><input type="text" id="q4-address" value="千葉県浦安市舞浜1" ></td>
    	<td><input type="text" id="q4-tel" value="045-683-3333" ></td>
    </tr>
    </table>

  </body>
</html>




サイト内検索
Google Maps APIプログラミングガイド

Google Maps API Expert 4人が共著で執筆。中級者向けに実用に役立つサンプルを中心に紹介! スマートフォン時代に合わせたGoogle Maps APIの使い方も掲載。
詳しくはこちら
Google Maps APIプログラミング入門
Google Maps APIプログラミング入門
全480ページ。Google Maps API ver.2, ver.3, for Flash, Static Maps API v2, Google Maps API Primery, ライセンス…など、Google Maps APIに関連する幅広い内容の本を書きました。
このサイトで公開しているサンプルはもちろん、本のために作ったサンプルも満載です。
詳しくはこちら