HTML5 地理位置定位API(4)
地理定位(geolocation)是最令人兴奋,而且得到了广泛支持的一个新API。通过这套API,
JavaScript代码能够访问到用户的 当前位置信息。当然,访问之前必须得到用户的明确许可,即同意在页面共享其位置信息。
如果页面尝试访问其地理定位信息,浏览器就会显示一个对话框,请求用 户许可共享其位置信息。
Geolocation API在浏览器中的实现是navigator.geolocation对象,这个对象包含3个方法。第一个是getCurrentPosition(),
调用这个方法就会触发请求用户共享地理定位信息的对话框。这个方法接收3个参数:成功回调函数、可选的失败回调函数和可选的选项对象。
其中,成功返回调用函数会接收到一个Position对象参数,该参数有两个属性:coords和timestamp。而coords对象中将包含下列与位置相关的信息。
- latitude:以十进制度数表示的纬度。
- longitude:以十进制度数表示的经度。
- accuracy:经、纬度坐标的精度,以米为单位。有些浏览器还可能会在coords对象中提供如下属性。
- altitude:以米为单位的海拔高度,如果没有相关数据则值为null。
- altitudeAccuracy:海拔高度的精度,以米为单位,数值越大越不精确。
- heading:指南针的方向,0°表示正北,值为NaN表示没有检测到数据。
- speed:速度,每秒移动多少米,如果没有相关数据则为null。
在实际开发中,latitude和longitude是大多数Web应用最常用到的属性。例如,以下代码将在地图上绘制用户的位置:
navigator.geolocation.getCurrentPosition(function(position) {
drawMapCenteredAt(position.coords.latitude, position.coords.longitude);
});
以上介绍的是成功回调函数。 getCurrentPosition()的第二个参数,即失败回调函数,在被调用的时候也会接收到一个参数。
这个参数是一个对象,包含两个属 性:message和code。其中,message属性中保存着给人看的文本消息,解释为什么会出错,
而code属性中保存着一个数值,表示错误的类 型:用于拒绝共享(1)、位置无效(2)或者超时(3)。实际开发中,
大多数Web应用只会将错误消息保存到日志文件中,而不一定会因此修改用户界面。例 如:
navigator.geolocation.getCurrentPosition(function(position){
drawMapCenteredAt(position.coords.latitude, position.coords.longitude);
}, function(error) {
console.log("Error code: " + error.code);
console.log("Error message: " + error.message);
});
getCurrentPosition()的第三个参数是一 个选项对象,用于设定信息的类型。可以设置的选项有三个:
enableHighAccuracy是一个布尔值,表示必须尽可能使用最准确的位置信 息;timeout是以毫秒数表示的等待位置信息的最长时间;
maximumAge表示上一次取得的坐标信息的有效时间,以毫秒表示,如果时间到则重新获 得最新坐标信息。例如:
navigator.geolocation.getCurrentPosition(function(position){
drawMapCenteredAt(position.coords.latitude, position.coords.longitude);
}, function(error) {
console.log("Error code: " + error.code);
console.log("Error message: " + error.message);
}, {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 25000
});
这三个选项都是可选的,可以单独设置,也可以与其它选项一起 设置。除非确实需要非常精确的信息,
否则建议保持enableHighAccuracy的false值(默认值)。将这个选项设置为ture需要更长的时 候,
而且在移动设备上还会导致消耗更多电量。类似的,如果不需要频繁更新用户的位置信息,那么可以将maximumAge设置为Infinity,
从而始 终都使用上一次的坐标信息。
如果你希望跟踪用户的位置,那么可以使用另一个方法watchPosition()。这个方法接收的参数与 getCurrentPosition()效果相同。
在第一次调用watchPosition()方法后,会取得当前位置,执行成功回调或者错误回调。然 后,watchPosition()就地等待位置已改变的信号(它不会自己轮询位置)。
调用watchPosition()会返回一个数值标识符,用于跟踪监控的操作。基于这个返回值可以取消监控操作,
只要将其传递给clearWatch()方法即可(与使用setTimeout()和clearTimeout()类似)。例如:
var watchId = navigator.geolocation.watchPosition(function(position){
drawMapCenteredAt(position.coords.latitude, position.coords.longitude);
}, function(error) {
console.log("Error code: " + error.code);
console.log("Error message: " + error.message);
});
clearWatch(watchId);
以上例子调用了watchPosition()方法,将返回的标识符保存在了watchId中。然后,又将watchId传给了clearWatch(),取消了监控操作。
支持地理定位的浏览器有IE9+、Firefox 3.5+、Opeara 10.6+、Safari 5+、Chrome、iOS版Safari、Android版WebKit。
HTML5 地理位置定位API(4)的更多相关文章
- HTML5 地理位置定位API(1)
地理位置(Geolocation)是 HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用.今天这篇文章向大家介绍一下 HTML5 地理位置定位的基本原理及各个 ...
- HTML5 地理位置定位API(3)
HTML5 地理位置定位实例 这篇文章主要为大家介绍了HTML5地理定位的方法,实例讲述了html5获取坐标完整实现过程, 并对比不同浏览器运行效果给出参考结果,需要的朋友可以参考下 本文实例讲述了h ...
- HTML5 地理位置定位API(5)
HTML5 Geolocation API (地理位置应用程序接口) 目前PC浏览器支持情况: Firefox 3.5+Chrome 5.0+Safari 5.0+Opera 10.60+Intern ...
- HTML5 地理位置定位API(2)
HTML5 Geolocation API (地理位置应用程序接口) 目前PC浏览器支持情况: Firefox 3.5+Chrome 5.0+Safari 5.0+Opera 10.60+Intern ...
- HTML5 地理位置定位(HTML5 Geolocation)原理及应用
地理位置(Geolocation)是 HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用.今天这篇文章向大家介绍一下 HTML5 地理位置定位的基本原理及各个 ...
- [Javascript] HTML5 地理位置定位(HTML5 Geolocation)原理及应用
地理位置(Geolocation)是 HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用.今天这篇文章向大家介绍一下 HTML5 地理位置定位的基本原理及各个 ...
- 使用HTML5地理位置定位到城市的方法及注意事项
介绍 本文将简述一下如何通过HTML5和百度地图开放平台提供的API来实现对浏览器的定位.实现效果为显示出用户所在的省市,即: XXX省 XXX市. 实现思路 利用HTML5 提供的API获取到用户的 ...
- html5地理位置定位功能小析
Geolocationd 基本原理1.GPS GPS基本原理是测量出已知位置的卫星到用户接收机之间的距离,然后综合多颗卫星的数据就可知道接收机的具体位置.适用于具备GPS功能的设备(1)优点:在 ...
- HTML5地理定位API在chrome中不能正常使用
navigator.geolocation.getCurrentPosition在chrome中不能正常使用. 经测试发现,FQ后就能正常使用,估计是因为chrome 对这个API的实现使用了goog ...
随机推荐
- cuda环境搭建
cuda环境搭建 cuda 的安装 一篇很不错的博客 https://blog.csdn.net/u014529295/article/details/78766258 另外官网也有介绍 https: ...
- 2019-ACM-ICPC-南昌区网络赛-H. The Nth Item-特征根法求通项公式+二次剩余+欧拉降幂
2019-ACM-ICPC-南昌区网络赛-H. The Nth Item-特征根法求通项公式+二次剩余+欧拉降幂 [Problem Description] 已知\(f(n)=3\cdot f(n ...
- centos + docker搭建深度学习环境以及一些问题解决
必须要说容器是一个很牛逼的思想!注意,是思想!也许docker有种种问题,但是不管docker能否茁壮地发展下去,未来这种方式的环境搭建一定会变得越来越流行! 网上有很多这方面的教程,但大多数都不太好 ...
- java容器一:Collection概述
Collection概览 java容器有两类,第一类是Collection,存储的是对象的集合:第二类是Map,存储的是键值对(两个对象以及它们之间的对应关系)的集合 Collection接口下面有三 ...
- orm多表查询基于双下划线
###########基于双下划线的跨表查询(基于join实现的)############# key: 正向查询按字段,反向查询按表名小写 1.查询python这本书出版社的名字 ret = Book ...
- can't assign to struct fileds in map
原文: https://haobook.readthedocs.io/zh_CN/latest/periodical/201611/zhangan.html --------------------- ...
- addEventListener和attachEvent的区别(转载)
attachEvent 与addEventListener到底有什么区别呢?总结如下: 一.适应的浏览器版本不同 attachEvent——兼容:IE7.IE8:不兼容firefox.chrome.I ...
- main方法中参数"String[ ] args"详解
1.在编写完一个有主方法的java文件时,需要在cmd窗口中先编译此java文件(javac xxx.java),然后再运行(java xxx) 其实在运行java xxx的时候如果后面跟着参数用空格 ...
- TCP 拥塞控制
TCP 拥塞控制 相关名词 滑动窗口 tcp通过滑动窗口进行流量控制,所谓的窗口可以理解为接收端所能提供的缓冲区大小. TCP是一个滑动窗口协议,即一个TCP连接的发送端在某个时刻能发多少数据是由滑动 ...
- MVC 元数据验证
ASP.NET MVC 3 Validation - 正则表达式验证RegularExpressionAttribute之日期验证 http://blog.csdn.net/jackvs/articl ...