Learn how to localize place labels using the basemap styles service v2 (beta) .
The basemap styles service v2 (beta) provides a number of different styles that you can use in your MapLibre GL JS applications. Each style accepts a language
parameter, which allows you to localize place labels. There are currently over 30 different languages available.
In this tutorial, you use a <select>
dropdown menu to toggle between a number of different place label languages.
Prerequisites Steps Create a new pen Go to CodePen to create a new pen for your application. Set the API key To access location services , you need an API key or OAuth 2.0 access token . To learn how to create and scope your key, visit the Create an API key tutorial.
Go to your dashboard to get an API key. The API key must be scoped to access the services used in this tutorial.
In CodePen , update api Key
to use your key.
Use dark colors for code blocks
Change line
1
2
3
4
5
6
7
8
9
10
const apiKey = "YOUR_API_KEY" ;
const basemapEnum = "ArcGIS:Streets" ;
const map = new maplibregl.Map({
container : "map" , // the id of the div element
style : `https://basemaps-api.arcgis.com/arcgis/rest/services/styles/ ${basemapEnum} ?type=style&token= ${apiKey} ` ,
zoom : 12 , // starting zoom
center : [- 118.805 , 34.027 ] // starting location [longitude, latitude]
});
Add a language selector Add a menu that allows users to change display language of your map. To accomplish this, use a standard html <select>
element.
Create a <div>
tag to contain the <select>
dropdown menu. Add an <option>
for each language code available through the basemap styles service.
Expand
Use dark colors for code blocks
Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
</ style >
< script src = https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.js > </ script >
< link href = https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.css rel = "stylesheet" />
</ head >
< body >
< div id = "map" > </ div >
< div id = "languages-wrapper" >
< select id = "languages" >
< option value = "global" > Global </ option >
< option value = "ar" > Arabic </ option >
< option value = "bs" > Bosnian </ option >
< option value = "ca" > Catalan </ option >
< option value = "zh_s" > Chinese (Simplified) </ option >
< option value = "zh_hk" > Chinese (Hong Kong) </ option >
< option value = "zh_tw" > Chinese (Taiwan) </ option >
< option value = "hr" > Croatian </ option >
< option value = "cs" > Czech </ option >
< option value = "da" > Danish </ option >
< option value = "nl" > Dutch </ option >
< option value = "en" > English </ option >
< option value = "et" > Estonian </ option >
< option value = "fi" > Finnish </ option >
< option value = "fr" > French </ option >
< option value = "de" > German </ option >
< option value = "el" > Greek </ option >
< option value = "he" > Hebrew </ option >
< option value = "hu" > Hungarian </ option >
< option value = "id" > Indonesian </ option >
< option value = "it" > Italian </ option >
< option value = "ja" > Japanese </ option >
< option value = "ko" > Korean </ option >
< option value = "lv" > Latvian </ option >
< option value = "lt" > Lithuanian </ option >
< option value = "no" > Norwegian </ option >
< option value = "pl" > Polish </ option >
< option value = "pt_b" > Portugese (Brazil) </ option >
< option value = "pt_p" > Portugese (Portugal) </ option >
< option value = "ro" > Romanian </ option >
< option value = "ru" > Russian </ option >
< option value = "sr" > Serbian </ option >
< option value = "es" > Spanish </ option >
< option value = "sv" > Swedish </ option >
< option value = "th" > Thai </ option >
< option value = "tr" > Turkish </ option >
< option value = "uk" selected > Ukrainian </ option >
< option value = "vi" > Vietnamese </ option >
</ select >
</ div >
In the <style>
element, add CSS styling to the languages-wrapper
and languages
.
Expand
Use dark colors for code blocks
Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line. Add line.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
< style >
html ,
body ,
#map {
padding : 0 ;
margin : 0 ;
height : 100% ;
width : 100% ;
font-family : Arial, Helvetica, sans-serif;
font-size : 14px ;
color : #323232 ;
}
#languages-wrapper {
position : absolute;
top : 20px ;
right : 20px ;
background : rgba ( 255 , 255 , 255 , 0 );
}
#languages {
font-size : 16px ;
padding : 4px 8px ;
}
</ style >
< script src = https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.js > </ script >
< link href = https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.css rel = "stylesheet" />
Run the code. The <select>
element should contain a list of different language enumerations.
Set the basemap Use a function to reference the basemap styles service and a language enumeration to update the map . This will be used when a selection is made.
Create a base Url
and a url
element. The url
function will use the base Url
to create a reference to a basemap style in a specified language.
Expand
Use dark colors for code blocks
Add line. Add line.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
< script >
const apiKey = "YOUR_API_KEY" ;
const basemapEnum = "arcgis/outdoor" ;
const map = new maplibregl.Map({
container : "map" , // the id of the div element
style : `https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/styles/ ${basemapEnum} ?token= ${apiKey} ` ,
zoom : 2 , // starting zoom
center : [ 48.8790 , 35.7088 ], // starting location [longitude, latitude]
attributionControl : false
}).addControl(
new maplibregl.AttributionControl({
compact : true // reduces the copyright attributions view
})
);
const baseUrl = "https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/styles" ;
const url = ( language ) => ` ${baseUrl} /arcgis/outdoor?token= ${apiKey} &language= ${language} ` ;
Set the style of the map
using the url
function and a language code.
Expand
Use dark colors for code blocks
Add line. Add line. Add line. Add line.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
const baseUrl = "https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/styles" ;
const url = ( language ) => ` ${baseUrl} /arcgis/outdoor?token= ${apiKey} &language= ${language} ` ;
const setLanguage = ( language ) => {
// Instantiate the given basemap layer.
map.setStyle(url(language));
};
Add an event listener Use an event listener to register a basemap change in the <select>
element and to update the map.
Set the default language to Ukrainian (uk
).
Expand
Use dark colors for code blocks
Add line.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
const setLanguage = ( language ) => {
// Instantiate the given basemap layer.
map.setStyle(url(language));
};
setLanguage( "uk" );
Access the language selector using its id.
Expand
Use dark colors for code blocks
Add line.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
setLanguage( "uk" );
const languageSelectElement = document .querySelector( "#languages" );
Add an event listener to update the map when a new language is selected.
Expand
Use dark colors for code blocks
Add line. Add line. Add line. Add line.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
const languageSelectElement = document .querySelector( "#languages" );
languageSelectElement.addEventListener( "change" , ( e ) => {
setLanguage(e.target.value);
console .log(e.target.value);
});
Run the app In CodePen , run your code to display the map.
You should be able to use the select element to switch between basemap layers.
What's next? Learn how to use additional ArcGIS location services in these tutorials: