Клуб API Карт

Объекты внутри окружности

scharik911
18 октября 2012, 13:41

Здравствуйте. Стоит задача подсчитать количество объектов внутри окружности. Объекты квадраты и прямоугольники, многоугольники. Каким образом это можно реализовать в api 2 ?

17 комментариев
Подписаться на комментарии к посту

все точки "объектов" должны быть внутри окружности или только центр?

 

и так и так ) 

 я для начала пытался просто считать расстояние от центра окружности до точек и если хоть одна внутри, значит пересекается.

 Для начала хотя-бы часть. А в последствии мне понадобится считать отдельно частично входящие объекты и отдельно полностью входящие.

используйте метод contains у геометрии круга

has no method 'contains'

если я не ошибаюсь то чтобы он работал нужно чтобы круг был добавлен на карту.

 

как вы спрашиваете?

var myCircle = new ymaps.geometry.Circle(point1, radius);

alert(myCircle.contains(point2));

да и как-то странно, что в версии 1 была distance функция, а в версии 2, расстояние найти уже сложнее. Видел функции getDIstance у КоордСистем, но вроде это или не то или не работает 

 

Вообще дока по первому API на уровень проще и лучше чем по второму.

 

Видел функции getDIstance у КоордСистем, но вроде это или не то или не работает 

это то и оно работает

видимо пока я не понимаю как использовать такие функции.

Можете написать пример, в котором мы рисуем круг, и находим принадлежит ли точка кгругу? 

и вторйо пример, где мы считаем расстояние между двумя точками.

 Если вас не затруднит

Обе этих части у меня не работают

Попадание точки в круг

Тут всё зависит от ваших задач, если вы не хотите добавлять круг на карту (имеется ввмду чтобы он был виден на карте), можно работать напрямую с его геометрией

var circleGeometry = new ymaps.geometry.Circle([55.7, 37.5], 1000);
// установим ему карту чтобы он мог произвести расчеты
circleGeometry.setMap(myMap);
// установим его опциям родителя чтобы он мог получать значения опций карты для расчета.
circleGeometry.options.setParent(myMap.options);
// Проверяем попадание точки
circleGeometry.contains([55.7, 37.5]); // true

 

Если круг должен быть видим, тогда еще проще

 

// Создаем круг

var circle = new ymaps.Circle([[55.7, 37.5], 1000]);

// Добавляем его на карту

myMap.geoObjects.add(circle);

// Проверяем

circle.geometry.contains([55.7, 37.5]);

 

Uncaught TypeError: Object [object Object] has no method 'contains'

оба варианта выдают одинаковую ошибку

подключите api package.full

подключи без "-stable"

и если не работает дай ссылку

ссылки нету.

 

Вот архив: http://2file.net/get/27122/