其实定位直接引入高德或百度的api,就可以调用其中的方法获取定位了,但是公司抠门,用里面的api会有每日访问上限,普通个人用户是5000次,并发为30
什么是navigator.geolocation
navigator.geolocation对象提供了可以公开访问地理位置的方法,其中navigator为浏览器内置对象。检测浏览器是否支持定位API,只需要检测geolocation是否存在于navigator中即可。对于移动Web开发者,大多数情况只需要获取用户的当前位置,此时可以使用getCurrentPosition()方法来获取当前位置的坐标值。getCurrentPosition()被调用时会发起一个异步请求,浏览器会调用系统底层的硬件(如GPS)来更新当前的位置信息,当信息获取到之后会在回调函数中传入position对象。
总结:就是gps定位
使用:
!!注意:
协议必须是https(之前在http下试了半天,人裂开)
手机需要开启定位
如果第一次请求定位权限被拒绝,需要清除浏览器缓存才能再次获取请求权限
//Geolocation获取当前位置
function getNavigatorGeoLocation(){
//判断浏览器是否支持geolocation
if(navigator.geolocation){
//参数
let options={
enableHighAccuracy:true, //是否启用高精确度模式
maximumAge:1000, //浏览器重新获取位置信息的时间间隔
timeout:15000,//请求超时时间 (15s)
}
//分别为成功回调函数,失败回调函数,参数
//该方法请求一次
navigator.geolocation.getCurrentPosition(success,error,options)
//请求多次,监听地理位置变化(根据需求看使用哪个)这里调用会返回一个数字 watchId
//navigator.geolocation.watchPosition(success,error,options)
//清除监听
//navigator.geolocation.clearWatch(watchId)
}else{
//浏览器不支持geolocation
console.log("当前系统不支持GPS API")
}
}
//请求成功的回调
function success(position){
console.log(position)
console.log('经度='+position.coords.longitude)
console.log('纬度='+position.coords.latitude)
console.log('位置精度='+position.coords