OpenLayers 热力图实战:20 行代码画出点数据与轨迹密度图

发布时间:2026/11/4 19:09:02
OpenLayers 热力图实战:20 行代码画出点数据与轨迹密度图 OpenLayers 热力图实战20 行代码画出点数据与轨迹密度图【免费下载链接】openlayersOpenLayers项目地址: https://gitcode.com/gh_mirrors/op/openlayers想在地图上回答哪里更密集OpenLayers 热力图比逐点绘制直观得多。这篇以ol/layer/Heatmap图层为主线只用几行配置就能搭出两类空间数据密度可视化地震点热力图与船舶轨迹热力图。该图层走 WebGL 渲染管线几万级数据量也不会给页面带来太大负担。先看你手上是什么空间数据先对号入座点事件地震、店铺、传感器点位每个点可以带一个强度字段震级、计数交给weight即可。线轨迹船舶 AIS、车辆 GPS 轨迹热度来自线路本身线重叠越多颜色越热。其他POI、交通流量凡能画成点或线的矢量数据都适用。第一张点热力图不到 20 行代码跑通密度渲染一个VectorSource加三个参数第一张热力图就有了import Map from ol/Map.js; import View from ol/View.js; import KML from ol/format/KML.js; import Heatmap from ol/layer/Heatmap.js; import VectorSource from ol/source/Vector.js; const heatmap new Heatmap({ source: new VectorSource({ url: data/kml/2012_Earthquakes_Mag5.kml, format: new KML(), }), radius: 5, blur: 15, weight: (feature) parseFloat(feature.get(name).substr(2)) - 5, }); new Map({ target: map, layers: [heatmap], view: new View({center: [0, 0], zoom: 2}), });weight这里从 KML 的name属性里解析震级做归一化如果你的数据带数值字段直接把字段名当字符串传入即可。带滑块的完整版见 examples/heatmap-earthquakes.html。另外别忘了给地图加一个底图图层OSM、StadiaMaps 均可浅色瓦片衬出的热力色更明显类似下图这种 WMS 栅格瓦片热力图参数调优radius、blur、weight 怎么搭配参数默认值作用建议取值radius8数据点影响半径像素线的宽度为半径的 2 倍点 5~15线 3~8blur15叠加在 radius 之外的过渡带越大越柔、越小越锐比 radius 大 8~15weightweight字段名或函数决定单个点强度值会被截断到 0~1归一化到 0~1opacity1图层整体透明度叠底图时 0.6~0.8gradient蓝→红五色CSS 颜色数组生成渐变纹理低密度对应第一色首色用浅色 常用组合小radius 大blur出柔和的大片感大radius 小blur出锐利的斑点感。接上 range 滑块、调用setRadius()/setBlur()就能实时调官方示例就是这么做的。轨迹热力图线数据与采样间隔的取舍与点数据的差异只有一个source 里放线几何渲染器会沿线连续绘制不需要你手动把线打散成点。注意官方Heatmap并没有采样间隔参数如果你想要逐点权重比如按速度加权需要自己在预处理阶段把线采样成点取舍在于间隔越小细节越好、点越多、渲染越重。官方轨迹示例 examples/heatmap-trajectories.html 用恒定 weight并通过filter表达式按船舶类型筛选、用updateStyleVariables()运行时刷新是很实用的交互模式。常见坑快速排查画面空白数据坐标系与 View 不匹配数据 4326、地图 3857。用fromLonLat()包一下坐标或重投影数据同时确认 source 真的加载到了要素。点位偏移、海岸线出现两遍投影不一致现象参考下图。没有颜色层次weight 全部被截断到 1超过 1 的值会被 clamp或字段名写错undefined会回退成 1。先把 weight 归一化。⚠️ 出现黑块或颜色发灰weight 返回了 NaN。确认字段存在并用Number()做转换。大数据量卡顿10 万点以上先抽稀或简化点位或改用瓦片化方案分块加载。小结热力图 矢量数据源 radius / blur / weight 三件套参数归一化之后密度自然就出来了。深入实现看图层源码 src/ol/layer/Heatmap.js练习数据可用 examples/data/geojson/ship-trajectories.json。【免费下载链接】openlayersOpenLayers项目地址: https://gitcode.com/gh_mirrors/op/openlayers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询