将MapContext.moveToLocation()写在 onReady中,页面初始化完成之后,在开发工具中可以移动到当前定位点,在手机上不能移动,代码如下:
<map id='Mymap'
style="width: {{imageWidth}}px;height:{{imageHeight}}px"
markers="{{markers}}"
scale="18"
show-compass="true"
show-location="true"
bindtap='mapTap'></map>
onReady: function () {
this.mapCtx = wx.createMapContext("Mymap");
this.mapCtx.moveToLocation();
},
如果我写一个按钮返回当前位置,点击之后可以实现,是不是因为在onReady的时候实际上跳过去,但是之后wx又执行了一个什么东西,视野又移动了别的位置,求大神。。。。。。。。。。。。。。。。
这个问题应该已经解决了,如果初始化的问题,建议用wx.getLocation(Object object),获取经纬度,然后用setdate的方式把wxml里边的经纬度改变。这个时候才算完成初始化。然后在调用moveToLocation,2.8版本以上可以设置经纬度。所以可以初始化的时候给个默认值,如果找不到就去默认值,然后把 我的位置坐标临时记录一下,每次移动就直接把坐标给他省的每次调用后台获取,还浪费时间和效率
23年下半年打卡该问题
新版本需要对定位功能授权,需要在app.json中添加PermissionObject 结构
说明小程序获取权限时展示的接口用途(非原创)
"permission": { "scope.userLocation": { "desc": "你的位置信息将用于小程序位置接口的效果展示" } }
我也遇到同样的问题,在onLoad中moveToLocation方法概率性失败,我发现可能是因为在onLoad或onReady时,地图组件并未完成定位到当前位置的操作,所以moveToLocation就会失败,我的解决方法是把moveToLocation放在bindupdated事件中,待地图渲染更新完成之后再进行移动到当前位置的操作
麻烦提供代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
https://developers.weixin.qq.com/s/ubUjchmu7v4A
在开发工具上运行可以,在手机上运行就不行了,刚才我再手机上运行了一下,第一次可以移动刚到当前位置,后边就不行了,是因为缓存问题还是什么。。。。
这边测试是正常的哦,出现问题的具体机型是什么?微信版本是6.7.4?
这个是版本信息
手机是苹果6,我把this.mapCtx.moveToLocation();
改成了:setTimeout(function(){
that.mapCtx.moveToLocation();
console.log(that.mapCtx)
},1000)
就可以每次进来之后移动到当前位置了,这个是什么原因。。。。。