diff --git a/lib/OpenLayers/Layer.js b/lib/OpenLayers/Layer.js index c3f7f461fe..8ae093513c 100644 --- a/lib/OpenLayers/Layer.js +++ b/lib/OpenLayers/Layer.js @@ -74,12 +74,14 @@ OpenLayers.Layer = OpenLayers.Class({ * - *loadend* Triggered when layer loading ends. * - *loadcancel* Triggered when layer loading is canceled. * - *visibilitychanged* Triggered when layer visibility is changed. - * - *moveend* Triggered when layer is moved, object passed as + * - *move* Triggered when layer moves (triggered with every mousemove + * during a drag). + * - *moveend* Triggered when layer is done moving, object passed as * argument has a zoomChanged boolean property which tells that the * zoom has changed. */ EVENT_TYPES: ["loadstart", "loadend", "loadcancel", "visibilitychanged", - "moveend"], + "move", "moveend"], /** * APIProperty: events diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index 1d059fee6c..81e8b7882c 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -1562,6 +1562,13 @@ OpenLayers.Map = OpenLayers.Class({ //send the move call to the baselayer and all the overlays this.baseLayer.moveTo(bounds, zoomChanged, dragging); + if(dragging) { + this.baseLayer.events.triggerEvent("move"); + } else { + this.baseLayer.events.triggerEvent("moveend", + {"zoomChanged": zoomChanged} + ); + } bounds = this.baseLayer.getExtent(); @@ -1584,9 +1591,13 @@ OpenLayers.Map = OpenLayers.Class({ } if (inRange && layer.visibility) { layer.moveTo(bounds, zoomChanged, dragging); - layer.events.triggerEvent("moveend", - {"zoomChanged": zoomChanged} - ); + if(dragging) { + layer.events.triggerEvent("move"); + } else { + layer.events.triggerEvent("moveend", + {"zoomChanged": zoomChanged} + ); + } } } } diff --git a/tests/Map.html b/tests/Map.html index fc53af7530..7f65778a43 100644 --- a/tests/Map.html +++ b/tests/Map.html @@ -746,16 +746,24 @@ } function test_Map_moveTo(t) { - t.plan(1); + t.plan(2); map = new OpenLayers.Map('map'); var baseLayer = new OpenLayers.Layer.WMS("Test Layer", "http://octo.metacarta.com/cgi-bin/mapserv?", {map: "/mapdata/vmap_wms.map", layers: "basic"}, {maxResolution: 'auto', maxExtent: new OpenLayers.Bounds(-10,-10,10,10)}); + baseLayer.events.on({ + move: function() { + t.ok(true, "move listener called"); + }, + moveend: function(e) { + t.eq(e.zoomChanged, true, "moveend listener called with expected value"); + } + }); map.addLayer(baseLayer); var ll = new OpenLayers.LonLat(-100,-150); - map.moveTo(ll, 0); + map.moveTo(ll, 2); t.ok(map.getCenter().equals(new OpenLayers.LonLat(0,0)), "safely sets out-of-bounds lonlat"); }