Javascript 获取已注册事件的eventargs

Javascript 获取已注册事件的eventargs,javascript,openlayers,Javascript,Openlayers,我是地图和OpenLayers的新手,但我正在研究OpenLayers,因为我将需要在下一个项目中使用map功能。该地图是中世纪城镇的WMS图像,但没有任何地理参考信息 我发现了如何注册事件,但问题是“eventargs”没有像我发现的示例中那样工作。在其中一个示例中,他们在用户按如下方式平移后获得x和y值: map.events.register('moveend', map, function (e) { alert(e.xy); }); 如果我在VisualStudio中尝试此操

我是地图和OpenLayers的新手,但我正在研究OpenLayers,因为我将需要在下一个项目中使用map功能。该地图是中世纪城镇的WMS图像,但没有任何地理参考信息

我发现了如何注册事件,但问题是“eventargs”没有像我发现的示例中那样工作。在其中一个示例中,他们在用户按如下方式平移后获得x和y值:

map.events.register('moveend', map, function (e)
{
    alert(e.xy);
});
如果我在VisualStudio中尝试此操作,e没有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>

var映射,层;
函数init(){
var windowHeight=$(window.height();
var windowWidth=$(window.width();
var mapdiv=$(“#map”);
css({width:windowWidth+'px',height:windowHeight+'px'});
map=newOpenLayers.map('map',{maxResolution:1000});
layer=新的OpenLayers.layer.Image(
“全球欧空局”,
“[url]”,
新的OpenLayers.Bounds(-180.0,-12333.521755.5,90.0),
新OpenLayers.尺寸(窗宽、窗高),
{numZoomLevels:100}
);
map.addLayer(层);
nav=新的OpenLayers.Control.Navigation();
地图添加控制(nav);
//事件测试
map.events.register('moveend',map,function(e)
{
警报(e.xy);
});
zoomToMaxExtent();
}
在OpenLayers示例中,它们不使用eventargs,但我假设一定有办法在平移后获得zoomlevel或x和y


谢谢大家!

没有显式xy作为参数发送到moveend事件到侦听器。所以,虽然你可以写作

map.events.register('moveend', map, function(xy){
xy不包含任何有用的信息

但是,您可以从OpenLayers.Map本身获取信息,例如maxExtent和zoom,您将其作为对象传递给moveend事件

 map.events.register('moveend', map, function(){           
    console.log(map.maxExtent + " " + map.getZoom());
 });
还有许多其他与映射相关的属性,如果在moveend回调中设置断点,可以看到这些属性。如果您还没有查看map的源代码,那么了解正在发生的事情是非常值得的


您将看到moveend事件是在没有任何参数的情况下触发的,或者使用一个布尔值zoomChanged触发的

谢谢你的帮助!至少我现在知道openlayers帮不了我。好吧,你可以得到缩放和范围,这是你想要的不?OpenLayers是一个非常好的组合库,imho,我基本上从源代码中学习了Javascript。如果你准备好扩展函数,你几乎可以做任何事情。是的,但是exents永远不会改变。我可以随心所欲地四处游荡。我需要知道多少,这样我就可以使用已知的边界向服务器请求一个新映像。如果在moveend上运行map.getExtent(),则范围应该不同。你想过使用WMS吗?OpenLayers设置为自动处理平铺覆盖,因此您不必为自己担心这些事情。它是wms,但需要返回图像。它没有铺瓷砖。所以通过wms我得到了地图的图像。这是一张地图,但画在中世纪。这里不存在坐标等。因此,我认为每次有一个填充或缩放,我需要要求一个新的图像。