SlideShare a Scribd company logo
как работают современные
векторные карты
Владимир Агафонкин
25.03.2017
GL
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
99% моего кода
за время работы в
Mapbox — open source
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
карты
сейчас везде
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
традиционные
карты
Тайлы
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
OpenLayers
векторные
карты
MAPS.ME
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
GL
open source
платформа для
мобильных и
браузеров
на основе
открытых данных
плавное
масштабирование и
поворот карты
~
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
полный контроль
над отображением
данных в реальном
времени
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
любой объект на
карте может быть
интерактивным
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
визуальный
редактор карты
mapbox.com/studio
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
вид в перспективе,
3D-возможности
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
меньше трафика
less bandwidth
видео на картах
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
почему так мало
применений WebGL?
делаем WebGL-приложение
WebGL — 3D API?
WebGL —
низкоуровневый
2D API
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
WebGL:
технология очень
быстрой отрисовки
треугольников
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
vertex shader
преобразовывает координаты
fragment shader
преобразовывает цвет пикселей
отрисовка линий
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
антиалиасинг
6 треугольников
атрибуты вершин
2 треугольника
соединения
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
отрисовка полигонов
триангуляция
github.com/mapbox/earcut (JS)
github.com/mapbox/earcut.hpp (C++)
отрисовка текста
шрифтовые текстуры
интервалы символов
/v4/fontstack/Arial Unicode MS Regular/0-255.pbf
/v4/fontstack/Arial Unicode MS Regular/256-511.pbf
/v4/fontstack/Arial Unicode MS Regular/512-767.pbf
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
SDF
signed distance fields
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
mapbox/shelf-pack (JS)
mapbox/shelf-pack-cpp (C++)
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
icu4c
C + Emscripten = JS
github.com/mapbox/
mapbox-gl-rtl-text
загрузка и обработка
данных
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
Protocol Buffers
бинарный формат
компактной сериализации
данных
/mapbox/pbf (JS)
/mapbox/protozero (C++)
Protocol Buffers
в 3-4 раза компактнее
JSON (gzip)
в 6-7 раз быстрее
JSON.parse
github.com/mapbox/
vector-tile-spec
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
UI JS
браузер залипает
на объемных вычислениях
UI
UI
Worker JS
браузер залипает на загрузке
и пересылке данных
загрузка
данных UI
UI
Worker JS
браузер залипает
на получении данных
загрузка
данных
UIUI
UI
processing
браузер не залипает,
если данные в ArrayBuffer
loading data
UIUImain thread
web worker
размещение
надписей
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
R-tree
github.com/mapbox/grid-index
github.com/mourner/rbush
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
Ёханый
бабай
динамическая
загрузка сторонних
данных
~
mapbox/geojson-vt (JS)
mapbox/geojson-vt-cpp (C++)
кластеризация
точек
mapbox/supercluster (JS)
mapbox/supercluter-hpp (C++)
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
язык стиля карты
github.com/mapbox/
mapbox-gl-style-spec
mapbox.com/studio
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
мобильные
устройства?
Mapbox GL Native
C++11
Android, iOS, macOS, Qt, Node
github.com/mapbox/
mapbox-gl-native
тесты для
рендеринга
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
mapbox/pixelmatch (JS)
mapbox/pixelmatch-cpp (C++)
сравнение скриншотов
с учетом антиалиасинга
AppVeyor
инструменты
browserify
watchify
ES6 + Bublé
ESLint
тестирование:
Tape
Nyc
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
а что там на
стороне сервера?
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
Вован,
а когда ты сделаешь
WebGL рендеринг в
Leaflet? ^___^
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин

More Related Content

PDF
Mapbox GL: как работают современные векторные карты
PDF
«Как работают современные интерактивные карты на WebGL»​
PDF
"Как работают современные интерактивные карты на WebGL" Владимир Агафонкин
PPTX
Юрій Мірошник “Красиві і швидкі партікл ефекти в HTML5 (JavaScript)”
PDF
100 % самоучитель Macromedia Flash MX
PDF
Василика Климова
PPTX
Расчетная работа
PDF
Artec 3D web player
Mapbox GL: как работают современные векторные карты
«Как работают современные интерактивные карты на WebGL»​
"Как работают современные интерактивные карты на WebGL" Владимир Агафонкин
Юрій Мірошник “Красиві і швидкі партікл ефекти в HTML5 (JavaScript)”
100 % самоучитель Macromedia Flash MX
Василика Климова
Расчетная работа
Artec 3D web player

Similar to JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин (20)

PDF
Интерактивные карты планировок на сайтах торговых центров
PPTX
Presentation zwcad2011
PPTX
Михаил Черномордиков Ie9
PDF
Геометрическое ядро C3D
PPT
С.Лалов "Corona SDK для разработки кроссплатформенных приложений", DUMP-2014
PPTX
Юрій Мірошник “Красиві і швидкі партікл ефекти в HTML5 (JavaScript)”
PPTX
Go Mobile! Windows Phone 7 for all
PDF
Путь к WebGL через THREE.js | Odessa Frontend Meetup #12
PDF
Антон Корзунов "Графика на карте в API 2.0"
PPSX
Опыт использования инновационных технологий линейки продуктов Autodesk IDS ...
PDF
Путь Renga
PDF
городские панорамы на основе лазерного сканирования
PPT
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
PDF
Технология предметно ориентированного программирования гетерогенных многоядер...
PPTX
разработка Metro style приложений
PPT
3dweb
PPTX
Моделирование затопление территорий и ArcGIS
PDF
C-Geo XXI Gies
PDF
Си-ГЕО XXI Гиес
Интерактивные карты планировок на сайтах торговых центров
Presentation zwcad2011
Михаил Черномордиков Ie9
Геометрическое ядро C3D
С.Лалов "Corona SDK для разработки кроссплатформенных приложений", DUMP-2014
Юрій Мірошник “Красиві і швидкі партікл ефекти в HTML5 (JavaScript)”
Go Mobile! Windows Phone 7 for all
Путь к WebGL через THREE.js | Odessa Frontend Meetup #12
Антон Корзунов "Графика на карте в API 2.0"
Опыт использования инновационных технологий линейки продуктов Autodesk IDS ...
Путь Renga
городские панорамы на основе лазерного сканирования
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
Технология предметно ориентированного программирования гетерогенных многоядер...
разработка Metro style приложений
3dweb
Моделирование затопление территорий и ArcGIS
C-Geo XXI Gies
Си-ГЕО XXI Гиес
Ad

More from GeeksLab Odessa (20)

PDF
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
PDF
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
PDF
DataScience Lab 2017_Блиц-доклад_Турский Виктор
PDF
DataScience Lab 2017_Обзор методов детекции лиц на изображение
PDF
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
PDF
DataScienceLab2017_Блиц-доклад
PDF
DataScienceLab2017_Блиц-доклад
PDF
DataScienceLab2017_Блиц-доклад
PDF
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
PDF
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
PDF
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
PDF
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
PDF
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
PDF
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
PDF
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
PDF
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
PDF
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
PDF
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
PPTX
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
PDF
JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова
Ad

JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир Агафонкин