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

如何使用maplibre-gl-js仅调用Mapbox Vector Tiles API渲染矢量瓦片

实现方案

你当前使用mapbox://styles/mapbox/light-v10作为样式地址的写法,会加载Mapbox托管的完整样式资源,Mapbox会将这类完整样式加载行为统计为「Web端地图加载量」。要仅调用Mapbox Vector Tiles API使用矢量瓦片,你可以手动构造自定义样式,单独指定Mapbox矢量瓦片作为数据源,代码示例如下:

// 替换为你自己的Mapbox访问令牌
const MAPBOX_TOKEN = '你的Mapbox Access Token';

this.map = new maplibregl.Map({
  container: this.element,
  // 自定义样式,不使用Mapbox托管的完整样式
  style: {
    version: 8,
    sources: {
      'mapbox-tiles': {
        type: 'vector',
        // 直接调用Mapbox Vector Tiles API,可自行替换为需要的瓦片集ID
        tiles: [`https://api.mapbox.com/v4/mapbox.mapbox-streets-v8/{z}/{x}/{y}.mvt?access_token=${MAPBOX_TOKEN}`],
        tileSize: 512,
        attribution: '© Mapbox © OpenStreetMap contributors'
      }
    },
    layers: [
      // 按需配置矢量瓦片对应图层的渲染规则,以下为路网图层示例
      {
        id: 'road-layer',
        type: 'line',
        source: 'mapbox-tiles',
        'source-layer': 'road',
        paint: {
          'line-color': '#cccccc',
          'line-width': 1
        }
      }
      // 可继续补充其他图层的样式配置
    ]
  }
})
  • 上述写法直接请求Mapbox Vector Tiles API的mvt瓦片资源,不会触发Mapbox的「Web端地图加载量」统计,所有请求会计入Mapbox Vector Tiles API的调用量,你可以根据业务需求调整tiles参数中的瓦片集ID,也可叠加配置多个Mapbox矢量瓦片源。
  • 你需要根据所用瓦片集包含的图层列表,自行配置所有需要展示的图层样式规则,未配置的瓦片图层不会在地图上渲染。

内容的提问来源于stack exchange,提问作者Vasco Nunes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:06:04