【WebGIS实例】(6)MapboxGL绘制简易气泡图

前言

现在有这么一个数据可视化的需求,在地图上绘制带有数据的气泡。那么就用一个比较简单和快的方法来实现一下,实现步骤:①加载气泡图片 ②加载数据 ③创建Symbol图层。
在这里插入图片描述

实现

这次用的示例数据是GeoJSON格式的点要素,且properties中有自己打算展示的数据。
const testJson =

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

第一步:向地图中加载气泡的图像

本次气泡图的气泡就用最简单的圆形:circle.png
请添加图片描述

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

第二步:加载气泡图层

map.addSource('bubbleSource', {
  type: 'geojson',
  data: testJson // GeoJSON格式的数据
})

map.addLayer({
  id: 'bubbleLayer',
  type: 'symbol',
  source: 'bubbleSource',
  layout: {
    'icon-image': 'bubbleIcon', // 图标ID
    'icon-allow-overlap': true, // 允许图标重叠
    'text-allow-overlap': true, // 允许文字重叠
    'icon-size': 0.2, // 图标的大小
    'icon-anchor': 'center', // 图标的位置
    'text-field': ['get', 'num'], // 获取num属性的值
    'text-font': ['Open Sans Bold'], // 字体
    'text-size': 13,
    'text-anchor': 'center'
  },
  paint: {
    'text-color': '#fff'
  }
})

上面的代码中,'text-field': ['get', 'num'], 指的是从矢量数据的properties中获取num的值,另一种写法是:'text-field': '{num}',

完整代码

import { map } from '@/utils/createMapbox' // 地图对象
import testJson from '@/assets/data/point.json' // 引入测试数据

export default class DrawBubble {
  constructor () {
    // 加载图标
    map.loadImage(require('@/assets/circle.png'), function (error, image) {
      if (error) throw error
      map.addImage('bubbleIcon', image)
    })
  }

  // 绘制气泡
  drawBubble () {
    map.addSource('bubbleSource', {
      type: 'geojson',
      data: testJson // GeoJSON格式的数据
    })
    map.addLayer({
      id: 'bubbleLayer',
      type: 'symbol',
      source: 'bubbleSource',
      layout: {
        'icon-image': 'bubbleIcon', // 图标ID
        'icon-allow-overlap': true, // 允许图标重叠
        'text-allow-overlap': true, // 允许文字重叠
        'icon-size': 0.2, // 图标的大小
        'icon-anchor': 'center', // 图标的位置
        'text-field': ['get', 'num'],
        // 'text-field': '{num}',
        'text-font': ['Open Sans Bold'],
        'text-size': 13,
        'text-anchor': 'center'
      },
      paint: {
        'text-color': '#fff'
      }
    })
  }

  // 清除该功能绘制的符号等等等等
  clear () {
    // 删除图层与数据源
    if (map.hasImage('bubbleIcon')) map.removeImage('bubbleIcon')
    try {
      map.removeLayer('bubbleLayer')
      map.removeSource('bubbleSource')
    } catch (error) {
      console.log(error)
    }
  }
}

拓展

绘制相同图形但不同颜色的气泡:【WebGIS实例】(7)MapboxGL绘制不同颜色的Symbol图标

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebGIS,即基于Web的地理信息系统,是一种通过Web技术实现地理信息系统功能的方式。在开发实例方面,可以借助CSDN平台上的资源进行学习和参考。 CSDN是一个技术社区,汇聚了众多IT从业者的知识和经验。在CSDN上可以找到很多关于WebGIS开发的教程和案例,供开发者学习和借鉴。 一个WebGIS开发实例包括以下步骤: 1.需求分析:首先要明确开发的WebGIS系统的需求,确定要实现的功能和目标。 2.数据收集和处理:收集地理信息数据,如地图、卫星影像、矢量数据等。对这些数据进行处理和转换,以便于在WebGIS系统中使用。 3.系统设计:根据需求确定系统的架构和各个模块的功能。选择合适的开发工具和技术,例如使用JavaScript、HTML、CSS等前端技术进行地图的呈现和交互,后端可以选择使用Java、Python等语言进行数据处理和业务逻辑的实现。 4.系统开发:按照系统设计的要求,逐步开发各个模块。使用CSDN平台上的教程和案例进行学习和参考,可以加速开发的进度和提高开发的质量。 5.测试和调试:在开发过程中进行测试,保证系统的稳定性和正确性。对系统进行调试,解决出现的问题和bug。 6.部署和上线:将开发完成的WebGIS系统部署到服务器上,上线供用户访问和使用。 总之,CSDN平台是一个非常有价值的资源,可以为WebGIS开发者提供学习和参考的资料。通过学习CSDN上的教程和案例,可以更加高效地进行WebGIS的开发实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值