◆Google Maps V3 ストリートビューの青い道路をImageMapTypeを使い地図に表示させる
v2では、streetviewのオーバーレイヤーを指定すれば、ストリートビューの対応している道路が青くハイライトされたのですが、Google Maps API V3では、簡単に1行では指定できないようです。
地図上でペグマンを持ち上げると青い道路が表示されますが、それでは不便。常にstreetview対応の青い道路がハイライト表示されるようにしてみます。
google先生のページを調べると「StreetViewTileData オブジェクトの仕様」というのがあります。 ここで、getTileUrl(pano:string, tileZoom:number, tileX:number, tileY:number)のメソッドを使い、 オーバーレイではなく、ImageMapTypeクラスを使い地図上に表示させる方法があるようです。
ただし、getTileUrlでimageのタイルが保存されているURLが判らず探していたら、かのEsaさんのデモにソースがありました(コチラ)。
getTileUrl: function(coord, zoom) { var X = coord.x % (1 << zoom); return "http://mt3.google.com/mapstt?" + "zoom=" + zoom + "&x=" + X + "&y=" + coord.y + "&client=api"; },
これを使わせていただき、前回、 Google先生の「Google Maps Javascript API V3 Map Types」のページの「ImageMapType」のデモソースを使って作成した「交通情報をImageMapTypeで表示する」のgetTileUrlのImage保存先URLを置き換えるだけで完成です。次の通り。
<script type="text/javascript"> //◆個別に指定する初期表示の設定 var center = new google.maps.LatLng(25.03926, 121.50639); var zoom = 12; var mapTypeId = google.maps.MapTypeId.ROADMAP //通常のデフォルト //var mapTypeId = google.maps.MapTypeId.SATELLITE //航空写真タイル //var mapTypeId = google.maps.MapTypeId.HYBRID //航空写真タイルと主要な機能(道路、地名)のタイル レイヤの組み合わせ //var mapTypeId = google.maps.MapTypeId.TERRAIN //起伏を示すタイル(高度や水系) </script> <script type="text/javascript"> //<![CDATA[ var map; var trafficOptions = { getTileUrl: function(coord, zoom) { var X = coord.x % (1 << zoom); return "http://cbk0.google.com/cbk?output=overlay&" + "zoom=" + zoom + "&x=" + X + "&y=" + coord.y + "&cb_client=api"; }, tileSize: new google.maps.Size(256, 256), isPng: true }; var trafficMapType = new google.maps.ImageMapType(trafficOptions); function initialize() { var myOptions = { disableDefaultUI: false,//◆API のデフォルトの UI 設定をオフ(無効)にしたい場合は”true” //◆ナビゲーションコントロール navigationControl: true, navigationControlOptions: { //◆通常 ズームコントロール style: google.maps.NavigationControlStyle.DEFAULT, position: google.maps.ControlPosition.LEFT_TOP }, //◆マップタイプコントロール mapTypeControl: true, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.DROPDOWN_MENU, position: google.maps.ControlPosition.TOP_RIGHT }, //◆スケールコントロール scaleControl: true, scaleControlOptions: { position: google.maps.ControlPosition.TOP_CENTER }, center: center, zoom: zoom, mapTypeId: mapTypeId }; map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); map.overlayMapTypes.insertAt(0, trafficMapType); } window.onload=initialize; //]]> </script>
最後イン、trafficという英単語はふさわしくないので、StreetViewに置き換えて出来上がり。
<script type="text/javascript"> //◆個別に指定する初期表示の設定 var center = new google.maps.LatLng(25.03926, 121.50639); var zoom = 12; var mapTypeId = google.maps.MapTypeId.ROADMAP //通常のデフォルト //var mapTypeId = google.maps.MapTypeId.SATELLITE //航空写真タイル //var mapTypeId = google.maps.MapTypeId.HYBRID //航空写真タイルと主要な機能(道路、地名)のタイル レイヤの組み合わせ //var mapTypeId = google.maps.MapTypeId.TERRAIN //起伏を示すタイル(高度や水系) </script> <script type="text/javascript"> //<![CDATA[ var map; var StreetViewOptions= { getTileUrl: function(coord, zoom) { var X = coord.x % (1 << zoom); return "http://cbk0.google.com/cbk?output=overlay&" + "zoom=" + zoom + "&x=" + X + "&y=" + coord.y + "&cb_client=api"; }, tileSize: new google.maps.Size(256, 256), isPng: true }; var StreetViewType = new google.maps.ImageMapType(StreetViewOptions); function initialize() { var myOptions = { disableDefaultUI: false,//◆API のデフォルトの UI 設定をオフ(無効)にしたい場合は”true” //◆ナビゲーションコントロール navigationControl: true, navigationControlOptions: { //◆通常 ズームコントロール style: google.maps.NavigationControlStyle.DEFAULT, position: google.maps.ControlPosition.LEFT_TOP }, //◆マップタイプコントロール mapTypeControl: true, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.DROPDOWN_MENU, position: google.maps.ControlPosition.TOP_RIGHT }, //◆スケールコントロール scaleControl: true, scaleControlOptions: { position: google.maps.ControlPosition.TOP_CENTER }, center: center, zoom: zoom, mapTypeId: mapTypeId }; map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); map.overlayMapTypes.insertAt(0, StreetViewType); } window.onload=initialize; //]]> </script>
◆Google Maps JavaScript API V3 サンプル
◆Google Maps JavaScript API V3
関連記事一覧
スポンサードリンク
1 Comments.