收藏
回答

this.mapCtx.includePoints设置缩放值在真机无效

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug this.mapCtx.includePoints 客户端 7.0.3 2.7.0









需求:当用户把地图缩放到图1时,地图会在每个省份上有个点(前提是如果该省有我们的产品),点击省份的点,地图会放到到图2的样子,在点击,地图会所放到图3的样子,即正确的顺序是从图1->图2->图3.图6是实现地图缩放的代码,这些功能在开发工具上都可以实现。但是在真机会出现很多无法预料的问题

bug:下列问题是在ios12.2测试,比如我进入小程序,第一次点击图1河南省份那个点,它会先跳到图4(我当前所在地)停顿大概0.5秒,然后才跳到图3,  有时候(此bug偶尔发生)点击河南的点(图1)它会定位到我当前所在地苏州(图4),即从图1直接跳到图4,然后不再跳到图3

在ios12.0.1测试结果:从图1可以跳到图2.然后在点击,还是到图2.无法将地图设置成图3的样子,无论如何点击,一直停留在图2

安卓8.1.0测试结果:可以实现图1->图2->图3的功能,但是地图上省份上两个点,只有一个河南那个点可以点击,江苏那个点,无论怎么点都没有反应,无法触发点击事件,控制带都没有打印出东西,

以上是反复测试还存在的问题,不知道是不是this.mapCtx.includePoints这个API的bug,如果是的话,麻烦官方能够解决,如果不是的话,劳烦告知问题所在,我已经被喷的狗血淋头了,还请官方小姐姐帮帮忙,万分感谢

我发的代码片段是测试this.mapCtx.includePoints这个API的,用ios12.2真机测试,确实还是会出现上面提到问题


回答关注问题邀请回答
收藏

3 个回答

  • 騁風破浪
    騁風破浪
    2021-09-29

    2021年国庆节了,这BUG还没解决?includePoints方法的success回调里面设置scale依然无效!

    2021-09-29
    有用
    回复
  • Angela
    Angela
    2020-03-30

     普通函数

    includePoints() {

        let pointsArr = []

        let arr = this.data.listData

        for (let i = 0; i < arr.length; i++) {

          let a = arr[i].longitude

          let b = arr[i].latitude

          pointsArr.push({ longitude: a, latitude: b })

        }

        this.mapCtx.includePoints({

          padding: [200, 50, 200, 50],

          points: pointsArr

        })

      },

     在onLoad函数中添加下面两行代码

    this.mapCtx = wx.createMapContext("myMap")

        this.includePoints()

    真机上测试不起作用

    2020-03-30
    有用
    回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2019-05-22

    是指scale值无效?如果是的话,测试iPhonexr 12.2 7.0.4未复现问题

    2019-05-22
    有用
    回复 6
    • 2019-05-22

      应该是微信版本的原因,我微信更新到7.0.4是可以设置scale值,但是“点击图1河南省份那个点,它会先跳到图4(我当前所在地)停顿大概0.5秒,然后才跳到图3”和“从图1可以跳到图2.然后在点击,还是到图2.无法将地图设置成图3的样子,无论如何点击,一直停留在图2”这两个问题还是存在的

      2019-05-22
      回复
    • 寂
      2019-05-22回复

      你这里只能通过延时来处理,因为缩放视野展示所有经纬度是一个animation的动作,在完成动画以后才会去写scale属性。

      也就是说,你的setData设置scale,会被覆盖。


      我并没有特别好的方法,建议用setTimeout来躲过被覆盖

      success: function () {

      setTimeout(function () {

      console.log("scale:", that.data.scale)

      that.setData({ scale: that.data.scale + 2 })

      }, 1000)


      改了一下你的代码片段:
      https://developers.weixin.qq.com/s/uUPm0ymV7F8l



      2019-05-22
      回复
    • 2019-05-23回复




      首先感谢官方的解答,但是按照你提供的两种方法好像在我实际项目上没有作用,控制台竟然打印出22的scale值,虽然只是一闪而过,但是也很不可思议,我记得文档上介绍scale值范围好像是5-18吧,这超过太多了而且我无论点哪个点,地图首先定位到我当前所在地附近的点,scale放大到22,只是一闪而过,然后再跳回点击的那个点scale值变成我设置的7,然后这次再怎么点,scale值就不会变了,一直是7,但是还是会有一闪而过的那个问题,还有一个问题,请看下面的截图


      2019-05-23
      回复
    • 2019-05-23回复

      如果方便的话,我可以把测试二维码发给你,你可以体验一下

      2019-05-23
      回复
    • 2019-05-27回复

      我给你的回复你看到了吗?如果看到请快点回复好吗,一个bug向你们提了半年一点解决方案都没有,讲道理很说不过去啊,你们觉得呢

      2019-05-27
      回复
    查看更多(1)
登录 后发表内容