Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
How Vector Maps Work (2019)
Search
Vladimir Agafonkin
April 08, 2019
Programming
1
450
How Vector Maps Work (2019)
Vladimir Agafonkin
April 08, 2019
Tweet
Share
More Decks by Vladimir Agafonkin
See All by Vladimir Agafonkin
Fast by Default: Algorithmic Optimization in Practice (dotJS 2019)
mourner
0
2k
Fast by Default: Algorithmic Optimization in Practice (JSCamp 2019)
mourner
0
520
Fast by default: everyday algorithmic thinking for developers [RU]
mourner
1
400
Fast by default: everyday algorithmic thinking for developers
mourner
1
480
Mapbox GL: How vector maps work
mourner
0
390
Random cool stuff I've been hacking on (mostly spatial indices)
mourner
0
570
Как работают современные интерактивные карты на WebGL
mourner
1
510
Leaflet, WebGL & the Future of Web Mapping
mourner
5
3.3k
How Simplicity Will Save GIS
mourner
10
4.3k
Other Decks in Programming
See All in Programming
Portapad紹介プレゼンテーション
gotoumakakeru
1
130
一人でAIプロダクトを作るための工夫 〜技術選定・開発プロセス編〜 / I want AI to work harder
rkaga
12
2.7k
대규모 트래픽을 처리하는 프론트 개발자의 전략
maryang
0
120
Nuances on Kubernetes - RubyConf Taiwan 2025
envek
0
170
管你要 trace 什麼、bpftrace 用下去就對了 — COSCUP 2025
shunghsiyu
0
420
なぜ今、Terraformの本を書いたのか? - 著者陣に聞く!『Terraformではじめる実践IaC』登壇資料
fufuhu
4
620
レガシープロジェクトで最大限AIの恩恵を受けられるようClaude Codeを利用する
tk1351
2
170
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
8
940
物語を動かす行動"量" #エンジニアニメ
konifar
14
5.2k
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
860
Claude Codeで実装以外の開発フロー、どこまで自動化できるか?失敗と成功
ndadayo
2
210
STUNMESH-go: Wireguard NAT穿隧工具的源起與介紹
tjjh89017
0
380
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
Side Projects
sachag
455
43k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
183
54k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Building Adaptive Systems
keathley
43
2.7k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Making Projects Easy
brettharned
117
6.3k
Art, The Web, and Tiny UX
lynnandtonic
301
21k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
470
Transcript
how vector maps work Vladimir Agafonkin
None
April 2008
a typical GIS talk
rain.in.ua
so I’m doing maps now, how hard could this be?
None
maps huh? •a bunch of square pictures •drag them with
a mouse •put some icons on top
PFF
Let’s build a mapping library from scratch!
no way you could do that
None
creating a web map in 2008
None
You’re wasting time
None
building from scratch; didn’t tell anyone
None
Web Maps Lite
None
None
born as a protest against bloat, clutter and complexity
None
None
None
None
None
None
None
None
None
None
the number one mapping library in the world* *because the
guy didn’t know shit about maps
•extremely lightweight and simple •extremely easy to get started •huge
community, tons of plugins •stable as a mountain •works everywhere (i.e. legacy browsers)
raster tiles era
OpenLayers
• maps as background • mostly static • top-down, north-oriented
• a rigid set of zoom levels • some simple vectors/icons on top • conceptually the same as 14 years ago Web maps status quo:
None
None
Mapbox vision for maps: living, breathing, fluid, rich, powerful experiences
that make you feel connected to the world Games did it for decades; why not maps?
Evolution of The Elder Scrolls 2002 2006 2011
Evolution of web maps 2002 2006 2011
None
Digital maps before: exclusively web tech Digital maps now: native
mobile apps + web
Browsers before: display a bunch of text and images Browsers
now: anything is possible
vector maps raster maps
let’s build a vector maps platform from scratch!
None
None
None
None
None
None
None
vector maps era
maps.me
why vector maps?
smooth zoom and rotation
None
None
3D features
None
None
None
full control over data presentation in real time
None
None
any object on the map can be interactive
None
None
data-driven styling
None
None
real-time data analysis
None
mourner.github.io/ road-orientation-map
performance: rendering millions of features
None
None
visual map editor
mapbox.com/studio
None
None
None
None
None
None
None
None
less bandwidth
simulation vs cartography?
None
None
github.com/mapbox/ mapbox-gl-js (JS) github.com/mapbox/ mapbox-gl-native (C++14) iOS, Android, QT, Node,
OSX, Linux, Windows
None
None
why isn’t WebGL everywhere yet?
Let’s build something with OpenGL!
OpenGL — 3D API?
OpenGL is a low-level 2D API
None
OpenGL: a technology for drawing triangles really fast
None
drawing lines
None
anti-aliasing
6 triangles
vertex attributes
2 triangles
line joins & line caps
None
drawing polygons
drawing polygons
github.com/mapbox/earcut (JS) github.com/mapbox/earcut.hpp (C++)
drawing text
font textures
unicode-intervals /Arial Regular/0-255.pbf /Arial Regular/256-511.pbf /Arial Regular/512-767.pbf
None
SDF signed distance fields
None
None
None
github.com/mapbox/potpack
mapbox/tiny-sdf
mapbox/ mapbox-gl-rtl-text icu4c C + Emscripten = JavaScript coming soon:
WebAssembly
placing labels
None
mourner/rbush mourner/rbush-knn mourner/kdbush mourner/flatbush mourner/geokdbush mourner/geoflatbush
loading and processing data
mapbox/pbf (JS) mapbox/protozero (C++)
6-7 times faster than JSON.parse Protocol Buffers: 3-4 times smaller
than JSON (gzip)
github.com/mapbox/ vector-tile-spec
mapbox/geojson-vt (JS) mapbox/geojson-vt-cpp (C++)
mapbox/supercluster (JS) mapbox/supercluster-hpp (C++)
mapbox/polylabel (JS, C++)
main thread (UI) processing loading data web workers processing loading
data processing loading data
continuous testing
1082 render tests
mapbox/pixelmatch (JS) mapbox/pixelmatch-cpp (C++)
AppVeyor
hey, what’s there on the server side?
None
the essence of software engineering is mitigation of complexity
vastly bigger scope, same goal: let people build amazing maps
Díky moc! agafonkin.com