2015-03-01 2 views
0

Как говорится в этом вопросе, я хочу проверить, содержатся ли точки в многоугольнике. checkПроверьте, содержится ли многослойный слой в многоугольнике в Openlayers

До сих пор я пробовал containsPoint, но он возвращает undefined.

var p = new OpenLayers.Geometry.Point(13977549.20, 1019860.15); 
for (var i = 0; i < layer_floodhazard.features.length; i++) { 
    var feature = layer_floodhazard.features[i]; 
    var inside = feature.geometry.containsPoint(p); 
    if (inside) { 
     alert('Contains'); 
    }; 
} 

layer_floodhazard представляет собой вектор слой, добавленный на карте. С другой стороны, у меня есть еще один векторный слой, который содержит точки, в которых я пытаюсь проверить, находятся ли эти точки внутри или многоугольник.

ответ

1

Функция containsPoint никогда не должна возвращать неопределенными:

{Boolean | Номер} Точка находится внутри многоугольника. Возвращает 1, если точка находится на ребре. Возвращает логическое значение в противном случае.

, так что вы, вероятно, не вызываете функцию containsPoint, которую вы считаете.

Я бы поставил точку останова на строке, которая вызывает containsPoint, и проверит объект 'feature', чтобы гарантировать, что вы вызываете функцию на правильном свойстве. Я ожидаю, что свойство .geometry не является объектом OpenLayers.Geometry.Polygon.

Не зная, как был заселен массив layer_floodhazard.features, нет никакого способа узнать, не видя какой-либо рабочий код. Если бы вы могли поместить свой код в плункер или аналогичную службу, я был бы рад помочь вам отладить.

Кроме того, просто проверка «правдивости» может не дать вам желаемых результатов, поскольку объекты на краю также будут считаться «внутри» на основе вашего теста. Я проверил бы (результат === true), чтобы убедиться, что вы проверяете возвращаемый логический результат, если точка находится внутри полигона. Конечно, это не связано с вашей текущей проблемой :).

+0

Спасибо за головы. Теперь я понимаю, что у 'layer_floodhazard' нет функции containsPoint, когда я смотрел документацию. Собственно, это векторный слой. –

+0

, пожалуйста, примите мой ответ, если он помог вам с вашей проблемой, спасибо! –

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