Leaflet 0.7 版本发布,MapBox 和未来计划
Leaflet 0.7 发布 - 包含 IE11 触摸支持、上采样瓦片以及大量其他改进和错误修复!与此同时,我全职加入了 MapBox 团队…
经过另外 5 个月的积极开发,许多贡献者参与其中,我很高兴地宣布 Leaflet 0.7 稳定版发布。
这是一个以修复错误为主的版本 - 随着 Leaflet 在功能方面变得越来越稳定,重点逐渐转向稳定性、可用性和 API 改进,而不是新的功能。我还将一些计划中的深度重构(我将在文章后面谈论)推迟到 0.7 发布之后,以便将繁重的风险工作放在发布周期的开始,留下充足的空间来捕获可能无意中破坏现有应用程序的错误和不兼容的更改。
加入 MapBox
另外,我 全职加入了 MapBox 团队。这对我来说非常激动人心,因为我一直梦想着加入这个团队 - MapBox 通过他们出色的工作永远改变了交互式地图的世界,拥有世界上最伟大的地理地图工程师和设计师,他们共同努力,突破了可能的界限,并每天激励着其他人。
这对 Leaflet 来说只能意味着好事 - Leaflet 开发将有更多的时间、更多的热情、更多的乐趣、更多关于地图的疯狂实验(比如 这个),还有很多东西要学习。我现在是世界上最幸福的地图爱好者之一。敬请期待更多精彩内容!
0.7 中的更改
你可以查看 详细的变更日志,了解最近几个月针对 0.7 所做的工作(大约 90 项改进和错误修复),但我想重点介绍一些亮点。
- 增加了 上采样瓦片到更高缩放级别(例如,在源的最高缩放级别为 18 的情况下,提供缩放级别 19-20)。
- 增加了对 IE11 触摸设备的支持。微软意外地在开发者预览版和最终 IE11 版本之间打破了指针 API 兼容性,我们最终重新编写了相当一部分代码,以使所有 IE 版本(包括桌面和移动版)都能顺利运行,同时修复了沿途的一系列 IE10 错误。
- 正式 放弃了对 IE6 的支持(反正没人关心)并清理/修复了 IE7-8 样式。
- 不再需要在包含 Leaflet 时使用 IE 条件注释,使代码片段更加简单 - 所有 IE7/8 特定的样式都已简化并移至主
leaflet.css
文件。 - 修复了 一个不为人知的 iOS7 内存泄漏,该泄漏会导致你在尝试创建数千个图层(例如,用于聚类的标记)时导致 Safari 崩溃。我仍然不明白为什么会出现这种情况,但我们设法通过一些技巧解决了这个问题。
- 修复了 Android 版 Chrome 中的一个严重错误,该错误会导致某些设备在缩放后瓦片消失。
- 删除了 TileLayer 实现中一些与 地球相关的硬编码,使像 Proj4Leaflet 这样的插件更容易处理复杂的投影,而无需使用可怕的黑客技术。一些其他工作将在 0.8 中进行。
- 改进了 复杂页面上的平移性能,这些页面包含大量元素 - 我们发现,简单的事情,例如将 document 的光标设置为不同的光标(用于“抓取”手),会导致某些浏览器(尤其是 Chrome)出现明显的性能下降。
- 更改了 maxBounds 的工作方式,不再强制从它派生
minZoom
,而是限制在较低缩放级别上的平移,并使用一些技巧使其更好地与平移惯性或偏移缩放等功能协同工作。
0.8 的计划
在发布 0.7 之后,我想要立即开始进行 Leaflet 的重构工作 - 我已经推迟了太长时间,这对插件和基于 Leaflet 的 API 作者来说将非常有益。其中一些工作已经在进行中。
- 重构 图层架构。目前,不同图层(地图、标记、矢量图层等)的实现之间存在大量逻辑重复,特别是事件处理、缩放动画逻辑、zIndex 和面板处理(什么显示在什么上面等)。使代码保持一致、更通用并跨不同图层共享,将使自定义图层和创建自己的图层变得更容易(例如,集成 d3 等)。
- 将庞大的 TileLayer 实现拆分为 GridLayer 和 TileLayer,将图像瓦片相关的逻辑和网格逻辑分离,这将使其他类似网格的图层实现(例如 UTFGrid 交互或分块 GeoJSON)变得更加简单。
- 重构 缩放动画逻辑,以实现期待已久的 Easey 样式动画(在点之间进行缩放平移)。
- 重构 投影代码,以便更容易地设置平面地图和奇怪的投影,并自定义 Leaflet 处理它们的方式。
- 重构 矢量图层代码,以便可以对同一地图上的不同图层使用不同的渲染后端(Canvas、SVG 等),并在它们之间轻松切换。这还将为有趣的扩展打开大门,例如使用 RBush 为图层编制索引,以实现快速交互功能。
虽然这是一个雄心勃勃的计划,可能需要不止一个稳定版本才能完成,但完成所有这些重构意味着 Leaflet 正在为 1.0 版本发布做准备。
在发布 0.7 之后,我想重点关注的另一个方向是 网站和文档改进。首先,Leaflet 迫切需要 更多逐步教程(包括更高级的功能,例如自定义图层、自定义控件等),我希望将来能进行一次文档/教程冲刺。其次,演示可以得到显著改进 - 添加一个突出的视觉 展示或应用程序库,使 Leaflet 用户更突出,包括一些徽标和引语/评价,以及更新版式/设计,使其更具风格和简洁等。
希望这能让你对 Leaflet 在不久的将来的发展有一个很好的了解,如果你有任何问题,请随时在评论中提出 - 我很乐意回答!
与往常一样,在 下载页面 上获取新版本的 CDN 链接或下载。请务必在你的应用程序中试用它,并报告任何回归,以便我们能够立即修复它们。我们也像往常一样在 Twitter 上为新版本制造一些宣传吧!
感谢所有参与 Leaflet 贡献、错误报告、邮件列表、Twitter 宣传、制作很棒的应用程序和宣传 Leaflet 的人 - 你们是最棒的社区!
干杯!
Vladimir