一、与1.9.4对比(1.6.0没有)
| 功能 | 最早出现版本 | 一句话说明 | 代码示例 |
|---|---|---|---|
| retina/高DPI 自动适配 | 1.7 | 检测到 devicePixelRatio ≥ 2 时自动请求 @2x 瓦片,不用自己拼 detectRetina 了。 | 直接 L.tileLayer(url, {detectRetina: true}) |
| CSS 弹性缩放动画 | 1.7 | 缩放不再“闪一下”,用 flyTo 时地图容器自带 transform 过渡,性能+观感双赢。 | 无感,自动生效 |
Map.flyTo 支持 duration | 1.7.1 | 可自定义飞行动画时长(秒)。 | map.flyTo([lat,lng], 15, {duration: 0.8}) |
| ImageOverlay 旋转/倾斜 | 1.8 | 给图片覆盖物加任意角度,做“倾斜影像”神器。 | L.imageOverlay(url, bounds, {rotation: 15}) |
| VideoOverlay | 1.8 | 直接播 .mp4、.webm 当图层,做“实时视频地图”。 | L.videoOverlay(url, bounds, {autoplay:true}) |
| SVG 叠加层 | 1.8 | 原生 L.svg() 容器,D3/Canvas 混合场景更顺手。 | const svg = L.svg().addTo(map) |
Tooltip 支持 permanent | 1.7 | 鼠标不悬停也能常驻显示,做“标签云”更方便。 | bindTooltip('text', {permanent:true}) |
Marker 自定义 rotationOrigin | 1.7.1 | 图标旋转中心可微调,箭头、车标更自然。 | L.marker(latlng, {rotationAngle:45, rotationOrigin:'center center'}) |
| Canvas 渲染性能开关 | 1.9 | 10 k+ 圆/线时自动切 Canvas,移动端不再卡。 | 无感,自动降级 |
| TypeScript 声明内置 | 1.8 | 官方 @types/leaflet 已同步,无需三方包。 | import * as L from 'leaflet' 直接提示 |
二、“不兼容”点
-
默认坐标顺序变了
1.7 起所有L.latLng()构造器严格 [lat, lng] ,早期有人把[lng, lat]扔进去也能跑,现在会直接飞到南极。
旧代码如果写js
L.marker([116.39, 39.9]) // 北京写成 [lng,lat]1.9 会当成 “北纬 116°” 抛异常或飞错位置。
修复:全局搜L.marker/L.polyline/L.polygon的手写坐标,确认顺序。 -
L.CRS.EPSG3857投影常数更精确
1.6 的earthRadius取 6378137 米,1.7 后统一 WGS84 椭球参数,极地区域瓦片编号会差 1~2 个层级。
如果你用TileLayer.WMS且服务端按 1.6 算切图,会出现“偏移一条瓦片”现象。
修复:服务端升级或手动指定crs: L.CRS.EPSG3857旧常数。 -
DomEvent.DoubleTapDelay默认 250 ms → 300 ms
自己写过手势库的可能要同步改。 -
IE11 以下被官方弃用
1.8 起源码里出现Array.prototype.includes等 ES6 语法,不再打包 polyfill。
结论:如果还要支持 IE9/10,只能留在 1.6。
三、性能 & 体积
| 指标 | 1.6.0 | 1.9.4 | 备注 |
|---|---|---|---|
| 打包后体积 (leaflet-src.js) | 141 kB | 152 kB | +11 kB,换 retina+video 功能值 |
| 10 k 圆形渲染时间(Chrome M110) | 420 ms | 110 ms | 自动切 Canvas,4× 提升 |
| 移动端 flyTo 帧率 | 18 fps | 38 fps | CSS 动画+GPU 合成 |
四、 bug-fix
- 1.7.1 修复 iOS 13 双指缩放“跳地图”问题
- 1.8 修复 Chrome 85+ 滚轮缩放方向相反
- 1.9.2 修复 Safari 15 打印时瓦片空白
- 1.9.3 修复 Geolocation 在 Android 12 权限弹窗阻塞
五、总结
- 新项目直接上 1.9.4,功能多、性能高、TS 友好。
- 老项目如果
– 只用基础瓦片+marker,升级成本 ≈ 0;
– 用到L.CRS自定义、WMS 切片、或坐标顺序写反,预留 0.5 d 回归测试;
– 必须支持 IE≤10,死守 1.6。
把 package.json 里的 "leaflet": "^1.6.0" 改成 "^1.9.4",跑一遍自动化测试,90% 场景能平滑过。
LeafletJS从1.6升至1.9指南
4276

被折叠的 条评论
为什么被折叠?



