「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)