2010年6月6日日曜日

StreetViewのReferenceにないイベントを拾う ~ Google Maps API v3

Google Maps API v3に変わり、以前のようにStreetViewを使うために自前でゴリゴリとPegmanの挙動やら何やらを制御してやる必要がなくなったわけだが、それにあわせてイベントの種類も減ってしまったように見える(あくまでReference的な意味で)。

というのも、StreetViewPanoramのEvents項目を見ると、そこにはcloseclickしか載っていない。

これではいつMapがStreetViewモードに切り替わったかなどのイベントが拾えないじゃないか、と思いつつもデバッグ時にStreetViewPanoramのインスタンスを掘り下げてみたらReferenceに載っていないイベントがたくさん見つかった。なので、今回はそのうちの一例を紹介しようと思う。下記の例はgoogle.maps.StreetViewPanoramaの表示・非表示が切り替わったイベントをハンドルしている。これは、MapのほうでPegmanを地図上に落とした場合などにも呼ばれるイベントなので、Mapの動作に併せてStreetViewPanoramaの挙動を変えたいときに重宝するイベントだ。

var map = new google.maps.Map("省略");
var point = new google.maps.LatLng("省略");
var panoramaOptions = {
        position: point,
        pov: {
            heading: 34,
            pitch: 10,
            zoom: 1
        }};
var panorama = new google.maps.StreetViewPanorama(document.getElementById("streetview"), panoramaOptions);
map.setStreetView(panorama);
google.maps.event.addListener(panorama, "visible_changed", function () {
  alert(panorama.getVisible() ? "StreetView見えてる" : "StreetView見えてない");
});

0 件のコメント:

コメントを投稿