Merge pull request #10845 from gedaiu/master

Fix createHitDetectionImageData error for features with no size
This commit is contained in:
Andreas Hocevar
2020-03-26 23:20:43 +01:00
committed by GitHub
2 changed files with 40 additions and 12 deletions

View File

@@ -65,6 +65,10 @@ export function createHitDetectionImageData(size, transforms, features, styleFun
const image = originalStyle.getImage();
if (image) {
const imgSize = image.getImageSize();
if (!imgSize) {
continue;
}
const canvas = document.createElement('canvas');
canvas.width = imgSize[0];
canvas.height = imgSize[1];

View File

@@ -6,6 +6,7 @@ import Feature from '../../../../src/ol/Feature.js';
import Point from '../../../../src/ol/geom/Point.js';
import Map from '../../../../src/ol/Map.js';
import View from '../../../../src/ol/View.js';
import ImageStyle from '../../../../src/ol/style/Image.js';
describe('ol.layer.Vector', function() {
@@ -132,19 +133,41 @@ describe('ol.layer.Vector', function() {
let map, layer;
beforeEach(function() {
const source = new VectorSource({
features: [
new Feature({
geometry: new Point([-1000000, 0]),
name: 'feature1'
}),
new Feature({
geometry: new Point([1000000, 0]),
name: 'feature2'
})
]
});
const feature = new Feature({
geometry: new Point([-1000000, 0]),
name: 'feature with no size'
});
const testImage = new ImageStyle({
opacity: 1,
displacement: []
});
testImage.getImageState = () => {};
testImage.listenImageChange = () => {};
testImage.getImageSize = () => {};
feature.setStyle([new Style({
image: testImage
})]);
source.addFeature(feature);
layer = new VectorLayer({
source: new VectorSource({
features: [
new Feature({
geometry: new Point([-1000000, 0]),
name: 'feature1'
}),
new Feature({
geometry: new Point([1000000, 0]),
name: 'feture2'
})
]
})
source
});
const container = document.createElement('div');
container.style.width = '256px';
@@ -171,6 +194,7 @@ describe('ol.layer.Vector', function() {
map.renderSync();
const pixel = map.getPixelFromCoordinate([-1000000, 0]);
layer.getFeatures(pixel).then(function(features) {
expect(features.length).to.equal(1);
expect(features[0].get('name')).to.be('feature1');
done();
});