Архитектура JS API Яндекс.Карт: от версии 1.1 к 2.0 Сергей Константинов, руководитель группы разработки алгоритмов API Яндекс.Карт.

Презентация:



Advertisements
Похожие презентации
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Advertisements

Школьная форма Презентация для родительского собрания.
Типовые расчёты Растворы
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Michael Jackson
1. Определить последовательность проезда перекрестка


Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
1 1. Все внешние силы лежат в одной плоскости, проходящей через главную ось сечения 2. Силы перпендикулярны продольной оси Вначале рассматривается наиболее.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
API Яндекс.Карт Мастер-класс Сергей Константинов
Развивающая викторина для детей "Самый-самый " Муниципальное общеобразовательное учреждение средняя общеобразовательная школа 7 ст. Беломечётской.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от
Проектирование архитектуры ИСО 1. UML 2 Структура определения языка 4.
Разработал: Учитель химии, биологии высшей квалификационной категории Баженов Алексей Анатольевич.
В7 ТРИГОНОМЕТРИЧЕСКИЕ ВЫРАЖЕНИЯ ЕГЭ по математике.
Ф. Т. Алескеров, Л. Г. Егорова НИУ ВШЭ VI Московская международная конференция по исследованию операций (ORM2010) Москва, октября 2010 Так ли уж.
Маршрутный лист «Числа до 100» ? ? ?

Транксрипт:

Архитектура JS API Яндекс.Карт: от версии 1.1 к 2.0 Сергей Константинов, руководитель группы разработки алгоритмов API Яндекс.Карт

Я расскажу вам Какие архитектурные задачи стояли перед нами в рамках API 2.0 Каким образом мы эти задачи решали Об архитектуре карты и геообъектов О подсистемах событий и опций 1

Что такое хорошая архитектура? 2

Большое монолитное ядро Большие сложные интерфейсы, сильная связанность объектов Сложность отладки Проблемы 1.x Модульность Простые интерфейсы с понятной ответственностью Режим для упрощенной отладки Многоязычность Требования к 2.0 3

модуль пакет сборщик загрузчик Модульная система Состоит из следующих логических единиц: 4

Модуль Атомарная единица функциональности с уникальным именем Модули делятся на 2 типа: js, css js модуль это javascript замыкание, предоставляющее в публичную область 1 объект или класс Может использовать для работы другие модули Модулей много ( 600 в API) 5

{ "name": "Placemark", "type": "js", "src": ["placemark-helper.js"], "depends": [ "util.augment", "GeoObject ] } Файл описания модуля 6

Пакет Именованный набор модулей Может включать другие пакеты Все содержимое пакета и его дочерних пакетов доступно в публичной области 7

Видимость функционала Package Module Private Public 8

Файл описания пакета { "name": "package.mapHint.core", "description": "Хинт на карте.", "depends": [ "map.addon.hint", "package.layouts" ] } 9

Сборщик Работает с файлами описания модулей и пакетов Поддерживает несколько режимов сборки: release, debug, dev Позволяет отслеживать неправильные (не используемые, циклические) зависимости Написан на node.js 10

Загрузчик Поддерживает два способа загрузки: 1. Указание имен пакетов в параметре load 2. Постзагрузка с помощью функции ymaps.load Загрузка осуществляется асинхронно 11

Подключение /?lang=ru-RU&mode=debug&coordorder=longlat&load=package.map&ns=YM Язык интерфейса * Режим работы (release) Порядок координат (latlong) Пространство имен (ymaps) Загружаемые пакеты * обязательный параметр (значение по умолчанию) 12

Параметр суслик 13

Параметр суслик /?onload=onLoadCallback function onLoadCb () { ymaps.load("package.geoObjects", function () { // получаем доступ к package.geoObjects })} 14

Загрузка /combine.xml?modules=... /index.xml?lang=ru-RU&load= Загрузчик + информация о всех модулях и пакетах 2. Код запрошенных модулей включая зависимости 15

Profit 16

За основу взята Document Object Model (DOM) Карта является корневым элементом модели Система опций выполняет роль CSS стилей Система событий работает поверх системы событий браузера и никак ее не затрагивает Объектная модель 17

Объектная модель карты Map.geoObjects.cursors.controls.layers.behaviors.panes.events.balloon.hint.action.zoomRange.converter.container.options 18

Корневые коллекции карты Map.geoObjects.cursors.controls.layers.behaviors.panes.events.balloon.hint.action.zoomRange.converter.container.options 19

Коллекции элементов карты Определяют добавленные в них элементы как дочерние Выстраивают с дочерними элементами иерархию наследования опций и иерархию распространения событий Бывают двух видов: на основе массива и на основе двусвязного списка 20

Иерархия элементов map2.rootCollection node1 node2 node3 map2.rootCollection node4 collection1 21

map2.rootCollection node1 node2 node3 map2.rootCollection node4 collection1 Иерархия элементов 22

Менеджеры опций и событий Map.geoObjects.cursors.controls.layers.behaviors.panes.events.balloon.hint.action.zoomRange.converter.container.options 23

Должна позволять выстраивать иерархии наследования опций Должна позволять использовать предустановленые наборы опций Должна позволять разрешать коллизии имен опций на разных уровнях иерархии Должна работать быстро Требования к системе опций 24

Пример работы системы опций map.options map.geoObjects.options geoObject.options balloon.options layout balloonLayout geoObjectBalloonLayout balloonLayout hint.options 25

Менеджер опций.options Методы setParent, getParent Имя, которое сообщает родителю при запросе вверх по иерархии Механизм настройки маппинга имен опций при запросе с нижних уровней иерархии Механизм кеширования значений опций Опцию preset отрабатывает особенным образом 26

Опция preset Представляет собой объект вида {имя опции: значение} Может задаваться как объектом, так и ключом в хранилище option.presetStorage Хэш также может содержать preset 27

Опция preset layout balloonLayout... preset 28

Должна позволять строить иерархии распространения событий Не должна затрагивать систему событий браузера Должна позволять управлять распространением событий по аналогии с браузером (методы stopPropagation, preventDefault) Должна быть удобной и работать быстро Требования к системе событий 29

Менеджер событий.events Имеет методы setParent, getParent Принимает контекст, который устанавливается в target событиям, генерируемым на нем Останавливает пропагирование по иерархии, если у события был вызван stopPropagation() После распространения события вверх по иерархии генерирует defaultaction событие, если у события не был вызван preventDefault() 30

Распространений событий map.geoObjects.events geoObjectArray.events geoObject.events iconOverlay.events click clickdefaultaction (4) click (1) click (2) click (3) 31

Геообъекты Вначале был GeoJson Один геообъект, много геометрий Но GeoJson подошел не полностью Коллекции геообъектов это тоже геообъекты (композиция) 32

Объектная модель геообъекта GeoObject.options.events.state geometry overlay properties 33

Геометрия Это геометрические данные + идентификатор типа данных Предоставляет различный математический функционал для работы со своими данными Геометрии делятся на 3 вида: базовые основные пиксельные 34

Взаимодействие геометрии и геообъекта geoObject.options.events.state geometry.options.events pixelGeometry map.events событие pixelgeometrychange событие boundschange 35

Оверлеи Отображают пиксельную геометрию определенного типа с учетом переданных данных и опций Оверлеи бывают разные html графические активные области Геообъект создает оверлеи не напрямую, а через фабрику оверлеев 36

Фабрики оверлеев interactive (по умолчанию) интерактивные графические оверлеи и html оверлей для геометрии Point interactiveGraphics интерактивные графические оверлеи в том числе и для геометрии Point staticGraphics неинтерактивные графические оверлеи (без активных областей) hotspot оверлеи активных областей 37

Геообъекты Placemark Polyline Polygon GeoObject Вспомогательные классы Placemark Polyline Polygon Circle Rectangle 38

Profit Map 5 полей 59 методов 14 полей 12 методов GeoObject 4 поля 44 метода 8 полей 4 метода 39

Необязательные поля карты Map.geoObjects.cursors.controls.layers.behaviors.panes.events.balloon.hint.action.zoomRange.converter.container.options 40

Механизм создания аддона Mapmap.addon.balloon map событие создания экземпляра создание.balloon 41

Аддоны карты и геообъекта.hint.balloon.editor GeoObject.hint.balloon.controls.geoObjects Map 42

Полезные ссылки Сайт: Клуб: Блог: 43

Вопросы? Сергей Константинов 44