diff --git a/src/ol/format/KML.js b/src/ol/format/KML.js index d94a4c473b..e693a4e127 100644 --- a/src/ol/format/KML.js +++ b/src/ol/format/KML.js @@ -1171,6 +1171,7 @@ function readStyleMapValue(node, objectStack) { const ICON_STYLE_PARSERS = makeStructureNS( NAMESPACE_URIS, { 'Icon': makeObjectPropertySetter(readIcon), + 'color': makeObjectPropertySetter(readColor), 'heading': makeObjectPropertySetter(readDecimal), 'hotSpot': makeObjectPropertySetter(readVec2), 'scale': makeObjectPropertySetter(readScale) @@ -1252,6 +1253,9 @@ function iconStyleParser(node, objectStack) { let scale = /** @type {number|undefined} */ (object['scale']); + const color = /** @type {[number]|undefined} */ + (object['color']); + if (drawIcon) { if (src == DEFAULT_IMAGE_STYLE_SRC) { size = DEFAULT_IMAGE_STYLE_SIZE; @@ -1271,7 +1275,8 @@ function iconStyleParser(node, objectStack) { rotation: rotation, scale: scale, size: size, - src: src + src: src, + color: color }); styleObject['imageStyle'] = imageStyle; } else { diff --git a/test/spec/ol/format/kml.test.js b/test/spec/ol/format/kml.test.js index e1a248bb75..7adedfc2c8 100644 --- a/test/spec/ol/format/kml.test.js +++ b/test/spec/ol/format/kml.test.js @@ -1992,6 +1992,37 @@ describe('ol.format.KML', function() { expect(style.getZIndex()).to.be(undefined); }); + it('can read a feature\'s IconStyle and set color of image', () => { + const text = + '' + + ' ' + + ' ' + + ' ' + + ''; + const fs = format.readFeatures(text); + expect(fs).to.have.length(1); + const f = fs[0]; + expect(f).to.be.an(Feature); + const styleFunction = f.getStyleFunction(); + const styleArray = styleFunction(f, 0); + expect(styleArray).to.be.an(Array); + expect(styleArray).to.have.length(1); + const style = styleArray[0]; + expect(style).to.be.an(Style); + expect(style.getFill()).to.be(getDefaultFillStyle()); + expect(style.getStroke()).to.be(getDefaultStrokeStyle()); + const imageStyle = style.getImage(); + expect(imageStyle.getColor()).to.eql([0xFF, 0, 0, 0xFF / 255]); + }); + it('can read a feature\'s LabelStyle', function() { const text = '' +