js-apis-geoLocationManager.md 94.1 KB
Newer Older
1
# @ohos.geoLocationManager (位置服务)
L
liu-binjun 已提交
2 3 4

位置服务提供GNSS定位、网络定位、地理编码、逆地理编码、国家码和地理围栏等基本功能。

5 6
> **说明:**
>
L
liu-binjun 已提交
7 8
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

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
## 申请权限

应用在使用系统能力前,需要检查是否已经获取用户授权访问设备位置信息。如未获得授权,可以向用户申请需要的位置权限,申请方式请参考下文。

系统提供的定位权限有:
- ohos.permission.LOCATION

- ohos.permission.APPROXIMATELY_LOCATION

- ohos.permission.LOCATION_IN_BACKGROUND

访问设备的位置信息,必须申请权限,并且获得用户授权。

API9之前的版本,申请ohos.permission.LOCATION即可。

API9及之后的版本,需要申请ohos.permission.APPROXIMATELY_LOCATION或者同时申请ohos.permission.APPROXIMATELY_LOCATION和ohos.permission.LOCATION;无法单独申请ohos.permission.LOCATION。

| 使用的API版本 | 申请位置权限 | 申请结果 | 位置的精确度 |
| -------- | -------- | -------- | -------- |
| 小于9 | ohos.permission.LOCATION | 成功 | 获取到精准位置,精准度在米级别。 |
| 大于等于9 | ohos.permission.LOCATION | 失败 | 无法获取位置。 |
| 大于等于9 | ohos.permission.APPROXIMATELY_LOCATION | 成功 | 获取到模糊位置,精确度为5公里。 |
| 大于等于9 | ohos.permission.APPROXIMATELY_LOCATION和ohos.permission.LOCATION | 成功 | 获取到精准位置,精准度在米级别。 |

如果应用在后台运行时也需要访问设备位置,除需要将应用声明为允许后台运行外,还必须申请ohos.permission.LOCATION_IN_BACKGROUND权限,这样应用在切入后台之后,系统可以继续上报位置信息。

开发者可以在应用配置文件中声明所需要的权限,具体可参考[授权申请指导](../../security/accesstoken-guidelines.md)

L
liu-binjun 已提交
37 38 39 40 41 42 43 44

## 导入模块

```ts
import geoLocationManager from '@ohos.geoLocationManager';
```


L
liu-binjun 已提交
45
## ReverseGeoCodeRequest
L
liu-binjun 已提交
46

L
liu-binjun 已提交
47
逆地理编码请求接口。
L
liu-binjun 已提交
48

L
liu-binjun 已提交
49
**系统能力**:SystemCapability.Location.Location.Geocoder
L
liu-binjun 已提交
50

L
liu-binjun 已提交
51 52 53
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| locale | string | 是 | 是 | 指定位置描述信息的语言,“zh”代表中文,“en”代表英文。 |
54 55 56
| latitude | number | 是 | 是 | 表示纬度信息,正值表示北纬,负值表示南纬。取值范围为-90到90。 |
| longitude | number | 是 | 是 | 表示经度信息,正值表示东经,负值表示西经。取值范围为-180到180。 |
| maxItems | number | 是 | 是 | 指定返回位置信息的最大个数。取值范围为大于等于0,推荐该值小于10。 |
L
liu-binjun 已提交
57

58

L
liu-binjun 已提交
59
## GeoCodeRequest
L
liu-binjun 已提交
60

L
liu-binjun 已提交
61
地理编码请求接口。
L
liu-binjun 已提交
62

L
liu-binjun 已提交
63
**系统能力**:SystemCapability.Location.Location.Geocoder
L
liu-binjun 已提交
64

L
liu-binjun 已提交
65 66 67 68
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| locale | string | 是 | 是 | 表示位置描述信息的语言,“zh”代表中文,“en”代表英文。 |
| description | string | 是 | 是 | 表示位置信息描述,如“上海市浦东新区xx路xx号”。 |
69 70 71 72 73
| maxItems | number | 是 | 是 | 表示返回位置信息的最大个数。取值范围为大于等于0,推荐该值小于10。 |
| minLatitude | number | 是 | 是 | 表示最小纬度信息,与下面三个参数一起,表示一个经纬度范围。取值范围为-90到90。 |
| minLongitude | number | 是 | 是 | 表示最小经度信息。取值范围为-180到180。 |
| maxLatitude | number | 是 | 是 | 表示最大纬度信息。取值范围为-90到90。 |
| maxLongitude | number | 是 | 是 | 表示最大经度信息。取值范围为-180到180。 |
L
liu-binjun 已提交
74 75


L
liu-binjun 已提交
76
## GeoAddress
L
liu-binjun 已提交
77

L
liu-binjun 已提交
78
地理编码类型。
L
liu-binjun 已提交
79

L
liu-binjun 已提交
80
**系统能力**:SystemCapability.Location.Location.Geocoder
L
liu-binjun 已提交
81

L
liu-binjun 已提交
82 83
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
84 85
| latitude | number | 是 | 否  | 表示纬度信息,正值表示北纬,负值表示南纬。取值范围为-90到90。 |
| longitude | number | 是 | 否  | 表示经度信息,正值表示东经,负值表是西经。取值范围为-180到180。 |
L
liu-binjun 已提交
86 87 88 89 90
| locale | string | 是 | 否  | 表示位置描述信息的语言,“zh”代表中文,“en”代表英文。 |
| placeName | string | 是 | 否  | 表示地区信息。 |
| countryCode | string | 是 | 否  | 表示国家码信息。 |
| countryName | string| 是 | 否 | 表示国家信息。 |
| administrativeArea | string | 是 | 否 | 表示省份区域信息。 |
Z
fix doc  
z30025928 已提交
91
| subAdministrativeArea | string | 是 | 否 | 表示子区域信息。 |
L
liu-binjun 已提交
92 93 94 95 96 97 98 99 100
| locality | string | 是 | 否 | 表示城市信息。 |
| subLocality | string | 是 | 否 | 表示子城市信息。 |
| roadName | string | 是 | 否 |表示路名信息。 |
| subRoadName | string | 是 | 否 | 表示子路名信息。 |
| premises | string| 是 | 否|表示门牌号信息。 |
| postalCode | string | 是 | 否 | 表示邮政编码信息。 |
| phoneNumber | string | 是 | 否 | 表示联系方式信息。 |
| addressUrl | string | 是 | 否 | 表示位置信息附件的网址信息。 |
| descriptions | Array<string> | 是 | 否 | 表示附加的描述信息。 |
101 102
| descriptionsSize | number | 是 | 否 | 表示附加的描述信息数量。取值范围为大于等于0,推荐该值小于10。 |
| isFromMock | Boolean | 是 | 否 | 表示地名信息是否来自于逆地理编码模拟功能。<br>**系统API**:此接口为系统接口。 |
L
liu-binjun 已提交
103 104


L
liu-binjun 已提交
105
## LocationRequest
L
liu-binjun 已提交
106

L
liu-binjun 已提交
107
位置信息请求类型。
L
liu-binjun 已提交
108 109 110

**系统能力**:SystemCapability.Location.Location.Core

L
liu-binjun 已提交
111 112
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
R
ruan-shaofei 已提交
113 114 115 116 117
| priority | [LocationRequestPriority](#locationrequestpriority) | 是 | 是 | 表示优先级信息。当scenario取值为UNSET时,priority参数生效,否则priority参数不生效;当scenario和priority均取值为UNSET时,无法发起定位请求。取值范围见[LocationRequestPriority](#locationrequestpriority)的定义。 |
| scenario | [LocationRequestScenario](#locationrequestscenario) | 是 | 是 | 表示场景信息。当scenario取值为UNSET时,priority参数生效,否则priority参数不生效;当scenario和priority均取值为UNSET时,无法发起定位请求。取值范围见[LocationRequestScenario](#locationrequestscenario)的定义。 |
| timeInterval | number | 是 | 是 | 表示上报位置信息的时间间隔,单位是秒。默认值为1,取值范围为大于等于0。 |
| distanceInterval | number | 是 | 是 | 表示上报位置信息的距离间隔。单位是米,默认值为0,取值范围为大于等于0。 |
| maxAccuracy | number | 是 | 是 | 表示精度信息,单位是米。仅在精确位置功能场景下有效,模糊位置功能生效场景下该字段无意义。默认值为0,取值范围为大于等于0。 |
L
liu-binjun 已提交
118 119


L
liu-binjun 已提交
120
## CurrentLocationRequest
L
liu-binjun 已提交
121

L
liu-binjun 已提交
122
当前位置信息请求类型。
L
liu-binjun 已提交
123 124 125

**系统能力**:SystemCapability.Location.Location.Core

L
liu-binjun 已提交
126 127
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
128 129 130
| priority | [LocationRequestPriority](#locationrequestpriority) | 是 | 是 | 表示优先级信息。当scenario取值为UNSET时,priority参数生效,否则priority参数不生效;当scenario和priority均取值为UNSET时,无法发起定位请求。取值范围见[LocationRequestPriority](#locationrequestpriority)的定义。|
| scenario | [LocationRequestScenario](#locationrequestscenario) | 是 | 是 | 表示场景信息。当scenario取值为UNSET时,priority参数生效,否则priority参数不生效;当scenario和priority均取值为UNSET时,无法发起定位请求。取值范围见[LocationRequestScenario](#locationrequestscenario)的定义。 |
| maxAccuracy | number | 是 | 是| 表示精度信息,单位是米。仅在精确位置功能场景下有效,模糊位置功能生效场景下该字段无意义。默认值为0,取值范围为大于等于0。 |
131
| timeoutMs | number | 是 | 是 | 表示超时时间,单位是毫秒,最小为1000毫秒。取值范围为大于等于1000。 |
L
liu-binjun 已提交
132 133


L
liu-binjun 已提交
134
## SatelliteStatusInfo
L
liu-binjun 已提交
135

L
liu-binjun 已提交
136
卫星状态信息。
L
liu-binjun 已提交
137

L
liu-binjun 已提交
138
**系统能力**:SystemCapability.Location.Location.Gnss
L
liu-binjun 已提交
139

L
liu-binjun 已提交
140 141
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
142 143 144 145 146 147
| satellitesNumber | number | 是 | 否 | 表示卫星个数。取值范围为大于等于0。 |
| satelliteIds | Array&lt;number&gt; | 是 | 否 | 表示每个卫星的ID,数组类型。取值范围为大于等于0。 |
| carrierToNoiseDensitys | Array&lt;number&gt; | 是 | 否 | 表示载波噪声功率谱密度比,即cn0。取值范围为大于0。 |
| altitudes | Array&lt;number&gt; | 是 | 否 | 表示卫星高度角信息。单位是“度”,取值范围为-90到90。 |
| azimuths | Array&lt;number&gt; | 是 | 否 | 表示方位角。单位是“度”,取值范围为0到360。 |
| carrierFrequencies | Array&lt;number&gt; | 是 | 否 | 表示载波频率。单位是Hz,取值范围为大于等于0。 |
L
liu-binjun 已提交
148 149


L
liu-binjun 已提交
150
## CachedGnssLocationsRequest
L
liu-binjun 已提交
151

L
liu-binjun 已提交
152
请求订阅GNSS缓存位置上报功能接口的配置参数。
L
liu-binjun 已提交
153

154
**系统能力**:SystemCapability.Location.Location.Gnss
L
liu-binjun 已提交
155

L
liu-binjun 已提交
156 157
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
158
| reportingPeriodSec | number | 是 | 是 | 表示GNSS缓存位置上报的周期,单位是毫秒。取值范围为大于0。 |
L
liu-binjun 已提交
159
| wakeUpCacheQueueFull | boolean | 是 | 是  | true表示GNSS芯片底层缓存队列满之后会主动唤醒AP芯片,并把缓存位置上报给应用。<br/>false表示GNSS芯片底层缓存队列满之后不会主动唤醒AP芯片,会把缓存位置直接丢弃。 |
L
liu-binjun 已提交
160 161


L
liu-binjun 已提交
162
## Geofence
L
liu-binjun 已提交
163

L
liu-binjun 已提交
164
GNSS围栏的配置参数。目前只支持圆形围栏。
L
liu-binjun 已提交
165

L
liu-binjun 已提交
166
**系统能力**:SystemCapability.Location.Location.Geofence
L
liu-binjun 已提交
167

L
liu-binjun 已提交
168 169
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
170 171 172 173
| latitude | number | 是 | 是 |表示纬度。取值范围为-90到90。 |
| longitude | number | 是 |是 | 表示经度。取值范围为-180到180。 |
| radius | number | 是 |是 | 表示圆形围栏的半径。单位是米,取值范围为大于0。 |
| expiration | number | 是 |是 | 围栏存活的时间,单位是毫秒。取值范围为大于0。 |
L
liu-binjun 已提交
174 175


L
liu-binjun 已提交
176
## GeofenceRequest
L
liu-binjun 已提交
177

L
liu-binjun 已提交
178
请求添加GNSS围栏消息中携带的参数,包括定位优先级、定位场景和围栏信息。
L
liu-binjun 已提交
179

L
liu-binjun 已提交
180
**系统能力**:SystemCapability.Location.Location.Geofence
181

L
liu-binjun 已提交
182 183 184 185
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| scenario | [LocationRequestScenario](#locationrequestscenario) | 是 | 是  |  表示定位场景。 |
| geofence |  [Geofence](#geofence)| 是 | 是  |  表示围栏信息。 |
186

L
liu-binjun 已提交
187

L
liu-binjun 已提交
188
## LocationCommand
L
liu-binjun 已提交
189

L
liu-binjun 已提交
190
扩展命令结构体。
L
liu-binjun 已提交
191

L
liu-binjun 已提交
192
**系统能力**:SystemCapability.Location.Location.Core
L
liu-binjun 已提交
193

L
liu-binjun 已提交
194 195 196 197
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| scenario | [LocationRequestScenario](#locationrequestscenario)  | 是 | 是  | 表示定位场景。 |
| command | string | 是 | 是  | 扩展命令字符串。 |
L
liu-binjun 已提交
198 199


L
liu-binjun 已提交
200
## Location
201

L
liu-binjun 已提交
202
位置信息类型。
203

L
liu-binjun 已提交
204
**系统能力**:SystemCapability.Location.Location.Core
205

L
liu-binjun 已提交
206 207
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
208 209
| latitude | number| 是 | 否 | 表示纬度信息,正值表示北纬,负值表示南纬。取值范围为-90到90。 |
| longitude | number| 是 | 否 | 表示经度信息,正值表示东经,负值表是西经。取值范围为-180到180。 |
L
liu-binjun 已提交
210 211 212 213
| altitude | number | 是 | 否 | 表示高度信息,单位米。 |
| accuracy | number | 是 | 否 | 表示精度信息,单位米。 |
| speed | number | 是 | 否 |表示速度信息,单位米每秒。 |
| timeStamp | number | 是 | 否 | 表示位置时间戳,UTC格式。 |
214
| direction | number | 是 | 否 | 表示航向信息。单位是“度”,取值范围为0到360。 |
L
liu-binjun 已提交
215 216
| timeSinceBoot | number | 是 | 否 | 表示位置时间戳,开机时间格式。 |
| additions | Array&lt;string&gt; | 是 | 否 | 附加信息。 |
217 218
| additionSize | number | 是 | 否 | 附加信息数量。取值范围为大于等于0。  |
| isFromMock | Boolean | 是 | 否 | 表示位置信息是否来自于位置模拟功能。<br>**系统API**:此接口为系统接口。 |
219

220

L
liu-binjun 已提交
221
## ReverseGeocodingMockInfo
222

L
liu-binjun 已提交
223
逆地理编码模拟功能的配置信息,包含一个位置信息和一个地名信息。
224

L
liu-binjun 已提交
225
**系统能力**:SystemCapability.Location.Location.Core
226

L
liu-binjun 已提交
227
**系统API**:此接口为系统接口。
228

L
liu-binjun 已提交
229 230 231 232
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| location |  [ReverseGeoCodeRequest](#reversegeocoderequest) | 是 | 是 | 表示经纬度信息。 |
| geoAddress |  [GeoAddress](#geoaddress) | 是 | 是 |表示地名信息。 |
L
liu-binjun 已提交
233

234

L
liu-binjun 已提交
235
## LocationMockConfig
L
liu-binjun 已提交
236

L
liu-binjun 已提交
237
位置模拟功能的配置参数,包含了模拟位置上报的时间间隔和模拟位置数组。
L
liu-binjun 已提交
238

L
liu-binjun 已提交
239
**系统能力**:SystemCapability.Location.Location.Core
L
liu-binjun 已提交
240

L
liu-binjun 已提交
241
**系统API**:此接口为系统接口。
L
liu-binjun 已提交
242

L
liu-binjun 已提交
243 244 245
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| timeInterval | number | 是 | 是 | 表示模拟位置上报的时间间隔,单位是秒。 |
246
| locations | Array&lt;[Location](#location)&gt; | 是 | 是 | 表示模拟位置数组。 |
L
liu-binjun 已提交
247

248

L
liu-binjun 已提交
249
## CountryCode
L
liu-binjun 已提交
250

L
liu-binjun 已提交
251
国家码信息结构体,包含国家码字符串和国家码的来源信息。
L
liu-binjun 已提交
252

L
liu-binjun 已提交
253
**系统能力**:SystemCapability.Location.Location.Core
L
liu-binjun 已提交
254

L
liu-binjun 已提交
255 256 257 258
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| country | string | 是 | 否 | 表示国家码字符串。 |
| type |  [CountryCodeType](#countrycodetype) | 是 | 否 | 表示国家码信息来源。 |
L
liu-binjun 已提交
259 260


L
liu-binjun 已提交
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323
## LocatingRequiredDataConfig<sup>10+</sup>

获取定位所需数据时的配置参数。

**系统能力**:SystemCapability.Location.Location.Core

**系统API**:此接口为系统接口。

| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| type | [LocatingRequiredDataType](#locatingrequireddatatype10) | 是 | 是 | 表示请求获取数据的类型。 |
| needStartScan |  boolean | 是 | 是 | 表示是否需要发起扫描。 |
| scanInterval |  number | 是 | 是 | 表示扫描的时间间隔。单位是毫秒,默认值是10000毫秒,取值范围为大于0。 |
| scanTimeout |  number | 是 | 是 | 表示单次扫描的超时时间。单位是毫秒,默认值是10000毫秒,取值范围为大于0小于600000。 |


## LocatingRequiredData<sup>10+</sup>

表示定位业务所需的数据,包含WiFi或蓝牙扫描结果,APP拿到这些数据之后可以用于网络定位等业务。

**系统能力**:SystemCapability.Location.Location.Core

**系统API**:此接口为系统接口。

| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| wifiData | [WifiScanInfo](#wifiscaninfo10) | 是 | 否 | 表示WiFi扫描结果。 |
| bluetoothData |  [BluetoothScanInfo](#bluetoothscaninfo10) | 是 | 否 | 表示蓝牙扫描结果。 |


## WifiScanInfo<sup>10+</sup>

WiFi扫描信息,包含扫描到的WiFi热点的ssid、bssid和rssi等信息。

**系统能力**:SystemCapability.Location.Location.Core

**系统API**:此接口为系统接口。

| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| ssid | string | 是 | 否 | WiFi热点的SSID,编码格式为UTF-8。 |
| bssid | string | 是 | 否 | WiFi热点的BSSID。 |
| rssi | number | 是 | 否 | WiFi热点的信号强度(dBm)。 |
| frequency | number | 是 | 否 | WiFi热点的频率。 |
| timestamp | number | 是 | 否 | 时间戳。 |


## BluetoothScanInfo<sup>10+</sup>

蓝牙扫描信息。

**系统能力**:SystemCapability.Location.Location.Core

**系统API**:此接口为系统接口。

| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| deviceName | string | 是 | 否 | 蓝牙设备名称。 |
| macAddress | string | 是 | 否 | 蓝牙设备的MAC地址。 |
| rssi | number | 是 | 否 | 蓝牙设备的信号强度(dBm)。 |
| timestamp | number | 是 | 否 | 时间戳。 |


L
liu-binjun 已提交
324
## LocationRequestPriority
325

L
liu-binjun 已提交
326
位置请求中位置信息优先级设置。
L
liu-binjun 已提交
327

L
liu-binjun 已提交
328
**系统能力**:SystemCapability.Location.Location.Core
L
liu-binjun 已提交
329

L
liu-binjun 已提交
330 331
| 名称 | 值 | 说明 |
| -------- | -------- | -------- |
332 333 334 335
| UNSET | 0x200 | 表示未设置优先级,表示[LocationRequestPriority](#locationrequestpriority)无效。 |
| ACCURACY | 0x201 | 表示精度优先。<br/>定位精度优先策略主要以GNSS定位技术为主,在开阔场景下可以提供米级的定位精度,具体性能指标依赖用户设备的定位硬件能力,但在室内等强遮蔽定位场景下,无法提供准确的位置服务。 |
| LOW_POWER | 0x202 | 表示低功耗优先。<br/>低功耗定位优先策略主要使用基站定位和WLAN、蓝牙定位技术,也可以同时提供室内和户外场景下的位置服务,因为其依赖周边基站、可见WLAN、蓝牙设备的分布情况,定位结果的精度波动范围较大,如果对定位结果精度要求不高,或者使用场景多在有基站、可见WLAN、蓝牙设备高密度分布的情况下,推荐使用,可以有效节省设备功耗。 |
| FIRST_FIX | 0x203 | 表示快速获取位置优先,如果应用希望快速拿到一个位置,可以将优先级设置为该字段。<br/>快速定位优先策略会同时使用GNSS定位、基站定位和WLAN、蓝牙定位技术,以便室内和户外场景下,通过此策略都可以获得位置结果,当各种定位技术都有提供位置结果时,系统会选择其中精度较好的结果返回给应用。因为对各种定位技术同时使用,对设备的硬件资源消耗较大,功耗也较大。 |
L
liu-binjun 已提交
336 337


L
liu-binjun 已提交
338
## LocationRequestScenario
L
liu-binjun 已提交
339

L
liu-binjun 已提交
340
  位置请求中定位场景设置。
L
liu-binjun 已提交
341

L
liu-binjun 已提交
342
**系统能力**:SystemCapability.Location.Location.Core
343

L
liu-binjun 已提交
344 345
| 名称 | 值 | 说明 |
| -------- | -------- | -------- |
346 347 348 349 350
| UNSET | 0x300 | 表示未设置场景信息。<br/>表示[LocationRequestScenario](#locationrequestscenario)字段无效。 |
| NAVIGATION | 0x301 | 表示导航场景。<br/>适用于在户外定位设备实时位置的场景,如车载、步行导航。<br/>在此场景下,为保证系统提供位置结果精度最优,主要使用GNSS定位技术提供定位服务<br/>此场景默认以最小1秒间隔上报定位结果。 |
| TRAJECTORY_TRACKING | 0x302 | 表示运动轨迹记录场景。<br/>适用于记录用户位置轨迹的场景,如运动类应用记录轨迹功能。主要使用GNSS定位技术提供定位服务。<br/>此场景默认以最小1秒间隔上报定位结果。 |
| CAR_HAILING | 0x303 | 表示打车场景。<br/>适用于用户出行打车时定位当前位置的场景,如网约车类应用。<br/>此场景默认以最小1秒间隔上报定位结果。 |
| DAILY_LIFE_SERVICE | 0x304 | 表示日常服务使用场景。<br/>适用于不需要定位用户精确位置的使用场景,如新闻资讯、网购、点餐类应用,做推荐、推送时定位用户大致位置即可。<br/>此场景默认以最小1秒间隔上报定位结果。 |
L
liu-binjun 已提交
351
| NO_POWER | 0x305 | 表示无功耗功场景,这种场景下不会主动触发定位,会在其他应用定位时,才给当前应用返回位置。 |
L
liu-binjun 已提交
352 353


L
liu-binjun 已提交
354
## LocationPrivacyType
355

L
liu-binjun 已提交
356
定位服务隐私协议类型。
357

L
liu-binjun 已提交
358
**系统能力**:SystemCapability.Location.Location.Core
359

L
liu-binjun 已提交
360
**系统API**:此接口为系统接口。
361

L
liu-binjun 已提交
362 363
| 名称 | 值 | 说明 |
| -------- | -------- | -------- |
364 365
| OTHERS | 0 | 其他场景。预留字段。 |
| STARTUP | 1 | 开机向导场景下的隐私协议。在开机时弹出协议,提醒用户阅读并选择是否授权。 |
L
liu-binjun 已提交
366
| CORE_LOCATION | 2 | 开启网络定位时弹出的隐私协议。 |
367

368

L
liu-binjun 已提交
369
## CountryCodeType
370

L
liu-binjun 已提交
371
国家码来源类型。
372

L
liu-binjun 已提交
373
**系统能力**:SystemCapability.Location.Location.Core
374

L
liu-binjun 已提交
375 376 377 378 379 380
| 名称 | 值 | 说明 |
| -------- | -------- | -------- |
| COUNTRY_CODE_FROM_LOCALE | 1 | 从全球化模块的语言配置信息中获取到的国家码。 |
| COUNTRY_CODE_FROM_SIM | 2 | 从SIM卡中获取到的国家码。 |
| COUNTRY_CODE_FROM_LOCATION | 3 | 基于用户的位置信息,通过逆地理编码查询到的国家码。 |
| COUNTRY_CODE_FROM_NETWORK | 4 | 从蜂窝网络注册信息中获取到的国家码。 |
381 382


L
liu-binjun 已提交
383 384 385 386 387 388 389 390 391 392 393 394 395 396
## LocatingRequiredDataType<sup>10+</sup>

定位业务所需数据的类型。

**系统能力**:SystemCapability.Location.Location.Core

**系统API**:此接口为系统接口。

| 名称 | 值 | 说明 |
| -------- | -------- | -------- |
| WIFI  | 1 | 表示WiFi扫描信息。 |
| BLUETOOTH | 2 | 表示蓝牙扫描信息。 |


L
liu-binjun 已提交
397
## geoLocationManager.on('locationChange')
398

L
liu-binjun 已提交
399
on(type: 'locationChange', request: LocationRequest, callback: Callback&lt;Location&gt;): void
400

401
开启位置变化订阅,并发起定位请求。
402

L
liu-binjun 已提交
403 404 405 406 407
**需要权限**:ohos.permission.APPROXIMATELY_LOCATION

**系统能力**:SystemCapability.Location.Location.Core

**参数:**
408 409 410

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
411 412 413
  | type | string | 是 | 设置事件类型。type为“locationChange”,表示位置变化。 |
  | request |  [LocationRequest](#locationrequest) | 是 | 设置位置请求参数。 |
  | callback | Callback&lt;[Location](#location)&gt; | 是 | 接收位置变化状态变化监听。 |
L
liu-binjun 已提交
414 415 416 417 418 419 420

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
421
|3301000 | Location service is unavailable.                                            |
422
|3301100 | The location switch is off.                                                 |
L
liu-binjun 已提交
423
|3301200 | Failed to obtain the geographical location.                                       |
L
liu-binjun 已提交
424 425

**示例**
L
liu-binjun 已提交
426

L
liu-binjun 已提交
427 428
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
429 430 431
  import BusinessError from "@ohos.base";
  let requestInfo:geoLocationManager.LocationRequest = {'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX, 'scenario': geoLocationManager.LocationRequestScenario.UNSET, 'timeInterval': 1, 'distanceInterval': 0, 'maxAccuracy': 0};
  let locationChange = (location:geoLocationManager.Location):void => {
L
liu-binjun 已提交
432 433
      console.log('locationChanger: data: ' + JSON.stringify(location));
  };
434
  try {
L
liu-binjun 已提交
435
      geoLocationManager.on('locationChange', requestInfo, locationChange);
436
  } catch (err) {
L
liu-xinbing 已提交
437
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
438
  }
L
liu-binjun 已提交
439
  
L
liu-binjun 已提交
440 441 442
  ```


L
liu-binjun 已提交
443
## geoLocationManager.off('locationChange')
L
liu-binjun 已提交
444

L
liu-binjun 已提交
445
off(type: 'locationChange', callback?: Callback&lt;Location&gt;): void
L
liu-binjun 已提交
446

L
liu-binjun 已提交
447
关闭位置变化订阅,并删除对应的定位请求。
448

449 450
**需要权限**:ohos.permission.APPROXIMATELY_LOCATION

L
liu-binjun 已提交
451
**系统能力**:SystemCapability.Location.Location.Core
L
liu-binjun 已提交
452

L
liu-binjun 已提交
453
**参数:**
L
liu-binjun 已提交
454 455 456

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
457 458
  | type | string | 是 | 设置事件类型。type为“locationChange”,表示位置变化。 |
  | callback | Callback&lt;[Location](#location)&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
L
liu-binjun 已提交
459 460 461 462 463 464 465

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
466
|3301000 | Location service is unavailable.                                            |
467
|3301100 | The location switch is off.                                                 |
L
liu-binjun 已提交
468
|3301200 | Failed to obtain the geographical location.                                       |
L
liu-binjun 已提交
469 470

**示例**
L
liu-binjun 已提交
471

L
liu-binjun 已提交
472 473
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
474 475 476 477
  import BusinessError from "@ohos.base";
  let requestInfo:geoLocationManager.LocationRequest = {'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX, 'scenario': geoLocationManager.LocationRequestScenario.UNSET, 'timeInterval': 1, 'distanceInterval': 0, 'maxAccuracy': 0};
  let locationChange = (location:geoLocationManager.Location):void => {
    console.log('locationChanger: data: ' + JSON.stringify(location));
478
  };
L
liu-binjun 已提交
479 480 481 482
  try {
      geoLocationManager.on('locationChange', requestInfo, locationChange);
      geoLocationManager.off('locationChange', locationChange);
  } catch (err) {
L
liu-xinbing 已提交
483
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
484
  }
L
liu-binjun 已提交
485 486 487
  ```


L
liu-binjun 已提交
488
## geoLocationManager.on('locationEnabledChange')
L
liu-binjun 已提交
489

L
liu-binjun 已提交
490
on(type: 'locationEnabledChange', callback: Callback&lt;boolean&gt;): void
L
liu-binjun 已提交
491

L
liu-binjun 已提交
492
订阅位置服务状态变化。
L
liu-binjun 已提交
493

L
liu-binjun 已提交
494
**系统能力**:SystemCapability.Location.Location.Core
495

L
liu-binjun 已提交
496
**参数:**
L
liu-binjun 已提交
497

498 499
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
500 501
  | type | string | 是 | 设置事件类型。type为“locationEnabledChange”,表示位置服务状态。 |
  | callback | Callback&lt;boolean&gt; | 是 | 接收位置服务状态变化监听。 |
L
liu-binjun 已提交
502 503 504 505 506 507 508

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
509
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
510 511

**示例**
L
liu-binjun 已提交
512

L
liu-binjun 已提交
513 514
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
515 516
  import BusinessError from "@ohos.base";
  let locationEnabledChange = (state:boolean):void => {
L
liu-binjun 已提交
517 518 519 520 521
      console.log('locationEnabledChange: ' + JSON.stringify(state));
  }
  try {
      geoLocationManager.on('locationEnabledChange', locationEnabledChange);
  } catch (err) {
L
liu-xinbing 已提交
522
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
523
  }
L
liu-binjun 已提交
524 525 526
  ```


L
liu-binjun 已提交
527
## geoLocationManager.off('locationEnabledChange')
L
liu-binjun 已提交
528

L
liu-binjun 已提交
529
off(type: 'locationEnabledChange', callback?: Callback&lt;boolean&gt;): void;
L
liu-binjun 已提交
530

L
liu-binjun 已提交
531
取消订阅位置服务状态变化。
L
liu-binjun 已提交
532 533 534 535 536 537 538

**系统能力**:SystemCapability.Location.Location.Core

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
539 540
  | type | string | 是 | 设置事件类型。type为“locationEnabledChange”,表示位置服务状态。 |
  | callback | Callback&lt;boolean&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
L
liu-binjun 已提交
541 542 543 544 545 546 547

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
548
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
549 550

**示例**
L
liu-binjun 已提交
551

L
liu-binjun 已提交
552 553
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
554 555
  import BusinessError from "@ohos.base";
  let locationEnabledChange = (state:boolean):void => {
L
liu-binjun 已提交
556
      console.log('locationEnabledChange: state: ' + JSON.stringify(state));
557 558
  }
  try {
L
liu-binjun 已提交
559 560
      geoLocationManager.on('locationEnabledChange', locationEnabledChange);
      geoLocationManager.off('locationEnabledChange', locationEnabledChange);
561
  } catch (err) {
L
liu-xinbing 已提交
562
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
563
  }
L
liu-binjun 已提交
564 565 566
  ```


L
liu-binjun 已提交
567
## geoLocationManager.on('cachedGnssLocationsChange')
L
liu-binjun 已提交
568

L
liu-binjun 已提交
569
on(type: 'cachedGnssLocationsChange', request: CachedGnssLocationsRequest, callback: Callback&lt;Array&lt;Location&gt;&gt;): void;
L
liu-binjun 已提交
570

R
ruan-shaofei 已提交
571
订阅缓存GNSS定位结果上报事件。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。
L
liu-binjun 已提交
572

L
liu-binjun 已提交
573 574 575
**需要权限**:ohos.permission.APPROXIMATELY_LOCATION

**系统能力**:SystemCapability.Location.Location.Gnss
L
liu-binjun 已提交
576

577
**参数**
L
liu-binjun 已提交
578

579 580
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
581 582 583
  | type | string | 是 | 设置事件类型。type为“cachedGnssLocationsChange”,表示GNSS缓存定位结果上报。 |
  | request |  [CachedGnssLocationsRequest](#cachedgnsslocationsrequest) | 是 | GNSS缓存功能配置参数 |
  | callback | Callback&lt;boolean&gt; | 是 | 接收GNSS缓存位置上报。 |
L
liu-binjun 已提交
584 585 586 587 588 589 590 591

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
592
|3301100 | The location switch is off.                                                 |
L
liu-binjun 已提交
593
|3301200 | Failed to obtain the geographical location.                                       |
L
liu-binjun 已提交
594 595

**示例**
L
liu-binjun 已提交
596

L
liu-binjun 已提交
597 598
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
599 600
  import BusinessError from "@ohos.base";
  let cachedLocationsCb = (locations:Array<geoLocationManager.Location>):void => {
L
liu-binjun 已提交
601
      console.log('cachedGnssLocationsChange: locations: ' + JSON.stringify(locations));
602
  }
L
liu-xinbing 已提交
603
  let requestInfo:geoLocationManager.CachedGnssLocationsRequest = {'reportingPeriodSec': 10, 'wakeUpCacheQueueFull': true};
604
  try {
L
liu-binjun 已提交
605
      geoLocationManager.on('cachedGnssLocationsChange', requestInfo, cachedLocationsCb);
606
  } catch (err) {
L
liu-xinbing 已提交
607
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
608
  }
L
liu-binjun 已提交
609 610 611
  ```


L
liu-binjun 已提交
612
## geoLocationManager.off('cachedGnssLocationsChange')
L
liu-binjun 已提交
613

L
liu-binjun 已提交
614
off(type: 'cachedGnssLocationsChange', callback?: Callback&lt;Array&lt;Location&gt;&gt;): void;
L
liu-binjun 已提交
615

R
ruan-shaofei 已提交
616
取消订阅缓存GNSS定位结果上报事件。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。
L
liu-binjun 已提交
617

618 619
**需要权限**:ohos.permission.APPROXIMATELY_LOCATION

L
liu-binjun 已提交
620
**系统能力**:SystemCapability.Location.Location.Gnss
621

L
liu-binjun 已提交
622 623 624 625
**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
626 627
  | type | string | 是 | 设置事件类型。type为“cachedGnssLocationsChange”,表示GNSS缓存定位结果上报。 |
  | callback | Callback&lt;boolean&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
L
liu-binjun 已提交
628 629 630 631 632 633 634 635

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
636
|3301100 | The location switch is off.                                                 |
L
liu-binjun 已提交
637
|3301200 | Failed to obtain the geographical location.                                       |
L
liu-binjun 已提交
638 639

**示例**
L
liu-binjun 已提交
640

L
liu-binjun 已提交
641 642
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
643 644
  import BusinessError from "@ohos.base";
  let cachedLocationsCb = (locations:Array<geoLocationManager.Location>):void => {
L
liu-binjun 已提交
645 646
      console.log('cachedGnssLocationsChange: locations: ' + JSON.stringify(locations));
  }
L
liu-xinbing 已提交
647
  let requestInfo:geoLocationManager.CachedGnssLocationsRequest = {'reportingPeriodSec': 10, 'wakeUpCacheQueueFull': true};
648
  try {
L
liu-binjun 已提交
649 650
      geoLocationManager.on('cachedGnssLocationsChange', requestInfo, cachedLocationsCb);
      geoLocationManager.off('cachedGnssLocationsChange');
651
  } catch (err) {
L
liu-xinbing 已提交
652
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
653 654 655 656
  }
  ```


L
liu-binjun 已提交
657
## geoLocationManager.on('satelliteStatusChange')
658

L
liu-binjun 已提交
659 660 661
on(type: 'satelliteStatusChange', callback: Callback&lt;SatelliteStatusInfo&gt;): void;

订阅GNSS卫星状态信息上报事件。
662 663 664

**需要权限**:ohos.permission.APPROXIMATELY_LOCATION

L
liu-binjun 已提交
665
**系统能力**:SystemCapability.Location.Location.Gnss
666 667 668 669 670

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
671 672
  | type | string | 是 | 设置事件类型。type为“satelliteStatusChange”,表示订阅GNSS卫星状态信息上报。 |
  | callback | Callback&lt;[SatelliteStatusInfo](#satellitestatusinfo)&gt; | 是 | 接收GNSS卫星状态信息上报。 |
673 674 675 676 677 678 679 680 681 682 683

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.                                                 |

**示例**
L
liu-binjun 已提交
684

685 686
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
687 688
  import BusinessError from "@ohos.base";
  let gnssStatusCb = (satelliteStatusInfo:geoLocationManager.SatelliteStatusInfo):void => {
L
liu-binjun 已提交
689 690
      console.log('satelliteStatusChange: ' + JSON.stringify(satelliteStatusInfo));
  }
691 692

  try {
L
liu-binjun 已提交
693
      geoLocationManager.on('satelliteStatusChange', gnssStatusCb);
694
  } catch (err) {
L
liu-xinbing 已提交
695
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
696 697 698 699
  }
  ```


L
liu-binjun 已提交
700
## geoLocationManager.off('satelliteStatusChange')
701

L
liu-binjun 已提交
702 703 704
off(type: 'satelliteStatusChange', callback?: Callback&lt;SatelliteStatusInfo&gt;): void;

取消订阅GNSS卫星状态信息上报事件。
705 706 707

**需要权限**:ohos.permission.APPROXIMATELY_LOCATION

L
liu-binjun 已提交
708
**系统能力**:SystemCapability.Location.Location.Gnss
709 710 711 712 713

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
714 715
  | type | string | 是 | 设置事件类型。type为“satelliteStatusChange”,表示订阅GNSS卫星状态信息上报。 |
  | callback | Callback&lt;[SatelliteStatusInfo](#satellitestatusinfo)&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
716 717 718 719 720 721 722 723 724

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.                                                 |
L
liu-binjun 已提交
725

726 727

**示例**
L
liu-binjun 已提交
728

729 730
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
731 732
  import BusinessError from "@ohos.base";
  let gnssStatusCb = (satelliteStatusInfo:geoLocationManager.SatelliteStatusInfo):void => {
L
liu-binjun 已提交
733 734
      console.log('satelliteStatusChange: ' + JSON.stringify(satelliteStatusInfo));
  }
735
  try {
L
liu-binjun 已提交
736 737
      geoLocationManager.on('satelliteStatusChange', gnssStatusCb);
      geoLocationManager.off('satelliteStatusChange', gnssStatusCb);
738
  } catch (err) {
L
liu-xinbing 已提交
739
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
740 741 742 743
  }
  ```


L
liu-binjun 已提交
744
## geoLocationManager.on('nmeaMessage')
745

L
liu-binjun 已提交
746
on(type: 'nmeaMessage', callback: Callback&lt;string&gt;): void;
747

L
liu-binjun 已提交
748
订阅GNSS NMEA信息上报事件。
749

Z
doc fix  
z30025928 已提交
750
**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION
751

L
liu-binjun 已提交
752
**系统能力**:SystemCapability.Location.Location.Gnss
753

L
liu-binjun 已提交
754
**参数**
755 756 757

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
758 759
  | type | string | 是 | 设置事件类型。type为“nmeaMessage”,表示订阅GNSS&nbsp;NMEA信息上报。 |
  | callback | Callback&lt;string&gt; | 是 | 接收GNSS&nbsp;NMEA信息上报。 |
760 761 762 763 764 765 766

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
767 768 769
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.                                                 |

770 771

**示例**
L
liu-binjun 已提交
772

773 774
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
775 776
  import BusinessError from "@ohos.base";
  let nmeaCb = (str:string):void => {
L
liu-binjun 已提交
777 778 779
      console.log('nmeaMessage: ' + JSON.stringify(str));
  }

780
  try {
L
liu-binjun 已提交
781
      geoLocationManager.on('nmeaMessage', nmeaCb );
782
  } catch (err) {
L
liu-xinbing 已提交
783
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
784 785 786 787
  }
  ```


L
liu-binjun 已提交
788
## geoLocationManager.off('nmeaMessage')
789

L
liu-binjun 已提交
790
off(type: 'nmeaMessage', callback?: Callback&lt;string&gt;): void;
791

L
liu-binjun 已提交
792
取消订阅GNSS NMEA信息上报事件。
793

Z
doc fix  
z30025928 已提交
794
**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION
795

L
liu-binjun 已提交
796 797 798
**系统能力**:SystemCapability.Location.Location.Gnss

**参数**
799 800 801

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
802 803
  | type | string | 是 | 设置事件类型。type为“nmeaMessage”,表示订阅GNSS&nbsp;NMEA信息上报。 |
  | callback | Callback&lt;string&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
804 805 806 807 808 809 810

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
811 812 813
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.                                                 |

814 815

**示例**
L
liu-binjun 已提交
816

817 818
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
819 820
  import BusinessError from "@ohos.base";
  let nmeaCb = (str:string):void => {
L
liu-binjun 已提交
821 822 823
      console.log('nmeaMessage: ' + JSON.stringify(str));
  }

824
  try {
L
liu-binjun 已提交
825 826
      geoLocationManager.on('nmeaMessage', nmeaCb);
      geoLocationManager.off('nmeaMessage', nmeaCb);
827
  } catch (err) {
L
liu-xinbing 已提交
828
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
829 830 831 832
  }
  ```


L
liu-binjun 已提交
833
## geoLocationManager.on('gnssFenceStatusChange')
834

L
liu-binjun 已提交
835
on(type: 'gnssFenceStatusChange', request: GeofenceRequest, want: WantAgent): void;
836

R
ruan-shaofei 已提交
837
添加一个围栏,并订阅地理围栏事件。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。
838 839 840

**需要权限**:ohos.permission.APPROXIMATELY_LOCATION

L
liu-binjun 已提交
841
**系统能力**:SystemCapability.Location.Location.Geofence
842 843 844 845 846

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
847 848
  | type | string | 是 | 设置事件类型。type为“gnssFenceStatusChange”,表示订阅围栏事件上报。 |
  | request |  [GeofenceRequest](#geofencerequest) | 是 | 围栏的配置参数。 |
849
  | want | [WantAgent](js-apis-app-ability-wantAgent.md) | 是 | 用于接收地理围栏事件上报(进出围栏)。 |
850 851 852 853 854 855 856

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
857 858 859
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.                                                 |
|3301600 | Failed to operate the geofence.                                     |
860 861

**示例**
L
liu-binjun 已提交
862

863 864
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
865
  import wantAgent from '@ohos.app.ability.wantAgent';
L
liu-xinbing 已提交
866 867 868
  import BusinessError from "@ohos.base";

  let wantAgentInfo:wantAgent.WantAgentInfo = {
L
liu-binjun 已提交
869 870 871 872
      wants: [
          {
              bundleName: "com.example.myapplication",
              abilityName: "EntryAbility",
Z
fix doc  
z30025928 已提交
873
              action: "action1"
874
          }
L
liu-binjun 已提交
875 876 877
      ],
      operationType: wantAgent.OperationType.START_ABILITY,
      requestCode: 0,
Z
fix doc  
z30025928 已提交
878
      wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
L
liu-binjun 已提交
879 880 881
  };
  
  wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
L
liu-xinbing 已提交
882
    let requestInfo:geoLocationManager.GeofenceRequest = {'scenario': 0x301, "geofence": {"latitude": 121, "longitude": 26, "radius": 100, "expiration": 10000}};
L
liu-binjun 已提交
883 884 885
    try {
        geoLocationManager.on('gnssFenceStatusChange', requestInfo, wantAgentObj);
    } catch (err) {
L
liu-xinbing 已提交
886
        console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
887 888
    }
  });
889 890 891
  ```


L
liu-binjun 已提交
892
## geoLocationManager.off('gnssFenceStatusChange')
893

L
liu-binjun 已提交
894
off(type: 'gnssFenceStatusChange', request: GeofenceRequest, want: WantAgent): void;
895

R
ruan-shaofei 已提交
896
删除一个围栏,并取消订阅该围栏事件。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。
897 898 899

**需要权限**:ohos.permission.APPROXIMATELY_LOCATION

L
liu-binjun 已提交
900
**系统能力**:SystemCapability.Location.Location.Geofence
901

L
liu-binjun 已提交
902
**参数**
903 904 905

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
906 907
  | type | string | 是 | 设置事件类型。type为“gnssFenceStatusChange”,表示订阅围栏事件上报。 |
  | request | [GeofenceRequest](#geofencerequest) | 是 | 围栏的配置参数。 |
908
  | want | [WantAgent](js-apis-app-ability-wantAgent.md) | 是 | 用于接收地理围栏事件上报(进出围栏)。 |
909 910 911 912 913 914 915

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
916 917 918
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.                                                 |
|3301600 | Failed to operate the geofence.                                     |
919 920

**示例**
L
liu-binjun 已提交
921

922 923
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
924
  import wantAgent from '@ohos.app.ability.wantAgent';
L
liu-xinbing 已提交
925
  import BusinessError from "@ohos.base";
L
liu-binjun 已提交
926
  
L
liu-xinbing 已提交
927
  let wantAgentInfo:wantAgent.WantAgentInfo = {
L
liu-binjun 已提交
928 929 930 931 932 933 934 935 936 937 938 939 940
      wants: [
          {
              bundleName: "com.example.myapplication",
              abilityName: "EntryAbility",
              action: "action1",
          }
      ],
      operationType: wantAgent.OperationType.START_ABILITY,
      requestCode: 0,
      wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
  };
  
  wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
L
liu-xinbing 已提交
941
    let requestInfo:geoLocationManager.GeofenceRequest = {'scenario': 0x301, "geofence": {"latitude": 121, "longitude": 26, "radius": 100, "expiration": 10000}};;
L
liu-binjun 已提交
942 943 944 945
    try {
        geoLocationManager.on('gnssFenceStatusChange', requestInfo, wantAgentObj);
        geoLocationManager.off('gnssFenceStatusChange', requestInfo, wantAgentObj);
    } catch (err) {
L
liu-xinbing 已提交
946
        console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
947 948 949
    }
  });
  ```
950 951


L
liu-binjun 已提交
952
## geoLocationManager.on('countryCodeChange')
953

L
liu-binjun 已提交
954
on(type: 'countryCodeChange', callback: Callback&lt;CountryCode&gt;): void;
955

L
liu-binjun 已提交
956
订阅国家码信息变化事件。
957 958 959 960 961 962 963

**系统能力**:SystemCapability.Location.Location.Core

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
964 965
  | type | string | 是 | 设置事件类型。type为“countryCodeChange”,表示订阅国家码信息变化事件。 |
  | callback | Callback&lt;[CountryCode](#countrycode)&gt; | 是 | 接收国家码信息上报。 |
966 967 968 969 970 971 972 973

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
974 975
|3301500 | Failed to query the area information.                                       |

976 977

**示例**
L
liu-binjun 已提交
978

979 980
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
981 982
  import BusinessError from "@ohos.base";
  let callback = (code:geoLocationManager.CountryCode):void => {
L
liu-binjun 已提交
983 984 985
      console.log('countryCodeChange: ' + JSON.stringify(code));
  }

986
  try {
L
liu-binjun 已提交
987
      geoLocationManager.on('countryCodeChange', callback);
988
  } catch (err) {
L
liu-xinbing 已提交
989
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
990 991 992 993
  }
  ```


L
liu-binjun 已提交
994
## geoLocationManager.off('countryCodeChange')
995

L
liu-binjun 已提交
996
off(type: 'countryCodeChange', callback?: Callback&lt;CountryCode&gt;): void;
997

L
liu-binjun 已提交
998
取消订阅国家码变化事件。
999 1000 1001

**系统能力**:SystemCapability.Location.Location.Core

L
liu-binjun 已提交
1002
**参数**
1003 1004 1005

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1006 1007
  | type | string | 是 | 设置事件类型。type为“countryCodeChange”,表示取消订阅国家码信息变化事件。 |
  | callback | Callback&lt;[CountryCode](#countrycode)&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
1008 1009 1010 1011 1012 1013 1014 1015

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
1016
|3301500 | Failed to query the area information.                                       |
1017 1018

**示例**
L
liu-binjun 已提交
1019

1020 1021
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1022 1023
  import BusinessError from "@ohos.base";
  let callback = (code:geoLocationManager.CountryCode):void => {
L
liu-binjun 已提交
1024 1025 1026
      console.log('countryCodeChange: ' + JSON.stringify(code));
  }

1027
  try {
L
liu-binjun 已提交
1028 1029
      geoLocationManager.on('countryCodeChange', callback);
      geoLocationManager.off('countryCodeChange', callback);
1030
  } catch (err) {
L
liu-xinbing 已提交
1031
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1032 1033 1034 1035
  }
  ```


L
liu-binjun 已提交
1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067
## geoLocationManager.on('locatingRequiredDataChange')<sup>10+</sup>

on(type: 'locatingRequiredDataChange', config: LocatingRequiredDataConfig, callback: Callback&lt;Array&lt;LocatingRequiredData&gt;&gt;): void;

订阅定位业务所需数据的变化,主要包含WiFi和蓝牙扫描信息;根据入参决定是否启动WiFi和蓝牙扫描。

**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION

**系统能力**:SystemCapability.Location.Location.Core

**系统API**:此接口为系统接口。

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 设置事件类型。type为“locatingRequiredDataChange”,表示订阅定位业务所需数据的变化。 |
  | config | [LocatingRequiredDataConfig](#locatingrequireddataconfig10) | 是 | 表示获取定位所需数据时的配置参数。 |
  | callback | Callback&lt;Array&lt;[LocatingRequiredData](#locatingrequireddata10)&gt;&gt; | 是 | 接收定位业务所需数据的上报。 |

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301800 | Failed to start WiFi or Bluetooth scanning.                            |

**示例**

  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1068 1069
  import BusinessError from "@ohos.base";
  let callback = (code:Array<geoLocationManager.LocatingRequiredData>):void => {
L
liu-binjun 已提交
1070 1071
      console.log('locatingRequiredDataChange: ' + JSON.stringify(code));
  }
L
liu-xinbing 已提交
1072
  let config:geoLocationManager.LocatingRequiredDataConfig = {'type': 1, 'needStartScan': true, 'scanInterval': 10000};
L
liu-binjun 已提交
1073 1074 1075
  try {
      geoLocationManager.on('locatingRequiredDataChange', config, callback);
  } catch (err) {
L
liu-xinbing 已提交
1076
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107
  }
  ```


## geoLocationManager.off('locatingRequiredDataChange')<sup>10+</sup>

off(type: 'locatingRequiredDataChange', callback?: Callback&lt;Array&lt;LocatingRequiredData&gt;&gt;): void;

取消订阅定位业务所需数据的变化,并停止WiFi和蓝牙扫描。

**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION

**系统能力**:SystemCapability.Location.Location.Core

**系统API**:此接口为系统接口。

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 设置事件类型。type为“locatingRequiredDataChange”,表示取消订阅定位业务所需数据的变化。 |
  | callback | Callback&lt;Array&lt;[LocatingRequiredData](#locatingrequireddata10)&gt;&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |

**错误码**

错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

**示例**

  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1108 1109
  import BusinessError from "@ohos.base";
  let callback = (code:Array<geoLocationManager.LocatingRequiredData>):void => {
L
liu-binjun 已提交
1110 1111
      console.log('locatingRequiredDataChange: ' + JSON.stringify(code));
  }
L
liu-xinbing 已提交
1112
  let config:geoLocationManager.LocatingRequiredDataConfig = {'type': 1, 'needStartScan': true, 'scanInterval': 10000};
L
liu-binjun 已提交
1113 1114 1115 1116
  try {
      geoLocationManager.on('locatingRequiredDataChange', config, callback);
      geoLocationManager.off('locatingRequiredDataChange', callback);
  } catch (err) {
L
liu-xinbing 已提交
1117
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
1118 1119 1120
  }
  ```

1121

L
liu-binjun 已提交
1122
## geoLocationManager.getCurrentLocation
1123

L
liu-binjun 已提交
1124
getCurrentLocation(request: CurrentLocationRequest, callback: AsyncCallback&lt;Location&gt;): void
1125

L
liu-binjun 已提交
1126 1127 1128
获取当前位置,使用callback回调异步返回结果。

**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
1129 1130 1131

**系统能力**:SystemCapability.Location.Location.Core

L
liu-binjun 已提交
1132 1133 1134 1135 1136 1137 1138
**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | request | [CurrentLocationRequest](#currentlocationrequest) | 是 | 设置位置请求参数。 |
  | callback | AsyncCallback&lt;[Location](#location)&gt; | 是 | 用来接收位置信息的回调。 |

1139 1140 1141 1142 1143 1144 1145
**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
1146 1147
|3301100 | The location switch is off.                                                 |
|3301200 | Failed to obtain the geographical location.  |
1148 1149

**示例**
L
liu-binjun 已提交
1150

1151 1152
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1153 1154 1155
  import BusinessError from "@ohos.base";
  let requestInfo:geoLocationManager.CurrentLocationRequest = {'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX, 'scenario': geoLocationManager.LocationRequestScenario.UNSET,'maxAccuracy': 0};
  let locationChange = (err:BusinessError.BusinessError, location:geoLocationManager.Location):void => {
L
liu-binjun 已提交
1156 1157 1158 1159 1160 1161 1162 1163
      if (err) {
          console.log('locationChanger: err=' + JSON.stringify(err));
      }
      if (location) {
          console.log('locationChanger: location=' + JSON.stringify(location));
      }
  };

1164
  try {
L
liu-binjun 已提交
1165
      geoLocationManager.getCurrentLocation(requestInfo, locationChange);
1166
  } catch (err) {
L
liu-xinbing 已提交
1167
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1168 1169 1170
  }
  ```

L
liu-binjun 已提交
1171
## geoLocationManager.getCurrentLocation
1172

L
liu-binjun 已提交
1173
getCurrentLocation(callback: AsyncCallback&lt;Location&gt;): void;
1174

L
liu-binjun 已提交
1175
获取当前位置,通过callback方式异步返回结果。
1176

L
liu-binjun 已提交
1177
**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
1178

L
liu-binjun 已提交
1179
**系统能力**:SystemCapability.Location.Location.Core
1180 1181 1182 1183 1184

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1185
  | callback | AsyncCallback&lt;[Location](#location)&gt; | 是 | 用来接收位置信息的回调。 |
1186 1187 1188 1189 1190 1191 1192

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1193 1194 1195
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.                                                 |
|3301200 | Failed to obtain the geographical location.  |
1196 1197

**示例**
L
liu-binjun 已提交
1198

1199 1200
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1201 1202
  import BusinessError from "@ohos.base";
  let locationChange = (err:BusinessError.BusinessError, location:geoLocationManager.Location) => {
L
liu-binjun 已提交
1203 1204 1205 1206 1207 1208 1209 1210
      if (err) {
          console.log('locationChanger: err=' + JSON.stringify(err));
      }
      if (location) {
          console.log('locationChanger: location=' + JSON.stringify(location));
      }
  };

1211
  try {
L
liu-binjun 已提交
1212
      geoLocationManager.getCurrentLocation(locationChange);
1213
  } catch (err) {
L
liu-xinbing 已提交
1214
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1215 1216 1217
  }
  ```

L
liu-binjun 已提交
1218
## geoLocationManager.getCurrentLocation
1219

L
liu-binjun 已提交
1220
getCurrentLocation(request?: CurrentLocationRequest): Promise&lt;Location&gt;
1221

L
liu-binjun 已提交
1222
获取当前位置,使用Promise方式异步返回结果。
1223

L
liu-binjun 已提交
1224
**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
1225

L
liu-binjun 已提交
1226
**系统能力**:SystemCapability.Location.Location.Core
1227 1228 1229 1230 1231

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1232
  | request | [CurrentLocationRequest](#currentlocationrequest) | 否 | 设置位置请求参数。 |
1233 1234 1235 1236 1237

**返回值**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1238
  | Promise&lt;[Location](#location)&gt;  | [Location](#location) | NA | 返回位置信息。 |
1239 1240 1241 1242 1243 1244 1245

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1246 1247 1248
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.                                                 |
|3301200 | Failed to obtain the geographical location.  |
1249 1250

**示例**
L
liu-binjun 已提交
1251

1252 1253
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1254 1255
  import BusinessError from "@ohos.base";
  let requestInfo:geoLocationManager.CurrentLocationRequest = {'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX, 'scenario': geoLocationManager.LocationRequestScenario.UNSET,'maxAccuracy': 0};
1256
  try {
L
liu-binjun 已提交
1257 1258 1259
      geoLocationManager.getCurrentLocation(requestInfo).then((result) => {
          console.log('current location: ' + JSON.stringify(result));
      })  
L
liu-xinbing 已提交
1260
      .catch((error:number) => {
L
liu-binjun 已提交
1261
          console.log('promise, getCurrentLocation: error=' + JSON.stringify(error));
1262 1263
      });
  } catch (err) {
L
liu-xinbing 已提交
1264
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1265 1266 1267 1268
  }
  ```


L
liu-binjun 已提交
1269
## geoLocationManager.getLastLocation
1270

L
liu-binjun 已提交
1271
getLastLocation(): Location
1272

L
liu-binjun 已提交
1273
获取上一次位置。
1274

L
liu-binjun 已提交
1275
**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
1276

L
liu-binjun 已提交
1277 1278 1279
**系统能力**:SystemCapability.Location.Location.Core

**返回值**
1280 1281 1282

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1283
  | Location  | [Location](#location) | NA | 位置信息。 |
1284 1285 1286 1287 1288 1289 1290

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1291 1292 1293
|3301000 | Location service is unavailable.  |
|3301100 | The location switch is off.  |
|3301200 |Failed to obtain the geographical location.  |
1294 1295

**示例**
L
liu-binjun 已提交
1296

1297 1298
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1299
  import BusinessError from "@ohos.base";
1300
  try {
L
liu-binjun 已提交
1301
      let location = geoLocationManager.getLastLocation();
1302
  } catch (err) {
L
liu-xinbing 已提交
1303
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1304 1305 1306 1307
  }
  ```


L
liu-binjun 已提交
1308
## geoLocationManager.isLocationEnabled
1309

L
liu-binjun 已提交
1310
isLocationEnabled(): boolean
1311

L
liu-binjun 已提交
1312
判断位置服务是否已经使能。
1313

L
liu-binjun 已提交
1314
**系统能力**:SystemCapability.Location.Location.Core
1315 1316 1317 1318 1319

**返回值**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1320
  | boolean  | boolean | NA | 位置服务是否已经使能。 |
1321 1322 1323 1324 1325 1326 1327

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1328
|3301000 | Location service is unavailable.  |
1329 1330

**示例**
L
liu-binjun 已提交
1331

1332 1333
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1334
  import BusinessError from "@ohos.base";
1335
  try {
L
liu-binjun 已提交
1336
      let locationEnabled = geoLocationManager.isLocationEnabled();
1337
  } catch (err) {
L
liu-xinbing 已提交
1338
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1339 1340 1341 1342
  }
  ```


L
liu-binjun 已提交
1343
## geoLocationManager.enableLocation
1344

L
liu-binjun 已提交
1345
enableLocation(callback: AsyncCallback&lt;void&gt;): void;
1346

L
liu-binjun 已提交
1347
打开位置服务,使用callback回调异步返回结果。
1348

L
liu-binjun 已提交
1349
**系统API**:此接口为系统接口。
L
liu-binjun 已提交
1350 1351 1352 1353 1354 1355

**需要权限**:ohos.permission.MANAGE_SECURE_SETTINGS

**系统能力**:SystemCapability.Location.Location.Core

**参数**
1356 1357 1358

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1359
  | callback | AsyncCallback&lt;void&gt; | 是 | 用来接收错误码信息。 |
1360 1361 1362 1363 1364 1365 1366

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1367
|3301000 | Location service is unavailable.                                            |
1368 1369

**示例**
L
liu-binjun 已提交
1370

1371 1372
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1373
  import BusinessError from "@ohos.base";
1374
  try {
L
liu-binjun 已提交
1375 1376 1377 1378 1379
      geoLocationManager.enableLocation((err, data) => {
          if (err) {
              console.log('enableLocation: err=' + JSON.stringify(err));
          }
      });
1380
  } catch (err) {
L
liu-xinbing 已提交
1381
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1382 1383 1384 1385
  }
  ```


L
liu-binjun 已提交
1386
## geoLocationManager.enableLocation
1387

L
liu-binjun 已提交
1388
enableLocation(): Promise&lt;void&gt;
1389

L
liu-binjun 已提交
1390
打开位置服务,使用Promise方式异步返回结果。
1391

L
liu-binjun 已提交
1392
**系统API**:此接口为系统接口。
1393

L
liu-binjun 已提交
1394
**需要权限**:ohos.permission.MANAGE_SECURE_SETTINGS
1395

L
liu-binjun 已提交
1396 1397 1398
**系统能力**:SystemCapability.Location.Location.Core

**返回值**
1399 1400 1401

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1402
  | Promise&lt;void&gt;  | void | NA | 返回错误码信息。 |
1403 1404 1405 1406 1407 1408 1409

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1410
|3301000 | Location service is unavailable.                                            |
1411 1412

**示例**
L
liu-binjun 已提交
1413

1414 1415
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1416
  import BusinessError from "@ohos.base";
1417
  try {
L
liu-binjun 已提交
1418 1419 1420
      geoLocationManager.enableLocation().then((result) => {
          console.log('promise, enableLocation succeed');
      })
L
liu-xinbing 已提交
1421
      .catch((error:number) => {
L
liu-binjun 已提交
1422
          console.log('promise, enableLocation: error=' + JSON.stringify(error));
1423 1424
      });
  } catch (err) {
L
liu-xinbing 已提交
1425
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1426 1427 1428
  }
  ```

L
liu-binjun 已提交
1429
## geoLocationManager.disableLocation
1430

L
liu-binjun 已提交
1431
disableLocation(): void;
1432

L
liu-binjun 已提交
1433
关闭位置服务。
1434

L
liu-binjun 已提交
1435
**系统API**:此接口为系统接口。
1436

L
liu-binjun 已提交
1437
**需要权限**:ohos.permission.MANAGE_SECURE_SETTINGS
1438

L
liu-binjun 已提交
1439
**系统能力**:SystemCapability.Location.Location.Core
1440 1441 1442 1443 1444 1445 1446

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1447
|3301000 | Location service is unavailable.                                            |
1448 1449

**示例**
L
liu-binjun 已提交
1450

1451 1452
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1453
  import BusinessError from "@ohos.base";
1454
  try {
L
liu-binjun 已提交
1455
      geoLocationManager.disableLocation();
1456
  } catch (err) {
L
liu-xinbing 已提交
1457
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1458 1459 1460 1461
  }
  ```


L
liu-binjun 已提交
1462
## geoLocationManager.getAddressesFromLocation
1463

L
liu-binjun 已提交
1464
getAddressesFromLocation(request: ReverseGeoCodeRequest, callback: AsyncCallback&lt;Array&lt;GeoAddress&gt;&gt;): void
1465

L
liu-binjun 已提交
1466
调用逆地理编码服务,将坐标转换为地理描述,使用callback回调异步返回结果。
1467

L
liu-binjun 已提交
1468
**系统能力**:SystemCapability.Location.Location.Geocoder
1469 1470 1471 1472 1473

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1474 1475
  | request | [ReverseGeoCodeRequest](#reversegeocoderequest) | 是 | 设置逆地理编码请求的相关参数。 |
  | callback | AsyncCallback&lt;Array&lt;[GeoAddress](#geoaddress)&gt;&gt; | 是 | 接收逆地理编码结果的回调函数。 |
1476 1477 1478 1479 1480 1481 1482 1483

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.   |
L
liu-binjun 已提交
1484
|3301300 | Reverse geocoding query failed.   |
1485 1486

**示例**
L
liu-binjun 已提交
1487

1488 1489
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1490 1491
  import BusinessError from "@ohos.base";
  let reverseGeocodeRequest:geoLocationManager.ReverseGeoCodeRequest = {"latitude": 31.12, "longitude": 121.11, "maxItems": 1};
1492
  try {
L
liu-binjun 已提交
1493
      geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest, (err, data) => {
1494
          if (err) {
L
liu-binjun 已提交
1495 1496 1497 1498
              console.log('getAddressesFromLocation: err=' + JSON.stringify(err));
          }
          if (data) {
              console.log('getAddressesFromLocation: data=' + JSON.stringify(data));
1499 1500 1501
          }
      });
  } catch (err) {
L
liu-xinbing 已提交
1502
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1503 1504 1505 1506
  }
  ```


L
liu-binjun 已提交
1507
## geoLocationManager.getAddressesFromLocation
1508

L
liu-binjun 已提交
1509
getAddressesFromLocation(request: ReverseGeoCodeRequest): Promise&lt;Array&lt;GeoAddress&gt;&gt;;
1510

L
liu-binjun 已提交
1511
调用逆地理编码服务,将坐标转换为地理描述,使用Promise方式异步返回结果。
1512

L
liu-binjun 已提交
1513
**系统能力**:SystemCapability.Location.Location.Geocoder
1514

L
liu-binjun 已提交
1515 1516 1517 1518 1519
**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | request | [ReverseGeoCodeRequest](#reversegeocoderequest) | 是 | 设置逆地理编码请求的相关参数。 |
1520 1521 1522 1523 1524

**返回值**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1525
  | Promise&lt;Array&lt;[GeoAddress](#geoaddress)&gt;&gt;  | Array&lt;[GeoAddress](#geoaddress)&gt; | NA | 返回地理描述信息。 |
1526 1527 1528 1529 1530 1531 1532 1533

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.   |
L
liu-binjun 已提交
1534
|3301300 | Reverse geocoding query failed.   |
1535 1536

**示例**
L
liu-binjun 已提交
1537

1538 1539
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1540 1541
  import BusinessError from "@ohos.base";
  let reverseGeocodeRequest:geoLocationManager.ReverseGeoCodeRequest = {"latitude": 31.12, "longitude": 121.11, "maxItems": 1};
1542
  try {
L
liu-binjun 已提交
1543 1544
      geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest).then((data) => {
          console.log('getAddressesFromLocation: ' + JSON.stringify(data));
1545
      })
L
liu-xinbing 已提交
1546
      .catch((error:number) => {
L
liu-binjun 已提交
1547
          console.log('promise, getAddressesFromLocation: error=' + JSON.stringify(error));
1548 1549
      });
  } catch (err) {
L
liu-xinbing 已提交
1550
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1551 1552 1553 1554
  }
  ```


L
liu-binjun 已提交
1555
## geoLocationManager.getAddressesFromLocationName
1556

L
liu-binjun 已提交
1557
getAddressesFromLocationName(request: GeoCodeRequest, callback: AsyncCallback&lt;Array&lt;GeoAddress&gt;&gt;): void
1558

L
liu-binjun 已提交
1559
调用地理编码服务,将地理描述转换为具体坐标,使用callback回调异步返回结果。
1560

L
liu-binjun 已提交
1561
**系统能力**:SystemCapability.Location.Location.Geocoder
1562 1563

**参数**
L
liu-binjun 已提交
1564

1565 1566
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1567 1568
  | request | [GeoCodeRequest](#geocoderequest) | 是 | 设置地理编码请求的相关参数。 |
  | callback | AsyncCallback&lt;Array&lt;[GeoAddress](#geoaddress)&gt;&gt; | 是 | 接收地理编码结果的回调函数。 |
L
liu-binjun 已提交
1569

1570
**错误码**
L
liu-binjun 已提交
1571

1572
以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)
L
liu-binjun 已提交
1573

1574 1575 1576
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.   |
L
liu-binjun 已提交
1577
|3301400 | Geocoding query failed.   |
1578 1579

**示例**
L
liu-binjun 已提交
1580

1581 1582
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1583 1584
  import BusinessError from "@ohos.base";
  let geocodeRequest:geoLocationManager.GeoCodeRequest = {"description": "上海市浦东新区xx路xx号", "maxItems": 1};
1585
  try {
L
liu-binjun 已提交
1586
      geoLocationManager.getAddressesFromLocationName(geocodeRequest, (err, data) => {
1587
          if (err) {
L
liu-binjun 已提交
1588 1589 1590 1591
              console.log('getAddressesFromLocationName: err=' + JSON.stringify(err));
          }
          if (data) {
              console.log('getAddressesFromLocationName: data=' + JSON.stringify(data));
1592 1593 1594
          }
      });
  } catch (err) {
L
liu-xinbing 已提交
1595
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1596 1597 1598 1599
  }
  ```


L
liu-binjun 已提交
1600
## geoLocationManager.getAddressesFromLocationName
1601

L
liu-binjun 已提交
1602
getAddressesFromLocationName(request: GeoCodeRequest): Promise&lt;Array&lt;GeoAddress&gt;&gt;
1603

L
liu-binjun 已提交
1604
调用地理编码服务,将地理描述转换为具体坐标,使用Promise方式异步返回结果。
L
liu-binjun 已提交
1605

L
liu-binjun 已提交
1606
**系统能力**:SystemCapability.Location.Location.Geocoder
L
liu-binjun 已提交
1607

1608 1609 1610 1611
**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1612
  | request | [GeoCodeRequest](#geocoderequest) | 是 | 设置地理编码请求的相关参数。 |
1613

L
liu-binjun 已提交
1614 1615
**返回值**

1616 1617
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1618
  | Promise&lt;Array&lt;[GeoAddress](#geoaddress)&gt;&gt;  | Array&lt;[GeoAddress](#geoaddress)&gt; | NA | 返回地理编码查询结果。 |
L
liu-binjun 已提交
1619 1620 1621 1622 1623 1624 1625

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1626 1627
|3301000 | Location service is unavailable.   |
|3301400 | Geocoding query failed.   |
L
liu-binjun 已提交
1628 1629

**示例**
L
liu-binjun 已提交
1630

L
liu-binjun 已提交
1631 1632
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1633 1634
  import BusinessError from "@ohos.base";
  let geocodeRequest:geoLocationManager.GeoCodeRequest = {"description": "上海市浦东新区xx路xx号", "maxItems": 1};
1635
  try {
L
liu-binjun 已提交
1636 1637 1638
      geoLocationManager.getAddressesFromLocationName(geocodeRequest).then((result) => {
          console.log('getAddressesFromLocationName: ' + JSON.stringify(result));
      })
L
liu-xinbing 已提交
1639
      .catch((error:number) => {
L
liu-binjun 已提交
1640
          console.log('promise, getAddressesFromLocationName: error=' + JSON.stringify(error));
1641 1642
      });
  } catch (err) {
L
liu-xinbing 已提交
1643
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1644
  }
L
liu-binjun 已提交
1645 1646
  ```

L
liu-binjun 已提交
1647
## geoLocationManager.isGeocoderAvailable
L
liu-binjun 已提交
1648

L
liu-binjun 已提交
1649
isGeocoderAvailable(): boolean;
L
liu-binjun 已提交
1650

L
liu-binjun 已提交
1651
判断(逆)地理编码服务状态。
L
liu-binjun 已提交
1652

L
liu-binjun 已提交
1653
**系统能力**:SystemCapability.Location.Location.Geocoder
L
liu-binjun 已提交
1654

L
liu-binjun 已提交
1655
**返回值**
1656 1657 1658

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1659
  | boolean  | boolean | NA | 返回(逆)地理编码服务是否可用。 |
1660

L
liu-binjun 已提交
1661 1662 1663 1664 1665 1666
**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1667
|3301000 | Location service is unavailable.   |
L
liu-binjun 已提交
1668 1669

**示例**
L
liu-binjun 已提交
1670

L
liu-binjun 已提交
1671 1672
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1673
  import BusinessError from "@ohos.base";
1674
  try {
L
liu-binjun 已提交
1675
      let isAvailable = geoLocationManager.isGeocoderAvailable();
1676
  } catch (err) {
L
liu-xinbing 已提交
1677
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1678
  }
L
liu-binjun 已提交
1679 1680 1681
  ```


L
liu-binjun 已提交
1682
## geoLocationManager.getCachedGnssLocationsSize
L
liu-binjun 已提交
1683

L
liu-binjun 已提交
1684
getCachedGnssLocationsSize(callback: AsyncCallback&lt;number&gt;): void;
L
liu-binjun 已提交
1685

R
ruan-shaofei 已提交
1686
获取GNSS芯片缓存位置的个数。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。
1687

L
liu-binjun 已提交
1688
**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
1689

L
liu-binjun 已提交
1690 1691 1692
**系统能力**:SystemCapability.Location.Location.Gnss

**参数**
1693 1694 1695

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1696
  | callback | AsyncCallback&lt;number&gt; | 是 | 用来接收GNSS芯片缓存位置个数的回调。 |
1697

L
liu-binjun 已提交
1698 1699 1700 1701 1702 1703
**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1704 1705
|3301000 | Location service is unavailable.   |
|3301100 | The location switch is off.   |
L
liu-binjun 已提交
1706 1707

**示例**
L
liu-binjun 已提交
1708

L
liu-binjun 已提交
1709 1710
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1711
  import BusinessError from "@ohos.base";
1712
  try {
L
liu-binjun 已提交
1713 1714 1715 1716 1717 1718 1719
      geoLocationManager.getCachedGnssLocationsSize((err, size) => {
          if (err) {
              console.log('getCachedGnssLocationsSize: err=' + JSON.stringify(err));
          }
          if (size) {
              console.log('getCachedGnssLocationsSize: size=' + JSON.stringify(size));
          }
1720 1721
      });
  } catch (err) {
L
liu-xinbing 已提交
1722
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1723
  }
L
liu-binjun 已提交
1724 1725 1726
  ```


L
liu-binjun 已提交
1727
## geoLocationManager.getCachedGnssLocationsSize
L
liu-binjun 已提交
1728

L
liu-binjun 已提交
1729
getCachedGnssLocationsSize(): Promise&lt;number&gt;;
L
liu-binjun 已提交
1730

R
ruan-shaofei 已提交
1731
获取GNSS芯片缓存位置的个数。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。
L
liu-binjun 已提交
1732

L
liu-binjun 已提交
1733
**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
L
liu-binjun 已提交
1734

L
liu-binjun 已提交
1735 1736 1737 1738 1739 1740 1741
**系统能力**:SystemCapability.Location.Location.Gnss

**返回值**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | Promise&lt;number&gt;  | number | NA | 返回GNSS缓存位置的个数。 |
L
liu-binjun 已提交
1742

1743
**错误码**
L
liu-binjun 已提交
1744

1745 1746 1747 1748
以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1749 1750
|3301000 | Location service is unavailable.   |
|3301100 | The location switch is off.   |
1751 1752

**示例**
L
liu-binjun 已提交
1753

1754 1755
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1756
  import BusinessError from "@ohos.base";
1757
  try {
L
liu-binjun 已提交
1758 1759 1760
      geoLocationManager.getCachedGnssLocationsSize().then((result) => {
          console.log('promise, getCachedGnssLocationsSize: ' + JSON.stringify(result));
      }) 
L
liu-xinbing 已提交
1761
      .catch((error:number) => {
L
liu-binjun 已提交
1762 1763
          console.log('promise, getCachedGnssLocationsSize: error=' + JSON.stringify(error));
      });
1764
  } catch (err) {
L
liu-xinbing 已提交
1765
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1766 1767 1768 1769
  }
  ```


L
liu-binjun 已提交
1770
## geoLocationManager.flushCachedGnssLocations
1771

L
liu-binjun 已提交
1772
flushCachedGnssLocations(callback: AsyncCallback&lt;void&gt;): void;
1773

R
ruan-shaofei 已提交
1774
读取并清空GNSS芯片所有缓存位置。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。
1775

L
liu-binjun 已提交
1776
**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
1777

L
liu-binjun 已提交
1778 1779 1780 1781 1782 1783 1784
**系统能力**:SystemCapability.Location.Location.Gnss

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | callback | AsyncCallback&lt;void&gt; | 是 | 用来接收错误码信息。 |
L
liu-binjun 已提交
1785 1786 1787 1788 1789 1790 1791

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1792 1793 1794
|3301000 | Location service is unavailable.   |
|3301100 | The location switch is off.   |
|3301200 | Failed to obtain the geographical location.   |
L
liu-binjun 已提交
1795 1796

**示例**
L
liu-binjun 已提交
1797

L
liu-binjun 已提交
1798 1799
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1800
  import BusinessError from "@ohos.base";
1801
  try {
L
liu-binjun 已提交
1802 1803 1804 1805 1806
      geoLocationManager.flushCachedGnssLocations((err, result) => {
          if (err) {
              console.log('flushCachedGnssLocations: err=' + JSON.stringify(err));
          }
      });
1807
  } catch (err) {
L
liu-xinbing 已提交
1808
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1809
  }
L
liu-binjun 已提交
1810 1811 1812
  ```


L
liu-binjun 已提交
1813
## geoLocationManager.flushCachedGnssLocations
L
liu-binjun 已提交
1814

L
liu-binjun 已提交
1815
flushCachedGnssLocations(): Promise&lt;void&gt;;
L
liu-binjun 已提交
1816

R
ruan-shaofei 已提交
1817
读取并清空GNSS芯片所有缓存位置。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。
L
liu-binjun 已提交
1818

L
liu-binjun 已提交
1819
**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
L
liu-binjun 已提交
1820

L
liu-binjun 已提交
1821
**系统能力**:SystemCapability.Location.Location.Gnss
L
liu-binjun 已提交
1822

L
liu-binjun 已提交
1823
**返回值**
1824 1825 1826

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1827
  | Promise&lt;void&gt;  | void | NA | 接收错误码。 |
1828

L
liu-binjun 已提交
1829 1830 1831 1832 1833 1834
**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1835 1836 1837
|3301000 | Location service is unavailable.   |
|3301100 | The location switch is off.   |
|3301200 | Failed to obtain the geographical location.   |
L
liu-binjun 已提交
1838 1839

**示例**
L
liu-binjun 已提交
1840

L
liu-binjun 已提交
1841 1842
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1843
  import BusinessError from "@ohos.base";
1844
  try {
L
liu-binjun 已提交
1845 1846 1847
      geoLocationManager.flushCachedGnssLocations().then((result) => {
          console.log('promise, flushCachedGnssLocations success');
      })
L
liu-xinbing 已提交
1848
      .catch((error:number) => {
L
liu-binjun 已提交
1849 1850
          console.log('promise, flushCachedGnssLocations: error=' + JSON.stringify(error));
      });
1851
  } catch (err) {
L
liu-xinbing 已提交
1852
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1853
  }
L
liu-binjun 已提交
1854 1855 1856
  ```


L
liu-binjun 已提交
1857
## geoLocationManager.sendCommand
L
liu-binjun 已提交
1858

L
liu-binjun 已提交
1859
sendCommand(command: LocationCommand, callback: AsyncCallback&lt;void&gt;): void;
L
liu-binjun 已提交
1860

L
liu-binjun 已提交
1861
给位置服务子系统的各个部件发送扩展命令。
L
liu-binjun 已提交
1862 1863 1864

**系统能力**:SystemCapability.Location.Location.Core

L
liu-binjun 已提交
1865 1866 1867 1868 1869 1870
**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | command |  [LocationCommand](#locationcommand) | 是 | 指定目标场景,和将要发送的命令(字符串)。 |
  | callback | AsyncCallback&lt;void&gt; | 是 | 用来接收错误码。 |
L
liu-binjun 已提交
1871 1872 1873 1874 1875 1876 1877

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1878
|3301000 | Location service is unavailable.   |
L
liu-binjun 已提交
1879 1880

**示例**
L
liu-binjun 已提交
1881

L
liu-binjun 已提交
1882 1883
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1884 1885
  import BusinessError from "@ohos.base";
  let requestInfo:geoLocationManager.LocationCommand = {'scenario': 0x301, 'command': "command_1"};
1886
  try {
L
liu-binjun 已提交
1887 1888 1889 1890 1891
      geoLocationManager.sendCommand(requestInfo, (err, result) => {
          if (err) {
              console.log('sendCommand: err=' + JSON.stringify(err));
          }
      });
1892
  } catch (err) {
L
liu-xinbing 已提交
1893
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1894
  }
L
liu-binjun 已提交
1895 1896 1897
  ```


L
liu-binjun 已提交
1898
## geoLocationManager.sendCommand
L
liu-binjun 已提交
1899

L
liu-binjun 已提交
1900
sendCommand(command: LocationCommand): Promise&lt;void&gt;;
L
liu-binjun 已提交
1901

L
liu-binjun 已提交
1902
给位置服务子系统的各个部件发送扩展命令。
L
liu-binjun 已提交
1903 1904 1905

**系统能力**:SystemCapability.Location.Location.Core

L
liu-binjun 已提交
1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916
**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | command | [LocationCommand](#locationcommand) | 是 | 指定目标场景,和将要发送的命令(字符串)。 |

**返回值**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | Promise&lt;void&gt;  | void | NA | 接收错误码。 |
L
liu-binjun 已提交
1917 1918 1919 1920 1921 1922 1923 1924 1925 1926

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |

**示例**
L
liu-binjun 已提交
1927

L
liu-binjun 已提交
1928 1929
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1930 1931
  import BusinessError from "@ohos.base";
  let requestInfo:geoLocationManager.LocationCommand = {'scenario': 0x301, 'command': "command_1"};
1932
  try {
L
liu-binjun 已提交
1933 1934 1935
      geoLocationManager.sendCommand(requestInfo).then((result) => {
          console.log('promise, sendCommand success');
      })  
L
liu-xinbing 已提交
1936
      .catch((error:number) => {
L
liu-binjun 已提交
1937 1938
          console.log('promise, sendCommand: error=' + JSON.stringify(error));
      });
1939
  } catch (err) {
L
liu-xinbing 已提交
1940
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1941
  }
L
liu-binjun 已提交
1942 1943 1944
  ```


L
liu-binjun 已提交
1945
## geoLocationManager.getCountryCode
L
liu-binjun 已提交
1946

L
liu-binjun 已提交
1947
getCountryCode(callback: AsyncCallback&lt;CountryCode&gt;): void;
L
liu-binjun 已提交
1948

L
liu-binjun 已提交
1949
查询当前的国家码。
L
liu-binjun 已提交
1950

1951 1952
**系统能力**:SystemCapability.Location.Location.Core

1953
**参数**
1954

1955 1956
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1957
  | callback | AsyncCallback&lt;[CountryCode](#countrycode)&gt; | 是 | 用来接收国家码。 |
L
liu-binjun 已提交
1958 1959 1960 1961 1962 1963 1964 1965

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
1966
|3301500 | Failed to query the area information.|
L
liu-binjun 已提交
1967 1968

**示例**
L
liu-binjun 已提交
1969

L
liu-binjun 已提交
1970 1971
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
1972
  import BusinessError from "@ohos.base";
1973
  try {
L
liu-binjun 已提交
1974 1975 1976 1977 1978 1979 1980 1981
      geoLocationManager.getCountryCode((err, result) => {
          if (err) {
              console.log('getCountryCode: err=' + JSON.stringify(err));
          }
          if (result) {
              console.log('getCountryCode: result=' + JSON.stringify(result));
          }
      });
1982
  } catch (err) {
L
liu-xinbing 已提交
1983
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
1984
  }
L
liu-binjun 已提交
1985 1986 1987
  ```


L
liu-binjun 已提交
1988
## geoLocationManager.getCountryCode
1989

L
liu-binjun 已提交
1990
getCountryCode(): Promise&lt;CountryCode&gt;;
L
liu-binjun 已提交
1991

L
liu-binjun 已提交
1992
查询当前的国家码。
L
liu-binjun 已提交
1993

1994 1995
**系统能力**:SystemCapability.Location.Location.Core

1996
**返回值**
L
liu-binjun 已提交
1997 1998 1999

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
2000
  | Promise&lt;[CountryCode](#countrycode)&gt; | [CountryCode](#countrycode) | NA | 用来接收国家码。 |
L
liu-binjun 已提交
2001 2002 2003 2004 2005 2006 2007 2008

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
2009
|3301500 | Failed to query the area information.|
L
liu-binjun 已提交
2010 2011

**示例**
L
liu-binjun 已提交
2012

L
liu-binjun 已提交
2013 2014
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
2015
  import BusinessError from "@ohos.base";
2016
  try {
L
liu-binjun 已提交
2017 2018 2019 2020
      geoLocationManager.getCountryCode()
      .then((result) => {
          console.log('promise, getCountryCode: result=' + JSON.stringify(result));
      })
L
liu-xinbing 已提交
2021
      .catch((error:number) => {
L
liu-binjun 已提交
2022 2023
          console.log('promise, getCountryCode: error=' + JSON.stringify(error));
      });
2024
  } catch (err) {
L
liu-xinbing 已提交
2025
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
2026 2027 2028 2029
  }
  ```


L
liu-binjun 已提交
2030
## geoLocationManager.enableLocationMock
2031

L
liu-binjun 已提交
2032
enableLocationMock(): void;
2033

L
liu-binjun 已提交
2034
使能位置模拟功能。
2035 2036 2037

**系统能力**:SystemCapability.Location.Location.Core

L
liu-binjun 已提交
2038
**系统API**:此接口为系统接口。
2039 2040 2041 2042 2043 2044 2045 2046

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
2047
|3301100 | The location switch is off.|
2048 2049

**示例**
L
liu-binjun 已提交
2050

2051 2052
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
2053
  import BusinessError from "@ohos.base";
2054
  try {
L
liu-binjun 已提交
2055
      geoLocationManager.enableLocationMock();
2056
  } catch (err) {
L
liu-xinbing 已提交
2057
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
2058
  }
L
liu-binjun 已提交
2059 2060 2061
  ```


L
liu-binjun 已提交
2062
## geoLocationManager.disableLocationMock
L
liu-binjun 已提交
2063

L
liu-binjun 已提交
2064
disableLocationMock(): void;
L
liu-binjun 已提交
2065

L
liu-binjun 已提交
2066
去使能位置模拟功能。
L
liu-binjun 已提交
2067 2068 2069

**系统能力**:SystemCapability.Location.Location.Core

L
liu-binjun 已提交
2070
**系统API**:此接口为系统接口。
L
liu-binjun 已提交
2071

L
liu-binjun 已提交
2072
**错误码**
L
liu-binjun 已提交
2073

L
liu-binjun 已提交
2074
以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)
L
liu-binjun 已提交
2075

L
liu-binjun 已提交
2076 2077 2078 2079
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.|
L
liu-binjun 已提交
2080

L
liu-binjun 已提交
2081
**示例**
L
liu-binjun 已提交
2082

L
liu-binjun 已提交
2083 2084
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
2085
  import BusinessError from "@ohos.base";
L
liu-binjun 已提交
2086 2087 2088
  try {
      geoLocationManager.disableLocationMock();
  } catch (err) {
L
liu-xinbing 已提交
2089
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
2090 2091
  }
  ```
L
liu-binjun 已提交
2092 2093


L
liu-binjun 已提交
2094
## geoLocationManager.setMockedLocations
L
liu-binjun 已提交
2095

L
liu-binjun 已提交
2096
setMockedLocations(config: LocationMockConfig): void;
L
liu-binjun 已提交
2097

L
liu-binjun 已提交
2098
设置模拟的位置信息,后面会以该接口中携带的时间间隔上报模拟位置。
L
liu-binjun 已提交
2099

2100
该接口需要在调用[geoLocationManager.enableLocationMock](#geolocationmanagerenablelocationmock)之后才能调用。
L
liu-binjun 已提交
2101

L
liu-binjun 已提交
2102
**系统能力**:SystemCapability.Location.Location.Core
L
liu-binjun 已提交
2103

L
liu-binjun 已提交
2104
**系统API**:此接口为系统接口。
L
liu-binjun 已提交
2105

L
liu-binjun 已提交
2106
**参数**
L
liu-binjun 已提交
2107

L
liu-binjun 已提交
2108 2109 2110
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | config |  [LocationMockConfig](#locationmockconfig) | 是 | 指示位置模拟的配置参数,包含模拟位置上报的时间间隔和模拟位置数组。 |
L
liu-binjun 已提交
2111

L
liu-binjun 已提交
2112
**错误码**
L
liu-binjun 已提交
2113

L
liu-binjun 已提交
2114
以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)
L
liu-binjun 已提交
2115

L
liu-binjun 已提交
2116 2117 2118 2119
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.|
L
liu-binjun 已提交
2120

L
liu-binjun 已提交
2121
**示例**
L
liu-binjun 已提交
2122

L
liu-binjun 已提交
2123 2124
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
2125 2126
  import BusinessError from "@ohos.base";
  let locations:Array<geoLocationManager.Location> = [
L
liu-binjun 已提交
2127 2128 2129 2130 2131 2132
      {"latitude": 30.12, "longitude": 120.11, "altitude": 123, "accuracy": 1, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 1000000000, "additionSize": 0, "isFromMock": true},
      {"latitude": 31.13, "longitude": 121.11, "altitude": 123, "accuracy": 2, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 2000000000, "additionSize": 0, "isFromMock": true},
      {"latitude": 32.14, "longitude": 122.11, "altitude": 123, "accuracy": 3, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 3000000000, "additionSize": 0, "isFromMock": true},
      {"latitude": 33.15, "longitude": 123.11, "altitude": 123, "accuracy": 4, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 4000000000, "additionSize": 0, "isFromMock": true},
      {"latitude": 34.16, "longitude": 124.11, "altitude": 123, "accuracy": 5, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 5000000000, "additionSize": 0, "isFromMock": true}
  ];
L
liu-xinbing 已提交
2133
  let config:geoLocationManager.LocationMockConfig = {"timeInterval": 5, "locations": locations};
L
liu-binjun 已提交
2134 2135 2136 2137
  try {
      geoLocationManager.enableLocationMock();
      geoLocationManager.setMockedLocations(config);
  } catch (err) {
L
liu-xinbing 已提交
2138
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
2139 2140
  }
  ```
L
liu-binjun 已提交
2141 2142


L
liu-binjun 已提交
2143
## geoLocationManager.enableReverseGeocodingMock
L
liu-binjun 已提交
2144

L
liu-binjun 已提交
2145 2146 2147
enableReverseGeocodingMock(): void;

使能逆地理编码模拟功能。
L
liu-binjun 已提交
2148 2149 2150

**系统能力**:SystemCapability.Location.Location.Core

L
liu-binjun 已提交
2151
**系统API**:此接口为系统接口。
L
liu-binjun 已提交
2152

L
liu-binjun 已提交
2153
**错误码**
L
liu-binjun 已提交
2154

L
liu-binjun 已提交
2155
以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)
L
liu-binjun 已提交
2156

L
liu-binjun 已提交
2157 2158 2159
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
2160

L
liu-binjun 已提交
2161
**示例**
L
liu-binjun 已提交
2162

L
liu-binjun 已提交
2163 2164
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
2165
  import BusinessError from "@ohos.base";
L
liu-binjun 已提交
2166 2167 2168
  try {
      geoLocationManager.enableReverseGeocodingMock();
  } catch (err) {
L
liu-xinbing 已提交
2169
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
2170 2171
  }
  ```
L
liu-binjun 已提交
2172 2173


L
liu-binjun 已提交
2174
## geoLocationManager.disableReverseGeocodingMock
L
liu-binjun 已提交
2175

L
liu-binjun 已提交
2176
disableReverseGeocodingMock(): void;
L
liu-binjun 已提交
2177

L
liu-binjun 已提交
2178
去使能逆地理编码模拟功能。
L
liu-binjun 已提交
2179

L
liu-binjun 已提交
2180
**系统能力**:SystemCapability.Location.Location.Core
L
liu-binjun 已提交
2181

L
liu-binjun 已提交
2182
**系统API**:此接口为系统接口。
L
liu-binjun 已提交
2183

L
liu-binjun 已提交
2184
**错误码**
L
liu-binjun 已提交
2185

L
liu-binjun 已提交
2186
以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)
L
liu-binjun 已提交
2187

L
liu-binjun 已提交
2188 2189 2190
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
2191

L
liu-binjun 已提交
2192
**示例**
L
liu-binjun 已提交
2193

L
liu-binjun 已提交
2194 2195
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
2196
  import BusinessError from "@ohos.base";
L
liu-binjun 已提交
2197 2198 2199
  try {
      geoLocationManager.disableReverseGeocodingMock();
  } catch (err) {
L
liu-xinbing 已提交
2200
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
2201 2202
  }
  ```
L
liu-binjun 已提交
2203 2204


L
liu-binjun 已提交
2205
## geoLocationManager.setReverseGeocodingMockInfo
L
liu-binjun 已提交
2206

L
liu-binjun 已提交
2207
setReverseGeocodingMockInfo(mockInfos: Array&lt;ReverseGeocodingMockInfo&gt;): void;
L
liu-binjun 已提交
2208

L
liu-binjun 已提交
2209
设置逆地理编码模拟功能的配置信息,包含了位置和地名的对应关系,后续进行逆地理编码查询时如果位置信息位于配置信息中,就返回对应的地名。
L
liu-binjun 已提交
2210

2211
该接口需要在调用[geoLocationManager.enableReverseGeocodingMock](#geolocationmanagerenablereversegeocodingmock)之后才能调用。
L
liu-binjun 已提交
2212

L
liu-binjun 已提交
2213
**系统能力**:SystemCapability.Location.Location.Core
L
liu-binjun 已提交
2214

L
liu-binjun 已提交
2215
**系统API**:此接口为系统接口。
L
liu-binjun 已提交
2216

L
liu-binjun 已提交
2217
**参数**
L
liu-binjun 已提交
2218

L
liu-binjun 已提交
2219 2220 2221
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | mockInfos | Array&lt;[ReverseGeocodingMockInfo](#reversegeocodingmockinfo)&gt; | 是 | 指示逆地理编码模拟功能的配置参数数组。逆地理编码模拟功能的配置参数包含了一个位置和一个地名。 |
L
liu-binjun 已提交
2222

L
liu-binjun 已提交
2223
**错误码**
L
liu-binjun 已提交
2224

L
liu-binjun 已提交
2225
以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)
L
liu-binjun 已提交
2226

L
liu-binjun 已提交
2227 2228 2229
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
2230

L
liu-binjun 已提交
2231
**示例**
L
liu-binjun 已提交
2232

L
liu-binjun 已提交
2233 2234
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
2235 2236 2237 2238 2239 2240 2241
  import BusinessError from "@ohos.base";
  let mockInfos:Array<geoLocationManager.ReverseGeocodingMockInfo> = [
      {"location": {"locale": "zh", "latitude": 30.12, "longitude": 120.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 30.12, "longitude": 120.11, "isFromMock": true}},
      {"location": {"locale": "zh", "latitude": 31.12, "longitude": 121.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 31.12, "longitude": 121.11, "isFromMock": true}},
      {"location": {"locale": "zh", "latitude": 32.12, "longitude": 122.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 32.12, "longitude": 122.11, "isFromMock": true}},
      {"location": {"locale": "zh", "latitude": 33.12, "longitude": 123.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 33.12, "longitude": 123.11, "isFromMock": true}},
      {"location": {"locale": "zh", "latitude": 34.12, "longitude": 124.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 34.12, "longitude": 124.11, "isFromMock": true}},
L
liu-binjun 已提交
2242 2243 2244 2245 2246
  ];
  try {
      geoLocationManager.enableReverseGeocodingMock();
      geoLocationManager.setReverseGeocodingMockInfo(mockInfos);
  } catch (err) {
L
liu-xinbing 已提交
2247
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
2248 2249
  }
  ```
L
liu-binjun 已提交
2250 2251


L
liu-binjun 已提交
2252
## geoLocationManager.isLocationPrivacyConfirmed
L
liu-binjun 已提交
2253

L
liu-binjun 已提交
2254
isLocationPrivacyConfirmed(type: LocationPrivacyType): boolean;
L
liu-binjun 已提交
2255

L
liu-binjun 已提交
2256
查询用户是否同意定位服务隐私申明,是否同意启用定位服务。只有系统应用才能调用。
L
liu-binjun 已提交
2257

L
liu-binjun 已提交
2258
**系统API**:此接口为系统接口。
L
liu-binjun 已提交
2259

L
liu-binjun 已提交
2260
**系统能力**:SystemCapability.Location.Location.Core
L
liu-binjun 已提交
2261

L
liu-binjun 已提交
2262
**参数**
L
liu-binjun 已提交
2263

L
liu-binjun 已提交
2264 2265 2266
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type |  [LocationPrivacyType](#locationprivacytype)| 是 | 指定隐私申明场景,例如开机向导中的隐私申明、开启网络定位功能时弹出的隐私申明等。 |
L
liu-binjun 已提交
2267

L
liu-binjun 已提交
2268
**返回值**
L
liu-binjun 已提交
2269

L
liu-binjun 已提交
2270 2271 2272
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | boolean  | boolean | NA | 表示用户是否同意定位服务隐私申明。 |
L
liu-binjun 已提交
2273

L
liu-binjun 已提交
2274
**错误码**
L
liu-binjun 已提交
2275

L
liu-binjun 已提交
2276
以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)
L
liu-binjun 已提交
2277

L
liu-binjun 已提交
2278 2279 2280
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
2281

L
liu-binjun 已提交
2282
**示例**
L
liu-binjun 已提交
2283

L
liu-binjun 已提交
2284 2285
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
2286
  import BusinessError from "@ohos.base";
L
liu-binjun 已提交
2287 2288 2289
  try {
      let isConfirmed = geoLocationManager.isLocationPrivacyConfirmed(1);
  } catch (err) {
L
liu-xinbing 已提交
2290
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
2291 2292
  }
  ```
L
liu-binjun 已提交
2293 2294


L
liu-binjun 已提交
2295
## geoLocationManager.setLocationPrivacyConfirmStatus
L
liu-binjun 已提交
2296

L
liu-binjun 已提交
2297
setLocationPrivacyConfirmStatus(type: LocationPrivacyType, isConfirmed: boolean): void;
L
liu-binjun 已提交
2298

L
liu-binjun 已提交
2299
设置用户勾选定位服务隐私申明的状态,记录用户是否同意启用定位服务。只有系统应用才能调用。
L
liu-binjun 已提交
2300

L
liu-binjun 已提交
2301
**系统API**:此接口为系统接口。
L
liu-binjun 已提交
2302 2303

**需要权限**:ohos.permission.MANAGE_SECURE_SETTINGS
L
liu-binjun 已提交
2304 2305 2306

**系统能力**:SystemCapability.Location.Location.Core

L
liu-binjun 已提交
2307
**参数**
L
liu-binjun 已提交
2308

L
liu-binjun 已提交
2309 2310 2311 2312
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | [LocationPrivacyType](#locationprivacytype) | 是 | 指定隐私申明场景,例如开机向导中的隐私申明、开启网络定位功能时弹出的隐私申明等。 |
  | isConfirmed | boolean | 是 | 表示用户是否同意定位服务隐私申明。 |
L
liu-binjun 已提交
2313

L
liu-binjun 已提交
2314
**错误码**
L
liu-binjun 已提交
2315

L
liu-binjun 已提交
2316
以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)
L
liu-binjun 已提交
2317

L
liu-binjun 已提交
2318 2319 2320
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
2321

L
liu-binjun 已提交
2322 2323 2324 2325
**示例**

  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
2326
  import BusinessError from "@ohos.base";
L
liu-binjun 已提交
2327 2328 2329
  try {
      geoLocationManager.setLocationPrivacyConfirmStatus(1, true);
  } catch (err) {
L
liu-xinbing 已提交
2330
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
2331 2332
  }
  ```
L
liu-binjun 已提交
2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370


## geoLocationManager.getLocatingRequiredData<sup>10+</sup>

getLocatingRequiredData(config: LocatingRequiredDataConfig): Promise&lt;Array&lt;LocatingRequiredData&gt;&gt;;

单次获取定位业务所需数据,包含WiFi蓝牙扫描信息,使用Promise方式异步返回结果。

**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION

**系统能力**:SystemCapability.Location.Location.Core

**系统API**:此接口为系统接口。

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | config | [LocatingRequiredDataConfig](#locatingrequireddataconfig10) | 是 | 表示获取定位所需数据时的配置参数。 |

**返回值**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | Promise&lt;Array&lt;[LocatingRequiredData](#locatingrequireddata10)&gt;&gt;  | [LocatingRequiredData](#locatingrequireddata10) | NA | 用来接收定位业务所需数据,包含WiFi蓝牙扫描信息。 |

**错误码**

以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301800  | Failed to start WiFi or Bluetooth scanning.                    |

**示例**

  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-xinbing 已提交
2371 2372
  import BusinessError from "@ohos.base";
  let config:geoLocationManager.LocatingRequiredDataConfig = {'type': 1, 'needStartScan': true, 'scanInterval': 10000};
L
liu-binjun 已提交
2373 2374 2375 2376
  try {
      geoLocationManager.getLocatingRequiredData(config).then((result) => {
          console.log('getLocatingRequiredData return: ' + JSON.stringify(result));
      })  
L
liu-xinbing 已提交
2377
      .catch((error:number) => {
L
liu-binjun 已提交
2378 2379 2380
          console.log('promise, getLocatingRequiredData: error=' + JSON.stringify(error));
      });
  } catch (err) {
L
liu-xinbing 已提交
2381
      console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message);
L
liu-binjun 已提交
2382 2383
  }
  ```