Optimize ol.Extent.getForView2DAndSize

This commit is contained in:
Tom Payne
2013-03-10 15:14:50 +01:00
parent 08d3120f08
commit 3a1fcdae0f
+16 -13
View File
@@ -53,21 +53,24 @@ ol.Extent.boundingExtent = function(var_args) {
* @return {ol.Extent} Extent. * @return {ol.Extent} Extent.
*/ */
ol.Extent.getForView2DAndSize = function(center, resolution, rotation, size) { ol.Extent.getForView2DAndSize = function(center, resolution, rotation, size) {
var x = resolution * size.width / 2; var dx = resolution * size.width / 2;
var y = resolution * size.height / 2; var dy = resolution * size.height / 2;
var corners = [ var cosRotation = Math.cos(rotation);
new ol.Coordinate(-x, -y), var sinRotation = Math.sin(rotation);
new ol.Coordinate(-x, y), var xs = [-dx, -dx, dx, dx];
new ol.Coordinate(x, -y), var ys = [-dy, dy, -dy, dy];
new ol.Coordinate(x, y) var i, x, y;
];
var corner;
for (i = 0; i < 4; ++i) { for (i = 0; i < 4; ++i) {
corner = corners[i]; x = xs[i];
corner.rotate(rotation); y = ys[i];
corner.add(center); xs[i] = center.x + x * cosRotation - y * sinRotation;
ys[i] = center.y + x * sinRotation + y * cosRotation;
} }
return ol.Extent.boundingExtent.apply(null, corners); var minX = Math.min.apply(null, xs);
var minY = Math.min.apply(null, ys);
var maxX = Math.max.apply(null, xs);
var maxY = Math.max.apply(null, ys);
return new ol.Extent(minX, minY, maxX, maxY);
}; };