我是地图和OpenLayers的新手,但是我正在研究Openlayers,因为我在下一个项目中需要地图功能。该地图是中世纪城镇的WMS图像,但没有任何地理参考信息。
我找到了如何注册事件,但问题是“eventargs”没有像我找到的例子那样工作。在其中一个例子中,他们在用户淘汰之后得到x和y值:
map.events.register('moveend', map, function (e)
{
alert(e.xy);
});
如果我在Visual Studio中尝试此操作,则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>
在OpenLayers示例中,他们不使用eventargs,但我认为必须有一种方法可以获得zoomlevel,或者在平移后获得x和y?
谢谢!
答案 0 :(得分:0)
没有向moveend事件发送显式xy作为侦听器的参数。所以,虽然你可以写,
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回调中设置断点,则可以看到这些属性。如果您还没有查看地图的来源,那么了解正在发生的事情是非常值得的。 OpenLayers.Map.js
您将看到moveend事件是在没有任何参数的情况下触发的,或者是一个boolean,zoomChanged。