收藏
回答

bindmarkertap会冒泡到bindtap事件,挺烦人的!

问题模块
API和组件

需求:

在map组件里定义了一堆marker,通过点击某个marker触发bindmarkertap能在map组件下方显示一个预先定义好的view,view中显示该marker所对应的详细信息。点击地图上的其他地方(非markers、非controls)则触发bindtap事件隐藏该view。view的控制阀值是“display:block/none


测试环境:真机安卓,微信客户端:6.5.10,基础库:1.4.2


代码:

<map id="Map" style="height:{{mapHeight}}" scale="{{mapScale}}" longitude="{{mapLongitude}}" latitude="{{mapLatitude}}" controls="{{controls}}" class="Map" markers="{{mapMarkers}}" bindmarkertap="showPoiInfo" bindtap="cleanTips" bindcontroltap="controlOperation" show-location>


问题:

当map组件初始化后先点击marker只会触发bindmarkertap事件,此后无论你点击多少次的marker下方的view总是显示的(这是业务正确需求)。

但是如果是先点击了marker后再点击地图的其他地方触发bindtap事件,则该view隐藏完毕后,下一次点击某个marker时会先触发bindmarkertap事件再触发bindtap事件!这样的影响是view一直没法显示(因为两个事件触发太快,view先block后又马上被none了),影响到了正常的体验!无论你点击多少次的marker总会自动冒泡到bindtap事件中。

但很莫名其妙的是,在触发bindtap事件后,如果你在真机里稍微改变地图的缩放尺寸,再点击marker,这时候不会再冒泡到bindtap事件中,view能正常显示!然后再点击地图其他地方,再再点击marker,又会自动触发bindtap事件,view又不能正常显示了!

这个问题看似对最终结果影响不大但又很恼人,如果用户不懂得稍微改变地图缩放尺寸再点击marker的话,就完全不能看到下方的marker相信信息了,用户体验大打折扣!


总结:这似乎应该是map组件里对事件的冒泡处理没有设计好


建议:希望官方能增加一个catchmarkertap的事件或者砍掉bindmarker冒泡到bindtap的过程从而解决该问题!

最后一次编辑于  2017-07-22  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

2 个回答

  • 没人要的肥仔
    没人要的肥仔
    2017-07-22

    后续测试,ios平台上不会出现上述问题!anroid会有该问题

    2017-07-22
    赞同
    回复
  • 10:24
    10:24
    2017-10-13

    安卓新版微信基础库1.6.0.bindtap已经挂了

    2017-10-13
    赞同
    回复