收藏
回答

关于map点聚合部分有些地方闪烁/和操作逻辑不明的请教。

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug map 微信安卓客户端 8.0.47 3.3.34

请教各位大大,和微信社区平台客服。

小弟初学小程序开发这块,操作map,感觉有几个地方反复折腾都找不到解决方案,特此请教。

1.setData(markers...)闪烁的问题不知道怎么避免? 随便更新label或callout的文字内容/颜色边框属性,然后setData写回,被更改项在屏幕上会闪烁,很影响体验。我猜调用setData先删除了被更高项,执行刷新,然后添加新项目再刷新,2次刷新导致的闪烁。 (安卓手机,听说ios很丝滑)。

2.在聚合状态下(屏幕上有部分marker聚合后生成了一个聚合圆点),任意点击其他未聚合的marker(点击会使此marker的z序上升到最前面),然后当前marker和先前点击的marker均会闪烁。此问题应该跟问题1是一样的原因。

3.使用customcallout模式渲染marker时候,如果屏幕上有了聚合点,然后通过点击或者放大map释放此聚合点,那么恢复显示的marker点会处于假死状态——markertap callouttap确实可以响应,但是我是通过点击获取某marker的id来修改cover-view对象的css,这里无法触发了。

见下面的代码,markertap事件里面修改map_selected_mark的值,来触发customcallout的cover-view修改css,正常状态是可以切换css的,但是只要是聚合点释放恢复的marker就不行,点击没反应,通过调试map_selected_mark的值确实更改了,但影响不到css

我反复试验,假死状态下,微修改这些marker的属性,再次setData提交倒能恢复,但体验较差。

可否在后续版本中,点聚合这块添加1个事件(聚合点释放事件,类似markerClusterCreate)通知前端执行一些处理。

4.一度尝试自己动手实现点聚合来解决问题3,但是反复网上参考代码,发现map自身的点聚合也是通过构造marker对象实现的——也需要走setData或者addMarkers的路,还是会疯狂闪烁,so只得作罢。map自身点聚合动画效果很丝滑,自己做的无法深入控件内部,无法避免反反复复的闪烁。希望微信小程序开发组,在map / 点聚合这块再优化下。我看csdn有个牛人自己实现的点聚合,gif感觉还行,但是无法下载代码,谁有这块的关键实现,能否给个思路?计算聚合那些都不重要,重要的就是怎么避免闪烁,绕过setdata addmarker。

<cover-view slot="callout">

        <block wx:for="{{map_hot_markers}}" wx:key="*this" >

          <cover-view marker-id="{{item.id}}" class="custom-mark-frame" >

            <cover-view class="{{map_selected_mark==item.id?'custom-mark-text custom-mark-text-s':'custom-mark-text'}}"  >{{item.showtext}}</cover-view>

          </cover-view>

        </block>

      </cover-view>


最后一次编辑于  02-15
回答关注问题邀请回答
收藏

1 个回答

  • 龙猫
    龙猫
    09-19

    问题3解决了吗


    09-19
    有用
    回复
登录 后发表内容