Клуб API Карт

точка внутри круга

spb.pavlov
4 октября 2012, 09:53

некорректно работает geometry.contains для круга, в примере точка не лежит внутри круга но все равно возвращается true, в чем может быть причина?

 

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Примеры. Добавление меток на карту.</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <script src="http://api-maps.yandex.ru/2.0.17/?load=package.full&lang=ru-RU"
            type="text/javascript"></script>
    <script type="text/javascript">
        ymaps.ready(init);
        function init () {
            var myMap = new ymaps.Map("map", {
                    center: [55.76, 37.64],
                    zoom: 10
                }),
            myPlacemark = new ymaps.Placemark([55.8, 37.6]);
            myMap.geoObjects.add(myPlacemark);
            myCircle = new ymaps.Circle([
                    [55.76, 37.60],
                    1500
                ]);
            myMap.geoObjects.add(myCircle);
fff = myCircle.geometry.contains([55.8, 37.6]);
alert(fff);
        }
    </script>
</head>
<body>
<div id="map" style="width:600px; height:300px"></div>
</body>
</html>

 

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

            myMap.geoObjects.add(myCircle);
fff = myCircle.geometry.contains([55.8, 37.6]);

проверяй лучше метку а не просто координаты


            myMap.geoObjects.add(myCircle);
fff = myCircle.geometry.contains(myPlacemark);

тогда наоборот, когда метка внутри выдается false почему то

значит мой вариант не верный.

пробовал, пример вот этот? http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/IPolygonGeometryAccess.xml#contains

 

 

это пример для полигона, мне нужно для круга.

если сделать так как здесь 

http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/ICircleGeometryAccess.xml#contains

 

такие же ошибки будут

спасибо, за сообщение об ошибке

будем чинить

а каким образом я смогу узнать об исправлении ошибки - т.е. публикуется ли это где то?

ошибки могут быть исправлены в текущем релизе (2.0.17) или  только с выходом нового релиза?

исправят в новом релизе

анонсы публикуют в блоге и тут в клубе

да, я уже разобрался. сорри )

можно кстати посчитать математически.

когда-то находил для полигона такое

function inside_circular_road(a){X=[37.50663757324219,37.42698669433594,37.40947723388672,37.38372802734375,37.363128662109375,37.366905212402344,37.3809814453125,37.392311096191406,37.38750457763672,37.401580810546875,37.446556091308594,37.464752197265625,37.526893615722656,37.58079528808594,37.644309997558594,37.69786834716797,37.8369140625,37.84172058105469,37.848243713378906,37.84412384033203,37.83313751220703,37.84584045410156,37.736663818359375,37.67383575439453,37.58800506591797];Y=[55.59522540012757,55.66306304713546,55.68958466999194,55.71009271344361,55.751656176679255,55.787577714316704,55.8045613172881,55.837156788363565,55.84852984240601,55.87011021700465,55.885132326344426,55.886095083843635,55.90861679246706,55.914004664397375,55.89995614406812,55.89668384026084,55.82790167952735,55.82057315625548,55.771166064828556,55.713574142662694,55.69480943831871,55.65725299247944,55.59076338488527,55.56980452798329,55.57485120131226];x=a.getLng();y=a.getLat();var e=false;var b=X.length;for(var d=0,c=b-1;d((Y[d]Y[c](X[c]-X[d])*(y-Y[d])/(Y[c]-Y[d])+X[d])){e=!e}}return e};

возможно можно попробобать так и для круга