2012-05-19 29 views
2

我無法觸發嵌入在infowindow中的Streetview中的pano_change事件。每次用戶在Streetview infowindow中導航時,我需要獲取對象StreetViewPanorama的陣列getLinks()getPosition()。它被聲明如下。我真的不明白爲什麼(它適用於marker和infowindow上的事件)。無法在街景視圖中觸發事件

//code here 

var contentString = '<input type="button" value="Grab this picture" onClick="captureImage()" /> <div id="content" style="width:200px;height:200px;"></div>';  

//code here 

var infowindow = new google.maps.InfoWindow({ 
    content: contentString 
}); 

//code here// 

google.maps.event.addListener(infowindow, 'domready', function() { 
    if (pano != null) { 
     pano.unbind("position"); 
     pano.setVisible(false);  
    } 
    pano = new google.maps.StreetViewPanorama(document.getElementById("content"), { 
     navigationControl: true, 
     navigationControlOptions: {style: google.maps.NavigationControlStyle.ANDROID}, 
     enableCloseButton: false, 
     addressControl: false, 
     linksControl: false 
    }); 

    pano.bindTo("position", marker); 
    pano.setVisible(true); 

}); 

回答

2

你需要爲了得到這些事件添加google.maps.event.addListener(pano, 'links_changed', XXXX)google.maps.event.addListener(pano, 'position_changed', XXXXX)

初始化

var pano = new google.maps.StreetViewPanorama(<element>, panoramaOptions); 
google.maps.event.addListener(pano, 'pano_changed', function() { 
    // whatever 
}); 

google.maps.event.addListener(pano, 'links_changed', function() { 
    var links = pano.getLinks(); 
    for (var i in links) { 
     // whatever 
    } 
}); 

google.maps.event.addListener(panorama, 'position_changed', function() { 
    var newPos = pano.getPosition(); 
}); 

google.maps.event.addListener(pano, 'pov_changed', function() { 
    var newPoV = panorama.getPov(); 
}); 

現在,每次你有任何這三個事件(鏈接,POV,位置)相關的函數被調用的變化的時間。

+0

它適用於2'google.maps.event.addListener'。第二個是這樣的:google.maps.event.addListener(pano,'links_changed',function(){google.maps.event.addListener(pano,'position_changed',function(){}); var myPosition = this.getPosition(); alert(myPosition);});然後,我可以請求我的新位置,也可以使用'var panoID = this.getPano();'而不是包含tile信息(我需要創建圖像URL)的'StreetViewTileData'對象來創建新的panoID。我想我首先需要從'StreetViewPanoramaData'請求'tiles'屬性。那是對的嗎? – Florent

+0

我不認爲你應該疊加addListeners。它們應該是順序的,否則第二個可能永遠不會發生。更新上面的答案以更清晰地顯示。 – dda

+0

謝謝你的工作正常。我嘗試檢查getLinks()返回的值是什麼,但數組似乎是空的。 '對於(var i in newLinks){alert(newLinks [i]);}'除了[object Object]兩次顯示不是非​​常重要的信息。你不覺得它應該正常地返回屬性'description','handling'和'pano'嗎? (如https://developers.google.com/maps/documentation/javascript/reference?hl=fr#StreetViewLink所示) – Florent