ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

3步跑通OpenLayers扩展库ol-ext:动画集群、CSS弹窗与统计图表上手指南

3步跑通OpenLayers扩展库ol-ext:动画集群、CSS弹窗与统计图表上手指南 3步跑通OpenLayers扩展库ol-ext动画集群、CSS弹窗与统计图表上手指南【免费下载链接】ol-extCool extensions for Openlayers (ol) - animated clusters, CSS popup, Font Awesome symbol renderer, charts for statistical map (pie/bar), layer switcher, wikipedia layer, animations, canvas filters.项目地址: https://gitcode.com/gh_mirrors/ol/ol-extol-ext 是一套面向 OpenLayers 的地图扩展库提供动画集群、CSS 弹窗、字体图标、地图统计图表、图层切换器、画布滤镜等开箱即用的组件。本文带你安装、运行官方示例再用四个高频场景把它接进自己的项目。这些场景下你会需要它想象你正在做一个内部数据看板十几个图层叠在一起用户找不到开关你只能让他们对着图层名猜。换成 ol-ext 的图层切换器列表里直接带可见性开关、透明度和上下移序按钮界面立刻清爽。再比如你画了一张点位密集的城市地图原生 Cluster 源在缩放时簇点会突然消失体验很生硬。ol-ext 的动画集群让簇点随缩放平滑过渡点击后还能散开露出每个点。还有一种情况业务上要求把占比、计数直接画在地图点位上不想再引一个图表库也不想离线预渲染图片。ol-ext 的图表样式把饼图、环形图、柱状图直接当矢量符号来画。这三类事——界面、动画、符号——正是原生 OpenLayers 需要自己拼出来的部分ol-ext 把它们做成了现成类。上手路径装 → 跑 → 用安装 ol-ext 依赖ol-ext 是 ES6 模块OpenLayers 是它的 peer dependency两个都要装npm install ol npm install ol-ext三个命令跑通官方示例git clone https://gitcode.com/gh_mirrors/ol/ol-ext cd ol-ext npm install npm start浏览器打开http://localhost:8181仓库首页就是全部示例的索引页带搜索和分类改代码后页面会自动重新构建并刷新。在自己的项目里引入 ol-extimport ol/ol.css; import ol-ext/dist/ol-ext.css; import AnimatedCluster from ol-ext/layer/AnimatedCluster; import Popup from ol-ext/overlay/Popup;按模块路径逐个引入即可下面四个场景都从这里长出来。高频场景拆解密集点位怎么做动画集群痛点点位上千原生集群在缩放时簇点瞬间重组眼睛跟不上。ol.layer.AnimatedCluster配一个标准的ol.source.Cluster加上animationDuration参数簇点就会随缩放平滑过渡。再搭配SelectCluster交互点击一个簇会把它炸开成散点散出的点还能继续单独选中var clusterSource new ol.source.Cluster({ distance: 40, source: new ol.source.Vector() // addFeatures 塞入数据 }); var clusterLayer new ol.layer.AnimatedCluster({ source: clusterSource, animationDuration: 700, // 毫秒设为 0 即回到原生行为 style: getClusterStyle }); map.addLayer(clusterLayer);源码在 src/layer/ 与 src/interaction/完整示例见examples/animation/map.animatedcluster.html。弹窗怎么做成不用手调的 CSS 弹窗痛点原生 Overlay 只是个壳箭头、贴边、自动避让、关闭按钮都得自己写。ol.Overlay.Popup用纯 CSS 实现这些能力。positioning设为auto时弹窗会根据点位位置自选朝向autoPan在弹窗被边缘挡住时自动平移地图closeBox一键加关闭按钮var popup new ol.Overlay.Popup({ popupClass: default, positioning: auto, closeBox: true, autoPan: { animation: { duration: 250 } } }); map.addOverlay(popup); // 选中要素后 popup.show(coordinate, 任意 HTML 内容);想加出现动画只需再引一个动画 CSS。源码在 src/overlay/示例见examples/popup/map.popup.html。图表怎么直接画在地图上痛点每个点位要显示一份占比或计数预渲染图片更新麻烦引 ECharts 又太重。ol.style.Chart把 pie、pie3D、donut、bar 四种图直接当 image style 渲染在点位上数据就来自要素属性选中时还能加描边强调style: new ol.style.Style({ image: new ol.style.Chart({ type: pie, data: feature.get(data), // 例如 [3, 2, 1, 4] radius: 15, colors: classic, stroke: new ol.style.Stroke({ width: 2 }) }) })源码在 src/style/示例见examples/style/map.style.chart.html。滤镜怎么给图层加特效痛点同一张影像想要黑白底图描边感等不同风格不想为此维护多套瓦片。CanvasFilter在图层合成阶段直接加 blur、hue-rotate 等画布滤镜油画、点彩、铅笔素描这类更重的效果有独立的 filter 类同样挂在图层上实时生效var layer new ol.layer.Tile({ source: new ol.source.OSM(), filters: [ new ol.filter.CanvasFilter({ type: canvas, blur: 0, hueRotate: 180 }) ] });源码在 src/filter/示例见examples/filter/map.filter.canvasfilter.html。选它还是换别的维度说明适合谁已用或打算用 OpenLayers 做前台展示、看板、发布型地图想少写轮子不适合谁还在对比地图引擎的团队需要完整 GIS 服务端发布、存储、拓扑的场景与原生 ol 的关系是扩展不是替代核心地图、瓦片、矢量渲染仍由 ol 承担ol-ext 只补 UI 与可视化层版本约束需要ol 5.3.0升级 ol 后建议把示例过一遍再上线一句话ol-ext 不改变你写 OpenLayers 的方式只是把弹窗、切换器、图表、动画这几块从自己造变成import 一下。你可能想问ol-ext 和 ol 要各装一份吗是的ol是 peer dependency不会随 ol-ext 自动安装按上面的两条命令都装一遍。老项目不想上打包工具能用 script 标签吗仓库提供构建好的dist/ol-ext.js与ol-ext.cssnpm run build后可直接拷进项目README 里提到的纯 JS 包 openlayers-ext 已标记弃用只建议老项目过渡用。引入后样式和我现有 CSS 打架怎么办ol-ext 的类名都以ol-开头冲突面很小个别想微调的地方比如弹窗配色用你自己的 CSS 覆盖对应 class 即可示例页面里都保留了这些样式注释可以抄。TypeScript 项目有类型吗有社区维护types/ol-ext安装后直接按模块路径 import。接下来怎么走全部示例examples/本地跑起来后从仓库首页的索引页按关键词搜API 文档doc/doc-pages/源码入口src/参与贡献CONTRIBUTING.md下一步打开examples/animation/map.animatedcluster.html把 2000 个点改成你自己的数据看动画效果然后动手改第一个参数。【免费下载链接】ol-extCool extensions for Openlayers (ol) - animated clusters, CSS popup, Font Awesome symbol renderer, charts for statistical map (pie/bar), layer switcher, wikipedia layer, animations, canvas filters.项目地址: https://gitcode.com/gh_mirrors/ol/ol-ext创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表