location-change.md 6.6 KB
Newer Older
L
lixu 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
### uni.onLocationChange(FUNCTION CALLBACK)

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

**平台差异说明**

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

**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)|字节小程序不支持|
|city|string|定位到的城市信息|百度小程序、字节小程序(iOS 不支持)|
|cityCode|String|城市编码|百度小程序||street|String|街道名称
|city|String|城市名称|百度小程序|
country|String|国家|百度小程序|
countryCode|String|国家代码|百度小程序|
province|String|省份|百度小程序|
streetNumber|String|街道号码|百度小程序|
district|String|区|百度小程序|
isFullAccuracy|Boolean|是不是精确定位信息|百度小程序|

**注意**
- 该方法会持续监听地理位置信息的变化,建议在不需要监听地理位置信息变化后,直接调用 `uni.stopLocationUpdate` 方法取消监听。
- `微信小程序`若使用该接口,需要在 app.json 中进行声明,否则将无法正常使用该接口,[详情](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.onLocationChange.html)
- `字节小程序`调用此 API 需要申请高精度权限,具体信息见[高精度定位运营规范](https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/functional-plug-in/gaojingdu/)

**示例**

```javascript
uni.onLocationChange(function (res) {
	console.log('纬度:' + res.latitude);
	console.log('经度:' + res.longitude);
});
```

### uni.onLocationChangeError(FUNCTION CALLBACK)

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

**平台差异说明**

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

**FUNCTION CALLBACK 参数**

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

### uni.startLocationUpdate(OBJECT)

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

**平台差异说明**

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

**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 完成')
});
```

### uni.startLocationUpdateBackground(OBJECT)

开始监听实时地理位置信息变化事件,小程序进入前后台时均接收实时地理位置信息。

**平台差异说明**

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

**OBJECT 参数**

|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-:|
|type|String|否|指定坐标系类型,可以是 wgs84 或 gcj02|微信小程序、字节小程序|
|success|Function|否|接口调用成功的回调函数||
|fail|Function|否|接口调用失败的回调函数||
|complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)||

### uni.stopLocationUpdate(OBJECT)

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

**平台差异说明**

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

**OBJECT 参数**

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

### uni.offLocationChange(FUNCTION CALLBACK)

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

**平台差异说明**

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

**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)|快手小程序|

### uni.offLocationChangeError(FUNCTION CALLBACK)

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

**平台差异说明**

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

**FUNCTION CALLBACK 参数**

无返回值。