leafletjs版本升级评估(1.6.0到1.9.4)

LeafletJS从1.6升至1.9指南

一、与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 支持 duration1.7.1可自定义飞行动画时长(秒)。map.flyTo([lat,lng], 15, {duration: 0.8})
ImageOverlay 旋转/倾斜1.8给图片覆盖物加任意角度,做“倾斜影像”神器。L.imageOverlay(url, bounds, {rotation: 15})
VideoOverlay1.8直接播 .mp4.webm 当图层,做“实时视频地图”。L.videoOverlay(url, bounds, {autoplay:true})
SVG 叠加层1.8原生 L.svg() 容器,D3/Canvas 混合场景更顺手。const svg = L.svg().addTo(map)
Tooltip 支持 permanent1.7鼠标不悬停也能常驻显示,做“标签云”更方便。bindTooltip('text', {permanent:true})
Marker 自定义 rotationOrigin1.7.1图标旋转中心可微调,箭头、车标更自然。L.marker(latlng, {rotationAngle:45, rotationOrigin:'center center'})
Canvas 渲染性能开关1.910 k+ 圆/线时自动切 Canvas,移动端不再卡。无感,自动降级
TypeScript 声明内置1.8官方 @types/leaflet 已同步,无需三方包。import * as L from 'leaflet' 直接提示

二、“不兼容”点

  1. 默认坐标顺序变了
    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 的手写坐标,确认顺序。

  2. L.CRS.EPSG3857 投影常数更精确
    1.6 的 earthRadius 取 6378137 米,1.7 后统一 WGS84 椭球参数,极地区域瓦片编号会差 1~2 个层级
    如果你用 TileLayer.WMS 且服务端按 1.6 算切图,会出现“偏移一条瓦片”现象。
    修复:服务端升级或手动指定 crs: L.CRS.EPSG3857 旧常数。

  3. DomEvent.DoubleTapDelay 默认 250 ms → 300 ms
    自己写过手势库的可能要同步改。

  4. IE11 以下被官方弃用
    1.8 起源码里出现 Array.prototype.includes 等 ES6 语法,不再打包 polyfill。
    结论:如果还要支持 IE9/10,只能留在 1.6。

三、性能 & 体积

指标1.6.01.9.4备注
打包后体积 (leaflet-src.js)141 kB152 kB+11 kB,换 retina+video 功能值
10 k 圆形渲染时间(Chrome M110)420 ms110 ms自动切 Canvas,4× 提升
移动端 flyTo 帧率18 fps38 fpsCSS 动画+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% 场景能平滑过。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值