OpenLayers鼠标位置控件

一、示例简介

    使用鼠标位置控件(ol/control/MousePosition)来动态显示地图上鼠标光标的坐标

    并且可以由用户调整投影坐标精度

示例图如下所示:

二、代码详解

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Mouse Position</title>
    <link href="ol_v5.0.0/css/ol.css" rel="stylesheet" type="text/css" />
    <script src="ol_v5.0.0/build/ol.js" type="text/javascript"></script>
</head>
<body>
    <div id="map"></div>
    <div id="mouse-position"></div>
    <form>
        <label>Projection</label>
        <select id="projection">
            <option value="EPSG:4326">EPSG:4326</option>
            <option value="EPSG:3857">EPSG:3857</option>
        </select>
        <label>Precision</label>
        <input id="precision" type="number" min="0" max="12" value="4" />
    </form>
 
    <script>
        // 创建MousePosition控件
        var mousePositionControl = new ol.control.MousePosition({   
            coordinateFormat: ol.coordinate.createStringXY(4),      // 将坐标保留4位小数位,并转换为字符串
            projection: 'EPSG:4326',                                // 定义投影
            className: 'custom-mouse-position',                     // 控件的CSS类名
            target: document.getElementById('mouse-position'),      // 将控件渲染在该DOM元素中
            undefinedHTML: '&nbsp;'                                 // 鼠标离开地图时,显示空格
        });
 
        var map = new ol.Map({
            target: 'map',
            controls: ol.control.defaults().extend([mousePositionControl]),  // 将鼠标位置控件加入到地图默认控件中
            layers: [
                new ol.layer.Tile({
                    source: new ol.source.OSM()     // 加入Open Street Map图层
                })
            ],
            view: new ol.View({
                center: [0, 0],
                zoom: 2
            })
        });
 
        var projectionSelect = document.getElementById("projection");   // 选取投影的控件
        projectionSelect.addEventListener('change', function(event){
            // 使mousePositionControl控件的投影与选取投影控件选取的投影一致
            mousePositionControl.setProjection(event.target.value);    
        });
        
        var precisionInput = document.getElementById('precision');
        precisionInput.addEventListener('change', function(event){
            // 设置mousePositionControl控件的坐标格式
            var format = ol.coordinate.createStringXY(event.target.valueAsNumber);
            mousePositionControl.setCoordinateFormat(format);
        });
    </script>
</body>
</html>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值