摘要
规范定义了脚本方式访问主机地理位置信息的API。
安全和隐私
因为地理位置信息涉及到个人隐私问题,所以API规范的者,为保护用户隐藏,应提供一种机制,由用户确认地理位置信息是否可通过此API访问。
API描述
script 以编程的方式使用Geolocation 对象,确定设备地理位置信息。
[NoInterfaceObject]
interface NavigatorGeolocation {
readonly attribute Geolocation geolocation;
};
Navigator implements NavigatorGeolocation;
[NoInterfaceObject]
interface Geolocation {
void getCurrentPosition(PositionCallback successCallback,
optional PositionErrorCallback errorCallback,
optional PositionOptions options);
long watchPosition(PositionCallback successCallback,
optional PositionErrorCallback errorCallback,
optional PositionOptions options);
void clearWatch(long watchId);
};
callback PositionCallback = void (Position position);
callback PositionErrorCallback = void (PositionError positionError);
getCurrentPosition()方法接收一个,两个,或者三个参数。调用时,它立即返回,并且通过异步的方式,尝试访问设备的当前位置信息。如果成功,successCallback被调用,传递参数为Position对象,Position表示当前设备的地理位置信息。如果失败,errorCallback 被调用,传递参数为PositionError对象,PositionError表示失败的原因。
实现getCurrentPosition方法需要执行如下步骤:
1. 运行前执行检查
(1)如果指定PositionOptions,并且maximumAge属性被定义为一个非负整数,使用这个值决定maximumAge是否可用。如果maximunAge被定义为负整数,设置maximunAge为0。
(2)如果指定PositionOptions,并且timeout属性被定义为一个非负整数,使用这个值决定timeout是否可用。如果timeout被定义为负整数,设置timeout为0。如果timeout未定义,设置timeout为无限大。
(3)如果指定PositionOptions,并且enableHighAccuracy属性被定义为一个非负整数,使用这个值决定enableHighAccuracy是否可用。其余情况,设置enableHighAccuracy为false。
2. 如果缓存Position对象,它的时长大于 maximumAge 变量,调用successCallback时使用缓存的Position对象作为参数,函数结束。
3. 如果timeout设置为0,调用errorCallback并传递PositionError对象,它的code属性被设置为TIMEOUT,函数结束
4. 开始位置获取操作(登台,通过调用特定于平台的API),有可能会使用到enableHighAccuracy变量。
5. 启动time事件,若超过timeout时长,则回调errorCallback方法。函数退出。
6. 如果调用成功,回调successCallback方法。函数退出。
7. 如果在超时前获取地理位置信息失败,则回调errorCallback,参数PositionError的code属性为POSITION_UNAVAILABLE。
watchPosition()方法需要一个,两个或三个参数。在调用时,必须立即返回一个long值唯一标识表操作,然后异步启动获取位置操作。此操作必须首先尝试该设备取得当前的位置。如果尝试成功,successCallback被调用(即,必须调用回调对象的handleEvent操作),参数为一个新的位置对象,反映设备的当前位置。如果尝试失败,必须调用errorCallback,参数为一个新的PositionError对象,反映失败的原因。获取位置操作,然后必须继续监控设备的位置,并调用相应的回调,每次这个位置的变化。获取位置操作必须继续,直到用相应标识符作为参数调用clearWatch方法。
实现watchPosition方法需要执行如下步骤:
1. 运行前执行检查
(1)如果指定PositionOptions,并且maximumAge属性被定义为一个非负整数,使用这个值决定maximumAge是否可用。如果maximunAge被定义为负整数,设置maximunAge为0。
(2)如果指定PositionOptions,并且timeout属性被定义为一个非负整数,使用这个值决定timeout是否可用。如果timeout被定义为负整数,设置timeout为0。如果timeout未定义,设置timeout为无限大。
(3)如果指定PositionOptions,并且enableHighAccuracy属性被定义为一个非负整数,使用这个值决定enableHighAccuracy是否可用。其余情况,设置enableHighAccuracy为false。
2. 如果缓存Position对象,它的时长大于 maximumAge 变量,调用successCallback时使用缓存的Position对象作为参数,函数结束。
3. 注册监听事件,查看是否设备的位置已经更新(如wifi或者蜂窝信号发生变化)
4. 开始位置获取操作(登台,通过调用特定于平台的API),有可能会使用到enableHighAccuracy变量。
5. 运行如下步骤:
(1)如果记时器未运行,启动一个定时器的超时变量的值表示数毫秒后触发。当定时器触发,调用(如果存在)errorCallback,传递一个新的PositionError对象,它的code属性被设置的TIMEOUT,然后跳到步骤6.
(2)如果该位置采集操作成功产生一个新的位置,在超时到期前,执行以下步骤:
取消挂起的计时器。需要注意的是:必需重新启动定时器,该算法一次跳回到采集步骤的开始。
如果新的位置与先前的位置不同,调用successCallback并传递新的位置对象,它反映位置收集的结果。这一步可能会受到回调频率的限制。
(3)否则,如果在超时前获取地理位置信息失败,则回调errorCallback,参数PositionError的code属性为POSITION_UNAVAILABLE。这一步可能会受到回调频率的限制。
6. 等等接收系统事件,当接收到这样的事件跳回上述步骤。
clearWatch()方法需要一个参数。在调用时,必须先检查的给予watchId的参数值。如果这个值不对应任何先前启动的守护进程,那么该方法必须立即返回,不采取任何进一步的行动。否则,由watchId参数确定收集位置的进程必须立即停止,不进行有进一步的回调。
另附一篇文章:
HTML5 Geolocation规范提供了一套保护用户隐私的机制
分享到:
相关推荐
HTML5 Geolocation
HTML5的地理定位功能演示
基于HTML5_Geolocation_考勤管理系统 知识点1: HTML5简介 HTML5是近十年来Web(互联网)标准最巨大的飞跃,和以前的版本不同,HTML5并非仅仅用来表示Web内容,它的使命是将Web带入一个成熟的应用平台,在这个平台...
HTML5是现代网页开发的核心标准之一,其引入了许多新的特性和功能,其中之一就是Geolocation API。这个API允许web应用获取用户的地理位置信息,为构建位置感知的应用提供了强大的支持。"HTML5Geolocation-英文原版....
HTML5 Geolocation是一种在Web应用中获取用户地理位置信息的关键技术,它是HTML5标准的重要组成部分,使得开发者无需依赖浏览器插件就能实现定位功能。基于这项技术的考勤管理系统方案旨在利用现代浏览器的功能,...
HTML5是下一代超文本标记语言,它在2014年由W3C(World Wide Web Consortium,万维网联盟)正式发布最终规范。这个“html5最终版规范pdf版”包含的是HTML5完整且权威的标准定义,对于Web开发者来说,是理解和掌握...
HTML5 Geolocation(地理定位) HTML5 Geolocation(地理定位)用于定位用户的位置。 定位用户的位置 HTML5 Geolocation API 用于获得用户的地理位置。 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户...
HTML5 Geolocation API是Web开发中的一个重要工具,它允许网页应用程序获取访问设备的地理位置信息,如经纬度坐标、高度、速度等。这个API是HTML5标准的一部分,为开发者提供了无须借助外部插件就能实现地理位置服务...
"基于Html5中geolocation API开发的交友应用网站"这一标题揭示了我们讨论的主题,即一个利用HTML5的Geolocation API构建的在线社交平台。Geolocation API是HTML5的一项重要功能,它允许网页应用获取用户的地理位置...
Python-Seeker是一个利用HTML5、JavaScript、jQuery和PHP技术构建的工具,旨在高精度地获取用户设备的各种信息,包括但不限于地理位置(GeoLocation)。这个项目主要面向开发者,特别是对网络应用监控、数据分析或...
### HTML5 最终规范知识点详解 #### 一、概述 HTML5是超文本标记语言(HyperText Markup Language)的第五次重大修订版本,由万维网联盟(World Wide Web Consortium, W3C)于2014年10月28日正式发布为推荐标准。...
HTML5 Geolocation是HTML5提供的一个标准API,允许网页和应用获取用户的地理位置信息,这对于开发基于用户位置的服务应用具有重要意义。下面将详细介绍HTML5 Geolocation相关知识点: 一、HTML5 Geolocation的核心...
在Web开发中,`navigator.geolocation`是HTML5引入的一个API,允许网页获取用户的地理位置。通过调用这个API,开发者可以请求访问用户的位置信息,并在用户同意后得到经纬度坐标。以下是一个简单的示例: ```...
在移动设备的支持上,HTML5提供了`Geolocation` API,允许网页获取用户的地理位置信息,为开发地理位置相关的应用提供了便利。还有`陀螺仪`和`加速度计`等硬件访问接口,让开发者能够利用手机的传感器实现更丰富的...
2. HTML5与移动网页的关系:HTML5提供了更加丰富的工具和API来开发功能强大、体验流畅的移动网页应用,例如使用Canvas API进行图形绘制,使用WebSocket实现实时通信,以及使用Geolocation API等来获取用户的位置信息...
`geolocation.getCurrentPosition` 是 Geolocation API 的关键方法,用于获取设备的当前位置。这个方法是异步的,意味着它不会立即返回结果,而是通过传递给 `geolocationSuccess` 回调函数的 `Position` 对象来传递...
《HTML5高级程序设计》由旧金山HTML5用户组创建人联合另两位资深Web开发专家共同打造,为读者清晰解读了HTML5规范的缘由、发展和现状,全面展示了如何使用WebSocket、Geolocation、WebStorage、Carlvas及音频视频等...
为了顺应这个潮流,HTML5为我们提供了Geolocation库,有了它我们就能够在Web应用中轻而易举地实现上述这些功能。那么今天我就为大家介绍一下这个库的使用。 基本用法 首先,我们可以从浏览器的navigator对象中通过...