3***@qq.com
3***@qq.com
  • 发布:2022-03-25 11:36
  • 更新:2022-08-17 10:26
  • 阅读:1681

【报Bug】app端 uni.getLocation的返回值赋值给 map组件的 latitude 和 longitude 属性时, 经度更新在纬度上,纬度更新在经度上

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.3.13

手机系统: Android

手机系统版本号: Android 12

手机厂商: 小米

手机机型: redmi note10pro

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

见回复 3L 4L 5L

操作步骤:

见回复 3L 4L 5L

预期结果:

map组件的 latitude 和 longitude 属性正常更新

实际结果:

uni.getLocation的返回值赋值给 map组件的 latitude 和 longitude 属性的时候
经度更新在纬度上
纬度更新在经度上
(初始化正常,仅当赋值时异常)

bug描述:

给map组件的 longitude,latitude 更新时,经纬度更新异常

2022-03-25 11:36 负责人:DCloud_Android_ST 分享
已邀请:
3***@qq.com

3***@qq.com (作者) - 望天哥

将console.log出来的经纬度写死绑定给map,地图定位到当前位置
console.log出来的经纬度是当前位置

将经纬度绑定给map组件,定位异常
将经纬度相反的赋值给map组件(经度赋值给纬度,纬度赋值给精度),定位到当前位置

3***@qq.com

3***@qq.com (作者) - 望天哥

绑定静态经纬度

<template>  
  <view class="content">  
    我是绑定的 longitude:{{ longitude }}  
    <br />  
    我是绑定的 latitude:{{ latitude }}  
    <map class="mMap" name="" :longitude="longitude" :latitude="latitude"></map>  
  </view>  
</template>  

<script>  
export default {  
  data() {  
    return {  
      // longitude: 0,  
      // latitude: 0,  
      longitude: 120.603041,  
      latitude: 31.37329,  
    }  
  },  
  onLoad() {  
    // uni.getLocation({  
    //   type: 'gcj02',  
    //   success: (res) => {  
    //     this.longitude = res.latitude  
    //     this.latitude = res.longitude  
    //   },  
    //   fail: (err) => {  
    //     console.log(err)  
    //   },  
    // })  
  },  
  methods: {},  
}  
</script>
3***@qq.com

3***@qq.com (作者) - 望天哥

赋值给map经纬度

<template>  
  <view class="content">  
    我是绑定的 longitude:{{ longitude }}  
    <br />  
    我是绑定的 latitude:{{ latitude }}  
    <map class="mMap" name="" :longitude="longitude" :latitude="latitude"></map>  
  </view>  
</template>  

<script>  
export default {  
  data() {  
    return {  
      // longitude: 0,  
      // latitude: 0,  
      longitude: 120.603041,  
      latitude: 31.37329,  
    }  
  },  
  onLoad() {  
    uni.getLocation({  
      type: 'gcj02',  
      success: (res) => {  
        this.longitude = res.longitude  
        this.latitude = res.latitude  
      },  
      fail: (err) => {  
        console.log(err)  
      },  
    })  
  },  
  methods: {},  
}  
</script>
3***@qq.com

3***@qq.com (作者) - 望天哥

以把经度赋值给纬度
纬度值复制给经度的方式,给map组件赋值

<template>  
  <view class="content">  
    我是绑定的 longitude:{{ longitude }}  
    <br />  
    我是绑定的 latitude:{{ latitude }}  
    <map class="mMap" name="" :longitude="longitude" :latitude="latitude"></map>  
  </view>  
</template>  

<script>  
export default {  
  data() {  
    return {  
      // longitude: 0,  
      // latitude: 0,  
      longitude: 120.603041,  
      latitude: 31.37329,  
    }  
  },  
  onLoad() {  
    uni.getLocation({  
      type: 'gcj02',  
      success: (res) => {  
//注意此处!!!↓  
        this.longitude = res.latitude  
        this.latitude = res.longitude  
      },  
      fail: (err) => {  
        console.log(err)  
      },  
    })  
  },  
  methods: {},  
}  
</script>
DCloud_UNI_GSQ

DCloud_UNI_GSQ

仅安卓存在你说的问题吗?测试一下iOS是否存在你描述的情况。

  • 3***@qq.com (作者)

    我没进行过ios打包的经验,目前手边也没ios设备可以调试

    2022-03-28 09:45

  • 3***@qq.com (作者)

    只有用uni.getLocation的返回值的时候会出现这个问题,可能与 uni.getLocation 的 res.longitude 、 res.latitude 有关

    2022-03-28 09:51

  • DCloud_UNI_GSQ

    回复 3***@qq.com: 你是说uni.getLocation返回的数据是经纬度颠倒的吗?

    2022-03-28 15:05

  • 3***@qq.com (作者)

    回复 DCloud_UNI_GSQ: 对,但是console.log出来是正常的,uniapp太黑盒了,内部是有问题的,我的几个示例已经能说明问题了

    2022-04-06 09:22

  • DCloud_UNI_GSQ

    回复 3***@qq.com: 打印正常?怎样时异常?

    2022-04-06 11:12

  • 3***@qq.com (作者)

    回复 DCloud_UNI_GSQ: uni.getLocation返回值赋值给map组件的绑定值时

    2022-04-11 11:12

  • 3***@qq.com (作者)

    回复 DCloud_UNI_GSQ: https://ask.dcloud.net.cn/question/151438

    我描述的就是这个问题,既然已经修复那就关闭问题吧。另外我的这个帖子下面折叠了好多,扣了分,能不能还我?

    2022-09-30 10:02

  • DCloud_UNI_GSQ

    回复 3***@qq.com: 折叠已撤销

    2022-10-09 12:06

3***@qq.com

3***@qq.com (作者) - 望天哥

直接赋值有效,
好像只有用uni.getLocation的返回值的时候会出现这个问题
可能与 res.longitude 、 res.latitude 有关
我所有的测试都是用 hbuilderX 3.3.13 【运行到手机或模拟器】运行到我的手机上测试的

<template>    
  <view class="content">    
    我是绑定的 longitude:{{ longitude }}    
    <br />    
    我是绑定的 latitude:{{ latitude }}    
    <map class="mMap" name="" :longitude="longitude" :latitude="latitude"></map>    
        {{err}}  
  </view>    
</template>    

<script>    
export default {    
  data() {    
    return {    
      longitude: 0,    
      latitude: 0,    
      // longitude: 120.603041,    
      // latitude: 31.37329,    
            err:''  
    }    
  },    
  onLoad() {    
        this.longitude = 120.603050  
        this.latitude = 31.37329  
    // uni.getLocation({    
    //   type: 'gcj02',    
    //   success: (res) => {    
    //     this.longitude = res.longitude    
    //     this.latitude = res.latitude    
    //   },    
    //   fail: (err) => {    
                // this.err=err  
    //     console.log(err)    
    //   },    
    // })    
  },    
  methods: {},    
}    
</script>
DCloud_Android_ST

DCloud_Android_ST

HX3.4.4版本测试默认基座真机调试 未发现你描述的问题

1***@qq.com

1***@qq.com

我也遇到了同样问题,幸好在这儿看到了,把我整麻了,我测试了ios与安卓都有这样问题,使用的高德地图

1***@qq.com

1***@qq.com

暂时这么用,以前都没这个问题

该问题目前已经被锁定, 无法添加新回复