?地図+JSON形式データのオーバレイ(ボタンクリック時に表示)

以下ではJSON形式のデータファイルを読み込んで,GoogleMap上に表示させる方法を習得します.マーカはボタンをクリックした時にオーバレイするようにします.

JSON形式のデータファイル


以下は,JSON形式のデータファイルのサンプルです.

{
  "marker":[
    {"lat":35.70930459186816,"lng":139.72034454345703,"name":"本部キャンパス"},
    {"lat":35.70665619283589,"lng":139.7072982788086,"name":"大久保キャンパス"},
    {"lat":35.698013436605755,"lng":139.7208595275879,"name":"河田町キャンパス"}
  ]
}


JSON形式のファイルはこちら

以下のように,JavaScriptのスクリプトファイルを用意します.


var map;

function initialize() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map_canvas"));
    map.setCenter(new GLatLng(35.70282282786898,139.71399307250976), 14);
    GEvent.addListener(map, "click", createMarker);
  }
}

function downloadData(){
  GDownloadUrl("wdata.json", function dispData(data, statusCode){
    var obj = eval("(" + data + ")");

    for (var i = 0; i < obj.marker.length; i++) {
      var lat = obj.marker[i].lat;
      var lng = obj.marker[i].lng;
      var name = obj.marker[i].name;

      map.addOverlay(createMarker(lat, lng, name));
    }
  });
}

function createMarker(lat, lng, name) {
  var marker = new GMarker(new GLatLng(lat, lng));

  var html = "<p>" + name + "</p>";
  GEvent.addListener(marker, "click", function(){
    marker.openInfoWindowHtml(html);
  });

  return marker;
}


スクリプトはこちら

以下の部分で,情報ウィンドウの表示部分を含むマーカを作成しています.

function createMarker(lat, lng, name) {
  var marker = new GMarker(new GLatLng(lat, lng));

  var html = "<p>" + name + "</p>";
  GEvent.addListener(marker, "click", function(){
    marker.openInfoWindowHtml(html);
  });


マーカーをクリックすると説明が吹き出しで表示されるようにするためには,GMarkerクラスのopenInfoWindowHtml()メソッドを使います.引数にはHTMLで記述された文字列を渡します.
マーカをクリックすると吹き出しが表示されるコードはこちらで示しました.


HTMLファイルを用意します.

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>JSON形式ファイルからのマーカー表示</title>
    <script src="http://maps.google.com/maps?file=api&v=2&
    key=(ここにGoogleMapsキーを入力)&sensor=false"
            type="text/javascript" charset="utf-8"></script>
    <script src="wjsonmapset.js" type="text/javascript"></script>
  </head>
  <body onload="initialize()" onunload="GUnload()">
    <div id="map_canvas" style="width: 400px; height: 400px"></div>

    <form>
    <p>
    <input type="button" id="btn" value="マーカーを表示" onclick="downloadData()" />
    </p>
    </form>

  </body>
</html>


ウェブサイトはこちら

ボタンを押下することでマーカが表示され,マーカをクリックするとデータが表示されます.


演習課題