HTML5学习笔记(四)-Geolocation API

一、位置信息

1、数据

位置信息由经度、纬度坐标和一些其他元数据组成。

纬度:距离赤道以北或以南的数值。比如:39.17222

经度:距离英国格林威治以东或以西的数值。比如:-120.13778

经纬度可以以十进制表示,也可以以DMS(角度)格式表示。

HTML5 Geolocation API的坐标格式是十进制格式。

除经纬度外,HTML5 Geolocation还提供坐标的准确度。依据浏览器所在的硬件设备,还可能提供一些元数据,包括海拔、海拔准确度、行驶方向和速度等。如果这些元数据不存在则返回null。

2、位置信息从何而来

API并不能保证设备返回的是惠及位置是精确的。

设备可以使用下列数据源

  • IP地址
  • 三维坐标
    • GPS(Global Positioning System,全球定位系统);
    • 从RFID、Wi-Fi和蓝牙到Wi-Fi的MAC地址;
    • GSM或CDMA手机的ID
  • 用户自定义数据

IP地址定位数据的优缺点

优点缺点
任何地方都可用不精确(经常出错,一般精确到城市级)
在服务器端处理运算代价大

GPS定位数据的优缺点

优点缺点
很精确定位时间长,用户耗电量大
 室内效果不好
 需要额外硬件设备

Wi-Fi定位数据优缺点

优点缺点
精确在乡村这些无线接入点较少的地区效果不好
可在室内使用 
可以简单、快捷定位 

手机地理数据优缺点

优点缺点
相当准确需要能够访问手机或其moden的设备
可在室内使用在基站较少的片源地区效果不好
可以简单、快捷定位 

用户自定义的地理定位数据 

优点缺点
用户可以获得比程序定位服务更准确的位置数据可能很不准确,特别是当用户位置变更后
允许地理定位服务的结果作为备用位置信息 
用户自行输入可能比自动检测更快 

用户所在位置属于敏感信息,HTML5 Geolocation规范提供了一套保护用户隐私的机制。除非得到 用户明确许可,否则不可获取位置信息。

二、使用Geolocation API

1、浏览器支持检查

目前主流浏览器都支持Geolocation API。要查看某个版本是否支持可参考http://caniuse.com

用脚本检查支持性:

function loadDemo() {
    if (navigator.geolocation) {
        document.getElementById("support").innerHTML = "Geolocation supported.";
    } else {
        docment.getElementById("support").innerHTML = "Geolocation is not supported in your browser.";
    }
}

 2、位置请求

有两种类型的位置要求

  • 单次定期诶请求
  • 重复性的位置更新请求
单次请求函数:
void getCurrentPosition(in PositionCallback successCallback, 
                             in optional PositionErrorCallback errorCallback,
                             in optional PositionOptions options);
 分析一下这个核心函数。

相关推荐