vue-baidu-map
vue-baidu-map copied to clipboard
bm-info-window 多次调用赋值时,不显示信息窗体
[BUG 反馈] bm-info-window 多次调用赋值时,不显示信息窗体
浏览器版本号
chrome 71.0.3578
Vue 版本号
2.9.6
组件库版本号
0.21.22
现象描述
在页面上实时更新(bm-info-window)信息窗体数据时(比如:在定时器中调用接口),测试之后发现:点击不显示提示语!
bm-info-window如果只仅进行一次调用赋值时,正常显示!
完整异常信息
无
在线示例 / 仓库 URL
无
复现用例
HTML:
<!-- showFlag初始化为 false -->
<bm-info-window
:title="marker.content"
:position="{lng: marker.lng, lat: marker.lat}"
:show="marker.showFlag"
@close="infoWindowClose(marker)"
@open="infoWindowOpen(marker)"
></bm-info-window>
JS:
created() {
this.timer = setInterval(() => {
this.getDataAll();
}, 2000);
},
getDataAll() {
this.$http({
method: "get",
url:
"https://www.easy-mock.com/mock/5d1db64a7982c0572a9e7a20/example1/map"
})
.then(res => {
this.markers=[];
for (var i = 0; i < res.data.data.length; i++) {
this.markers.push({
lng: res.data.data[i].lng,
lat: res.data.data[i].lat,
showFlag: false, //flag放在每一条数据里
content: res.data.data[i].content
});
}
}).catch(msg => {
console.log("错误请求");
});
},
infoWindowClose(marker) {
marker.showFlag = false;
},
infoWindowOpen(marker) {
marker.showFlag = true;
},
预期输出
点击每个坐标点时会有信息窗体
实际输出
不显示信息窗体
不是很懂。你说的点击是点击哪里?示例里没有定义点击行为
不是很懂。你说的点击是点击哪里?示例里没有定义点击行为 就是点定位的坐标点,弹出窗体信息。
<bm-marker
:position="{lng: marker.lng, lat: marker.lat}"
@click="infoWindowOpen(marker)"
animation="BMAP_ANIMATION_BOUNCE"
>
<bm-info-window
:title="marker.content"
:position="{lng: marker.lng, lat: marker.lat}"
:show="marker.showFlag"
@close="infoWindowClose(marker)"
@open="infoWindowOpen(marker)"
></bm-info-window>
</bm-marker>
方便加一下qq吗? 934013767 谢谢
不用 QQ,你 codesandbox.io 新建个示例给我看看就行
https://codesandbox.io/embed/vue-template-mczyz 目前这个例子是成功的,但是当把63-66行的定时器注释取消时,再次点击坐标点,就不会出现信息弹框,这个该如何解决?
不用 QQ,你 codesandbox.io 新建个示例给我看看就行
https://codesandbox.io/embed/vue-template-mczyz 目前这个例子是成功的,但是当把63-66行的定时器注释取消时,再次点击坐标点,就不会出现信息弹框,这个该如何解决?
你代码中写这个定时器是什么意图?,是因为地图上的点会实时变化吗? this.timer = setTimeout(() => { this.getDataMap(); }, 2000);
你代码中写这个定时器是什么意图?,是因为地图上的点会实时变化吗? this.timer = setTimeout(() => { this.getDataMap(); }, 2000);
是的,但是实时变化后,点击红点就不能弹出信息了
同遇到这个问题。
这个问题解决了吗,求分享
同样的问题, 有解决方案么?
建议嵌套进 bm-marker 组件里看看,不行当我没说。
尝试在接口请求之前将你的markers置空,this.markers=[]
你代码中写这个定时器是什么意图?,是因为地图上的点会实时变化吗? this.timer = setTimeout(() => { this.getDataMap(); }, 2000);
解决了吗 哥 我也遇到这个问题 marker更新后 点击就不显示弹窗了