You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose集成Mapbox时Access Token配置异常求助

Mapbox Jetpack Compose 配置后仍提示访问令牌错误的解决办法

你按Mapbox官方文档完成配置后,仍遇到以下错误:

com.mapbox.maps.MapboxConfigurationException: Using MapView, MapSurface, Snapshotter or other Map components requires providing a valid access token when inflating or creating the map. Provide the token by either: 1. Creating a mapbox_access_token string resource. 2. Or programmatically calling MapboxOptions.accessToken = <your_access_token>. The access token parameter is required when using a Mapbox service.

以下是三种有效解决方式:

1. 通过字符串资源配置

在res/values/strings.xml文件中添加访问令牌:

<string name="mapbox_access_token">你的Mapbox访问令牌</string>

Mapbox会自动读取这个资源,无需额外代码配置。

2. 代码中全局设置MapboxOptions.accessToken

可以在应用启动时全局配置,比如自定义Application类:

class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()
        MapboxOptions.accessToken = "你的Mapbox访问令牌"
    }
}

记得在AndroidManifest.xml中指定这个Application:

<application
    android:name=".MyApp"
    <!-- 其他配置项 -->
>
</application>

也可以在MapboxMap组件初始化前直接设置:

// 在MapboxMap调用前添加
MapboxOptions.accessToken = "你的Mapbox访问令牌"

MapboxMap(
    modifier = Modifier.fillMaxSize(),
    mapInitOptionsFactory = { context ->
        MapInitOptions(
            context = context,
            styleUri = Style.SATELLITE_STREETS,
        )
    },
    mapViewportState = MapViewportState().apply {
        setCameraOptions {
            zoom(2.0)
            center(Point.fromLngLat(-98.0, 39.5))
            pitch(0.0)
            bearing(0.0)
        }
    },
)

3. 在MapInitOptions中直接传入令牌

修改你的Composable代码,在MapInitOptions里添加accessToken参数:

MapboxMap(
    modifier = Modifier.fillMaxSize(),
    mapInitOptionsFactory = { context ->
        MapInitOptions(
            context = context,
            styleUri = Style.SATELLITE_STREETS,
            accessToken = "你的Mapbox访问令牌" // 新增此行
        )
    },
    mapViewportState = MapViewportState().apply {
        setCameraOptions {
            zoom(2.0)
            center(Point.fromLngLat(-98.0, 39.5))
            pitch(0.0)
            bearing(0.0)
        }
    },
)

注意事项

  • 确认你的访问令牌是在Mapbox控制台生成的有效令牌,且具备Maps SDK的使用权限
  • gradle.properties中的MAPBOX_DOWNLOADS_TOKEN是用于下载SDK的令牌,和地图访问令牌不是同一个,不要混淆

内容的提问来源于stack exchange,提问作者Muhammad Muddassar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 00:52:46