primefaces p:gmap コンポーネントを含む複合コンポーネントを含む JSF2 .xhtml ページがあります。Google マップ コントロールからズーム イベントをキャプチャする 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 を追加する必要があることはわかっていますが、適切な構文がわかりません。
コンポーネント自体は、prependId="false" の「formCenter」という名前のフォーム内にあります。ページ コードを見ると、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 コンポーネントを参照するための適切な構文を教えてもらえますか?
ありがとう