Клуб API Карт

Координаты и кнопки

Пост в архиве.
ThiefCC
7 апреля 2011, 14:13

Здравствуйте, участники клуба.

У меня 2 вопроса, которые я хочу задать по двум соответствующим проблемам.

1. Нигде ни в примерах ни в обсуждениях не нашел (и у самого не получается), как добавить метку на карту при нажатии на кнопку?

В прмерах все происходит в основном элементе <script>, в котором и добавляют карту. Неужели нельзя сделать, к примеру обыкновенный выпадающий список, и при выборе эелемента отображать одну метку или группу меток, а при выборе другого элемента, другую метку (ну и задать для них прослушивания событий)?

 

2. Стандартные методы преобразования координат не позволяют перводить вот такие координаты E13154.4445,N4307.6488 (поступающие с трекера), в декартовы. Как это сделать?

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

1. На все случаи жизни примеры не напишешь.

Не вижу проблемы вызывать создание карты/метки по клику вместо document.ready. Можно и само АПИ подгружать по клику

 

2. Из стандарных есть только YMaps.Converter

Ок. Разобрался, как вызвать при событиях функции.

1. Написать скрипт, который добавляет метку (или выполняет другое действие). Например:

    

2. Использовать метод load. В обработчике событий HTML элемента, после которого происходит действия описанные в (1), нужно указать имя функции из (1). Например:

    

3. При этом важно, чтобы ссылка на экземпляр класса карты, при его создании, записывалась в глобальную переменну! Для этого перед переменной, в которую записывается экземпляр не нужно писать var! Например:

    map = new YMaps.Map(document.getElementById("YMapsID"));

Можно еще про jquery прочитать.

И тогда всё станет намного проще

 

Спасибо. =) Уже читаю во все силы. Но до сдачи диплома мало осталось, поэтому совсем некогда. Мне лишь бы все работало. Если останется время, буду делать код более лаконичным.

> 2. Стандартные методы преобразования координат не позволяют перводить
вот такие координаты E13154.4445,N4307.6488 (поступающие с трекера), в
декартовы. Как это сделать?

Что это за координаты вообще? Зачем их переводить в декартовы?

Я не знаю. E - east, N - north, скорее всего. 131 градус западной долготы, 54', 4445'', 43 градуса северной широты, 7', 6488'', как-то так. А в декартову, чтобы работать с ними. Поместить метку отслеживаемого трекера на на карту.

Мы тоже не знаем, что это за координаты.

Надо определиться в каком они у вас формате (похоже на NMEA) и переводить в decimal degrees

Мда, ну и каша... Вобщем так:

С трекеров действительно идут данные в NMEA. Например:

    Координаты с примера: E13154.4445,N4307.6488.
    Координаты центра моего города: W9029.3825,N5615.2619.

Что соответствует атласной системе Градусы/Минуты/Секунды (DMS). Например:

    Координаты с примера: 131°54′44.45″ восточной долготы, 43°8′4.88″ северной широты.
    Координаты центра моего города: 90°29′38.25″ в. д., 56°15′26.19″ с. ш..

Гугл, Яндекс и большинство географических информационных систем (ГИС), действительно работают в Десятичных Градусах (DD). Например:

    Координаты с примера: 131.912347,43.134688.
    Координаты центра моего города: 90.493958,56.257275.

Следуя из перевода статьи, для перевода из DMS, в DD (чтобы работать в Я.Картах), нужно:

    DD координата = Градусы + Минуты / 60 + Секунды / 3600.
    С дальнейшим округлением до 6 знаков после запятой.

Для перевода же из NMEA в DMS придется писать функции самостоятельно функцию, но думаю с этим ни у кого не возникнет проблем.

 

Fuck yeah!

 

На то чтобы разобраться в 2-х проблемах ушел весь день. =( Большое спасибо за наводки Лунному программисту. =)

maps.yandex.ru должен понимать NMEA

можете проверить правильность своих преобразований.

 

maps.google.com - не работает с NMEA

В том то и дело, почему я открыл тему? У меня нет реального трекера, но есть пример поступающей с него строки. И эти координаты, которые я кидал, вбитые в Я.Карты выкидывают меня в тихий океан (E13154.4445,N4307.6488 или 13154.4445,4307.6488) или на равнины приморского края (131.544445,43.076488). А если я их перевожу, в DD (131.912347,43.134688), то я появляюсь на улицах Владивостока.

Вроде в NMEA первой идет широта (4 цифры перед точкой)

потом долгота (5 цифр перед точкой)

$GPRMC,125504.049,A,5542.2389,N,03741.6063,E,0.06,25.82,200906,,*3B

У вас наоборот и части света в конце после запятой, а не в начале.