Check if a point is inside polygon in OpenLayers 3
Asked Answered
B

2

15

When I draw a polygon in an OpenLayers map, I want to know if the marker is inside the polygon or not. I searched in the OpenLayers API, but didn't find a solution.

screenshot for visual clarification

And you can see my full code in this link.

I have the impression that I have to modify this function:

  function addInteraction() {
    var value = typeSelect.value;
    if (value !== 'None') {
    draw = new ol.interaction.Draw({
      source: vectorSource,
      type: /** @type {ol.geom.GeometryType} */ (typeSelect.value)
    });
    map.addInteraction(draw);
    draw.on('drawend',function(e){
      //Here
    });
  }
}

How can I do this?

Businesslike answered 3/1, 2017 at 15:2 Comment(0)
C
24

You have a method 'intersectsCoordinate' for the ol.geom.Geometry.

So the code for that will look like:

var polygonGeometry = e.feature.getGeometry();
var coords = iconFeature.getGeometry().getCoordinates();
polygonGeometry.intersectsCoordinate(coords)
Caine answered 3/1, 2017 at 21:0 Comment(0)
E
2

You can use the JSTS library, which implements simple geometry processing such as intersects, difference, etc. It contains an OL3 parser that allows the conversion of geometry from OL3 to JSTS and vice-versa.

See an example in OL3. Basically, you would use a process that checks if the geometry of your marker is within your polygon or not and do what you want from there.

Elder answered 3/1, 2017 at 15:21 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.