摘要
规范定义了脚本方式访问主机地理位置信息的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定位技术,用于手机应用,网页的定位技术,和地图结合的很好,应该适当些时髦的技术
HTML5 Geolocation
HTML5的地理定位功能演示
HTML5Geolocation-英文原版.zip
基于HTML5Geolocation考勤管理系统方案.doc
主要介绍了Html5 Geolocation获取地理位置信息实例,具有一定的参考价值,有兴趣的同学可以了解一下。
HTML5 Geolocation(地理定位) HTML5 Geolocation(地理定位)用于定位用户的位置。 定位用户的位置 HTML5 Geolocation API 用于获得用户的地理位置。 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户...
Seeker:利用HTML5,Javascript,JQuery和PHP以高精度获取设备信息和GeoLocation
基于HTML5_Geolocation_考勤管理系统.doc
Geolocation是HTML5标准下的一个Web API,利用它可以获取设备的当前位置信息(坐标),本篇文章主要介绍了三个方法,非常具有实用价值,需要的朋友可以参考下
PhoneGap,API帮助文档翻译整理9-Geolocation_(定位)
geolocation,电脑手机都可以。
MapNav-Geolocation Toolkit 1.5.0 插件为最新版。是Unity 地理定位功能开发的必选插件。功能包括2D/3D对象地理定位,GPS导航和在线地图。只要你厉害,试试用这个开发个自己的轻量级 “高德地图”的App。
《HTML5高级程序设计》由旧金山HTML5用户组创建人联合另两位资深Web开发专家共同打造,为读者清晰解读了HTML5规范的缘由、发展和现状,全面展示了如何使用WebSocket、Geolocation、WebStorage、Carlvas及音频视频等...
这是将检查当前浏览器是否支持 navigator.geolocation 对象的示例网页。 如果浏览器不支持地理定位,则让页面向用户显示反馈消息。 如果支持地理定位,则尝试获取用户的当前位置,然后加载包含地图中心标记的 ...
html5入门代码大全(源码) 包含audio、video、canvas 、communication、forms、geolocation、intro、offline、storage、websocket、workers
为了顺应这个潮流,HTML5为我们提供了Geolocation库,有了它我们就能够在Web应用中轻而易举地实现上述这些功能。那么今天我就为大家介绍一下这个库的使用。 基本用法 首先,我们可以从浏览器的navigator对象中通过...
本书由旧金山HTML5用户组创建人联合另两位资深Web开发专家共同打造,为读者清晰解读了HTML5规范的缘由、发展和现状,全面展示了如何使用 WebSocket、Geolocation、Web Storage、Canvas及音频视频等前所未有的新...
本书由旧金山HTML5用户组创建人联合另两位资深Web开发专家共同打造,为读者清晰解读了HTML5规范的缘由、发展和现状,全面展示了如何使用 WebSocket、Geolocation、Web Storage、Canvas及音频视频等前所未有的新...