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