Google MAPS API V3 の google.maps.Marker で、表示している画像を変更させるサンプルプログラム。下の例では、クリックするたびに○と×が交互に表示されます。画像を表示させるだけの場合は、google.maps.Markerとして好きな画像を表示させるのページを。
<script type="text/javascript" src="//maps.googleapis.com/maps/api/js"></script> <div id="map" style="width: 400px; height: 280px;"></div> <script type="text/javascript"> // 地図 var map = new google.maps.Map(document.getElementById('map'), { zoom: 14, center: new google.maps.LatLng(35.710139, 139.810833), scrollwheel: false, mapTypeId: google.maps.MapTypeId.ROADMAP }); // ○の画像 var img_o = new google.maps.MarkerImage( 'o.png', new google.maps.Size(31,31), new google.maps.Point(0,0), new google.maps.Point(16,16) ); // ×の画像 var img_x = new google.maps.MarkerImage( 'x.png', new google.maps.Size(31,31), new google.maps.Point(0,0), new google.maps.Point(16,16) ); // マーカー var marker = new google.maps.Marker({ position: new google.maps.LatLng(35.710139, 139.810833), map: map, icon: img_o // はじめは ○ }); // マーカーでクリックイベントをListen google.maps.event.addListener(marker, 'click', function(event) { if (myCompare(marker.getIcon(), img_o)) { // ○なら×を marker.setIcon(img_x); } else if (myCompare(marker.getIcon(), img_x) { // ×なら○を marker.setIcon(img_o); } else { // え? alert('Oh, my God!'); } }); //オブジェクトの比較 function myCompare(a, b) { return (JSON.stringify(a) === JSON.stringify(b)) ? true : false; } </script>
MarkerImageはコンストラクタ以外にオプション類を設定する術がないので、切り替えたい場合などは複数のMarkerImageを用意しておくか、毎回作ってやる必要があります。
デフォルトのマーカーにしたいときは、nullを与えてやれば良いようです。
marker.setIcon(null);