首页 / OpenLayers / API 文档
MousePosition
先看结论
坐标显示控件。跟随鼠标位置输出坐标文本,可指定输出投影与数字格式。
new ol.control.MousePosition(options)
构造参数
| 参数 | 说明 |
|---|---|
className | 控件类名,默认 'ol-mouse-position' |
coordinateFormat | 坐标格式化函数,签名 (coordinate),返回字符串 |
projection | 输出用的投影,默认使用视图投影 |
placeholder | 首次定位前显示的占位文本,默认空串 |
undefinedHTML | 鼠标移出地图时显示的 HTML,默认不换行空格 |
wrapX | 是否横向循环取坐标,默认 false |
target | 控件挂载的容器元素或 id |
常用方法
| 方法 | 返回 | 说明 |
|---|---|---|
setProjection(projection) | void | 设置输出投影 |
getProjection() | Projection | 取当前输出投影 |
setCoordinateFormat(format) | void | 替换格式化函数 |
getCoordinateFormat() | function | 取当前格式化函数 |
map.addControl(new ol.control.MousePosition({
projection: 'EPSG:4326',
coordinateFormat: function (coordinate) {
return ol.coordinate.toStringXY(coordinate, 5);
},
undefinedHTML: ' '
}));
// 改成显示投影坐标并保留一位小数
map.getControls().forEach(function (control) {
if (control instanceof ol.control.MousePosition) {
control.setProjection('EPSG:3857');
control.setCoordinateFormat(function (c) {
return ol.coordinate.toStringXY(c, 1);
});
}
});
注意事项
- 设了
projection后传入格式化函数的坐标已是该投影下的值,再调toLonLat会重复换算。 - 不设
projection时输出视图投影坐标,3857 视图下得到的是米制数值而非经纬度。 - 鼠标移出地图时控件显示
undefinedHTML,该值按 HTML 解析,写纯文本时要转义尖括号。 - 坐标每次
pointermove都会更新,格式化函数里的计算应保持轻量,避免拖慢交互。
经纬志(2026)。《MousePosition》。https://www.jingweizhi.com/openlayers/api/mouse-position.html(访问日期 2026-11-03)。