Leaflet 0.7 发布, MapBox and 未来的计划
Leaflet 0.7 发布 — 支持 IE11 的触摸功能,提高了瓷砖的比例,并有大量的其他改进和 bug 修复! 同时,我已经全职加入了 MapBox 团队…
经过5个月的积极开发和 很多贡献者的参与 ,我很高兴宣布发布 Leaflet 0.7 稳定版。
这是一个重度 bug 修复的版本;随着 Leaflet 在功能上越来越稳定,我们的重点转向稳定性、可用性和 API 改进,而不是新功能。我也一直在推迟一些计划中的深度重构(我将在后面的文章中谈及),直到 0.7 版本发布,这样一来,在发布周期的开始阶段就完成了重度风险的工作,留下了足够的空间来捕捉错误和不兼容的变化,从而无意中破坏现有的应用程序。
加入 MapBox
在其他新闻中,我 全职加入了MapBox团队 。这让我非常兴奋,因为这是我梦想已久的工作 — MapBox 以其所有令人惊叹的工作永远改变了互动地图的世界,有一些世界上最伟大的地理测绘工程师和设计师一起工作,推动了可能的界限,每天都激励着其他人。
对于 Leaflet 来说,这只能意味着非常好的事情 —更多的时间用于 Leaflet 的开发,更多的热情,更多的游戏,更多的疯狂的地图实验(比如 这个 ,以及很多的学习。我现在是有史以来最快乐的地图专家之一。请继续关注我们的精彩内容。
0.7 变化
你可以查看 详细的更新日志 近几个月来为 0.7 所做的工作(大约 90 个改进和错误修正),但我想提及一些亮点:
- 增加了将瓷砖放大到更高的缩放级别的能力(例如,当源文件最大为18时,有缩放19-20)。
- 增加了对IE11触摸设备的支持。在开发者预览版和最终的 IE11 版本之间,MS意外地破坏了他们的指针 API 兼容性,我们最终重写了相当多的代码,以使所有的 IE 版本(包括桌面和移动)都能顺利工作,同时也修复了一堆 IE10 的错误。
- 正式放弃了对 IE6 的支持(反正没人在乎),并清理、修正了 IE7-8 的样式。
- 当包括 Leaflet 时,放弃了对IE条件注释的需要,使代码段更简单 — 所有 IE7 / 8 特有的样式被简化并移至主
leaflet.css
文件。 - 修正了一个不明显的 iOS7 内存泄露问题,当你试图创建几千个图层(例如用于聚类的标记)时,Safari 会崩溃。我仍然不明白为什么会发生这种情况,但我们设法用一点小技巧来修复它。
- 修正了一个关键的 Chrome for Android 错误,该错误使某些设备上的瓷砖在缩放后消失。
- 删除了 TileLayer 实现中一些与地球有关的硬编码,使 Proj4Leaflet 等插件更容易处理复杂的投影,而不需要可怕的黑客。这个方向的其他工作将在 0.8 中跟进。
- 在有大量元素的复杂页面上改进了平移性能 — 我们发现简单的事情,如将不同的光标设置为
document
(用于 “抓取”手),在一些浏览器(尤其是 Chrome )上造成明显的性能打击。 - 改变了 maxBounds 的工作方式,不是强制执行它的派生
minZoom
,而是限制在较低的缩放级别上进行平移,以及一些技巧,使其在平移惯性或偏移缩放等方面发挥得更好。
0.8 版本的计划
在重构 Leaflet 的过程中,有几项大的工作我想在发布 0.7 之后立即转入 — 我已经拖得太久了,而且这些工作对插件和基于 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 贡献、bug 报告、邮件列表、Twitter 讨论、制作很棒的应用程序和传播 Leaflet 的人 — 谢谢你们! 你们是有史以来最棒的社区。
Cheers,
Vladimir.