0

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 コンポーネントを参照するための適切な構文を教えてもらえますか?

ありがとう

4

1 に答える 1