请教各位大大,和微信社区平台客服。
小弟初学小程序开发这块,操作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>
问题3解决了吗