Add hasFeature method to ol.source.Vector
This commit is contained in:
@@ -827,6 +827,21 @@ VectorSource.prototype.handleFeatureChange_ = function(event) {
|
||||
VectorEventType.CHANGEFEATURE, feature));
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns true if the feature is contained within the source.
|
||||
* @param {ol.Feature} feature Feature.
|
||||
* @return {boolean} Has feature.
|
||||
* @api
|
||||
*/
|
||||
VectorSource.prototype.hasFeature = function(feature) {
|
||||
const id = feature.getId();
|
||||
if (id !== undefined) {
|
||||
return id in this.idIndex_;
|
||||
} else {
|
||||
const featureKey = getUid(feature).toString();
|
||||
return featureKey in this.undefIdIndex_;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {boolean} Is empty.
|
||||
|
||||
@@ -85,6 +85,35 @@ describe('ol.source.Vector', function() {
|
||||
|
||||
});
|
||||
|
||||
describe('#hasFeature', function() {
|
||||
|
||||
it('returns true for added feature without id', function() {
|
||||
const feature = new Feature();
|
||||
vectorSource.addFeature(feature);
|
||||
expect(vectorSource.hasFeature(feature)).to.be(true);
|
||||
});
|
||||
|
||||
it('returns true for added feature with id', function() {
|
||||
const feature = new Feature();
|
||||
feature.setId('1');
|
||||
vectorSource.addFeature(feature);
|
||||
expect(vectorSource.hasFeature(feature)).to.be(true);
|
||||
});
|
||||
|
||||
it('return false for removed feature', function() {
|
||||
const feature = new Feature();
|
||||
vectorSource.addFeature(feature);
|
||||
vectorSource.removeFeature(feature);
|
||||
expect(vectorSource.hasFeature(feature)).to.be(false);
|
||||
});
|
||||
|
||||
it('returns false for non-added feature', function() {
|
||||
const feature = new Feature();
|
||||
expect(vectorSource.hasFeature(feature)).to.be(false);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('when populated with 3 features', function() {
|
||||
|
||||
Reference in New Issue
Block a user