2017-01-03 4 views
5

Когда я рисую многоугольник на карте OpenLayers, я хочу знать, находится ли маркер внутри полигона или нет. Я искал в API OpenLayers, но не нашел решения.Проверьте, находится ли точка внутри многоугольника в OpenLayers 3

screenshot for visual clarification

И вы можете увидеть мой полный код в этом link.

У меня создалось впечатление, что я должен изменить эту функцию:

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 
    }); 
    } 
} 

Как я могу это сделать?

ответ

7

У вас есть метод 'intersectsCoordinate' для ol.geom.Polygon.

Так что код, который будет выглядеть следующим образом:

var polygonGeometry = e.feature.getGeometry(); 
var coords = iconFeature.getGeometry().getCoordinates(); 
polygonGeometry.intersectsCoordinate(coords) 
+0

это работа спасибо –

1

Вы можете использовать JSTS библиотеку, которая реализует простой обработки геометрии, такие как intersects, difference и т.д. Он содержит Ol3 анализатор, который позволяет преобразование геометрии из Ol3 в JSTS и наоборот.

См. example in OL3. В принципе, вы должны использовать процесс, который проверяет, находится ли геометрия вашего маркера внутри вашего полигона или нет, и делать то, что вы хотите оттуда.

Смежные вопросы