<body onLoad="loadDemo()">
<header>
<h1>oldmeter演示</h1>
<h4>距离跟踪器</h4>
</header>
<section>
<article>
<header>
<h1>你的位置</h1>
<p class="info" id="status">地理位置是不是在你的浏览器支持。</p>
<div class="geostatus">
<p id="latitude">纬度:</p>
<p id="longitude">经度:</p>
<p id="accuracy">精度:</p>
<p id="altitude">海拔:</p>
<p id="altitudeAccuracy">海拔精度:</p>
<p id="heading">行进方向、相对于正北:</p>
<p id="speed">速度(m/s):</p>
<p id="timestamp">时间戳:</p>
<p id="currDist">目前距离旅行:</p>
<p id="totalDist">总距离:</p>
</div>
</header>
</article>
</section>
<footer>
<h2>使用HTML5,和你的脚!</h2>
</footer>
<script type="text/javascript">
var totalDistance=0.0;
var lastLat;
var lastLong; Number.prototype.toRadians=function(){
return this * Math.PI/;
} function distance(latitude1,longitude1,latitude2,longitude2){
var R=;//R是地球半径,单位是km
var deltalatitude=(latitude2-latitude1).toRadians();
var deltaLongitude=(longitude2-longitude1).toRadians();
latitude1=latitude1.toRadians();
latitude2=latitude2.toRadians(); var a=Math.sin(deltalatitude/) *
Math.sin(deltalatitude/) +
Math.cos(latitude1) *
Math.cos(latitude2) *
Math.sin(deltaLongitude/) *
Math.sin(deltaLongitude/);
var c=*Math.atan2(Math.sqrt(a),Math.sqrt(-a));
var d=R*c;
return d; } function updateErrorStatus(message){
document.getElementById("status").style.background="papayaWhip";
document.getElementById("status").innerHTML="<strong>Error</strong>:"+message; } function updateStatus(message){
document.getElementById("status").style.background="paleGreen";
document.getElementById("status").innerHTML=message; } function loadDemo(){
//检查浏览器是否支持geolocation
if(navigator.geolocation){
document.getElementById("status").innerHTML="在你的浏览器支持HTML5 Geolocation";
navigator.geolocation.watchPosition(updateLocation,handleLocationError,{timeout:});
}
} function updateLocation(position){ var latitude=position.coords.latitude;//纬度
var longitude=position.coords.longitude;//经度
var accuracy=position.coords.accuracy;//精度(准确度)单位米
var altitude=position.coords.altitude;//海拔
var altitudeAccuracy=position.coords.altitudeAccuracy;//海拔精度 单位米
var heading=position.coords.heading;//行进方向、相对于正北
var speed=position.coords.speed;//速度m/s
var timestamp=position.timestamp;//时间戳 document.getElementById("latitude").innerHTML="北纬度:"+latitude;
document.getElementById("longitude").innerHTML="东经度:"+longitude;
document.getElementById("accuracy").innerHTML="精度:"+accuracy+"米";
document.getElementById("altitude").innerHTML="海拔:"+altitude+"米";
document.getElementById("altitudeAccuracy").innerHTML="海拔精度:"+altitudeAccuracy;
document.getElementById("heading").innerHTML="行进方向:"+heading;
document.getElementById("speed").innerHTML="速度:"+speed+"米";
document.getElementById("timestamp").innerHTML="时间戳:"+timestamp; //合理性检查...如果accuracy的值太大就不要计算距离了
if(accuracy>=){ updateStatus("需要更精确的值来计算距离");
return;
} if((lastLat !=null)&&(lastLong !=null)){
var currentDistance =distance(latitude,longitude,lastLat,lastLong); document.getElementById("currDist").innerHTML="目前距离旅行"+currentDistance.toFixed()+"km";
totalDistance +=currentDistance;
document.getElementById("totalDist").innerHTML="总距离"+currentDistance.toFixed()+"km"; updateStatus("位置成功更新。");
lastLong=longitude;
}
} //错误处理
function handleLocationError(error){
switch(error.code){
case :
updateErrorStatus("有一个错误在获取你的位置:错误信息"+error.message);
break;
case :
updateErrorStatus("用户选择不分享他或她的位置。");
break;
case :
updateErrorStatus("浏览器无法确定自己的位置,错误信息"+error.message);
break;
case :
updateErrorStatus("在检索位置之前,浏览器超时。");
break;
}
}
</script>
</body>

HTML5-新API-geolocation-实例-距离跟踪器的更多相关文章

  1. HTML5新api即pushState和replaceState实现无刷新修改url

    1,首先我面临一个需求,页面回退时需要知道来之前的页面状态.很简单,回退时在url里赋参数即可.问题是在ipad上,回退按钮是安卓那边的,我控制不了.只好采用js无刷新修改url历史记录,来告诉服务器 ...

  2. 用HTML5 Geolocation实现一个距离追踪器

    HTML5 Geolocation(地理定位)用于定位用户的位置.那么如何实现一个距离追踪器呢?我的思路是这样的,前提是浏览器支持h5地理定位,在这个基础上,获取用户位置,更新用户位置,计算距离,显示 ...

  3. 【转】odoo 新API装饰器中one、model、multi的区别

    http://blog.csdn.net/qq_18863573/article/details/51114893 1.one装饰器详解 odoo新API中定义方式: date=fields.Date ...

  4. HTML5新特性之移动设备API

    为了更好地为移动设备服务,HTML5推出了一系列针对移动设备的API. 1.Geolocation API Geolocation接口用于获取用户的地理位置.它使用的方法基于GPS或者其他机制(比如I ...

  5. HTML5新特性之CSS+HTML5实例

    1.新的DOCTYPE和字符集 HTML5的一项准则就是化繁为简,Web页面的DOCTYPE被极大的简化. <!DOCTYPE html> 同时字符集声明也被简化了: <meta c ...

  6. HTML5 程序设计 - 使用HTML5 Canvas API

    请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 (45) ------ 第八章 POCO之获取原始对象与手工同步对象图和变化跟踪器

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 8-6  获取原始对象 问题 你正在使用POCO,想从数据库获取原始对象. 解决方案 ...

  8. HTML5新特性及详解

    什么是HTML5:HTML5 是下一代的HTML,将成为 HTML.XHTML 以及 HTML DOM 的新标准. 为 HTML5 建立的一些规则: 新特性应该基于 HTML.CSS.DOM 以及 J ...

  9. 通过新的 Azure 媒体服务资源管理器工具管理媒体工作流

    Xavier Pouyat    Azure 媒体服务高级项目经理 几个月前,一家广播公司找到了我,希望我向他们提供一种图形界面工具,好让他们使用 Azure媒体服务来上传.管理资产并对资产进行编 ...

随机推荐

  1. 2016 Multi-University Training Contest 5 World is Exploding

    转载自:http://blog.csdn.net/queuelovestack/article/details/52096337 [题意]给你一个序列A,选出四个下标不同的元素,下标记为a,b,c,d ...

  2. NeHe OpenGL教程 第三十课:碰撞检测

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  3. Shell Python 日期和时间戳的互相转换

    一.初衷: 很多时候,时间的存储都是时间戳格式,如果需要展示就要转化成标准格式日期.也许会需要date和timestamp互转. 二.方法: 1.Shell下对date和timestamp的互转,是通 ...

  4. web提前做好测试

    1.压力测试,找到极限点和瓶颈,最小化扩容2.消息队列应对高并发的写操作 根据数据大小分成不同队列,保证效率 堵塞队列,压队列机极限处理能力3.主要业务和次要业务分开,当出现异常时保障主要业务,保证系 ...

  5. 防篡改php文件校验程序

    <?php /** * 校验线上源文件是否和本地的一致 * User: Administrator * Date: 2015/11/26 * Time: 9:30 */ include_once ...

  6. 转 -android:程序无响应,你该如何定位问题?

    如果MainThread长时间无响应,系统会提示“XXX无响应”,然后用户会关闭.那么,如何定位问题呢?无响应并不像Crash,它抓取不到异常日志,通常我们需要调试,才能定位问题.如何调试呢? 1.在 ...

  7. Guava 9-I/O

    字节流和字符流 Guava使用术语”流” 来表示可关闭的,并且在底层资源中有位置状态的I/O数据流.术语”字节流”指的是InputStream或OutputStream,”字符流”指的是Reader ...

  8. ASPxGridView中DetailRow的使用

    ASPxGridView是一个方便的数据显示控件,可是自动的绑定我们所需要的数据,但是有时,当数据属性过多时,我们并不一定要把所有的信息提供给所有的人,当有人需要这些数据时可以自动的进行查看,这时就可 ...

  9. sublime 安装常用插件

    1.先要安装Package Control ,ctr+` 打开控制台,复制安装脚本,脚本在https://packagecontrol.io/installation#st3获取. 2.安装插件,ct ...

  10. 用jQuery之后,之前javascript的一些方法就不能用了吗

    用jQuery之后,之前javascript的一些方法就不能用了吗? 比如$("#btn").onclick = function(){}这种用法?或者$("#btn&q ...