首页 / Leaflet / 使用示例
自定义投影
用平面坐标系承载厂区平面图,坐标单位直接是米,右下角保留一张 Web 墨卡托对照图。
源码与运行效果
说明
CRS 由三部分构成:projection 把经纬度转成平面坐标,
transformation 决定平面坐标到像素的缩放与原点翻转,
scale 定义每个缩放级别对应的像素比例。示例沿用
L.CRS.Simple 的前两项,改掉代号与 distance,
让 latlng.lat 直接读作 y 米、latlng.lng 读作 x 米。
平面坐标系没有现成的公开瓦片,底图由 L.GridLayer 现场绘制网格。
地块、外框、标记全部用米制坐标书写,fitBounds 与
maxBounds 也按米设定,因此不涉及任何经纬度换算。
| 改动点 | 示例取值 | 说明 |
|---|---|---|
crs | PlaneCRS | 自定义实例,需在创建地图时传入 |
scale | 2zoom | 决定 0 级时 1 像素代表多少平面单位 |
maxBounds | [-200,-200]–[1400,2200] | 防止拖出平面图范围 |
zoomSnap | 1 | 自定义图层没有中间级别瓦片,避免半级缩放 |
| 底图 | GridLayer 生成 | OSM 瓦片按 3857 编号,不能用于自定义投影 |
给现有经纬度底图套自定义 CRS 时,最容易出错的是瓦片编号:瓦片行列号由当前 CRS 投影结果除以瓦片尺寸得到,换了投影后编号整体错位,表现是满屏 404 或位置偏移。 底图与 CRS 必须来自同一套投影,才能叠加。