网页html数据定位,html5 Geolocation 地理定位

一、Geolocation 概述

Geolocation API 在网页中使用 geolocation 对象向javaScript 提供经度和纬度。利用 geolocation 对象,可以获取用户位置和跟踪用户位置的变化。

1.1 Geolocation API 获取地理位置的方式

设备使用下列数据源:

IP地址 - 任何地方可用,不精确

GPS - 很精确,定位需要时间长,耗电大,室内效果不好,需要额外设备

WiFi基站的mac地址 - 精确,可在室内使用,在无线接入点少的地方效果不好

GSM或CDMA基站 - 相当准确,可在室内使用,在基站较少的地区效果不好

为了使用更高的准确度,许多设备使用一个或更多的数据源组合。

1.2 地理位置获取流程:

用户打开需要获取地理位置的web应用。

应用通过Geolocation API 向浏览器请求地理位置,浏览器拦截请求,向用户请求授权。

假设用户允许,浏览器从设备查询相关信息,如IP地址、WIFI地址或GPS坐标。

浏览器将相关信息发送给信任的外部定位服务器,服务器返回具体的地理位置。

1.3 隐私

Geolocation API 规范提供了一套保护用户隐私的机制,必须先得到用户明确许可,才能获取用户的位置信息。

访问使用Geolocation API的页面应用时,会触发隐私保护机制,浏览器会询问用户是否共享位置信息。

用于收集位置数据的应用程序的开发人员应考虑关于隐私的以下准则:

因为位置数据属于敏感信息,所以开发人员应考虑遵循以下准则:

仅在必要时请求位置信息,并且仅将位置信息用于其原计划用于的任务。

如果用户没有授权存储这些数据,那么应用程序应该在相应任务完成后立即删除。

如果要在服务器上存储位置数据,请务必确保位置数据不受到未经授权的访问,并允许用户更新和删除此信息。

1.4 应用场景

更新本地信息

显示用户周围的兴趣点

车载导航系统

二、Geolocation 使用

Geolocation API的使用很简单,请求一个位置信息,如果用户同意,就返回位置信息。

2.1 检测浏览器是否支持Geolocation

在使用html5 Geolocation API时,应确保浏览器支持Geolocation API.

if (navigator.geolocation) { console.log('Geolocation is supported.');} else { console.log('geolocation is not supported in your broswer.');}

2.2 getCurrentPosition 和 watchPosition

使用 getCurrentPosition 方法获取当前的地理位置。

使用 watchPosition 方法监视位置随时间变化的情况。

语法:

// getCurrentPositionnavigator.geolocation.getCurrentPosition(successCallback, errorCallback, options);// watchPositionnavigator.geolocation.watchPosition(successCallback, errorCallback, options);

这两个方法都就使用的是异步回调的方式。它们有相同的参数:

successCallback – 为浏览器成功获得位置信息后的回调函数。

errorCallback – 用于位置信息获取失败时的回调函数。

options – 配置参数,可以调整geolocation的数据收集方式

enableHighAccuracy - 指示浏览器获取高精度的位置,默认为false。当开启后,可能没有任何影响,也可能使浏览器花费更长的时间获取更精确的位置数据。

timeout - 最长有效期,在重复获取地理位置时,此参数指定多久再次获取位置。默认为0,表示浏览器需要立刻重新计算位置。

maximumAge - 表示程序能接受的被缓存位置的最大过期时间。接受一个数字作为参数,默认为0微秒。这就意味这默认每次获取位置都必需重新获取一个新位置。

2.3 clearWatch()

这个方法接受一个参数,需要清理监视位置变化的方法的id:watchID(这个参数由watchPosition方法返回)。

2.4 示例:

var watchId = navigator.geolocation.watchPosition(function(position) { // succes callback var coords = position.coords; console.log(coords.latitude); // 纬度 console.log(coords.longitude); // 经度 console.log(coords.accuracy); // 准确度,由于geolocation的实现方式,呈现返回值时一定要检查返回值的准确度 console.log(coords.altitude); // 海拔,以米为单位,如不支持altitude特性,返回null console.log(coords.altitudeAccuracy); // 海拔经度,以米为单位,如不支持altitude特性,返回null console.log(coords.heading); // 行进方向,相对正北 console.log(coords.speed); // 行进速度,单位m/s console.log(timestamp); // 获取位置的时间}, function(error) { // error callback console.log('获取位置信息失败。'); console.log(error.code); // UNKNOWN_ERROR (error code 0) - 未知错误 // PERMISSION_DENIED (error code 1) - 用户拒绝共享地理位置 // POSITION_UNAVAILABLE (error code 2) - 无法获取当前位置 // TIMEOUT (error code 3) - 在指定时间无法获取位置会触发此错误。}, { // options enableHighAccuracy: true, maximumAge: 30000, timeout: 27000 });

三、Geolocation Demo

扩展阅读

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML5提供了获取地理位置以及定位的功能。通过Geolocation API可以访问用户的位置信息,具体实现方式如下: 首先需要使用navigator.geolocation对象来获取位置信息。该对象包含三个属性:getCurrentPosition、watchPosition和clearWatch。getCurrentPosition方法可以获取用户的当前位置信息,watchPosition方法则可以实时监控用户位置的变化。clearWatch方法用于清除watchPosition的操作。 在获取地理位置信息之前需要判断浏览器是否支持Geolocation API,可以通过以下代码进行判断: if (navigator.geolocation) { // 支持Geolocation API } else { // 不支持Geolocation API } 获取用户位置信息的代码如下: navigator.geolocation.getCurrentPosition(function(position) { // 获取到位置信息后的处理操作 }, function(error) { // 获取位置信息失败的处理操作 }); 在该方法中可以添加两个回调函数,成功获取到位置信息后会调用第一个回调函数,否则会调用第二个回调函数。 定位则是通过GPS、WIFI等技术来获取用户所在的地理位置,定位可以通过访问IP地址或者使用HTML5提供的Geolocation API实现。通过IP地址获取的精度一般不够高,而Geolocation API可以获得更加准确的地理位置信息。 总之,HTML5提供了非常方便的方式来获取用户的位置信息和定位,使得开发者可以更加灵活地利用这些信息为用户提供更好的体验服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值