返回顶部
首页 > 资讯 > 前端开发 > VUE >HTML5怎么开发电子罗盘
  • 850
分享到

HTML5怎么开发电子罗盘

2024-04-02 19:04:59 850人浏览 独家记忆
摘要

今天小编给大家分享一下HTML5怎么开发电子罗盘的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下

今天小编给大家分享一下HTML5怎么开发电子罗盘的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

在讲解电子罗盘的时候,我们需要搞清楚两个概念:一个是地理北极,另一个是地磁北极。

1. 了解地理北极和地磁北极

地理北极是我们传统的纸质地图上的观念,即上北下南,左西右东。如果我们把地图上的南北极连成一条线,就是地球自转的轴线。

地磁的南北极是地球磁场最强的两个地方,而地磁的南极在地理北极附近,地磁的北极在地理南极附近。我们把地理的南北极连线与地磁的南北极连线之间的夹角叫作磁偏角,

请注意地磁南北极是会变的,因此,每过一段时间,或者每换了一个城市,都需要通过校正软件(或接口)来校正电子罗盘与地磁相匹配,以防止指向不准确。

如果之前用过智能手机上的指南针,那么我们都知道有一个校正过程,而html5标准也为我们提供了一个WEB校正的接口,代码如下:

window.addEventListener("compassneedscalibration", function(event){

alert('你的指南针需要校正!举着你的设备,面对着天空划横8字型。正反各三次。');

event.preventDefault();

}, true);

2. HTML5电子罗盘开发示例

本例中,我们依然通过DeviceOrientation的相关事件进行开发,代码如代码清单所示:

<!DOCTYPE html>

<html lang=zh-cn manifest=index.manifest>

<!-- 离线缓存图片文件,以便下次使用相关图片时,可以迅速载入 -->

<head>

<title>指南针</title>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width,

height=device-height,initial-scale=1.0, minimum-scale=1.0,

maximum-scale=1.0,user-Scalable=no, target-densityDpi=device-dpi">

<link href="opera.CSS" rel="stylesheet" type="text/css">

<style>

body{background-color:#404041;}

</style>

<script type="text/javascript" charset="utf-8" src="foropera.js"></script>

</head>

<body style="margin-left:0px">

<div id="helpme" style="opacity: 0.9;position:absolute;z-index:1000;top:100px;left:

20px;display:none;background-color:#333;-webkit-border-radius:15px;right:20px;">

<center style="margin-left:10px;margin-right:10px;border-bottom:1px #777

solid;"><spanstyle="color:#fff;height:30px;line-height:60px;font-size:26px;

margin-top:25px;margin-bottom:35px;">指南针</span></center>

<div

style="color:#ccc;font-size:18px;margin-left:20px;margin-right:20px;margin-top:

16p x;">通过Device api,HTML5应用在欧朋浏览器HTML5体验版调取了方向传感器。基于传感器的数据

能帮你确定方向。此demo利用此项功能制作出网页指南针。</div>

<br>

<center><button onclick="hiddeDiv('helpme')" style="opacity:1;

background-color:#777;border:0px;height:35px;line-height:25px;color:#eee;

width:140px;font-size:18px;-webkit-border-radius:5px;">关闭提示

</button></center>

<br>

</div>

<div id="help"

style="z-index:1000;position:absolute;left:0px;top:30px;"><imgsrc="help.png"

onclick="showhelp()" alt="help" /></div>

<canvas id="compass" style="margin-left:0px;margin-top:10px" width=480

height=480></canvas>

<script type="text/javascript">

function hiddeDiv(id){

document.getElementById('helpme').style.display='none';

}

function showhelp(){

document.getElementById('helpme').style.display='';

}

var canvas = document.getElementById("compass");

var ctx=canvas.getContext('2d');

window.addEventListener('deviceorientation', update, false);

var imageObj_arrow=new Image(); //实例化一个图片对象

imageObj_arrow.src="opera.png"; //将图片对象的路径设定好

var heading = 0; //初始化朝向

var current_heading = 0; //初始化当前朝向

var max_speed = 10; //初始化最大速度

window.scrollTo(0,1); //隐藏浏览器地址栏

function update(evt){ //更新函数

heading = evt.alpha+15;

}

function paint(){ //图形绘制函数

ww = canvas.width;

wh = canvas.height;

ctx.fillStyle="#404041";

ctx.fillRect(0,0,ww,wh);

ctx.save();

ctx.translate(ww/2,ww/2); //设定旋转中心

ctx.rotate(Math.PI*current_heading/180); //根据当前朝向角度旋转

ctx.drawImage(imageObj_arrow,-ww/2,-wh/2, ww, wh); //绘制指南针与针盘

ctx.restore();

deg1 = heading - current_heading; //得到偏转朝向

deg2 = 360 - Math.abs(deg1); //取得差值

step = 0;

if(Math.abs(deg1) <Math.abs(deg2)){ //判断两个角度是否一致

step = Math.min(Math.abs(deg1)/15, max_speed);

step = deg1 > 0? step: -step

}

else{

step = Math.min(deg2/15, max_speed);

step = deg1 > 0? -step: step;

}

current_heading += step; //动态调整朝向

setTimeout("paint();", 33);

}

paint(); //绘出表示针盘和指南针的函数

</script>

</body>

</html>

当转动设备时,指针会自动校正,动态旋转,始终指向北方。

3. 本例小结

在传统智能手机的原生程序开发中,指南针工具是最常见的应用之一,但基于Web进行开发在目前(截至2012年1月)还是非常罕见的。首先就是标准的支持问题,众多的浏览器尚未全面支持HTML5的Device API部分,所以几乎很少在网页上看到类似的作品。

本例展示了欧朋浏览器对HTML5的Device API的支持。

当用Canvas进行绘图操作时,抗锯齿操作并不是我们遇到的最大问题,那么最大问题是什么呢?是作品将在哪个浏览器运行的问题。如果你的作品运行在iOS系统的Safari浏览器上,那么Safari的硬件图形渲染技术将帮助你解决锯齿问题,开发者根本不需要考虑相关的锯齿问题,这是苹果公司一惯地在细节上替开发者和用户考虑比较周到的地方。但是,如果是非iOS系统,比如Android系统,那么若使用Canvas进行旋转绘图,一定会出现锯齿问题(笔者和业内很多朋友

都在这个事情上吃过亏)。

正常情况下,如果开发者按照网上的教程去旋转一幅图形,得到的结果与本示例所提供的图相比较,发现前者更加圆润平滑。

我们总结了一条非常傻瓜的经验给读者,尤其是没有图形学基础的读者:当使用Canvas进行旋转绘图出现锯齿时,尽量找比要显示的图更大的图,两者比例为2的倍数(例如要显示的图是100&times;100,则源图最好为200&times;200或400&times;400等);

同时,在找到源图后,计算一下要旋转的半径是否为整数,如果不是,请予补足(例如要显示的图是100&times;100,准备的源图为200&times;200,通过图片处理软件将图片的尺寸再增加1个像素,变为201&times;201)。

以上就是“HTML5怎么开发电子罗盘”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网VUE频道。

--结束END--

本文标题: HTML5怎么开发电子罗盘

本文链接: https://lsjlt.com/news/92285.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • HTML5怎么开发电子罗盘
    今天小编给大家分享一下HTML5怎么开发电子罗盘的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2024-04-02
  • xml格式电子发票怎么打开
    要打开xml格式电子发票,需要安装专门软件,如税务局提供的电子发票查验工具或第三方软件。具体步骤如下: 1. 下载电子发票查验工具; 2. 打开xml文件; 3. 查看发票信息。第三方软...
    99+
    2024-04-02
  • 电脑罗技驱动打不开怎么解决
    这篇文章主要介绍“电脑罗技驱动打不开怎么解决”,在日常操作中,相信很多人在电脑罗技驱动打不开怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”电脑罗技驱动打不开怎么解决”...
    99+
    2023-03-14
    电脑
  • 怎么区分Html5开发和前端开发
    这篇文章主要讲解了“怎么区分Html5开发和前端开发”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么区分Html5开发和前端开发”吧!   Html5是...
    99+
    2024-04-02
  • 怎么用Spring发送电子邮件
    小编给大家分享一下怎么用Spring发送电子邮件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Spring基于javax.mail封装了一套用于发送电子邮件的AP...
    99+
    2023-06-06
  • c# 基于wpf,怎么开发OFD电子文档阅读器
    本篇内容介绍了“c# 基于wpf,怎么开发OFD电子文档阅读器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言 OFD是国家标准...
    99+
    2023-06-07
  • 怎么用HTML5开发移动web
    这篇文章将为大家详细讲解有关怎么用HTML5开发移动web,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   一、移动web开发现状:   当下人们使用频率最高的设备...
    99+
    2024-04-02
  • HTML5借助类库怎么开发
    这篇文章主要讲解了“HTML5借助类库怎么开发”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML5借助类库怎么开发”吧!代码如下: <!DOCT...
    99+
    2024-04-02
  • 微信小程序怎么绘图罗盘
    今天小编给大家分享一下微信小程序怎么绘图罗盘的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。wx.onCompassChang...
    99+
    2023-06-26
  • xml格式电子发票怎么获取
    xml 格式电子发票可通过以下方式获取:1. 通过税务机关网站或系统查询下载;2. 通过第三方平台提供服务下载;3. 通过开票软件导出。步骤包括:登录系统或平台、输入发票信息、下载 xm...
    99+
    2024-04-02
  • HTML5怎么实现WebGL 3D版俄罗斯方块
    今天小编给大家分享一下HTML5怎么实现WebGL 3D版俄罗斯方块的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2024-04-02
  • windows10电脑软键盘怎么打开
    当电脑的电脑键盘发生常见故障一时不能应用时应该怎么办呢我们可以打开电脑上屏幕键盘来处理这个问题,那麼windows10电脑软键盘怎么打开从此难题,下边就要我和大伙儿讨论一下怎样实际操作吧。windows10电脑软键盘怎么打开方式 一:打开系...
    99+
    2023-07-10
  • 小程序开发中如何监听罗盘数据频率5次/秒
    这篇“小程序开发中如何监听罗盘数据频率5次/秒”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“小程序开发中如何监听罗盘数据频率5次/秒”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇...
    99+
    2023-06-26
  • html5开发可以用什么开发工具
    这篇文章主要介绍html5开发可以用什么开发工具,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 做html5开发可用的工具:1、Sublime Text;...
    99+
    2024-04-02
  • html5怎么让盒子居中
    在 html5 中使盒子居中,有以下方法:水平居中:text-align: centermargin: autodisplay: flex; justify-content: cente...
    99+
    2024-04-05
    css 垂直居中 绝对定位 相对定位
  • 怎么用Linux命令行发电子邮件
    小编给大家分享一下怎么用Linux命令行发电子邮件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linux 提供了几个可以让你通过终端发送电子邮件的命令,下面来展...
    99+
    2023-06-16
  • Html5怎么开发乒乓Ping Pong游戏
    Html5怎么开发乒乓Ping Pong游戏,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 Hea...
    99+
    2024-04-02
  • 怎么实现HTML5离线应用开发
    这篇文章主要介绍“怎么实现HTML5离线应用开发”,在日常操作中,相信很多人在怎么实现HTML5离线应用开发问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么实现HTML5离...
    99+
    2024-04-02
  • 怎么打开电脑的虚拟键盘
    这篇文章主要讲解了“怎么打开电脑的虚拟键盘”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么打开电脑的虚拟键盘”吧!打开电脑的虚拟键盘方法首先启动电脑,在桌面上点击左下角的开始 进入开始点...
    99+
    2023-07-01
  • PHP中的电子商务系统开发指南
    随着互联网的快速发展,电子商务成为了人们越来越重要的购物方式,也促进了很多企业的发展。而在电子商务系统的开发中,PHP作为一种流行的编程语言,被广泛应用于电子商务系统的设计和开发。本文将介绍PHP电子商务系统的开发指南。一、电子商务系统的基...
    99+
    2023-05-20
    PHP 开发指南 电子商务系统
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作