Клуб API Карт

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

Пост в архиве.

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

У меня 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 прочитать.

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

 

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

Sergey Konstantinov
28 января 2016, 06:14

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

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

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

Sergey Konstantinov
28 января 2016, 06:14

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

Надо определиться в каком они у вас формате (похоже на 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

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