adjusting dx and dy instad of not moving the map at all when we reach the restrictedExtent. p=me,elemoine, r=elemoine (closes #3388)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@12158 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
+6
-10
@@ -1674,8 +1674,6 @@ OpenLayers.Map = OpenLayers.Class({
|
|||||||
* dy - {Number}
|
* dy - {Number}
|
||||||
*/
|
*/
|
||||||
moveByPx: function(dx, dy) {
|
moveByPx: function(dx, dy) {
|
||||||
dx = Math.round(dx);
|
|
||||||
dy = Math.round(dy);
|
|
||||||
var hw = this.size.w / 2;
|
var hw = this.size.w / 2;
|
||||||
var hh = this.size.h / 2;
|
var hh = this.size.h / 2;
|
||||||
var x = hw + dx;
|
var x = hw + dx;
|
||||||
@@ -1689,15 +1687,13 @@ OpenLayers.Map = OpenLayers.Class({
|
|||||||
// wrapping the date line makes no sense for restricted extents
|
// wrapping the date line makes no sense for restricted extents
|
||||||
wrapDateLine = false;
|
wrapDateLine = false;
|
||||||
}
|
}
|
||||||
var valid = y <= this.maxPx.y - yRestriction &&
|
dx = wrapDateLine ||
|
||||||
y >= this.minPx.y + yRestriction;
|
|
||||||
var minX = this.minPx.x, maxX = this.maxPx.x;
|
|
||||||
if (!wrapDateLine) {
|
|
||||||
valid = valid &&
|
|
||||||
x <= this.maxPx.x - xRestriction &&
|
x <= this.maxPx.x - xRestriction &&
|
||||||
x >= this.minPx.x + xRestriction;
|
x >= this.minPx.x + xRestriction ? Math.round(dx) : 0;
|
||||||
}
|
dy = y <= this.maxPx.y - yRestriction &&
|
||||||
if (valid) {
|
y >= this.minPx.y + yRestriction ? Math.round(dy) : 0;
|
||||||
|
var minX = this.minPx.x, maxX = this.maxPx.x;
|
||||||
|
if (dx || dy) {
|
||||||
if (!this.dragging) {
|
if (!this.dragging) {
|
||||||
this.dragging = true;
|
this.dragging = true;
|
||||||
this.events.triggerEvent("movestart");
|
this.events.triggerEvent("movestart");
|
||||||
|
|||||||
@@ -1824,6 +1824,26 @@
|
|||||||
map.destroy();
|
map.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// test for http://trac.osgeo.org/openlayers/ticket/3388
|
||||||
|
function test_moveByPx_restrictedExtent(t) {
|
||||||
|
t.plan(2);
|
||||||
|
|
||||||
|
var map = new OpenLayers.Map({
|
||||||
|
div: 'map',
|
||||||
|
restrictedExtent: new OpenLayers.Bounds(-22.5,-11.25,22.5,11.25),
|
||||||
|
layers: [
|
||||||
|
new OpenLayers.Layer('name', {isBaseLayer: true})
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
map.zoomToExtent(new OpenLayers.Bounds(-11.25, 0, 11.25, 11.25));
|
||||||
|
|
||||||
|
map.moveByPx(-10, -10);
|
||||||
|
t.eq(map.layerContainerDiv.style.left, '10px', 'layer container left correct');
|
||||||
|
t.eq(map.layerContainerDiv.style.top, '0px', 'layer container top correct');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
Reference in New Issue
Block a user