广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue使用openlayers实现绘制圆形和多边形
  • 122
分享到

Vue使用openlayers实现绘制圆形和多边形

2024-04-02 19:04:59 122人浏览 泡泡鱼
摘要

目录绘制圆形绘制多边形绘制编辑多边形完成绘制这个地方我就简单点写吧,因为一些东西比较乱,有的包啥的就按照官网api开发文档根据报错提示自己添加就可以了,我这个地方就不重复写了。 绘制

这个地方我就简单点写吧,因为一些东西比较乱,有的包啥的就按照官网api开发文档根据报错提示自己添加就可以了,我这个地方就不重复写了。

绘制圆形

这里的绘制圆是指当后台返回数据,告诉你以某个经纬度坐标为圆心,或者是顶点,以 r 为半径绘制,不是鼠标手动绘制。

首先绘制圆,首先有一个数据源和一个图层来存放绘制的圆形,这个很简单。然后创建变量自己该就可以,我估计都搞openlayer了,这些基础应该不至于不知道,我这边就写关键代码,我想应该没问题,我用的是默认3857坐标,不是4326。

sourcePoint = new VectorSource()   // 创建数据源
layerPoint = new VectorLayer({     // 创建图层
    zIndex: 1,   // 图层的层级
})
layerPoint.setSource(sourcePoint)  // 把数据源绑定到图层上面
map.addLayer(layerPoint)  // 把图层添加到地图上面去

好的,通过上面的代码实现了创建一个图层在地图上来放置绘制的圆形。

接下来就是向这个数据源去添加圆形,这个呢,还是嘛,和我之前写的博客差不多,那几部分相互嵌套,我还是把图在贴一下吧,这个图是大佬整理的,我直接拿来用了。

通过上面图看,刚刚我们做的,往地图上添加 layer 图层完成了,向 layer 添加 source 数据源也完成了。下一步就是往 source 中添加 feature 了。

	  // 绘制圆形
      addCircle() {
        let feature = new Feature({
          title: 'beijing',
          geometry: new Circle(fromLonLat([116.400819, 39.916263]), this.getRadius(500)),  // 创建 以[116.400819, 39.916263]为圆心,500米为半径的圆,但是这个半径不是很准,没解决了
        })
        feature.setStyle(
          new Style({
            fill: new Fill({
              color: 'rgba(32, 157, 230, 0.5)'
            })
          })
        )
        sourcePoint .addFeatures([feature])
      },

上边代码就是实现了在地图上以某点,某半径绘制一个圆形,但是半径不是很准确,如果有大佬解决了半径不准确的问题希望帮忙指点一下。

绘制多边形

这个地方说的绘制多边形是指鼠标手动绘制,绘制完成可以获得鼠标绘制多边形的顶点坐标。

绘制

首先绘制和上面一样,只要是图层,就哪几层才能显示在地图上,所以呢,先创建图层、数据源添加到地图,然后呢,因为是鼠标绘制,所以说需要设置一下绘制完成的多边形在地图上什么样式,然后在一个就是添加鼠标交互的工具,所以说就是下面的代码。

		source = new VectorSource();
        vector = new VectorLayer({
          source: source,
          style: new Style({
            fill: new Fill({
              color: 'rgba(255, 255, 255, 0.2)',
            }),
            stroke: new Stroke({
              color: '#ffcc33',
              width: 3,
            }),
            image: new CircleStyle({
              radius: 3,
              fill: new Fill({
                color: '#ffcc33',
              }),
            }),
          }),
        });
        map.addLayer(vector)
        modify = new Modify({ source: source });
        snap = new Snap({ source: source });
        draw = new Draw({
          source: source,
          type: 'PolyGon',
        });

上边代码呢,实现了图层初始化和交互工具的初始化,接下来就是鼠标绑定事件绘制。

	map.addInteraction(modify);
        map.addInteraction(draw);
        map.addInteraction(snap);
        draw.on('drawend', e => {//绘画完成触发时间
          const geometry = e.feature.getGeometry()
          const corrdinates = geometry.getCoordinates()
          let points = []
          corrdinates[0].forEach(item => {
            let xy = transfORM(item, 'EPSG:3857', 'EPSG:4326')  // 转换成经纬度坐标
            points.push(xy)
          })
          this.$message.success('顶点坐标是:' + JSON.stringify(points))
          map.removeInteraction(draw);  //移除交互
          map.removeInteraction(snap);  //移除交互
          map.removeInteraction(modify);  //移除交互
        });

编辑多边形

再次编辑的话,这个就很简单了,上一步不是移除了三个吗?第一个是鼠标绘制,编辑的时候除了鼠标绘制,其他两个移除的交互再加上就可以了。

map.addInteraction(modify);
map.addInteraction(snap);

完成绘制

绘制完成的话,在移除交互工具,然后重新获取一下顶点坐标列表就可以了。

	map.removeInteraction(draw);//移除绘画互动
        map.removeInteraction(snap);//移除绘画互动
        map.removeInteraction(modify);//移除绘画互动
        let feature = source.getFeatures()[0]
        const geometry = feature.getGeometry()
        const corrdinates = geometry.getCoordinates()
        let points = []
        corrdinates[0].forEach(item => {
          let xy = transform(item, 'EPSG:3857', 'EPSG:4326')
          points.push(xy)
        })
        this.$message.success('顶点坐标是:' + jsON.stringify(points))

这里不贴图了

到此这篇关于Vue使用openlayers实现绘制圆形和多边形 的文章就介绍到这了,更多相关Vue openlayers绘制圆形 多边形内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue使用openlayers实现绘制圆形和多边形

本文链接: https://www.lsjlt.com/news/151856.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue使用openlayers实现绘制圆形和多边形
    目录绘制圆形绘制多边形绘制编辑多边形完成绘制这个地方我就简单点写吧,因为一些东西比较乱,有的包啥的就按照官网API开发文档根据报错提示自己添加就可以了,我这个地方就不重复写了。 绘制...
    99+
    2022-11-13
  • Openlayers实现根据半径绘制圆形
    目录期望效果写在前面绘制圆形添加圆形标识绘制连线标注距离实现一个什么效果呢,就是在openlayers上面,绘制三个圆形,绘制完成之后,三个圆心连接起来,然后标记出每两个圆心之间的距...
    99+
    2022-11-13
  • 基于Cesium实现绘制圆形,正方形,多边形,椭圆图形标注
    目录官方案例绘制矩形绘制多边形绘制椭圆绘制圆形绘制立方体绘制椭圆柱体绘制多边柱体绘制圆柱体立体串串好难形容 又平面又立体的板板“回”字绘制立方体,扭转一定角度...
    99+
    2022-11-13
  • 使用python中的turtle库绘制常见图形(三角形、正方形、五边形、六边形、圆、同心圆、边切圆、奥运五环)
    使用python中的turtle库绘制常见图形 前言 本文主要介绍一些python的turtle库中绘制常见图形的方法,如三角形、正方形、五边形、圆。还有奥运五环、同心圆、边切圆、蟒蛇等图形的画法。 ...
    99+
    2023-09-29
    python 开发语言 pycharm
  • opencv绘制矩形和圆的实现
    目录 绘制图形绘制矩形绘制圆 绘制图形 利用opencv提供的绘制图形api可以轻松在图像上绘制各种图形,比如直线,矩形,圆,椭圆等图形。 line(img,pt...
    99+
    2023-02-16
    opencv绘制矩形和圆 opencv绘制矩形 opencv绘制圆
  • Flutter绘制3.4边形及多边形渐变动画实现示例
    目录正文绘制3.4边形整数边形的绘制分数边形的绘制具体代码效果改进1效果改进2正文 项目被优化了,人也跟着被优化了,正好趁这一个月整理整理关于flutter的一些东西。 绘制3.4边...
    99+
    2022-11-13
    Flutter绘制3.4边形渐变动画 Flutter绘制渐变动画
  • 怎么用HTML5 Canvas绘制三角形和矩形等多边形
    本篇内容介绍了“怎么用HTML5 Canvas绘制三角形和矩形等多边形”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够...
    99+
    2022-10-19
  • Vue结合openlayers按照经纬度坐标实现锚地标记及绘制多边形区域
    目录前言1.安装openlayers2.引入模块3.地图与弹窗html样式4.data数据定义5.methods方法6.mounted数据加载7.锚地数据获取前言 本文介绍vue结合...
    99+
    2022-11-13
  • 使用c++实现OpenCV绘制圆端矩形
    功能函数 // 绘制圆端矩形(药丸状,pill) void DrawPill(cv::Mat mask, const cv::RotatedRect &rotatedre...
    99+
    2022-11-12
  • 使用Canvas如何绘制一个多边形
    使用Canvas如何绘制一个多边形?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。function drawPolygonPath(sideNum,&n...
    99+
    2023-06-09
  • 如何使用css实现圆角图形绘制
    本篇内容介绍了“如何使用css实现圆角图形绘制”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!htmlXML...
    99+
    2022-10-19
  • 如何使用html5绘制圆形多角图案
    本篇文章为大家展示了如何使用html5绘制圆形多角图案,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。先看看最简单的效果图:代码如下:JavaScript Code复...
    99+
    2022-10-19
  • 使用c++实现OpenCV绘制旋转矩形图形
    目录功能函数测试代码测试效果  功能函数 // 绘制旋转矩形 void DrawRotatedRect(cv::Mat mask,const cv::RotatedRe...
    99+
    2022-11-12
  • js+canvas实现可自动吸附闭合的鼠标绘制多边形
    本文实例为大家分享了js+canvas实现鼠标绘制多边形的具体代码,可自动吸附闭合,供大家参考,具体内容如下 效果图: 完整代码:(记得引入jQuery) <!DOCTYPE...
    99+
    2022-11-13
  • 怎么使用js+canvas实现可自动吸附闭合的鼠标绘制多边形
    这篇文章主要介绍“怎么使用js+canvas实现可自动吸附闭合的鼠标绘制多边形”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用js+canvas实现可自动吸附闭合的鼠标绘制多边形”文章能帮助大...
    99+
    2023-07-02
  • 怎么用python turtle绘制多边形和跳跃和改变速度特效
    今天小编给大家分享一下怎么用python turtle绘制多边形和跳跃和改变速度特效的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2023-06-29
  • 怎么使用threejs实现实时多边形折射
    这篇文章将为大家详细讲解有关怎么使用threejs实现实时多边形折射,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JavaScript的特点1.JavaScript主要用来向HTML页面添加交互行为。2....
    99+
    2023-06-14
  • vue使用SVG实现圆形进度条音乐播放
    最近在使用vue做仿网易云音乐的项目,遇到了圆形进度条实现音乐播放的功能,所以我在这里总结一下,分享给大家我的实现方法。我这里主要是通过SVG的方式实现的。 效果图: 实现过程 一...
    99+
    2022-11-13
  • 使用matplotlib怎么实现一个多边形选区功能
    本篇文章为大家展示了使用matplotlib怎么实现一个多边形选区功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。多边形选区概述多边形选区是一种常见的对象选择方式,在一个子图中,单击鼠标左键即构建...
    99+
    2023-06-06
  • 怎么使用vue+echarts绘制折线图、柱状图和扇形图
    这篇“怎么使用vue+echarts绘制折线图、柱状图和扇形图”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用vue+...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作