经纬志
首页 / OpenLayers / API 文档

MousePosition

先看结论

坐标显示控件。跟随鼠标位置输出坐标文本,可指定输出投影与数字格式。

最后验证 2026-11-03 · OpenLayers 10.3.1 · 更新 2026-10-27 · 引用本文
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)。