监听设备位置信息的改变
[!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 / 可选 ) -- 是否启用高精度定位功能,默认falsetrue-- 启用,采用更高经度的方法(比如卫星定位)进行定位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方法来停止观察位置变化