获取设备当前位置信息
[!TIP|labelVisibility:hidden|iconVisibility:hidden] navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options)
支持平台:
- Android
- iOS
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
successCallback | Function | 是 | 成功回调函数 |
errorCallback | Function | 否 | 失败回调函数 |
options | Object | 否 | 参数对象 |
successCallback
函数返回一个对象,该对象包含以下属性:
coords
(Object) -- 位置对象,该对象包含以下属性:latitude
(Number) -- 国际标准坐标系(WGS-84
) 下的纬度longitude
(Number) -- 国际标准坐标系(WGS-84
) 的经度
errorCallback
函数返回一个对象,该对象包含以下属性:
code
-- 错误代码,其值为以下常量之一:PositionError.PERMISSION_DENIED
-- 没有权限PositionError.POSITION_UNAVAILABLE
-- 定位服务不能用PositionError.TIMEOUT
-- 超时
message
(String) -- 相关错误信息
options
为参数对象,其属性可包含以下一项或多项:
enableHighAccuracy
( Boolean / 可选) -- 是否启用高精度定位功能,默认false
true
-- 启用,采用更高精度的方法(比如卫星定位)进行定位false
-- 不启用,基于网络监测定位
timeout
( Number / 可选) -- 超时时间,单位毫秒。默认为infinity
示例代码
// 引用js
<script src='supconit://hcmobile.js'></script>
<script>
// 监听’deviceready‘事件
document.addEventListener('deviceready', onDeviceReady, false)
function onDeviceReady(){
// 获取位置信息
var onSuccess = function(position) {
console.log(JSON.stringify(position))
alert(
'Latitude: ' + position.coords.latitude + '\n' +
'Longitude: ' + position.coords.longitude
);
};
var onError = function onError(error) {
alert(
'code: ' + error.code + '\n' +
'message: ' + error.message + '\n'
);
}
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
</script>
响应示例代码:
"latitude": 30.18177928701293
"longitude": 120.19462411769821
Bug
&Tip
1.
tip
:timeout
enableHighAccuracy
的控制逻辑在相关的js
代码里, 当时间超过timeout
时, 即使移动端设备定位成功,也不会触发successCallback
2.
tip
:iOS
端maximumAge的控制逻辑在相关的js
代码里