- Home ›
- Google Maps API入門 ›
- 座標データ ›
- HERE
日本の湖
広告
日本の湖に関するデータです。面積が大きい順にトップ30を選択しました。JSON形式で用意してあります。
ID、湖名、緯度、経度、の4つのデータで1セットとなっています。
{
"marker":[
{"id":"01","lakename":"琵琶湖","lat":35.265804,"lng":136.104126},
{"id":"02","lakename":"霞ヶ浦","lat":36.03855,"lng":140.403557},
{"id":"03","lakename":"サロマ湖","lat":44.137377,"lng":143.797989},
{"id":"04","lakename":"猪苗代湖","lat":37.47731,"lng":140.09388},
...(略)
{"id":"27","lakename":"池田湖","lat":31.235702,"lng":130.56118},
{"id":"28","lakename":"桧原湖","lat":37.67825,"lng":140.056458},
{"id":"29","lakename":"涸沼","lat":36.276801,"lng":140.507927},
{"id":"30","lakename":"濤沸湖","lat":43.935082,"lng":144.394855}
]
}
今回のサンプルではGMarkerManagerを使って詳細な地図を表示する時にはマーカーを消すように設定してあります。
サンプル
では簡単なサンプルで試してみます。
var map;
var manager;
function initialize() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.addControl(new GMapTypeControl());
map.addControl(new GLargeMapControl());
map.setCenter(new GLatLng(36.13628,138.604202), 5, G_SATELLITE_MAP);
manager = new GMarkerManager(map);
GDownloadUrl("./data/lake-30.json", createMap);
}
}
function createMap(jsondata, statusCode){
var json = eval("(" + jsondata + ")");
var selectHtml = "";
selectHtml += "<form>";
selectHtml += "<select id='lakename' onChange='selectLake()'>";
selectHtml += "<option value='0'>選択してください</option>";
for (var i = 0; i < json.marker.length; i++) {
var id = json.marker[i].id;
var lakename = json.marker[i].lakename;
var lat = json.marker[i].lat;
var lng = json.marker[i].lng;
var marker = createMarker(id, lakename, lat, lng)
manager.addMarker(marker, 0, 10);
selectHtml += "<option value='" + lat + "," + lng + "'>"
selectHtml += lakename;
selectHtml += "</option>";
}
selectHtml += "</select>";
selectHtml += "</form>";
document.getElementById("lake").innerHTML = selectHtml;
}
function createMarker(id, lakename, lat, lng){
var marker = new GMarker(new GLatLng(lat, lng));
var html = "<p>[" + id + "] " + lakename + "</p>";
GEvent.addListener(marker, "click", function(){
marker.openInfoWindowHtml(html);
});
return marker;
}
function selectLake(obj){
var val = document.getElementById("lakename").value;
if (val != "0"){
var latlng = val.split(",");
var lat = latlng[0];
var lng = latlng[1];
map.setCenter(new GLatLng(lat, lng), 10);
}
}
<!DOCTYPE html "-//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" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>サンプル:日本の湖</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=(key)&sensor=false"
type="text/javascript" charset="utf-8"></script>
<script src="./js/code5_1.js" type="text/javascript"></script>
</head>
<body onload="initialize()" onunload="GUnload()">
<div id="lake"></div>
<div id="map" style="width:500px; height:400px;"></div>
</body>
</html>
実際に試してみた画面イメージは次の通りです。
選択メニューから湖を選択すると、選択した湖へ移動します。
GMarkerManagerを使い、各マーカーが表示される最大縮尺レベルを設定してあるため、湖が表示された状態でズームインを行うとマーカーが非表示となり湖が見やすくなります。
( Written by Tatsuo Ikura )
AjaxTower