iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue+Openlayer实现图形的拖动和旋转变形效果
  • 345
分享到

Vue+Openlayer实现图形的拖动和旋转变形效果

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

目录前言相关资料实现效果 实现步骤前言 openlayer 是有他自己的扩展插件 ol-ext,我们这里用他来实现图形的操作:拖拽、旋转、缩放、拉伸、移动等等功能,以及他的监听事件,

前言

openlayer 是有他自己的扩展插件 ol-ext,我们这里用他来实现图形的操作:拖拽、旋转、缩放、拉伸、移动等等功能,以及他的监听事件,毕竟我们作图以后是需要保存数据给后端,存到数据库的。

相关资料

1、ol-ext官方地址:入口

2、ol-ext 对应的资料地址:入口

3、ol-ext 源码gitee地址:入口

4、openlayers 最新官网:入口

5、openlayers 官网api:入口

实现效果

旋转、拖动

图1、实现效果

图2、旋转效果

图3、左右移动效果

 实现步骤

1、Vue中引入openlayers


npm i ol --save

附:npm下载指定版本命令,需要可以拿去


npm install --save-dev ol@6.9.0

2、vue中引入 openlayers的扩展包   ol-ext


npm install ol-ext --save

附:npm下载指定版本命令,需要可以拿去


npm install --save ol-ext@3.2.16

3、创建地图容器


<template>
  <div id="map" class="map"></div>
</template>

4、js中引入具体配置,根据你的具体改,我这里放的是我自己的

ol有关:


import "ol/ol.CSS";
import View from "ol/View";
import Map from "ol/Map";
import TileLayer from "ol/layer/Tile";
import Overlay from "ol/Overlay";
import XYZ from "ol/source/XYZ";
import { Vector as SourceVec ,Cluster,Vector as VectorSource } from "ol/source";
import { Feature } from "ol";
import { Vector as LayerVec , Vector as VectorLayer } from "ol/layer";
import { Point, LineString, PolyGon } from "ol/geom";
 
import {
    Style,
    Icon,
    Fill,
    Stroke,
    Text,
    Circle as CircleStyle,
  } from "ol/style";
  import { OSM, TileArcGISRest } from "ol/source";

ol-ext有关:


import ExtTransfORM from 'ol-ext/interaction/Transform'

5、实现地图方法:


data() {
      return {
        map: null,
        center: [116.39702518856394, 39.918590567855425], //北京故宫的经纬度
        centerSize: 11.5,
        projection: "EPSG:4326",
 
    }
}

mounted() {
  this.initMap()
}

methods: {
      //初始化地图
      initMap() {
        //渲染地图
        var layers = [
          //深蓝色背景
          // new TileLayer({
          //   source: new XYZ({
          //     url:
          //       "https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}",
          //   }),
          // }),
          //初始化背景
          // new TileLayer({
          //   source: new OSM(),
          // })
          new TileLayer({
            title: "街道图",
            source: new XYZ({
              url: "Http://localhost:8888/haoxing-map/sosomaps/roadmap/{z}/{x}/{y}.jpg",//zwh本地使用
            }),
          }),
        ];
 
        this.map = new Map({
          layers: layers,
          target: "map",
          view: new View({
            center: this.center,
            projection: this.projection,
            zoom: this.centerSize,
            maxZoom: 17,
            minZoom: 8,
          }),
        });
      },

6、地图上加上多边形数据


mounted() {
 this.initMap()
 this.createPolygon()
},

 methods: {    
 
    //创建多边形
    createPolygon() {
        //添加图层,并设置点范围
        const polygon = new Feature({
          geometry: new Polygon([
            [
              [116.39314093500519,40.0217660530101],
              [116.47762344990831,39.921746523871924],
              [116.33244947314951,39.89892653421418],
              [116.30623076162784,40.00185925352143],
            ]
          ]),
        })
        //设置样式
        polygon.setStyle(new Style({
          stroke: new Stroke({
            width: 4,
            color: [255, 0, 0, 1],
          }),
        }))
        //将图形加到地图上
        this.map.addLayer(new VectorLayer({
          source: new VectorSource({
            features: [polygon],
          }),
        }))
      },
 
}

7、地图上添加具体的操作方法和效果 


mounted() {
  this.initMap()
  this.createPolygon()
  this.onEdit()
},

//操作事件
onEdit() {
   const transform = new ExtTransform({
       enableRotatedTransform: false,
       hitTolerance: 2,
       translate: true, // 拖拽
       stretch: false, // 拉伸
       scale: true, // 缩放
       rotate: true, // 旋转
       translateFeature: false,
       noFlip: true,
       // layers: [],
    })
   this.map.addInteraction(transform)
 
 
  //开始事件
        transform.on(['rotatestart','translatestart'], function(e){
          // Rotation
          let startangle = e.feature.get('angle')||0;
          // Translation
          console.log(1111);
          console.log(startangle);
        });
  //旋转
        transform.on('rotating', function (e){
          console.log(2222);
          console.log("rotate: "+((e.angle*180/Math.PI -180)%360+180).toFixed(2));
          console.log(e);
        });
 //移动
        transform.on('translating', function (e){
          console.log(3333);
          console.log(e.delta);
          console.log(e);
 
        });
 //拖拽事件
        transform.on('scaling', function (e){
          console.log(4444);
          console.log(e.scale);
          console.log(e);
        });
  //事件结束
        transform.on(['rotateend', 'translateend', 'scaleend'], function (e) {
          console.log(5555);
        });
 
},

到此这篇关于Vue+Openlayer实现图形的拖动和旋转变形效果的文章就介绍到这了,更多相关Vue Openlayer内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue+Openlayer实现图形的拖动和旋转变形效果

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

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

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

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

下载Word文档
猜你喜欢
  • Vue+Openlayer实现图形的拖动和旋转变形效果
    目录前言相关资料实现效果 实现步骤前言 openlayer 是有他自己的扩展插件 ol-ext,我们这里用他来实现图形的操作:拖拽、旋转、缩放、拉伸、移动等等功能,以及他的监听事件,...
    99+
    2024-04-02
  • Vue+Openlayer如何实现图形的拖动和旋转变形效果
    这篇文章主要介绍Vue+Openlayer如何实现图形的拖动和旋转变形效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实现效果旋转、拖动图1、实现效果图2、旋转效果图3、左右移动效果 实现步骤vue中引入...
    99+
    2023-06-21
  • CSS变形:如何实现元素的旋转效果
    CSS变形:如何实现元素的旋转效果,需要具体代码示例在网页设计中,动画效果是提高用户体验和吸引用户注意力的重要方式之一,而旋转动画是其中比较经典的一种。在CSS中,使用“transform”属性可以实现元素的各种变形效果,包括旋转。本文将详...
    99+
    2023-11-21
    CSS旋转 元素 变形
  • Vue Echarts实现带滚动效果的柱形图
    本文实例为大家分享了Vue Echarts实现带滚动效果柱形图的具体代码,供大家参考,具体内容如下 代码 <template>   <div class="time...
    99+
    2024-04-02
  • vue实现3D环形图效果
    本文实例为大家分享了vue实现3D环形图效果的具体代码,供大家参考,具体内容如下 1.引入highcharts 2.main.js引入highcharts import highch...
    99+
    2024-04-02
  • HTML怎么画出弧线旋转的图形效果
    这篇文章主要介绍了HTML怎么画出弧线旋转的图形效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇HTML怎么画出弧线旋转的图形效果文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • CSS中怎么实现一个图形变形弹出效果
    CSS中怎么实现一个图形变形弹出效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。弹出窗体是网页常用的一个交互设计,在这个注重交互动画体验...
    99+
    2024-04-02
  • vue如何实现3D环形图效果
    这篇文章主要介绍“vue如何实现3D环形图效果”,在日常操作中,相信很多人在vue如何实现3D环形图效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue如何实现3D环形图效果”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • css3如何实现圆形转动的效果
    这篇文章主要介绍“css3如何实现圆形转动的效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“css3如何实现圆形转动的效果”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • HTML5 canvas怎么实现图形变换效果
    这篇文章主要介绍“HTML5 canvas怎么实现图形变换效果”,在日常操作中,相信很多人在HTML5 canvas怎么实现图形变换效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • Android如何实现自定义View圆形和拖动圆、跟随手指拖动效果
    小编给大家分享一下Android如何实现自定义View圆形和拖动圆、跟随手指拖动效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!单纯的自定义一个圆非常简单 只需要几步就完成 拖动圆添加实现触摸事件即可我在第一次自定义Vi...
    99+
    2023-05-30
    android view
  • css3中怎么实现图形3d翻转效果
    css3中怎么实现图形3d翻转效果,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。<!DOCTYPE html&...
    99+
    2024-04-02
  • 基于vue+openlayer实现地图聚合和撒点效果
    目录前言:实现效果:1、聚合效果:2、撒点效果:具体实现步骤:1、项目中引入openlayer2、配置(按需引入)3、实现地图展示4、撒点功能5、聚合效果前言: openlayer是...
    99+
    2024-04-02
  • CSS3 如何实现图形下落动画效果
    这篇文章主要讲解了“CSS3 如何实现图形下落动画效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS3 如何实现图形下落动画效果”吧!先看效果实现代码<div clas...
    99+
    2023-06-08
  • css3代码如何实现图形3d翻转效果
    这篇“css3代码如何实现图形3d翻转效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“css3代码如何实现图形3d翻转效果...
    99+
    2023-07-04
  • CSS绘制:如何实现简单的渐变图形效果
    CSS绘制:实现简单的渐变图形效果在网页设计中,渐变图形效果是一种常见的视觉元素,可以为网站增添吸引人的外观和体验。在CSS中,我们可以利用渐变效果轻松地实现各种图形的渐变效果,包括矩形、圆形、文字等。本文将介绍如何使用CSS来实现简单的渐...
    99+
    2023-11-21
    图形 绘制 CSS渐变
  • python matplotlib实现条形图的填充效果
    本文实例为大家分享了python matplotlib实现条形图填充效果的具体代码,供大家参考,具体内容如下 写专利用的python里面的matplotlib画的条形图 ,最开始用的...
    99+
    2024-04-02
  • css旋转动画效果的实现方法
    这篇文章主要讲解了“css旋转动画效果的实现方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css旋转动画效果的实现方法”吧!我们可以通过css来做出动画...
    99+
    2024-04-02
  • CSS绘制:如何实现简单的动态图形效果
    CSS绘制:如何实现简单的动态图形效果引言:在前端开发中,我们常常需要对网页进行一些动态的图形效果进行美化和交互增强。而CSS绘制是一种简单而强大的方式,可以实现各种各样的动态图形效果。本文将介绍一些常见的简单动态图形效果,并给出具体的代码...
    99+
    2023-11-21
    CSS动画:利用CSS实现动态效果
  • html5怎么实现图片的3D旋转效果
    本篇内容主要讲解“html5怎么实现图片的3D旋转效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5怎么实现图片的3D旋转效果”吧!   完整代码如...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作