Google Maps API V3 で、追加したマーカーをクリックしたときに情報ウィンドウを表示させてみました。
Reference
Google公式のリファレンスを参考にしました。
- 参考:Google Maps Javascript API V3 Reference
- Google Maps JavaScript API V3 は IE6 サポート対象外 なのでお気をつけ下さい。
Markerに情報ウィンドウを表示させる
追加したMarkerに情報ウィンドウを表示してみました。
1. Mapクラスを生成
MapOptionsオブジェクトの設定して、Mapクラスの引数に指定します。
var op={ zoom:15, center:new google.maps.LatLng(35.507456,139.617585), mapTypeId:google.maps.MapTypeId.ROADMAP }; var map=new google.maps.Map(document.getElementById("map_canvas"),op);
2. Markerクラスを生成
MarkerOptionsオブジェクトの設定して、Markerクラスの引数に指定します。
var obj={ position:new google.maps.LatLng(35.507456,139.617585), map:map }; var marker=new google.maps.Marker(obj);
3. Markerに情報ウィンドウを表示させる
InfoWindowOptionsオブジェクトを設定して、InfoWindowクラスを生成します。
生成したInfoWindowを使って、自動的にMarkerから情報ウィンドウを表示させます。
content
には、HTMLのソースが指定できるので、画像やリンクを貼ったりもできます。
var info=new google.maps.InfoWindow({content:'<p>新横浜駅</p>'}); info.open(map,marker);
4. Markerがクリックされたときに、情報ウィンドウを表示させる
イベントリスナーを使って、Markerがクリックされたときに情報ウィンドウを表示させます。
google.maps.event.addListener(marker,'click',function(){ info.open(map,marker); });
まとめ
1〜4をまとめると以下のようになります。
<html lang="ja"> <head> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=ja"></script> <script type="text/javascript"> // <![CDATA[ window.onload=function(){ var op={ zoom:15, center:new google.maps.LatLng(35.507456,139.617585), mapTypeId:google.maps.MapTypeId.ROADMAP }; var map=new google.maps.Map(document.getElementById("map_canvas"),op); var obj={ position:new google.maps.LatLng(35.507456,139.617585), map:map }; var marker=new google.maps.Marker(obj); var info=new google.maps.InfoWindow({content:'<p>新横浜駅</p>'}); info.open(map,marker); google.maps.event.addListener(marker,'click',function(){ info.open(map,marker); }); } // ]]> </script> </head> <body> <div id="map_canvas" style="width:550px;height:400px"></div> </body>
サンプル
- Example:gmap-simple-3.html
情報ウィンドウにストリートビューを追加してみる
少し追加で修正して、情報ウィンドウの中にストリートビューを追加してみました。
やり方は正しいか分かりませんが、情報ウィンドウにDIVを指定して開いたときに StreetViewPanoramaクラスを設定するようにしています。
StreetViewPanoramaOptionsオブジェクトを設定するときに、pov
でカメラの角度、相対的なカメラのピッチ、ズームレベルを指定できます。
<html lang="ja"> <head> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=ja"></script> <script type="text/javascript"> // <![CDATA[ window.onload=function(){ var op={ zoom:15, center:new google.maps.LatLng(35.507456,139.617585), mapTypeId:google.maps.MapTypeId.ROADMAP }; var map=new google.maps.Map(document.getElementById("map_canvas"),op); var obj={ position:new google.maps.LatLng(35.507456,139.617585), map:map }; var marker=new google.maps.Marker(obj); var info=new google.maps.InfoWindow({content:'<div id="streetview" style="width:200px;height:150px"></div>'}); google.maps.event.addListener(marker,'click',function(){ info.open(map,marker); }); var panoOptions={ position:new google.maps.LatLng(35.507456,139.617585), addressControl:false, linksControl:true, navigationControl:true, navigationControlOptions:{position:google.maps.ControlPosition.RIGHT,style:google.maps.NavigationControlStyle.SMALL}, panControl:true, panControlOptions:{position:google.maps.ControlPosition.TOP_LEFT}, enableCloseButton:false, pov:{heading:0,pitch:0,zoom:1} } google.maps.event.addListener(info,'domready',function(){ var panorama=new google.maps.StreetViewPanorama(document.getElementById("streetview"),panoOptions); }); info.open(map,marker); } // ]]> </script> </head> <body> <div id="map_canvas" style="width:550px;height:400px"></div> </body>
サンプル
- Example:gmap-simple-3-2.html