Клуб API Карт

Как проверить попадание точек (добавленных через ObjectManager) в объект?

sqrt361
2 июня 2016, 04:01

Имеется большой массив точек. Все они добавляются через ObjectManager. Так же есть области в виде многоугольников и окружностей. Они добавляются как geoObject. Как проверить попадание в эти области?  

8 комментариев
Подписаться на комментарии к посту
Брать координаты каждой точки в ОМ и проверять через метод contains геометрии полигона
dimik,
А как использовать contains для круга?  Я создаю круг через new ymaps.geometry.base. Радиус у меня 3000. Contains выдает true на все точки.
sqrt361,
Не надо испозовать базовые геометрии используйте ymaps.geometry.Circle
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/geometry.Circle-docpage/
dimik,
А contains для полигона работает таким же образом? Просто для круга проверка попадания работает, а такой же код для полигона уже нет. Вот пример:


var object_coord = objects[j].geometry._bounds; // [[55.70,37.54], [55.74,37.61]]
var polygon = new ymaps.geometry.Polygon([object_coord]);
polygon.options.setParent(myMap.options);
polygon.setMap(myMap);
if(polygon.contains(mark_coord)){
myMap.balloon.open(mark_coord, "Вы находитесь в запретной зоне");
}
sqrt361,
Не надо использовать педальные поля, используйте только документированные методы
geometry._bounds => geometry.getBounds()


Площадь полигона из 2х точек равна нулю. Для bounds лучше использовать геометрию Rectangle 
dimik,
Уже разобрался. Нашел Ваш старый пост касательно base geometry. Спасибо большое. 
dimik,
пробую так сделать, не работает (пишет false хотя точка входит в полигон), в чем может быть дело? ниже код полигона и проверки точки

 var myPolygon = new ymaps.GeoObject({
// Описываем геометрию геообъекта.
geometry: {
// Тип геометрии - "Многоугольник".
type: "Polygon",
// Указываем координаты вершин многоугольника.
coordinates: [
[[30,30],
[30,60],
[60,60],
[60,30]
]
]
},
// Описываем свойства геообъекта.
properties:{
// Содержимое балуна.
balloonContent: "Многоугольник"
}
}, {
fillColor: '#00FF00',
strokeColor: '#0000FF',
opacity: 0.5
});
console.log(myPolygon.geometry.contains( 58.245508, 33.435225));
есть geoObject
var data = {
"type": "FeatureCollection",
"features": [
{"type": "Feature", "id": 1, "geometry": {"type": "Point", "coordinates": [56.2, 37.3]}},
{"type": "Feature", "id": 2, "geometry": {"type": "Point", "coordinates": [56.2, 37.2]}},
{"type": "Feature", "id": 3, "geometry": {"type": "Point", "coordinates": [55.7, 37.1]}}
]
};
om = new ymaps.geoQuery(data);
и окружность
circle = new ymaps.Circle([[56.2, 37.3], 50000], null, { draggable: true });
нахожу pointы которые входят в эту окружность

om.searchInside(circle);
но как узнать их id ?