vue-amap动态循环添加多个点,点击点出现弹窗信息
文章标签:
html 弹窗
效果图:
思路:通过后端的接口数据循环遍历出点的经纬度、弹窗信息,依次push进一个空的数组,最后将这个数组赋值给data里面定义的变量。
话不多说上代码:
HTML
<el-amap-marker
v-for="marker in markers"
:key="marker.index"
:position="marker.position"
:events="marker.events"
></el-amap-marker>
<el-amap-info-window
v-if="window"
:position="window.position"
:visible="window.visible"
:content="window.content"
></el-amap-info-window>
JS
data() {
lonlat: [], //经纬度
markers: [], //点
windows: [], //弹窗
window: "", //弹窗的显示影藏
},
mounted(){
let markers = [];
let windows = [];
let self = this; //this重定向
for (let i = 0; i < self.lonlat.length; i++) {
windows.push({
position: this.lonlat[i],
content:'',
visible: false,
});
//点
markers.push({
position: this.lonlat[i],
events: {
click() {
//弹窗信息
self.windows[i].content =
`<div>
<div><span>机构名称:</span>${self.name[i]}</div>
<div><span>管辖区域:</span>${self.areaName[i]}</div>
<div><span>地址:</span>${self.address[i]}</div>
<div><span>联系电话:</span>${self.phone[i]}</div>
<div><span>联系人:</span>${self.contactName[i]}</div>
<div><span>状态:</span>${self.useFlag[i]}</div>
</div>`;
//给信息窗体里的判断默认传false默认不显示
self.windows.forEach((window) => {
window.visible = false;
});
//当前点击的圆点对应的信息窗体为true显示
self.window = self.windows[i];
self.$nextTick(() => {
self.window.visible = true;
});
},
},
});
}
this.markers = markers;
this.windows = windows;
}
没了,结束了,是不是很简单呐,如有错误,欢迎留言.如有问题,不吝赐教。
如果此篇博文对您有帮助,还请动动小手点赞 收藏 留言 呐~,谢谢 ~ ~