navigator.geolocation vue H5定位在移动端ios版本12.2微信中不能使用

2,572 阅读1分钟

开发遇到的一点问题,在网上找了很久没有找到,解决之后,想总结一点自己心得,不喜勿喷。 以下都是vue开发,其他情况我没测试 也不知道。

第一个坑

Internet Explorer 9、Firefox、Chrome、Safari 以及 Opera 支持地理定位。

IE9在W3c上说支持,但是在caniuse查到的并不支持。实测了一下 IE9支持。

第二坑

必须要采用https请求,这是改版之后,不然请求失败。

第三坑

ios版本微信12.2 即使https有时候也不能使用,这是为啥呢,我也不知道。 解决方案: 在index.html里面写方法,其他地方好像检测不到地理位置 安卓手机没有这种情况

附上代码

// 定位
            navigator.geolocation.getCurrentPosition(
                position => {
                    let lat = ''
                    let log = ''
                    lat = position.coords.latitude; //纬度
                    log = position.coords.longitude; //经度
                    console.log("纬度:" + lat + ",经度:" + log);
                    localStorage.setItem("gps",JSON.stringify( {
                    longitude: log,
                    latitude: lat,
                    address: ""
                    }));
                },
                error => {
                    console.log(error);
                },
                {
                    enableHighAcuracy: true, // 指示浏览器获取高精度的位置,默认为false
                    timeout: 5000, // 指定获取地理位置的超时时间,默认不限时,单位为毫秒
                    maximumAge: 3000 // 最长有效期,在重复获取地理位置时,此参数指定多久再次获取位置。
                }
            );

不想写了,原本打算好好写的,心情不太好, 直接简单说一下, 可能是一个不称职的前端开发。