Z***@foxmail.com
Z***@foxmail.com
  • 发布:2018-12-23 00:43
  • 更新:2020-02-26 13:41
  • 阅读:2862

云打包后无法获取地址 plus.geolocation.getCurrentPosition

分类:uni-app

问题点:
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>
2018-12-23 00:43 负责人:无 分享
已邀请:
Z***@foxmail.com

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属性根据你的地图运营商填写,这个是以百度为例子

plus.geolocation.getCurrentPosition(  
                function(p) {            
                    console.log('获取地址' + JSON.stringify(p));  
                },  
                function(e) {  
                    console.log('获取地址失败' + e.message);  
                },  
                { provider: 'baidu' }  
            );

其他信息可以参考
http://ask.dcloud.net.cn/question/44257

坑:
1、dcloud官方的 文档 地图sdk配置申请和配置信息老旧
这里说一下最新配置流程:在附件图片
2、plus.geolocation.getCurrentPosition的三个参数最好都要写吧。尤其不能只写第一个和第三个参数。这里我傻13一下。
总结:
仔细看文档吧,很多问题可能都是文档没有了解清楚导致的,
小白的路还有很长要走加油!

1***@qq.com

1***@qq.com - Bert

还是没用~哭了

水水网

水水网

还是没用 哭了 。,,

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