diff --git a/src/ol/geom/MultiLineString.js b/src/ol/geom/MultiLineString.js index 449338bf1b..bd4b31e4ba 100644 --- a/src/ol/geom/MultiLineString.js +++ b/src/ol/geom/MultiLineString.js @@ -100,6 +100,17 @@ class MultiLineString extends SimpleGeometry { return new MultiLineString(this.flatCoordinates.slice(), this.layout, this.ends_.slice()); } + /** + * @inheritDoc + * @override + * @api + */ + containsXY(x, y) { + return this.getLineStrings().some(function(lineString) { + return lineString.containsXY(x, y); + }); + } + /** * @inheritDoc */ diff --git a/test/spec/ol/geom/multilinestring.test.js b/test/spec/ol/geom/multilinestring.test.js index e497d21db6..9b4b9302a9 100644 --- a/test/spec/ol/geom/multilinestring.test.js +++ b/test/spec/ol/geom/multilinestring.test.js @@ -355,4 +355,30 @@ describe('ol.geom.MultiLineString', function() { }); }); + describe('#containsXY()', function() { + + let multiLineString; + beforeEach(function() { + multiLineString = new MultiLineString( + [[[1, 2, 3], [4, 5, 6]], [[-1, -1, 9], [2, 2, 12]]]); + }); + + it('does contain XY', function() { + expect(multiLineString.containsXY(1, 2)).to.be(true); + expect(multiLineString.containsXY(4, 5)).to.be(true); + expect(multiLineString.containsXY(3, 4)).to.be(true); + + expect(multiLineString.containsXY(-1, -1)).to.be(true); + expect(multiLineString.containsXY(2, 2)).to.be(true); + expect(multiLineString.containsXY(0, 0)).to.be(true); + }); + + it('does not contain XY', function() { + expect(multiLineString.containsXY(1, 3)).to.be(false); + expect(multiLineString.containsXY(2, 11)).to.be(false); + expect(multiLineString.containsXY(-2, 3)).to.be(false); + }); + + }); + });