Project

General

Profile

Mapbox » History » Version 8

Philippe May, 15/07/2019 15:01

1 1 Philippe May
h1. Mapbox
2 1 Philippe May
3 1 Philippe May
Gisaf uses mapbox-gl for rendering online maps.
4 1 Philippe May
5 4 Philippe May
h2. Base maps
6 4 Philippe May
7 4 Philippe May
Mapbox doesn't have the concept of "base map". Instead, Mapbox maps are defined with a _style_ (that we call the _base style_).
8 4 Philippe May
A mapbox style contains different layers, which can be vector based (eg. labels, roads, areas) or raster (eg. satellite). 
9 4 Philippe May
10 4 Philippe May
Gisaf adds layers (in GeoJSON format) at the top the base style.
11 4 Philippe May
12 5 Philippe May
Gisaf allows to pick a base style for the map, though a menu. The options for the base styles are stored in the database (table @map_base_style@), and editable through the admin interface. The definition of the style itself is in _json_ format, and can be created with online tools like "Maputnik":https://maputnik.github.io/editor ("MapboxStudio":https://www.mapbox.com/editor/ is also an alternative, but it's heavily linked to their business ecosystem).
13 4 Philippe May
14 1 Philippe May
15 2 Philippe May
h2. Setting styles for the layers (models)
16 1 Philippe May
17 1 Philippe May
There are 2 places where mapbox styles live, depending on the type of layer.
18 1 Philippe May
19 1 Philippe May
h3. Custom models
20 1 Philippe May
21 1 Philippe May
In the @qml@ table, define the style in the column @mapbox-paint@ corresponding to the type in the column @model_name@.
22 1 Philippe May
23 1 Philippe May
h3. Models from categories
24 1 Philippe May
25 1 Philippe May
In the @category@ table, these columns used for styling:
26 1 Philippe May
27 1 Philippe May
* @mapbox_type_custom@: the mapbox type can be overridden, eg. @fill-extrusion@ for polygons (no other known useful cases)
28 1 Philippe May
29 1 Philippe May
* @mapbox_paint@: the mapbox paint style
30 1 Philippe May
31 1 Philippe May
* @mapbox_layout@: the mapbox layout (usually not used)
32 1 Philippe May
33 1 Philippe May
34 1 Philippe May
h2. Mapbox style definition
35 1 Philippe May
36 1 Philippe May
The specification of mapbox paint styles can be found at https://www.mapbox.com/mapbox-gl-js/style-spec/ .
37 1 Philippe May
38 1 Philippe May
For example:
39 1 Philippe May
40 1 Philippe May
<pre>
41 1 Philippe May
{"fill-color": ["rgba", 204, 204, 255, 1]}
42 1 Philippe May
</pre>
43 3 Philippe May
44 6 Philippe May
h2. Fonts
45 6 Philippe May
46 7 Philippe May
Gisaf uses a custom font for symbols: @GisafSymbols@.
47 7 Philippe May
48 7 Philippe May
This same font is used in 2 different ways:
49 7 Philippe May
50 7 Philippe May
1. as normal font for the web interface, using css: eg, the symbols for the layer list.
51 7 Philippe May
52 7 Philippe May
1. for mapbox: Mapbox's rendering uses a WebGL component with its own specification, so the font needs to be converted (see below).
53 7 Philippe May
54 7 Philippe May
55 6 Philippe May
h3. Creation and update of characters
56 6 Philippe May
57 6 Philippe May
The main font file is created with BirdFont, and is in the git repository: @gisaf-app/src/assets/fonts/gisafSymbols.bf@.
58 6 Philippe May
59 6 Philippe May
It is then exported as ttf in Birdfont.
60 6 Philippe May
61 6 Philippe May
h3. Mapping of characters
62 6 Philippe May
63 6 Philippe May
Each character for a layer has a unicode number, which needs to be mapped to the layer it represents.
64 1 Philippe May
65 7 Philippe May
The mapping is done in 2 different places, according to the 2 techniques quickly described above:
66 1 Philippe May
67 8 Philippe May
h4. CSS
68 1 Philippe May
69 8 Philippe May
In @gisaf-app/src/gisaf-icons.css@, the mapping is like @layer_name => unicode@, eg:
70 8 Philippe May
71 7 Philippe May
<pre>
72 7 Philippe May
.gisaf-V_VEGE_TMPL:before { content: '\e044';}
73 7 Philippe May
</pre>
74 7 Philippe May
75 1 Philippe May
76 8 Philippe May
h4. Mapbox
77 7 Philippe May
78 8 Philippe May
* For custom models, the Unicode is defined in the @symbols@ attribute
79 7 Philippe May
80 8 Philippe May
* For category-based models, the Unicode is defined in the @symbol@ column and can be set through the Gisaf admin.
81 6 Philippe May
82 6 Philippe May
h3. Build
83 3 Philippe May
84 3 Philippe May
In the @gisaf-app@ directory:
85 3 Philippe May
<pre>
86 3 Philippe May
./node_modules/.bin/build-glyphs src/assets/fonts/GisafSymbols.ttf src/assets/fonts/glyphs/GisafSymbols/
87 3 Philippe May
</pre>