Google maps api v3 マーカー(MarkerManager使用)(自分用メモ)[Google][maps]
MarkerManagerを使ってGoogle maps 上にマーカーを置いてみます。
google-maps-utility-library-v3プロジェクトサイト
Google Code Archive - Long-term storage for Google Code Project Hosting.
HTML
<html> <head> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/tags/markermanager/1.0/src/markermanager.js"></script> <script type="text/javascript" src="map.js"></script> </head> <body onload="init();"> <button onclick="displayMarker()">マーカー表示</button> <button onclick="hideMarker()">マーカー非表示</button> <button onclick="clearMarkers()">マーカー削除</button> <div id="map" style="width:45%; height:60%"></div> </body> </html>
Javascript(map.js)
var centerLat = 35.678918; var centerLon = 139.746596; var sLat = centerLat; var sLon = centerLon; var zoom = 6; var num = 10; var dist = 0.5; var defMarker = 'http://maps.google.co.jp/mapfiles/ms/icons/red-dot.png'; var moMarker = 'http://maps.google.co.jp/mapfiles/ms/icons/blue-dot.png'; var map; var mMng; function init() { mapOpt = { zoom: zoom, center: new google.maps.LatLng(centerLat, centerLon), mapTypeId: google.maps.MapTypeId.ROADMAP }; map = new google.maps.Map(document.getElementById("map"), mapOpt); mMng = new MarkerManager(map); var listener = google.maps.event.addListener(map, 'bounds_changed', function(){ createMarkers(); google.maps.event.removeListener(listener); mMng.hide(); }); } function createMarkers() { var lat = sLat; var lon = sLon; var no = 1; for(var latIdx = 0; latIdx < num; latIdx++) { for(var lonIdx = 0; lonIdx < num; lonIdx++) { var marker = new google.maps.Marker({ position: new google.maps.LatLng(lat, lon), icon: defMarker, title: 'No: ' + no, infoWindowOpenTimes: 0 // マーカークリックの度に何重にも吹き出しが // 表示されないようにするための制御用プロパティ // を追加しておく。 }); lat += dist; no++; mMng.addMarker(addEvent(marker), map.getZoom()); } lat = sLat; lon += dist; } } function addEvent(marker) { google.maps.event.addListener(marker, 'click', function(){ if(0 == marker.infoWindowOpenTimes) { var pos = marker.getPosition(); var content = marker.getTitle() + '<br/>Lat: ' + pos.lat() + '<br/>Lon: ' + pos.lng(); var infoWindow = new google.maps.InfoWindow({ content: content }); google.maps.event.addListener(infoWindow, 'closeclick', function(){ marker.infoWindowOpenTimes = 0; }); infoWindow.open(map, marker); marker.infoWindowOpenTimes += 1; } }); google.maps.event.addListener(marker, 'mouseover', function(){ marker.setIcon(moMarker); }); google.maps.event.addListener(marker, 'mouseout', function(){ marker.setIcon(defMarker); }); google.maps.event.addListener(marker, 'dblclick', function(){ marker.setMap(null); }); return marker; } function displayMarker() { mMng.show(); } function hideMarker() { mMng.hide(); mMng.refresh(); } function clearMarkers() { mMng.clearMarkers(); }