问题点:
plus.geolocation.getCurrentPosition();
在uni-app中调用此5+方法时
在真机运行状态下没有问题,但是云打包后安装在手机(同一台)这是一台魅蓝 metal和小米6 上后无法获取定位信息
我是哪里错误了,求大神指点迷津
实际代码
<template>
<view class="uni-main">
<view class="employeePup">
<view style="align-self:flex-end;bottom: 10px;">
<test style="font-size: 35px">{{Anchor}}</test>
<image class="anchorIcon" src="../../static/img/u31.png" mode="widthFix" @click="getAnchor"></image>
</view>
</view>
</view>
</template>
<script>
export default {
computed: {
},
data() {
return {
Anchor:"123"
};
},
methods: {
getAnchor() {
//手机获取当前地址
console.log('点击成功');
plus.geolocation.getCurrentPosition(
function(p) {
this.Anchor = p.addresses
console.log('获取地址' + JSON.stringify(p.addresses));
}.bind(this)
);
}
}
}
</script>
<style scoped>
</style>
3 个回复
Z***@foxmail.com (作者)
已经自行解决下面是总结:
问题,为什么真机运行可以获取地址,而打包后无法获取?
因为HBuilderXIDE的安卓基座APP(20181212)应用中包含了“高德地图SDK”(根据观测返回的定位结果与百度的定位结果略有不同,同时他们的coordsType:gcj02,而不是system默认的coordsType:wgs84 可能存在错误预判)。而同时根据 [h5+文档] 默认值按以下优先顺序获取(amap>baidu>system)所以在真机运行时可以获取定位信息。打包的时候没有添加地图SDK相关配置,所以这个时候只能调用system获取经纬度信息,而且可能因为,默认值按以下优先顺序获取(amap>baidu>system)。导致system获取相当慢或者不能获取
解决方案:
指定地图SDK,
1、开启地图权限,
2、填写地图运营商密钥
3、plus.geolocation.getCurrentPosition的三个参数都要写最后一个参数对象的provider属性根据你的地图运营商填写,这个是以百度为例子
其他信息可以参考
http://ask.dcloud.net.cn/question/44257
坑:
1、dcloud官方的 文档 地图sdk配置申请和配置信息老旧
这里说一下最新配置流程:在附件图片
2、plus.geolocation.getCurrentPosition的三个参数最好都要写吧。尤其不能只写第一个和第三个参数。这里我傻13一下。
总结:
仔细看文档吧,很多问题可能都是文档没有了解清楚导致的,
小白的路还有很长要走加油!
1***@qq.com - Bert
还是没用~哭了
水水网
还是没用 哭了 。,,