微擎人人商城定位不精确问题处理办法

近期在使用人人商城进行二开时,使用的是自己编写通过js调用微信授权获取用户经纬度,计算出附近一定距离内的商家位置并进行排序。但是距离一直不精确,偏差还很大,经过几次折腾还是使用人人商城系统的高德地图和百度地图的授权获取位置

但是这里有一个小坑,需要留意,这里是完整的框架自带授权获取经纬度

 /*高德地图定位*/
                // var map = new AMap.Map('amap-container');
                // window.modal = modal;
                // map.plugin('AMap.Geolocation', function () {
                //     var geolocation = new AMap.Geolocation({
                //         enableHighAccuracy: true,//是否使用高精度定位,默认:true
                //         timeout: 5000,          //超过10秒后停止定位,默认:5s
                //         maximumAge: 0,        //定位结果缓存0毫秒,默认:0(10min)
                //     });
                //     map.addControl(geolocation);
                //     geolocation.getCurrentPosition(function (status, result) {
                //         if (status == 'complete') {
                //             modal.setCookie('lat', result.position.lat, 0.1);
                //             modal.setCookie('lng', result.position.lng, 0.1);
                //             modal.location.lat = result.position.lat;
                //             modal.location.lng = result.position.lng;
                //             // modal.initMerch()
                //             modal.initTabbar();
                //         } else {
                //             /*FoxUI.toast.show("位置获取失败!"+result.message);
                //             return*/
                //             /*百度地图定位*/
                //             var geoLocation = new BMap.Geolocation();
                //             window.modal = modal;
                //             geoLocation.getCurrentPosition(function (result) {
                //                 if (this.getStatus() == BMAP_STATUS_SUCCESS) {
                //                     modal.setCookie('lat', result.point.lat, 0.1);
                //                     modal.setCookie('lng', result.point.lng, 0.1);
                //                     modal.location.lat = result.point.lat;
                //                     modal.location.lng = result.point.lng;
                //                     // modal.initMerch()
                //                     modal.initTabbar();
                //                 } else {
                //                     FoxUI.toast.show("位置获取失败!");
                //                     return
                //                 }
                //             }, {enableHighAccuracy: true});
                //         }
                //     });
                // });

如果直接使用那么你获取到的经纬度还是有很大的偏差需要你去手动处理,框架原生的判断在你两个script继承地图插件中都获取或者配置KEY的情况下,是走不到百度地图的授权这的,需要留意这一块。

我的解决办法:直接将百度地图的定位授权提出来,只使用这一个,

var geoLocation = new BMap.Geolocation();
                window.modal = modal;
                geoLocation.getCurrentPosition(function (result) {
                    if (this.getStatus() == BMAP_STATUS_SUCCESS) {
                        modal.setCookie('lat', result.point.lat, 0.1);
                        modal.setCookie('lng', result.point.lng, 0.1);
                        modal.location.lat = result.point.lat;
                        modal.location.lng = result.point.lng;
                        // modal.initMerch()
                        modal.initTabbar();
                        if (location.href.indexOf("#") == -1) {
                            location.href = location.href + "#";
                            location.reload();
                        }
                    } else {
                        FoxUI.toast.show("位置获取失败!");
                        return
                    }
                }, {enableHighAccuracy: true});

在你后台逻辑编写上获取距离上就会相对的比,高德地图和直接调用微信的授权获取的经纬度要精确得多,位置偏差相对再能接受范围内。

然后计算距离目前网上很多直接使用的地球弧度啊这些,挺好用的,你动态获取的话速度贼慢(怕是:已经实际操作过)所以就用弧度吧。

这里只是一些对于人人商城定位授权的一些见解,有什么不足和有疑问的地方感谢大家提出宝贵意见。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值