133
как работают современные векторные карты Vladimir Agafonkin 16.02.2017

Mapbox GL: как работают современные векторные карты

  • Upload
    eatdog

  • View
    65

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Mapbox GL: как работают современные векторные карты

как работают

современные векторные

картыVladimir Agafonkin

16.02.2017

Page 2: Mapbox GL: как работают современные векторные карты
Page 3: Mapbox GL: как работают современные векторные карты
Page 4: Mapbox GL: как работают современные векторные карты

100% моего кода за время работы в

Mapbox — open source

Page 5: Mapbox GL: как работают современные векторные карты
Page 6: Mapbox GL: как работают современные векторные карты
Page 7: Mapbox GL: как работают современные векторные карты
Page 8: Mapbox GL: как работают современные векторные карты
Page 9: Mapbox GL: как работают современные векторные карты
Page 10: Mapbox GL: как работают современные векторные карты
Page 11: Mapbox GL: как работают современные векторные карты
Page 12: Mapbox GL: как работают современные векторные карты
Page 13: Mapbox GL: как работают современные векторные карты
Page 14: Mapbox GL: как работают современные векторные карты
Page 15: Mapbox GL: как работают современные векторные карты
Page 16: Mapbox GL: как работают современные векторные карты
Page 17: Mapbox GL: как работают современные векторные карты
Page 18: Mapbox GL: как работают современные векторные карты
Page 19: Mapbox GL: как работают современные векторные карты

Тайлы

Page 20: Mapbox GL: как работают современные векторные карты
Page 21: Mapbox GL: как работают современные векторные карты

OpenLayers

Page 22: Mapbox GL: как работают современные векторные карты
Page 23: Mapbox GL: как работают современные векторные карты

MAPS.ME

Page 24: Mapbox GL: как работают современные векторные карты
Page 25: Mapbox GL: как работают современные векторные карты
Page 26: Mapbox GL: как работают современные векторные карты

open source

Page 27: Mapbox GL: как работают современные векторные карты

платформа длямобильных и

браузеров

Page 28: Mapbox GL: как работают современные векторные карты

на основе открытых данных

Page 29: Mapbox GL: как работают современные векторные карты

плавноемасштабирование и

поворот карты

Page 30: Mapbox GL: как работают современные векторные карты

~

Page 31: Mapbox GL: как работают современные векторные карты
Page 32: Mapbox GL: как работают современные векторные карты
Page 33: Mapbox GL: как работают современные векторные карты

полный контроль над отображением данных в реальном

времени

Page 34: Mapbox GL: как работают современные векторные карты
Page 35: Mapbox GL: как работают современные векторные карты
Page 36: Mapbox GL: как работают современные векторные карты

любой объект на карте может

быть интерактивным

Page 37: Mapbox GL: как работают современные векторные карты
Page 38: Mapbox GL: как работают современные векторные карты
Page 39: Mapbox GL: как работают современные векторные карты
Page 40: Mapbox GL: как работают современные векторные карты

визуальныйредактор карты

Page 41: Mapbox GL: как работают современные векторные карты

mapbox.com/studio

Page 42: Mapbox GL: как работают современные векторные карты
Page 43: Mapbox GL: как работают современные векторные карты

вид в перспективе,3D-возможности

Page 44: Mapbox GL: как работают современные векторные карты
Page 45: Mapbox GL: как работают современные векторные карты
Page 46: Mapbox GL: как работают современные векторные карты

меньше трафика

Page 47: Mapbox GL: как работают современные векторные карты

less bandwidth

Page 48: Mapbox GL: как работают современные векторные карты

видео на картах

Page 49: Mapbox GL: как работают современные векторные карты
Page 50: Mapbox GL: как работают современные векторные карты
Page 51: Mapbox GL: как работают современные векторные карты
Page 52: Mapbox GL: как работают современные векторные карты
Page 53: Mapbox GL: как работают современные векторные карты

почему так малоприменений

WebGL?

Page 54: Mapbox GL: как работают современные векторные карты

делаем WebGL-приложение

Page 55: Mapbox GL: как работают современные векторные карты

WebGL — 3D API?

Page 56: Mapbox GL: как работают современные векторные карты

WebGL —низкоуровневый

2D API

Page 57: Mapbox GL: как работают современные векторные карты
Page 58: Mapbox GL: как работают современные векторные карты

WebGL:технология очень

быстрой отрисовки треугольников

Page 59: Mapbox GL: как работают современные векторные карты
Page 60: Mapbox GL: как работают современные векторные карты

vertex shaderпреобразовывает координаты

Page 61: Mapbox GL: как работают современные векторные карты

fragment shaderпреобразовывает цвет пикселей

Page 62: Mapbox GL: как работают современные векторные карты

отрисовка линий

Page 63: Mapbox GL: как работают современные векторные карты
Page 64: Mapbox GL: как работают современные векторные карты

антиалиасинг

Page 65: Mapbox GL: как работают современные векторные карты

6 треугольников

Page 66: Mapbox GL: как работают современные векторные карты

атрибуты вершин

Page 67: Mapbox GL: как работают современные векторные карты

2 треугольника

Page 68: Mapbox GL: как работают современные векторные карты

соединения

Page 69: Mapbox GL: как работают современные векторные карты
Page 70: Mapbox GL: как работают современные векторные карты

отрисовка полигонов

Page 71: Mapbox GL: как работают современные векторные карты

триангуляция

Page 72: Mapbox GL: как работают современные векторные карты

github.com/mapbox/earcut (JS)

github.com/mapbox/earcut.hpp (C++)

Page 73: Mapbox GL: как работают современные векторные карты

отрисовка текста

Page 74: Mapbox GL: как работают современные векторные карты

шрифтовые текстуры

Page 75: Mapbox GL: как работают современные векторные карты

интервалы символов

/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

Page 76: Mapbox GL: как работают современные векторные карты
Page 77: Mapbox GL: как работают современные векторные карты

signed distance fields

Page 78: Mapbox GL: как работают современные векторные карты
Page 79: Mapbox GL: как работают современные векторные карты
Page 80: Mapbox GL: как работают современные векторные карты
Page 81: Mapbox GL: как работают современные векторные карты

mapbox/shelf-pack (JS)

mapbox/shelf-pack-cpp (C++)

Page 82: Mapbox GL: как работают современные векторные карты
Page 83: Mapbox GL: как работают современные векторные карты

icu4cC + Emscripten

github.com/mapbox/mapbox-gl-rtl-text

Page 84: Mapbox GL: как работают современные векторные карты

загрузка и обработкаданных

Page 85: Mapbox GL: как работают современные векторные карты
Page 86: Mapbox GL: как работают современные векторные карты

Protocol Buffers

бинарный форматкомпактной сериализации

данных

Page 87: Mapbox GL: как работают современные векторные карты

/mapbox/pbf (JS)

/mapbox/protozero (C++)

Protocol Buffers

Page 88: Mapbox GL: как работают современные векторные карты

в 3-4 раза компактнееJSON (gzip)

в 6-7 раз быстрееJSON.parse

Page 89: Mapbox GL: как работают современные векторные карты

github.com/mapbox/

vector-tile-spec

Page 90: Mapbox GL: как работают современные векторные карты
Page 91: Mapbox GL: как работают современные векторные карты

UI JS

браузер залипает

на объемных

вычислениях

UI

Page 92: Mapbox GL: как работают современные векторные карты

UI

Worker JS

браузер залипает на загрузке

и пересылке данных

загрузка данных UI

Page 93: Mapbox GL: как работают современные векторные карты

UI

Worker JS

браузер залипает

на получении данных

загрузка данных

UIUI

Page 94: Mapbox GL: как работают современные векторные карты

UI

processing

браузер не залипает,

если данные в ArrayBuffer

loading data

UIUImain

thread

web worker

Page 95: Mapbox GL: как работают современные векторные карты

размещениенадписей

Page 96: Mapbox GL: как работают современные векторные карты
Page 97: Mapbox GL: как работают современные векторные карты
Page 98: Mapbox GL: как работают современные векторные карты

R-tree

Page 99: Mapbox GL: как работают современные векторные карты

github.com/mapbox/grid-index

github.com/mourner/rbush

Page 100: Mapbox GL: как работают современные векторные карты
Page 101: Mapbox GL: как работают современные векторные карты

Ёханый бабай

Page 102: Mapbox GL: как работают современные векторные карты

динамическая загрузка сторонних

данных

Page 103: Mapbox GL: как работают современные векторные карты

~

Page 104: Mapbox GL: как работают современные векторные карты

mapbox/geojson-vt (JS)

mapbox/geojson-vt-cpp (C++)

Page 105: Mapbox GL: как работают современные векторные карты

кластеризация точек

Page 106: Mapbox GL: как работают современные векторные карты

mapbox/supercluster (JS)

mapbox/supercluter-hpp (C++)

Page 107: Mapbox GL: как работают современные векторные карты
Page 108: Mapbox GL: как работают современные векторные карты

язык стиля карты

Page 109: Mapbox GL: как работают современные векторные карты

github.com/mapbox/

mapbox-gl-style-spec

Page 110: Mapbox GL: как работают современные векторные карты

mapbox.com/studio

Page 111: Mapbox GL: как работают современные векторные карты
Page 112: Mapbox GL: как работают современные векторные карты
Page 113: Mapbox GL: как работают современные векторные карты
Page 114: Mapbox GL: как работают современные векторные карты
Page 115: Mapbox GL: как работают современные векторные карты

мобильныеустройства?

Page 116: Mapbox GL: как работают современные векторные карты

Mapbox GL NativeC++11

Android, iOS, macOS, Qt, Node

github.com/mapbox/

mapbox-gl-native

Page 117: Mapbox GL: как работают современные векторные карты

тесты для рендеринга

Page 118: Mapbox GL: как работают современные векторные карты
Page 119: Mapbox GL: как работают современные векторные карты
Page 120: Mapbox GL: как работают современные векторные карты

mapbox/pixelmatch (JS)

mapbox/pixelmatch-cpp (C++)

сравнение скриншотовс учетом антиалиасинга

Page 121: Mapbox GL: как работают современные векторные карты

AppVeyor

Page 122: Mapbox GL: как работают современные векторные карты

инструменты

Page 123: Mapbox GL: как работают современные векторные карты

browserifywatchify

transforms (glify, brfs, etc)

Page 124: Mapbox GL: как работают современные векторные карты

ES6 + Bublé

Page 125: Mapbox GL: как работают современные векторные карты

ESLint

Page 126: Mapbox GL: как работают современные векторные карты

тестирование:TapeNyc

Page 127: Mapbox GL: как работают современные векторные карты
Page 128: Mapbox GL: как работают современные векторные карты
Page 129: Mapbox GL: как работают современные векторные карты

а что там на стороне сервера?

Page 130: Mapbox GL: как работают современные векторные карты
Page 131: Mapbox GL: как работают современные векторные карты

Вован,

а когда ты сделаешь

WebGL рендеринг в

Leaflet? ^___^

Page 132: Mapbox GL: как работают современные векторные карты
Page 133: Mapbox GL: как работают современные векторные карты