vue使用高德地图api自定义label的点击事件

marker.setLabel({
  offset: new AMap.Pixel(-5, -2),
  content: `<div class="info" οnclick="func1('${this.infos[i].infoName}')">${this.Infos[i].infoName}</div>`,
  direction: 'right'
});

注意事项
1.func1这个方法需要自建一个js文件,在index.html中通过script标签引入,文件建立的地方建议在static的js下,方便打包
例如
func1.js中
function func1(res){
window.parent.postMessage(‘func1:’ + res, window.location.href)
}
组件中获取postMessage需要在mounted()中添加监听
window.addEventListener(‘message’, (e)=>{
let originUrl = window.location.host
let receiveUrl = e.origin.split(‘http://’)[1]
if(originUrl == receiveUrl){
if(e.data.split(’:’)[0] == ‘func1’){
this.$emit(‘getDetail’,e.data.split(’:’)[1])
}
}
})
2.获取到想要的参数之后需要在vue组件中使用,并不能在js文件中直接用(直接用也行,那样的话相当于在js文件中写了异步ajax,而且使用的不是vue,分分钟low到爆),获取方式可以采用postmessage的方法,
func1.js负责发送指令,vue组件接收message指令并执行后续方法。
题外话
一方面找遍了高德地图api的示例,没找到对label点击操作的api,另一方面,在无奈之下选择了原始的click执行方法,但是操作过程还是有些繁琐复杂,喷子嘴下留情

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值