我有一个 JSF2 .xhtml 页面,其中包含一个包含 primefaces p:gmap 组件的复合组件。我正在尝试创建一个 javascript 侦听器,它将从谷歌地图控件捕获缩放事件。通过添加以下 javascript 侦听器,当地图不在复合组件中时,我已经能够做到这一点:
function initialize() {
var mapOptions = {
tilt: 0,
panControl: false
};
google.maps.event.addListener( gmap.getMap(), 'zoom_changed', function() {
alert('zoom_changed');
var zoom = gmap.getMap().getZoom();
var mapZoomUpdate = document.getElementById('mapZoomUpdate');
mapZoomUpdate.value = ''+zoom;
changeMapZoomBtn.click();
});
}
google.maps.event.addDomListener(window, 'load', initialize);
在这种情况下,“gmap”是 primefaces gmap 组件 ID。
但是,当 gmap 组件位于复合组件内时,我无法引用它。我知道我需要添加复合组件 ID 作为参考的一部分,但我不知道正确的语法。
组件本身位于名为“formCenter”且 prependId="false" 的表单中。当我查看页面代码时,我看到对 gmap 组件的引用是:id="eventTransactionsMapComp:gmap"
我已经为 addListener 参考尝试了以下方法,但没有成功:
google.maps.event.addListener( eventTransactionsMapComp.gmap.getMap(), 'zoom_changed', function() {
google.maps.event.addListener( formCenter.eventTransactionsMapComp.gmap.getMap(), 'zoom_changed', function() {
我想也许我需要使用以下类型的引用来获取组件 ID:
google.maps.event.addListener( document.getElementById('formCenter:eventTransactionsMapComp:gmap').getMap(), 'zoom_changed', function() {
但这也不起作用。
任何人都可以在添加侦听器时帮助我使用正确的语法来引用 gmap 组件吗?
谢谢