前端GIS数据可视化【免费下载链接】openlayersOpenLayers项目地址https://gitcode.com/gh_mirrors/op/openlayers点击查看免费下载导读本文以 OpenLayers v3.10.0 发布说明changelog/v3.10.0.md为核心系统梳理该版本自 v3.9.0 以来合并的 66 个 Pull Request 带来的新特性、破坏性变更与升级路径。你将了解到Microsoft Edge 全触摸手势支持、API 文档对必填构造参数的自动标注、矢量标签文本样式的默认值行为以及 GML3 多几何要素的写支持同时会看到ol.layer.Layer颜色变换 API 被移除后的替代方案、旧版 IE 支持移除的影响以及每项改动在当前 OpenLayers 源码中的落点便于对照理解其长期演进。一、版本概览v3.10.0 带来了什么v3.10.0 是 OpenLayers 3.x 系列的一个常规功能版本自 v3.9.0 发布以来共合并了 66 个 Pull Request涵盖了新功能、性能优化、代码现代化逐步移除 Closure 库依赖与示例改进。发布说明归纳的四大亮点如下Microsoft Edge 浏览器全触摸手势支持通过补充CSSProperties.prototype.touchAction的 extern 声明对应 PR #4108并阻止 IE Edge 上的页面缩放PR #4107使得触摸平移、捏合缩放等手势在 Edge 下表现与 Chrome/Firefox 一致。API 文档改进——必填构造参数自动标注PR #4079 让 jsdoc 生成的 API 文档能够自动识别并把必填的构造函数选项标记出来降低使用者的配置门槛。文本样式矢量标注默认值行为修正此前只设置标签文本而不显式配置 fill 等样式时标注渲染会失败PR #4111 引入偏黑的默认填充色blackish default fill使得ol.style.Text只传text也能正常工作。该默认值在当前仓库 src/ol/style/Text.js 中依然以DEFAULT_FILL_COLOR #333的形式存在。GML3 多几何要素的写支持PR #4237对应 issue #3328补齐了 GML3 格式写出包含多个几何要素的能力。从当前源码看这些能力大部分延续至今GML3 读写实现在 src/ol/format/GML3.js文本样式选项体系在 src/ol/style/Text.js 中得到了大幅扩展。二、升级须知Upgrade Notesv3.10.0 包含两处需要使用者注意的破坏性变化升级前请务必核对自身代码。2.1ol.layer.Layer颜色变换 API 被移除实验性的setHue、setContrast、setBrightness、setSaturation以及对应的 getter 方法在本版本中被彻底删除对应 PR #4174将 hue/saturation/contrast/brightness 从 layer 属性中移除。原因在于这些属性只对 WebGL 渲染器生效无法在默认的 Canvas 渲染器下工作属于看起来通用、实则受限的接口。如果你确实需要做颜色变换发布说明给出了两条官方替代路径postcompose事件在图层合成完成后通过渲染上下文对画布进行二次处理。该事件在当前源码中依然是公开 API见 src/ol/render/EventType.js 中POSTCOMPOSE: postcompose的定义——事件在图层合成之后触发此时可以拿到已绘制的画布内容做滤镜类处理。ol.source.Raster源以任意多个输入源为基础通过自定义变换函数生成新的栅格数据。这一思路在 src/ol/source/Raster.js 中延续其核心选项sources输入源数组与operation像素级运算函数构成了栅格计算管线比 layer 级颜色属性更通用、更强大。迁移建议如果你的应用依赖这四个 setter 做 WebGL 下的颜色调整请改写为postcompose事件处理或ol.source.Raster的operation如果只是在 Canvas 渲染下碰巧没报错但也没效果直接删除相关调用即可。2.2 移除对旧版 Internet Explorer 的支持PR #4162 删除了ol.LEGACY_IE_SUPPORT相关代码v3.10.0 起不再为 IE8 及更早版本做专门适配。发布说明明确如果应用仍需支持 IE8 及以下版本必须自行引入ES5 shim才能让 OpenLayers 工作项目团队对这类古董浏览器的支持态度是非常基础very basic并明确建议不要支持它们。对绝大多数开发者而言这属于减负型变更移除旧浏览器兼容代码后代码库更小、更易维护。同时本版本还同步把Date.now()替换了goog.now()PR #4179、用 ES5.1 的 Array 方法替换goog.array系列工具PR #4165 等整体向标准 JavaScript 靠拢。三、新特性与修复详解发布说明按 PR 列表逐一记录了 v3.10.0 的全部改动。本文按功能主题归类展开方便按需查阅。3.1 数据格式GML3 多几何写支持#4237 / #3328GML3 支持写出含多个几何的要素。此前 GML3 的写出路径对多几何支持不完整本版本补上了这一缺口。从当前 src/ol/format/GML3.js 的结构看GML3 解析器通过MULTIGEOMETRY_TO_MEMBER_NODENAME映射表src/ol/format/GML3.js把MultiLineString、MultiCurve、MultiPolygon、MultiSurface分别对应到lineStringMember、curveMember、polygonMember、surfaceMember子节点同时提供multiCurve、multiSurface、hasZ等构造选项src/ol/format/GML3.js控制写出行为——这些正是 v3.10.0 起多几何写能力的基础设施。配套改动#4195 / #4172issue #4171让MultiLineString.setLineStrings()与MultiPolygon.setPolygons()在未显式指定时优先沿用当前布局layout作为默认值避免多几何数据在改写后坐标布局漂移与多几何读写场景直接相关。#4234支持 OGC WKT 中 proj4 定义的units与to_meter字段让 WKT 坐标系定义能被正确换算。3.2 交互InteractionSelect 能力增强#4218为ol.interaction.Select新增getLayer()方法。该方法返回指定要素所属的矢量图层在当前 src/ol/interaction/Select.js 中依然存在其实现通过内部featureLayerAssociation_映射以要素 uid 为键反查图层。#4153为ol.interaction.Select增加features选项。该选项接收一个CollectionFeature交互会把选中的要素放入该集合便于外部代码统一监听选择结果。当前源码 src/ol/interaction/Select.js 中this.features_ options.features || new Collection()保留了这一语义。#4036修复修改modify交互的事件顺序问题确保modifystart/modifyend等事件在正确的时机触发避免回调中拿到过期状态。3.3 控件ControlOverviewMap 视图可配置#4116ol.control.OverviewMap的 view 变为可配置项。此前鹰眼图视图完全由主地图派生本版本允许传入自定义View要求与主地图使用相同投影。这一选项一直保留至今见 src/ol/control/OverviewMap.js 中view选项的文档说明为鹰眼图提供自定义视图应与主地图使用相同投影未提供时使用与主地图同投影的默认视图。3.4 样式Style文本标注默认值修复#4111使用偏黑的默认填充色渲染文本。改动前仅设置text的样式对象会因为 fill 缺失而在渲染时失败改动后未指定 fill 时自动使用#333黑偏灰矢量标注开箱即用。当前 src/ol/style/Text.js 的构造函数中options.fill ! undefined ? options.fill : new Fill({color: DEFAULT_FILL_COLOR})正是该默认行为的延续。#4138增强ol.style.Text的 API 文档。如今 src/ol/style/Text.js 的 Options 类型定义已非常完整包含font默认10px sans-serif、placementpoint/line默认point、offsetX/offsetY、rotation、rotateWithView、keepUpright、textAlign、textBaseline默认middle、fill、stroke、backgroundFill、backgroundStroke、padding、overflow、repeat、maxAngle默认Math.PI/4等均可作为编写标注样式的参考手册。#4144将context.fillStyle设置为字符串规避某些环境下对象赋值的兼容问题。3.5 渲染与性能#4187修复自定义TMS瓦片网格中{-y}模板的计算。TMS 的 y 坐标轴方向与 XYZ 相反此修复保证使用自定义 tile grid 时{-y}占位符替换结果正确。#4173仅在分辨率即将变化时才触发动画避免无谓的重绘开销。#4198优化ol.control.Rotate.prototype.resetNorth_的性能。#4216修复 31a68e2 引入的 Canvas 重放replay回归问题。#4117forEachFeatureAtPixel在图层没有数据源source时不再抛异常增强了地图事件的健壮性。#4224旋转元素时不再先把角度转换为度数减少不必要的数值转换误差。3.6 几何与空间运算 API#4145新增用于简化几何的 API 方法simplify把几何简化能力提升为公开接口便于在渲染前或在postcompose等流程中对要素做降采样处理。3.7 交互体验与示例#3969新增选项允许以鼠标位置为锚点进行缩放。默认行为下缩放以视图中心为锚此选项让指针停留在原地理位置上成为可能显著改善地图细节定位体验。#4156示例drag-features更名为custom-interactions突出其演示如何组合自定义交互的定位当前仓库中该示例即为 examples/custom-interactions.js。#4139新增结合 turf.js 与 JSTS 的示例当前仓库对应 examples/turf.js 与 examples/jsts.js演示在 OpenLayers 中集成第三方空间分析库。#4184调整 GetFeatureInfo 系列示例中 iframe 的位置#4168改进 tile preload 示例的措辞。3.8 代码现代化逐步脱离 Closure Libraryv3.10.0 进行了大规模的内部清理将大量 Google Closure 工具函数替换为标准 JavaScript包括移除goog.fx.easing#4223、goog.string.remove#4209、goog.string.startsWith#4207、goog.string.trim()#4208、goog.dom.appendChild#4202、goog.object.get#4200、goog.functions.constant#4190、goog.object.getKeys#4188、goog.nullFunction#4189替换为ol.nullFunction、goog.array.contains#4181、goog.math.clamp()#4175、goog.isDef#4129、goog.object.containsKey#4159、goog.object.remove#4150、goog.array.isEmpty#4149等使用 ES5.1 标准 Array 方法替代goog.array#4165使用Date.now()替代goog.now()#4179升级到 20150920 版本的 Closure Compiler#4166。此外示例的复制到剪贴板功能从依赖 Flash 的 ZeroClipboard 替换为 Clipboard.js#4217随后 #4231 曾一度回滚最终以 Clipboard.js 方案落地。四、升级路径与影响评估从 v3.9.0 升级到 v3.10.0 时请重点检查以下三类代码检查项影响处置方式layer.setHue/setContrast/setBrightness/setSaturation及对应 getter已被移除改用postcompose事件或 src/ol/source/Raster.js 的operation变换目标环境含 IE8 及更早版本官方不再支持引入 ES5 shim或直接放弃支持官方推荐依赖ol.interaction.Select的事件顺序事件时序已修正核对modifystart/modifyend相关回调逻辑其余改动均为新增能力或内部清理对既有 API 不构成破坏可按需选用getLayer()、features选项、可配置的 OverviewMap 视图、GML3 多几何写出等新特性。五、小结v3.10.0 是 OpenLayers 3.x 走向成熟的一个重要节点对外它补齐了 Edge 触摸交互、文本标注默认值、GML3 多几何写出等实用能力对内它大范围剥离 Closure Library 依赖、升级编译器、修正渲染与交互细节为后续版本更彻底的模块化与现代化铺路。从当前仓库源码来看本版本确立的postcompose事件、ol.source.Raster、Select 的getLayer()、OverviewMap 自定义视图等设计在后继版本中全部保留并持续演进理解 v3.10.0 的变更脉络有助于你把握 OpenLayers API 设计的一贯思路。赞分享前端GIS数据可视化【免费下载链接】openlayersOpenLayers项目地址https://gitcode.com/gh_mirrors/op/openlayers点击查看免费下载相关推荐wired-elements移动端手势支持增强触摸交互体验wired elements移动端手势支持增强触摸交互体验 你是否在移动设备上使用网页应用时遇到过选择器难以点击、日历滑动不流畅的问题wired elemeUI组件前端Leaflet 0.5 版本解析IE10 触摸支持、Retina 标记与更顺滑的地图交互Leaflet 0.5 版本解析IE10 触摸支持、Retina 标记与更顺滑的地图交互 Leaflet 0.5 是该项目发展历程中承上启下的稳定版本在 0前端数据可视化GISCangjie-SIG/RGF_CJ触摸支持触摸屏的交互实现Cangjie SIG/RGF_CJ触摸支持触摸屏的交互实现 还在为Windows桌面应用的触摸交互开发而烦恼吗RGF_CJ框架提供了完整的触摸事件支持让图形学桌面应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
