需求:当用户把地图缩放到图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真机测试,确实还是会出现上面提到问题
2021年国庆节了,这BUG还没解决?includePoints方法的success回调里面设置scale依然无效!
普通函数
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()
真机上测试不起作用
是指scale值无效?如果是的话,测试iPhonexr 12.2 7.0.4未复现问题
应该是微信版本的原因,我微信更新到7.0.4是可以设置scale值,但是“点击图1河南省份那个点,它会先跳到图4(我当前所在地)停顿大概0.5秒,然后才跳到图3”和“从图1可以跳到图2.然后在点击,还是到图2.无法将地图设置成图3的样子,无论如何点击,一直停留在图2”这两个问题还是存在的
你这里只能通过延时来处理,因为缩放视野展示所有经纬度是一个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
首先感谢官方的解答,但是按照你提供的两种方法好像在我实际项目上没有作用,控制台竟然打印出22的scale值,虽然只是一闪而过,但是也很不可思议,我记得文档上介绍scale值范围好像是5-18吧,这超过太多了而且我无论点哪个点,地图首先定位到我当前所在地附近的点,scale放大到22,只是一闪而过,然后再跳回点击的那个点scale值变成我设置的7,然后这次再怎么点,scale值就不会变了,一直是7,但是还是会有一闪而过的那个问题,还有一个问题,请看下面的截图
如果方便的话,我可以把测试二维码发给你,你可以体验一下
我给你的回复你看到了吗?如果看到请快点回复好吗,一个bug向你们提了半年一点解决方案都没有,讲道理很说不过去啊,你们觉得呢