HTML5 Geolocation API可让您与喜爱的网站分享您的位置信息. JavaScript可以捕获您的纬度和经度,并可以发送到后端网络服务器并执行奇特的位置感知功能,例如查找本地商家或在地图上显示您的位置.
今天大多数浏览器和移动设备支持Geolocation API.地理定位API使用全局导航器对象的新属性,即.地理定位对象,可以创建如下 :
var geolocation = navigator.geolocation;
地理位置对象是一个服务对象,允许小部件检索有关设备地理位置的信息.
地理定位方法
地理定位对象提供以下方法 :
Sr.No. | 方法&描述 |
---|---|
1 | getCurrentPosition() 此方法检索用户的当前地理位置. |
2 | watchPosition() 此方法检索有关设备当前地理位置的定期更新. |
3 | clearWatch() 此方法取消正在进行的watchPosition调用. |
示例
以下是使用任何一个的示例代码上面的方法 :
function getLocation() { var geolocation = navigator.geolocation; geolocation.getCurrentPosition(showLocation, errorHandler);}
这里showLocation和errorHandler是回调方法,用于获取实际位置,如下一节所述,并处理错误,如果有任何.
位置属性
地理位置方法getCurrentPosition()和getPositionUsingMethodName()指定检索位置信息的回调方法.这些方法与对象位置异步调用,该对象存储完整的位置信息.
位置对象指定当前的地理位置装置.该位置表示为一组地理坐标以及有关航向和速度的信息.
下表描述了Position对象的属性.对于可选属性,如果系统无法提供值,则属性的值设置为null.
属性 | 输入 | 描述 |
---|---|---|
coords | objects | 指定设备的地理位置.该位置表示为一组地理坐标以及有关航向和速度的信息. |
coords.latitude | Number | 以十进制度数指定纬度估计值.值范围是[-90.00,+ 90.00]. |
coords.longitude | Number | 指定经度估算十进制度.值范围是[-180.00,+ 180.00]. |
coords.altitude | Number | [可选]指定高度估计值以米为单位,高于WGS 84椭圆体. |
coords.accuracy | Number | [可选]指定以米为单位的纬度和经度估计的准确度. |
coords.altitudeAccuracy | Number | [可选]指定准确度以米为单位的高度估计值. |
coords .heading | Number | [可选]指定设备当前的移动方向,以相对于真北的顺时针方向计数. |
coords.speed | Number | [可选]指定设备的当前地面速度,单位为米/秒. |
timestamp | date | 指定检索位置信息和创建Position对象的时间. |
示例
以下是使用Position对象的示例代码.这里showLocation方法是一个回调方法 :
function showLocation( position ) { var latitude = position.coords.latitude; var longitude = position.coords.longitude; ...}
处理错误
地理定位很复杂,而且非常多需要捕获任何错误并正常处理它.
地理位置方法getCurrentPosition()和watchPosition()使用错误处理程序回调方法,该方法提供 PositionError 对象这个对象有以下两个属性 :
物业 | 类型 | 描述 |
---|---|---|
code | 数字 | 包含错误的数字代码. |
message | 字符串 | 包含人类可读的错误描述. |
下表描述了PositionError对象中返回的可能错误代码.
代码 | 常量 | 描述 |
---|---|---|
0 | UNKNOWN_ERROR | 由于未知错误,该方法无法检索设备的位置. |
1 | PERMISSION_DENIED | 该方法无法检索设备的位置,因为该应用程序无权使用位置服务. |
2 | POSITION_UNAVAILABLE | 无法确定设备的位置. |
3 | TIMEOUT | 该方法无法在指定的最大超时间隔内检索位置信息. |
示例
以下是使用PositionError对象的示例代码.这里errorHandler方法是一个回调方法 :
function errorHandler( err ) { if (err.code == 1) { // access is denied } ...}
职位选项
以下是getCurrentPosition()方法的实际语法 :
getCurrentPosition(callback, ErrorCallback, options)
这里的第三个参数是 PositionOptions 对象,它指定了一组用于检索设备地理位置的选项.
以下是可以指定为第三个参数的选项;
Property | 类型 | 描述 |
---|---|---|
enableHighAccuracy | Boolean | 指定小部件是否希望获得最准确的位置估计.默认情况下,这是假的. |
timeout | Number | 超时属性是您的Web应用程序愿意等待某个职位的毫秒数. |
maximumAge | Number | 指定缓存位置信息的到期时间(以毫秒为单位). |
示例
以下示例代码显示如何使用上述方法 :
function getLocation() { var geolocation = navigator.geolocation; geolocation.getCurrentPosition(showLocation, errorHandler, {maximumAge: 75000});}