2014-06-10 108 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永远不会改变。我可以随心所欲地四处转转。我需要知道多少,所以我可以问一个新的形象到服务器与知识的界限。 –