Geolocation模块管理设备位置信息,用于获取地理位置信息,如经度、纬度等。通过plus.geolocation可获取设备位置管理对象。虽然W3C已经提供标准API获取位置信息,但在某些平台存在差异或未实现,为了保持各平台的统一性,定义此规范接口获取位置信息。

1、方法

1.1、getCurrentPosition: 获取当前设备位置信息

void plus.geolocation.getCurrentPosition( successCB, errorCB, option );

说明:位置信息将通过手机GPS设备或其它信息如IP地址、移动网络信号获取,由于获取位置信息可能需要较长的时间,当成功获取位置信息后将通过successCB回调函数返回。

参数:

successCB: ( GeolocationSuccessCallback ) 必选 获取设备位置信息成功回调函数

errorCB: ( GeolocationErrorCallback ) 可选 获取设备位置信息失败回调函数

option: ( PositionOptions ) 可选 获取设备位置信息的参数

返回值:void : 无

平台支持:Android - 2.2+ (支持): 支持、iOS - 4.3+ (支持): 支持

示例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Geolocation Example</title>
  6. <script type="text/javascript" >
  7. // 扩展API加载完毕后调用onPlusReady回调函数
  8. document.addEventListener( "plusready", onPlusReady, false );
  9. // 扩展API加载完毕,现在可以正常调用扩展API
  10. function onPlusReady() {
  11. plus.geolocation.getCurrentPosition( function ( p ) {
  12. alert( "Geolocation\nLatitude:" + p.coords.latitude + "\nLongitude:" + p.coords.longitude + "\nAltitude:" + p.coords.altitude );
  13. }, function ( e ) {
  14. alert( "Geolocation error: " + e.message );
  15. } );
  16. }
  17. </script>
  18. </head>
  19. <body >
  20. </body>
  21. </html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Geolocation Example</title>
<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener( "plusready", onPlusReady, false );
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady() {
plus.geolocation.getCurrentPosition( function ( p ) {
alert( "Geolocation\nLatitude:" + p.coords.latitude + "\nLongitude:" + p.coords.longitude + "\nAltitude:" + p.coords.altitude );
}, function ( e ) {
alert( "Geolocation error: " + e.message );
} );
}
</script>
</head>
<body >
</body>
</html>

1.2、watchPosition: 监听设备位置变化信息

Number plus.geolocation.watchPosition( successCB, errorCB, option );

说明:位置信息将通过手机GPS设备或其它信息如IP地址、移动网络信号获取。当位置信息更新后将通过successCB回调函数返回。位置信息获取失败则调用回调函数errorCB。

参数:

successCB: ( GeolocationSuccessCallback ) 必选 设备位置信息更新成功回调函数

errorCB: ( GeolocationErrorCallback ) 可选 获取设备位置信息失败回调函数

option: ( PositionOptions ) 可选 监听设备位置信息的参数

返回值:Number : 用于标识位置信息监听器,可通过clearWatch方法取消监听。

平台支持:Android - 2.2+ (支持): 支持,iOS - 4.3+ (支持): 支持

示例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Geolocation Example</title>
  6. <script type="text/javascript" >
  7. // 扩展API加载完毕后调用onPlusReady回调函数
  8. document.addEventListener( "plusready", onPlusReady, false );
  9. // 扩展API加载完毕,现在可以正常调用扩展API
  10. function onPlusReady() {
  11. plus.geolocation.watchPosition( function ( a ) {
  12. alert( "Geolocation\nLatitude:" + p.coords.latitude + "\nLongitude:" + p.coords.longitude + "\nAltitude:" + p.coords.altitude );
  13. }, function ( e ) {
  14. alert( "Geolocation error: " + e.message );
  15. } );
  16. }
  17. </script>
  18. </head>
  19. <body >
  20. </body>
  21. </html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Geolocation Example</title>
<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener( "plusready", onPlusReady, false );
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady() {
plus.geolocation.watchPosition( function ( a ) {
alert( "Geolocation\nLatitude:" + p.coords.latitude + "\nLongitude:" + p.coords.longitude + "\nAltitude:" + p.coords.altitude );
}, function ( e ) {
alert( "Geolocation error: " + e.message );
} );
}
</script>
</head>
<body >
</body>
</html>

1.3、clearWatch: 关闭监听设备位置信息

void plus.geolocation.clearWatch( watchId );

参数:watchId: ( Number ) 必选 需要取消的位置监听器标识,调用watchPosition方法的返回值。

返回值:void : 无

平台支持:Android - 2.2+ (支持): 支持,iOS - 4.3+ (支持): 支持

示例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Geolocation Example</title>
  6. <script type="text/javascript" >
  7. // 扩展API加载完毕后调用onPlusReady回调函数
  8. document.addEventListener( "plusready", onPlusReady, false );
  9. // 扩展API加载完毕,现在可以正常调用扩展API
  10. var wid = null;
  11. function onPlusReady() {
  12. wid = plus.geolocation.watchPosition( function ( p ) {
  13. alert( "Geolocation\nLatitude:" + p.coords.latitude + "\nLongitude:" + p.coords.longitude + "\nAltitude:" + p.coords.altitude );
  14. }, function ( e ) {
  15. alert( "Geolocation error: " + e.message );
  16. } );
  17. }
  18. function cancel() {
  19. plus.geolocation.clearWatch( wid );
  20. wid = null;
  21. }
  22. </script>
  23. </head>
  24. <body >
  25. <input type="button" value="Cancel" onclick="cancel();" ></input>
  26. </body>
  27. </html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Geolocation Example</title>
<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener( "plusready", onPlusReady, false );
// 扩展API加载完毕,现在可以正常调用扩展API
var wid = null;
function onPlusReady() {
wid = plus.geolocation.watchPosition( function ( p ) {
alert( "Geolocation\nLatitude:" + p.coords.latitude + "\nLongitude:" + p.coords.longitude + "\nAltitude:" + p.coords.altitude );
}, function ( e ) {
alert( "Geolocation error: " + e.message );
} );
}
function cancel() {
plus.geolocation.clearWatch( wid );
wid = null;
}
</script>
</head>
<body >
<input type="button" value="Cancel" onclick="cancel();" ></input>
</body>
</html>

2、对象

2.1、Position: JSON对象,设备位置信息数据

interface Position {

readonly attribute Coordinates coords;

readonly attribute String coordsType;

readonly attribute Number timestamp;

readonly attribute Address address;

readonly attribute String addresses;

}

属性:

(1)、coords: (Coordinates 类型 )地理坐标信息,包括经纬度、海拔、速度等信息

(2)、coordsType: (String 类型 )获取到地理坐标信息的坐标系类型,可取以下坐标系类型: “gps”:表示WGS-84坐标系; “gcj02”:表示国测局经纬度坐标系; “bd09”:表示百度墨卡托坐标系; “bd09ll”:表示百度经纬度坐标系。

(3)、timestamp: (Number 类型 )获取到地理坐标的时间戳信息,时间戳值为从1970年1月1日至今的毫秒数。

(4)、address: (Address 类型 )获取到地理位置对应的地址信息,获取地址信息需要连接到服务器进行解析,所以会消耗更多的资源,如果不需要获取地址信息可通过设置PositionOptions参数的geocode属性值为false避免获取地址信息。 如果没有获取到地址信息则返回undefined。平台支持Android - 2.3+ (支持): 使用系统定位模块无法获取位置信息。iOS - 5.1+ (支持): 系统定位模块也支持获取位置信息。

(5)、addresses: (String 类型 )获取完整地址描述信息。如果没有获取到地址信息则返回undefined。平台支持Android - 2.3+ (支持): 使用系统定位模块无法获取位置信息。iOS - 5.1+ (支持): 系统定位模块也支持获取位置信息。

2.2、Address: JSON对象,地址信息

interface Address {

readonly attribute String country;

readonly attribute String province;

readonly attribute String city;

readonly attribute String district;

readonly attribute String street;

readonly attribute String poiName;

readonly attribute String postalCode;

readonly attribute String cityCode;

}

属性:

(1)、country: (String 类型 )国家。如“中国”,如果无法获取此信息则返回undefined。

(2)、province: (String 类型 )省份名称。如“北京市”,如果无法获取此信息则返回undefined。

(3)、city: (String 类型 )城市名称。如“北京市”,如果无法获取此信息则返回undefined。

(4)、district: (String 类型 )区(县)名称。如“朝阳区”,如果无法获取此信息则返回undefined。

(5)、street: (String 类型 )街道和门牌信息。如“酒仙桥路”,如果无法获取此信息则返回undefined。

(6)、poiName: (String 类型 )POI信息。如“电子城.国际电子总部”,如果无法获取此信息则返回undefined。

(7)、postalCode: (String 类型 )邮政编码。如“100016”,如果无法获取此信息则返回undefined。

(8)、cityCode: (String 类型 )城市代码。如“010”,如果无法获取此信息则返回undefined。

2.3、Coordinates: JSON对象,地理坐标信息

interface Coordinates {

readonly attribute double latitude;

readonly attribute double longitude;

readonly attribute double altitude;

readonly attribute double accuracy;

readonly attribute double altitudeAccuracy;

readonly attribute double heading;

readonly attribute double speed;

}

属性:

(1)、latitude: (Number 类型 )坐标纬度值。数据类型对象,地理坐标中的纬度值。

(2)、longitude: (Number 类型 )坐标经度值。数据类型对象,地理坐标中的经度值。

(3)、altitude: (Number 类型 )海拔信息。数据类型对象,如果无法获取此信息,则此值为空(null)。

(4)、accuracy: (Number 类型 )地理坐标信息的精确度信息。数据类型对象,单位为米,其有效值必须大于0。

(5)、altitudeAccuracy: (Number 类型 )海拔的精确度信息。数据类型对象,单位为米,其有效值必须大于0。如果无法获取海拔信息,则此值为空(null)。

(6)、heading: (Number 类型 )表示设备移动的方向。数据类型对象,范围为0到360,表示相对于正北方向的角度。如果无法获取此信息,则此值为空(null)。如果设备没有移动则此值为NaN。

(7)、speed: (Number 类型 )表示设备移动的速度。数据类型对象,单位为米每秒(m/s),其有效值必须大于0。如果无法获取速度信息,则此值为空(null)。

2.4、PositionOptions: JSON对象,监听设备位置信息参数

属性:

(1)、enableHighAccuracy: (Boolean 类型 )是否高精确度获取位置信息。高精度获取表示需要使用更多的系统资源,默认值为false。

(2)、timeout: (Number 类型 )获取位置信息的超时时间。单位为毫秒(ms),默认值为不超时。如果在指定的时间内没有获取到位置信息则触发错误回调函数。

(3)、maximumAge: (Number 类型 )获取位置信息的缓存时间。单位为毫秒(ms),默认值为0(立即更新获取)。如果设备缓存的位置信息超过指定的缓存时间,将重新更新位置信息后再返回。

(4)、provider: (String 类型 )优先使用的定位模块。可取以下供应者: "system":表示系统定位模块,支持wgs84坐标系; "baidu":表示百度定位模块,支持gcj02/bd09/bd09ll坐标系; "amap":表示高德定位模板,支持gcj02坐标系。 默认值按以下优先顺序获取(amap>baidu>system),若指定的provider不存在或无效则返回错误回调。 注意:百度/高德定位模块需要配置百度/高德地图相关参数才能正常使用。平台支持Android - 2.2+ (支持),iOS - 4.5+ (支持): provider为“baidu”时,仅支持bd09ll坐标系,暂不支持高德定位模块。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Geolocation Example</title>
  6. <script type="text/javascript" >
  7. // 扩展API加载完毕后调用onPlusReady回调函数
  8. document.addEventListener( "plusready", onPlusReady, false );
  9. // 扩展API加载完毕,现在可以正常调用扩展API
  10. function onPlusReady() {
  11. // 使用百度地图地位模块获取位置信息
  12. plus.geolocation.getCurrentPosition( function ( p ) {
  13. alert( "Geolocation\nLatitude:" + p.coords.latitude + "\nLongitude:" + p.coords.longitude + "\nAltitude:" + p.coords.altitude );
  14. }, function ( e ) {
  15. alert( "Geolocation error: " + e.message );
  16. },{provider:'baidu'});
  17. }
  18. </script>
  19. </head>
  20. <body >
  21. </body>
  22. </html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Geolocation Example</title>
<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener( "plusready", onPlusReady, false );
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady() {
// 使用百度地图地位模块获取位置信息
plus.geolocation.getCurrentPosition( function ( p ) {
alert( "Geolocation\nLatitude:" + p.coords.latitude + "\nLongitude:" + p.coords.longitude + "\nAltitude:" + p.coords.altitude );
}, function ( e ) {
alert( "Geolocation error: " + e.message );
},{provider:'baidu'});
}
</script>
</head>
<body >
</body>
</html>

(5)、coordsType: (String 类型 )指定获取的定位数据坐标系类型。可取以下坐标系类型: “wgs84”:表示WGS-84坐标系; “gcj02”:表示国测局经纬度坐标系; “bd09”:表示百度墨卡托坐标系; “bd09ll”:表示百度经纬度坐标系; provider为“system”时,默认使用“wgs84”类型;provider为“baidu”是,默认使用“bd09ll”类型。 如果设置的坐标系类型provider不支持,则返回错误。

(6)、geocode: (Boolean 类型 )是否解析地址信息。解析的地址信息保存到Position对象的address、addresses属性中,true表示解析地址信息,false表示不解析地址信息,返回的Position对象的address、addresses属性值为undefined,默认值为true。 如果解析地址信息失败则返回的Position对象的address、addresses属性值为null。

2.5、GeolocationError: JSON对象,定位错误信息

interface GeolocationError {

const Number PERMISSION_DENIED = 1;

const Number POSITION_UNAVAILABLE = 2;

const Number TIMEOUT = 3;

const Number UNKNOWN_ERROR = 4;

readonly attribute Number code;

readonly attribute String message;

}

常量:

PERMISSION_DENIED: (Number 类型 )访问权限被拒绝。系统不允许程序获取定位功能,错误代码常量值为1。

POSITION_UNAVAILABLE: (Number 类型 )位置信息不可用。无法获取有效的位置信息,错误代码常量值为2。

TIMEOUT: (Number 类型 )获取位置信息超时。无法在指定的时间内获取位置信息,错误代码常量值为3。

UNKNOWN_ERROR: (Number 类型 )未知错误。其它未知错误导致无法获取位置信息,错误代码常量值为4。

属性:

code: (Number 类型 )错误代码。取值范围为GeolocationError对象的常量值。

message: (String 类型 )错误描述信息。详细错误描述信息。

3、回调方法

3.1、GeolocationSuccessCallback: 获取设备位置信息成功的回调函数

void onSuccess( position ) {

// Get Position code.

}

参数:position: ( Position ) 必选 设备的地理位置信息,参考Position

返回值:void : 无

示例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Geolocation Example</title>
  6. <script type="text/javascript" >
  7. // 扩展API加载完毕后调用onPlusReady回调函数
  8. document.addEventListener( "plusready", onPlusReady, false );
  9. // 扩展API加载完毕,现在可以正常调用扩展API
  10. function onPlusReady() {
  11. plus.geolocation.getCurrentPosition( function ( p ) {
  12. alert( "Geolocation\nLatitude:" + p.coords.latitude + "\nLongitude:" + p.coords.longitude + "\nAltitude:" + p.coords.altitude );
  13. console.log( "Geolocation info: " + JSON.stringify(p) );
  14. }, function ( e ) {
  15. console.log("Gelocation Error: code - "+e.code+"; message - "+e.message);
  16. } );
  17. }
  18. </script>
  19. </head>
  20. <body >
  21. </body>
  22. </html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Geolocation Example</title>
<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener( "plusready", onPlusReady, false );
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady() {
plus.geolocation.getCurrentPosition( function ( p ) {
alert( "Geolocation\nLatitude:" + p.coords.latitude + "\nLongitude:" + p.coords.longitude + "\nAltitude:" + p.coords.altitude );
console.log( "Geolocation info: " + JSON.stringify(p) );
}, function ( e ) {
console.log("Gelocation Error: code - "+e.code+"; message - "+e.message);
} );
}
</script>
</head>
<body >
</body>
</html>

3.1、GeolocationErrorCallback: 获取设备位置信息失败的回调函数

function void onGeolocationError( GeolocationError error ) {

// Handle error

var code = error.code; // 错误编码

var message = error.message; // 错误描述信息

}

参数:

error: ( GeolocationError ) 必选 获取位置操作的错误信息,可通过error.code(Number类型)获取错误编码; 可通过error.message(String类型)获取错误描述信息。

返回值:void : 无

示例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Geolocation Example</title>
  6. <script type="text/javascript" >
  7. // 扩展API加载完毕后调用onPlusReady回调函数
  8. document.addEventListener( "plusready", onPlusReady, false );
  9. // 扩展API加载完毕,现在可以正常调用扩展API
  10. function onPlusReady() {
  11. plus.geolocation.getCurrentPosition( function ( p ) {
  12. console.log( "Geolocation\nLatitude:" + p.coords.latitude + "\nLongitude:" + p.coords.longitude + "\nAltitude:" + p.coords.altitude );
  13. }, function ( e ) {
  14. console.log("Gelocation Error: code - "+e.code+"; message - "+e.message);
  15. switch(e.code) {
  16. case e.PERMISSION_DENIED:
  17. alert("User denied the request for Geolocation.");
  18. break;
  19. case e.POSITION_UNAVAILABLE:
  20. alert("Location information is unavailable.");
  21. break;
  22. case e.TIMEOUT:
  23. alert("The request to get user location timed out.");
  24. break;
  25. case e.UNKNOWN_ERROR:
  26. alert("An unknown error occurred.");
  27. break;
  28. }
  29. } );
  30. }
  31. </script>
  32. </head>
  33. <body >
  34. </body>
  35. </html>

HTML5+规范:Geolocation(管理设备位置信息) 定位的更多相关文章

  1. HTML5 Geolocation位置信息定位总结

    现在定位功能很常用,所以抽出一些时间将这个功能的知识总结一下作为知识梳理的依据.HTML5 Geolocation的定位用法很简单,首先请求位置信息,用户同意,则返回位置信息.HTML5 Geoloc ...

  2. [转] HTML5+规范:device(管理设备信息)

    http://blog.csdn.net/qq_27626333/article/details/51815310 Device模块管理设备信息,用于获取手机设备的相关信息,如IMEI.IMSI.型号 ...

  3. h5+ 管理设备信息

    Device模块管理设备信息,用于获取手机设备的相关信息,如IMEI.IMSI.型号.厂商等.通过plus.device获取设备信息管理对象. 1.属性 1.1.imei: 设备的国际移动设备身份码, ...

  4. Geolocation API JavaScript访问用户的当前位置信息

    Geolocation API在浏览器中的实现是navigator.geolocation对象,常用的有以下方法. 1.第一个方法是getCurrentPosition() 调用这个方法就会触发请求用 ...

  5. 定位 - CoreLocation - 打印位置信息

    1. 导入框架 <CoreLocation.framework>, 引入头文件 import <CoreLocation/CoreLocation.h>; 2. 创建管理者对象 ...

  6. Android 集成GoogleMap,实现定位和获取位置信息

    1.准备 我使用的是AS2.2.2,首先FQ注册google开发者帐号,准备获取API Key,网上有许多相关资料我就不再赘述,这里讲一个比较小白级的获取方法,可以减少许多输入 1.1. AS创建项目 ...

  7. android黑科技系列——微信定位聊天记录中照片的位置信息插件开发详解

    一.前言 最近关于微信中,朋友之间发送原图就可能暴露你的位置信息,其实这个问题不在于微信,微信是为了更好的体验效果,才有发送原图功能,而对于拍照,发送普通图片微信后台都会过滤图片的exif信息,这样就 ...

  8. html5获取位置信息,h5获取位置信息

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. iOS开发----地图与导航--定位和位置信息获取

    要实现地图.导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作.Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图 ...

随机推荐

  1. 洛谷P3258 [JLOI]2014松鼠的新家

    题目 树上差分 树上点差分,注意会出现路径端点多记录的情况,这时需要在最后输出的时候输出子树的差分数组的和-1,而不是在处理原数据的时候减1.并且a[n]不需要糖果,最后也减去就行. #include ...

  2. HGNC数据库 HUGO基因命名委员会

    http://www.genenames.org/ HGNC 全称为HUGO Gene Nomenclature Committee, 叫做 HUGO基因命名委员会,负责对人类基因组上包括蛋白编码基因 ...

  3. Windows系统中CreateFileMapping实现的共享内存及用法

    在32位的Windows系统中,每一个进程都有权访问他自己的4GB(232=4294967296)平面地址空间,没有段,没有选择符,没有near和far指针,没有near和far函数调用,也没有内存模 ...

  4. 大牛总结的MySQL锁优化【转】

    MySQL 就是其中之一,它经历了多个版本迭代.数据库锁是 MySQL 数据引擎的一部分,今天我们就一起来学习 MySQL 的数据库锁和它的优化. MySQL 锁分类 当多个事务或者进程访问同一个资源 ...

  5. Kibana启动后外网访问不了

    问题 Kibana启动后,使用外网访问 http://ip地址:5601 访问不了日志中最后显示 "statusCode":302 ,在控制台 curl http://localh ...

  6. 原创:【ajax | axios跨域简单请求+复杂请求】自定义header头Token请求Laravel5后台【亲测可用】

    如标题:我想在ajax的header头增加自定义Token进行跨域api认证并调用,api使用laravel5编写,如何实现? 首先,了解下CORS简单请求和复杂请求.  -- CORS简单请求 -- ...

  7. 无废话centos+TDengine+Telegraf+Grafana入门

    一.安装TDengine:1.从官网https://www.taosdata.com/cn/getting-started/下载RPM包(tdengine-1.6.2.0-3.el7.x86_64.r ...

  8. Nginx返回固定json或者文本格式的方法

    在系统还没有做集群的情况下,直接重启项目时刚好用户在使用的话,一般都会受到投诉,那么使用nginx返回类似“系统维护”的提示信息并且提前在应用上面做通知才是合适的做法 那么记录一下nginx里面的配置 ...

  9. MQTT研究之EMQ:【CoAP协议的ECC证书研究】

    今天研究的内容,是CoAP这个协议在EMQ消息队列的支持,CoAP是一个受限资源的协议,基于UDP实现的多用于物联网环境的通信协议.相关介绍不多说,可以看RFC. CoAP协议下,基于DTLS通信,同 ...

  10. Multitenancy

    Multitenancy https://www.gartner.com/en/information-technology/glossary/multitenancy 公用一套物理环境,划分出不同的 ...