收藏
回答

为什么在地图首次加载时bindregionchange事件无法触发

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 需求 map 客户端 6.7.3 2.4.1

- 需求的场景描述(希望解决的问题)

描述:

1.在初次进入地图页面时,无论是onload,onshow,onready周期内,若立即改变地图的视野范围设置,此时不能触发regionchange事件,故无法判断何时地图视野改变完成。此时若在视野改变时调用MapContext.getRegion()方法获取视野范围,容易得到负值,或者不正确的范围值。

2.通过mapupdated的回调或增加一定的延迟,可在地图渲染完成后,调用MapContext.getRegion(),得到正确的视野范围。

问题:

  1. 为何首次加载地图,改变视野无法触发regionchange事件,这导致回调无法处理所有的视野改变事件,让代码不统一。

  2. 而mapupdated的监听的地图渲染完成事件过多,很难加以区分。


- 希望提供的能力

  1. 希望只要改变视野范围,就能触发regionchang事件。

  2. 若不能提供上述能力,希望能提供地图初始化完成时的回调方法。

最后一次编辑于  2018-11-28  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

3 个回答

  • 是柿子啊
    是柿子啊
    2018-11-28

    测试了下,是可以的在首次加载的是,有拖动改变视野的时候,有触发事件:

    2018-11-28
    赞同
    回复 6
    • 非城
      非城
      2018-11-28

      经真机测试,首次渲染地图,在页面生命周期(onshow,onload,onready)内直接改变视野,非手动操作

      index.js



      index.wxml



      无法正常触发regionchange事件,特别是onload或onshow时,几乎没有触发regionchange事件,添加延迟机制后可触发(应该时地图首次渲染完成后才能触发)。

      2018-11-28
      回复
    • 是柿子啊
      是柿子啊
      2018-11-28回复非城

      ,按照你的说法,我这边测试是可以测试是可以的,提供下你的测试代码片段:https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

      2018-11-28
      回复
    • 非城
      非城
      2018-11-28回复是柿子啊

      代码片段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。

      2018-11-28
      回复
    • 非城
      非城
      2018-11-28回复是柿子啊

      通过添加一定的延迟机制(onload中需>1000ms),可顺利触发regionchange。


      然而具体延迟应该也取决于不同的手机性能。

      另外在mapupdated的回调内改变设置region,并不能触发regionchange,所以对于触发regionchange的时机,还请官方能够解释一下。


      2018-11-28
      回复
    • 非城
      非城
      2018-11-29回复是柿子啊

      帅哥,为什么不了了之了呢?至少能给我一个结论吧  =(

      之前提出的一个关于地图的问题,还能麻烦帮忙跟一下吗?麻烦了。

      2018-11-29
      回复
    查看更多(1)
  • 郭玉峰
    郭玉峰
    08-15

    不同的手机表现不一样  我现在知道的  华为mate20,三星Glasy S7 edge这两个手机 首次不触发

    苹果 和 很多android手机都会触发

    08-15
    赞同
    回复
  • 顾涛
    顾涛
    07-31

    我是在开发工具上首次可以触发,但是在真机上首次无法触发


    07-31
    赞同
    回复