收藏
回答

map怎么设置自定义view的点击事件?

bindcallouttap只能设置整个气泡的点击事件,但是我现在的需求是设置关闭按钮,请问怎么才能添加?

回答关注问题邀请回答
收藏

4 个回答

  • 守住一份坚持
    守住一份坚持
    04-02

    这个根本就是微信小程序的bug、一直以来都没人修复、marker的气泡点击事件只能绑定到map上、不能绑定到具体的callout自定义元素上面、真服了

    04-02
    有用
    回复
  • CRMEB
    CRMEB
    2023-09-08

    在 bindcallouttap 事件中创建自定义气泡内容:首先,在 bindcallouttap 事件中创建一个自定义的气泡内容,包括需要展示的信息和关闭按钮。

    marker: [{
      id: 0,
      latitude: 39.9,
      longitude: 116.4,
      callout: {
        content: '这里是气泡内容<div class="close-btn">关闭</div>',
        display: 'ALWAYS',
        padding: 10,
        borderRadius: 5,
        textAlign: 'center'
      }
    }]
    


    在这个示例中,我们将气泡内容设置为一个 <div> 元素,其中包括要展示的信息和一个 "关闭" 按钮。


    注册关闭按钮的点击事件:接下来,您需要监听关闭按钮的点击事件,并在点击时关闭气泡。可以通过以下方式实现:

    Page({
      onMarkerTap(event) {
        const { markerId, type } = event.detail;
        if (type === 'label' && markerId === 0) {
          // 处理气泡点击事件
          const className = event.detail.target.dataset.className;
          if (className === 'close-btn') {
            // 关闭气泡
            this.setData({
              marker: []
            });
          }
        }
      }
    })
    


    在这个示例中,我们通过监听 onMarkerTap 事件,并在事件处理函数中判断点击的元素是否为 "关闭" 按钮(根据按钮的 CSS 类名)。如果是,则执行关闭气泡的操作,例如将 marker 数组设置为空来隐藏气泡。



    2023-09-08
    有用
    回复 3
    • biu!!!
      biu!!!
      2023-09-08
      但是我div直接显示出来了
         callout: {
                    content: “这里是气泡内容<div class=”close-btn”>关闭</div>“,
                    padding: 10,
                    anchorX: 0,
                    anchorY: 20,
                    display: "ALWAYS"
                  },
      2023-09-08
      回复
    • CRMEB
      CRMEB
      2023-09-08回复biu!!!
      代码没有被解析
      2023-09-08
      回复
    • Stefan
      Stefan
      2023-11-07回复CRMEB
      怎么解析
      2023-11-07
      回复
  • 2024
    2024
    2023-09-07

    使用原生点击事件试试

    2023-09-07
    有用
    回复 1
    • biu!!!
      biu!!!
      2023-09-08
      catch:tap和bind都试过了,在给view加点击事件不行
      2023-09-08
      回复
  • 一笑皆春
    一笑皆春
    2023-09-07

    关闭的布局不是你画的吗?直接加点击事件不行吗

    2023-09-07
    有用
    回复 7
    • biu!!!
      biu!!!
      2023-09-07
      bindcallouttap=“bindCalloutClose“有效,但是只能在map里
      catch:tap=“bindCalloutClose“无效
      2023-09-07
      回复
    • 一笑皆春
      一笑皆春
      2023-09-07回复biu!!!
      你看看bindcallouttap返回的信息里有没有参数能区别一下点击的是哪一个对象
      2023-09-07
      回复
    • biu!!!
      biu!!!
      2023-09-07
      只有一个markerId,是整个气泡的id,我给里面的view加id,没有显示
      2023-09-07
      回复
    • biu!!!
      biu!!!
      2023-09-07
      2023-09-07
      回复
    • 一笑皆春
      一笑皆春
      2023-09-07回复biu!!!
      试试这样加 data-closeid = 'xxxx'
      2023-09-07
      回复
    查看更多(2)
登录 后发表内容