Map.vue是为iview组件开发的一个基于百度地图的组件,实现了点是否在框内的判断,画多边形覆盖物,添加自定义富文本标记物等功能.

第一步:重构自定义的富文本对象,设置为全局对象.
原代码的富文本对象是声明在addResource这个方法里面的,代码结构非常复杂,在beforeCreate这个钩子函数里面申明为全局的,就可以多次复用,不需要重复声明来了, 否则,每调用一次paintPolygon方法,都要重新声明一次,非常麻烦,效率太低下.
原代码是在父组件中处理好这个富文本对象需要的数据,再把这些数据传到富文本对象的构造函数里面,重构的处理方式,是将一整个数据对象(data对象)传到对象的构造函数里面,再根据需求,分解data对象来声明对象的属性(this._content | this._point | this._color等). 总结下来,数据总是应该在最靠近 使用数据的地方 进行处理.
window.ResOverlay = function(data, fun){
this._data = data
this._content = data['type'].name + "|" + data['name']
this._point = new BMap.Point(data.coord[0], data.coord[1])
this._fun = e => {
fun(data)
if(typeof(e.preventDefault()) == 'function'){
e.preventDefault() // IE下去除地图点击事件的冒泡
}else{
e.stopPropagation() // chrome下去除地图点击事件的冒泡
}
}
this._color = data['type'].color || "#5cadff" // 不同类型的资源有不同的颜色,默认颜色为#5cadff。
}
第二步:函数传递
需要为富文本添加电脑端的click事件和移动端的touchstart事件.涉及到要操作父组件中的data数据,所以采用将函数fun作为参数传入
父组件请求回数据再做处理,rep.data.data.resources为data,fun就是 data => {}
this.$http.get('/api/search').then(rep => {
this.$refs.main.addResource(rep.data.data.resources, data => {
this.resourceName = data["name"]
this.resourceType = data["type"].name
this.resourceUpdata = data["uploader"]
this.resourcePosition = data["coord"]
console.log(data["attachment"])
let allList = []
data["attachment"].map(i => {
let tempList = []
tempList.push(i)
tempList.push(i.split("/")[i.split("/").length - 1])
allList.push(tempList)
})
this.resourceDetial = allList
// 为资源添加图像
for(let i=0; i<data["images"].length; i++){
this.resourceImage.push(data["images"][i])
}
if (data["images"].length > 0){
this.isExistImage = true
}else{
this.isExistImage = false
}
// 为资源添加附件
if (data["attachment"].length > 0){
this.isExistAttach = true
}else{
this.isExistAttach = false
}
// 显示模态框
this.modal1 = true
})
})
在构造函数中,这样子处理
this._fun = e => {
fun(data)
if(typeof(e.preventDefault()) == 'function'){
e.preventDefault() // IE下去除地图点击事件的冒泡
}else{
e.stopPropagation() // chrome下去除地图点击事件的冒泡
}
}
最后,在合适的位置,添加事件
wrapDiv.addEventListener("touchstart", this._fun);
wrapDiv.addEventListener("click", this._fun);
本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。
关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Map.vue
# 百度地图
# 组件
# 深入理解Vue.js轻量高效的前端组件化方案
# 使用vue重构资讯页面的实例代码解析
# 详解vue.js组件化开发实践
# 测试平台开发vue组件化重构前端代码
# 自定义
# 重构
# 是在
# 来了
# 都要
# 不需要
# 已被
# 请大家
# 欢迎大家
# 等功能
# 涉及到
# 这样子
# 设置为
# 再把
# 第二步
# 再做
# 不同类型
# 大家多多
# 就可以
# 复用
相关文章:
如何在阿里云部署织梦网站?
招商网站制作流程,网站招商广告语?
定制建站价位费用解析与套餐推荐全攻略
XML的“混合内容”是什么 怎么用DTD或XSD定义
Python多线程使用规范_线程安全解析【教程】
网站制作公司排行榜,四大门户网站排名?
C++如何使用std::optional?(处理可选值)
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何用低价快速搭建高质量网站?
微信小程序 五星评分(包括半颗星评分)实例代码
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
如何用PHP快速搭建CMS系统?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
如何用美橙互联一键搭建多站合一网站?
南京网站制作费用,南京远驱官方网站?
建站之星免费模板:自助建站系统与智能响应式一键生成
建站之星2.7模板快速切换与批量管理功能操作指南
香港服务器如何优化才能显著提升网站加载速度?
广德云建站网站建设方案与建站流程优化指南
建站之星图片链接生成指南:自助建站与智能设计教程
如何快速搭建高效香港服务器网站?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
如何在Tomcat中配置并部署网站项目?
如何通过宝塔面板实现本地网站访问?
如何高效利用亚马逊云主机搭建企业网站?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
长沙做网站要多少钱,长沙国安网络怎么样?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
建站VPS能否同时实现高效与安全翻墙?
已有域名能否直接搭建网站?
,石家庄四十八中学官网?
太原网站制作公司有哪些,网约车营运证查询官网?
如何在云指建站中生成FTP站点?
济南专业网站制作公司,济南信息工程学校怎么样?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
如何快速搭建虚拟主机网站?新手必看指南
如何选择服务器才能高效搭建专属网站?
如何在七牛云存储上搭建网站并设置自定义域名?
香港服务器WordPress建站指南:SEO优化与高效部署策略
建站之星如何一键生成手机站?
想学网站制作怎么学,建立一个网站要花费多少?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
制作网站公司那家好,网络公司是做什么的?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
如何在IIS中新建站点并配置端口与IP地址?
建站上市公司网站建设方案与SEO优化服务定制指南
北京企业网站设计制作公司,北京铁路集团官方网站?
如何快速搭建高效可靠的建站解决方案?
*请认真填写需求信息,我们会在24小时内与您取得联系。