# 地理位置 geolocation
# 接口声明
{ "name": "system.geolocation" }
# 导入模块
import geolocation from '@system.geolocation'
// 或
const geolocation = require('@system.geolocation')
# 接口定义
# geolocation.getLocation(OBJECT)
获取地理位置
# 权限要求
精确设备定位
开发者需要在 manifest.json 里面配置权限:
{
"permissions": [
{ "name": "hapjs.permission.LOCATION" }
]
}
# 参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| timeout | Number | 否 | 设置超时时间,单位是 ms,默认值为 30000 |
| success | Function | 是 | 成功回调 |
| fail | Function | 否 | 失败回调,可能是因为缺乏权限 |
| complete | Function | 否 | 执行结束后的回调 |
# success 返回值:
| 参数名 | 类型 | 说明 |
|---|---|---|
| longitude | Number | 经度,浮点数 |
| latitude | Number | 纬度,浮点数 |
| altitude | Number | 海拔、高度,单位m,浮点数 |
| speed | Number | 速度值,单位m/s,浮点数 |
| accuracy | Number | 精确度,值为正整数 |
| accuracyInfo | { horizontal: Number, vertical: Number } | 精确度信息,包含水平和垂直方向精准度 |
# fail 返回错误代码:
| 错误码 | 说明 |
|---|---|
| 203 | 该功能不支持 |
| 204 | 超时返回 |
# 示例:
geolocation.getLocation({
success: function(data) {
console.log(
`handling success: longitude = ${data.longitude}, latitude = ${
data.latitude
}, speed = ${data.speed}, altitude = ${data.altitude}`
)
},
fail: function(data, code) {
console.log(`handling fail, code = ${code}, errorMsg=${data}`)
}
})
# geolocation.subscribe(OBJECT)
监听地理位置。如果多次调用,仅最后一次调用生效
# 权限要求
精确设备定位
开发者需要在 manifest.json 里面配置权限:
{
"permissions": [
{ "name": "hapjs.permission.LOCATION" }
]
}
# 参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | Function | 是 | 每次位置信息发生变化,都会被回调 |
| fail | Function | 否 | 失败回调 |
# callback 返回值:
| 参数名 | 类型 | 说明 |
|---|---|---|
| longitude | Number | 经度,浮点数 |
| latitude | Number | 纬度,浮点数 |
| altitude | Number | 海拔、高度,单位m,浮点数 |
| speed | Number | 速度值,单位m/s,浮点数 |
| accuracy | Number | 精确度,值为正整数 |
# fail 返回错误代码:
| 错误码 | 说明 |
|---|---|
| 203 | 该功能不支持 |
# 示例:
geolocation.subscribe({
callback: function(data) {
console.log(
`handling success: longitude = ${data.longitude}, latitude = ${
data.latitude
}, speed = ${data.speed}, altitude = ${data.altitude}`
)
},
fail: function(data, code) {
console.log(`handling fail, code = ${code}, errorMsg=${data}`)
}
})
# geolocation.unsubscribe()
取消监听地理位置
# 权限要求
精确设备定位
开发者需要在 manifest.json 里面配置权限:
{
"permissions": [
{ "name": "hapjs.permission.LOCATION" }
]
}
# 参数:
无
# 示例:
geolocation.unsubscribe()
# 支持明细
| 设备产品 | 说明 |
|---|---|
| 小米 S1 Pro 运动健康手表 | 不支持 |
| 小米手环 8 Pro | 不支持 |
| 小米手环 9 / 9 Pro | 不支持 |
| Xiaomi Watch S3 | 支持 |
| Redmi Watch 4 | 不支持 |
| 小米腕部心电血压记录仪 | 不支持 |
| 小米手环 10 | 不支持 |
| Xiaomi Watch S4 | 支持 |
| REDMI Watch 5 | 支持 |
← 录音 record 传感器 sensor →