天天看点

《PhoneGap移动应用开发手册》——1.8节创建可视化罗盘显示设备的移动方向

本节书摘来自异步社区《phonegap移动应用开发手册》一书中的第1章,第1.8节创建可视化罗盘显示设备的移动方向,作者 【英】matt gifford,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.8 创建可视化罗盘显示设备的移动方向

phonegap移动应用开发手册

phonegap api向开发者提供了获取设备的坐标信息及前进方向信息。开发者可以利用这些信息自定义一个罗盘工具来显示设备的移动。

实现步骤

(1)创建html初始化框架,并添加需要脚本文件cordova-2.0.0.js的引用。

《PhoneGap移动应用开发手册》——1.8节创建可视化罗盘显示设备的移动方向

(2)本例将以类名的方式调用dom中的特定元素。为此我们使用xui javascript库

(3)创建script标签块存放自定义的javascript用来和phonegap api交互,代码如下。

《PhoneGap移动应用开发手册》——1.8节创建可视化罗盘显示设备的移动方向

(4)在body标签下添加一个新的div元素,并将container的class属性赋给该元素。用来存放显示的罗盘元素。

(5)罗盘本身由两个图像组成。每个图像都被分配了一个class名,以方便在javascript中对其调用。将这两个元素添加到container元素中。

(6)接下来,在图像下面添加一个新的div元素,并将id属性设置为heading。该元素用来存放从罗盘回应的文本输出。

《PhoneGap移动应用开发手册》——1.8节创建可视化罗盘显示设备的移动方向

(10)这两种请求使用相同的onsuccess和onerror方法进行输出处理和数据管理。onsuccess方法将以heading对象的方式返回数据。

(11)返回的数据将被用来设置html内容中的heading元素,以消息字符串的方式保存在先前定义的headingdiv变量中。

(12)可视化罗盘也需要对前进方向信息做出响应。利用xui中的css方法,借助返回的magneticheading属性,可将rose图像中的transform属性值转变为rotate。这里通过调用类名.rose引用该图像。

《PhoneGap移动应用开发手册》——1.8节创建可视化罗盘显示设备的移动方向

(13)onsuccess完成后,编写onerror方法处理遇到问题时以友好的方式返回给用户,代码如下所示。

《PhoneGap移动应用开发手册》——1.8节创建可视化罗盘显示设备的移动方向

(14)在onsuccess中创建消息字符串时,调用了一个新的函数convertotext。该函数将从heading对象中接收的magneticheading值转化为文本输出显示。在xui deviceready代码块之外添加该函数。

《PhoneGap移动应用开发手册》——1.8节创建可视化罗盘显示设备的移动方向

(15)采用一些css将两个图像显示在屏幕上,确保rose图像位于罗盘图像之上。新建compass_style.css文件,并采用下面的风格添加内容。

《PhoneGap移动应用开发手册》——1.8节创建可视化罗盘显示设备的移动方向

实现原理

phonegap api罗盘功能中的watchheading方法按frequency变量传递的时间间隔更新设备的移动方向数据。如果没有指定间隔时间,则采用默认的时间间隔100微秒(1/10秒)。

在整个持续周期中,每次成功请求,onsuccess方法将被执行并将结果格式化后输出到屏幕,同时改变图像元素的transform属性,使得图像对应移动方向转动方向。

onsuccess方法以compassheading对象的方式返回设备的移动方向信息。该对象包含以下属性。

magneticheading:number类型,取值范围为0~359.9,表示一次移动的转动度数。

trueheading:number类型,取值范围为0~359.9,表示当前运动方向相对于正北的偏转度数。

headingaccuracy:number类型,表示返回的移动方向和实际移动方向之间的偏差。

timestamp:以毫秒为单位,获取移动方向的时间。

继续阅读