Клуб API Карт

Принадлежность точки кругу, всегда true

sergcloud
28 февраля 2013, 14:35

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

Задача следующая: есть окружность. Необходимо узнать лежит ли точка в пределах этой окружности. Судя по документации нужно сделать так:

  var circle2 = new ymaps.geometry.base.Circle([50.451118, 30.522301], 200000);
  var xc = circle2.contains([55.028739, 82.906928]);

50.451118, 30.522301 - координаты Киева

55.028739, 82.906928 - координаты Новосибирска

Радиус 200 км, очевидно, что Новосиб не может находится в этой окружности. Но xc = true. Подскажите пожалуйста в чем моя ошибка? Или как еще можно проверять принадлежность точки кругу?

Скриншот:

 http://sergcloud.ru/images/1.png

Версия апи - 2.

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

Разве параметр radius должен быть в метрах или километрах :-)?

Добрый день.

А почему вы используете базовую геометрию geometry.base.Circle вместо обычной geometry.Circle? Базовые геометрии работают в единичных координтах вне контекста карты, соответственно они не предназначены для работы с географической системой координат.

Чтобы рассчитывать contains на круге, заданном широтой, долготой и радиусом в метрах, используйте геометрию geometry.Circle таким образом:

 

 

var circle = new ymaps.geometry.Circle([50.451118, 30.522301], 200000);

circle.setMap(myMap); // В геометрию обязательно должна быть задана карта.

circle.options.setParent(myMap.options); // В опциях карты находится информация об используемой проекции, координатной системе, и другие необходимые параметры.

circle.contains([55.028739, 82.906928]);

 

 

Разобрался. Огромное спасибо за помощь.