经纬志
首页 / Leaflet / API 文档

Control.Scale

先看结论

显示当前缩放下比例关系的控件,默认位于左下角。

最后验证 2026-11-03 · Leaflet 1.9.4 · 更新 2026-10-28 · 引用本文
L.control.scale(options) → Control.Scale

参数

选项默认值说明
position'bottomleft'控件所在角
maxWidth100比例尺最大像素宽度,实际宽度取整到整齐的数值
metrictrue是否显示公制(米、千米)
imperialtrue是否显示英制(英尺、英里)
updateWhenIdlefalse为 true 时只在移动结束后更新,省掉拖动中的换算

成员

成员返回值说明
addTo(map)this挂载控件
remove()this移除控件
getPosition()String读取所在角
setPosition(position)this更换位置
getContainer()HTMLElement控件 DOM,用于改字号与配色
var scale = L.control.scale({
  position: 'bottomleft',
  maxWidth: 120,
  metric: true,
  imperial: false,
  updateWhenIdle: false
}).addTo(map);

/* 同时显示公制与英制会撑成两行 */
L.control.scale({ maxWidth: 90, imperial: true }).addTo(map);

/* 比例尺文字随地图缩放自动重算,监听 zoomend 只用于读取 */
map.on('zoomend', function () {
  console.log(map.getZoom(), scale.getContainer().textContent.trim());
});

比例尺是按地图中心的实际地面距离算的。控件用 containerPointToLatLng 取中心水平线上两点,再由 map.distance 求球面距离,所以读数本身没有纬度误差。 但它只代表中心一行像素的换算,同一屏内南北方向的像素对应的距离并不相同, 高纬度或大范围截图时不能拿这个值统一换算。

比例尺只反映「屏幕像素与地面距离」的关系,与容器实际 DPI 无关。打印或截图缩放后, 控件上的数值不再成立,需要在出图时另行标注。

引用本文

经纬志(2026)。《Control.Scale》。https://www.jingweizhi.com/leaflet/api/control-scale.html(访问日期 2026-11-03)。