HTML5 获取地理位置信息
HTML5增加的新功能,获取地理位置信息,如果浏览器支持且设备有定位功能,就能够直接使用这组API来获取当前信息位置。该Geolocation API可以应用于移动设备中的地理位置。
- Geolocation API的基础知识
在HTML5中,为window.navigator对象新增了一个geolocaation属性,可以使用Geolocation API来对该属性进行访问。window.navigator对象的geolocation属性存在以下三个方法。
1 .取得当前地理位置 getCurrentPositon(onsuccess,onError,options)
其中第一个参数为获取当前地理位置信息成功时所执行的回调函数,第二个参数为获取当前地理位置信 息失败时所执行的回调函数,第三个参数为一些可选属性的列表。其中第二,第三个参数为可选属性。
- 1.1 getCurrentPosition方法中的第一个参数为获取当前地理位置信息成功时所执行的回调函数。该参数的 使用方法如下。在获取地理位置信息成功时执行的回调函数中,用到了一个参数position,它代表一个position对象。
navigator.geolocation.getCurrentPosition(function(position){
//获取成功时的处理
})
- 1.2 getCurrentPosition方法中的第二个参数为获取当前地理位置信息失败时所执行的回调函数。该回调函 数使用一个error对象作为参考,该对象具有以下两个属性:
code属性:用户拒绝了位置服务(属性值为1)
获取不到位置信息(属性值为2)
获取信息超时错误(属性值为3)
message属性:message属性为一个字符串,在该字符串中包含了错误信息,这个错误在开发和调试时 将很有用。
在getCurrentPosition方法中使用第二个参数来捕获错误信息的具体使用方法如下:
navigator.geolocation.getCurrentPosition(function(position){
var coords = position.coords;
showMap(coords.latitude,coords.longitude,coords.accuracy);
},
//捕获错误信息
function(error){
var errorTypes = {
1:'位置服务被拒绝',
2:'获取不到位置信息',
3:'获取信息超时',
};
alert(errorTypes[error.code] + ": 不能确定你的当前地理位置");
}
)
- 1.3 getCurrentPosition方法中的第三个参数可以省略,它是一些可选属性的列表,这些可选属性如下:
enableHighAccuracy:是否要求高精度的地理位置信息
timeout:对地理位置信息的获取操作做一个超时限制(单位为毫秒)
maximumAge:对地理位置信息进行缓存的有效时间(单位为毫秒)
对于这些可选属性的具体位置方法如下:
navigator.geolocation.getCurrentPositon(function(position){
},
function(error){
},
//以下为可选属性
{
//设置缓存有效时间为2分钟
maximumAge:60*1000*2,
//5秒钟内未获取到地理位置信息则返回错误
timeout:5000
)
2.持续监视当前地理位置的信息 watchCurrentPositon(onsuccess,onError,options)
该方法三个参数的说明与使用方法和getCurrentPosition方法的参数说明与使用方法相同。该方法返回一个数字,这个数字的使用方法与Javascript脚本中setInterval方法的返回参数的使用方法类似,可以被clearWath方法使用,停止对当前地理位置信息的监视。
3.停止获取当前用户的地理位置信息 clearWatch(watchId)
使用该方法可以停止对当前用户的地理信息的监视。该方法的参数为调用watchCurrentPosition方法监视地理位置信息时的返回参数。
- position对象
如果获取地理位置信息成功,则可以在获取成功后的回调函数中通过访问position对象的属性来得到这些地理位置信息。position对象具有如下这些属性:
latitude:当前地理位置的纬度。
longitude:当前地理位置的经度。
altitude:当前地理位置的海拔高度(不能获取时为null)
accuracy:获取到的纬度或经度的精度
altitudeAccuracy:获取到的海拔高度的精度
heading:设备的前进方面。用面朝正北方向的顺时针旋转角度来表示(不能获取时为null)
speed:设备的前进速度
timestamp:获取地理位置信息时的时间。
下面用getCurrentPositon方法获取当前位置的地理信息
function showObject(obj, k) {
//递归显示object
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(' ');
}
document.write(i + " : " + obj[i] + "<br />");
} else {
document.write(i + " : " + "<br />");
showObject(obj[i],k+1);
}
}
}
function get_location(){
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(show_map,handle_error,{enableHighAccuracy:true,maximumAge:1000})
} else {
alert('你的浏览器不支持使用HTML 5来获取地理位置信息。');
}
}
function handle_error(err){
//错误处理
switch(err.code){
case 1:
alert('位置服务被拒绝');
break;
case 2:
alert('暂时获取不到位置信息');
break;
case 3:
alert('获取信息超时');
break;
default:
alert('未知错误');
break;
}
}
function show_map(position){
//显示地理信息
var latitude = position.coords.latitude;
var longititude = position.coords.longititude;
showObject(position,0);
}
get_location();
HTML5 获取地理位置信息的更多相关文章
- html5获取地理位置信息API
html5获取地理位置信息API 在HTML5中,可以看下如何使用Geolocation API来获得用户的地理位置信息,如果该浏览器支持的话,且设备具有定位功能,就能够直接使用这组API来获取当前位 ...
- HTML5获取地理位置信息
<!DOCTYPE html> <html> <head> <title>Location</title> <meta charset ...
- HTML5获取地理位置信息并在Google Maps上显示
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- jQuery Mobile + HTML5 获取地理位置信息
这个代码也非常简单,核心是HTML5中GeoLocation API,函数原型定义如下: void getCurrentPosition(in PositionCallback successCa ...
- Html5 Geolocation获取地理位置信息
Html5中提供了地理位置信息的API,通过浏览器来获取用户当前位置.基于此特性可以开发基于位置的服务应用.在获取地理位置信息前,首先浏览器都会向用户询问是否愿意共享其位置信息,待用户同意后才能使用. ...
- Html5 Geolocation获取地理位置信息(转)
Html5中提供了地理位置信息的API,通过浏览器来获取用户当前位置.基于此特性可以开发基于位置的服务应用.在获取地理位置信息前,首先浏览器都会向用户询问是否愿意共享其位置信息,待用户同意后才能使用. ...
- AngularJS进阶(二十)HTML5实现获取地理位置信息并定位功能
HTML5实现获取地理位置信息并定位功能 注:请点击此处进行充电! 前言 这篇文章主要介绍了HTML5实现获取地理位置信息并定位功能,本文讲解了原生HTML5.百度地图.谷歌地图等三种获取理位置信息并 ...
- html5实现获取地理位置信息并定位
这里主要讲h5实现获取地理位置信息并定位功能,本文讲解了原生h5,百度地图,谷歌地图等三种获取地理信息并定位的方法,需要的朋友可以参考下: h5提供了地理位置功能(Geolocation API),能 ...
- 【Demo】HTML5获取地理位置
HTML5获取地理位置简单实例 实例1--获取地理位置的经纬度: <!DOCTYPE html> <html> <head> <meta charset=& ...
随机推荐
- 搜狗输入法wp风格皮肤
换了个nexus 发现输入法真的没有wp的好用 没办法,刚好搜狗输入法有定制皮肤的选项,所以自己做了个wp风格的输入法皮肤. 一点微小的工作 http://pan.baidu.com/s/1kVsHd ...
- Ado.Net Destination 用法
Ado Net Destination Component 使用Ado net Connection manager,其Data Access Mode 只有一种, table or view,组件的 ...
- 【WP 8.1开发】如何动态生成Gif动画
相信如何为gif文件编码,很多朋友都会,而难点在于怎么让GIF文件中的帧动起来,也就是创建gif动画. Gif文件编码方法 先简单介绍一下编码的方法. 1.调用BitmapEncoder.Create ...
- Android之startService()和bindService()区别
1. 生命周期: startService()方式启动,Service是通过接受Intent并且会经历onCreate()和onStart().当用户在发出意图使之销毁时会经历onDestroy(), ...
- 【原创】开源Math.NET基础数学类库使用(16)C#计算矩阵秩
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...
- Why Namespace? - 每天5分钟玩转 OpenStack(102)
上一节我们讨论了 Neutron 将虚拟 router 放置到 namespace 中实现了不同 subnet 之间的路由.今天探讨为什么要用 namespace 封装 router? 回顾一下前面的 ...
- JS+CSS3实现带预览图幻灯片效果
这个案例学习起来还有点吃力,目前还没有独自自己写出来过,贴出来以免忘记. 慕课网该课程原地址:http://www.imooc.com/learn/412 源码: <!DOCTYPE html& ...
- JQuery EasyUI datagrid 复杂表头处理
下面是我项目中和网上收集的EasyUI的表头处理的,合适的拿去用吧. 例子1: $('#day_health').datagrid({ url: "sqb_b ...
- ubuntu安装虚拟磁带库mhvtl
项目需要用到磁带库,先装个虚拟磁带库mhvtl来模拟下. 1 下载源码 从网站https://sites.google.com/site/linuxvtl2/home#mhvtl-download下载 ...
- ZOJ Problem Set - 1394 Polar Explorer
这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...