「GoogleMaps API V3」 の使い方その6(続々イベント)
■マップのイベントとマーカーのイベントの複合的な使い方
マップ上でクリックした位置にマーカーを表示し、さらにそのマーカーをクリックした時に マーカーの緯度経度の値を情報ウインドウに表示します。
この例は、Googleのサンプルとして乗っているものを変更したものです。
マップ上でのクリックイベント時の関数を設定し、その中でマーカーを生成し、さらに情報ウインドウの表示を行うように、マーカーのクリックイベント時の関数を設定しています。
また、マーカーを生成した時に、そのマーカーをグローバル変数の配列に保存し、その配列のマーカーを 使って、再表示、クリア、削除処理を行っています。
<head>
<title>Google Map API v3-6</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?key=MyKeyCode" charset="utf-8"></script>
<script type="text/javascript">
var map; // GoogleMapオブジェクトの変数宣言
var markers = []; // マーカー保存配列
function initialize() {
// Google Mapで利用する初期設定用の変数
var latlng = new google.maps.LatLng(36.062092, 136.223323);
var mapOptions = {
zoom: 14,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: latlng
};
// GoogleMapの生成
map = new google.maps.Map(document.getElementById("map"), mapOptions);
// マップのクリックイベントの関数登録
google.maps.event.addListener(map, 'click', function(event) {
// マップ上の位置でマーカーを生成
addMarker(event.latLng);
});
}
// マーカーの生成関数
function addMarker(location) {
// マーカーを生成
marker = new google.maps.Marker({
position: location,
map: map
});
// 情報ウインドウの生成とクリックイベント関数の登録処理
setMarkerListener(marker, location);
// 生成されたマーカーを保存
markers.push(marker);
}
// 情報ウインドウの生成とクリックイベント関数の登録処理
function setMarkerListener(marker, location) {
// 表示文字列の生成(緯度・経度)
var contentString = "lat:" + location.lat() + "<br>"
+ "lng:" + location.lng();
// 情報ウィンドウの生成
var infoWindow = new google.maps.InfoWindow({
content: contentString,
maxWidth: 200
});
// マーカーのクリックイベントの関数登録
google.maps.event.addListener(marker, 'click', function(event) {
// 情報ウィンドウの表示
infoWindow.open(map, marker);
});
}
// マップからマーカーの画像を消す(保存されたマーカーはそのまま)
function clearMarkers() {
if (markers) {
for (i in markers) {
markers[i].setMap(null);
}
}
}
// 保存されたマーカーをマップ上に表示
function showMarkers() {
if (markers) {
for (i in markers) {
markers[i].setMap(map);
}
}
}
// マップからマーカーの画像を消し、マーカーも削除
function deleteMarkers() {
if (markers) {
clearMarkers();
markers.length = 0;
}
}
</script>
</head>
<body onload="initialize();">
マップ上をクリックするとマーカーを表示します。<br>
さらにそのマーカーをクリックすると緯度経度をウインドウに表示します。
<div>
<input onclick="clearMarkers();" type=button value="マーカー消去"/>
<input onclick="showMarkers();" type=button value="マーカー表示"/>
<input onclick="deleteMarkers();" type=button value="マーカー削除"/>
</div>
<div id="map" style="width: 400px; height: 300px;"></div>
</body>
</html>
マップ上をクリックするとマーカーを表示します。
そのマーカーをクリックすると緯度経度をウインドウに表示します。
さらに他の位置でクリックを続けると、複数のマーカーの表示ができます。
いくつかのマーカーがマップ上に表示されたあとで、「マーカー消去」ボタンをクリックすると全てのマーカーを非表示にします。
その後、「マーカー表示」ボタンをクリックすると全てのマーカーを再度表示します。
「マーカー削除」ボタンをクリックで、記憶している全てのマーカーを削除します。
■関連記事
⇒「GoogleMaps API V3」の使い方その1⇒「GoogleMaps API V3」の使い方その2
⇒「GoogleMaps API V3」の使い方その3(マーカーの表示)
⇒「GoogleMaps API V3」の使い方その4(イベント)
⇒「GoogleMaps API V3」の使い方その5(続イベント)
⇒「GoogleMaps API V3」の使い方その7(ポリライン・ポリゴン)
⇒「GoogleMaps API V3」の使い方その8(ジオコーディング)
⇒「GoogleMaps API V3」の使い方その9(ルート検索)
⇒「GoogleMaps API V3」の使い方その10(ルート検索2)
⇒「GoogleMaps API V3」の使い方その11(さらにInfowindow)