Google ストリートビューの視点とマーカーを同期する

Google Maps API v3では、ストリートビューと地図を別々に表示することができます。 地図はMapクラス、ストリートビューはで作成できます。 2つを連動するには、Map.setStreetView()メソッドでStreetViewPanoramaクラスのインスタンスを設定すると可能です。 または、MapOptions.streetViewプロパティでも設定できます。

それだけだと最初からストリートビューを表示しないので、MVCObject.bindTo()メソッドで地図の中心座標をストリートビューの 表示位置を連動するようにします。 (Mapクラスは、MVCObjectクラスを継承しているのでMVCObjectクラスのメソッドが利用できます。)

<script type='text/javascript'>

  var mapCanvas;
  function initialize(){
    //地図を作成する
    var mapOptions = {
      zoom : 18,
      mapTypeId : google.maps.MapTypeId.ROADMAP
    };
    var mapDiv = document.getElementById("map_canvas");
    mapCanvas = new google.maps.Map(mapDiv, mapOptions);
    
    //ストリートビューオブジェクトの作成
    var streetViewDiv = document.getElementById("streetview_canvas");
    var streetViewOptions = {
      position : new google.maps.LatLng(35.014975, 135.782479)
    };
    var streetView = new google.maps.StreetViewPanorama(streetViewDiv, streetViewOptions);
    
    //地図とストリートビューを連動する
    mapCanvas.setStreetView(streetView);
    
    //ストリートビューの位置を地図と連動する
    mapCanvas.bindTo("center", streetView, "position");
    
    //ストリートビューの青いレイヤーを表示する
    //(http://googlemaps.googlermania.com/google_maps_api_v3/ja/map_example_streetview_layer.html)
    var streetViewLayer = new google.maps.ImageMapType({
      getTileUrl : function(coord, zoom) {
        return "http://www.google.com/cbk?output=overlay&zoom=" + zoom + "&x=" + coord.x + "&y=" + coord.y + "&cb_client=api";
      },
      tileSize: new google.maps.Size(256, 256)
    });
    mapCanvas.overlayMapTypes.insertAt(0, streetViewLayer);
  }
  google.maps.event.addDomListener(window, "load", initialize);
  </script>





サイト内検索
Google Maps APIプログラミング入門 第2版
Google Maps APIプログラミング入門 第2版
全520ページ。Google Maps API version3を中心に公式ドキュメントより詳しく解説しています。
詳しくはこちら
Google Maps APIプログラミングガイド

Google Maps API Expert 4人が共著で執筆。中級者向けに実用に役立つサンプルを中心に紹介! スマートフォン時代に合わせたGoogle Maps APIの使い方も掲載。
詳しくはこちら