PhoneGap中文网

 找回密码
 立即注册
查看: 18754|回复: 0
打印 上一主题 下一主题

PhoneGap开发的指南针示例

[复制链接]

493

主题

2035

帖子

6894

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6894
跳转到指定楼层
楼主
发表于 2013-7-15 18:18:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

phonegap开发的指南针示例如下,代码分享给大家
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>

  4. <title>指南针</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
  6. <link href="css/css.css" rel="stylesheet" type="text/css" />
  7.    
  8. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
  9. <script type="text/javascript" charset="utf-8">

  10.     var b=10,c=100,d=20,t=0,ang=0;drgNum=0;
  11.     var cv, ctx,prevAng = 0,currAng = 0;

  12.     var img = new Image();   
  13.     img.src = "images/znz_04.png";
  14.    
  15.     // watchID是当前 “watchHeading” 的引用
  16.     var watchID = null;
  17.         
  18.     document.addEventListener("backbutton", onBackKeyDown, false);
  19.     // 等待加载PhoneGap
  20.     document.addEventListener("deviceready", onDeviceReady, false);
  21.     //
  22.     function onDeviceReady() {
  23.            //startWatch();
  24.         // Register the event listener
  25.         document.addEventListener("backbutton", onBackKeyDown, false);
  26.     }
  27.     // 开始监视罗盘
  28.     function startWatch() {
  29.    
  30.         // 每隔3秒钟更新一次罗盘数据
  31.         var options = { frequency: 10 };
  32.    
  33.         watchID = navigator.compass.watchHeading(onSuccess, onError, options);
  34.     }
  35.    
  36.     // 停止监视罗盘
  37.     function stopWatch() {
  38.         if (watchID) {
  39.             navigator.compass.clearWatch(watchID);
  40.             watchID = null;
  41.         }
  42.         var element = document.getElementById('heading');
  43.         element.innerHTML = '停止' + drgNum+'°';
  44.     }
  45.    
  46.     // onSuccess: 返回罗盘的当前朝向
  47.     function onSuccess(heading) {
  48.         var fangweiStr = "";
  49.         var element = document.getElementById('heading');
  50.         element.innerHTML = getPositonStr(360-heading)+'' + Math.round(heading)+'°';
  51.         setRotationFun((360-heading)*Math.PI/180);
  52.         drgNum = heading;
  53.     }
  54.    
  55.     // onError: 获取罗盘朝向失败
  56.     function onError() {
  57.         alert('onError!获取罗盘朝向失败');
  58.         stopWatch();
  59.     }

  60.     function getPositonStr(d){
  61.         var str = "北";
  62.         if(d>=340 && d<20 ){
  63.             str="北";
  64.         }
  65.         if(d<=340 && d>290){
  66.             str="东北";
  67.         }
  68.         if(d<=290 && d>250){
  69.             str="东";
  70.         }
  71.         if(d<=250 && d>200){
  72.             str="东南";
  73.         }
  74.         if(d<=250 && d>200){
  75.             str="东南";
  76.         }
  77.         if(d<=200 && d>160){
  78.             str="南";
  79.         }
  80.         if(d<=160 && d>110){
  81.             str="西南";
  82.         }
  83.         if(d<=110 && d>70){
  84.             str="西";
  85.         }
  86.         if(d<=70 && d>20){
  87.             str="西北";
  88.         }
  89.         return str;
  90.     }

  91.     function setRotationFun(ang){
  92.           //setRotationFun(ang*Math.PI/180);
  93.           cv = document.getElementById("compassImgDiv");
  94.           ctx = cv.getContext("2d");
  95.           cv.width = 355;
  96.           cv.height = 355;
  97.           ctx.save();
  98.           ctx.translate(cv.width/2, cv.height/2);
  99.           ctx.scale(1, 1);
  100.           ctx.rotate(ang);
  101.           ctx.drawImage(img, -355/2, -355/2);
  102.           ctx.restore();
  103.     }
  104.     //格式化数字,保留num位小数
  105.     function formatNum(str,num){
  106.         var s = parseFloat(str);
  107.         if(!num) num=4;
  108.         if(isNaN(s)){
  109.             return;
  110.         }
  111.         s = s.toFixed(num);
  112.         if(s=="" || s<0) s=0;
  113.         return s;
  114.     }
  115.    
  116.    

  117.     // Handle the back button
  118.     //
  119.     function onBackKeyDown() {
  120.         // 显示确认对话框
  121.         navigator.notification.confirm(
  122.             '是否要退出罗盘程序',  // 显示信息
  123.             onConfirm,              // 按下按钮后触发的回调函数,返回按下按钮的索引
  124.             '退出程序',            // 标题
  125.             '确认,取消'          // 按钮标签
  126.         );
  127.         
  128.     }
  129.    
  130.     // 处理确认对话框返回的结果
  131.     function onConfirm(button) {
  132.         if(button == 1){
  133.             navigator.app.exitApp();
  134.         }
  135.     }
  136.    
  137. </script>
  138. </head>
  139. <body>
  140. <div class="all">
  141.     <div id="heading" class="top">点击开始</div>
  142.     <div class="middle">
  143.         <canvas id="compassImgDiv" class="dial"></canvas>
  144.     </div>
  145.     <div class="bottom">
  146.         <div class="start"><img src="images/tm.gif" width="198px" height="79" border="0"  onclick="startWatch();"></div>
  147.         <div class="kong"></div>
  148.         <div class="stop"><img src="images/tm.gif" width="198px" height="79" border="0" onclick="stopWatch();"></div>
  149.     </div>

  150. </div>
  151. </body>
  152. </html>
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

ionic4视频教程

Archiver|手机版|小黑屋| PhoneGap中文网 ( 京ICP备13027796号-1 )  

GMT+8, 2024-4-20 10:23 , Processed in 0.042393 second(s), 33 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表