经纬志
首页 / Leaflet / 使用示例

自定义投影

用平面坐标系承载厂区平面图,坐标单位直接是米,右下角保留一张 Web 墨卡托对照图。

Leaflet 1.9.4 · 更新 2026-10-28
源码与运行效果
运行效果

说明

CRS 由三部分构成:projection 把经纬度转成平面坐标, transformation 决定平面坐标到像素的缩放与原点翻转, scale 定义每个缩放级别对应的像素比例。示例沿用 L.CRS.Simple 的前两项,改掉代号与 distance, 让 latlng.lat 直接读作 y 米、latlng.lng 读作 x 米。

平面坐标系没有现成的公开瓦片,底图由 L.GridLayer 现场绘制网格。 地块、外框、标记全部用米制坐标书写,fitBounds 与 maxBounds 也按米设定,因此不涉及任何经纬度换算。

改动点示例取值说明
crsPlaneCRS自定义实例,需在创建地图时传入
scale2zoom决定 0 级时 1 像素代表多少平面单位
maxBounds[-200,-200]–[1400,2200]防止拖出平面图范围
zoomSnap1自定义图层没有中间级别瓦片,避免半级缩放
底图GridLayer 生成OSM 瓦片按 3857 编号,不能用于自定义投影

给现有经纬度底图套自定义 CRS 时,最容易出错的是瓦片编号:瓦片行列号由当前 CRS 投影结果除以瓦片尺寸得到,换了投影后编号整体错位,表现是满屏 404 或位置偏移。 底图与 CRS 必须来自同一套投影,才能叠加。