Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在mapbox中更改语言_Javascript_Reactjs_Mapbox_Mapbox Gl Js - Fatal编程技术网

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-

我需要在javascript中更改mapbox的语言,我在文档中只看到下面的代码

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']);