龙空技术网

手把手教你HTML5实现定位当前地理位置

Echa攻城狮 847

前言:

如今姐妹们对“html5forsafari”都比较关心,姐妹们都想要学习一些“html5forsafari”的相关内容。那么小编同时在网摘上网罗了一些对于“html5forsafari””的相关内容,希望大家能喜欢,小伙伴们快快来学习一下吧!

前言

前面文章中写过类似的文章《手把手教你HTML5实现根据LBS定位到商家两点之间距离多少》,建议有兴趣的小伙伴可以看看。

使用 HTML5 Geolocation API 来构建基于地理位置的应用~

各种浏览器对HTML5 Geolocation 的支持

浏览器 版本 只支持HTTPS版本 IE 9+ - Edge 12+ - Firefox 3.5+ - Chrome 5+ 50+ Safari 5+ 39+ iOS Safari 3.2+ 10.2+ Android Browser 2.1+ 56+ Chrome for Android 57+ 57+ UC Browser for Android 11.4+ -

出于安全考虑,部分浏览器只允许通过HTTPS协议使用 Geolocation API。在HTTP协议下使用Geolocation API 浏览器会抛出异常,在开发阶段,127.0.0.1和localhost 等本地域在两种协议下均可使用。

Geolocation API 通过 navigator.geolocation 全局对象进行访问,第一次访问的时候会询问用户是否允许共享位置。

判断浏览器是否支持 Geolocation API

        // 判断浏览器属否支持获取位置        if(navigator.geolocation){            console.log("可以获取");        }else{            console.log("不支持");        }

实例代码如下:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>Document</title></head><body>    获取用户地理位置    <input type="button" value="点击获取位置" id="btn">    <script>        let btnBtn = document.getElementById('btn')        btnBtn.onclick = () => { // 点击事件                getAdd()            }            // 成功回调        let success = (position) => {                console.log(`获取位置成功:${position.coords}`);                console.log(position.coords); // 获取坐标信息                // coords的常用属性                console.log(position.coords.latitude); // 获取坐标纬度                console.log(position.coords.longitude); // 获取坐标经度                console.log(position.coords.accuracy); // 获取坐标精度,单位为米                console.log(position.timestamp); // 获取位置的时间戳            }            // 失败回调        let error = (positionErr) => {            console.log(`获取位置失败:${positionErr.code}+${positionErr.message}`);        }        let options = {            enableHightAccuracy: false, // 获取高精度的位置信息,可能会增加响应时间,默认是false            timeout: 30000, // 设置超时时间,单位毫秒,如果到达设定的时间没获取到信息则回触发失败回调,默认值为0,无限大            maximumAge: 0 // 设置用户位置信息缓存的最大时间        }        let getAdd = () => {            navigator.geolocation.getCurrentPosition(success, error, options)        }        // 判断浏览器属否支持获取位置        if(navigator.geolocation){            console.log("可以获取");        }else{            console.log("不支持");        }    </script></body></html>

当获取位置失败时,会调用失败回调(error函数)。返回的参数<positionErr.code 标识错误的原因><positionErr.message错误信息描述> positionErr.code 值

UNKNOWN_ERROR(0): 其他错误PERMISSION_DENIED(1): 用户拒绝分享位置信息POSITION_UNAVAILABLE(2): 获取用户位置信息失败TIMEOUT(3): 获取用户位置信息超时推荐文章

《手把手教你HTML5实现根据LBS定位到商家两点之间距离多少》

作者:蓝海00

链接:

标签: #html5forsafari