2014-06-10 105 views
0

我是新來的地圖和OpenLayers,但我正在研究Openlayers,因爲我需要在我的下一個項目中使用地圖功能。該地圖是中世紀小鎮的WMS圖像,但沒有任何地理參考信息。獲取註冊事件的事件

我發現瞭如何註冊事件,但問題是「eventargs」不能像我發現的例子那樣工作。在其中一個例子,他們所得到的x和y的值的用戶平移這樣後:

map.events.register('moveend', map, function (e) 
{ 
    alert(e.xy); 
}); 

如果我嘗試這在Visual Studio中,電子不具有XY屬性。我錯過了什麼?這是我現在所擁有的代碼:

<script type="text/javascript">   

     var map, layer; 

     function init() { 
      var windowHeight = $(window).height(); 
      var windowWidth = $(window).width(); 
      var mapdiv = $('#map'); 
      mapdiv.css({width: windowWidth + 'px', height: windowHeight + 'px'}); 

      map = new OpenLayers.Map('map', { maxResolution: 1000 }); 
      layer = new OpenLayers.Layer.Image(
       'Globe ESA', 
       '[url]', 
       new OpenLayers.Bounds(-180.0, -12333.5, 21755.5, 90.0), 
       new OpenLayers.Size(windowWidth, windowHeight), 
       {numZoomLevels: 100} 
      ); 
      map.addLayer(layer); 
      nav = new OpenLayers.Control.Navigation(); 
      map.addControl(nav); 
      //events test 
      map.events.register('moveend', map, function (e) 
      { 
       alert(e.xy); 
      }); 
      map.zoomToMaxExtent(); 
     } 
    </script> 

在不使用的EventArgs中的OpenLayers的例子,但我認爲必須有一種方式來獲得的縮放級別,或平移後的x和y?

謝謝!

回答

0

沒有將顯式的xy作爲參數發送給listener。所以,雖然你可以寫,

map.events.register('moveend', map, function(xy){ 

xy不會包含任何有用的信息。

但是,您可以從OpenLayers.Map本身獲取信息,例如您將作爲對象傳遞給moveend事件的maxExtent和zoom。

map.events.register('moveend', map, function(){   
    console.log(map.maxExtent + " " + map.getZoom()); 
}); 

還有很多其他屬性與地圖相關聯,您可以看到如果您在移動回調中設置斷點。如果你還沒有看過地圖的來源,那麼瞭解發生的事情是非常值得的。 OpenLayers.Map.js

您將看到moveend事件是觸發的,不帶任何參數或觸發一個布爾型zoomChanged。

+0

謝謝你的幫助!至少我現在知道,openlayers不會幫助我。 –

+0

那麼,你可以得到縮放和範圍,這是你所要求的不是? OpenLayers是一個非常好的放在一起的lib,imho,我基本上從源代碼中學習了Javascript。如果你準備擴展功能,你幾乎可以做任何事情。 –

+0

是的,但exents永遠不會改變。我可以隨心所欲地四處轉轉。我需要知道多少,所以我可以問一個新的形象到服務器與知識的界限。 –