微信公众号h5项目安卓手机定位失败原因之一

文章讲述了在微信公众号H5项目中,使用微信JSSDK获取经纬度时遇到的问题,苹果手机定位正常返回数字,而安卓手机返回字符串。解决方法是去掉toFixed(),因为安卓返回值类型不适用该函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:微信公众号h5项目,使用微信jssdk获取经纬度,使用腾讯地图解析,苹果手机定位功能正常,安卓手机定位失败

使用微信jsdk方法调取经纬度信息  配置为type:gcj02 

wx.getLocation({

  type: 'wgs84', // 默认为wgs84gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'

  success: function (res) {

    var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90

    var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180

    var speed = res.speed; // 速度,以米/每秒计

    var accuracy = res.accuracy; // 位置精度

  }

});

//获取定位经纬度
            if (this.$wechat && this.$wechat.isWechat()) {
                console.log('phoneList获取地理信息');
                this.$wechat.location((res) => {
                    //苹果手机返回经纬度为数字,安卓手机为字符串
                    console.log('微信返回地理信息', res)
                    // let latitude = (res.latitude).toFixed(6); // 纬度,浮点数,范围为90 
                    // let longitude = (res.longitude).toFixed(6); // 经度,浮点数,范围为

                    let latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
                    let longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。

                    console.log('处理经纬度-----',typeof(latitude));
                    this.httpgz({//封装的请求方法
                        url : '后端调腾讯地图处理经纬度接口',
                        method:'get',
                        data:{latitude,longitude},
                        success: res => {
                            if (res.code == 200){
                                console.log('获取地址',res);
                                
                            }
                        }
                    })
                    
    
                    
                })
            };

反复测试排查,得出推断的结论,苹果手机调wx.getLocation 返回经纬度信息为number类型,安卓手机返回经纬度为string类型,导致我使用的toFixed()方法报错

删除toFixed()方法,解决问题

### UniApp 实现跳转至微信公众号的方法 #### 一、准备工作 为了使UniApp能够成功跳转到微信公众号,需先完成一系列准备操作。这包括但不限于注册微信公众平台账号以及创建相应的应用或测试号[^1]。 #### 二、集成微信JS-SDK 要实现从UniApp向微信公众号的跳转功能,需要引入并配置微信JS-SDK来处理页面内的交互逻辑。具体来说,在HTML文件头部加入如下脚本加载语句: ```html <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> ``` 接着调用微信提供的`wx.config()`方法来进行权限验证设置,并确保已获得必要的API列表访问权[^2]。 #### 三、检测当前环境是否处于微信浏览器内 由于该特性仅适用于在微信内置浏览器中运行的应用程序,因此建议编写一段简单的JavaScript代码用于判断当前上下文是否满足这一前提条件。如果不在微信环境中,则给出提示信息而非尝试执行后续流程[^3]。 ```javascript function isWeChatBrowser() { const ua = navigator.userAgent.toLowerCase(); return /micromessenger/.test(ua); } if (!isWeChatBrowser()) alert('请在微信客户端打开此链接'); ``` #### 四、构建分享卡片数据结构 当确认是在微信环境下后,可以利用微信JS-SDK中的`onMenuShareTimeline`等函数定义好想要展示给用户的分享内容样式(如标题、描述文字、缩略图URL)。这些参数将会直接影响最终呈现出来的视觉效果[^4]。 ```javascript wx.onMenuShareTimeline({ title: '来自我的精彩推荐', // 分享标题 link: window.location.href, // 分享链接 imgUrl: '', // 分享图标 }); ``` 需要注意的是,上述过程主要针对由UniApp编译成H5版本后的场景讨论;对于原生iOS/Android端则不适用此类方式直接跳转至微信公众号文章页。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值