2012-05-19 2 views
2

Я не могу запустить событие на pano_change в Streetview, которое встроено в infowindow. Мне нужно получить массив getLinks() и getPosition() объекта StreetViewPanorama каждый раз, когда пользователь переходит в окно Streetview infowindow. Это указано ниже. Я действительно не понимаю, почему (он работает для событий на маркер и infowindow).Невозможно запустить событие в Streetview

//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) для того, чтобы получить события.

Initialization

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);}); Затем я могу запросить новую позицию, а также мой новый panoID с параметром var varoID = this.getPano() ;, но не объект 'StreetViewTileData', который содержит информацию о плитке (мне нужно создать URL-адрес изображения). Мне кажется, мне нужно сначала запросить свойство 'tiles' из' StreetViewPanoramaData'. Это верно? – Florent

+0

Я не думаю, что вы должны подражать addListeners. Они должны быть последовательными, или второй, возможно, никогда не случится. Обновление моего ответа выше, чтобы показать более четко. – dda

+0

Спасибо, что он работает правильно. Я пытаюсь проверить, какое значение возвращает getLinks(), но массив кажется пустым. 'for (var i in newLinks) {alert (newLinks [i]);}' дважды отображать неинтересные данные, кроме [object Object]. Разве вы не думаете, что это должно нормально возвращать свойства 'description',' handling' и 'pano'? (как указано здесь https://developers.google.com/maps/documentation/javascript/reference?hl=fr#StreetViewLink) – Florent