html5 Geolocation 地理定位
- - On The Way一、Geolocation 概述. Geolocation API 在网页中使用 geolocation 对象向javaScript 提供经度和纬度. 利用 geolocation 对象,可以获取用户位置和跟踪用户位置的变化. 1.1 Geolocation API 获取地理位置的方式. IP地址 - 任何地方可用,不精确.
Geolocation API 在网页中使用 geolocation 对象向javaScript 提供经度和纬度。利用 geolocation 对象,可以获取用户位置和跟踪用户位置的变化。
设备使用下列数据源:
为了使用更高的准确度,许多设备使用一个或更多的数据源组合。
Geolocation API 规范提供了一套保护用户隐私的机制,必须先得到用户明确许可,才能获取用户的位置信息。
访问使用Geolocation API的页面应用时,会触发隐私保护机制,浏览器会询问用户是否共享位置信息。
用于收集位置数据的应用程序的开发人员应考虑关于隐私的以下准则:
因为位置数据属于敏感信息,所以开发人员应考虑遵循以下准则:
Geolocation API的使用很简单,请求一个位置信息,如果用户同意,就返回位置信息。
在使用html5 Geolocation API时,应确保浏览器支持Geolocation API.
if (navigator.geolocation) {
console.log('Geolocation is supported.');
} else {
console.log('geolocation is not supported in your broswer.');
}
语法:
// getCurrentPosition
navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options);
// watchPosition
navigator.geolocation.watchPosition(successCallback, errorCallback, options);
这两个方法都就使用的是异步回调的方式。它们有相同的参数:
这个方法接受一个参数,需要清理监视位置变化的方法的id:watchID(这个参数由watchPosition方法返回)。
var watchId = navigator.geolocation.watchPosition(function(position) { // succes callback
var coords = position.coords;
console.log(coords.latitude); // 纬度
console.log(coords.longitude); // 经度
console.log(coords.accuracy); // 准确度,由于geolocation的实现方式,呈现返回值时一定要检查返回值的准确度
console.log(coords.altitude); // 海拔,以米为单位,如不支持altitude特性,返回null
console.log(coords.altitudeAccuracy); // 海拔经度,以米为单位,如不支持altitude特性,返回null
console.log(coords.heading); // 行进方向,相对正北
console.log(coords.speed); // 行进速度,单位m/s
console.log(timestamp); // 获取位置的时间
}, function(error) { // error callback
console.log('获取位置信息失败。');
console.log(error.code);
// UNKNOWN_ERROR (error code 0) - 未知错误
// PERMISSION_DENIED (error code 1) - 用户拒绝共享地理位置
// POSITION_UNAVAILABLE (error code 2) - 无法获取当前位置
// TIMEOUT (error code 3) - 在指定时间无法获取位置会触发此错误。
}, { // options
enableHighAccuracy: true,
maximumAge: 30000,
timeout: 27000
});