@dmitpap

API 2GIS карт — как вычислить вхождение меток в полигон?

Нужна возможность вычислить вхождение меток в полигон (команда либо функция, чтобы определить какие входят, а какие нет)
например, как тут у Яндекса: Как проверить вхождение метки в полигоны?
  • Вопрос задан
  • 283 просмотра
Решения вопроса 1
@dmitpap Автор вопроса
Как у Яндекса не получится, в API не предусмотрена такая команда. Решение:

function pointInPoly(vs,point){

var x = point[0], y = point[1];

var inside = false;
for (var i = 0, j = vs.length - 1; i < vs.length; j = i++) {
var xi = vs[i][0], yi = vs[i][1];
var xj = vs[j][0], yj = vs[j][1];

var intersect = ((yi > y) != (yj > y))
&& (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
if (intersect) inside = !inside;
}

return inside;
};

DG.then(function() {
var map;
map = DG.map('map', {
center: [55.752283, 37.625224],
zoom: 10
});

points = [
[56.00161461335189,36.947861328124986],
[55.97236171651059,38.22776855468748],
[55.49816766327379,38.115158691406236],
[55.42794458112196,37.39280761718749],
[56.00161461335189,36.947861328124986]
];

// Добавление многоугольников в группу и на карту
var polygon1=DG.polygon(points, {color: "blue"});//.addTo(polygons);

var marker1=DG.marker([55.752283, 37.625224]);//.addTo(map);
var marker2=DG.marker([54.752283, 36.625224]);//.addTo(map);

var group=DG.featureGroup([polygon1,marker1,marker2]).addTo(map);

var p=false;
group.eachLayer(function(layer){

var g=layer.toGeoJSON().geometry;

if(g.type=='Polygon'){

p=g.coordinates;

}else if(p){

console.log(pointInPoly(p[0],g.coordinates));
}

});

});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы