Pull to refresh
508.11
Яндекс
Как мы делаем Яндекс

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

Reading time 3 min
Views 31K
Всем привет! Меня зовут Сергей Константинов, и я руководитель группы разработки алгоритмов API Яндекс.Карт.

Сегодня мы запустили новую версию JavaScript API — 2.0. Вообще, в этом месте должна быть перепечатка поста из блога Яндекса, но мы решили в этот раз отступить от традиции :).

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



Думаю, те из вас, кто знаком с нашим API, легко поймут, что это не косметическое обновление, а полноценный релиз практически нового продукта. Мы полностью переписали ядро, расширили функционал и добавили ряд новых фишек — более глубокую поддержку мобильных устойств, мультиязычность, HTTPS, статистику пробок и т.д. (см. наш промосайт).

Но не фишечки и не новый дизайн сподвигли нас на такую работу. Мы запустили первую версию API в ноябре 2008 года. С тех пор прошло более трёх лет, и наше представление о том, для кого и для чего мы делаем API, несколько изменилось.

Мы всегда представляли себе нашу аудиторию в виде своеобразной пирамиды: основание пирамиды — наши пользователи; средний слой — использующий картографические API бизнес; и вишенка на торте — разработчики.

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

Как показала практика, тогда это было правильным решением — наше API быстро завоевало рынок. Но время шло, и мы начали понимать, что на практике всё происходит немного иначе, и в этой системе есть обратные связи. Пожалуй, чем-то нам помог пример одной компании с фруктовым логотипом, которая начала выпускать продукт, ориентированный прежде всего на конечного пользователя; пользователь выбрал свой продукт, и бизнес, стремясь удовлетворить своих пользователей, сформировал заказ на разработку под новую платформу.

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

Проблема в том, что сами мы не взаимодействуем с пользователями напрямую — мы делаем это опосредованно, через разработчиков, использующих наше API. Задача, по большому счету, распалась на два больших блока:
— сделать так, чтобы пользователю было легко и приятно работать с нашей картой;
— сделать так, чтобы разработчики делали на нашем API удобные и красивые сервисы.

Полем для экспериментов стал сервис Яндекс.Карты, где вторая версия API работает с октября прошлого года. Мы очень серьёзно подошли к вопросу look & feel нашей карты и начали настраивать поведение карты под каждый браузер отдельно. Не скажу, что это было просто — в итоге, нам пришлось писать по две-три реализации ключевых интерфейсов.



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

Мы серьёзно озаботились размерами подключаемого кода и выделили из состава API несколько сборок. Теперь ядро весит всего 60 Кб, и принудительно грузится асинхронно.

Наконец, мы сильно освежили дизайн стандартных элементов карты (тулбаров, панели пробок, etc) и меток на карте. Но, разумеется, это всё — только начало. Мы будем на постоянной основе заниматься улучшением внешнего вида, плавности и красивости интерфейсов.

Перейдём ко второй задаче — помочь разработчикам делать хорошие сервисы. Мы всегда старались оперативно отвечать на вопросы в нашем клубе и письма в суппорт, но с релизом API 2.0 мы окончательно поняли, что проблемы разработчиков — это, на самом деле, наши проблемы, и мы должны сделать всё, чтобы их решить. Например, мы полностью перевели всю вёрстку на кастомные тэги (а, точнее, на кастомный тэг — ymaps), чтобы сторонние css-ресеты или стили темы CMS не ломали оформление карт.

Мы стараемся предоставить разработчикам не только API, но и подсказки, как сделать ваш сервис ещё чуть-чуть лучше. Например, попробуйте воспользоваться технологией кластеризации — возможно, ваш сайт станет удобнее и красивее :).

В презентации к моему докладу на конференции РИТ++ про всё это рассказано немного подробнее. Но это, на самом деле, только верхушка айсберга — в версии 2.0 мы имплементировали множество интересных технологических решений — свой touch-фреймворк, каскадную систему опций, одновременный показ нескольких слоёв в разных проекциях (да, на нашем движке теперь можно легко и просто показать, например, тайлы от OSM) и многое другое. Приходите 26 апреля на наш APIшник в офис Яндекса — мы подробно расскажем и покажем, что и как мы сделали нового в API 2.0.

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

Вопросы по новому API можно задавать прямо в комментах :)
Tags:
Hubs:
+66
Comments 158
Comments Comments 158

Articles

Information

Website
www.ya.ru
Registered
Founded
Employees
over 10,000 employees
Location
Россия
Representative