HTML5 的位置

HTML5 的位置

在HTML5COL学院的前面几个章节中我们已经对HTML5 Geolocation
API有了一定认识,接下来我们要对位置做些更有意思的处理;看看你与我们HTML5COL学院的办公室秘密位置相距多远。为此我们需要HTML5COL
学院的坐标,而且需要知道如何计算两个坐标之间的距离。

增加一个<div>

首先,在HTML中增加一个 <div>:

<!DOCTYPE html>
<html>
<head>
  <meta=‘keywords‘ content=‘HTML5COL学院,HTML5COL,CSS3,HTML5COL,编码社区‘>
</head>
<body>
  <div id="location">
        Your location will go here.
  </div>
  <div id="distance">
        Distance from HTML5COL Office will go here.
  </div>
</body>
</html>

计算距离

用半正矢(Haversine)公式计算两个坐标之间的距离,由于这个超出这一章的范畴,我们会给HTML5COL学院一些成品代码来完成这个计算:

function computeDistance(startCoords, destCoords) {
	//这个函数取两个坐标,一个起点坐标,一个终点坐标,并返回二者之间的距离(单位为千米)
    var startLatRads = degreesToRadians(startCoords.latitude);
    var startLongRads = degreesToRadians(startCoords.longitude);
    var destLatRads = degreesToRadians(destCoords.latitude);
    var destLongRads = degreesToRadians(destCoords.longitude);

    var Radius = 6371; // radius of the Earth in km
    var distance=Math.acos(Math.sin(startLatRads)*Math.sin(destLatRads) +
                 Math.cos(startLatRads) * Math.cos(destLatRads) *
                 Math.cos(startLongRads - destLongRads)) * Radius;

    return distance;
}

function degreesToRadians(degrees) {
	//在HTML5COL学院‘画布’章节中还会看到更多地使用了这个函数
    var radians = (degrees * Math.PI)/180;
    return radians;
}

编写代码

既然有了一个函数来计算两个坐标之间的距离,下面我们来定义我们在HTML5COL学院总部办公室的位置(也是本课程作者所在的位置),也可输入以下代码:

var ourCoords = {
    latitude: 47.624851,
    longitude: -122.52099
};

现在来编写代码,我们所要做的是把你的位置和HTML5COL学院总部办公地的坐标传递到computeDistance函数:

function displayLocation(position) {
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;

    var div = document.getElementById("location");
    div.innerHTML = "You are at Latitude: " + latitude + ", Longitude: " + longitude;

    var km = computeDistance(position.coords, ourCoords);
	//将你的位置坐标以及我们的坐标传递到computeDistance
    var distance = document.getElementById("distance");
    distance.innerHTML = "You are " + km + " km from the WickedlySmart HQ";
	//然后得到结果,并更新distance <div>的内容
}

代码总汇

<!DOCTYPE html>
<html>
<head>

<meta=‘keywords‘ content=‘HTML5COL学院,HTML5COL,CSS3,HTML5COL,编码社区‘>
<script>
window.onload=getMylocation;
var ourCoords =  {
	latitude: 47.624851,
	longitude: -122.52099
};

function getMylocation(){
   if(navigator.geolocation){
        navigator.geolocation.getCurrentPosition(displayLocation,displayError);

} else{
 alert("Oops,no geolocation support!");

}
}

function displayLocation(position){

     var latitude=position.coords.latitude;
	 var longitude=position.coords.longitude;
	 var div=document.getElementById("location");
	 div.innerHTML="You are at Latitude:"+latitude+"Longitude:"+longitude;

	 var km = computeDistance(position.coords, ourCoords);
	 var distance = document.getElementById("distance");
	 distance.innerHTML = "You are " + km + " km from the HTML5COL Office";

}

function computeDistance(startCoords, destCoords) {
	var startLatRads = degreesToRadians(startCoords.latitude);
	var startLongRads = degreesToRadians(startCoords.longitude);
	var destLatRads = degreesToRadians(destCoords.latitude);
	var destLongRads = degreesToRadians(destCoords.longitude);

	var Radius = 6371; // radius of the Earth in km
	var distance = Math.acos(Math.sin(startLatRads) * Math.sin(destLatRads) +
					Math.cos(startLatRads) * Math.cos(destLatRads) *
					Math.cos(startLongRads - destLongRads)) * Radius;

	return distance;
}

function degreesToRadians(degrees) {
	radians = (degrees * Math.PI)/180;
	return radians;
}

function displayError(error){

     var errorTypes={
	   0: "Unkown error",
	   1: "Permission denied by user",
	   2: "Position is not available",
	   3: "Request timed out"
	 };
	 var errorMessage=errorTypes[error.code];
	 if(error.code==0 || error.code==2){
	      errorMessage=errorMessage+" "+error.message;
	 }
	 var div=document.getElementById("location");
	 div.innerHTML=errorMessage;

}
</script>

</head>

<body>
   <p>position:</p>
   <div id="location" >
   </div>

   <div id="distance" >
   </div>
</body>
</html>

备用测试地址

时间: 2024-10-11 13:34:59

HTML5 的位置的相关文章

WKWebView中HTML5获取位置失败

WKWebView中HTML5获取位置失败,在info.plist文件中添加以下代码打开网页时就会询问是否允许获取位置信息了. <key>NSLocationAlwaysUsageDescription</key> <true/> <key>NSLocationWhenInUseUsageDescription</key> <true/> IOS9开始所有网页及服务默认都要用ssl,如果想用普通的http请求的话,可以加上以下配置,这

HTML5 Geolocation位置信息定位总结

现在定位功能很常用,所以抽出一些时间将这个功能的知识总结一下作为知识梳理的依据.HTML5 Geolocation的定位用法很简单,首先请求位置信息,用户同意,则返回位置信息.HTML5 Geolocation仅仅是用来检索定位信息的API,至于底层是如何定位的他也不知道,他就相当于一个传信的,你说是1,ok,那我就给用户传个1,仅此而已. 1).位置信息来源的分类和特点 1.IP定位 优点:任何地方都可以. 在服务器端处理. 缺点:不准确,只能精确到市级. 2.GPS定位 优点:比较准确. 缺

HTML5从入门到精通,零基础学员必看

学习html5从入门到精通,零基础新手也能看懂,无论你是唱歌,画画的艺术生,还是学习机械专业的工科生,或者大学读的文学学科.先了解HTML5可以实现的功能有哪儿些? 1. HTML5可以同时在多种设备上运行,这一点是其他方式都无法做到的: 2. 在互联网中随意被分享,并且搜索时可以及时被找到:有搜索扩展性. 3. HTML5应用可以使用交互式设计来提供最佳体验,而不需要更改代码.你可以从桌面到手机到平板电脑无缝进行切换,而无需重复安装不同的应用: 4. HTML5适用于多厂商标准,建立在协议之上

学HTML5需要注意哪些问题?

要怎么去学HTML5?学习的方式有很多,可以自学,也可以找专门的HTML5培训机构去学习,具体选择哪种方式,是要看哪种学习方式自己能接受. HTML5是移动互联网前端的主流开发语言,目前还没有一个前端的开发语言能取代HTML5的位置,所以说,无论做手机网站还是在手机app应用,前端的样式都是HTML5开发,通过手机与电脑上网的使用率来看,目前通过手机上网的用户远远高于电脑端,这些数据都足以证明未来的移动互联网的发展前景,而HTML5又作为移动互联网主流前端开发语言. 总体来讲就是H5涵盖了所有基

学习html5门槛高吗

HTML5让前端开发更加便捷,目前还没有一个前端的开发语言能取代HTML5的位置,因为html5是唯一个支持不同操作系统的跨平台语言,为互联网企业节省大量成本投入. 那么零基础的同学对Html5培训课程也是比较陌生的,会有一些疑问,HTML5开发们来看高吗?这是很多朋友比较关心的问题,说实话现在学习html5门槛不是太高,兄弟连作为专业的IT培训机构,html5课程都是针对零基础开发的. 对于一个没有编程基础和网页开发经验的人来说,要想系统的掌握HTML5培训开发技能至少需要4个月的时间. 在兄

【 H5EDU干货】零基础必看!人生不如意必看!留邮箱给源码

导演张艺谋在陕北拍电影时见到一个孩童,夕阳西下骑在牛背上悠闲地哼着陕北小调,就问:"娃,你在干啥?"孩童很悠闲地答:"我在放牛!""为啥放牛?""放牛挣钱!""挣钱干嘛?""挣钱娶媳妇!""娶媳妇干嘛?""娶媳妇生娃!""生娃干嘛?""生娃放牛!"八岁的小男孩就这样规划好了他的人生:放牛-挣钱-娶媳妇-生娃再

HTML5页面直接调用百度地图API,获取当前位置,直接导航目的地(转)

HTML5页面直接调用百度地图API,获取当前位置,直接导航目的地 我是应用在微信中,自定义菜单,菜单直接链接到这个HTML5页面,获取当前位置后,页面中定好目的地,这样打开页面后直接进入导航页面 可以省下先发送位置信息后,点确定再出导航,省一步, <!DOCTYPE html> <html lang="zh-cmn-Hans"> <meta charset="UTF-8"> <meta name="viewpor

根据HTML5 获取当前位置的经纬度

是想让地图的定位用户位置更准确一些. 查看了介绍: http://www.w3school.com.cn/html5/html_5_geolocation.asp 看介绍中拿数据挺简单. <!DOCTYPE html> <html> <body> <p id="demo">点击这个按钮,获得您的坐标:</p> <button onclick="getLocation()">试一下</but

使用html5获取当前手机的经纬度,并接入百度地图API,查询出当前位置

最近项目需要,稍微研究一下html5获取当前地理位置的问题. 获取当前位置的经纬度很简单,一句代码就搞定 [javascript] view plain copy print? navigator.geolocation.getCurrentPosition(function (position) { longitude = position.coords.longitude; latitude = position.coords.latitude; });   然后查阅百度地图API,很eas