From db2cbe07b76482e658e64f5b754e3b1636d9754f Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Sat, 23 Jun 2012 16:42:51 +0200 Subject: [PATCH 1/2] Transforming coords before setting center. The internal setCenter method can only be called with locations that have projections. This method always transforms. --- src/ol/Map.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ol/Map.js b/src/ol/Map.js index 580681980c..9c5edb127f 100644 --- a/src/ol/Map.js +++ b/src/ol/Map.js @@ -10,6 +10,7 @@ goog.require('ol.renderer.MapRenderer'); goog.require('goog.dom'); goog.require('goog.math'); +goog.require('goog.asserts'); /** @@ -292,7 +293,8 @@ ol.Map.prototype.getSize = function() { * @param {ol.Loc} center Center in map projection. */ ol.Map.prototype.setCenter = function(center) { - this.center_ = center; + goog.asserts.assert(!goog.isNull(center.getProjection())); + this.center_ = center.doTransform(this.getProjection()); this.conditionallyRender(); }; @@ -302,8 +304,9 @@ ol.Map.prototype.setCenter = function(center) { * @param {number} zoom */ ol.Map.prototype.setCenterAndZoom = function(center, zoom) { + goog.asserts.assert(!goog.isNull(center.getProjection())); + this.center_ = center.doTransform(this.getProjection()); this.zoom_ = this.limitZoom(zoom); - this.center_ = center; this.conditionallyRender(); }; From bcc85b9dd7d10b13fe8e0df3f560905fa462c3a4 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Sat, 23 Jun 2012 16:55:16 +0200 Subject: [PATCH 2/2] Must set a projection before setting center. --- src/ol/Map.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ol/Map.js b/src/ol/Map.js index 9c5edb127f..9f5ed399c8 100644 --- a/src/ol/Map.js +++ b/src/ol/Map.js @@ -483,6 +483,7 @@ ol.Map.prototype.moveByPx = function(dx, dy) { this.center_.getX() - dx * resolution, this.center_.getY() + dy * resolution ); + center.setProjection(this.getProjection()); this.setCenter(center); } };