mapbox加载多个雪碧图

贴个群号

WebGIS学习交流群461555818,欢迎大家

源码

mapbox中style的雪碧图地址是固定的,所以我们想加载多个雪碧图的时候,就是把雪碧图里面的图片循环用addImage加上去,效果是一样的。都能在icon-image等属性中使用

// 加载雪碧图
const loadSprite = (map, tilesUrlDC = './static/sprite')=>{
  const canvas = document.createElement('canvas')
  const ctx = canvas.getContext('2d')
  const img = new Image()

  img.src = `${tilesUrlDC}/sprite.png`
  img.setAttribute('crossOrigin', '')
  img.onload = async () => {
    canvas.width = img.width
    canvas.height = img.height
    ctx.drawImage(img, 0, 0)
    const spriteJson = await fetch(`${tilesUrlDC}/sprite.json`).then((res) => res.json())

    for (const k in spriteJson) {
      const { width, height, x, y } = spriteJson[k]
      const data = ctx.getImageData(x, y, width, height).data

      if (!map.hasImage(k)) {
        map.addImage(k, { width, height, data })
      }
    }
  }
}
### 如何在 Mapbox加载自定义 WMTS 底图 Mapbox 提供了灵活的方式来加载各种类型的底图,包括通过 Web 地图瓦片服务 (WMTS) 加载自定义底图。以下是实现这一目标的具体方法: #### 配置 WMTS 参数 为了在 Mapbox加载自定义 WMTS 底图,需要先获取该 WMTS 的 URL 相关参数。这些参数通常包括 `tiles`、`bbox-epsg-3857`、`projection` 等信息[^3]。 以下是一个典型的 JSON 配置示例用于设置 WMTS 数据源: ```json { "version": "8", "name": "Custom WMTS Layer", "sources": { "custom_wmts": { "type": "raster", "tiles": [ "https://your-wmts-service-url/{z}/{x}/{y}.png" ], "tileSize": 256, "minzoom": 0, "maxzoom": 18 } }, "layers": [ { "id": "custom_wmts_layer", "type": "raster", "source": "custom_wmts", "paint": {} } ] } ``` 上述代码中的 `{z}`、`{x}` `{y}` 是标准的瓦片坐标占位符,表示缩放级别位置信息。确保替换 `"https://your-wmts-service-url"` 为实际的服务地址[^3]。 --- #### 设置投影系统 如果 WMTS 服务使用的不是 EPSG:3857 投影,则需调整其参数以匹配 Mapbox 所支持的标准投影。例如,在某些情况下可能需要手动指定 `bboxSR` 或者其他投影转换选项[^3]。 --- #### 实现步骤说明 尽管无法使用传统意义上的“步骤”,以下是逻辑上的顺序描述: 1. 获取并确认 WMTS 服务接口及其可用参数; 2. 将这些参数嵌入到 Mapbox Style 文件中作为新的数据源; 3. 添加对应的渲染层至样式文件以便显示此新底图。 由于中国地区的网络环境特殊性,部分国外服务商可能存在访问限制问题,因此建议测试时注意本地代理或其他技术手段解决潜在连接障碍[^2]。 --- #### 示例代码片段 下面展示了一段 JavaScript 示例代码,演示如何动态向现有地图实例添加基于 WMTS 的栅格图层: ```javascript map.addSource('custom_wmts_source', { type: 'raster', tiles: ['https://your-wmts-service-url/{z}/{x}/{y}.png'], tileSize: 256 }); map.addLayer({ id: 'custom_wmts_layer', type: 'raster', source: 'custom_wmts_source', paint: {} }); ``` 以上脚本假设已初始化好一个名为 `map` 的 Mapbox GL JS 对象,并且具有适当权限去调用外部资源链接[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值