0

我有一个 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 组件吗?

谢谢

4

1 回答 1

0

函数 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

于 2013-09-27T18:59:01.103 回答