fixing restrictedExtent check in moveByPx. r=bartvde (closes #3138)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@11607 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
ahocevar
2011-03-02 09:55:28 +00:00
parent 41ff5b8af8
commit fb5f081ea6
3 changed files with 20 additions and 20 deletions

View File

@@ -9,7 +9,7 @@
<script src="../lib/OpenLayers.js"></script>
<script type="text/javascript">
var map = null;
var extent = new OpenLayers.Bounds(-180, -90, 180, 90);
var extent = new OpenLayers.Bounds(8, 44.5, 19, 50);
function init() {
var options = {
@@ -24,7 +24,7 @@
);
map.addLayers([wms]);
map.setCenter(extent, 1);
map.zoomToExtent(extent);
document.getElementById("toggle").checked = true;
}
@@ -68,8 +68,8 @@
<input type="checkbox" id="toggle" checked="checked"
onclick="toggleRestrictedExtent();" />
<label for="toggle">
Toggle restricted extent (to [-180, -90, 180, 90]).
Toggle restricted extent (to [8, 44.5, 19, 50]).
</label>
</body>
</html>
</html>

View File

@@ -1215,7 +1215,7 @@ OpenLayers.Layer = OpenLayers.Class({
var map = this.map;
if (viewPortPx != null && map.minPx) {
var res = map.getResolution();
var maxExtent = map.getMaxExtent();
var maxExtent = map.getMaxExtent({restricted: true});
var lon = (viewPortPx.x - map.minPx.x) * res + maxExtent.left;
var lat = (map.minPx.y - viewPortPx.y) * res + maxExtent.top;
lonlat = new OpenLayers.LonLat(lon, lat);

View File

@@ -1671,21 +1671,21 @@ OpenLayers.Map = OpenLayers.Class({
var hh = this.size.h / 2;
var x = hw + dx;
var y = hh + dy;
var valid = y <= this.maxPx.y &&
y >= this.minPx.y;
var minX, maxX;
if (this.baseLayer.wrapDateLine === true) {
minX = this.minPx.x, maxX = this.maxPx.x;
} else {
valid = valid &&
x <= this.maxPx.x &&
x >= this.minPx.x;
var wrapDateLine = this.baseLayer.wrapDateLine;
var xRestriction = yRestriction = 0;
if (this.restrictedExtent) {
xRestriction = hw;
yRestriction = hh;
// wrapping the date line makes no sense for restricted extents
wrapDateLine = false;
}
if (this.restrictedExtent && valid) {
valid = !(this.maxPx.x - x < hw ||
x - this.minPx.x < hw ||
this.maxPx.y - y < hh ||
y - this.minPx.y < hh);
var valid = y <= this.maxPx.y - yRestriction &&
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.minPx.x + xRestriction;
}
if (valid) {
this.center = null;
@@ -1694,7 +1694,7 @@ OpenLayers.Map = OpenLayers.Class({
parseInt(this.layerContainerDiv.style.left) - dx + "px";
this.minPx.x -= dx;
this.maxPx.x -= dx;
if (this.baseLayer.wrapDateLine === true) {
if (wrapDateLine) {
if (this.maxPx.x > maxX) {
this.maxPx.x -= (maxX - minX);
};