【WebGIS实例】(7)MapboxGL绘制不同颜色的Symbol图标

前言

在上一篇实例博客中(MapboxGL绘制简易气泡图)我们绘制了一个简易的单色气泡图,现在需求升级了。我们需要为气泡加载不同的颜色。
而要实现这个效果,其实相当简单,直接利用Mapbox提供的SDF渲染方法。
官网教程参考:Using recolorable images in Mapbox maps
在这里插入图片描述

接下来,我们将在【WebGIS实例】(6)MapboxGL绘制简易气泡图这篇博客的基础上来实现我们想要的效果。

实现

首先,矢量要素的properties新增color属性,数据格式示例:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "num": 414,
        "color": "#808080"
      },
      "geometry": {
        "coordinates": [
          112.68784006428433,
          23.85455050268874
        ],
        "type": "Point"
      }
    }
  ]
}

第一步:为图像启用SDF

 // 加载图标
 map.loadImage(require('@/assets/circle.png'), function (error, image) {
   if (error) throw error
   map.addImage('bubbleIcon', image, { sdf: true })
 })

这里我们直接引入circle.png,它是一个单色的圆形。同时,我们要为图像启用sdf: { sdf: true },启用的sdf的图像,在Symbol图层中就能够通过icon-color属性来重新渲染图像的颜色。

第二步:配置图像实际渲染的颜色

map.addLayer({
  id: 'bubbleLayer',
  type: 'symbol',
  source: 'bubbleSource',
  layout: {
    'icon-image': 'bubbleIcon', // 图标ID
    'icon-size': 0.2, // 图标的大小
    'icon-anchor': 'center', // 图标的位置
    'text-field': ['get', 'num'],
  },
  paint: {
    'text-color': '#fff',
    'icon-color': ['get', 'color']
})

上一段代码中,我们在'icon-color'里配置图标实际展示的颜色,直接获取矢量数据的propertiescolor的值。

最后

需要注意的是,SDF功能比较适合单色图像。如果你的图像有多种颜色,你可以去看看牛老师的这篇博客mapboxGL中多颜色图标的实现_牛老师讲GIS的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值