MapBox Android版开发 2 本地化
- 前言
- MapBox V9 本地化
- 示例1
- 示例2
- 示例3
- 运行效果图
- MapBox V11 本地化
- 示例
- 运行效果图
前言
前文介绍了MapBox V9和 V11 两个版本配置和显示地图。默认MapBox地图语言为英文,本文重点介绍如何将地图语言设置为中文。
MapBox V9 本地化
示例1
官方Examples中介绍如何改变地图语言
- 在地图加载成功后,通过
style对象,改变国家图层语言。代码如下:
SymbolLayer countryLabelTextSymbolLayer = style.getLayerAs("country-label");
if (countryLabelTextSymbolLayer != null)
countryLabelTextSymbolLayer.setProperties(textField("{name_zh-Hans}"));
示例2
- 参考上述示例,修改所有
label图层的语言,代码如下:
final String chinese = "{name_zh-Hans}";
List<Layer> layers = style.getLayers();
for (Layer layer : layers) {
if (layer instanceof SymbolLayer) {
SymbolLayer symbolLayer = (SymbolLayer) layer;
String id = symbolLayer.getId();
if (id.endsWith("-label")) {
symbolLayer.setProperties(textField(chinese));
}
}
}
示例3
V9版本提供了本地化插件来改变地图语言
- 文件
app/build.gradle,dependencies中添加依赖项。
dependencies {
implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-localization-v9:0.12.0'
}
- 修改语言代码:
LocalizationPlugin localizationPlugin = new LocalizationPlugin(mapView, mapboxMap, style);
localizationPlugin.setMapLanguage(MapLocale.SIMPLIFIED_CHINESE);
运行效果图

MapBox V11 本地化
示例
官方Examples中介绍如何改变地图语言
-
通过
Style类的localizeLabels(locale: Locale)方法改变地图语言。 -
MainActivity完整代码
package com.example.mapdemo
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.mapbox.maps.MapView
import com.mapbox.maps.MapboxMap
import com.mapbox.maps.Style
import com.mapbox.maps.extension.localization.localizeLabels
import java.util.Locale
class MainActivity : AppCompatActivity() {
private lateinit var mapView: MapView
private lateinit var map : MapboxMap
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mapView = findViewById(R.id.mapView)
map = mapView.mapboxMap
map.loadStyle(Style.MAPBOX_STREETS,) {
it.localizeLabels(Locale.CHINESE)
}
}
override fun onStart() {
super.onStart()
mapView?.onStart()
}
override fun onStop() {
super.onStop()
mapView?.onStop()
}
override fun onLowMemory() {
super.onLowMemory()
mapView?.onLowMemory()
}
override fun onDestroy() {
super.onDestroy()
mapView?.onDestroy()
}
}
运行效果图


















![World of Warcraft [CLASSIC][80][Grandel] Equipment Recovery](https://i-blog.csdnimg.cn/direct/0b3e83c564f64ad0a441a8246e1c59be.jpeg)

