API Яндекс.Карт, версия 2.0

Более двух лет назад мы открыли API Яндекс.Карт и сейчас наши карты ежедневно используют более 120 тысяч сайтов. Но мир меняется, технологии стремительно развиваются и «чтобы двигаться вперед, нужно бежать в два раза быстрее». Поэтому сегодня мы представляем версию 2.0 JavaScript API Яндекс.Карт.

Мы проделали большую работу.

Во-первых, мы полностью изменили архитектуру API и отказались от API-ключей.

Код модулей был полностью переписан с использованием паттернов композиции и слабой связанности. Теперь модули представляют собой отдельные небольшие компоненты, в большинстве своем с открытыми интерфейсами, что позволит легко и удобно наследовать, переопределять и заменять отдельные классы на пользовательские реализации, а также писать плагины и расширять существующую функциональность. Связи в проекте осуществляются на основе интерфейсов, а также через внутреннюю систему событий. Наряду с этим было решено отказаться от использования сторонних библиотек.

Во-вторых, мы обновили дизайн. Карта стала плавнее двигаться при перемещении или изменении масштаба. Изменился дизайн элементов управления, меток и панели пробок.

В-третьих, мы существенно улучшили поддержку мобильных устройств. В современных мобильных устройствах, где есть поддержка JavaScript, интерактивная карта полностью сохранит свои возможности, а на большинстве тач-устройствах будут работать основные жесты и мультитач.

В-четвертых, мы добавили новые инструменты. Во второй версии API Яндекс.Карт широко используются элементы HTML5 и CSS3. Теперь вы можете размещать множество точек на карте с помощью canvas и рисовать на карте круги и многоугольники с закругленными углами. Также мы создали кластеризатор, чтобы вы могли объединять метки в группы и делать карту более наглядной.

И наконец, мы реализовали загрузку API и карты по HTTPS.

Вся информация об API Яндекс.Карт 2.0, примеры использования и документация собраны на одном сайте. Задать вопросы, обсудить возможности и рассказать о своем опыте использования API Яндекс.Карт вы можете в клубе разработчиков.

Специально для разработчиков 26 апреля мы проведем APIшник Яндекс.Карт. Приходите, иначе пропустите что-то очень интересное!

Команда разработчиков API Яндекс.Карт.

 

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

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

Спасибо, посмотрим.

К сожалению, с самого момента запуска в Яндекс.Картах используется неправильный порядок — сначала долгота, потом широта. И это слишком глубоко зашито (используется во всех урлах, например), так что боюсь, это навсегда.

Впрочем, когда-то логичное поведение по вращению колёсика мыши (на себя — карта крупнее, от себя — мельче) поменяли на «как у гугла», так что, может, и с координатами что-то изменится…

Теперь Вы можете использовать параметр coordorder=longlat/latlong при подключении скрипта.

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

А когда карта Санкт-Петербурга будут обнавлятся? 2 года уже без изменений, если не больше!

Панормама Санкт-Петербурга очень старая.

Плакать хочеться :( от такой отзывчивости.

Миниум в квартал должны быть обнавления.

А еще навигацию запустили, опаснную с такими картами. Да и прокладывает она сказать по правде то же ужасно. Под кирпичи часто заводит. Не знает односторонних дорог.

У меня нет доверия яндекс картам.

Как навигатор по СПб Яндекс никуда не годится.

Кластеры - это, конечно, классно - раньше их мне пришлось писать самому.
Но меня больше волнует, появилась ли возможность подсвечивать улицу в поиске?
К сожалению, пока нет.
В современных мобильных устройствах, где есть поддержка JavaScript, интерактивная карта полностью сохранит свои возможности, а на большинстве тач-устройствах будут работать основные жесты и мультитач.

Касается ли это обычных Карт и обычных (не мобильных) устройств? На своём компьютере (Windows 7) с поддержкой Multitouch я могу двигать карту, но изменять масштаб не получается — браузер перехватывает жест и меняет масштаб всей страницы.

И ещё вопрос: можно ли надеяться, что у инструмента «Линейка» снова будет точность до третьей значащей цифры?

 

 

По умолчанию мультитач включается только там где мы знаем что он есть.

Но АПИ позволяет включить его(behavior) кому угодно когда угодно.

Sergey Konstantinov
26 ноября 2015, 16:38

Это вопрос, на самом деле, не к разработчикам API, а к разработчикам браузеров. Десктопные браузеры умеют сами как-то реагировать на мульти-тач, но не позволяют получать мульти-тач события из JavaScript. Соответственно, и подменить стандартную реакцию браузера на масштабирование карты тоже нельзя.

Те же проблемы и у многих альтернативных мобильных браузеров, даже использующих стандартные движки.

Насколько я знаю, вы к грамматике бережно относитесь.

Созданные с помощью API 2.0 карты, хорошо работают на тач-устройствах. — запятая тут лишняя.

Иона Косуля
26 ноября 2015, 16:38

Отлично!

Встроенного jQuery больше нет в составе API карт?

Sergey Konstantinov
26 ноября 2015, 16:38

Нет.

Вы всегда можете использовать свежую сборку jQuery с yandex.st

Кластеры - это здорово. Вот только при загрузке страницы они адски мерцают: http://api.yandex.ru/maps/new_api.xml#tools

Это происходит из-за одновременного геокодирования слишком большого объема данных. Мы его исправим. Вот тут можно посмотреть на работы «чистого» кластеризатора http://api.yandex.ru/maps/doc/jsapi/2.x/examples/cluster.html. Зумиться можно кнопками мыши.

Кластеры - это здорово. Только в мануале ни слова о том, как им задать свою иконку. Или это невозможно сейчас?

Возможно все =)

У нас есть опции clusterIcons и clusterNumbers.

Упустили описания этих опций в документации, скоро поправим.

 

Вот пример кода, где можно задавать свои метки для кластеров:

 

// это массив, который описывает иконки для кластеров разного размера

var clusterIcons = [{

        href: 'test/heart.png',

        size: [40, 40],

        // отступ нужен, чтобы правильно позиционировалась картинка

        // относительно центра кластера

        // в этом примере центр картинки будет совпадает с центром кластера

        offset: [-20, -20]

    },

    {

        href: 'test/heart.png',

        size: [60, 60],

        offset: [-30, -30]

     } ],

     // этот массив описывает, сколько объектов должно быть в кластере

     // если геообъектов будет меньше 100, то будет взята первая картинка

     // если больше, то вторая.

     // можно задавать любое количество иконок

     // чисел в массиве должно быть на 1 меньше, чем описанных иконок

     clusterNumbers = [100],

     cluster = new ym.Clusterer({

         clusterIcons: clusterIcons,

         clusterNumbers: clusterNumbers

     });

 

Хочется также обратить внимание на этот вопрос:
http://clubs.ya.ru/mapsapi/replies.xml?item_no=23554

Без возможности задать минимальное число объектов в кластере и максимальное приближение, при котором объекты группируются, кластеризатор не очень удобен в использовании... 

Можете подсказать код метода CreateCluster? Видимо, только переопределив его можно задать иконку кластера.

alexander.seroshtan
26 ноября 2015, 16:38

Не подскажите как во второй версии сделать redraw карты?

Что-то какая-то ошибка со встроенными картами в Опере.

 

Во всех браузерах встроенная на сайт карта отображается, а в Опере — нет.

Код не изменял, брал из "Конструктора карт". Win7 Home, Opera 11.64

В Клубе разработчиков обсуждалась подобная проблема. Посмотрите, должно помочь. http://clubs.ya.ru/mapsapi/replies.xml?item_no=25104

Кто нибудь!!! Выручайте... как получить список станций метро используя сервисы Яндекс? В API только поиск ближайших станций есть, а требуется обновление актуального списка станций с привязкой к линиям метро. :(