美文网首页
无标题文章

无标题文章

作者: 舒漱 | 来源:发表于2020-03-06 19:44 被阅读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处理跨域问题的方式来跟百度的定位服务器拿定位信息,触发了非业务域名警告。

    相关文章

      网友评论

          本文标题:无标题文章

          本文链接:https://www.haomeiwen.com/subject/gmlofqtx.html