2012-11-09 53 views
0

我有一個JSF2 .xhtml頁面,其中包含一個包含primefaces p:gmap組件的複合組件。 我正在嘗試創建一個JavaScript偵聽器,它將捕獲來自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作爲參考的一部分,但我不知道正確的語法。

組件本身位於名爲「formCenter」的表單中,其中prependId =「false」。 當我看網頁代碼中,我看到了參考GMAP成分是: ID =「eventTransactionsMapComp:GMAP」

我已經試過了,沒有運氣的addListener參考以下內容:

谷歌。 maps.event.addListener(eventTransactionsMapComp.gmap.getMap(), '部分zoom_changed',函數(){

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組件?

感謝

回答

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

相關問題