vue前端开发仿钉图系列(2)左侧图层列表的开发详解
项目开发前还是特别说明一下组件库的重要性,谢谢饿了么团队分享的element组件库,大大节省了页面的开发成本。左侧图层列表核心功能有1、根据图层类型展示点线面2、开关控制右侧地图上点线面的展示和隐藏3、点击数据列表,展示图层数据列表,点击某一行在地图上展示绘图信息,点击查看编辑弹出右侧编辑页面4、字段管理配置的字段,在底部数据列表动态展示5、更多操作相关的功能。整理总结不易,如需全部代码,请联系我15098950589(微信同号)和以往一样,先上效果图。

1、页面dom
<ul>
<li v-for="(item,index) in datalist" :key="item.id">
<div class="dataView">
<div class="topview">
<div>
<span v-if="item.layerType===0" class="dotspan">点</span>
<span v-if="item.layerType===1" class="linespan">线</span>
<span v-if="item.layerType===2" class="areaspan">面</span>
<span class="itemname">{{item.layerName}}</span>
<span v-if="item.isDefault===1" class="itemDefault">默认</span>
</div>
<el-switch v-model="item.isDisplay" :key="item.id" active-color="#409EFF"
inactive-color="#C0CCDA" :active-value="1" :inactive-value="0"
@change="handleGetDataList(item.isDisplay,item.id)">
</el-switch>
</div>
<div class="bottomView">
<span class="dataspan" @click="handleList(index,item)">数据列表({{item.dataSize}})</span>
<el-dropdown>
<span>
<el-button style="height:25px;padding:0;" type="text" size="mini">
{{$t('common.moreBtn')}}<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-if="item.layerType===0" style="height: 30px;" @click.native="handleSetDefault(item)">设为默认
</el-dropdown-item>
<el-dropdown-item style="height: 30px;" @click.native="handleConfig(item)">图层配置
</el-dropdown-item>
<el-dropdown-item style="height: 30px;" @click.native="handleManager(index,item.id)">
字段管理
</el-dropdown-item>
<el-dropdown-item style="height: 30px;" @click.native="handleDelete(index,item.id)">删除图层
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
</li>
</ul>
2、开关状态变更,向父页面传递点线面数据
handleGetDataList(status, id) {
console.log('开关状态', status, id)
let data={
isDisplay:status
}
//更新开关状态
UpdateLayerStatus(data,id).then(res => {
})
//先过滤开启开关的数据
let searchList = this.datalist.filter(item => item.isDisplay === 1)
console.log('过滤开启开关的图层数据',searchList)
var dotMarkers = []
var lineMarkers = []
var polygonMarkers = []
//累加展开所有的marker数据
searchList.forEach(item => {
if (item.layerType === 0) {
dotMarkers.push(...item.list)
} else if (item.layerType === 1) {
lineMarkers.push(...item.list)
} else if (item.layerType === 2) {
polygonMarkers.push(...item.list)
}
})
console.log('过滤开启开关的图层数据1',lineMarkers)
console.log('过滤开启开关的图层数据2',polygonMarkers)
this.$emit("childGetDotMarkerDataList", dotMarkers)
this.$emit("childGetLineMarkerDataList", lineMarkers)
this.$emit("childGetPolygonMarkerDataList", polygonMarkers)
}
3、父页面接收数据,绘制点线面
handelGetDotMarkers(markerList) {
//打开前先清空地图和数组数据
this.map.remove(this.markers);
this.markers = []
markerList.forEach(item => {
let that = this;
var marker = new AMap.Marker({
position: new AMap.LngLat(item.longitude, item.latitude),
//icon: 'https://a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png',
anchor: 'bottom-center'
});
marker.on('click', function(e) {
that.handleGetDataItem(item)
})
that.markers.push(marker)
})
this.map.add(this.markers);
}
handleGetLineMarkers(markerList) {
console.log('折线数据', markerList)
//打开前先清空地图和数组数据
this.map.remove(this.polylines);
this.polylines = []
markerList.forEach(item => {
let that = this;
//实例化折线对象
let polyline = new AMap.Polyline({
map: that.map, //初始化的地图变量
path: JSON.parse(item.lineJson), //折线的存放数组,很重中。一般是好多经纬度组成的数组。
strokeWeight: 5,
borderWeight: 1,
strokeStyle: "solid",
outlineColor: '#0d42e3',
strokeColor: "#0d42e3",
strokeOpacity: 0.6
});
polyline.on('click', function(e) {
that.handleGetDataItem(item)
})
that.polylines.push(polyline)
})
this.map.add(this.polylines);
}
handleGetPolygonMarkers(markerList) {
//打开前先清空地图和数组数据
this.map.remove(this.polygons)
this.polygons = []
markerList.forEach(item => {
let that = this;
//实例化面对象
let polygon = new AMap.Polygon({
map: that.map, //初始化的地图变量
path: JSON.parse(item.surJson) //面的存放数组,很重中。一般是好多经纬度组成的数组。
});
polygon.on('click', function(e) {
that.handleGetDataItem(item)
})
that.polygons.push(polygon)
})
this.map.add(this.polygons);
console.log('地图对象1', this.map)
}
整理总结不易,如需全部代码,请联系我15098950589(微信同号)
vue前端开发仿钉图系列(2)左侧图层列表的开发详解的更多相关文章
- 前端html、CSS快速编写代码插件-Emmet使用方法技巧详解
前端html.CSS快速编写代码插件-Emmet使用方法技巧详解 Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来 ...
- FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- [js高手之路]深入浅出webpack系列2-配置文件webpack.config.js详解
接着上文,重新在webpack文件夹下面新建一个项目文件夹demo2,然后用npm init --yes初始化项目的package.json配置文件,然后安装webpack( npm install ...
- [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)
本文继续接着上文,继续写下webpack.config.js的其他配置用法. 一.把两个文件打包成一个,entry怎么配置? 在上文中的webpack.dev.config.js中,用数组配置entr ...
- [js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解(上)
[js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...
- vue.js循环for(列表渲染)详解
vue.js循环for(列表渲染)详解 一.总结 一句话总结: v-for <ul id="example-1"> <li v-for="item in ...
- SpringBoot系列教程JPA之query使用姿势详解之基础篇
前面的几篇文章分别介绍了CURD中的增删改,接下来进入最最常见的查询篇,看一下使用jpa进行db的记录查询时,可以怎么玩 本篇将介绍一些基础的查询使用姿势,主要包括根据字段查询,and/or/in/l ...
- SpringBoot系列教程JPA之delete使用姿势详解
原文: 190702-SpringBoot系列教程JPA之delete使用姿势详解 常见db中的四个操作curd,前面的几篇博文分别介绍了insert,update,接下来我们看下delete的使用姿 ...
- web标准 浏览器介绍 开发工具介绍 HTML介绍 HTML颜色介绍 规范 HTML结构详解 {前端之前端初识}
前端之前端初识 前端初识 本节目录 一 web标准 二 浏览器介绍 三 开发工具介绍 四 HTML介绍 五 HTML颜色介绍 六 规范 七 HTML结构详解 一 web标准 web准备介绍: 1. ...
- Spring Boot2 系列教程 (二) | 第一个 SpringBoot 工程详解
微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 哎呦喂,按照以往的惯例今天周六我的安排应该是待在家学学猫叫啥的.但是今年这种日子就可能一去不复返了,没法办法啊.前 ...
随机推荐
- Java---杂记
1. 当System.out.println()方法的参数是Object类型时,println()方法会自动调用Object对象的toString()方法,然后显示toString()方法返回的字符串 ...
- Jmeter函数助手26-logn
logn函数用于记录一条日志并返回空值. String to be logged (and returned):要打印的字符 Log level (default INFO) or OUT or ER ...
- vue-puzzle-vcode与vue-drag-verify纯前端的拼图人机验证、右滑拼图验证
转载作品!以获取原作者允许,原文地址,感觉写的比较全面,也比较实用,大家可以去看看原文章: 纯前端的拼图人机验证.右滑拼图验证 1.vue-puzzle-vcode github地址:https:// ...
- CentOS-7离线安装policycoreutils-python
1.下载相关安装包 policycoreutils-2.5-34.el7.src.rpm 快速下载地址:https://vault.centos.org/7.9.2009/os/x86_64/Pack ...
- 人形机器人(humanoid)(双足机器人、四足机器人)—— 操控员 —— 机器人数据收集操作员
参考: https://www.youtube.com/watch?v=jbQ4M4SNb2M 机器人数据收集操控员,就和大模型训练数据收集员.数据类型标识员(打标签人员)一样,都是为了人工生成AI训 ...
- 【转载】 Sun RPC 编程简介
原文地址: http://blog.chinaunix.net/uid-1724205-id-2813082.html ======================================== ...
- Git报错解决:OpenSSL SSL_read: Connection was reset, errno 10054 错误解决
1.背景 最近因项目上需要,想借鉴一下spring里面的一下架构设计,在拉取spring源码是报错如下: 初步判定,估计是访问国外的网站,网速受限的原因..... 2.解决方案 打开Git命令页面,执 ...
- 支付宝支付java版实战(含视频讲解)
1.背景 实际开发中用到支付宝支付的概念非常大...... 这里重点分析一下支付宝支付实际生产必须要实现的功能 1.获取支付链接(统一下单) 2.支付回调(异步通知) 3.统一下单交易查询 4.退款 ...
- 机器学习中的两个重要函数--sigmoid和softmax
机器学习中,常常见到两个函数名称:sigmoid和softmax.前者在神经网络中反复出现,也被称为神经元的激活函数:后者则出现在很多分类算法中,尤其是多分类的场景,用来判断哪种分类结果的概率更大. ...
- Lazysysadmin靶机笔记
Lazysysadmin靶机笔记 概述 lazysysadmin是一台Vulnhub靶机,整体比较简单. 靶机地址:https://pan.baidu.com/s/19nBjhMpGkdBDBFSnM ...