Fixed zoomend event code; changed semantics of the argument to moveToNewExtent to make the argument be the *previous* zoom level. Added tests.
git-svn-id: http://svn.openlayers.org/trunk/openlayers@66 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
+12
-15
@@ -241,10 +241,10 @@ OpenLayers.Map.prototype = {
|
|||||||
this.moveLayerContainer(latlon);
|
this.moveLayerContainer(latlon);
|
||||||
}
|
}
|
||||||
this.center = latlon.copyOf();
|
this.center = latlon.copyOf();
|
||||||
var zoomChanged = false;
|
var zoomChanged = null;
|
||||||
if (zoom != null) {
|
if (zoom != null && zoom != this.zoom
|
||||||
if (this.zoom && zoom != this.zoom)
|
&& zoom >= 0 && zoom <= this.getZoomLevels()) {
|
||||||
zoomChanged = true;
|
zoomChanged = (this.zoom == null ? 0 : this.zoom);
|
||||||
this.zoom = zoom;
|
this.zoom = zoom;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -254,17 +254,18 @@ OpenLayers.Map.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
moveToNewExtent: function (zoomChanged) {
|
moveToNewExtent: function (zoomChanged) {
|
||||||
if (zoomChanged) { // reset the layerContainerDiv's location
|
if (zoomChanged != null) { // reset the layerContainerDiv's location
|
||||||
this.layerContainerDiv.style.left = "0px";
|
this.layerContainerDiv.style.left = "0px";
|
||||||
this.layerContainerDiv.style.top = "0px";
|
this.layerContainerDiv.style.top = "0px";
|
||||||
}
|
}
|
||||||
var bounds = this.getExtent();
|
var bounds = this.getExtent();
|
||||||
for (var i = 0; i < this.layers.length; i++) {
|
for (var i = 0; i < this.layers.length; i++) {
|
||||||
this.layers[i].moveTo(bounds, zoomChanged);
|
this.layers[i].moveTo(bounds, (zoomChanged != null));
|
||||||
}
|
}
|
||||||
this.events.triggerEvent("move");
|
this.events.triggerEvent("move");
|
||||||
if (zoomChanged)
|
if (zoomChanged != null)
|
||||||
this.events.triggerEvent("zoomend");
|
this.events.triggerEvent("zoomend",
|
||||||
|
{oldZoom: zoomChanged, newZoom: this.zoom});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -286,8 +287,7 @@ OpenLayers.Map.prototype = {
|
|||||||
if (zoom >= 0 && zoom <= this.getZoomLevels()) {
|
if (zoom >= 0 && zoom <= this.getZoomLevels()) {
|
||||||
var oldZoom = this.zoom;
|
var oldZoom = this.zoom;
|
||||||
this.zoom = zoom;
|
this.zoom = zoom;
|
||||||
this.moveToNewExtent(true);
|
this.moveToNewExtent(oldZoom);
|
||||||
this.events.triggerEvent("zoomend", {oldZoom: oldZoom, newZoom: this.zoom});
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -303,7 +303,7 @@ OpenLayers.Map.prototype = {
|
|||||||
|
|
||||||
zoomExtent: function() {
|
zoomExtent: function() {
|
||||||
var fullExtent = this.getFullExtent();
|
var fullExtent = this.getFullExtent();
|
||||||
|
var oldZoom = this.zoom;
|
||||||
this.zoom = this.getZoomForExtent( fullExtent );
|
this.zoom = this.getZoomForExtent( fullExtent );
|
||||||
this.setCenter(
|
this.setCenter(
|
||||||
new OpenLayers.LatLon(
|
new OpenLayers.LatLon(
|
||||||
@@ -311,8 +311,6 @@ OpenLayers.Map.prototype = {
|
|||||||
(fullExtent.minlon+fullExtent.maxlon)/2
|
(fullExtent.minlon+fullExtent.maxlon)/2
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
this.moveToNewExtent(true);
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -337,8 +335,7 @@ OpenLayers.Map.prototype = {
|
|||||||
*/
|
*/
|
||||||
defaultDblClick: function (evt) {
|
defaultDblClick: function (evt) {
|
||||||
var newCenter = this.getLatLonFromPixel( evt.xy );
|
var newCenter = this.getLatLonFromPixel( evt.xy );
|
||||||
this.zoomIn();
|
this.setCenter(newCenter, this.zoom + 1);
|
||||||
this.setCenter(newCenter);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+12
-2
@@ -54,17 +54,27 @@
|
|||||||
t.eq( map.maxResolution, 3.14159, "map.maxResolution set correctly via options hash" );
|
t.eq( map.maxResolution, 3.14159, "map.maxResolution set correctly via options hash" );
|
||||||
}
|
}
|
||||||
function test_05_Map_center(t) {
|
function test_05_Map_center(t) {
|
||||||
t.plan(5);
|
t.plan(4);
|
||||||
map = new OpenLayers.Map($('map'));
|
map = new OpenLayers.Map($('map'));
|
||||||
map.setCenter(new OpenLayers.LatLon(1,2), 0);
|
map.setCenter(new OpenLayers.LatLon(1,2), 0);
|
||||||
map.zoomIn();
|
map.zoomIn();
|
||||||
t.ok( map.getCenter() instanceof OpenLayers.LatLon, "map.getCenter returns a LatLon");
|
|
||||||
t.eq( map.getZoom(), 1, "map.zoom is correct after calling setCenter,zoom in");
|
t.eq( map.getZoom(), 1, "map.zoom is correct after calling setCenter,zoom in");
|
||||||
t.eq( map.getCenter().lat, 1, "map center lat is correct after calling setCenter,zoom in");
|
t.eq( map.getCenter().lat, 1, "map center lat is correct after calling setCenter,zoom in");
|
||||||
t.eq( map.getCenter().lon, 2, "map center lon is correct after calling setCenter, zoom in");
|
t.eq( map.getCenter().lon, 2, "map center lon is correct after calling setCenter, zoom in");
|
||||||
map.zoomOut();
|
map.zoomOut();
|
||||||
t.eq( map.getZoom(), 0, "map.zoom is correct after calling setCenter,zoom in, zoom out");
|
t.eq( map.getZoom(), 0, "map.zoom is correct after calling setCenter,zoom in, zoom out");
|
||||||
}
|
}
|
||||||
|
function test_06_Map_zoomend_event (t) {
|
||||||
|
t.plan(3);
|
||||||
|
map = new OpenLayers.Map('map');
|
||||||
|
map.events.register("zoomend", {count: 0}, function() {
|
||||||
|
this.count++;
|
||||||
|
t.ok(true, "zoomend event was triggered " + this.count + " times");
|
||||||
|
});
|
||||||
|
map.setCenter(new OpenLayers.LatLon(1,2), 0);
|
||||||
|
map.zoomIn();
|
||||||
|
map.zoomOut();
|
||||||
|
}
|
||||||
function test_99_Map_destroy (t) {
|
function test_99_Map_destroy (t) {
|
||||||
t.plan( 2 );
|
t.plan( 2 );
|
||||||
map = new OpenLayers.Map($('map'));
|
map = new OpenLayers.Map($('map'));
|
||||||
|
|||||||
Reference in New Issue
Block a user