No more percentage based positioning.
Client zoom now supports both over- and undersampling.
This commit is contained in:
@@ -423,6 +423,12 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
*/
|
||||
paddingForPopups : null,
|
||||
|
||||
/**
|
||||
* Property: layerContainerOriginPx
|
||||
* {Object} Cached object representing the layer container origin (in pixels).
|
||||
*/
|
||||
layerContainerOriginPx: null,
|
||||
|
||||
/**
|
||||
* Property: minPx
|
||||
* {Object} An object with a 'x' and 'y' values that is the lower
|
||||
@@ -575,9 +581,8 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
// the layerContainerDiv is the one that holds all the layers
|
||||
id = this.id + "_OpenLayers_Container";
|
||||
this.layerContainerDiv = OpenLayers.Util.createDiv(id);
|
||||
this.layerContainerDiv.style.width = '100px';
|
||||
this.layerContainerDiv.style.height = '100px';
|
||||
this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE['Popup']-1;
|
||||
this.layerContainerOriginPx = {x: 0, y: 0};
|
||||
|
||||
this.viewPortDiv.appendChild(this.layerContainerDiv);
|
||||
|
||||
@@ -1752,13 +1757,13 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
this.center = null;
|
||||
if (dx) {
|
||||
this.layerContainerDiv.style.left =
|
||||
parseInt(this.layerContainerDiv.style.left) - dx + "px";
|
||||
(this.layerContainerOriginPx.x -= dx) + "px";
|
||||
this.minPx.x -= dx;
|
||||
this.maxPx.x -= dx;
|
||||
}
|
||||
if (dy) {
|
||||
this.layerContainerDiv.style.top =
|
||||
parseInt(this.layerContainerDiv.style.top) - dy + "px";
|
||||
(this.layerContainerOriginPx.y -= dy) + "px";
|
||||
this.minPx.y -= dy;
|
||||
this.maxPx.y -= dy;
|
||||
}
|
||||
@@ -1919,8 +1924,11 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
// (re)set the layerContainerDiv's location
|
||||
if (zoomChanged || this.layerContainerOrigin == null) {
|
||||
this.layerContainerOrigin = this.getCachedCenter();
|
||||
this.layerContainerDiv.style.left = "0px";
|
||||
this.layerContainerDiv.style.top = "0px";
|
||||
var style = this.layerContainerDiv.style;
|
||||
style.left = "0px";
|
||||
style.top = "0px";
|
||||
this.layerContainerOriginPx.x = 0;
|
||||
this.layerContainerOriginPx.y = 0;
|
||||
var maxExtent = this.getMaxExtent({restricted: true});
|
||||
var maxExtentCenter = maxExtent.getCenterLonLat();
|
||||
var lonDelta = this.center.lon - maxExtentCenter.lon;
|
||||
@@ -2006,12 +2014,14 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
var newPx = this.getViewPortPxFromLonLat(lonlat);
|
||||
|
||||
if ((originPx != null) && (newPx != null)) {
|
||||
var oldLeft = parseInt(this.layerContainerDiv.style.left);
|
||||
var oldTop = parseInt(this.layerContainerDiv.style.top);
|
||||
var oldLeft = this.layerContainerOriginPx.x;
|
||||
var oldTop = this.layerContainerOriginPx.y;
|
||||
var newLeft = Math.round(originPx.x - newPx.x);
|
||||
var newTop = Math.round(originPx.y - newPx.y);
|
||||
this.layerContainerDiv.style.left = newLeft + "px";
|
||||
this.layerContainerDiv.style.top = newTop + "px";
|
||||
this.layerContainerDiv.style.left =
|
||||
(this.layerContainerOriginPx.x = newLeft) + "px";
|
||||
this.layerContainerDiv.style.top =
|
||||
(this.layerContainerOriginPx.y = newTop) + "px";
|
||||
var dx = oldLeft - newLeft;
|
||||
var dy = oldTop - newTop;
|
||||
this.minPx.x -= dx;
|
||||
@@ -2572,8 +2582,8 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
getViewPortPxFromLayerPx:function(layerPx) {
|
||||
var viewPortPx = null;
|
||||
if (layerPx != null) {
|
||||
var dX = parseInt(this.layerContainerDiv.style.left);
|
||||
var dY = parseInt(this.layerContainerDiv.style.top);
|
||||
var dX = this.layerContainerOriginPx.x;
|
||||
var dY = this.layerContainerOriginPx.y;
|
||||
viewPortPx = layerPx.add(dX, dY);
|
||||
}
|
||||
return viewPortPx;
|
||||
@@ -2592,8 +2602,8 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
getLayerPxFromViewPortPx:function(viewPortPx) {
|
||||
var layerPx = null;
|
||||
if (viewPortPx != null) {
|
||||
var dX = -parseInt(this.layerContainerDiv.style.left);
|
||||
var dY = -parseInt(this.layerContainerDiv.style.top);
|
||||
var dX = -this.layerContainerOriginPx.x;
|
||||
var dY = -this.layerContainerOriginPx.y;
|
||||
layerPx = viewPortPx.add(dX, dY);
|
||||
if (isNaN(layerPx.x) || isNaN(layerPx.y)) {
|
||||
layerPx = null;
|
||||
|
||||
Reference in New Issue
Block a user