Make ol.CoverageArea use composition rather than inheritance for extent

This commit is contained in:
Tom Payne
2012-08-01 19:23:21 +02:00
parent 2fc4b10492
commit b4183642ae
2 changed files with 11 additions and 15 deletions

View File

@@ -6,17 +6,16 @@ goog.require('ol.Extent');
/**
* @constructor
* @extends {ol.Extent}
* @param {number} minX Minimum X.
* @param {number} minY Minimum Y.
* @param {number} maxX Maximum X.
* @param {number} maxY Maximum Y.
* @param {ol.Extent} extent Extent.
* @param {number} minZ Minimum Z.
* @param {number} maxZ Maximum Z.
*/
ol.CoverageArea = function(minX, minY, maxX, maxY, minZ, maxZ) {
ol.CoverageArea = function(extent, minZ, maxZ) {
goog.base(this, minX, minY, maxX, maxY);
/**
* @type {ol.Extent}
*/
this.extent = extent;
/**
* @type {number}
@@ -29,7 +28,6 @@ ol.CoverageArea = function(minX, minY, maxX, maxY, minZ, maxZ) {
this.maxZ = maxZ;
};
goog.inherits(ol.CoverageArea, ol.Extent);
/**
@@ -38,17 +36,15 @@ goog.inherits(ol.CoverageArea, ol.Extent);
* @return {boolean} Intersects.
*/
ol.CoverageArea.prototype.intersectsWithZ = function(extent, z) {
return this.intersects(extent) && this.minZ <= z && z <= this.maxZ;
return this.extent.intersects(extent) && this.minZ <= z && z <= this.maxZ;
};
/**
* @override
* @param {ol.TransformFunction} transformFn Transform.
* @return {ol.CoverageArea} Transformed coverage area.
*/
ol.CoverageArea.prototype.transform = function(transformFn) {
var min = transformFn(new ol.Coordinate(this.minX, this.minY));
var max = transformFn(new ol.Coordinate(this.maxX, this.maxY));
return new ol.CoverageArea(min.x, min.y, max.x, max.y, this.minZ, this.maxZ);
var extent = this.extent.transform(transformFn);
return new ol.CoverageArea(extent, this.minZ, this.maxZ);
};

View File

@@ -162,10 +162,10 @@ ol.tilestore.BingMaps.prototype.handleImageryMetadataResponse =
imageryProvider.coverageAreas,
function(coverageArea) {
var bbox = coverageArea.bbox;
var extent = new ol.Extent(bbox[0], bbox[1], bbox[2], bbox[3]);
var minZ = coverageArea.zoomMin;
var maxZ = coverageArea.zoomMax;
return new ol.CoverageArea(
bbox[0], bbox[1], bbox[2], bbox[3], minZ, maxZ);
return new ol.CoverageArea(extent, minZ, maxZ);
});
return new ol.Attribution(html, coverageAreas, projection);
});