Javascript 如何在mapbox中更改语言
我需要在javascript中更改mapbox的语言,我在文档中只看到下面的代码Javascript 如何在mapbox中更改语言,javascript,reactjs,mapbox,mapbox-gl-js,Javascript,Reactjs,Mapbox,Mapbox Gl Js,我需要在javascript中更改mapbox的语言,我在文档中只看到下面的代码 map.setLayoutProperty('country-label', 'text-field', ['get', 'name_de']) 但这行代码只会更改国家名称,但我需要所有内容(城市、城镇等)根据您的地图框样式,将有不同的文本层。对于dark-v9,这些是可用的文本层 country-label state-label settlement-label settlement-subdivision-
map.setLayoutProperty('country-label', 'text-field', ['get', 'name_de'])
但这行代码只会更改国家名称,但我需要所有内容(城市、城镇等)根据您的地图框样式,将有不同的文本层。对于
dark-v9
,这些是可用的文本层
country-label
state-label
settlement-label
settlement-subdivision-label
airport-label
poi-label
water-point-label
water-line-label
natural-point-label
natural-line-label
waterway-label
road-label
使用您在上述层的问题中提到的代码片段,您应该能够更改语言
map.setLayoutProperty('country-label', 'text-field', ['get', 'name_de'])
或者,您可以使用更改所有可能图层的语言。下面是该插件的工作示例
更改地图的语言
正文{margin:0;padding:0;}
#映射{位置:绝对;顶部:0;底部:0;宽度:100%;}
#钮扣{
宽度:90%;
保证金:0自动;
}
.按钮{
显示:内联块;
位置:相对位置;
光标:指针;
宽度:20%;
填充:8px;
边界半径:3px;
边缘顶部:10px;
字体大小:12px;
文本对齐:居中;
颜色:#fff;
背景:#ee8a65;
字体系列:无衬线;
字体大小:粗体;
}
mapboxgl.accessToken='pk.eyJ1IjoibXVyYWxpcHJhamFwYXRpIiwiYSI6ImNrMHA1d3VjYzBna3gzbG50ZjR5b2Zkb20ifQ.guBaIUcqkTdYHX1R6CM6FQ';
var map=new mapboxgl.map({
容器:“映射”,
风格:'mapbox://styles/mapbox/dark-v9',
中间:[16.05,48],
缩放:2.9
});
mapboxgl.setRTLTextPlugin('https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.1.0/mapbox-gl-rtl-text.js');
var mapboxLanguage=新的mapboxLanguage({
默认语言:“en”
});
addControl(mapboxLanguage);
document.getElementById('buttons')。addEventListener('click',函数(事件){
var language=event.target.id.substr('button-'.length);
setStyle(mapboxLanguage.setLanguage(map.getStyle(),language));
});
德语
以下是我发现对我有帮助的代码
我把它改成了
map.getStyle().layers.forEach(function(thisLayer){
console.log(thisLayer);
if(thisLayer.id.indexOf('-label')>0){
console.log('change '+thisLayer.id);
map.setLayoutProperty(thisLayer.id, 'text-field', ['get','name_fr'])
}
});
但是,否则你将不得不改变自己的不同标签,正如murli prajapati提到的那样
当然,用自己的语言更改“name_xx”
例如:
map.setLayoutProperty('country-label', 'text-field', ['get','name_fr']);
map.setLayoutProperty('state-label', 'text-field', ['get','name_fr']);
map.setLayoutProperty('settlement-label', 'text-field', ['get','name_fr']);
map.setLayoutProperty('settlement-subdivision-label', 'text-field', ['get','name_fr']);
map.setLayoutProperty('country-label', 'text-field', ['get','name_fr']);
map.setLayoutProperty('state-label', 'text-field', ['get','name_fr']);
map.setLayoutProperty('settlement-label', 'text-field', ['get','name_fr']);
map.setLayoutProperty('settlement-subdivision-label', 'text-field', ['get','name_fr']);