API之使用JS进行地理位置定位
js获取地理位置的接口navigator.geolocation
geolocation对象有三个方法
1.getCurrentPosition
2.watchPosition
3.clearWatch
一.getCurrentPosition方法用于获取用户的地理位置
格式:navigator.geolocation.getCurrentPosition(callback,[callback],[option])
第一个callback函数,用来处理成功获取用户地理位置的情况
函数会被传入一个对象,该对象保存了有关本次定位的具体信息
该对象包含两个属性
timestamp 保存了获取位置时的时间戳
croods 也是一个对象,保存了具体的位置信息
coords.latitude:纬度
coords.longitude:经度
coords.altitude:高度
coords.accuracy:所提供的以米为单位的经度和纬度估计的精确度
coords.altitudeAccuracy:所提供的以米为单位的高度估计的精确度
coords.heading: 移动的角度方向,相对于正北方向顺时针计算
coords.speed:以米每秒为单位的设备的当前对地速度
第二个callback函数,用来处理获取位置失败的情况
该函数也会被传入一个对象 包含了具体的错误信息
该对象包含两个属性
code 保存了错误的原因 值为1,2,3
1代表没有权限
2代表无法定位
3超时
message 保存了额外的错误信息
option 对象来决定定位的细节
option对象有三个属性可以来描述定位的具体细节
enableHighAccuracy 默认为false 设置为true可以开启更精准的定位,同时也会增加响应时间
timeout 设定超时时间 单位为毫秒 默认无限大 设置负数 会变为0
maximumAge 地理位置的缓存时间 默认为0 设置负数也为0
二.watchPosition
watchPosition的调用与getCurrentPosition是相同的,只不过watchPosition会不断的获取位置,watchPosition会返回一个ID,把该值传入clearWatch即可停止轮询
就像是setInterval和clearInterval那样的组合,当然定位失败一次,也会导致watchPosition循环停止,然后调用第二个callback来处理错误。
三.权限
是否能正常使用该API,取决于用户的选择,因为位置信息往往属于用户的隐私,为了防止恶意代码,浏览器在使用定位时,通常会向用户询问,如果用户拒绝赋予你脚本的授权,那么定义处理失败的回调函数是很有必要的。