location-change.md 7.7 KB
Newer Older
L
lixu 已提交
1 2 3 4 5 6 7 8
### uni.onLocationChange(FUNCTION CALLBACK)

监听实时地理位置变化事件,需结合 `uni.startLocationUpdate``uni.startLocationUpdateBackground` 使用。

**平台差异说明**

|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序、飞书小程序|QQ小程序|快手小程序|京东小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
9
|√(3.6.8+)|√(3.6.8+)|√|x|√|√|x|√|x|
L
lixu 已提交
10 11 12 13 14 15 16

**FUNCTION CALLBACK 参数**

|参数名|类型|说明|平台差异说明|
|:-|:-|:-|:-|
|latitude|Number|纬度,范围为 -90~90,负数表示南纬。||
|longitude|Number|经度,范围为 -180~180,负数表示西经。||
17
|speed|Number|速度 (m/s)|H5不支持|
L
lixu 已提交
18
|accuracy|number|位置的精确度||
19
|altitude|number|高度 (m)|H5不支持|
L
lixu 已提交
20 21 22 23 24 25 26 27 28 29 30
|verticalAccuracy|number|垂直精度 (m)|字节小程序、快手小程序 Android 无法获取,返回 0|
|horizontalAccuracy|number|水平精度 (m)|字节小程序不支持|
|city|string|定位到的城市信息|百度小程序、字节小程序(iOS 不支持)|
|cityCode|String|城市编码|百度小程序||street|String|街道名称
|city|String|城市名称|百度小程序|
country|String|国家|百度小程序|
countryCode|String|国家代码|百度小程序|
province|String|省份|百度小程序|
streetNumber|String|街道号码|百度小程序|
district|String|区|百度小程序|
isFullAccuracy|Boolean|是不是精确定位信息|百度小程序|
31
altitudeAccuracy|Number|海拔的精确度信息|App|
L
lixu 已提交
32 33 34 35

**注意**
- 该方法会持续监听地理位置信息的变化,建议在不需要监听地理位置信息变化后,直接调用 `uni.stopLocationUpdate` 方法取消监听。
- `微信小程序`若使用该接口,需要在 app.json 中进行声明,否则将无法正常使用该接口,[详情](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.onLocationChange.html)
D
DCloud_LXH 已提交
36
- `字节小程序`调用此 API 需要申请高精度权限,具体信息见[高精度定位运营规范](https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/operation/platform-capabilities/high-progress-targeting/gaojingdu/)
L
lixu 已提交
37 38 39 40 41 42 43 44 45

**示例**

```javascript
uni.onLocationChange(function (res) {
	console.log('纬度:' + res.latitude);
	console.log('经度:' + res.longitude);
});
```
46 47 48 49 50 51 52 53
### uni.offLocationChange(FUNCTION CALLBACK)

关闭监听实时位置变化,前后台都停止消息接收。

**平台差异说明**

|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序、飞书小程序|QQ小程序|快手小程序|京东小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
54
|√(3.6.8+)|√(3.6.8+)|√|x|√|√|x|√|x|
55

56 57
**注意:App端及H5端callback参数为必填。**

58 59 60 61 62 63 64 65 66 67 68
**FUNCTION CALLBACK 参数**

|参数名|类型|说明|平台差异说明|
|:-|:-|:-|:-|
|latitude|number|纬度,范围 [-90, 90],负数表示南纬|快手小程序|
|longitude|number|经度,范围 [-180, 180],负数表示西经|快手小程序|
|speed|number|速度 (m/s)|快手小程序|
|accuracy|number|位置的精确度|快手小程序|
|altitude|number|高度 (m)|快手小程序|
|verticalAccuracy|number|垂直精度 (m)(Android 无法获取,返回 0)|快手小程序|
|horizontalAccuracy|number|水平精度 (m)|快手小程序|
L
lixu 已提交
69 70 71 72 73 74 75 76 77

### uni.onLocationChangeError(FUNCTION CALLBACK)

监听持续定位接口返回失败时触发。

**平台差异说明**

|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序、飞书小程序|QQ小程序|快手小程序|京东小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
78
|√(3.6.8+)|√(3.6.8+)|√|x|x|√|x|x|x|
L
lixu 已提交
79 80 81 82 83 84 85 86

**FUNCTION CALLBACK 参数**

|参数名|类型|说明|平台差异说明|
|:-|:-|:-|:-|
|errCode|Number|错误|微信小程序|
|errMsg|String|错误信息|字节小程序|

87 88 89 90 91 92 93 94
### uni.offLocationChangeError(FUNCTION CALLBACK)

取消注册位置更新错误回调。

**平台差异说明**

|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序、飞书小程序|QQ小程序|快手小程序|京东小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
95
|√(3.6.8+)|√(3.6.8+)|√|x|x|√|x|x|x|
96

97 98
**注意:App端及H5端callback参数为必填。**

99 100 101 102
**FUNCTION CALLBACK 参数**

无返回值。

L
lixu 已提交
103 104 105 106 107 108 109 110
### uni.startLocationUpdate(OBJECT)

开启小程序进入前台时接收位置消息。

**平台差异说明**

|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序、飞书小程序|QQ小程序|快手小程序|京东小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
111
|√(3.6.8+)|√(3.6.8+)|√|x|√|√|x|√|x|
L
lixu 已提交
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

**OBJECT 参数**

|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-:|
|type|String|否|指定坐标系类型,可以是 wgs84 或 gcj02|微信小程序、字节小程序|
|success|Function|否|接口调用成功的回调函数||
|fail|Function|否|接口调用失败的回调函数||
|complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)||
|needFullAccuracy|Boolean|否|针对 iOS14/Android12 及以上的新特性,其他情况本参数忽略。默认情况宿主是精确定位就返回精确定位信息。传入 true 会强制使用精确定位信息,iOS14/Android12 及以上如果没有精确定位权限,会弹出精确定位授权弹框。|百度小程序|


**示例**

```javascript
uni.startLocationUpdate({
  success: res => console.log('开启小程序接收位置消息成功'),
  fail: err => console.error('开启小程序接收位置消息失败:', err),
  complete: msg => console.log('调用开启小程序接收位置消息 API 完成')
});
```

134
### uni.stopLocationUpdate(OBJECT)
L
lixu 已提交
135

136
关闭监听实时位置变化,前后台都停止消息接收。
L
lixu 已提交
137 138 139 140 141

**平台差异说明**

|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序、飞书小程序|QQ小程序|快手小程序|京东小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
142
|√(3.6.8+)|√(3.6.8+)|√|x|√|√|x|√|x|
L
lixu 已提交
143 144 145 146 147 148 149 150 151

**OBJECT 参数**

|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-:|
|success|Function|否|接口调用成功的回调函数||
|fail|Function|否|接口调用失败的回调函数||
|complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)||

152
### uni.startLocationUpdateBackground(OBJECT)
L
lixu 已提交
153

154
开始监听实时地理位置信息变化事件,小程序进入前后台时均接收实时地理位置信息。
L
lixu 已提交
155 156 157 158 159

**平台差异说明**

|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序、飞书小程序|QQ小程序|快手小程序|京东小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
160
|x|x|√|x|x|x|x|√|x|
L
lixu 已提交
161 162 163 164 165

**OBJECT 参数**

|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-:|
166
|type|String|否|指定坐标系类型,可以是 wgs84 或 gcj02|微信小程序、字节小程序|
L
lixu 已提交
167 168
|success|Function|否|接口调用成功的回调函数||
|fail|Function|否|接口调用失败的回调函数||
DCloud_Heavensoft's avatar
DCloud_Heavensoft 已提交
169 170 171 172 173 174 175 176 177 178
|complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)||


### 三方定位和地图服务收费说明

使用三方定位或者地图服务,需向服务提供商(如:高德地图、百度地图、腾讯地图、谷歌地图)申请商业授权和缴纳费用(5万/年)。

DCloud为开发者争取了福利,可优惠获取高德的商业授权。如有需求请发邮件到`bd@dcloud.io`(注明你的公司名称、应用介绍、HBuilder账户);你也可以直接通过`uni-im`发起在线咨询,在线咨询地址:[DCloud地图服务专员](https://im.dcloud.net.cn/#/?user_id=b9839630-a479-11ea-b772-0f6ad6cf835c)

详见:[https://uniapp.dcloud.net.cn/tutorial/app-geolocation.html#lic](https://uniapp.dcloud.net.cn/tutorial/app-geolocation.html#lic)