openlayers学习之绘制点线多边形和矩形(四)

一、构建下拉框

首先构建一个简单的下拉框,下拉框包含点线多边形和矩形四个类型的元素,每一个option的value对应在openlayers中的value。

<select id="type" style="position: absolute;right: 20px;top: 60px;z-index: 20;width: 100px;height: 30px" title="图形绘制" onchange="selectDraw(this.value)">
    <option value="Point">点</option>
    <option value="LineString">线</option>
    <option value="Polygon">多边形</option>
    <option value="Box">矩形</option>
</select>

二、定义全局变量

定义全局的变量draw和vector,方便我们进行控制。

var draw;// global so we can remove it later
var vector;

三、创建绘制函数

//选择下拉框进行绘制
selectDraw(document.getElementById("type").value);			//页面初始化后即激活图形绘制函数
function selectDraw(value) {
    map.removeInteraction(draw);			//每次执行先取消上一次的绘制动作
    map.removeLayer(vector);					//每次执行先移除上一次的vector图层
    var source = new ol.source.Vector();		
    vector = new ol.layer.Vector({					//定义vector图层,将绘制的图形加入到vector图层,叠加在地图上展示
        source: source
    });
    if (value !== 'None') {
        var geometryFunction;
        if (value === 'Box') {
            value = 'Circle';						//绘制矩形需将value值设为Circle
            geometryFunction = ol.interaction.Draw.createBox();				//绘制矩形
            draw = new ol.interaction.Draw({
                source: source,
                type: value,
                geometryFunction: geometryFunction
            });
        }else{
            draw = new ol.interaction.Draw({
                source: source,
                type: value						//对应option的value值
            });
        }
        map.addInteraction(draw);
        map.addLayer(vector);
    }
}

最终结果如下(颜色有点不明显,凑合看吧,懒得改样式了):
在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值