vue-baidu-map icon indicating copy to clipboard operation
vue-baidu-map copied to clipboard

bm-info-window 多次调用赋值时,不显示信息窗体

Open starwang666 opened this issue 5 years ago • 13 comments

[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;
    },

预期输出

点击每个坐标点时会有信息窗体

实际输出

不显示信息窗体

starwang666 avatar Jul 10 '19 07:07 starwang666

不是很懂。你说的点击是点击哪里?示例里没有定义点击行为

Dafrok avatar Jul 10 '19 12:07 Dafrok

不是很懂。你说的点击是点击哪里?示例里没有定义点击行为 就是点定位的坐标点,弹出窗体信息。

<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 谢谢

starwang666 avatar Jul 11 '19 07:07 starwang666

不用 QQ,你 codesandbox.io 新建个示例给我看看就行

Dafrok avatar Jul 11 '19 11:07 Dafrok

https://codesandbox.io/embed/vue-template-mczyz 目前这个例子是成功的,但是当把63-66行的定时器注释取消时,再次点击坐标点,就不会出现信息弹框,这个该如何解决?

starwang666 avatar Jul 15 '19 02:07 starwang666

不用 QQ,你 codesandbox.io 新建个示例给我看看就行

https://codesandbox.io/embed/vue-template-mczyz 目前这个例子是成功的,但是当把63-66行的定时器注释取消时,再次点击坐标点,就不会出现信息弹框,这个该如何解决?

starwang666 avatar Jul 18 '19 07:07 starwang666

你代码中写这个定时器是什么意图?,是因为地图上的点会实时变化吗? this.timer = setTimeout(() => { this.getDataMap(); }, 2000);

myf-sky avatar Jul 18 '19 07:07 myf-sky

你代码中写这个定时器是什么意图?,是因为地图上的点会实时变化吗? this.timer = setTimeout(() => { this.getDataMap(); }, 2000);

是的,但是实时变化后,点击红点就不能弹出信息了

starwang666 avatar Jul 18 '19 07:07 starwang666

同遇到这个问题。

iwillhappy1314 avatar Aug 23 '19 02:08 iwillhappy1314

这个问题解决了吗,求分享

hahazqa avatar Aug 28 '19 02:08 hahazqa

同样的问题, 有解决方案么?

digga-dong avatar Feb 03 '21 05:02 digga-dong

建议嵌套进 bm-marker 组件里看看,不行当我没说。

6iedog avatar Oct 27 '21 10:10 6iedog

尝试在接口请求之前将你的markers置空,this.markers=[]

SJeagery avatar Jan 08 '22 09:01 SJeagery

你代码中写这个定时器是什么意图?,是因为地图上的点会实时变化吗? this.timer = setTimeout(() => { this.getDataMap(); }, 2000);

解决了吗 哥 我也遇到这个问题 marker更新后 点击就不显示弹窗了

weigegeaa avatar Aug 04 '23 02:08 weigegeaa