HTML5 – 地理定位

HTML5 – 地理定位

HTML5 地理定位 API 允许你与自己喜爱的网站分享你的位置。JavaScript 可以捕获你的纬度和经度,并可以发送到后端服务器,做像查找当地商家或在地图上显示你的位置等有趣的位置感知功能。

如今,大多数浏览器和移动设备都支持地理定位 API。地理位置 API 与一个全局导航器对象的新属性,即地理位置对象(Geolocation object),一起运作。可通过以下代码创建地理位置对象 −

var geolocation = navigator.geolocation;

地理位置对象是一个服务对象,允许插件检索设备的地理位置信息。

地理定位方法

地理位置对象提供以下方法 −

序号 方法 & 描述
1 getCurrentPosition() 该方法检索用户当前的地理位置。
2 watchPosition() 该方法会不断接收当前设备地理位置的周期性更新。
3 clearWatch() 该方法可取消继续 watchPosition 调用。

示例

以下是使用上述任何方法的样本代码 −

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

这里,showLocation 和 errorHandler 是回调方法,将在下一节中被用来获取实际位置和处理任何错误。

地址属性

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

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

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

属性 类型 描述
coords 对象 指定设备的地理位置。位置由一组地理坐标和有关方向和速度的信息组成。
coords.latitude 数字 指定以小数度表示的纬度估计。值范围为[-90.00,+90.00]。
coords.longitude 数字 指定以小数度表示的经度估计。值范围为[-180.00,+180.00]。
coords.altitude 数字 [可选]指定相对于WGS 84椭球体的高度估计,以米为单位。
coords.accuracy 数字 [可选]指定经纬度估计的精度,以米为单位。
coords.altitudeAccuracy 数字 [可选]指定高度估计的精度,以米为单位。
coords.heading 数字 [可选]指定设备当前相对于真北的度数,顺时针计数为方向。
coords.speed 数字 [可选]指定设备当前地面速度,以米/秒为单位。
timestamp 日期 指定获取位置信息并创建Position对象时的时间。

示例

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

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

处理错误

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

geolocations方法getCurrentPosition()和watchPosition()使用错误处理程序回调方法,该方法返回PositionError对象。此对象具有以下两个属性:

属性 类型 描述
code 数字 包含错误的数字代码。
message 字符串 包含错误的人类可读描述。

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

Code Constant 描述
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 对象,该对象指定了用于检索设备地理位置的一组选项。

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

属性 类型 说明
enableHighAccuracy 布尔 指定部件是否希望接收最准确的位置估计值。默认情况下为false。
timeout 数字 timeout属性是您的Web应用程序愿意等待位置的毫秒数。
maximumAge 数字 指定缓存位置信息的到期时间(以毫秒为单位)。

例子

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

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程