html5获取地理位置信息API

在HTML5中,可以看下如何使用Geolocation API来获得用户的地理位置信息,如果该浏览器支持的话,且设备具有定位功能,就能够直接使用这组API来获取当前位置的信息,该API可以应用在移动设备上的地理定位;为window.navigator 对象新增了一个geolocation属性,可以使用Geolocation API来对该属性进行访问。window.navigator对象中的geolocation属性有三个方法如下:

第一个方法是:getCurrentPosition 该方法来取得用户当前的地理位置信息,该方法定义如下:

getCurrentPosition(onSuccess,onError,options);

其中第一个参数为获取当前地理位置信息成功时所执行的回调函数:该方法使用如下:

navigator.geolocation.getCurrentPosition(function(position)) {
// 获取成功时的的处理;
//参数position是地理位置对象
}

第二个参数为获取当前地理位置信息失败的回调函数,如果获取地理位置信息失败,你可以通过该回调函数把错误信息提示给用户,该方法使用如下:

navigator.geolocation.getCurrentPosition(function(position){
// 获取成功时的的处理;
//参数position是地理位置对象
},function(error)) {
// 获取失败时的的处理;
}

该回调函数使用一个error对象作为参数,该对象具有以下两个属性:

code属性: code属性有以下值:

用户拒绝了位置服务(属性值为1的情况下)。

获取不到位置信息(属性值为2的情况下)。

获取信息超时错误(属性值为3的情况下)。

message属性:message属性为一个字符串,在该字符串中包含了错误信息。

综合以上两个回调函数,我们可以编写如下代码:

navigator.geolocation.getCurrentPosition(function(position){
var coords = position.coords;
// 获取精度
console.log(coords.longitude);
// 获取纬度
Console.log(coords.latitude);
// 获取经度或者纬度的精度(以米为单位)
Console.log(coords.accuracy);
},function(error){
// 错误的回调函数
Var errorTypes = {
1: ‘位置服务被拒绝’,
2: ‘获取不到位置信息’,
3: ‘获取信息超时’
};
alert(errorTypes[error.code]);
});

getCurrentPosition的第三个参数可以省略,是可选参数,这些可选属性如下:

enableHighAccuracy: 是否要求高精度的地理位置信息,这个参数在很多设备上设置了没有用,因为使用在设备上时需要结合设备电量,具体地理情况综合考虑,因此可以使用该属性默认值;

timeout:对地理位置信息的获取操作做一个超时限制(单位为毫秒),如果在该时间内未获取到地理位置信息,则返回错误;

maximumAge: 对地理位置进行缓存的有效时间(单位为毫秒).比如:maximumAge:120000(1分钟是60000),如果10点整的时候获取过一次地理位置信息,10:01的时候,再次调用navigator.geolocation.getCurrentPosition重新获取地理位置的信息,则返回的依然为10:00时的数据(因为设置的缓存有效时间为2分钟)。超过这个时间后缓存的地理位置信息被废弃;尝试重新获取地理位置信息;如果该值被指定为0,则无条件重新获取新的地理位置信息。

第二个方法是:watchPosition;该方法来持续监视当前地理位置的信息,它会定期地自动获取,该方法使用方法如下:

watchCurrentPosition(onSuccess,onError,options);

该方法的三个参数的含义与getCurrentPosition方法的参数相同;该方法返回一个数字,这个数字的使用方法与javascript脚本中的setInterval方法的返回的参数使用方法类似;可以使用clearWatch方法停止对当前地理位置信息的监视。如下

clearWatch(watchId);(停止获取当前用户的地理位置信息,这也是第三个方法);

我们接下来可以来了解下position对象的属性如下:

latitude:  当前地理位置的纬度;

longitude: 当前地理位置的经度;

altitude: 当前地理位置的海拨高度(不能获取为null)

accuracy: 获取到的纬度或者经度的精度(以米为单位);

altitudeAccurancy: 获取到的海拨高度的经度(以米为单位);

speed:设备的前进速度(以米/秒为单位,不能获取时为null)

timestamp: 获取地理位置信息时的时间。

下面我们来看下我现在公司的经度和纬度,代码如下:

function get_location() {
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
// 显示地理信息
var longitude = position.coords.longitude,
latitude = position.coords.latitude;
showObject(position.coords,0);
},function(err){
// 错误处理
switch(err.code) {
case 1:
alert("位置服务被拒绝。");
break; case 2:
alert("暂时获取不到位置信息。");
break; case 3:
alert("获取信息超时。");
break; default:
alert("未知错误。");
break;
}
},{
enableHighAccuracy: true,
maximumAge: 100,
accuracy:100
})
}else {
alert("你的浏览器不支持使用HTML5来获取地理位置信息");
}
}
function showObject(obj,k) {
// 递归显示obj
if(!obj) {return;}
for(var i in obj) {
if(typeof(obj[i] != "object") || obj[i] == null) {
for(var j = 0; j < k; j++) {
document.write("&nbsp;&nbsp;&nbsp;&nbsp;")
}
document.write(i + " : " + obj[i] + "<br/>");
}else {
document.write(i + " : "+"<br/>");
showObject(obj[i],k+1);
}
}
}
get_location();

截图如下:

html5获取地理位置信息API的更多相关文章

  1. HTML5 获取地理位置信息

    HTML5增加的新功能,获取地理位置信息,如果浏览器支持且设备有定位功能,就能够直接使用这组API来获取当前信息位置.该Geolocation API可以应用于移动设备中的地理位置. Geolocat ...

  2. HTML5获取地理位置信息

    <!DOCTYPE html> <html> <head> <title>Location</title> <meta charset ...

  3. HTML5获取地理位置信息并在Google Maps上显示

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  4. jQuery Mobile + HTML5 获取地理位置信息

      这个代码也非常简单,核心是HTML5中GeoLocation API,函数原型定义如下: void getCurrentPosition(in PositionCallback successCa ...

  5. Html5 Geolocation获取地理位置信息

    Html5中提供了地理位置信息的API,通过浏览器来获取用户当前位置.基于此特性可以开发基于位置的服务应用.在获取地理位置信息前,首先浏览器都会向用户询问是否愿意共享其位置信息,待用户同意后才能使用. ...

  6. Html5 Geolocation获取地理位置信息(转)

    Html5中提供了地理位置信息的API,通过浏览器来获取用户当前位置.基于此特性可以开发基于位置的服务应用.在获取地理位置信息前,首先浏览器都会向用户询问是否愿意共享其位置信息,待用户同意后才能使用. ...

  7. AngularJS进阶(二十)HTML5实现获取地理位置信息并定位功能

    HTML5实现获取地理位置信息并定位功能 注:请点击此处进行充电! 前言 这篇文章主要介绍了HTML5实现获取地理位置信息并定位功能,本文讲解了原生HTML5.百度地图.谷歌地图等三种获取理位置信息并 ...

  8. html5实现获取地理位置信息并定位

    这里主要讲h5实现获取地理位置信息并定位功能,本文讲解了原生h5,百度地图,谷歌地图等三种获取地理信息并定位的方法,需要的朋友可以参考下: h5提供了地理位置功能(Geolocation API),能 ...

  9. 百度api:根据经纬度获取地理位置信息

    调用百度api,根据经度和纬度获取地理位置信息,返回Json. C#代码: using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Syste ...

随机推荐

  1. POJ3159(KB4-K 差分约束)

    Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 33283   Accepted: 9334 Descrip ...

  2. TFS 打得你措手不及!TF53001:管理员已取消数据库操作

    心塞.公司TFS突然挂了.签入获取 一直报 TF53001:管理员已取消数据库操作.公司开发部开发进度一下就受阻了.刚好有时关键时期. 在 老总的帮助下根据搜到的资料 .搞定了这个问题!问题出在数据库 ...

  3. js同时获取多个同name的input框的值

    demo代码 <!doctype html> <html ng-app="a3_4"> <head> <title>表头排序< ...

  4. deferred对象详解

    什么是Deferred对象  defer,推迟:延期.含义就是”延迟”到未来某个点再执行. 在开发中,我们经常遇到某些耗时很长的javascript操作.其中,既有异步的操作(比如ajax读取服务器数 ...

  5. python实现贪婪算法解决01背包问题

    一.背包问题 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为W1,W2至Wn,与之相对应的价值为P1,P2至Pn.01背包是背包问题中最简单的问题.01背包的约束条件是给定几种物 ...

  6. 在Ubuntu 14.04 LTS系统中设置Apache虚拟主机(一IP多访问)

    参考资料:http://os.51cto.com/art/201406/441909.htm

  7. 关于DDL、DML和DCL的区别与理解

    2017年5月31日,天气阴.近期事情颇多,心情比较沉重. 端午刚过,早上上课,很多同学还处在端午的疲惫状态中没有回过神来,当然我也不例外.端午奔波三天,加上毕设的事情,可以说身心俱疲.状态不佳,整理 ...

  8. JSTL 标签大全详解

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53311722  冷血之心的博客) 一.JSTL标签介绍 1.什么是 ...

  9. SD从零开始07-08

    SD从零开始7 行项目类别 Item Category的例子: 系统交付的不同的Item category支持不同的业务流程,可以根据它来创建自定义的: 定义为4位的key:前2位提示销售凭证类型,后 ...

  10. singleInstance和singleTask导致startActivityForResult回调失败

    先来了解下这两种启动模式: 1.singleInstance,全局唯一,它的实例在全局(即在众多任务栈中)是唯一的,它单独地存在于属于自己的任务栈中,而且这个任务栈没有其他实例. 2.singleTa ...