diff --git a/src/ol/style/expressions.js b/src/ol/style/expressions.js index cb13025692..f66162cbe1 100644 --- a/src/ol/style/expressions.js +++ b/src/ol/style/expressions.js @@ -606,6 +606,12 @@ function getEqualOperator(operator) { ); } + if (type === (ValueTypes.COLOR | ValueTypes.STRING)) { + // It's not possible to compare attributes with color values + // So force it to be treated as a string + type = ValueTypes.STRING; + } + return `(${expressionToGlsl( context, args[0], diff --git a/test/browser/spec/ol/style/expressions.test.js b/test/browser/spec/ol/style/expressions.test.js index 63878458b9..fad983292e 100644 --- a/test/browser/spec/ol/style/expressions.test.js +++ b/test/browser/spec/ol/style/expressions.test.js @@ -250,6 +250,9 @@ describe('ol.style.expressions', function () { expect(expressionToGlsl(context, ['==', 10, ['get', 'attr4']])).to.eql( '(10.0 == a_attr4)' ); + expect(expressionToGlsl(context, ['==', 'red', ['get', 'attr4']])).to.eql( + '(0.0 == a_attr4)' + ); expect(expressionToGlsl(context, ['!=', 10, ['get', 'attr4']])).to.eql( '(10.0 != a_attr4)' );