diff --git a/src/ol/parser/ogc/filter_v1.js b/src/ol/parser/ogc/filter_v1.js index ef7ca8da0b..72ba5453fd 100644 --- a/src/ol/parser/ogc/filter_v1.js +++ b/src/ol/parser/ogc/filter_v1.js @@ -234,7 +234,8 @@ ol.parser.ogc.Filter_v1 = function() { ol.expr.functions.DWITHIN); }, 'Distance': function(node, obj) { - obj.distance = new ol.expr.Literal(this.getChildValue(node)); + var value = goog.string.toNumber(this.getChildValue(node)); + obj.distance = new ol.expr.Literal(value); obj.distanceUnits = new ol.expr.Literal(node.getAttribute('units')); } } diff --git a/test/spec/ol/parser/ogc/filter_v1_0_0.test.js b/test/spec/ol/parser/ogc/filter_v1_0_0.test.js index 87ec4afffa..e3cb981bc6 100644 --- a/test/spec/ol/parser/ogc/filter_v1_0_0.test.js +++ b/test/spec/ol/parser/ogc/filter_v1_0_0.test.js @@ -140,6 +140,27 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() { }); }); + it('reads DWithin', function(done) { + var url = 'spec/ol/parser/ogc/xml/filter_v1_0_0/dwithin.xml'; + afterLoadXml(url, function(xml) { + var filter = parser.read(xml); + expect(filter).to.be.a(ol.expr.Call); + var callee = filter.getCallee(); + expect(callee).to.be.a(ol.expr.Identifier); + var name = callee.getName(); + expect(name).to.equal(ol.expr.functions.DWITHIN); + var args = filter.getArgs(); + expect(args.length).to.equal(5); + var distance = args[1]; + expect(distance).to.be.a(ol.expr.Literal); + expect(distance.getValue()).to.equal(1000); + var units = args[2]; + expect(units).to.be.a(ol.expr.Literal); + expect(units.getValue()).to.equal('m'); + done(); + }); + }); + it('DWithin written correctly', function(done) { var url = 'spec/ol/parser/ogc/xml/filter_v1_0_0/dwithin.xml'; afterLoadXml(url, function(xml) {