Adding Loc.add method.

This commit is contained in:
ahocevar
2012-06-24 10:09:24 +02:00
parent 587512cac8
commit 81577d6dce
3 changed files with 22 additions and 8 deletions

View File

@@ -120,6 +120,22 @@ ol.Loc.prototype.doTransform = function(proj) {
return new ol.Loc(point['x'], point['y'], this.z_, proj);
};
/**
* Adds the passed x, y(, z) delta to a new location.
*
* @param {number} x
* @param {number} y
* @param {number=} opt_z
* @returns {ol.Loc}
*/
ol.Loc.prototype.add = function(x, y, opt_z) {
var newZ;
if (goog.isDef(this.z_)) {
newZ = (opt_z || 0) + this.z_;
}
return new ol.Loc(this.x_ + x, this.y_ + y, newZ, this.projection_);
};
/**
* Clean up.
* @export

View File

@@ -327,10 +327,9 @@ ol.Map.prototype.setZoom = function(zoom, opt_anchor) {
var size = this.getSize(),
anchorLoc = this.getLocForPixel(opt_anchor),
newRes = this.getResolutionForZoom(newZoom);
newCenter = new ol.Loc(
anchorLoc.getX() + (size.width/2 - opt_anchor.x) * newRes,
anchorLoc.getY() - (size.height/2 - opt_anchor.y) * newRes,
undefined, this.getProjection()
newCenter = anchorLoc.add(
(size.width/2 - opt_anchor.x) * newRes,
(opt_anchor.y - size.height/2) * newRes
);
} else {
newCenter = this.center_;

View File

@@ -89,10 +89,9 @@ ol.renderer.MapRenderer.prototype.getLocForPixel = function(pixel) {
var center = this.renderedCenter_,
resolution = this.renderedResolution_,
size = goog.style.getSize(this.container_);
return new ol.Loc(
center.getX() - (size.width/2 - pixel.x)*resolution,
center.getY() + (size.height/2 - pixel.y)*resolution,
undefined, this.renderedCenter_.getProjection()
return center.add(
(pixel.x - size.width/2) * resolution,
(size.height/2 - pixel.y) * resolution
);
};