本节书摘来自异步社区《PhoneGap移动应用开发手册》一书中的第1章,第1.6节调整位置传感器更新时间间隔,作者 【英】Matt Gifford,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.6 调整位置传感器更新时间间隔
PhoneGap移动应用开发手册
使用getCurrentPosition方法,可以获取以GPS坐标表示的设备位置。本例中,通过设定的间隔持续获取更新信息,以获取当前位置。
实现步骤
通过传递一个包含多个参数的可选项,设置时间间隔,提高精确度。
(1)创建HTML初始化框架,并添加需求的cordova- 2.0.0.js文件。
(4)现在添加onDeviceReady函数执行startWatch方法,代码如下。
(5)创建startWatch函数。首先,创建options变量保存传入该函数的可选参数。设置frequency值为5000毫秒(5秒),并将enableHighAccuacy设置为true。
(6)下一步,将watchPosition方法赋给先前定义的变量watchID,此变量用来检查当下位置是否正被监视。
(7)传递已设置的其他参数,将options变量传递给watchPosition方法。
(8)初始调用函数创建完成后,现在开始设计在成功回应后执行的onSuccess函数。将返回的position对象作为参数传入该函数。
(9)声明一些变量来保存从响应中获得的详细信息,它们以timestamp、latitude、longitude和accuracy变量的形式出现。同时需要创建一个元素变量,引用用于显示输出信息的geolocation div元素。
(10)通过访问position对象的属性,将返回值赋给相关的变量。
(11)最后,将这些变量设置连接为字符串,并将其设置为div元素中的HTML。
(13)运行程序时,输出效果如图1.8所示。
实现原理
PhoneGap API中的watchPosition方法以异步函数方式运行,持续检查设备当前位置的变化。一旦检测到设备位置发生变化,将以position对象的形式返回当前地理位置信息。
在持续检测的循环过程中,onSuccess负责处理成功的响应,并将返回值显示到屏幕上。
相关内容
getcurrentPosition和watchPosition函数中有3个可选的参数。
enablehighaccuracy:布尔值变量。决定用户选择的定位精度。默认(false)情况下,使用移动或网元网络获取位置信息。若设置为true,则会使用更加精确的定位方式,如卫星定位。
Timeout:Number类型变量,单位为毫秒,定义获取成功响应的最大等待时间。
MaximunAge:Number类型变量,单位为毫秒,如果缓存的数值小于指定的时间,则使用MaximumAge。
安卓设备中必须将enableHighAccuracy设置为true,才能成功返回位置结果。
清除更新时间间隔
用户可以停止持续的位置请求,或通过程序调用PhongGap API中的clearWatch方法清除更新间隔。清除更新时间间隔、停止检测的方法,与清除通过持续更新获取的加速计数据的方法,完全一样。