Клуб API Карт

Выделение группы объектов

Пост в архиве.

Здравствуйте.

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

 

Для информации: я использую кластерер, в него добавлены все placemark-и. Не знаю верно или нет, но так же я их храню в массиве, и когда нужно достать нужный плейсмарк по айди то обхожу массив (У меня не получилось обойти геообъекты карты когда в неё добавлен кластер - тоже не знаю в чем дело).

 

Поидее по клику мышкой когда я добавляю круг, у меня есть широта и долгота координаты мышки и радиус круга в метрах. Единственный вариант это как то рассчитывать входит ли плейсмарк в область на основе широты, долготы и радиуса. Только вот даже не знаю как. Может есть какое то простое решение?)

 

Спасибо заранее, буду признателен любому ответу 

3 комментария

у геометрии круга есть метод contains

используйте его чтобы проверить попадание точки в круг

Хм, выдается ошибка что не найден метод contains. 

пишу console.log(myCircle.geometry.contains([5,5]));

а например getCoordinates работает

И кстати один раз помогло то что подключил ?load=package.full. 

 

Сменил адрес с api-maps.yandex.ru/2.0-stable/ на api-maps.yandex.ru/2.0/, вроде нашелся метод. Однако, пример из апи у меня не сработал, написал по другому. Не понимаю, обхожу массив геообъектов и применяю contains:

 

$.each(tm.cur.screensPlacemarkArray, function(index, geoObj) {

console.log('geoObj coords:' + geoObj.geometry.getCoordinates());

console.log('circle coords:' + tm.cur.map_circle.geometry.getCoordinates();

console.log(tm.cur.map_circle.geometry.contains(geoObj.geometry.getCoordinates()));

return false; // только первый вывожу

});

 

Перетащил круг далеко-далеко от меток. Круг радиусом 10000. В консоль выводит:

 

geoObj coords:55.56904336698137,36.638870849609354

circle coords:61.02774434024845,19.901199951169627

true


и так true для любого варианта. Что делаю не так?)