返回顶部
首页 > 资讯 > 精选 >vue怎么使用AIlabel标注组件
  • 711
分享到

vue怎么使用AIlabel标注组件

2023-06-30 01:06:49 711人浏览 八月长安
摘要

这篇“Vue怎么使用ailabel标注组件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue怎么使用AIlabel标注组件

这篇“Vue怎么使用ailabel标注组件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue怎么使用AIlabel标注组件”文章吧。

1.下载组件

npm i ailabel

2.下载完成后vue页面标签页面代码

这个是需要渲染的盒子

<div id="hello-map" ></div>

需要操作的盒子是 setMode这个是触发方法 RECT这个代表是矩形形状

 <div class="box" @click="setMode('RECT')" >矩形</div>

3.js 代码

 import AILabel from "ailabel";data() {    return {      img:require("../assets/img/homepage/bj.jpg"),      gMap: null, //AILabel实例      gFirstFeatureLayer: null, //矢量图层实例(矩形,多边形等矢量)      //矩形样式      RectStyle: {        lineWidth: 1.5, //边框宽度        strokeStyle: "", //边框颜色        fill: true, //是否填充背景色        fillStyle: "rgba(255,255,255,0.1)", //背景颜色      },    };  },//初始化 标注工具并渲染  initMap() {      // npm i ailabel      let drawingStyle = {}; // 绘制过程中样式        const gMap = new AILabel.Map('hello-map', {            center: {x: 350, y: 210}, // 为了让图片居中            zoom: 705,            mode: 'PAN', // PAN 可以平移和放大缩小   ban  可以平移             refreshDelayWhenZooming: true, // 缩放时是否允许刷新延时,性能更优            zoomWhenDrawing: true,            panWhenDrawing: false,            zoomWheelRatio: 5, // 控制滑轮缩放缩率[0, 10), 值越小,则缩放越快,反之越慢            withHoTKEys: true // 关闭快捷键        });                // 图片层添加        const gFirstImageLayer = new AILabel.Layer.Image(            'layer-image', // id            {                src: require('../assets/img/homepage/bj.jpg'),                width:700,                height: 500,                crossOrigin: false, // 如果跨域图片,需要设置为true                position: { // 左上角相对中心点偏移量                    x: 0,                    y: 0                },            }, // imageInfo            {name: '第一个图片图层'}, // props            {zIndex: 5} // 这里写样式 层级        );        // click单击事件 这里可以直接修改单击触发 比如如果没触发可以直接把事件放进来写成单击一个点渲染        gMap.events.on('click', point => {            console.log('--click--', point);        });        // data 代表r半径shape;data1代表sr半径shape        gMap.events.on('drawDone', (type, data, data1) => {            if (type === 'MARKER') {                const marker = new AILabel.Marker(                    `${+new Date()}`, // id                    {                        src: '',                        position: data,                        offset: {                            x: 0,                            y:0                        }                    }, // markerInfo                    {name: '第一个marker注记'} // props                );                marker.events.on('click', marker => {                    gMap.markerLayer.removeMarkerById(marker.id);                });                gMap.markerLayer.addMarker(marker);            }            else if (type === 'POINT') {              // 创建图层 然后实例在图片上                const pointFeature = new AILabel.Feature.Point(                    `${+new Date()}`, // id                    data, // shape                    {name: '第一个矢量图层'}, // props                   {fillStyle: '#00f'} // style                );                gFirstFeatureLayer.addFeature(pointFeature);            }            // else if (type === 'CIRCLE') {            //     // data 代表r半径shape;data1代表sr半径shape            //     const circleFeature = new AILabel.Feature.Circle(            //         `${+new Date()}`, // id            //         data, // data1代表屏幕坐标 shape            //         {name: '第一个矢量图层'}, // props            //         {fillStyle: '#F4A460', strokeStyle: '#D2691E', lineWidth: 2} // style            //     );            //     gFirstFeatureLayer.addFeature(circleFeature);            // }            else if (type === 'LINE') {                const scale = gMap.getScale();                const width = drawingStyle.lineWidth / scale;                const lineFeature = new AILabel.Feature.Line(                    `${+new Date()}`, // id                    {...data, width}, // shape                    {name: '第一个矢量图层'}, // props                    drawingStyle // style                );                gFirstFeatureLayer.addFeature(lineFeature);            }            else if (type === 'POLYLINE') {                const scale = gMap.getScale();                const width = drawingStyle.lineWidth / scale;                const polylineFeature = new AILabel.Feature.Polyline(                    `${+new Date()}`, // id                    {points: data, width}, // shape                    {name: '第一个矢量图层'}, // props                    drawingStyle // style drawingStyle 这里可以改变图形或者线的颜色 动态赋值                );                gFirstFeatureLayer.addFeature(polylineFeature);            }            else if (type === 'RECT') {                const rectFeature = new AILabel.Feature.Rect(                    `${+new Date()}`, // id                    data, // shape                    {name: '矢量图形'}, // props                    {fillStyle: '#F4A460', strokeStyle: '#D2691E', lineWidth: 2} // style                );                gFirstFeatureLayer.addFeature(rectFeature);            }            else if (type === 'POLYGoN') {                const polygonFeature = new AILabel.Feature.Polygon(                    `${+new Date()}`, // id                    {points: data}, // shape                    {name: '矢量图形'}, // props                   {strokeStyle: '#00f', fillStyle: '#0f0', globalAlpha: .1, lineWidth: 1, fill: true, } // style fill 图形中阴影 globalAlpha 阴影的显示程度 strokeStyle 线的颜色 fillStyle 阴影的颜色                 );                           });        // 视野范围发生变化        gMap.events.on('boundsChanged', data => {            // console.log('--map boundsChanged--');            return 2222;        });        // 在绘制模式下双击feature触发选中        gMap.events.on('featureSelected', feature => {            this.getid(feature.id)            // gMap.setActiveFeature(feature);        });        gMap.events.on('featureUnselected', () => {            // 取消featureSelected            gMap.setActiveFeature(null);        });        gMap.events.on('featureUpdated', (feature, shape) => {            feature.updateShape(shape);             const markerId = feature.props.deleteMarkerId;            const targetMarker = gMap.markerLayer.getMarkerById(markerId);            targetMarker.updatePosition(feature.getPoints()[1]);        });        gMap.events.on('featureDeleted', ({id: featureId}) => {            gFirstFeatureLayer.removeFeatureById(featureId);        });                   // 图片层相关事件监听        gFirstImageLayer.events.on('loadStart', (a, b) => {            console.log('--loadStart--', a, b);        });        gFirstImageLayer.events.on('loadEnd', (a, b) => {            console.log('--loadEnd--', a, b);        });        gFirstImageLayer.events.on('loadError', (a, b) => {            console.log('--loadError--', a, b);        });        // 添加到gMap对象        gMap.addLayer(gFirstImageLayer);                const gFirstFeatureLayer = new AILabel.Layer.Feature(            'first-layer-feature', // id            {name: '第一个矢量图层'}, // props            {zIndex: 10} // style        );        gMap.addLayer(gFirstFeatureLayer);     const gFirstTextLayer = new AILabel.Layer.Text(            'first-layer-text', // id            {text:'这是一给文字',position: {x: 300, y: 300}},            {name: '第一个文本图层'}, // props            {fillStyle: '#F4A460', strokeStyle: '#D2691E', background: true, globalAlpha: 1, fontColor: '#0f0'} // style            );            gMap.addLayer(gFirstTextLayer);             //自适应      this.gFirstFeatureLayer = gFirstFeatureLayer;      this.gMap = gMap;      window.onresize = function () {        gMap && gMap.resize();      };    }, // 触发 工具功能 类型会自动触发工具内对应渲染的图形      setMode(mode) {            this.gMap.setMode(mode);            //  动态颜色可以在这里赋值 精确到某一个操作            var drawingStyle            // 后续对应模式处理            switch (mode) {                case 'PAN': {                    break;                }                case 'MARKER': {                    // 忽略                    break;                }                case 'POINT': {                    drawingStyle = {fillStyle: '#9370DB',strokeStyle:'#f00'};                    this.gMap.setDrawingStyle(drawingStyle);                    break;                }                // case 'CIRCLE': {                //     drawingStyle = {fillStyle: '#9370DB', strokeStyle: '#f00', lineWidth: 2};                //     this.gMap.setDrawingStyle(drawingStyle);                //     break;                // }                case 'LINE': {                    drawingStyle = {strokeStyle: '#FF0000', lineJoin: 'round', lineCap: 'round', lineWidth: 5, arrow: false};                    this.gMap.setDrawingStyle(drawingStyle);                    break;                }                case 'POLYLINE': {                    drawingStyle = {strokeStyle: '#FF1493', lineJoin: 'round', lineCap: 'round', lineWidth: 1}                    this.gMap.setDrawingStyle(drawingStyle);                    break;                }                case 'RECT': {                    drawingStyle = {strokeStyle: '#f00', lineWidth: 1}                    this.gMap.setDrawingStyle(drawingStyle);                    break;                }                case 'POLYGON': {                    drawingStyle = {strokeStyle: '#00f', fillStyle: '#0f0', globalAlpha: .3, lineWidth: 1, fill: true, stroke: true}                    this.gMap.setDrawingStyle(drawingStyle);                    break;                }                // case 'DRAWMASK': {                //     drawingStyle = {strokeStyle: 'rgba(255, 0, 0, .5)', fillStyle: '#00f', lineWidth: 50}                //     this.gMap.setDrawingStyle(drawingStyle);                //     break;                // }                // case 'CLEARMASK': {                //     drawingStyle = {fillStyle: '#00f', lineWidth: 30}                //     this.gMap.setDrawingStyle(drawingStyle);                //     break;                // }                case 'TEXT': {                    drawingStyle = {fillStyle: '#00f', lineWidth: 30}                    this.gMap.setDrawingStyle(drawingStyle);                    break;                }                default:                    break;            }        },

4.个人思路进行一些针对性的操作

     //  全部清空        del(){          this.gMap.removeAllLayers();          this.initMap()        },        // 双击删除当前图形 这里是直接一次删一个图形 也可以根据坐标删除上一次操作        getid(id){            let index =  this.gFirstFeatureLayer.features.findIndex((ele) => {                return ele.id == id;                });              this.gFirstFeatureLayer.features.splice(index,1)             this.gMap.resize();        },        // 撤回上一步        dels(){          this.gFirstFeatureLayer.features.splice(this.gFirstFeatureLayer.features.length-1,1)          this.gMap.resize();        }

以上就是关于“vue怎么使用AIlabel标注组件”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: vue怎么使用AIlabel标注组件

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

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

猜你喜欢
  • vue怎么使用AIlabel标注组件
    这篇“vue怎么使用AIlabel标注组件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue怎么使用AIlabel标注组件...
    99+
    2023-06-30
  • vue如何使用AIlabel标注组件
    目录1.下载组件2.下载完成后vue页面标签页面代码3.js 代码4.个人思路进行一些针对性的操作本人也是第一次使用这个组件,因为项目需要使用标注图片功能,我就在网上看到了这个组件。...
    99+
    2024-04-02
  • vue中怎么注册组件
    vue中怎么注册组件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、全局注册(这种方式注册组件必须在vue实例化之前声明)Vue.compo...
    99+
    2024-04-02
  • vue组件库怎么使用
    今天小编给大家分享一下vue组件库怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。完整项目目录结构git clone到...
    99+
    2023-07-04
  • vue组件image-viewer使用要注意什么
    使用Vue组件`image-viewer`时,需要注意以下几点: 引入组件:在Vue项目中,需先引入`image-viewer`...
    99+
    2023-10-26
    vue
  • vue内置组件怎么使用
    这篇文章主要介绍了vue内置组件怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue内置组件怎么使用文章都会有所收获,下面我们一起来看看吧。vue组件有:1、component,用于渲染一个“元组件”为...
    99+
    2023-07-04
  • vue缓存组件怎么使用
    今天小编给大家分享一下vue缓存组件怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在vue中,缓存组件是“keep-...
    99+
    2023-07-04
  • Vue异步组件怎么使用
    本篇内容主要讲解“Vue异步组件怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue异步组件怎么使用”吧!1、前置要求建议使用webpack;Browserify在默认情况下不支持;2、...
    99+
    2023-07-04
  • VUE页面声音+标题闪烁通知组件怎么使用
    这篇文章主要介绍“VUE页面声音+标题闪烁通知组件怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“VUE页面声音+标题闪烁通知组件怎么使用”文章能帮助大家解决问题。一个VUE页面声音+标题闪烁...
    99+
    2023-07-05
  • Vue动态组件与异步组件怎么使用
    这篇“Vue动态组件与异步组件怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue动态组件与异步组件怎么使用”文章吧...
    99+
    2023-07-05
  • Vue组件怎么用
    这篇文章将为大家详细讲解有关Vue组件怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.Vue组件的介绍组件 (Component) 是 Vue.js 最强大的功能...
    99+
    2024-04-02
  • Vue中怎么全局注册组件并引用
    这篇文章将为大家详细讲解有关Vue中怎么全局注册组件并引用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、正则判断路径以及文件名,获取全部组件并全局注册(...
    99+
    2024-04-02
  • vue组件component的注册与使用详解
    目录1.什么是Vue组件(1)定义(2)父子关系2.Vue组件使用(注册方式)1.局部注册(私有组件注册)2.全局注册3.使用组件的步骤:1.什么是Vue组件 (1)定义 组件是Vu...
    99+
    2022-11-13
    vue组件component vue组件注册使用
  • VUE中怎么注册全局组件和局部组件
    这篇文章将为大家详细讲解有关VUE中怎么注册全局组件和局部组件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。全局组件第一步:在components文件夹下建...
    99+
    2024-04-02
  • vue验证码组件怎么使用
    这篇文章主要讲解了“vue验证码组件怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue验证码组件怎么使用”吧!代码如下:<template&...
    99+
    2024-04-02
  • vue动态组件component怎么使用
    本篇内容介绍了“vue动态组件component怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、component如何实现动态组件...
    99+
    2023-06-21
  • Vue中的KeepAlive组件怎么使用
    这篇文章主要介绍“Vue中的KeepAlive组件怎么使用”,在日常操作中,相信很多人在Vue中的KeepAlive组件怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue中的KeepAlive组件怎...
    99+
    2023-07-04
  • Vue拖拽排序组件Vue-Slicksort怎么使用
    这篇“Vue拖拽排序组件Vue-Slicksort怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue拖拽排序组件V...
    99+
    2023-07-05
  • VUE页面声音和标题闪烁通知组件怎么使用
    本文小编为大家详细介绍“VUE页面声音和标题闪烁通知组件怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“VUE页面声音和标题闪烁通知组件怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.使用方法1...
    99+
    2023-07-04
  • keep-alive组件怎么在Vue中使用
    这篇文章将为大家详细讲解有关keep-alive组件怎么在Vue中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 一、keep-alive 用法< keep-alive> 包...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作