美文网首页
Geolocation API如何获取用户当前位置

Geolocation API如何获取用户当前位置

作者: 鹤子青云上 | 来源:发表于2022-03-31 18:31 被阅读0次

    GeolocationAPI的使用非常简单,“navigator.geolocation”对象提供了可以公开访问地理位置的方法,其中navigator为浏览器内置对象。检测浏览器是否支持定位API,只需要检测geolocation是否存在于navigator中即可。对于移动Web开发者,大多数情况只需要获取用户的当前位置,此时我们可以使用getCurrentPosition()方法来获取当前位置的坐标值。getCurrentPosition()被调用时会发起一个异步请求,浏览器会调用系统底层的硬件(如GPS)来更新当前的位置信息,当信息获取到之后会在回调函数中传入position对象。

    position对象包含两个属性,一个是coords(坐标),它是一个Coordiante对象,包含当前位置信息;另一个是timestamp,表示获取到位置的时间戳。

    coordiante对象包含包括经纬度在内的一系列信息具体如下所示。

    latitude:一个十进制表示的纬度坐标。

    longitude:一个十进制表示经度的坐标。

    altitude:海拔高度(以米为单位,如果是5,表示精确到5米范围)。

    accuracy:当前经纬度信息的精度(以米为单位)。

    altitudeAccuracy:当前海拔高度的精度。

    heading:代表当前设备的朝向,该值是以弧度为单位,指示了按顺时针方向相对

    于正北的度数(例如:heading为270的时候表示正西方)。接下来,用通过一个案例来演示如何使GeolocationAPI获取当前位置。代码如demo3-6所示。

    demo3-6.html

    因为Geolocation获取当前定位除了浏览器的支持,还需要硬件设备的支持,上述代码在不支持该操作的设备上运行的结果如图3-8和图3-9。

    图3-8普通PC提示对话框1 图3-9普通PC提示对话框2

    现在我们在Mac电脑上用浏览器打开demo3-6,结果如图3-10和图3-11所示。

    在移动端用浏览器打开demo3-6,结果如图3-12和图3-13所示。

    以上内容演示了Geolocation获取当前位置的过程,值得一提的是,该案例获取的是当前位置的地理坐标,所以位置变化会导致坐标变化。

    多学一招:监视移动设备的位置变化

    接下来要介绍一个名词LBS,LBS是基于位置的服务,它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标)。

    在正文中演示的getCurrentPosition()方法只在调用时会得到位置信息,在LBS应用中,检测用户位置变化是非常常见的需求。一个做法是通过循环调用的方式去检测位置变化。

    例如,设置了一个10秒作为获取位置的间隔,这样做的缺点是:编程人员无法知道用户当前的速度,如果在飞机高铁上,10秒可能已经走了很长一段距离,这样提供给用户的位置信息可能是延迟的,如果将间隔设置的很短,又会非常耗电耗能,如果用户长时间没动,那这些查询都是无用的。

    为了解决这个问题,Geolocation还提供了watchPosition()方法,可以让系统通知编程人员用户的位置发生了变化。

    watchPosition()方法和getCurrentPosition方法在调用上类似,但方法功能与getCurrentPosition的区别是非常明显的。调用该函数时会返回一个watch ID,这个ID和setInterval()函数返回的ID类似,可以用于清除此次的监视操作。

    watchPosition()方法也接受相同的三个参数,success、error回调以及一个PositionOptions对象。

    相关文章

      网友评论

          本文标题:Geolocation API如何获取用户当前位置

          本文链接:https://www.haomeiwen.com/subject/somnjrtx.html