2024年,还没解决呢,😊
bindmarkertap会冒泡到bindtap事件,挺烦人的!需求: 在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的过程从而解决该问题!
04-30