无标题文章

2020-03-06  本文已影响0人  舒漱

项目背景:疫情期间,公司做了一个健康自查上报的功能,用于学校统计师生的健康信息和流动信息,这个功能会获取用户的定位信息,


前端的运行环境:小程序内嵌h5.


定位的实现方式:

1.h5原生方法  

navigator.geolocation.getCurrentPosition;

手机上需要用户开启定位、APP定位授权

一定要设定一个超时时间,不然会可能会一直在获取而得不到返回,超时的错误码是3

2.微信sdk定位方法  

wx.checkJsApi({

                jsApiList: ["getLocation"],

                success: function (res) {

                    self.locate(cb);

                }, fail: function (err) {

                    alert(JSON.stringify(err))

                }

            });

调用微信sdk需要取得授权,那么就至少三步 1)获取授权的信息 2)凭授权信息验证weixinsdk 3)最终才可以调用定位功能获取。当时绑定了一个同事的订阅号,在获取位置信息的时候弹出确认信息,显示的就是订阅号的名字,而这个同事的订阅号名字起飞十分的放飞自我 \(^o^)/~

3.百度或者腾讯地图定位  

let geolocation = new qq.maps.Geolocation(key, "eCodeThrough")

            geolocation.getLocation(resolve, reject, {timeout: 8000})

var geolocation = new BMap.Geolocation();

            geolocation.getCurrentPosition(resolve, reject)

都是相当成熟的解决方案,但在这里不适合,因为会有非业务域名的警告,推测是用iframe处理跨域问题的方式来跟百度的定位服务器拿定位信息,触发了非业务域名警告。

上一篇下一篇

猜你喜欢

热点阅读