OpenLayers3实现鼠标移动显示坐标

作者:百宝袋时间:2026-10-23 22:16:43浏览:188

本文介绍如何在OpenLayers3中利用ol.control.MousePosition控件实现鼠标移动时显示坐标信息。通过自定义CSS样式和配置投影、格式等参数,可将坐标显示在地图任意位置,如左下角。

本文分享了一个使用OpenLayers3实现鼠标移动时显示坐标的具体代码示例,供读者参考。

前言

1. 前言

OpenLayers 3框架内置了鼠标位置显示控件(ol.control.MousePosition),默认位于地图右上角,且支持自定义样式。本例基于加载OSM瓦片图层,演示如何将坐标信息显示在地图容器的左下角。

实现思路

2. 实现思路

(1)新建网页,参考前文加载OSM瓦片地图的方法完成地图加载。 (2)在地图容器中创建一个div用于展示坐标信息,设置其样式并通过z-index属性使其显示在地图图层之上。 (3)实例化鼠标位置控件(ol.control.MousePosition),根据需求配置参数,包括坐标系(projection)、坐标显示格式(coordinateFormat)以及关联的目标容器(target)。 (4)将控件加载至地图。可在实例化Map对象时通过controls参数添加,或调用map对象的addControl方法加载。

代码实现

3. 实现代码如下:

html:


<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="UTF-8">
 <title>鼠标移动显示坐标信息</title>
 <link rel="stylesheet" href="css/bootstrap.min.css" >
 <link rel="stylesheet" href="css/ol.css" >
 <link rel="stylesheet" href="css/ZoomSlider.css" >
 <script src="js/ol.js"></script>
 <script src="js/MousePosition.js"></script>
 <style>
 #map {
  width: 100%;
  height: 100%;
  position: absolute;
 }

 #mouse-position {
  float: left;
  position: absolute;
  bottom: 5px;
  width: 200px;
  height: 20px;
  /* 将z-index设置为显示在地图上层 */
  z-index: 2000;
 }
 /* 显示鼠标信息的自定义样式设置 */

 .custom-mouse-position {
  color: red;
  font-size: 16px;
  font-family: "微软雅黑";
 }
 </style>
</head>

<body onload="init()">
 <div id="map">
 <div id="mouse-position"></div>
 </div>
</body>

</html>

HTML代码解析

代码解析:

在地图容器中创建div用于显示坐标,并设置其样式。该div作为鼠标位置控件的最外层容器,内部包含显示鼠标信息的文本标签,默认类名为ol-mouse-position,也可自定义。例如,此处修改了字体大小和颜色等属性。

JavaScript代码解析

js代码:


function init() {
 // 实例化鼠标位置控件
 var mousePositionControl = new ol.control.MousePosition({
 coordinateFormat: ol.coordinate.createStringXY(4), //坐标格式
 projection: 'EPSG:4326', //地图投影坐标系
 className: 'custom-mouse-position', //坐标信息显示样式
 // 显示鼠标位置信息的目标容器
 target: document.getElementById('mouse-position'),
 undefinedHTML: '&nbsp' //未定义坐标的标记
 });


 // 实例化Map对象加载地图
 var map = new ol.Map({
 target: 'map', //地图容器div的id
 layers: [ //地图容器加载的图层
  new ol.layer.Tile({ //加载瓦片图层数据
  source: new ol.source.OSM() //数据源,加载OSM数据
  })
 ],
 view: new ol.View({
  center: [102, 35],
  zoom: 3
 }),
 // 加载控件到地图容器中
 // 加载鼠标位置控件
 controls: ol.control.defaults().extend([mousePositionControl])
 });
}

代码解析

(1)coordinateFormat:定义坐标值的显示格式。 (2)projection:指定投影坐标系,将鼠标位置的坐标点转换为指定坐标系下的值进行显示。 (3)target:关联显示坐标信息的目标容器,即最外层容器元素,此处为id为mouse-position的div。 (4)className:定义坐标信息显示的样式类名,即自定义的样式类名custom-mouse-position。

实现效果如下:

前言

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

作者最新文章