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
+4 -4
View File
@@ -9,7 +9,7 @@
<script src="../lib/OpenLayers.js"></script> <script src="../lib/OpenLayers.js"></script>
<script type="text/javascript"> <script type="text/javascript">
var map = null; var map = null;
var extent = new OpenLayers.Bounds(-180, -90, 180, 90); var extent = new OpenLayers.Bounds(8, 44.5, 19, 50);
function init() { function init() {
var options = { var options = {
@@ -24,7 +24,7 @@
); );
map.addLayers([wms]); map.addLayers([wms]);
map.setCenter(extent, 1); map.zoomToExtent(extent);
document.getElementById("toggle").checked = true; document.getElementById("toggle").checked = true;
} }
@@ -68,8 +68,8 @@
<input type="checkbox" id="toggle" checked="checked" <input type="checkbox" id="toggle" checked="checked"
onclick="toggleRestrictedExtent();" /> onclick="toggleRestrictedExtent();" />
<label for="toggle"> <label for="toggle">
Toggle restricted extent (to [-180, -90, 180, 90]). Toggle restricted extent (to [8, 44.5, 19, 50]).
</label> </label>
</body> </body>
</html> </html>
+1 -1
View File
@@ -1215,7 +1215,7 @@ OpenLayers.Layer = OpenLayers.Class({
var map = this.map; var map = this.map;
if (viewPortPx != null && map.minPx) { if (viewPortPx != null && map.minPx) {
var res = map.getResolution(); 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 lon = (viewPortPx.x - map.minPx.x) * res + maxExtent.left;
var lat = (map.minPx.y - viewPortPx.y) * res + maxExtent.top; var lat = (map.minPx.y - viewPortPx.y) * res + maxExtent.top;
lonlat = new OpenLayers.LonLat(lon, lat); lonlat = new OpenLayers.LonLat(lon, lat);
+15 -15
View File
@@ -1671,21 +1671,21 @@ OpenLayers.Map = OpenLayers.Class({
var hh = this.size.h / 2; var hh = this.size.h / 2;
var x = hw + dx; var x = hw + dx;
var y = hh + dy; var y = hh + dy;
var valid = y <= this.maxPx.y && var wrapDateLine = this.baseLayer.wrapDateLine;
y >= this.minPx.y; var xRestriction = yRestriction = 0;
var minX, maxX; if (this.restrictedExtent) {
if (this.baseLayer.wrapDateLine === true) { xRestriction = hw;
minX = this.minPx.x, maxX = this.maxPx.x; yRestriction = hh;
} else { // wrapping the date line makes no sense for restricted extents
valid = valid && wrapDateLine = false;
x <= this.maxPx.x &&
x >= this.minPx.x;
} }
if (this.restrictedExtent && valid) { var valid = y <= this.maxPx.y - yRestriction &&
valid = !(this.maxPx.x - x < hw || y >= this.minPx.y + yRestriction;
x - this.minPx.x < hw || var minX = this.minPx.x, maxX = this.maxPx.x;
this.maxPx.y - y < hh || if (!wrapDateLine) {
y - this.minPx.y < hh); valid = valid &&
x <= this.maxPx.x - xRestriction &&
x >= this.minPx.x + xRestriction;
} }
if (valid) { if (valid) {
this.center = null; this.center = null;
@@ -1694,7 +1694,7 @@ OpenLayers.Map = OpenLayers.Class({
parseInt(this.layerContainerDiv.style.left) - dx + "px"; parseInt(this.layerContainerDiv.style.left) - dx + "px";
this.minPx.x -= dx; this.minPx.x -= dx;
this.maxPx.x -= dx; this.maxPx.x -= dx;
if (this.baseLayer.wrapDateLine === true) { if (wrapDateLine) {
if (this.maxPx.x > maxX) { if (this.maxPx.x > maxX) {
this.maxPx.x -= (maxX - minX); this.maxPx.x -= (maxX - minX);
}; };