uni-app HBuilderX 2.3.6版本发行h5 moveToLocation无反应

uni-app HBuilderX 2.3.6版本发行h5 moveToLocation无反应

开发环境 版本号 项目创建方式
Mac 10.15.7 HBuilderX
HBuilderX 2.3.6

示例代码:

<map  
ref="map"  
id="map"  
style="width: 100%; height: 100%"  
latitude="latitude"
longitude="longitude"
markers="markers"
scale="scale"
    @regionchange="regionchange"  
show-location="true"
    @markertap="markAction"
>
</map>  

let map = uni.createMapContext("map", this);
map.moveToLocation({
success: function (res) {
console.log("success-----", res);
},
fail: function (res) {
console.log("fail-----", res);
},
complete: function (res) {
console.log("complete-----", res);
},
});

操作步骤:

  • 点击按钮无反应

预期结果:

  • 回到当前定位点

实际结果:

  • 无反应

bug描述:

HBuilderX 2.3.6版本发行h5,moveToLocation无回调


更多关于uni-app HBuilderX 2.3.6版本发行h5 moveToLocation无反应的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app HBuilderX 2.3.6版本发行h5 moveToLocation无反应的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在HBuilderX 2.3.6版本中,moveToLocation方法在H5平台确实存在兼容性问题。这是由于该版本中H5地图组件对部分API的支持不完善导致的。

根据你的代码分析,问题可能出在以下几个方面:

  1. H5平台限制:uni-app的map组件在H5端依赖于浏览器原生的地理定位功能。moveToLocation方法需要获取当前定位信息,但H5端可能没有正确触发定位权限请求。

  2. API调用时机:确保在页面渲染完成后再调用moveToLocation。可以在onReady生命周期中调用,或者添加延时确保地图已初始化。

  3. 权限问题:H5端需要用户明确授权地理位置权限。检查浏览器是否已授予定位权限,或者尝试在用户交互事件(如点击按钮)中调用此方法。

临时解决方案

  • 使用uni.getLocation先获取当前位置,然后通过mapContext.translateMarker或设置地图中心点的方式实现类似效果。
  • 考虑升级到更高版本的HBuilderX,后续版本可能已修复此问题。

替代代码示例

uni.getLocation({
  type: 'gcj02',
  success: (res) => {
    const map = uni.createMapContext("map", this);
    map.moveToLocation({
      latitude: res.latitude,
      longitude: res.longitude
    });
  }
});
回到顶部