HTML 5开发:地理位置定位指南

开发 前端
用相对简单的JavaScript代码,可以创建出能确定用户地理位置详细信息的Web应用,包括经纬度以及海拔等。一些Web应用甚至能通过监控用户位置随时间的移动来提供导航功能,其中还综合了GoogleMaps API这样的地图系统。

地理定位是HTML5提供的最令人激动的特性之一。

用相对简单的JavaScript代码,可以创建出能确定用户地理位置详细信息的Web应用,包括经纬度以及海拔等。一些Web应用甚至能通过监控用户位置随时间的移动来提供导航功能,其中还综合了GoogleMaps API这样的地图系统。

和所有HTML5的功能一样,你还不能依赖浏览器提供支持。而在浏览器提供支持的地方,它在深度和持续性上会有变化。本质上,你需要为那些浏览器不能为HTML5提供完全支持的用户提供替代功能。

在这篇教程里,我们会了解一些创建用户位置信息的基本知识。实际操作中,浏览器可能从多处获取数据。例如,可能是移动设备的GPS数据或是任意联网设备上的IP地址数据。不过,你的代码不需要考虑这些细节,你只需检索和使用位置数据。

HTML5 Web 页面

使用下列代码创建HTML5页面的框架:

<!DOCTYPEhtml> 
<html> 
<head> 
<script> 
/*Locationfunctionshere*/  
</script> 
</head> 
<body> 
</body> 
</html> 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

我们将JavaScript地理定位函数放到页面标头脚本的位置,还会放置一些用于测试和演示主题区功能的基本HTML要素。

HTML演示要素

向HTML主体部分添加下列markup:

<input type="button"value="get location" onclick="getUserLocation()"/> 
<div id="locationData"> 
Location data here  
</div> 
  • 1.
  • 2.
  • 3.
  • 4.

可以随时调用地理位置函数,如页面加载时或是与jQuery文档准备函数合在一起时。为了更好地进行演示,我们使用按钮调用函数而且会把位置数据写入div要素中,div要素最初就有一些简单的占位符文本。

获取位置函数

getPosition方法是我们用来确定用户位置的主要方法。在页面标头的脚本区域添加下列函数:

functiongetUserLocation(){  
//checkifthegeolocationobjectissupported,ifsogetposition  
if(navigator.geolocation)  
navigator.geolocation.getCurrentPosition(displayLocation,displayError);  
else  
document.getElementById("locationData").innerHTML="Sorry-yourbrowserdoesn'tsupportgeolocation!";  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

用户点击按钮的时候就会调用函数。代码首先会检查导航器地理位置对象是否显示出来,如果显示出来则浏览器支持。如果地理位置对象被支持,那么代码会使用它来调用getCurrentPosition方法。

getCurrerentPosition方法取两个参数指示回调函数。,一个是在地理位置信息被获取时调用的函数,还有一个是错误返回时调用的函数。

如果地理位置对象不被支持,那么函数就只会把错误信息写入页面div要素中。

当一个网站首次试图检索用户位置数据时,用户浏览器会命令其确定它们是否同意共享数据。该函数只在用户同意的时候执行。

显示位置函数

下一步,我们需要部署的函数其实是getCurrentPosition方法调用中的第一个参数。当浏览器接收到这个函数的时候,用户位置数据会传给这个函数。将下列代码添加到getUserLocation函数后面:

functiondisplayLocation(position){  
/buildtextstringincludingco-ordinatedatapassedinparameter  
vardisplayText="Userlatitudeis"+position.coords.latitude+"andlongitudeis"+position.coords.longitude;  
//displaythestringfordemonstration  
document.getElementById("locationData").innerHTML=displayText;  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

这个代码先创建了一个变量,在变量中创建了一个字符串,该字符串包含了位置参数的经纬度数据。然后这个函数会把这个信息和一些信息化文本写入页面。在你自己的网站中,你还可以把这些数据用作其他目的,而不仅仅是写入页面——此处仅作演示用。

错误函数

使用地理位置设备的时候可能会出现错误。如,用户或许不同意共享自己的地理位置数据,浏览器可能不能检索数据等。因此我们需要添加一个函数来处理应对错误,使用getCurrentPosition方法的第二个函数。在displayLocation函数后添加下列函数:

function displayError(error) {  
//get a reference to the HTML element forwriting result  
var locationElement =document.getElementById("locationData");  
//find out which error we have, outputmessage accordingly  
switch(error.code) {  
case error.PERMISSION_DENIED:  
locationElement.innerHTML"Permission was denied";  
break;  
case error.POSITION_UNAVAILABLE:  
locationElement.innerHTML"Location data not available";  
break;  
case error.TIMEOUT:  
locationElement.innerHTML"Location request timeout";  
break;  
case error.UNKNOWN_ERROR:  
locationElement.innerHTML"An unspecified error occurred";  
break;  
default:  
locationElement.innerHTML"Who knows what happened...";  
break;  
}} 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

这个函数会地理位置请求发出后出现的错误信息进行检索。该函数首先会获取页面div要素的参考以便写入合适的错误信息。用交换语句对此信息进行调整使其适应错误的特殊属性。

考虑和选择

以上函数涵盖了用户位置数据检索的基本要点。你可以使用检索过的位置数据通过Google Maps API在地图上显示用户位置,主要是在自定义URL中创建数据变量,然后将其加载到你页面的HTML图像要素中。

你还可以使用watchPosition方法追踪用户位置甚至是他们移动的速度,尽管这些数据因为并非来自移动设备的GPS而缺乏准确性,例如数据可能来自无线网络。

这些函数会为Web开发员带来美好的未来。不过,它们的成功不仅需要浏览器提供支持,还得用户喜欢,硬件支持。

原文:http://www.e800.com.cn/articles/2012/0214/502849.shtml

【编辑推荐】

  1. 一句代码实现HTML 5淘宝语音搜索
  2. 使用HTML 5和CSS3制作登录页面完整步骤
  3. 用Web socket和Node.js实现HTML 5画布的实时绘图
  4. HTML 5 File API:文件拖放上传功能
  5. 使用HTML 5制作物理游戏
责任编辑:陈贻新 来源: e800
相关推荐

2014-03-20 10:50:44

HTML5 定位技术

2009-11-20 09:25:50

TwitterAPI

2012-09-04 10:15:00

IBMdw

2023-10-27 16:12:29

2024-07-09 08:37:13

2023-08-25 13:23:15

2013-11-15 15:46:16

Nagios地图

2013-07-16 11:16:03

云计算

2011-11-18 09:28:17

地理位置API

2012-02-26 21:41:46

手机黑客

2011-09-13 16:24:11

PhoneGap AP

2014-06-20 16:58:14

天下游修改工具Android

2023-09-13 16:38:09

Geo数据类型Redis

2012-02-02 14:25:14

LBS游戏地理位置

2013-01-25 15:03:27

LBALBS移动广告

2011-06-30 09:07:22

Gartner云计算

2011-04-27 15:32:27

用户地理位置信息苹果谷歌

2011-05-03 15:55:50

地理位置服务LBS签到

2011-04-27 09:58:56

Windows PhoLBS微软

2020-06-07 21:56:26

增强现实AR导航
点赞
收藏

51CTO技术栈公众号