- 需求的场景描述(希望解决的问题)
描述:
1.在初次进入地图页面时,无论是onload,onshow,onready周期内,若立即改变地图的视野范围设置,此时不能触发regionchange事件,故无法判断何时地图视野改变完成。此时若在视野改变时调用MapContext.getRegion()方法获取视野范围,容易得到负值,或者不正确的范围值。
2.通过mapupdated的回调或增加一定的延迟,可在地图渲染完成后,调用MapContext.getRegion(),得到正确的视野范围。
问题:
为何首次加载地图,改变视野无法触发regionchange事件,这导致回调无法处理所有的视野改变事件,让代码不统一。
而mapupdated的监听的地图渲染完成事件过多,很难加以区分。
- 希望提供的能力
希望只要改变视野范围,就能触发regionchang事件。
若不能提供上述能力,希望能提供地图初始化完成时的回调方法。
不同的手机表现不一样 我现在知道的 华为mate20,三星Glasy S7 edge这两个手机 首次不触发
苹果 和 很多android手机都会触发
我是在开发工具上首次可以触发,但是在真机上首次无法触发
测试了下,是可以的在首次加载的是,有拖动改变视野的时候,有触发事件:
经真机测试,首次渲染地图,在页面生命周期(onshow,onload,onready)内直接改变视野,非手动操作
index.js
index.wxml
无法正常触发regionchange事件,特别是onload或onshow时,几乎没有触发regionchange事件,添加延迟机制后可触发(应该时地图首次渲染完成后才能触发)。
,按照你的说法,我这边测试是可以测试是可以的,提供下你的测试代码片段:https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html
代码片段https://developers.weixin.qq.com/s/ln9RygmD7c4Y
说明:
1.真机调试,我的测试机型为三星s6 edge,基础版本库2.4.1 [195]
2.代码内,可分别将onload,onshow,onready,mapupdated阶段时的注解打开,查看是否有触发regionchange事件。
3.通过先redrictTo pageB,再redirctTo Index页面,更容易发现问题。我这里的情况是,以上所述所有的生命周期和回调都没有触发regionchange。
通过添加一定的延迟机制(onload中需>1000ms),可顺利触发regionchange。
然而具体延迟应该也取决于不同的手机性能。
另外在mapupdated的回调内改变设置region,并不能触发regionchange,所以对于触发regionchange的时机,还请官方能够解释一下。
帅哥,为什么不了了之了呢?至少能给我一个结论吧 =(
之前提出的一个关于地图的问题,还能麻烦帮忙跟一下吗?麻烦了。