Skip to content

Commit 022ea5a

Browse files
authored
markerFile null defense (#2469)
* markerFile null defense * fix * spec
1 parent c9815e2 commit 022ea5a

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

src/renderer/geometry/symbolizers/ImageMarkerSymbolizer.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ export default class ImageMarkerSymbolizer extends PointSymbolizer {
3838
if (!isArrayHasData(cookedPoints)) {
3939
return;
4040
}
41+
if (!style.markerFile && !this._url) {
42+
console.warn('not find icon url:', style);
43+
return;
44+
}
4145

4246
const img = this._getImage(resources);
4347
if (!img) {

test/geometry/symbol/FunctionSpec.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,49 @@ describe('FunctionTypeSpec', function () {
251251
layer.addGeometry(marker);
252252
});
253253

254+
it('markerFile function type', function (done) {
255+
const funtype = {
256+
stops: [
257+
[1, 'resources/2.png'],
258+
[5, 'resources/2.png'],
259+
],
260+
property: "foo",
261+
type: "categorical",
262+
}
263+
const symbol = {
264+
'markerFile': funtype,
265+
'markerWidth': 10,
266+
'markerHeight': 10,
267+
markerDy: 5
268+
}
269+
270+
271+
var marker1 = new maptalks.Marker(map.getCenter(), {
272+
symbol,
273+
properties: {
274+
'foo': 5
275+
}
276+
});
277+
var marker2 = new maptalks.Marker(map.getCenter(), {
278+
symbol,
279+
properties: {
280+
'foo': 10
281+
}
282+
});
283+
284+
layer.addGeometry(marker1);
285+
286+
setTimeout(() => {
287+
expect(layer).to.be.painted();
288+
layer.clear();
289+
layer.addGeometry(marker2);
290+
setTimeout(() => {
291+
expect(layer).not.to.be.painted();
292+
done();
293+
}, 1000);
294+
}, 1000);
295+
});
296+
254297
it('symbol.visible function-type', function (done) {
255298
const symbol1 = {
256299
markerWidth: 20,

0 commit comments

Comments
 (0)