首页 / OpenLayers / API 文档
ScaleLine
先看结论
比例尺控件。按当前分辨率换算并绘制一条带刻度的长度尺,随缩放自动更新数值。
new ol.control.ScaleLine(options)
构造参数
| 参数 | 说明 |
|---|---|
className | 控件类名,默认 'ol-scale-line' |
units | 单位制,默认 'metric',可选 'degrees'、'imperial'、'nautical'、'us' |
minWidth | 比例尺最小宽度像素,默认 64 |
maxWidth | 比例尺最大宽度像素 |
bar | 是否使用条状样式,默认 false |
steps | 条状样式的分档数,默认 4 |
text | 是否在条状样式上显示文字,默认 false |
dpi | 屏幕每英寸点数,默认按系统换算 |
常用方法
| 方法 | 返回 | 说明 |
|---|---|---|
setUnits(units) | void | 切换单位制并立即重绘 |
setDpi(dpi) | void | 设置屏幕 DPI,影响像素到实际长度的换算 |
setMap(map) | void | 挂载到地图,通常由 addControl 调用 |
getElement() | Element | 取控件根元素,可用于自定义位置 |
var scaleLine = new ol.control.ScaleLine({
units: 'metric',
bar: true,
steps: 4,
text: true,
minWidth: 80
});
map.addControl(scaleLine);
scaleLine.setUnits('imperial'); // 切到英里制
注意事项
units: 'degrees'仅在视图投影为地理坐标时有意义,投影制视图下读数会失真。minWidth决定尺子的最小像素长度,取值过小会出现 1 米这种无意义的刻度。- 比例尺按屏幕 DPI 换算,投屏或打印场景下需要调
setDpi,否则实际长度与标注不符。 - 控件默认放在左下角,需要移动到别处时修改其容器样式,而不是重复添加控件。
经纬志(2026)。《ScaleLine》。https://www.jingweizhi.com/openlayers/api/scale-line.html(访问日期 2026-11-03)。