Клуб API Карт

Попадание метки в круг

Пост в архиве.
sklyarov-petr
8 апреля 2013, 21:28

Добрый день. Я тут уже наверно всех достал, но прошу помогите мне)
Мне нужно определить попадает ли метка в окружность. Выводить карту мне не наджо - надо именно возращать значение. Вот я пытался сделать так, но мне ничего не возращает. Подскажите в чем моя беда (кроме тупой головы конечно :) ):

<!DOCTYPE html>
    
    <head>
        <title>Test location</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script src="http://api-maps.yandex.ru/2.0/?load=package.full&amp;lang=ru-RU&coordorder=longlat" type="text/javascript"></script>
    </head>
    
    <body>
        <script type="text/javascript">
            YMaps.ready(init);
            function init() {
                var myMap = new YMaps.Map("YMapsID", {
                    center: [41.969065, 45.043241],
                    zoom: 15
                }),
                if (navigator.geolocation) {
                    navigator.geolocation.getCurrentPosition(function (position) {
                        var latitude = position.coords.latitude;
                        var longitude = position.coords.longitude;
                    });
                } else alert("Geolocation API ERROR");
                var myCircle = new YMaps.geometry.Circle(latitude, longitude, 10000);
                myMap.addOverlay(myCircle);
                if (myCircle.contains(new YMaps.GeoPoint(45.064655, 41.936149))) alert(1);
            }
        </script>
    </body>
</html>
15 комментариев

Кроме того о чем я уже тебе говорил (что так сделать нельзя):

1. javascript is a case sensitive language.

YMaps != ymaps

2. Первое АПИ несовместимо со вторым, поэтому 

new YMaps.GeoPoint(45.064655, 41.936149) и myMap.addOverlay(myCircle);

будут вызывать ошибку.

 

Вообщем тут как в php не получится к сожалению, а может и к счастью.

Приходится чтото изучать, а не просто Ctrl+C, Ctrl+V

 

Подскажите, почему не работает скрипт:

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml">


Примеры. Перетаскиваемые метки.











При этом, если я делаю через полигоны то работает - выдается сообдение. Где тут ошибся?

 

 

 

 

 

 

А что пишется в консоли javascript?

что 

var circle = new YMaps.Circle([map.getCenter(), 5000],{ pointColor: 'red' }, { strokeColor: "FF0000AA" });

TypeError: YMaps.Circle is not a constructor
ну вот и ответ. В первом АПИ нет круга
какую задачу ты хочешь решить в результате?
зачем тебе чтото фильтровать не имея карты?

Да нет, мне не нужно - это просто я тупой, с АПИ не работал. Пофиг, пусть в карте все будет, я ее даже вывиду на сайте (просто сделаю невидимой). Я просто не знаю как изменить код,  что бы круг отобразился на карте.  Простите, что достаю 2ой день уже этим

зачем тебе чтото отображать на карте, если карта тебе не нужна?
Еще раз, какую задачу ты хочешь решить?

у меня в бд в таблице есть координаты объектов, я их получил с яндекс.карт.

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

Впринципе координаты чела я получаю, но теперь загвоздка с самой картой, кругом и поподающим в  него точкам. 

 

 сама карта мне вообщем то ненужна, хотя ее тоже можно впринципе вывести (ну в крайнем случае через css  я сделаю ее невидимой)

т.е. ты хочешь переслать все данные на клиент и потом из них чтото выбрать? =)
Почему бы не сделать это на сервере?

а как? что почитать? Я ьак понимаю, что яндекс.карт это js api а, js на стороне клиента выполняется. Мне нужно ж определить координаты клиента, а потом в этих координатах вывести круг и определить по поданию точек в этот круг, какие объекты к нему ближе всего

определение местоположения, да, на клиенте. Но это GeolocationAPI броузера, а не Яндекса. А посчитать попадание координат в круг можно и на сервере. Какая у тебя БД?

MySQL 

поищи в поисковиках

MySQL Spatial index

Ну вообще-то карту нужно показывать, иначе вы скрываете товарные знаки, т.е. нарушаете ПС (http://legal.yandex.ru/maps_api/).

2.3.6.2. Удалять, скрывать или модифицировать любые содержащиеся в Сервисе или Данных товарные знаки, логотипы, ссылки или иные указания на Правообладателей, равно как и любые другие уведомления и/или информацию, передаваемые Сервисом вместе с Данными.