Vector layer/source refactor
This moves the feature cache from ol.layer.Vector to ol.source.Vector. These are the minimum changes required to maintain the existing functionality and make tests pass. More refactoring to come.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
goog.provide('ol.test.interaction.Draw');
|
||||
|
||||
describe('ol.interaction.Draw', function() {
|
||||
var target, map, vector;
|
||||
var target, map, source, layer;
|
||||
|
||||
var width = 360;
|
||||
var height = 180;
|
||||
@@ -15,11 +15,12 @@ describe('ol.interaction.Draw', function() {
|
||||
style.width = width + 'px';
|
||||
style.height = height + 'px';
|
||||
document.body.appendChild(target);
|
||||
vector = new ol.layer.Vector({source: new ol.source.Vector({})});
|
||||
source = new ol.source.Vector();
|
||||
layer = new ol.layer.Vector({source: source});
|
||||
map = new ol.Map({
|
||||
target: target,
|
||||
renderer: ol.RendererHint.CANVAS,
|
||||
layers: [vector],
|
||||
layers: [layer],
|
||||
view: new ol.View2D({
|
||||
projection: 'EPSG:4326',
|
||||
center: [0, 0],
|
||||
@@ -56,7 +57,7 @@ describe('ol.interaction.Draw', function() {
|
||||
|
||||
it('creates a new interaction', function() {
|
||||
var draw = new ol.interaction.Draw({
|
||||
layer: vector,
|
||||
layer: layer,
|
||||
type: ol.geom.GeometryType.POINT
|
||||
});
|
||||
expect(draw).to.be.a(ol.interaction.Draw);
|
||||
@@ -69,7 +70,7 @@ describe('ol.interaction.Draw', function() {
|
||||
|
||||
beforeEach(function() {
|
||||
map.addInteraction(new ol.interaction.Draw({
|
||||
layer: vector,
|
||||
layer: layer,
|
||||
type: ol.geom.GeometryType.POINT
|
||||
}));
|
||||
});
|
||||
@@ -79,7 +80,7 @@ describe('ol.interaction.Draw', function() {
|
||||
simulateEvent('mousedown', 10, 20);
|
||||
simulateEvent('mouseup', 10, 20);
|
||||
simulateEvent('click', 10, 20);
|
||||
var features = vector.getFeatures();
|
||||
var features = source.getFeatures();
|
||||
expect(features).to.have.length(1);
|
||||
var geometry = features[0].getGeometry();
|
||||
expect(geometry).to.be.a(ol.geom.Point);
|
||||
@@ -92,7 +93,7 @@ describe('ol.interaction.Draw', function() {
|
||||
simulateEvent('mousemove', 15, 20);
|
||||
simulateEvent('mouseup', 15, 20);
|
||||
simulateEvent('click', 15, 20);
|
||||
var features = vector.getFeatures();
|
||||
var features = source.getFeatures();
|
||||
expect(features).to.have.length(0);
|
||||
});
|
||||
|
||||
@@ -102,7 +103,7 @@ describe('ol.interaction.Draw', function() {
|
||||
|
||||
beforeEach(function() {
|
||||
map.addInteraction(new ol.interaction.Draw({
|
||||
layer: vector,
|
||||
layer: layer,
|
||||
type: ol.geom.GeometryType.MULTIPOINT
|
||||
}));
|
||||
});
|
||||
@@ -112,7 +113,7 @@ describe('ol.interaction.Draw', function() {
|
||||
simulateEvent('mousedown', 30, 15);
|
||||
simulateEvent('mouseup', 30, 15);
|
||||
simulateEvent('click', 30, 15);
|
||||
var features = vector.getFeatures();
|
||||
var features = source.getFeatures();
|
||||
expect(features).to.have.length(1);
|
||||
var geometry = features[0].getGeometry();
|
||||
expect(geometry).to.be.a(ol.geom.MultiPoint);
|
||||
@@ -125,7 +126,7 @@ describe('ol.interaction.Draw', function() {
|
||||
|
||||
beforeEach(function() {
|
||||
map.addInteraction(new ol.interaction.Draw({
|
||||
layer: vector,
|
||||
layer: layer,
|
||||
type: ol.geom.GeometryType.LINESTRING
|
||||
}));
|
||||
});
|
||||
@@ -148,7 +149,7 @@ describe('ol.interaction.Draw', function() {
|
||||
simulateEvent('mouseup', 30, 20);
|
||||
simulateEvent('click', 30, 20);
|
||||
|
||||
var features = vector.getFeatures();
|
||||
var features = source.getFeatures();
|
||||
expect(features).to.have.length(1);
|
||||
var geometry = features[0].getGeometry();
|
||||
expect(geometry).to.be.a(ol.geom.LineString);
|
||||
@@ -181,7 +182,7 @@ describe('ol.interaction.Draw', function() {
|
||||
simulateEvent('mouseup', 30, 20);
|
||||
simulateEvent('click', 30, 20);
|
||||
|
||||
var features = vector.getFeatures();
|
||||
var features = source.getFeatures();
|
||||
expect(features).to.have.length(1);
|
||||
var geometry = features[0].getGeometry();
|
||||
expect(geometry).to.be.a(ol.geom.LineString);
|
||||
@@ -194,7 +195,7 @@ describe('ol.interaction.Draw', function() {
|
||||
|
||||
beforeEach(function() {
|
||||
map.addInteraction(new ol.interaction.Draw({
|
||||
layer: vector,
|
||||
layer: layer,
|
||||
type: ol.geom.GeometryType.MULTILINESTRING
|
||||
}));
|
||||
});
|
||||
@@ -217,7 +218,7 @@ describe('ol.interaction.Draw', function() {
|
||||
simulateEvent('mouseup', 30, 20);
|
||||
simulateEvent('click', 30, 20);
|
||||
|
||||
var features = vector.getFeatures();
|
||||
var features = source.getFeatures();
|
||||
expect(features).to.have.length(1);
|
||||
var geometry = features[0].getGeometry();
|
||||
expect(geometry).to.be.a(ol.geom.MultiLineString);
|
||||
@@ -230,7 +231,7 @@ describe('ol.interaction.Draw', function() {
|
||||
|
||||
beforeEach(function() {
|
||||
map.addInteraction(new ol.interaction.Draw({
|
||||
layer: vector,
|
||||
layer: layer,
|
||||
type: ol.geom.GeometryType.POLYGON
|
||||
}));
|
||||
});
|
||||
@@ -260,7 +261,7 @@ describe('ol.interaction.Draw', function() {
|
||||
simulateEvent('mouseup', 10, 20);
|
||||
simulateEvent('click', 10, 20);
|
||||
|
||||
var features = vector.getFeatures();
|
||||
var features = source.getFeatures();
|
||||
expect(features).to.have.length(1);
|
||||
var geometry = features[0].getGeometry();
|
||||
expect(geometry).to.be.a(ol.geom.Polygon);
|
||||
@@ -277,7 +278,7 @@ describe('ol.interaction.Draw', function() {
|
||||
|
||||
beforeEach(function() {
|
||||
map.addInteraction(new ol.interaction.Draw({
|
||||
layer: vector,
|
||||
layer: layer,
|
||||
type: ol.geom.GeometryType.MULTIPOLYGON
|
||||
}));
|
||||
});
|
||||
@@ -307,7 +308,7 @@ describe('ol.interaction.Draw', function() {
|
||||
simulateEvent('mouseup', 10, 20);
|
||||
simulateEvent('click', 10, 20);
|
||||
|
||||
var features = vector.getFeatures();
|
||||
var features = source.getFeatures();
|
||||
expect(features).to.have.length(1);
|
||||
var geometry = features[0].getGeometry();
|
||||
expect(geometry).to.be.a(ol.geom.MultiPolygon);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
goog.provide('ol.test.interaction.Select');
|
||||
|
||||
describe('ol.interaction.Select', function() {
|
||||
var map, target, select, vector, features;
|
||||
var map, target, select, source, vector, features;
|
||||
|
||||
beforeEach(function() {
|
||||
target = document.createElement('div');
|
||||
@@ -11,24 +11,19 @@ describe('ol.interaction.Select', function() {
|
||||
map = new ol.Map({
|
||||
target: target
|
||||
});
|
||||
features = ol.parser.GeoJSON.read(JSON.stringify({
|
||||
'type': 'FeatureCollection',
|
||||
'features': [{
|
||||
'type': 'Feature',
|
||||
'geometry': {
|
||||
'type': 'Point',
|
||||
'coordinates': [-1, 1]
|
||||
}
|
||||
}, {
|
||||
'type': 'Feature',
|
||||
'geometry': {
|
||||
'type': 'Point',
|
||||
'coordinates': [1, -1]
|
||||
}
|
||||
}]
|
||||
}));
|
||||
vector = new ol.layer.Vector({source: new ol.source.Vector({})});
|
||||
vector.addFeatures(features);
|
||||
|
||||
features = [
|
||||
new ol.Feature({
|
||||
geometry: new ol.geom.Point([-1, 1])
|
||||
}),
|
||||
new ol.Feature({
|
||||
geometry: new ol.geom.Point([1, -1])
|
||||
})
|
||||
];
|
||||
|
||||
source = new ol.source.Vector({});
|
||||
source.addFeatures(features);
|
||||
vector = new ol.layer.Vector({source: source});
|
||||
select = new ol.interaction.Select({
|
||||
layers: [vector]
|
||||
});
|
||||
@@ -52,21 +47,21 @@ describe('ol.interaction.Select', function() {
|
||||
|
||||
it('toggles selection of features', function() {
|
||||
select.select(map, [features], [vector]);
|
||||
expect(vector.getFeatures(selectedFeaturesFilter).length).to.be(2);
|
||||
expect(source.getFeatures(selectedFeaturesFilter).length).to.be(2);
|
||||
select.select(map, [features], [vector]);
|
||||
expect(vector.getFeatures(selectedFeaturesFilter).length).to.be(0);
|
||||
expect(source.getFeatures(selectedFeaturesFilter).length).to.be(0);
|
||||
});
|
||||
|
||||
it('can append features to an existing selection', function() {
|
||||
select.select(map, [[features[0]]], [vector], true);
|
||||
select.select(map, [[features[1]]], [vector]);
|
||||
expect(vector.getFeatures(selectedFeaturesFilter).length).to.be(2);
|
||||
expect(source.getFeatures(selectedFeaturesFilter).length).to.be(2);
|
||||
});
|
||||
|
||||
it('can clear a selection before selecting new features', function() {
|
||||
select.select(map, [[features[0]]], [vector], true);
|
||||
select.select(map, [[features[1]]], [vector], true);
|
||||
expect(vector.getFeatures(selectedFeaturesFilter).length).to.be(1);
|
||||
expect(source.getFeatures(selectedFeaturesFilter).length).to.be(1);
|
||||
});
|
||||
|
||||
});
|
||||
@@ -74,8 +69,9 @@ describe('ol.interaction.Select', function() {
|
||||
});
|
||||
|
||||
goog.require('goog.dispose');
|
||||
goog.require('ol.Feature');
|
||||
goog.require('ol.Map');
|
||||
goog.require('ol.geom.Point');
|
||||
goog.require('ol.interaction.Select');
|
||||
goog.require('ol.layer.Vector');
|
||||
goog.require('ol.parser.GeoJSON');
|
||||
goog.require('ol.source.Vector');
|
||||
|
||||
Reference in New Issue
Block a user