2017-01-03 11 views
5

Po narysowaniu wielokąta na mapie OpenLayers, chcę wiedzieć, czy znacznik znajduje się wewnątrz wielokąta, czy nie. Szukałem w interfejsie API OpenLayers, ale nie znalazłem rozwiązania.Sprawdź, czy punkt znajduje się wewnątrz wielokąta w module OpenLayers 3

screenshot for visual clarification

I można zobaczyć mój pełny kod w tym link.

mam wrażenie, że muszę zmodyfikować tę funkcję:

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

Jak mogę to zrobić?

Odpowiedz

7

Masz metodę "intersectsCoordinate" dla ol.geom.Polygon.

Więc kod, który będzie wyglądać następująco:

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

to praca dziękuję –

1

można wykorzystać bibliotekę JSTS, który wykorzystuje proste przetwarzanie geometryczne, takie jak intersects, difference, itp zawiera parser OL3, który pozwala na konwersję geometrię OL3 do JSTS i vice versa.

Zobacz example in OL3. Zasadniczo użyłbyś procesu, który sprawdzi, czy geometria twojego znacznika znajduje się w twoim wielokącie, czy nie i rób to, co chcesz.

Powiązane problemy