35
API 2.0 Новые интерфейсы Яндекс.Карт теперь и на украинском Я.Субботник, Киев, 5 мая 2012 года Разработчик интерфейсов Александр Зинчук

Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

  • Upload
    yandex

  • View
    1.023

  • Download
    3

Embed Size (px)

DESCRIPTION

Brand new Yandex.Maps API 2.0. Рассказ о нововведениях, вкусностях и мультиязычности. О том, как мы использовали паттерны слабой связанности в новой модульной архитектуре, о CSS Transitions и «коробочном» кластеризаторе, о метках на Canvas и о собственной системе событий.

Citation preview

Page 1: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

API 2.0Новые интерфейсы Яндекс.Карт теперь и на украинском

Я.Субботник, Киев, 5 мая 2012 года

Разработчик  интерфейсовАлександр  Зинчук

Page 2: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

1. API Яндекс.Карт в цифрах

2. Как мы делали 2.0

3. Объектная модель

4. Кастомизация

5. Работа на touch-устройствах

2

Page 3: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

API Яндекс.Карт в цифрах

3

Page 4: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

4

Page 5: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

Пользователи API с внешних сайтов:

1 000 000 человекежедневно

5

Page 6: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

http://maps.yandex.ua/

Аудитория: 1 300 000 человекежемесячно

6

Page 7: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

http://maps.yandex.ua/

7

Page 8: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

Как мы делали API 2.0

8

Page 9: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

По HTTPSБез ключей

На 4 языках Новая архитектура

Новый дизайн

9

Page 10: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

— большое монолитное

ядро

— большие сложные

интерфейсы, сильная связанность объектов

— сложность отладки

Проблемы 1.x— модульность

— простые интерфейсы с понятной

ответственностью

— режим для

упрощенной отладки

— многоязычность

Требования к 2.0

10

Page 11: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

— модуль

— пакет

— сборщик

— загрузчик

Модульная система

Состоит из следующих логических единиц:

11

Page 12: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

— атомарная единица функциональности

с уникальным именем

— модули делятся на 2 типа: js, css

— js модуль это javascript замыкание, предоставляющее в публичную область 1 объект

или класс

— может использовать для работы другие модули

— модулей много (≈ 600 в API)

Модуль

12

Page 13: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

Подключение

/?lang=uk-UA&mode=debug&coordorder=longlat&load=package.map&ns=YM

Язык интерфейса *

Режим работы (release)

Порядок координат (latlong)

Пространство имен (ymaps)

Загружаемые пакеты

* обязательный параметр() значение по умолчанию

13

Page 14: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

2 запроса:1. загрузчик + информация о всех модулях и пакетах

2. код запрошенных модулей включая зависимости

14

Page 15: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

Объектная модель

15

Page 16: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

Объектная модель

Карта

События Опции

16

Page 17: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

17

Объектная модель карты

Map

.geoObjects

.cursors

.controls

.layers

.behaviors

.panes

.events

.balloon .hint

.action .zoomRange

.converter .container

.options

Page 18: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

18

Менеджеры опций и событий

Map

.geoObjects

.cursors

.controls

.layers

.behaviors

.panes

.events

.balloon .hint

.action .zoomRange

.converter .container

.options

Page 19: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

19

Корневые коллекции карты

Map

.geoObjects

.cursors

.controls

.layers

.behaviors

.panes

.events

.balloon .hint

.action .zoomRange

.converter .container

.options

Page 20: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

20

Необязательные поля карты

Map

.geoObjects

.cursors

.controls

.layers

.behaviors

.panes

.events

.balloon .hint

.action .zoomRange

.converter .container

.options

Page 21: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

1.1

— Placemark

— Polyline

— Polygon

Геообъекты

2.0

— GeoObject

Вспомогательные классы

— Placemark— Polyline— Polygon— Circle— Rectangle

4621

Page 22: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

Геообъект / отображение геометрии

фабрики оверлеев

оверлеи

частные реализации

интерактивная

статическая графика

хотспотная

html (на основе макета)

графические статические

графические интерактивные

хотспотные

макет (layout)

графика (svg, canvas, etc.)

хотспоты

ТИПЫ

IOverlay

интерактивная графика

IOverlayFactory

ILayout

IHotspotShape22

Page 23: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

2. Макеты (Лейауты)

ILayout

метод параметры

конструктор {Object} dataSet

setParentElement() / getParentElement()

{DOMElement} parent

setData() / getData() {Object} dataSet

isEmpty() -

getClientBoundingRect() -

< IDomEventEmitter

интерфейс

23

Page 24: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

Макеты (лейауты)

ILayout

тема twirl

Контролы

ГеообъектыБалун

Хинт

универсальные

фабрика лейаутовtemplateLayoutFactory.createClass()

ImageWithContentImage24

Page 25: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

Работа на touch-устройствах

25

Page 26: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

Код, написанный для десктопов,должен без изменений работатьна touch-устройствах

Работа  на  touch-­‐устройствах

26

Page 27: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

Эмулируем события мыши

touchstart → mouseenter, mousemove, mousedowntouchend → mouseup (магия),

mousemove, mouseleave27

Page 28: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

Возможны варианты

Былtouchmove?

Прошло> 400 мс?

Был click< 250 мс назад?

Не былоничего

Ничегоне делаем

contextmenu

dblclick

click

28

Page 29: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

Мы решили проблему?

Код, написанный для десктопов, работает

без изменений на touch-устройствах— Если, конечно, нет неочевидных интерфейсных решений на :hover

Можно пользоваться нашим touch-фреймворком

29

Page 30: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

А можно что-то еще?

30

Page 31: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

31

Яндекс API 2.0 + тайлы OSM

Page 32: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

32

Page 33: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

33

Собственная карта + кластеризатор

Page 34: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

http://api.yandex.ru/maps/

34

Page 35: Александр Зинчук "API 2.0: Новые интерфейсы Яндекс.Карт – теперь и на украинском"

Разработчик интерфейсов

[email protected]

@ajaxy_ru

Александр Зинчук