HTML5 Geolocation API地理定位整理(一)
HTML5 Geolocation API 用于获得用户的地理位置。
鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。
浏览器支持
Internet Explorer 9+, Firefox, Chrome, Safari 和 Opera 支持Geolocation(地理定位).
注意:
1. Geolocation(地理定位)对于拥有 GPS 的设备,比如 iPhone,地理定位更加精确。点击查看更多参考
2.在微信的WebView中可以获取位置,QQ的WebView中 Geolocation不可用。
3.在移动终端的watchPosition()监听触发间隔比PC端短很多。
一、Geolocation对象使用navigator.geolocation访问,
只有3个方法,没有属性

1.getCurrentPosition(successCB,[errorCB],[geolocationOptions]) 方法获取用户的位置
2.watchPosition(successCB,[errorCB],[geolocationOptions]) 方法返回用户的位置并循环监听,时间间隔不一定
3.clearWatch() ---清楚watchPosition()的监听实例
特别说明:
successCB中参数为Geoposition对象
errorCB中参数为PositionError对象
geolocationOptions 参数对象说明:
1.enableHighAccuracy:指示获取位置的精确度,默认为false。如果设置为true,使用精确定位(卫星定位/GPS),在PC端浏览器基本上都执行errorCB,也就是获取失败
2.timeout:获取位置的最长等待时间,默认不限时间
3.maximumAge:接受不超过指定时间毫秒的缓存位置,也就是在重复获取位置时,多长时间之后再次获取位置。
注:在Google浏览器测试修改时间参数并没有效果,待确认。
二、Geoposition对象
获取位置成功返回的对象
1.coords 坐标信息
2.timestamp 获取位置的时间戳

始终会返回 latitude、longitude 以及 accuracy 属性。如果可用,则会返回其他下面的属性。
| 属性 | 描述 |
|---|---|
| coords.latitude | 十进制数的纬度 |
| coords.longitude | 十进制数的经度 |
| coords.accuracy | 位置精度 |
| coords.altitude | 海拔,海平面以上以米计 |
| coords.altitudeAccuracy | 位置的海拔精度 |
| coords.heading | 方向,从正北开始以度计 |
| coords.speed | 速度,以米/每秒计 |
| timestamp | 响应的日期/时间 |
三、PositionError对象
获取位置信息失败时返回的对象

- Permission denied - 用户不允许地理定位
- Position unavailable - 无法获取当前位置
- Timeout - 操作超时
四、使用实例
1.判断浏览器是否支持Geolocation对象
if (navigator.geolocation) {
console.info(navigator.geolocation);
} else {
console.log('你的浏览器不支持地理定位');
}
2.获取用户位置
if (navigator.geolocation) {
//获取地理位置需要等比较长的一段时间
//尤其是在PC段,根据IP获取的
navigator.geolocation.getCurrentPosition(successCB, errorCB);
} else {
console.log('你的浏览器不支持地理定位');
}
//获取地理位置成功
function successCB(position) {
console.info(position);
console.log('位置精度:'+position.coords.accuracy);
console.log('维度:'+position.coords.latitude);
console.log('经度:'+position.coords.longitude);
}
//获取地理位置失败
function errorCB(error) {
console.error(error);
var msg='';
switch (error.code) {
case error.PERMISSION_DENIED:
msg = "用户拒绝对获取地理位置的请求。"
break;
case error.POSITION_UNAVAILABLE:
msg = "位置信息是不可用的。"
break;
case error.TIMEOUT:
msg = "请求用户地理位置超时。"
break;
case error.UNKNOWN_ERROR:
msg = "未知错误。"
break;
}
console.error(msg);
}
3.使用精确模式
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(locationSuccess, locationError,{
// 指示浏览器获取高精度的位置,默认为false
enableHighAccuracy: true,
// 指定获取地理位置的超时时间,默认不限时,单位为毫秒
timeout: 5000,
// 最长有效期,在重复获取地理位置时,此参数指定多久再次获取位置。
maximumAge: 3000
});
}else{
alert("Your browser does not support Geolocation!");
}
更多:
HTML5 Geolocation API地理定位整理(二)
HTML5 History对象,Javascript修改地址栏而不刷新页面(二)
HTML5 Geolocation API地理定位整理(一)的更多相关文章
- HTML5 Geolocation API地理定位整理(二)
Geolocation 实例demo 1.使用watchPosition()监听客户端位置 var watchOne=null; if (navigator.geolocation) { //watc ...
- HTML5: HTML5 Geolocation(地理定位)
ylbtech-HTML5: HTML5 Geolocation(地理定位) 1.返回顶部 1. HTML5 Geolocation(地理定位) HTML5 Geolocation(地理定位)用于定位 ...
- HTML5 Geolocation(地理定位)
一.背景 在HTML规范中,增加了获取用户地理信息的API,这样使得可以基于用户位置开发互联网应用,即基于位置服务 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的. Inter ...
- HTML5 学习06——Geolocation(地理定位)
HTML5 Geolocation(地理定位) HTML5 Geolocation API 用于获得用户的地理位置. 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的. HTML ...
- HTML5学习笔记 Geolocation(地理定位)
HTML5 Geolocation(地理定位)用于定位用户的位置. 定位用户的位置 html5 Geolocation API用于获得用户的地理位置 鉴于该特性可能低侵犯用户的隐私,除非用户同意,否则 ...
- HTML5 调用百度地图API地理定位
<!DOCTYPE html> <html> <title>HTML5 HTML5 调用百度地图API地理定位实例</title> <head&g ...
- HTML5 Geolocation用来定位用户的位置。
HTML5 Geolocation用来定位用户的位置. 定位用户的位置 HTMl5 Geolocation API用来得到用户的地理位置. 由于这个可能和个人隐私相关.除非用户同意否则不能使用. 浏览 ...
- HTML5学习(七)----地理定位
参考教程:http://www.w3school.com.cn/html5/html_5_geolocation.asp 说明:设备必须有GPS定位功能才能定位的 定位用户的位置 HTML5 Geol ...
- HTML5 Geolocation API工作原理[转载]
大家都知道,HTML5 Geolocation 可以使用 IP 地址.基于 Web 的数据库.无线网络连接和三角测量或 GPS 技术来确定经度和纬度. 问题: 在一个基于地理位置服务的个人业余项目(小 ...
随机推荐
- Android SDK platforms build-tools等镜像下载
Android SDK platforms build-tools等镜像下载 下载地址:http://mirrors.neusoft.edu.cn/android/repository/ 这 ...
- 洛谷P1533 可怜的狗狗 [平衡树,FHQ_Treap]
题目传送门 可怜的狗狗 题目背景 小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗狗. 题目描述 小卡家有N只狗,由于品种.年龄不同,每一只狗都 ...
- ADNI以及study design简介
相关名词: MCI:轻度认知功能障碍 EMCI:早期认知障碍 MCI:轻度认知障碍 LMCI:晚期认知障碍 CN:认知正常的志愿者 DTI:doppler tissue imaging,多普勒组织显像 ...
- Java8 Lambda 之 Collection Stream
Lambda 之 Collection Stream Collection.stream() 测试实体类 class Demo { private Long id; private String na ...
- java 生成随机数字
for(int i=0;i<size1;i++){ int n = (int)(java.lang.Math.random()*99); LinkNode newLink = new LinkN ...
- POJ1274 The Perfect Stall[二分图最大匹配 Hungary]【学习笔记】
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23911 Accepted: 106 ...
- play framework系列之maven 构建
一,文章内容 1,Play framwwork 的好处就是构建java 项目简单快速.经过下边几步即可完成. play new testSimpleMvn 选择2 java 项目即可. 然后进入到 t ...
- 面向企业级的开源WebGIS解决方案--MapGuide(对比分析)
在技术特点.功能.架构等方面,MapGuide与其他WebGIS产品有什么区别?本文主要从此角度来介绍MapGuide的特性,以供参考. 本人选择了比较熟悉的几款WebGIS产品:MapServ ...
- 使用Oracle DBLink进行数据库之间对象的訪问操作
Oracle中自带了DBLink功能,它的作用是将多个oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中能够操作还有一个数据库中的对象,比如我们新建了一个数据database1.我们须要操 ...
- finger-guessing game:1场景搭建
场景搭建 //初始化legend组件 init(50, "div_caiquan", 800, 400, main); //定义游戏层 //游戏背景层,结果显示层,点击层 var ...