Learn how to localize place lables with the basemap styles service v2 .
The basemap styles service v2 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 You need an ArcGIS Developer or ArcGIS Online account to access the developer dashboard and create an API key .
Steps Create a new pen To get started, either complete the Display a map tutorial or use this pen . 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
11
const apiKey = "YOUR_API_KEY" ;
const basemapId = "arcgis/streets" ;
const basemapURL = `https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/styles/ ${basemapId} ?token= ${apiKey} ` ;
olms.apply(map, basemapURL);
Remove basemap references Remove the basemap I d
, basemap URL
, and the olms
function.
Expand
Use dark colors for code blocks
Remove line Remove line Remove 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
< script >
const map = new ol.Map({ target : "map" });
map.setView(
new ol.View({
center : ol.proj.fromLonLat([- 118.805 , 34.027 ]),
zoom : 12
})
);
const apiKey = "YOUR_API_KEY" ;
const basemapId = "arcgis/streets" ;
const basemapURL = `https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/styles/ ${basemapId} ?token= ${apiKey} ` ;
olms.apply(map, basemapURL);
</ script >
Add a language selector Add a menu that allows users to change the display language of your map. OpenLayers does not have a built-in selector widget, so you will create an HTML <select>
element.
In the <head>
tag, add CSS that will position the <select>
menu wrapper element in the upper right corner and provide styling.
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.
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 ;
}
#languages {
font-size : 16px ;
padding : 4px 8px ;
}
</ style >
In the <body>
element, add the wrapper tag with an id of languages-wrapper
.
Expand
Use dark colors for code blocks
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
< body >
< div id = "map" > </ div >
< div id = "languages-wrapper" >
</ div >
In the wrapper element, add a <select>
element that contains an enumeration for each language 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.
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
< div id = "languages-wrapper" >
< select id = "languages" >
< option value = "global" > Global </ option >
< option value = "ar" > Arabic </ option >
< option value = "bs" > Bosnian </ option >
< option value = "bg" > Bulgarian </ option >
< option value = "ca" > Catalan </ option >
< option value = "zh-CN" > 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 = "nb" > Norwegian </ option >
< option value = "pl" > Polish </ option >
< option value = "pt-BR" > Portugese (Brazil) </ option >
< option value = "pt-PT" > Portugese (Portugal) </ option >
< option value = "ro" > Romanian </ option >
< option value = "ru" > Russian </ option >
< option value = "sr" > Serbian </ option >
< option value = "sk" > Slovak </ option >
< option value = "sl" > Slovenian </ 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 >
Set the initial language When the page loads, initialize the app to initially display in Ukrainian.
Create a function called url
that creates the URL for a basemap style.
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 map = new ol.Map({ target : "map" });
map.setView(
new ol.View({
center : ol.proj.fromLonLat([ 48.8790 , 35.7088 ]),
zoom : 3
})
);
const baseUrl = "https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/styles" ;
const url = ( language ) => ` ${baseUrl} /arcgis/outdoor?token= ${apiKey} &language= ${language} ` ;
Create a function called set Language
that will clear existing basemap layers and use olms
to instantiate a basemap layer in the new language.
Expand
Use dark colors for code blocks
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
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 ) => {
// Clear out existing layers.
map.setLayerGroup( new ol.layer.Group());
// Instantiate the given basemap layer.
olms.apply(map, url(language));
};
Call set Language
to initialize the basemap layer to the Ukrainian (uk
) enumeration.
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 ) => {
// Clear out existing layers.
map.setLayerGroup( new ol.layer.Group());
// Instantiate the given basemap layer.
olms.apply(map, url(language));
};
setLanguage( "uk" );
Add an event listener Call set Language
when the user selects an option in the <select>
menu.
Access the <select>
element 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 basemapsSelectElement = document .querySelector( "#languages" );
Add an event listener that calls set Language
when the <select>
element is changed.
Expand
Use dark colors for code blocks
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 basemapsSelectElement = document .querySelector( "#languages" );
basemapsSelectElement.addEventListener( "change" , ( e ) => {
setLanguage(e.target.value);
});
Run the app In CodePen , run your code to display the map.
Use the layer switcher menu at the top right to select and explore different basemap layer styles.
What's Next? Learn how to use additional ArcGIS location services in these tutorials: