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 =
'' +