Клуб 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 ) ) ); 

     }

 

Andrey.Cjkjvfnby
23 мая 2011, 13:35

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

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

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

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

Andrey.Cjkjvfnby
25 мая 2011, 10:31

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

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))

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

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

:-)