当前位置: 首页 > news >正文

onchange事件实现编辑_Openlayer——绘制可编辑几何要素

在GIS应用中,与地图交互是必不可少的,其中在地图上绘制几何要素是非常重要的功能。比如在周边搜索中,根据绘制的范围搜索其中包含的要素;在地图上绘制点、线、面等要素进行叠加分析,缓冲分析等;绘制线要素并测量距离,绘制面要素并测量面积等,都是在与地图进行交互。


openlayer作为主流的GIS开源库,其很好的实现了几何要素绘制,提供了几何要素绘制的接口ol.interaction.Draw。下面介绍一下绘制几何要素并编辑。


首先实例化一个矢量数据源和矢量图层,设置矢量图层样式并添加到地图容器中。

var source = new ol.source.Vector({        wrapX: false    });    var vector = new ol.layer.Vector({        source: source,        style: new ol.style.Style({            fill: new ol.style.Fill({                color: 'rgba(255, 255, 255, 0.5)'            }),            stroke: new ol.style.Stroke({                color: '#ff0000',                width: 2            }),            image: new ol.style.Circle({                radius: 7,                fill: new ol.style.Fill({                    color: '#ff0000'                })            })        })    });    map.addLayer(vector);

实例化要素编辑对象,通过接口ol.interaction.Modify实现,并指定可编辑的要素资源,同时加载到地图上。

var modify = new ol.interaction.Modify({        source: source    });    map.addInteraction(modify);

最后添加交互绘制几何要素的方法,实现几何要素的绘制并可编辑。

function addInteractions() {        if (source == null) {            source = new ol.source.Vector({                wrapX: false            });            vector.setSource(source);        }        draw = new ol.interaction.Draw({            source: source,            type: typeSelect.value        });        map.addInteraction(draw);        snap = new ol.interaction.Snap({source: source});        map.addInteraction(snap);    }    typeSelect.onchange = function () {        map.removeInteraction(draw);        map.removeInteraction(snap);        addInteractions();    };    addInteractions();

其中ol.interaction.Snap用于捕获几何要素,捕获到几何要素后便可以对几何要素进行编辑。


效果图如下所示:

c82a35b50042cbd6ad18322544a60ea7.png

相关文章:

  • Vue.js 基础学习 v-on 指令
  • python中多线程和多进程的区别_python 多线程和多进程的区别 mutiprocessing theading...
  • super关键字
  • c盘清理工具_学会这几招,让你的电脑从此告别C盘空间不足
  • Python 之 threading
  • c++自底向上算符优先分析_C语言运算符及其优先级汇总表口诀
  • dump分析工具_百因必有果,JVM调优(工具篇)建议收藏
  • java设计模式之代理模式模式总结
  • c语言左对齐_C语言经典100题(9)
  • Java连接SqlServer 2008数据库
  • 没有找到合适的方法来重写_你现在还没有女朋友?4个方法步骤,让你轻松快速找到女朋友...
  • Android JNI之数据类型
  • python爬带用户名密码的网页_Python爬虫带用户名密码登录
  • 醒醒吧少年,只用Cucumber不能帮助你BDD
  • gradle配置到阿里云_ESXI申请阿里云SSL证书并配置
  • JavaScript-如何实现克隆(clone)函数
  • android 一些 utils
  • angular学习第一篇-----环境搭建
  • C语言笔记(第一章:C语言编程)
  • Django 博客开发教程 8 - 博客文章详情页
  • js对象的深浅拷贝
  • Less 日常用法
  • React组件设计模式(一)
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • vue--为什么data属性必须是一个函数
  • 回顾2016
  • 免费小说阅读小程序
  • 前端性能优化--懒加载和预加载
  • 实现菜单下拉伸展折叠效果demo
  • 网络应用优化——时延与带宽
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 第二十章:异步和文件I/O.(二十三)
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (2)(2.10) LTM telemetry
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (二)linux使用docker容器运行mysql
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (五)Python 垃圾回收机制
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .Net 6.0 处理跨域的方式
  • .NET4.0并行计算技术基础(1)
  • .NET框架
  • .net中调用windows performance记录性能信息
  • @Conditional注解详解
  • @Responsebody与@RequestBody
  • [20180129]bash显示path环境变量.txt
  • [ACM] hdu 1201 18岁生日
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [BZOJ 3680]吊打XXX(模拟退火)