rotation support for ol.View#calculateExtent
This commit is contained in:
committed by
Bart van den Eijnden
parent
74759142d9
commit
e7cd691362
@@ -275,15 +275,17 @@ ol.View.prototype.getHints = function() {
|
||||
* @api stable
|
||||
*/
|
||||
ol.View.prototype.calculateExtent = function(size) {
|
||||
goog.asserts.assert(this.isDef(),
|
||||
'the view was not defined (had no center and/or resolution)');
|
||||
var center = this.getCenter();
|
||||
goog.asserts.assert(goog.isDefAndNotNull(center),
|
||||
'The view center is not defined');
|
||||
var resolution = this.getResolution();
|
||||
var minX = center[0] - resolution * size[0] / 2;
|
||||
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];
|
||||
goog.asserts.assert(goog.isDef(resolution),
|
||||
'The view resolution is not defined');
|
||||
var rotation = this.getRotation();
|
||||
goog.asserts.assert(goog.isDef(rotation),
|
||||
'The view rotation is not defined');
|
||||
|
||||
return ol.extent.getForViewAndSize(center, resolution, rotation, size);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -364,6 +364,35 @@ describe('ol.View', function() {
|
||||
});
|
||||
});
|
||||
|
||||
describe('#calculateExtent', function() {
|
||||
it('returns the expect extent', function() {
|
||||
var view = new ol.View({
|
||||
resolutions: [512],
|
||||
zoom: 0,
|
||||
center: [0, 0]
|
||||
});
|
||||
|
||||
var extent = view.calculateExtent([100, 200]);
|
||||
expect(extent[0]).to.be(-25600);
|
||||
expect(extent[1]).to.be(-51200);
|
||||
expect(extent[2]).to.be(25600);
|
||||
expect(extent[3]).to.be(51200);
|
||||
});
|
||||
it('returns the expected extent with rotation', function() {
|
||||
var view = new ol.View({
|
||||
resolutions: [512],
|
||||
zoom: 0,
|
||||
center: [0, 0],
|
||||
rotation: Math.PI / 2
|
||||
});
|
||||
var extent = view.calculateExtent([100, 200]);
|
||||
expect(extent[0]).to.roughlyEqual(-51200, 1e-9);
|
||||
expect(extent[1]).to.roughlyEqual(-25600, 1e-9);
|
||||
expect(extent[2]).to.roughlyEqual(51200, 1e-9);
|
||||
expect(extent[3]).to.roughlyEqual(25600, 1e-9);
|
||||
});
|
||||
});
|
||||
|
||||
describe('fit', function() {
|
||||
var view;
|
||||
beforeEach(function() {
|
||||
|
||||
Reference in New Issue
Block a user