navigator.geolocation
getCurrentPosition() 触发请求用户共享地理定位信息的对话框
接收 3 个参数:
1. 成功回调函数
会接收到一个 Position 对象参数, 该对象有两个属性:
coords(对象) 包含下列与位置相关信息:
latitude (最常用) 以十进制度数表示的纬度
longtitude (最常用) 以十进制数表示的经度
accuracy 经, 纬度坐标的精度, 以 m 为单位
部分浏览器还提供如下属性:
altitude 以 m 为单位的海拔高度, 无相关数据则值为 null
altitudeAccuracy 海拔高度的精度, 以 m 为单位
heading 指南针的方向, 0° 表示正北, 值为 NaN 表示没有检测到数据
speed 速度 m/s, 无相关数据则值为 null
timestamp
2. 可选的失败回调函数
接收 1 个参数, 该对象有两个属性:
message 保存文本细腻下, 解释出错原因
code 保存一个数值, 表示错误类型:
用户拒绝共享 (1)
位置无效 (2)
超时 (3)
3. 可选的选项参数
用于设定信息的类型, 可设置选项有 3 个:
enableHighAccuracy 布尔值, 表示必须尽可能使用最准确的位置信息
timeout 以 ms 表示的等待位置信息的最长时间
maximumAge 表示上一次取得的坐标信息的有效时间 (ms), 如果时间到则重新取得新坐标信息
- // 在地图上绘制用户的位置
- navigator.geolocation.getCurrentPosition(function(position){ // 1. 成功回调函数
- drawMapCenteredAt(position.coords.latitude, positions.coords.longtitude);
- }, function(error){ // 2. 可选的失败回调函数
- // 实际开发中大多数 web 应用只会将错误消息保存到日志文件中, 而不一定会因此修改用户界面
- console.log("Error code:" + error.code);
- console.log("Error message:" + error.message);
- }, { // 3. 可选的选项参数
- enableHighAccuracy: true, // 除非确实需要非常精确的信息, 否则建议保持 false(默认值), 电量消耗性能消耗
- timeout: 5000,
- maximumAge: 25000 // 如果不需要频繁更新用户位置信息, 可以设为 Infinity, 保持使用上一次的坐标信息
- });
- watchPosition
watchPosition() 方法, 跟踪用户的位置, 它接收的参数与 getCurrentPosition() 完全相同
它与定时调用 getCurrentPosition() 效果相同.
第一次调用 watchPosition() 后会取得当前位置, 执行成功回调或错误回调, 然后函数等待系统发出位置已改变的信号 (不会自己轮询位置)
调用 watchPosition() 会返回一个数值标识符用于跟踪监控的操作. 基于这个返回值可以随时取消监控操作, 只要将其传递给 clearWatch() 方法即可 (与使用 setTimeout 和 clearTimeout 类似):
- var watchId = navigator.geolocation.watchPosition(function(position){
- drawMapCenteredAt(position.coords.latitude, positions.coords.longtitude);
- }, function(error){
- console.log("Error code:" + error.code);
- console.log("Error message:" + error.message);
- });
- clearWatch(watchId);