Reset element.offsets in Map and Control.PanZoomBar every time movement is

initiated. Also, reset element.offsets every time map.updateSize() is called.



git-svn-id: http://svn.openlayers.org/trunk/openlayers@2915 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Schuyler Erle
2007-03-28 22:26:03 +00:00
parent f850939a3a
commit 160722a16e
2 changed files with 9 additions and 7 deletions

View File

@@ -167,6 +167,8 @@ OpenLayers.Control.PanZoomBar.prototype =
this.mouseDragStart = evt.xy.clone();
this.zoomStart = evt.xy.clone();
this.div.style.cursor = "move";
// reset the div offsets just in case the div moved
this.zoomBarDiv.offsets = null;
OpenLayers.Event.stop(evt);
},

View File

@@ -179,12 +179,13 @@ OpenLayers.Map.prototype = {
this.viewPortDiv.appendChild(this.layerContainerDiv);
this.events = new OpenLayers.Events(this, div, this.EVENT_TYPES, this.fallThrough);
this.updateSize();
// update the map size and location before the map moves
this.events.register("movestart", this, this.updateSize);
// Because Mozilla does not support the "resize" event for elements other
// than "window", we need to put a hack here.
//
if (navigator.appName.contains("Microsoft")) {
// If IE, register the resize on the div
this.events.register("resize", this, this.updateSize);
@@ -633,6 +634,8 @@ OpenLayers.Map.prototype = {
* "onresize" for an element)
*/
updateSize: function() {
// the div might have moved on the page, also
this.events.element.offsets = null;
var newSize = this.getCurrentSize();
var oldSize = this.getSize();
if (oldSize == null)
@@ -647,9 +650,6 @@ OpenLayers.Map.prototype = {
this.layers[i].onMapResize();
}
// the div might have moved on the page, also
this.events.element.offsets = null;
if (this.baseLayer != null) {
var center = new OpenLayers.Pixel(newSize.w /2, newSize.h / 2);
var centerLL = this.getLonLatFromViewPortPx(center);