openlayers学习之自由绘画样式

358 阅读1分钟

openlayers学习之自由绘画样式,与上一遍文章实现的稍微有点相同,不过同系列的事件的功能也不一样

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>自由绘制</title>
    <script src="./v5.3.0-dist/v5.3.0-dist/ol.js"></script>
    <link rel="stylesheet" href="./v5.3.0-dist/v5.3.0-dist/ol.css">
    <style>
        html,
        body {
            width: 100%;
            height: 100%;
        }

        #map {
            width: 100%;
            height: 100%;
        }
    </style>
</head>

<body>
    <label for="type">选择绘画样式:</label>
    <select id="type">
        <!-- 一个select选择框选择画绘画的样式 -->
        <option value="LineString">线条</option>
        <option value="Polygon">多边形</option>
        <option value="Circle">圆</option>
        <option value="None">无</option>
    </select>
    <!-- 定义一个地图的容器 -->
    <div id="map">

    </div>
    <script>
        // 生成一个地图的类
        var map = new ol.Map({
            target: 'map',
            layers: [
                new ol.layer.Tile({
                    source: new ol.source.OSM()
                })
            ],
            view: new ol.View({
                center: [108.93060745, 34.16138567],
                projection: 'EPSG:4326',
                zoom: 10
            })
        })
        // 新建一个图层
        var vectorLayer = new ol.layer.Vector({
            source: new ol.source.Vector({
                wrapX: false
            })
        })
        // 将图层添加到地图上
        map.addLayer(vectorLayer)
        // 获取选择框的值

        var type = document.getElementById('type')
        // 定义一个变量,用来存放绘画的点
      
        let draws;
        // 声明一个工具类

        function addInteraction() {
            // 拿到选择框的值

            let value = type.value;
            // 开始进行判断

            if (value != "None") {
                // 绘画
                draws = new ol.interaction.Draw({
                    source: vectorLayer.getSource(),
                    type: value,
                })
                // 添加交互
                map.addInteraction(draws)
            }

        }
        // 选项改变时触发的事件
        type.onchange = function () {
            // 删除绘画的交互

            map.removeInteraction(draws)
        // 调用工具类

            addInteraction()
        }
        // 调用工具类
        
        addInteraction();
        // type 规定绘画的类型,可以是点、线、面或多边形。
        //     // type:"LineString", 划线,直线,一条线
        //     // type: 'MultiLineString',  画出多种线来,折线
        //     type: "Polygon",    //画出多边形,多边形
        //     // type:'Circle',   //画出的是一个圆
        //     freehand: true,



    </script>

</body>

</html>