Use the layergroup's extent if no extent provided
This commit is contained in:
@@ -214,9 +214,13 @@ ol.layer.Group.prototype.getLayerStatesArray = function(opt_states) {
|
||||
layerState.maxResolution, ownLayerState.maxResolution);
|
||||
layerState.minResolution = Math.max(
|
||||
layerState.minResolution, ownLayerState.minResolution);
|
||||
if (goog.isDef(ownLayerState.extent) && goog.isDef(layerState.extent)) {
|
||||
layerState.extent = ol.extent.getIntersection(
|
||||
layerState.extent, ownLayerState.extent);
|
||||
if (goog.isDef(ownLayerState.extent)) {
|
||||
if (goog.isDef(layerState.extent)) {
|
||||
layerState.extent = ol.extent.getIntersection(
|
||||
layerState.extent, ownLayerState.extent);
|
||||
} else {
|
||||
layerState.extent = ownLayerState.extent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -382,6 +382,12 @@ describe('ol.layer.Group', function() {
|
||||
maxResolution: 500,
|
||||
minResolution: 0.25
|
||||
});
|
||||
var layer3 = new ol.layer.Layer({
|
||||
source: new ol.source.Source({
|
||||
projection: 'EPSG:4326'
|
||||
}),
|
||||
extent: [-5, -2, 5, 2]
|
||||
});
|
||||
|
||||
it('does not transform layerStates by default', function() {
|
||||
var layerGroup = new ol.layer.Group({
|
||||
@@ -405,6 +411,29 @@ describe('ol.layer.Group', function() {
|
||||
goog.dispose(layerGroup);
|
||||
});
|
||||
|
||||
it('uses the layer group extent if layer has no extent', function() {
|
||||
var groupExtent = [-10, -5, 10, 5];
|
||||
var layerGroup = new ol.layer.Group({
|
||||
extent: groupExtent,
|
||||
layers: [layer1]
|
||||
});
|
||||
var layerStatesArray = layerGroup.getLayerStatesArray();
|
||||
expect(layerStatesArray[0].extent).to.eql(groupExtent);
|
||||
goog.dispose(layerGroup);
|
||||
});
|
||||
|
||||
it('uses the intersection of group and child extent', function() {
|
||||
var groupExtent = [-10, -5, 10, 5];
|
||||
var layerGroup = new ol.layer.Group({
|
||||
extent: groupExtent,
|
||||
layers: [layer3]
|
||||
});
|
||||
var layerStatesArray = layerGroup.getLayerStatesArray();
|
||||
expect(layerStatesArray[0].extent).to.eql(
|
||||
ol.extent.getIntersection(layer3.getExtent(), groupExtent));
|
||||
goog.dispose(layerGroup);
|
||||
});
|
||||
|
||||
it('transforms layerStates correctly', function() {
|
||||
var layerGroup = new ol.layer.Group({
|
||||
layers: [layer1, layer2],
|
||||
@@ -451,6 +480,7 @@ describe('ol.layer.Group', function() {
|
||||
|
||||
goog.dispose(layer1);
|
||||
goog.dispose(layer2);
|
||||
goog.dispose(layer3);
|
||||
|
||||
});
|
||||
|
||||
@@ -460,6 +490,7 @@ goog.require('goog.dispose');
|
||||
goog.require('goog.events.EventType');
|
||||
goog.require('goog.object');
|
||||
goog.require('ol.ObjectEventType');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.layer.Layer');
|
||||
goog.require('ol.layer.Group');
|
||||
goog.require('ol.source.Source');
|
||||
|
||||
Reference in New Issue
Block a user