如何在javascript侦听器中引用复合组件?

时间:2012-11-09 14:59:14

标签: javascript google-maps jsf-2

我有一个JSF2 .xhtml页面,其中包含一个复合组件,其中包含一个主要的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”是主要的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组件吗?

由于

1 个答案:

答案 0 :(得分:0)

function findMe(){

                navigator.geolocation.getCurrentPosition(
                    function(position) {
                        var map = gmap.getMap(),
                        latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
                        map.setCenter(latlng);
                        var marker = new google.maps.Marker({
                            position: latlng
                        });
                        marker.setMap(map);
                    },
                    function(error) {
                        alert(error.message);
                    },
                    {
                       enableHighAccuracy: true
                    });
            }

我希望你有用!!

Lobotex