MapBox Android版开发 2 本地化

前言

前文介绍了MapBox V9V11 两个版本配置和显示地图。默认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.gradledependencies中添加依赖项。
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()
    }
}

运行效果图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值