Changing extent structure back to single array: [minX, minY, maxX, maxY]

This means we'll have to have a new structure and new methods for 3D envelopes.
This commit is contained in:
Tim Schaub
2013-09-15 00:15:24 -06:00
parent de0e8aeced
commit e806f51b3d
63 changed files with 379 additions and 392 deletions

View File

@@ -144,7 +144,7 @@ ol.expr.lib[ol.expr.functions.EXTENT] = function(minX, minY, maxX, maxY,
this.get(opt_attribute) : this.getGeometry();
if (geometry) {
intersects = ol.extent.intersects(geometry.getBounds(),
[[minX, minY], [maxX, maxY]]);
[minX, minY, maxX, maxY]);
}
return intersects;
};

View File

@@ -8,7 +8,7 @@ goog.require('ol.TransformFunction');
/**
* @typedef {Array.<ol.Coordinate>}
* @typedef {Array.<number>}
*/
ol.Extent;
@@ -55,7 +55,7 @@ ol.extent.boundingExtentXYs_ = function(xs, ys, opt_extent) {
* @return {ol.Extent} The clone.
*/
ol.extent.clone = function(extent) {
return [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];
return extent.slice();
};
@@ -67,8 +67,8 @@ ol.extent.clone = function(extent) {
* @return {boolean} Contains.
*/
ol.extent.containsCoordinate = function(extent, coordinate) {
return extent[0][0] <= coordinate[0] && coordinate[0] <= extent[1][0] &&
extent[0][1] <= coordinate[1] && coordinate[1] <= extent[1][1];
return extent[0] <= coordinate[0] && coordinate[0] <= extent[2] &&
extent[1] <= coordinate[1] && coordinate[1] <= extent[3];
};
@@ -80,8 +80,8 @@ ol.extent.containsCoordinate = function(extent, coordinate) {
* @return {boolean} Contains.
*/
ol.extent.containsExtent = function(extent1, extent2) {
return extent1[0][0] <= extent2[0][0] && extent2[1][0] <= extent1[1][0] &&
extent1[0][1] <= extent2[0][1] && extent2[1][1] <= extent1[1][1];
return extent1[0] <= extent2[0] && extent2[2] <= extent1[2] &&
extent1[1] <= extent2[1] && extent2[3] <= extent1[3];
};
@@ -89,7 +89,7 @@ ol.extent.containsExtent = function(extent1, extent2) {
* @return {ol.Extent} Empty extent.
*/
ol.extent.createEmpty = function() {
return [[Infinity, Infinity], [-Infinity, -Infinity]];
return [Infinity, Infinity, -Infinity, -Infinity];
};
@@ -103,13 +103,13 @@ ol.extent.createEmpty = function() {
*/
ol.extent.createOrUpdate = function(minX, maxX, minY, maxY, opt_extent) {
if (goog.isDef(opt_extent)) {
opt_extent[0][0] = minX;
opt_extent[1][0] = maxX;
opt_extent[0][1] = minY;
opt_extent[1][1] = maxY;
opt_extent[0] = minX;
opt_extent[2] = maxX;
opt_extent[1] = minY;
opt_extent[3] = maxY;
return opt_extent;
} else {
return [[minX, minY], [maxX, maxY]];
return [minX, minY, maxX, maxY];
}
};
@@ -120,8 +120,8 @@ ol.extent.createOrUpdate = function(minX, maxX, minY, maxY, opt_extent) {
* @return {ol.Extent} Extent.
*/
ol.extent.empty = function(extent) {
extent[0][0] = extent[0][1] = Infinity;
extent[1][0] = extent[1][1] = -Infinity;
extent[0] = extent[1] = Infinity;
extent[2] = extent[3] = -Infinity;
return extent;
};
@@ -132,8 +132,8 @@ ol.extent.empty = function(extent) {
* @return {boolean} Equals.
*/
ol.extent.equals = function(extent1, extent2) {
return extent1[0][0] == extent2[0][0] && extent1[1][0] == extent2[1][0] &&
extent1[0][1] == extent2[0][1] && extent1[1][1] == extent2[1][1];
return extent1[0] == extent2[0] && extent1[2] == extent2[2] &&
extent1[1] == extent2[1] && extent1[3] == extent2[3];
};
@@ -142,17 +142,17 @@ ol.extent.equals = function(extent1, extent2) {
* @param {ol.Extent} extent2 Extent 2.
*/
ol.extent.extend = function(extent1, extent2) {
if (extent2[0][0] < extent1[0][0]) {
extent1[0][0] = extent2[0][0];
if (extent2[0] < extent1[0]) {
extent1[0] = extent2[0];
}
if (extent2[1][0] > extent1[1][0]) {
extent1[1][0] = extent2[1][0];
if (extent2[2] > extent1[2]) {
extent1[2] = extent2[2];
}
if (extent2[0][1] < extent1[0][1]) {
extent1[0][1] = extent2[0][1];
if (extent2[1] < extent1[1]) {
extent1[1] = extent2[1];
}
if (extent2[1][1] > extent1[1][1]) {
extent1[1][1] = extent2[1][1];
if (extent2[3] > extent1[3]) {
extent1[3] = extent2[3];
}
};
@@ -162,17 +162,17 @@ ol.extent.extend = function(extent1, extent2) {
* @param {ol.Coordinate} coordinate Coordinate.
*/
ol.extent.extendCoordinate = function(extent, coordinate) {
if (coordinate[0] < extent[0][0]) {
extent[0][0] = coordinate[0];
if (coordinate[0] < extent[0]) {
extent[0] = coordinate[0];
}
if (coordinate[0] > extent[1][0]) {
extent[1][0] = coordinate[0];
if (coordinate[0] > extent[2]) {
extent[2] = coordinate[0];
}
if (coordinate[1] < extent[0][1]) {
extent[0][1] = coordinate[1];
if (coordinate[1] < extent[1]) {
extent[1] = coordinate[1];
}
if (coordinate[1] > extent[1][1]) {
extent[1][1] = coordinate[1];
if (coordinate[1] > extent[3]) {
extent[3] = coordinate[1];
}
};
@@ -182,7 +182,7 @@ ol.extent.extendCoordinate = function(extent, coordinate) {
* @return {ol.Coordinate} Bottom left coordinate.
*/
ol.extent.getBottomLeft = function(extent) {
return [extent[0][0], extent[0][1]];
return [extent[0], extent[1]];
};
@@ -191,7 +191,7 @@ ol.extent.getBottomLeft = function(extent) {
* @return {ol.Coordinate} Bottom right coordinate.
*/
ol.extent.getBottomRight = function(extent) {
return [extent[1][0], extent[0][1]];
return [extent[2], extent[1]];
};
@@ -200,7 +200,7 @@ ol.extent.getBottomRight = function(extent) {
* @return {ol.Coordinate} Center.
*/
ol.extent.getCenter = function(extent) {
return [(extent[0][0] + extent[1][0]) / 2, (extent[0][1] + extent[1][1]) / 2];
return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];
};
@@ -238,7 +238,7 @@ ol.extent.getForView2DAndSize =
* @return {number} Height.
*/
ol.extent.getHeight = function(extent) {
return extent[1][1] - extent[0][1];
return extent[3] - extent[1];
};
@@ -247,7 +247,7 @@ ol.extent.getHeight = function(extent) {
* @return {ol.Size} Size.
*/
ol.extent.getSize = function(extent) {
return [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];
return [extent[2] - extent[0], extent[3] - extent[1]];
};
@@ -256,7 +256,7 @@ ol.extent.getSize = function(extent) {
* @return {ol.Coordinate} Top left coordinate.
*/
ol.extent.getTopLeft = function(extent) {
return [extent[0][0], extent[1][1]];
return [extent[0], extent[3]];
};
@@ -265,7 +265,7 @@ ol.extent.getTopLeft = function(extent) {
* @return {ol.Coordinate} Top right coordinate.
*/
ol.extent.getTopRight = function(extent) {
return [extent[1][0], extent[1][1]];
return [extent[2], extent[3]];
};
@@ -274,7 +274,7 @@ ol.extent.getTopRight = function(extent) {
* @return {number} Width.
*/
ol.extent.getWidth = function(extent) {
return extent[1][0] - extent[0][0];
return extent[2] - extent[0];
};
@@ -284,10 +284,10 @@ ol.extent.getWidth = function(extent) {
* @return {boolean} Intersects.
*/
ol.extent.intersects = function(extent1, extent2) {
return extent1[0][0] <= extent2[1][0] &&
extent1[1][0] >= extent2[0][0] &&
extent1[0][1] <= extent2[1][1] &&
extent1[1][1] >= extent2[0][1];
return extent1[0] <= extent2[2] &&
extent1[2] >= extent2[0] &&
extent1[1] <= extent2[3] &&
extent1[3] >= extent2[1];
};
@@ -296,7 +296,7 @@ ol.extent.intersects = function(extent1, extent2) {
* @return {boolean} Is empty.
*/
ol.extent.isEmpty = function(extent) {
return extent[1][0] < extent[0][0] || extent[1][1] < extent[0][1];
return extent[2] < extent[0] || extent[3] < extent[1];
};
@@ -307,8 +307,8 @@ ol.extent.isEmpty = function(extent) {
*/
ol.extent.normalize = function(extent, coordinate) {
return [
(coordinate[0] - extent[0][0]) / (extent[1][0] - extent[0][0]),
(coordinate[1] - extent[0][1]) / (extent[1][1] - extent[0][1])
(coordinate[0] - extent[0]) / (extent[2] - extent[0]),
(coordinate[1] - extent[1]) / (extent[3] - extent[1])
];
};
@@ -318,12 +318,12 @@ ol.extent.normalize = function(extent, coordinate) {
* @param {number} value Value.
*/
ol.extent.scaleFromCenter = function(extent, value) {
var deltaX = ((extent[1][0] - extent[0][0]) / 2) * (value - 1);
var deltaY = ((extent[1][1] - extent[0][1]) / 2) * (value - 1);
extent[0][0] -= deltaX;
extent[1][0] += deltaX;
extent[0][1] -= deltaY;
extent[1][1] += deltaY;
var deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);
var deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);
extent[0] -= deltaX;
extent[2] += deltaX;
extent[1] -= deltaY;
extent[3] += deltaY;
};
@@ -332,8 +332,8 @@ ol.extent.scaleFromCenter = function(extent, value) {
* @return {string} String.
*/
ol.extent.toString = function(extent) {
return '(' + [extent[0][0], extent[1][0], extent[0][1],
extent[1][1]].join(', ') + ')';
return '(' + [extent[0], extent[2], extent[1],
extent[3]].join(', ') + ')';
};
@@ -345,10 +345,10 @@ ol.extent.toString = function(extent) {
*/
ol.extent.transform = function(extent, transformFn, opt_extent) {
var coordinates = [
extent[0][0], extent[0][1],
extent[0][0], extent[1][1],
extent[1][0], extent[0][1],
extent[1][0], extent[1][1]
extent[0], extent[1],
extent[0], extent[3],
extent[2], extent[1],
extent[2], extent[3]
];
transformFn(coordinates, coordinates, 2);
var xs = [coordinates[0], coordinates[2], coordinates[4], coordinates[6]];

View File

@@ -126,7 +126,7 @@ ol.geom.LineString.prototype.getBounds = function() {
maxY = y;
}
}
this.bounds_ = [[minX, minY], [maxX, maxY]];
this.bounds_ = [minX, minY, maxX, maxY];
}
return this.bounds_;
};

View File

@@ -68,7 +68,7 @@ ol.geom.Point.prototype.getBounds = function() {
if (goog.isNull(this.bounds_)) {
var x = this.get(0),
y = this.get(1);
this.bounds_ = [[x, y], [x, y]];
this.bounds_ = [x, y, x, y];
}
return this.bounds_;
};

View File

@@ -11,20 +11,17 @@ goog.require('ol.extent');
* @return {ol.Extent} Extent.
*/
ol.geom2.getExtent = function(buf, dim) {
var extent = ol.extent.createEmpty(); // TODO: make this accept a dimension
for (var i = 0; i < dim; ++i) {
extent[0][i] = Infinity;
extent[1][i] = -Infinity;
}
var extent = ol.extent.createEmpty();
var bufArr = buf.getArray();
buf.forEachRange(function(start, stop) {
var i, j, value;
for (i = start; i < stop; i += dim) {
for (j = 0; j < dim; ++j) {
value = bufArr[i + j];
extent[0][j] = Math.min(extent[0][j], value);
extent[1][j] = Math.max(extent[1][j], value);
}
var x, y;
for (var i = start; i < stop; i += dim) {
x = bufArr[i];
y = bufArr[i + 1];
extent[0] = Math.min(extent[0], x);
extent[1] = Math.min(extent[1], y);
extent[2] = Math.max(extent[2], x);
extent[3] = Math.max(extent[3], y);
}
});
return extent;

View File

@@ -110,13 +110,12 @@ ol.layer.FeatureCache.prototype.getFeaturesObject = function(opt_expr) {
for (var i = 0; i < 4; ++i) {
goog.asserts.assert(args[i] instanceof ol.expr.Literal);
}
var extent = [[
var extent = [
/** @type {ol.expr.Literal} */ (args[0]).evaluate(),
/** @type {ol.expr.Literal} */ (args[1]).evaluate()
], [
/** @type {ol.expr.Literal} */ (args[1]).evaluate(),
/** @type {ol.expr.Literal} */ (args[2]).evaluate(),
/** @type {ol.expr.Literal} */ (args[3]).evaluate()
]];
];
features = this.rTree_.searchReturningObject(extent);
} else {
// not a call expression, check logical

View File

@@ -184,10 +184,10 @@ ol.parser.ogc.Filter_v1 = function() {
if (goog.isDef(container.geometry)) {
args.push(new ol.expr.Literal(this.gml_.createGeometry(container)));
} else {
args = [new ol.expr.Literal(container.bounds[0][0]),
new ol.expr.Literal(container.bounds[0][1]),
new ol.expr.Literal(container.bounds[1][0]),
new ol.expr.Literal(container.bounds[1][1])];
args = [new ol.expr.Literal(container.bounds[0]),
new ol.expr.Literal(container.bounds[1]),
new ol.expr.Literal(container.bounds[2]),
new ol.expr.Literal(container.bounds[3])];
}
if (goog.isDef(container.distance)) {
args.push(container.distance);

View File

@@ -93,8 +93,8 @@ ol.parser.ogc.Filter_v1_0_0 = function() {
goog.asserts.assert(args[3] instanceof ol.expr.Literal);
goog.asserts.assert(args[4] instanceof ol.expr.Literal);
var bbox = [
[args[0].getValue(), args[1].getValue()],
[args[2].getValue(), args[3].getValue()]
args[0].getValue(), args[1].getValue(),
args[2].getValue(), args[3].getValue()
];
var projection = args[4].getValue();
var property = args[5];
@@ -133,8 +133,8 @@ ol.parser.ogc.Filter_v1_0_0.prototype.writeSpatial_ = function(filter, name) {
goog.asserts.assert(args[2] instanceof ol.expr.Literal);
goog.asserts.assert(args[3] instanceof ol.expr.Literal);
bbox = [
[args[0].getValue(), args[1].getValue()],
[args[2].getValue(), args[3].getValue()]
args[0].getValue(), args[1].getValue(),
args[2].getValue(), args[3].getValue()
];
projection = args[4];
property = args[5];
@@ -168,7 +168,7 @@ ol.parser.ogc.Filter_v1_0_0.prototype.writeSpatial_ = function(filter, name) {
if (geom !== null) {
child = this.writeNode('_geometry', geom,
this.gml_.featureNS).firstChild;
} else if (bbox.length === 2) {
} else if (bbox.length === 4) {
child = this.writeNode('Box', bbox,
'http://www.opengis.net/gml');
}

View File

@@ -131,8 +131,8 @@ ol.parser.ogc.Filter_v1_1_0 = function() {
goog.asserts.assert(args[3] instanceof ol.expr.Literal);
goog.asserts.assert(args[4] instanceof ol.expr.Literal);
var bbox = [
[args[0].getValue(), args[1].getValue()],
[args[2].getValue(), args[3].getValue()]
args[0].getValue(), args[1].getValue(),
args[2].getValue(), args[3].getValue()
];
var projection = args[4].getValue();
var property = args[5];
@@ -191,8 +191,8 @@ ol.parser.ogc.Filter_v1_1_0.prototype.writeSpatial_ = function(filter, name) {
goog.asserts.assert(args[2] instanceof ol.expr.Literal);
goog.asserts.assert(args[3] instanceof ol.expr.Literal);
bbox = [
[args[0].getValue(), args[1].getValue()],
[args[2].getValue(), args[3].getValue()]
args[0].getValue(), args[1].getValue(),
args[2].getValue(), args[3].getValue()
];
projection = args[4];
property = args[5];
@@ -226,7 +226,7 @@ ol.parser.ogc.Filter_v1_1_0.prototype.writeSpatial_ = function(filter, name) {
if (geom !== null) {
child = this.writeNode('_geometry', geom,
this.gml_.featureNS).firstChild;
} else if (bbox.length === 2) {
} else if (bbox.length === 4) {
child = this.writeNode('Envelope', bbox,
'http://www.opengis.net/gml');
}

View File

@@ -2,7 +2,6 @@ goog.provide('ol.parser.ogc.GML_v2');
goog.require('goog.array');
goog.require('goog.object');
goog.require('ol.extent');
goog.require('ol.parser.ogc.GML');
@@ -36,7 +35,10 @@ ol.parser.ogc.GML_v2 = function(opt_options) {
[node, coordinates, container]);
this.readChildNodes(node, coordinates);
container.projection = node.getAttribute('srsName');
container.bounds = ol.extent.clone(coordinates[0]);
container.bounds = [
coordinates[0][0][0], coordinates[0][0][1],
coordinates[0][1][0], coordinates[0][1][1]
];
}
});
goog.object.extend(this.writers['http://www.opengis.net/gml'], {
@@ -104,7 +106,11 @@ ol.parser.ogc.GML_v2 = function(opt_options) {
},
'Box': function(extent) {
var node = this.createElementNS('gml:Box');
this.writeNode('coordinates', extent, null, node);
var coordinates = [
[extent[0], extent[1]],
[extent[2], extent[3]]
];
this.writeNode('coordinates', coordinates, null, node);
// srsName attribute is optional for gml:Box
if (goog.isDefAndNotNull(this.srsName)) {
node.setAttribute('srsName', this.srsName);

View File

@@ -3,7 +3,6 @@ goog.provide('ol.parser.ogc.GML_v3');
goog.require('goog.array');
goog.require('goog.functions');
goog.require('goog.object');
goog.require('ol.extent');
goog.require('ol.geom.GeometryType');
goog.require('ol.parser.ogc.GML');
@@ -216,7 +215,10 @@ ol.parser.ogc.GML_v3 = function(opt_options) {
[node, coordinates, container]);
this.readChildNodes(node, coordinates);
container.projection = node.getAttribute('srsName');
container.bounds = ol.extent.clone(coordinates);
container.bounds = [
coordinates[0][0], coordinates[0][1],
coordinates[1][0], coordinates[1][1]
];
},
'lowerCorner': function(node, envelope) {
var coordinates = [];
@@ -391,9 +393,9 @@ ol.parser.ogc.GML_v3 = function(opt_options) {
// only 2d for simple features profile
var pos;
if (this.axisOrientation.substr(0, 2) === 'en') {
pos = (bounds[0][0] + ' ' + bounds[0][1]);
pos = (bounds[0] + ' ' + bounds[1]);
} else {
pos = (bounds[0][1] + ' ' + bounds[0][0]);
pos = (bounds[1] + ' ' + bounds[0]);
}
var node = this.createElementNS('gml:lowerCorner');
node.appendChild(this.createTextNode(pos));
@@ -403,9 +405,9 @@ ol.parser.ogc.GML_v3 = function(opt_options) {
// only 2d for simple features profile
var pos;
if (this.axisOrientation.substr(0, 2) === 'en') {
pos = (bounds[1][0] + ' ' + bounds[1][1]);
pos = (bounds[2] + ' ' + bounds[3]);
} else {
pos = (bounds[1][1] + ' ' + bounds[1][0]);
pos = (bounds[3] + ' ' + bounds[2]);
}
var node = this.createElementNS('gml:upperCorner');
node.appendChild(this.createTextNode(pos));

View File

@@ -31,13 +31,12 @@ ol.parser.ogc.WMSCapabilities_v1 = function() {
},
'BoundingBox': function(node, obj) {
var bbox = {};
bbox['bbox'] = [[
bbox['bbox'] = [
parseFloat(node.getAttribute('minx')),
parseFloat(node.getAttribute('miny'))
], [
parseFloat(node.getAttribute('miny')),
parseFloat(node.getAttribute('maxx')),
parseFloat(node.getAttribute('maxy'))
]];
];
var res = {
x: parseFloat(node.getAttribute('resx')),
y: parseFloat(node.getAttribute('resy'))

View File

@@ -47,13 +47,12 @@ ol.parser.ogc.WMSCapabilities_v1_1 = function() {
obj['userSymbols'] = userSymbols;
},
'LatLonBoundingBox': function(node, obj) {
obj['llbbox'] = [[
obj['llbbox'] = [
parseFloat(node.getAttribute('minx')),
parseFloat(node.getAttribute('miny'))
], [
parseFloat(node.getAttribute('miny')),
parseFloat(node.getAttribute('maxx')),
parseFloat(node.getAttribute('maxy'))
]];
];
},
'BoundingBox': function(node, obj) {
var bbox = bboxreader.apply(this, arguments);

View File

@@ -410,7 +410,7 @@ goog.inherits(ol.proj.EPSG2056, ol.proj.CH);
* @type {ol.Extent}
*/
ol.proj.EPSG2056.EXTENT =
[[2485869.5728, 1076443.1884], [2837076.5648, 1299941.7864]];
[2485869.5728, 1076443.1884, 2837076.5648, 1299941.7864];
/**
@@ -448,8 +448,8 @@ goog.inherits(ol.proj.EPSG21781, ol.proj.CH);
* @type {ol.Extent}
*/
ol.proj.EPSG21781.EXTENT = [
[485869.5728, 76443.1884],
[837076.5648, 299941.7864]
485869.5728, 76443.1884,
837076.5648, 299941.7864
];

View File

@@ -44,8 +44,8 @@ ol.proj.EPSG3857.HALF_SIZE = Math.PI * ol.proj.EPSG3857.RADIUS;
* @type {ol.Extent}
*/
ol.proj.EPSG3857.EXTENT = [
[-ol.proj.EPSG3857.HALF_SIZE, -ol.proj.EPSG3857.HALF_SIZE],
[ol.proj.EPSG3857.HALF_SIZE, ol.proj.EPSG3857.HALF_SIZE]
-ol.proj.EPSG3857.HALF_SIZE, -ol.proj.EPSG3857.HALF_SIZE,
ol.proj.EPSG3857.HALF_SIZE, ol.proj.EPSG3857.HALF_SIZE
];

View File

@@ -30,7 +30,7 @@ goog.inherits(ol.proj.EPSG4326, ol.Projection);
* @const
* @type {ol.Extent}
*/
ol.proj.EPSG4326.EXTENT = [[-180, -90], [180, 90]];
ol.proj.EPSG4326.EXTENT = [-180, -90, 180, 90];
/**

View File

@@ -113,8 +113,8 @@ ol.renderer.canvas.ImageLayer.prototype.renderFrame =
1);
goog.vec.Mat4.translate(
transform,
(imageExtent[0][0] - viewCenter[0]) / imageResolution,
(viewCenter[1] - imageExtent[1][1]) / imageResolution,
(imageExtent[0] - viewCenter[0]) / imageResolution,
(viewCenter[1] - imageExtent[3]) / imageResolution,
0);
this.updateAttributions(frameState.attributions, image.getAttributions());

View File

@@ -348,8 +348,8 @@ ol.renderer.canvas.TileLayer.prototype.renderFrame =
for (tileCoordKey in tilesToDraw) {
tile = tilesToDraw[tileCoordKey];
tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent);
x = (tileExtent[0][0] - origin[0]) / tileResolution;
y = (origin[1] - tileExtent[1][1]) / tileResolution;
x = (tileExtent[0] - origin[0]) / tileResolution;
y = (origin[1] - tileExtent[3]) / tileResolution;
width = scale * tileSize[0];
height = scale * tileSize[1];
tileState = tile.getState();

View File

@@ -477,10 +477,10 @@ ol.renderer.canvas.VectorLayer.prototype.renderFrame =
tilesToRender[key] = tileCoord;
} else if (idle) {
tileExtent = tileGrid.getTileCoordExtent(tileCoord);
tileExtent[0][0] -= tileGutter;
tileExtent[1][0] += tileGutter;
tileExtent[0][1] -= tileGutter;
tileExtent[1][1] += tileGutter;
tileExtent[0] -= tileGutter;
tileExtent[2] += tileGutter;
tileExtent[1] -= tileGutter;
tileExtent[3] += tileGutter;
tileHasFeatures = false;
for (i = 0; i < numTypes; ++i) {
type = types[i];

View File

@@ -99,8 +99,8 @@ ol.renderer.dom.ImageLayer.prototype.renderFrame =
1);
goog.vec.Mat4.translate(
transform,
(imageExtent[0][0] - viewCenter[0]) / imageResolution,
(viewCenter[1] - imageExtent[1][1]) / imageResolution,
(imageExtent[0] - viewCenter[0]) / imageResolution,
(viewCenter[1] - imageExtent[3]) / imageResolution,
0);
if (image != this.image_) {
var imageElement = image.getImageElement(this);

View File

@@ -169,12 +169,12 @@ ol.renderer.webgl.ImageLayer.prototype.updateProjectionMatrix_ =
2 / canvasExtentWidth, 2 / canvasExtentHeight, 1);
goog.vec.Mat4.rotateZ(projectionMatrix, -viewRotation);
goog.vec.Mat4.translate(projectionMatrix,
imageExtent[0][0] - viewCenter[0],
imageExtent[0][1] - viewCenter[1],
imageExtent[0] - viewCenter[0],
imageExtent[1] - viewCenter[1],
0);
goog.vec.Mat4.scale(projectionMatrix,
(imageExtent[1][0] - imageExtent[0][0]) / 2,
(imageExtent[1][1] - imageExtent[0][1]) / 2,
(imageExtent[2] - imageExtent[0]) / 2,
(imageExtent[3] - imageExtent[1]) / 2,
1);
goog.vec.Mat4.translate(projectionMatrix, 1, 1, 0);

View File

@@ -161,8 +161,8 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
var minX = origin[0] + tileRange.minX * tileSize[0] * tileResolution;
var minY = origin[1] + tileRange.minY * tileSize[1] * tileResolution;
framebufferExtent = [
[minX, minY],
[minX + framebufferExtentDimension, minY + framebufferExtentDimension]
minX, minY,
minX + framebufferExtentDimension, minY + framebufferExtentDimension
];
this.bindFramebuffer(frameState, framebufferDimension);
@@ -246,13 +246,13 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
for (tileKey in tilesToDraw) {
tile = tilesToDraw[tileKey];
tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent);
sx = 2 * (tileExtent[1][0] - tileExtent[0][0]) /
sx = 2 * (tileExtent[2] - tileExtent[0]) /
framebufferExtentDimension;
sy = 2 * (tileExtent[1][1] - tileExtent[0][1]) /
sy = 2 * (tileExtent[3] - tileExtent[1]) /
framebufferExtentDimension;
tx = 2 * (tileExtent[0][0] - framebufferExtent[0][0]) /
tx = 2 * (tileExtent[0] - framebufferExtent[0]) /
framebufferExtentDimension - 1;
ty = 2 * (tileExtent[0][1] - framebufferExtent[0][1]) /
ty = 2 * (tileExtent[1] - framebufferExtent[1]) /
framebufferExtentDimension - 1;
goog.vec.Vec4.setFromValues(u_tileOffset, sx, sy, tx, ty);
gl.uniform4fv(this.locations_.u_tileOffset, u_tileOffset);
@@ -296,17 +296,17 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
var texCoordMatrix = this.texCoordMatrix;
goog.vec.Mat4.makeIdentity(texCoordMatrix);
goog.vec.Mat4.translate(texCoordMatrix,
(center[0] - framebufferExtent[0][0]) /
(framebufferExtent[1][0] - framebufferExtent[0][0]),
(center[1] - framebufferExtent[0][1]) /
(framebufferExtent[1][1] - framebufferExtent[0][1]),
(center[0] - framebufferExtent[0]) /
(framebufferExtent[2] - framebufferExtent[0]),
(center[1] - framebufferExtent[1]) /
(framebufferExtent[3] - framebufferExtent[1]),
0);
goog.vec.Mat4.rotateZ(texCoordMatrix, view2DState.rotation);
goog.vec.Mat4.scale(texCoordMatrix,
frameState.size[0] * view2DState.resolution /
(framebufferExtent[1][0] - framebufferExtent[0][0]),
(framebufferExtent[2] - framebufferExtent[0]),
frameState.size[1] * view2DState.resolution /
(framebufferExtent[1][1] - framebufferExtent[0][1]),
(framebufferExtent[3] - framebufferExtent[1]),
1);
goog.vec.Mat4.translate(texCoordMatrix,
-0.5,

View File

@@ -20,7 +20,7 @@ ol.source.ImageStatic = function(options) {
var imageExtent = options.imageExtent;
var imageSize = options.imageSize;
var imageResolution = (imageExtent[1][1] - imageExtent[0][1]) / imageSize[1];
var imageResolution = (imageExtent[3] - imageExtent[1]) / imageSize[1];
var projection = ol.proj.get(options.projection);
goog.base(this, {

View File

@@ -89,8 +89,8 @@ ol.source.ImageWMS.prototype.getImage =
extent = extent.slice();
ol.extent.scaleFromCenter(extent, this.ratio_);
var width = (extent[1][0] - extent[0][0]) / resolution;
var height = (extent[1][1] - extent[0][1]) / resolution;
var width = (extent[2] - extent[0]) / resolution;
var height = (extent[3] - extent[1]) / resolution;
var size = [width, height];
this.image_ = this.createImage(extent, resolution, size, projection);

View File

@@ -75,11 +75,11 @@ ol.source.TileWMS = function(options) {
extent = goog.isDef(extent) ? extent : projectionExtent;
if (!goog.isNull(extent) && projection.isGlobal() &&
extent[0][0] === projectionExtent[0][0] &&
extent[1][0] === projectionExtent[1][0]) {
extent[0] === projectionExtent[0] &&
extent[2] === projectionExtent[2]) {
var numCols = Math.ceil(
(extent[1][0] - extent[0][0]) /
(tileExtent[1][0] - tileExtent[0][0]));
(extent[2] - extent[0]) /
(tileExtent[2] - tileExtent[0]));
x = goog.math.modulo(x, numCols);
tileExtent = tileGrid.getTileCoordExtent(
new ol.TileCoord(tileCoord.z, x, tileCoord.y));

View File

@@ -54,8 +54,8 @@ ol.source.wms.getUrl =
var axisOrientation = projection.getAxisOrientation();
var bboxValues = (wms13 && axisOrientation.substr(0, 2) == 'ne') ?
[extent[0][1], extent[0][0], extent[1][1], extent[1][0]] :
[extent[0][0], extent[0][1], extent[1][0], extent[1][1]];
[extent[1], extent[0], extent[3], extent[2]] :
[extent[0], extent[1], extent[2], extent[3]];
baseParams['BBOX'] = bboxValues.join(',');
return goog.uri.utils.appendParamsFromMap(baseUrl, baseParams);

View File

@@ -154,11 +154,11 @@ ol.source.WMTS = function(options) {
options.extent : projectionExtent;
if (!goog.isNull(extent) && projection.isGlobal() &&
extent[0][0] === projectionExtent[0][0] &&
extent[1][0] === projectionExtent[1][0]) {
extent[0] === projectionExtent[0] &&
extent[2] === projectionExtent[2]) {
var numCols = Math.ceil(
(extent[1][0] - extent[0][0]) /
(tileExtent[1][0] - tileExtent[0][0]));
(extent[2] - extent[0]) /
(tileExtent[2] - tileExtent[0]));
x = goog.math.modulo(x, numCols);
tmpTileCoord.z = tileCoord.z;
tmpTileCoord.x = x;

View File

@@ -84,10 +84,10 @@ ol.structs.RTree.recalculateExtent_ = function(node) {
ol.extent.empty(extent);
} else {
var firstNodeExtent = node.nodes[0].extent;
extent[0][0] = firstNodeExtent[0][0];
extent[1][0] = firstNodeExtent[1][0];
extent[0][1] = firstNodeExtent[0][1];
extent[1][1] = firstNodeExtent[1][1];
extent[0] = firstNodeExtent[0];
extent[2] = firstNodeExtent[2];
extent[1] = firstNodeExtent[1];
extent[3] = firstNodeExtent[3];
var i;
for (i = 1; i < n; ++i) {
ol.extent.extend(extent, node.nodes[i].extent);
@@ -151,19 +151,19 @@ ol.structs.RTree.prototype.chooseLeafSubtree_ = function(rect, root) {
}
// Area of new enlarged rectangle
var oldLRatio = ol.structs.RTree.squarifiedRatio_(
lTree.extent[1][0] - lTree.extent[0][0],
lTree.extent[1][1] - lTree.extent[0][1],
lTree.extent[2] - lTree.extent[0],
lTree.extent[3] - lTree.extent[1],
lTree.nodes.length + 1);
// Enlarge rectangle to fit new rectangle
var nw = (lTree.extent[1][0] > rect.extent[1][0] ?
lTree.extent[1][0] : rect.extent[1][0]) -
(lTree.extent[0][0] < rect.extent[0][0] ?
lTree.extent[0][0] : rect.extent[0][0]);
var nh = (lTree.extent[1][1] > rect.extent[1][1] ?
lTree.extent[1][1] : rect.extent[1][1]) -
(lTree.extent[0][1] < rect.extent[0][1] ?
lTree.extent[0][1] : rect.extent[0][1]);
var nw = (lTree.extent[2] > rect.extent[2] ?
lTree.extent[2] : rect.extent[2]) -
(lTree.extent[0] < rect.extent[0] ?
lTree.extent[0] : rect.extent[0]);
var nh = (lTree.extent[3] > rect.extent[3] ?
lTree.extent[3] : rect.extent[3]) -
(lTree.extent[1] < rect.extent[1] ?
lTree.extent[1] : rect.extent[1]);
// Area of new enlarged rectangle
var lRatio = ol.structs.RTree.squarifiedRatio_(
@@ -308,21 +308,21 @@ ol.structs.RTree.prototype.pickLinear_ = function(nodes) {
for (var i = nodes.length - 2; i >= 0; --i) {
var l = nodes[i];
if (l.extent[0][0] > nodes[highestLowX].extent[0][0]) {
if (l.extent[0] > nodes[highestLowX].extent[0]) {
highestLowX = i;
} else if (l.extent[1][0] < nodes[lowestHighX].extent[0][1]) {
} else if (l.extent[2] < nodes[lowestHighX].extent[1]) {
lowestHighX = i;
}
if (l.extent[0][1] > nodes[highestLowY].extent[0][1]) {
if (l.extent[1] > nodes[highestLowY].extent[1]) {
highestLowY = i;
} else if (l.extent[1][1] < nodes[lowestHighY].extent[1][1]) {
} else if (l.extent[3] < nodes[lowestHighY].extent[3]) {
lowestHighY = i;
}
}
var dx = Math.abs(nodes[lowestHighX].extent[1][0] -
nodes[highestLowX].extent[0][0]);
var dy = Math.abs(nodes[lowestHighY].extent[1][1] -
nodes[highestLowY].extent[0][1]);
var dx = Math.abs(nodes[lowestHighX].extent[2] -
nodes[highestLowX].extent[0]);
var dy = Math.abs(nodes[lowestHighY].extent[3] -
nodes[highestLowY].extent[1]);
if (dx > dy) {
if (lowestHighX > highestLowX) {
t1 = nodes.splice(lowestHighX, 1)[0];
@@ -359,10 +359,10 @@ ol.structs.RTree.prototype.pickLinear_ = function(nodes) {
*/
ol.structs.RTree.prototype.pickNext_ = function(nodes, a, b) {
// Area of new enlarged rectangle
var areaA = ol.structs.RTree.squarifiedRatio_(a.extent[1][0] - a.extent[0][0],
a.extent[1][1] - a.extent[0][1], a.nodes.length + 1);
var areaB = ol.structs.RTree.squarifiedRatio_(b.extent[1][0] - b.extent[0][0],
b.extent[1][1] - b.extent[0][1], b.nodes.length + 1);
var areaA = ol.structs.RTree.squarifiedRatio_(a.extent[2] - a.extent[0],
a.extent[3] - a.extent[1], a.nodes.length + 1);
var areaB = ol.structs.RTree.squarifiedRatio_(b.extent[2] - b.extent[0],
b.extent[3] - b.extent[1], b.nodes.length + 1);
var highAreaDelta;
var highAreaNode;
var lowestGrowthGroup;
@@ -371,20 +371,20 @@ ol.structs.RTree.prototype.pickNext_ = function(nodes, a, b) {
var l = nodes[i];
var newAreaA = [
a.extent[0][0] < l.extent[0][0] ? a.extent[0][0] : l.extent[0][0],
a.extent[1][0] > l.extent[1][0] ? a.extent[1][0] : l.extent[1][0],
a.extent[0][1] < l.extent[0][1] ? a.extent[0][1] : l.extent[0][1],
a.extent[1][1] > l.extent[1][1] ? a.extent[1][1] : l.extent[1][1]
a.extent[0] < l.extent[0] ? a.extent[0] : l.extent[0],
a.extent[2] > l.extent[2] ? a.extent[2] : l.extent[2],
a.extent[1] < l.extent[1] ? a.extent[1] : l.extent[1],
a.extent[3] > l.extent[3] ? a.extent[3] : l.extent[3]
];
var changeNewAreaA = Math.abs(ol.structs.RTree.squarifiedRatio_(
newAreaA[1] - newAreaA[0],
newAreaA[3] - newAreaA[2], a.nodes.length + 2) - areaA);
var newAreaB = [
b.extent[0][0] < l.extent[0][0] ? b.extent[0][0] : l.extent[0][0],
b.extent[1][0] > l.extent[1][0] ? b.extent[1][0] : l.extent[1][0],
b.extent[0][1] < l.extent[0][1] ? b.extent[0][1] : l.extent[0][1],
b.extent[1][1] > l.extent[1][1] ? b.extent[1][1] : l.extent[1][1]
b.extent[0] < l.extent[0] ? b.extent[0] : l.extent[0],
b.extent[2] > l.extent[2] ? b.extent[2] : l.extent[2],
b.extent[1] < l.extent[1] ? b.extent[1] : l.extent[1],
b.extent[3] > l.extent[3] ? b.extent[3] : l.extent[3]
];
var changeNewAreaB = Math.abs(ol.structs.RTree.squarifiedRatio_(
newAreaB[1] - newAreaB[0], newAreaB[3] - newAreaB[2],

View File

@@ -232,11 +232,11 @@ ol.tilegrid.TileGrid.prototype.getTileRangeForExtentAndResolution =
function(extent, resolution, opt_tileRange) {
var tileCoord = ol.tilegrid.TileGrid.tmpTileCoord_;
this.getTileCoordForXYAndResolution_(
extent[0][0], extent[0][1], resolution, false, tileCoord);
extent[0], extent[1], resolution, false, tileCoord);
var minX = tileCoord.x;
var minY = tileCoord.y;
this.getTileCoordForXYAndResolution_(
extent[1][0], extent[1][1], resolution, true, tileCoord);
extent[2], extent[3], resolution, true, tileCoord);
return ol.TileRange.createOrUpdate(
minX, tileCoord.x, minY, tileCoord.y, opt_tileRange);
};
@@ -414,8 +414,8 @@ ol.tilegrid.createForProjection =
var size = goog.isNull(projectionExtent) ?
360 * ol.METERS_PER_UNIT[ol.ProjectionUnits.DEGREES] /
projection.getMetersPerUnit() :
Math.max(projectionExtent[1][0] - projectionExtent[0][0],
projectionExtent[1][1] - projectionExtent[0][1]);
Math.max(projectionExtent[2] - projectionExtent[0],
projectionExtent[3] - projectionExtent[1]);
var maxZoom = goog.isDef(opt_maxZoom) ?
opt_maxZoom : ol.DEFAULT_MAX_ZOOM;
var tileSize = goog.isDef(opt_tileSize) ?

View File

@@ -226,7 +226,7 @@ ol.View2D.prototype.calculateExtent = function(size) {
var maxX = center[0] + resolution * size[0] / 2;
var minY = center[1] - resolution * size[1] / 2;
var maxY = center[1] + resolution * size[1] / 2;
return [[minX, minY], [maxX, maxY]];
return [minX, minY, maxX, maxY];
};
@@ -262,8 +262,8 @@ goog.exportProperty(
* @return {number} Resolution.
*/
ol.View2D.prototype.getResolutionForExtent = function(extent, size) {
var xResolution = (extent[1][0] - extent[0][0]) / size[0];
var yResolution = (extent[1][1] - extent[0][1]) / size[1];
var xResolution = (extent[2] - extent[0]) / size[0];
var yResolution = (extent[3] - extent[1]) / size[1];
return Math.max(xResolution, yResolution);
};
@@ -498,8 +498,8 @@ ol.View2D.createResolutionConstraint_ = function(options) {
// use an extent that can fit the whole world if need be
360 * ol.METERS_PER_UNIT[ol.ProjectionUnits.DEGREES] /
ol.METERS_PER_UNIT[projection.getUnits()] :
Math.max(projectionExtent[1][0] - projectionExtent[0][0],
projectionExtent[1][1] - projectionExtent[0][1]);
Math.max(projectionExtent[2] - projectionExtent[0],
projectionExtent[3] - projectionExtent[1]);
maxResolution = size / ol.DEFAULT_TILE_SIZE;
}
var maxZoom = options.maxZoom;