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
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);
文本框怎么居中对齐(文本框怎么居中对齐word)
文本框怎么居中对齐,以WPS为例,文本框居中对齐的方法:1、启动wps,新建一个幻灯片,把它设置为空白版式。2、插入一个横向文本框。单击插入命令,单击文本框旁边的三角形按钮,选择横向文本框。3、设置字(0)人阅读时间:2023-03-16话费怎么充q币(电信话费怎么充q币)
话费怎么充q币,话费充值Q币的方法如下:1、首先进入腾讯充值中心官网,然后点击“Q币充值”选项。2、接着登录QQ,再选择想要充值的金额。3、其次在“更多方式”下选择“手机”,并选择运营商。4、(0)人阅读时间:2023-03-16怎么判断token过期(如何判断token过期)
怎么判断token过期,以微信为例,判断token过期的方法:1、把token放到session里;2、如果会话过期,token也就会过期使用的时候只要判断当前会话是否有效即可。微信(wechat)是腾讯公司于2011年1月21日推(0)人阅读时间:2023-03-16三星手机怎么开应用分身(三星手机应用程序分身怎么弄)
三星手机怎么开应用分身,以三星note10为例,三星手机开应用分身的方法是:1、在标准模式下,点击【设置】。2、点击【高级功能】。3、向上滑动屏幕,点击【应用分身】。4、点亮想要开启应用分身软件右侧的【(0)人阅读时间:2023-03-16文本框怎么居中对齐(文本框怎么居中对齐word)
话费怎么充q币(电信话费怎么充q币)
怎么判断token过期(如何判断token过期)
三星手机怎么开应用分身(三星手机应用程序分身怎么弄)