当前位置: 首页 > 文档资料 > HTML5 入门教程 >

地理位置(Geolocation)

优质
小牛编辑
133浏览
2023-12-01

HTML5 Geolocation API可让您与喜爱的网站分享您的位置。 JavaScript可以捕获您的纬度和经度,并可以发送到后端Web服务器并执行奇特的位置感知事项,例如查找本地商家或在地图上显示您的位置。

今天,大多数浏览器和移动设备都支持Geolocation API。 地理定位API使用全局导航器对象的新属性,即。 地理位置对象可以创建如下 -

var geolocation = navigator.geolocation;

地理定位对象是一个服务对象,允许小部件检索有关设备地理位置的信息。

地理定位方法

地理定位对象提供以下方法 -

Sr.No.方法和描述
1getCurrentPosition()

此方法检索用户的当前地理位置。

2watchPosition()

此方法检索有关设备当前地理位置的定期更新。

3clearWatch()

此方法取消正在进行的watchPosition调用。

例子 (Example)

以下是使用上述任何方法的示例代码 -

function getLocation() {
   var geolocation = navigator.geolocation;
   geolocation.getCurrentPosition(showLocation, errorHandler);
}

这里showLocation和errorHandler是回调方法,它们将用于获取实际位置,如下一节所述,并处理错误(如果有的话)。

位置属性

地理位置方法getCurrentPosition()和getPositionUsingMethodName()指定检索位置信息的回调方法。 这些方法与对象Position异步调用,该对象存储完整的位置信息。

Position对象指定设备的当前地理位置。 该位置表示为一组地理坐标以及有关航向和速度的信息。

下表描述了Position对象的属性。 对于可选属性,如果系统无法提供值,则将该属性的值设置为null。

属性类型描述
coordsobjects指定设备的地理位置。 该位置表示为一组地理坐标以及有关航向和速度的信息。
coords.latitudeNumber以十进制度数指定纬度估计值。 值范围为[-90.00,+ 90.00]。
coords.longitudeNumber以十进制度数指定经度估计值。 值范围是[-180.00,+ 180.00]。
coords.altitudeNumber[可选]指定WGS 84椭圆体上方的高度估计值(以米为单位)。
coords.accuracyNumber[可选]指定纬度和经度估计值的精度(以米为单位)。
coords.altitudeAccuracyNumber[可选]指定以米为单位的高度估计的准确度。
coords.headingNumber[可选]指定设备当前的移动方向,以相对于真北的顺时针方向计数。
coords.speedNumber[可选]指定设备当前的地速,单位为米/秒。
timestampdate指定检索位置信息和创建Position对象的时间。

例子 (Example)

以下是使用Position对象的示例代码。 这里showLocation方法是一个回调方法 -

function showLocation( position ) {
   var latitude = position.coords.latitude;
   var longitude = position.coords.longitude;
   ...
}

处理错误 (Handling Errors)

地理定位很复杂,非常需要捕获任何错误并优雅地处理它。

地理位置方法getCurrentPosition()和watchPosition()使用错误处理程序回调方法,该方法提供了PositionError对象。 该对象具有以下两个属性 -

属性类型描述
codeNumber包含错误的数字代码。
messageString包含错误的人类可读描述。

下表描述了PositionError对象中返回的可能错误代码。

不变描述
0UNKNOWN_ERROR由于未知错误,该方法无法检索设备的位置。
1PERMISSION_DENIED该方法无法检索设备的位置,因为该应用程序无权使用位置服务。
2POSITION_UNAVAILABLE无法确定设备的位置。
3TIMEOUT该方法无法在指定的最大超时间隔内检索位置信息。

例子 (Example)

以下是使用PositionError对象的示例代码。 这里的errorHandler方法是一个回调方法 -

function errorHandler( err ) {
   if (err.code == 1) {
      // access is denied
   }
   ...
}

职位选择

以下是getCurrentPosition()方法的实际语法 -

getCurrentPosition(callback, ErrorCallback, options)

这里的第三个参数是PositionOptions对象,它指定一组用于检索设备地理位置的选项。

以下是可以指定为第三个参数的选项 -

属性类型描述
enableHighAccuracyBoolean指定窗口小部件是否希望尽可能接收最准确的位置估计。 默认情况下,这是错误的。
timeoutNumbertimeout属性是Web应用程序愿意等待某个位置的毫秒数。
maximumAgeNumber指定缓存位置信息的到期时间(以毫秒为单位)。

例子 (Example)

以下是一个示例代码,显示如何使用上述方法 -

function getLocation() {
   var geolocation = navigator.geolocation;
   geolocation.getCurrentPosition(showLocation, errorHandler, {maximumAge: 75000});
}