HTML要命一百天 -- 第四天【地理位置Geolocation】

Geolocation

Geolocation是一个获取用户的浏览器所在设备的位置的一组开发api,简单点的来说就是获取地理位置信息 —— 经度(Longitude)和纬度(Latitude)。

由于该功能涉及用户隐私,所以浏览器能不能获取定位是取决于用户需要的。如下图,使用该功能时候,谷歌浏览器会请求用户获取位置信息:

如何使用

Geolocation 对象是存在于浏览器对象 Navigator 中,所以调用的时候需要使用 navigator.geolocation 来获得。
navigator.geolocation 会返回一个 Geolocation 对象,该对象有如下三个方法:

  • getCurrentPosition : 获取设备当前位置。
  • watchPosition : 位置改变监听器
  • clearWatch : 清除位置监听器
getCurrentPosition
navigator.geolocation.getCurrentPosition(success, error, options)

success:成功获取位置后的回调函数,参数是一个 Position 对象。
error:获取位置失败时的回调函数,参数是一个 PositionError 对象。可选。
options:设置 获取/监听 位置方法参数的对象,有如下3个配置项。可选。

enableHighAccuracy<Boolean>: 是否使用最高精度。默认值: false。使用高精度会导致更多电量的损耗和较慢的响应时间。
timeout<long>: 在多少毫秒内返回一个位置。默认值是Infinity。
maximumAge<long>: 缓存位置的时间限制。默认值:0。

// 如何获取位置信息
const Geolocation = navigator.geolocation;
const getCbFuc = (data) => {console.log(data)};
const positionOptions = {
    enableHighAccuracy: true,
    timeout: 5000,
    maximumAge: 5000,
};
Geolocation.getCurrentPosition(getCbFuc , getCbFuc , positionOptions);

获取位置成功后会返回Position对象,里面存储着当前的位置信息,如下图:
属性 定义
coords.accuracy 位置精度
coords.altitude 海拔
coords.altitudeAccuracy 海拔精度
coords.heading 方向,正北为0°,移动设备可用
coords.latitude 纬度
coords.longitude 经度
coords.speed 速度
timestamp 响应的时间戳
watchPosition 和 clearWatch
navigator.geolocation.watchPosition(success, error, options);
// id -> 需要被终止的位置监听器的标识
navigator.geolocation.clearWatch(id)

watchPositiongetCurrentPosition 一样,接收同样的参数并返回相同的位置对象,不同的是在调用watchPosition 方法后,会返回此监听器的 id,如果设备位置发生改变,则会继续返回新的位置信息,这就实现了位置的监听,如果想终止监听,则使用 clearWatch 方法终止对应的监听器即可。如下图:

番外 -- 个人理解和思考
  H5这个方法为前端开发者提供了位置定位功能,但此方法要在https协议下才可以使用,其次,对于此定位方法 Gps > IP,在没有装载 Gps 模块的设备,例如大多数PC,请求此方法,就要通过 IP 请求地址,但这种方法并不是浏览器可以实现的,如果要想获取地址,就得上传到服务器的查询和计算位置信息,而大多数浏览器都是使用谷歌提供的API来查询,Emm...,所以,该翻的墙还是要翻,不能因为一堵墙阻止我们学习的道路。
  各位,共勉!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、简介 地理位置特性能够识别你所在的地理位置并且在你允许的情况下,把位置信息分享给别人。 识别地理位置的方法: ...
    destiny0904阅读 496评论 0 0
  • 1Geolocation简介 HTML5 Geolocation(地理定位)用于定位用户的位置。 1.1定位用户的...
    Kevin_Junbaozi阅读 1,379评论 0 1
  • HTML5 是 HTML 最新的修订版本,2014 年 10 月由万维网联盟(W3C)完成标准制定。 HTML5 ...
    神齐阅读 1,010评论 0 1
  • HTML5 Geolocation API是新增的地理位置应用程序接口。它提供了一个可以准确感知浏览器用户当前地理...
    kylelin阅读 3,701评论 7 11
  • var city; function getCity() { //判断浏览器是否支持geolocation if(...
    记忆的伤痕阅读 2,426评论 0 1