Клуб API Карт

Как определить находится ли точка в указанной области

Пост в архиве.
v0233
22 мая 2011, 11:33

Добрый день.

Подскажите пожалуйста.

Нарисовал я прямоугольник на карте имею 4 точки. вот ссылка на карту http://maps.yandex.ru/?um=gOxIY0khUarXNRFl-uXsUlbrf8QHJ_3s&l=map

с кооринатами (37.746696,55.70023), (37.742649,55.69989), (37.743295,55.696982), (37.747522,55.69731).

Есть точка (37.745355, 55.698603).

Вопрос как вычеслить, что эта точка находится в этой области, по координатам?

P.S. Пускать луч, я пробывал на картике, а мне надо программно и чтобы как нибудь это по координатам вычислять.

Помогите пожалуйста , геометрию вообще забыл.

Мне нужно для одного важного дела под 1с.

 

15 комментариев

 

//функция определения расстояния между двумя точками возвращает расстояние в метрах на php

    function distance($lat1,$lng1,$lat2,$lng2) //(x1,y1,x2,y2)

     {  

        $lat1=deg2rad($lat1); 

        $lng1=deg2rad($lng1); 

        $lat2=deg2rad($lat2); 

        $lng2=deg2rad($lng2); 

        $delta_lat=($lat2 - $lat1); 

        $delta_lng=($lng2 - $lng1); 

        return round( 6378137 * acos( cos( $lat1 ) * cos( $lat2 ) * cos( $lng1 - $lng2 ) + sin( $lat1 ) * sin( $lat2 ) ) ); 

     }

 

В апи всё есть.

P.S. Не пихнули лы в пост скриптум чего-то важного, того что должно быть в заголовке?

А можно пример, как начинающему.

 Не могу разобраться, для меня это только начало

Тогда приведите список поисковых запросов которые не помогли вам найти ответ. Штучек пять хотябы.

PS. Начало это когда поиск начнёте пользовать, а сейчас это так, баловство.

Вот что я нашел

http://api.yandex.ru/maps/jsapi/doc/ref/reference/hotspots.ishape.xml

Но разобраться не могу.

Я наверное слишком глуп для этого, и это не для моих мозгов.

Поэтому попрошу Вас написать пример, ПОЖАЛУЙСТА

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

вот у меня идет создание многоугольника

var polygon = new YMaps.Polygon([
     new YMaps.GeoPoint(37.768832,55.709974),
new YMaps.GeoPoint(37.762824,55.71058),
new YMaps.GeoPoint(37.760549,55.713245),
new YMaps.GeoPoint(37.774368,55.71683),
new YMaps.GeoPoint(37.77793,55.712421),
     ]);
  map.addOverlay(polygon);
       
Многоугольник на карте появляется,

Вот точка,  
37.770205, 55.712639
 которую надо определить находится она или нет, как это сделать я не понимаю, уже все перечитал.

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

Спасибо за уделенное мне внимание.

polygon.contains(new YMaps.GeoPoint(37.770205, 55.712639))

ar polygon = new YMaps.Polygon([
     new YMaps.GeoPoint(37.768832,55.709974),
new YMaps.GeoPoint(37.762824,55.71058),
new YMaps.GeoPoint(37.760549,55.713245),
new YMaps.GeoPoint(37.774368,55.71683),
new YMaps.GeoPoint(37.77793,55.712421),
     ]);

polygon.contains(new YMaps.GeoPoint(37.804867, 55.813444));
  map.addOverlay(polygon);

При отображении карты выдает ошибку.

this._map.coordSystem есть null или не является объектом

 и я честно сказать не пойму как идет ответ и куда он записывается? И как его получить как переменную?

Помогите пожалуйста.

ar polygon = new YMaps.Polygon([
     new YMaps.GeoPoint(37.768832,55.709974),
new YMaps.GeoPoint(37.762824,55.71058),
new YMaps.GeoPoint(37.760549,55.713245),
new YMaps.GeoPoint(37.774368,55.71683),
new YMaps.GeoPoint(37.77793,55.712421),
     ]
  map.addOverlay(polygon);

if(polygon.contains(new YMaps.GeoPoint(37.804867, 55.813444)) alert('уряя');

Спасибо большое. Наконечно я добился УРЯЯ. Получилось. вы выводе на карту выходит окно с этой надписью и просит нажать ок.

Только не пойму как теперь то что условие сработало записать в переменную

someVeryGoodVariable = polygon.contains(new YMaps.GeoPoint(37.804867, 55.813444))

Большое спасибо.

Вы мне очень помогли.

:-)