js-apis-geoLocationManager.md 77.9 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
| 名称 | 类型 | 可读|可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
113 114 115 116 117
| priority | [LocationRequestPriority](#locationrequestpriority) | 是 | 是 | 表示优先级信息。取值范围见[LocationRequestPriority](#locationrequestpriority)的定义。 |
| scenario | [LocationRequestScenario](#locationrequestscenario) | 是 | 是 | 表示场景信息。取值范围见[LocationRequestScenario](#locationrequestscenario)的定义。 |
| timeInterval | number | 是 | 是 | 表示上报位置信息的时间间隔,单位是秒。取值范围为大于0。 |
| distanceInterval | number | 是 | 是 | 表示上报位置信息的距离间隔。单位是米,取值范围为大于0。 |
| maxAccuracy | number | 是 | 是 | 表示精度信息。仅在精确位置功能场景下有效,模糊位置功能生效场景下该字段无意义。取值范围为大于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 131
| priority | [LocationRequestPriority](#locationrequestpriority) | 是 | 是 | 表示优先级信息。取值范围见[LocationRequestPriority](#locationrequestpriority)的定义。 |
| scenario | [LocationRequestScenario](#locationrequestscenario) | 是 | 是 | 表示场景信息。取值范围见[LocationRequestScenario](#locationrequestscenario)的定义。 |
| maxAccuracy | number | 是 | 是| 表示精度信息,单位是米。仅在精确位置功能场景下有效,模糊位置功能生效场景下该字段无意义。取值范围为大于0。 |
| 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
## LocationRequestPriority
262

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

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

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


L
liu-binjun 已提交
275
## LocationRequestScenario
L
liu-binjun 已提交
276

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

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

L
liu-binjun 已提交
281 282
| 名称 | 值 | 说明 |
| -------- | -------- | -------- |
283 284 285 286 287
| 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 已提交
288
| NO_POWER | 0x305 | 表示无功耗功场景,这种场景下不会主动触发定位,会在其他应用定位时,才给当前应用返回位置。 |
L
liu-binjun 已提交
289 290


L
liu-binjun 已提交
291
## LocationPrivacyType
292

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

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

297 298
**系统API**:此接口为系统接口,三方应用不支持调用。

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

305

L
liu-binjun 已提交
306
## CountryCodeType
307

L
liu-binjun 已提交
308
国家码来源类型。
309

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

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


L
liu-binjun 已提交
320
## geoLocationManager.on('locationChange')
321

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

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

L
liu-binjun 已提交
326 327 328 329 330
**需要权限**:ohos.permission.APPROXIMATELY_LOCATION

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

**参数:**
331 332 333

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
334 335 336
  | type | string | 是 | 设置事件类型。type为“locationChange”,表示位置变化。 |
  | request |  [LocationRequest](#locationrequest) | 是 | 设置位置请求参数。 |
  | callback | Callback&lt;[Location](#location)&gt; | 是 | 接收位置变化状态变化监听。 |
L
liu-binjun 已提交
337 338 339 340 341 342 343

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
344
|3301000 | Location service is unavailable.                                            |
345
|3301100 | The location switch is off.                                                 |
L
liu-binjun 已提交
346
|3301200 | Failed to obtain the geographical location.                                       |
L
liu-binjun 已提交
347 348

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

L
liu-binjun 已提交
350 351
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
352 353 354 355
  let requestInfo = {'priority': 0x203, 'scenario': 0x300, 'timeInterval': 0, 'distanceInterval': 0, 'maxAccuracy': 0};
  let locationChange = (location) => {
      console.log('locationChanger: data: ' + JSON.stringify(location));
  };
356
  try {
L
liu-binjun 已提交
357
      geoLocationManager.on('locationChange', requestInfo, locationChange);
358 359 360
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
361
  
L
liu-binjun 已提交
362 363 364
  ```


L
liu-binjun 已提交
365
## geoLocationManager.off('locationChange')
L
liu-binjun 已提交
366

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

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

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

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

L
liu-binjun 已提交
375
**参数:**
L
liu-binjun 已提交
376 377 378

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
379 380
  | type | string | 是 | 设置事件类型。type为“locationChange”,表示位置变化。 |
  | callback | Callback&lt;[Location](#location)&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
L
liu-binjun 已提交
381 382 383 384 385 386 387

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
388
|3301000 | Location service is unavailable.                                            |
389
|3301100 | The location switch is off.                                                 |
L
liu-binjun 已提交
390
|3301200 | Failed to obtain the geographical location.                                       |
L
liu-binjun 已提交
391 392

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

L
liu-binjun 已提交
394 395
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
396 397 398
  let requestInfo = {'priority': 0x203, 'scenario': 0x300, 'timeInterval': 0, 'distanceInterval': 0, 'maxAccuracy': 0};
  let locationChange = (location) => {
      console.log('locationChanger: data: ' + JSON.stringify(location));
399
  };
L
liu-binjun 已提交
400 401 402 403 404 405
  try {
      geoLocationManager.on('locationChange', requestInfo, locationChange);
      geoLocationManager.off('locationChange', locationChange);
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
406 407 408
  ```


L
liu-binjun 已提交
409
## geoLocationManager.on('locationEnabledChange')
L
liu-binjun 已提交
410

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

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

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

L
liu-binjun 已提交
417
**参数:**
L
liu-binjun 已提交
418

419 420
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
421 422
  | type | string | 是 | 设置事件类型。type为“locationEnabledChange”,表示位置服务状态。 |
  | callback | Callback&lt;boolean&gt; | 是 | 接收位置服务状态变化监听。 |
L
liu-binjun 已提交
423 424 425 426 427 428 429

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
430
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
431 432

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

L
liu-binjun 已提交
434 435
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
436 437 438 439 440 441 442 443
  let locationEnabledChange = (state) => {
      console.log('locationEnabledChange: ' + JSON.stringify(state));
  }
  try {
      geoLocationManager.on('locationEnabledChange', locationEnabledChange);
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
444 445 446
  ```


L
liu-binjun 已提交
447
## geoLocationManager.off('locationEnabledChange')
L
liu-binjun 已提交
448

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

L
liu-binjun 已提交
451
取消订阅位置服务状态变化。
L
liu-binjun 已提交
452 453 454 455 456 457 458

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

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
459 460
  | type | string | 是 | 设置事件类型。type为“locationEnabledChange”,表示位置服务状态。 |
  | callback | Callback&lt;boolean&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
L
liu-binjun 已提交
461 462 463 464 465 466 467

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
468
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
469 470

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

L
liu-binjun 已提交
472 473
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
474 475
  let locationEnabledChange = (state) => {
      console.log('locationEnabledChange: state: ' + JSON.stringify(state));
476 477
  }
  try {
L
liu-binjun 已提交
478 479
      geoLocationManager.on('locationEnabledChange', locationEnabledChange);
      geoLocationManager.off('locationEnabledChange', locationEnabledChange);
480 481 482
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
483 484 485
  ```


L
liu-binjun 已提交
486
## geoLocationManager.on('cachedGnssLocationsChange')
L
liu-binjun 已提交
487

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

L
liu-binjun 已提交
490
订阅缓存GNSS定位结果上报事件。
L
liu-binjun 已提交
491

L
liu-binjun 已提交
492 493 494
**需要权限**:ohos.permission.APPROXIMATELY_LOCATION

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

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

498 499
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
500 501 502
  | type | string | 是 | 设置事件类型。type为“cachedGnssLocationsChange”,表示GNSS缓存定位结果上报。 |
  | request |  [CachedGnssLocationsRequest](#cachedgnsslocationsrequest) | 是 | GNSS缓存功能配置参数 |
  | callback | Callback&lt;boolean&gt; | 是 | 接收GNSS缓存位置上报。 |
L
liu-binjun 已提交
503 504 505 506 507 508 509 510

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
511
|3301100 | The location switch is off.                                                 |
L
liu-binjun 已提交
512
|3301200 | Failed to obtain the geographical location.                                       |
L
liu-binjun 已提交
513 514

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

L
liu-binjun 已提交
516 517
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
518 519
  let cachedLocationsCb = (locations) => {
      console.log('cachedGnssLocationsChange: locations: ' + JSON.stringify(locations));
520
  }
L
liu-binjun 已提交
521
  let requestInfo = {'reportingPeriodSec': 10, 'wakeUpCacheQueueFull': true};
522
  try {
L
liu-binjun 已提交
523
      geoLocationManager.on('cachedGnssLocationsChange', requestInfo, cachedLocationsCb);
524 525 526
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
527 528 529
  ```


L
liu-binjun 已提交
530
## geoLocationManager.off('cachedGnssLocationsChange')
L
liu-binjun 已提交
531

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

L
liu-binjun 已提交
534
取消订阅缓存GNSS定位结果上报事件。
L
liu-binjun 已提交
535

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

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

L
liu-binjun 已提交
540 541 542 543
**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
544 545
  | type | string | 是 | 设置事件类型。type为“cachedGnssLocationsChange”,表示GNSS缓存定位结果上报。 |
  | callback | Callback&lt;boolean&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
L
liu-binjun 已提交
546 547 548 549 550 551 552 553

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
554
|3301100 | The location switch is off.                                                 |
L
liu-binjun 已提交
555
|3301200 | Failed to obtain the geographical location.                                       |
L
liu-binjun 已提交
556 557

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

L
liu-binjun 已提交
559 560
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
561 562 563 564
  let cachedLocationsCb = (locations) => {
      console.log('cachedGnssLocationsChange: locations: ' + JSON.stringify(locations));
  }
  let requestInfo = {'reportingPeriodSec': 10, 'wakeUpCacheQueueFull': true};
565
  try {
L
liu-binjun 已提交
566 567
      geoLocationManager.on('cachedGnssLocationsChange', requestInfo, cachedLocationsCb);
      geoLocationManager.off('cachedGnssLocationsChange');
568 569 570 571 572 573
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
574
## geoLocationManager.on('satelliteStatusChange')
575

L
liu-binjun 已提交
576 577 578
on(type: 'satelliteStatusChange', callback: Callback&lt;SatelliteStatusInfo&gt;): void;

订阅GNSS卫星状态信息上报事件。
579 580 581

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

L
liu-binjun 已提交
582
**系统能力**:SystemCapability.Location.Location.Gnss
583 584 585 586 587

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
588 589
  | type | string | 是 | 设置事件类型。type为“satelliteStatusChange”,表示订阅GNSS卫星状态信息上报。 |
  | callback | Callback&lt;[SatelliteStatusInfo](#satellitestatusinfo)&gt; | 是 | 接收GNSS卫星状态信息上报。 |
590 591 592 593 594 595 596 597 598 599 600

**错误码**

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

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

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

602 603
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
604 605 606
  let gnssStatusCb = (satelliteStatusInfo) => {
      console.log('satelliteStatusChange: ' + JSON.stringify(satelliteStatusInfo));
  }
607 608

  try {
L
liu-binjun 已提交
609
      geoLocationManager.on('satelliteStatusChange', gnssStatusCb);
610 611 612 613 614 615
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
616
## geoLocationManager.off('satelliteStatusChange')
617

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

取消订阅GNSS卫星状态信息上报事件。
621 622 623

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

L
liu-binjun 已提交
624
**系统能力**:SystemCapability.Location.Location.Gnss
625 626 627 628 629

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
630 631
  | type | string | 是 | 设置事件类型。type为“satelliteStatusChange”,表示订阅GNSS卫星状态信息上报。 |
  | callback | Callback&lt;[SatelliteStatusInfo](#satellitestatusinfo)&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
632 633 634 635 636 637 638 639 640

**错误码**

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

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

642 643

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

645 646
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
647 648 649
  let gnssStatusCb = (satelliteStatusInfo) => {
      console.log('satelliteStatusChange: ' + JSON.stringify(satelliteStatusInfo));
  }
650
  try {
L
liu-binjun 已提交
651 652
      geoLocationManager.on('satelliteStatusChange', gnssStatusCb);
      geoLocationManager.off('satelliteStatusChange', gnssStatusCb);
653 654 655 656 657 658
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
659
## geoLocationManager.on('nmeaMessage')
660

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

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

L
liu-binjun 已提交
665
**需要权限**:ohos.permission.LOCATION and ohos.permission.APPROXIMATELY_LOCATION
666

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

L
liu-binjun 已提交
669
**参数**
670 671 672

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
673 674
  | type | string | 是 | 设置事件类型。type为“nmeaMessage”,表示订阅GNSS&nbsp;NMEA信息上报。 |
  | callback | Callback&lt;string&gt; | 是 | 接收GNSS&nbsp;NMEA信息上报。 |
675 676 677 678 679 680 681

**错误码**

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

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

685 686

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

688 689
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
690 691 692 693
  let nmeaCb = (str) => {
      console.log('nmeaMessage: ' + JSON.stringify(str));
  }

694
  try {
L
liu-binjun 已提交
695
      geoLocationManager.on('nmeaMessage', nmeaCb );
696 697 698 699 700 701
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
702
## geoLocationManager.off('nmeaMessage')
703

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

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

L
liu-binjun 已提交
708
**需要权限**:ohos.permission.LOCATION and ohos.permission.APPROXIMATELY_LOCATION
709

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

**参数**
713 714 715

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

**错误码**

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

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

728 729

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

731 732
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
733 734 735 736
  let nmeaCb = (str) => {
      console.log('nmeaMessage: ' + JSON.stringify(str));
  }

737
  try {
L
liu-binjun 已提交
738 739
      geoLocationManager.on('nmeaMessage', nmeaCb);
      geoLocationManager.off('nmeaMessage', nmeaCb);
740 741 742 743 744 745
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
746
## geoLocationManager.on('gnssFenceStatusChange')
747

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

L
liu-binjun 已提交
750
添加一个围栏,并订阅地理围栏事件。
751 752 753

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

L
liu-binjun 已提交
754
**系统能力**:SystemCapability.Location.Location.Geofence
755 756 757 758 759

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
760 761
  | type | string | 是 | 设置事件类型。type为“gnssFenceStatusChange”,表示订阅围栏事件上报。 |
  | request |  [GeofenceRequest](#geofencerequest) | 是 | 围栏的配置参数。 |
762
  | want | [WantAgent](js-apis-app-ability-wantAgent.md) | 是 | 用于接收地理围栏事件上报(进出围栏)。 |
763 764 765 766 767 768 769

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
770 771 772
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.                                                 |
|3301600 | Failed to operate the geofence.                                     |
773 774

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

776 777
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
778
  import wantAgent from '@ohos.app.ability.wantAgent';
L
liu-binjun 已提交
779 780 781 782 783 784
  
  let wantAgentInfo = {
      wants: [
          {
              bundleName: "com.example.myapplication",
              abilityName: "EntryAbility",
Z
fix doc  
z30025928 已提交
785
              action: "action1"
786
          }
L
liu-binjun 已提交
787 788 789
      ],
      operationType: wantAgent.OperationType.START_ABILITY,
      requestCode: 0,
Z
fix doc  
z30025928 已提交
790
      wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
L
liu-binjun 已提交
791 792 793 794 795 796 797 798 799 800
  };
  
  wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
    let requestInfo = {'priority': 0x201, 'scenario': 0x301, "geofence": {"latitude": 121, "longitude": 26, "radius": 100, "expiration": 10000}};
    try {
        geoLocationManager.on('gnssFenceStatusChange', requestInfo, wantAgentObj);
    } catch (err) {
        console.error("errCode:" + err.code + ",errMessage:" + err.message);
    }
  });
801 802 803
  ```


L
liu-binjun 已提交
804
## geoLocationManager.off('gnssFenceStatusChange')
805

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

L
liu-binjun 已提交
808
删除一个围栏,并取消订阅该围栏事件。
809 810 811

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

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

L
liu-binjun 已提交
814
**参数**
815 816 817

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
818 819
  | type | string | 是 | 设置事件类型。type为“gnssFenceStatusChange”,表示订阅围栏事件上报。 |
  | request | [GeofenceRequest](#geofencerequest) | 是 | 围栏的配置参数。 |
820
  | want | [WantAgent](js-apis-app-ability-wantAgent.md) | 是 | 用于接收地理围栏事件上报(进出围栏)。 |
821 822 823 824 825 826 827

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
828 829 830
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.                                                 |
|3301600 | Failed to operate the geofence.                                     |
831 832

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

834 835
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
836
  import wantAgent from '@ohos.app.ability.wantAgent';
L
liu-binjun 已提交
837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860
  
  let wantAgentInfo = {
      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) => {
    let requestInfo = {'priority': 0x201, 'scenario': 0x301, "geofence": {"latitude": 121, "longitude": 26, "radius": 100, "expiration": 10000}};
    try {
        geoLocationManager.on('gnssFenceStatusChange', requestInfo, wantAgentObj);
        geoLocationManager.off('gnssFenceStatusChange', requestInfo, wantAgentObj);
    } catch (err) {
        console.error("errCode:" + err.code + ",errMessage:" + err.message);
    }
  });
  ```
861 862


L
liu-binjun 已提交
863
## geoLocationManager.on('countryCodeChange')
864

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

L
liu-binjun 已提交
867
订阅国家码信息变化事件。
868 869 870 871 872 873 874

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

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
875 876
  | type | string | 是 | 设置事件类型。type为“countryCodeChange”,表示订阅国家码信息变化事件。 |
  | callback | Callback&lt;[CountryCode](#countrycode)&gt; | 是 | 接收国家码信息上报。 |
877 878 879 880 881 882 883 884

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
885 886 887
|3301100 | The location switch is off.                                                 |
|3301500 | Failed to query the area information.                                       |

888 889

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

891 892
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
893 894 895 896
  let callback = (code) => {
      console.log('countryCodeChange: ' + JSON.stringify(code));
  }

897
  try {
L
liu-binjun 已提交
898
      geoLocationManager.on('countryCodeChange', callback);
899 900 901 902 903 904
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
905
## geoLocationManager.off('countryCodeChange')
906

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

L
liu-binjun 已提交
909
取消订阅国家码变化事件。
910 911 912

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

L
liu-binjun 已提交
913
**参数**
914 915 916

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
917 918
  | type | string | 是 | 设置事件类型。type为“countryCodeChange”,表示取消订阅国家码信息变化事件。 |
  | callback | Callback&lt;[CountryCode](#countrycode)&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
919 920 921 922 923 924 925 926

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
927 928
|3301100 | The location switch is off.                                                 |
|3301500 | Failed to query the area information.                                       |
929 930

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

932 933
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
934 935 936 937
  let callback = (code) => {
      console.log('countryCodeChange: ' + JSON.stringify(code));
  }

938
  try {
L
liu-binjun 已提交
939 940
      geoLocationManager.on('countryCodeChange', callback);
      geoLocationManager.off('countryCodeChange', callback);
941 942 943 944 945 946 947
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```



L
liu-binjun 已提交
948
## geoLocationManager.getCurrentLocation
949

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

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

**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
955 956 957

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

L
liu-binjun 已提交
958 959 960 961 962 963 964
**参数**

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

965 966 967 968 969 970 971
**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
972 973
|3301100 | The location switch is off.                                                 |
|3301200 | Failed to obtain the geographical location.  |
974 975

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

977 978
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
979 980 981 982 983 984 985 986 987 988
  let requestInfo = {'priority': 0x203, 'scenario': 0x300,'maxAccuracy': 0};
  let locationChange = (err, location) => {
      if (err) {
          console.log('locationChanger: err=' + JSON.stringify(err));
      }
      if (location) {
          console.log('locationChanger: location=' + JSON.stringify(location));
      }
  };

989
  try {
L
liu-binjun 已提交
990
      geoLocationManager.getCurrentLocation(requestInfo, locationChange);
991 992 993 994 995
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

L
liu-binjun 已提交
996
## geoLocationManager.getCurrentLocation
997

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

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

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

L
liu-binjun 已提交
1004
**系统能力**:SystemCapability.Location.Location.Core
1005 1006 1007 1008 1009

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1010
  | callback | AsyncCallback&lt;[Location](#location)&gt; | 是 | 用来接收位置信息的回调。 |
1011 1012 1013 1014 1015 1016 1017

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1018 1019 1020
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.                                                 |
|3301200 | Failed to obtain the geographical location.  |
1021 1022

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

1024 1025
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
1026 1027 1028 1029 1030 1031 1032 1033 1034
  let locationChange = (err, location) => {
      if (err) {
          console.log('locationChanger: err=' + JSON.stringify(err));
      }
      if (location) {
          console.log('locationChanger: location=' + JSON.stringify(location));
      }
  };

1035
  try {
L
liu-binjun 已提交
1036
      geoLocationManager.getCurrentLocation(locationChange);
1037 1038 1039 1040 1041
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

L
liu-binjun 已提交
1042
## geoLocationManager.getCurrentLocation
1043

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

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

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

L
liu-binjun 已提交
1050
**系统能力**:SystemCapability.Location.Location.Core
1051 1052 1053 1054 1055

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1056
  | request | [CurrentLocationRequest](#currentlocationrequest) | 否 | 设置位置请求参数。 |
1057 1058 1059 1060 1061

**返回值**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1062
  | Promise&lt;[Location](#location)&gt;  | [Location](#location) | NA | 返回位置信息。 |
1063 1064 1065 1066 1067 1068 1069

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1070 1071 1072
|3301000 | Location service is unavailable.                                            |
|3301100 | The location switch is off.                                                 |
|3301200 | Failed to obtain the geographical location.  |
1073 1074

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

1076 1077
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
1078
  let requestInfo = {'priority': 0x203, 'scenario': 0x300,'maxAccuracy': 0};
1079
  try {
L
liu-binjun 已提交
1080 1081 1082
      geoLocationManager.getCurrentLocation(requestInfo).then((result) => {
          console.log('current location: ' + JSON.stringify(result));
      })  
1083
      .catch((error) => {
L
liu-binjun 已提交
1084
          console.log('promise, getCurrentLocation: error=' + JSON.stringify(error));
1085 1086 1087 1088 1089 1090 1091
      });
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
1092
## geoLocationManager.getLastLocation
1093

L
liu-binjun 已提交
1094
getLastLocation(): Location
1095

L
liu-binjun 已提交
1096
获取上一次位置。
1097

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

L
liu-binjun 已提交
1100 1101 1102
**系统能力**:SystemCapability.Location.Location.Core

**返回值**
1103 1104 1105

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1106
  | Location  | [Location](#location) | NA | 位置信息。 |
1107 1108 1109 1110 1111 1112 1113

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1114 1115 1116
|3301000 | Location service is unavailable.  |
|3301100 | The location switch is off.  |
|3301200 |Failed to obtain the geographical location.  |
1117 1118

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

1120 1121 1122
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
  try {
L
liu-binjun 已提交
1123
      let location = geoLocationManager.getLastLocation();
1124 1125 1126 1127 1128 1129
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
1130
## geoLocationManager.isLocationEnabled
1131

L
liu-binjun 已提交
1132
isLocationEnabled(): boolean
1133

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

L
liu-binjun 已提交
1136
**系统能力**:SystemCapability.Location.Location.Core
1137 1138 1139 1140 1141

**返回值**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1142
  | boolean  | boolean | NA | 位置服务是否已经使能。 |
1143 1144 1145 1146 1147 1148 1149

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1150
|3301000 | Location service is unavailable.  |
1151 1152

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

1154 1155 1156
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
  try {
L
liu-binjun 已提交
1157
      let locationEnabled = geoLocationManager.isLocationEnabled();
1158 1159 1160 1161 1162 1163
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
1164
## geoLocationManager.enableLocation
1165

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

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

L
liu-binjun 已提交
1170 1171 1172 1173 1174 1175 1176
**系统API**:此接口为系统接口,三方应用不支持调用。

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

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

**参数**
1177 1178 1179

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1180
  | callback | AsyncCallback&lt;void&gt; | 是 | 用来接收错误码信息。 |
1181 1182 1183 1184 1185 1186 1187

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1188
|3301000 | Location service is unavailable.                                            |
1189 1190

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

1192 1193 1194
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
  try {
L
liu-binjun 已提交
1195 1196 1197 1198 1199
      geoLocationManager.enableLocation((err, data) => {
          if (err) {
              console.log('enableLocation: err=' + JSON.stringify(err));
          }
      });
1200 1201 1202 1203 1204 1205
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
1206
## geoLocationManager.enableLocation
1207

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

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

L
liu-binjun 已提交
1212
**系统API**:此接口为系统接口,三方应用不支持调用。
1213

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

L
liu-binjun 已提交
1216 1217 1218
**系统能力**:SystemCapability.Location.Location.Core

**返回值**
1219 1220 1221

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1222
  | Promise&lt;void&gt;  | void | NA | 返回错误码信息。 |
1223 1224 1225 1226 1227 1228 1229

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1230
|3301000 | Location service is unavailable.                                            |
1231 1232

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

1234 1235 1236
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
  try {
L
liu-binjun 已提交
1237 1238 1239 1240 1241
      geoLocationManager.enableLocation().then((result) => {
          console.log('promise, enableLocation succeed');
      })
      .catch((error) => {
          console.log('promise, enableLocation: error=' + JSON.stringify(error));
1242 1243 1244 1245 1246 1247
      });
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```

L
liu-binjun 已提交
1248
## geoLocationManager.disableLocation
1249

L
liu-binjun 已提交
1250
disableLocation(): void;
1251

L
liu-binjun 已提交
1252
关闭位置服务。
1253

L
liu-binjun 已提交
1254
**系统API**:此接口为系统接口,三方应用不支持调用。
1255

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

L
liu-binjun 已提交
1258
**系统能力**:SystemCapability.Location.Location.Core
1259 1260 1261 1262 1263 1264 1265

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1266
|3301000 | Location service is unavailable.                                            |
1267 1268

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

1270 1271 1272
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
  try {
L
liu-binjun 已提交
1273
      geoLocationManager.disableLocation();
1274 1275 1276 1277 1278 1279 1280
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```



L
liu-binjun 已提交
1281
## geoLocationManager.getAddressesFromLocation
1282

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

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

L
liu-binjun 已提交
1287
**系统能力**:SystemCapability.Location.Location.Geocoder
1288 1289 1290 1291 1292

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1293 1294
  | request | [ReverseGeoCodeRequest](#reversegeocoderequest) | 是 | 设置逆地理编码请求的相关参数。 |
  | callback | AsyncCallback&lt;Array&lt;[GeoAddress](#geoaddress)&gt;&gt; | 是 | 接收逆地理编码结果的回调函数。 |
1295 1296 1297 1298 1299 1300 1301 1302

**错误码**

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

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

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

1307 1308
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
1309
  let reverseGeocodeRequest = {"latitude": 31.12, "longitude": 121.11, "maxItems": 1};
1310
  try {
L
liu-binjun 已提交
1311
      geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest, (err, data) => {
1312
          if (err) {
L
liu-binjun 已提交
1313 1314 1315 1316
              console.log('getAddressesFromLocation: err=' + JSON.stringify(err));
          }
          if (data) {
              console.log('getAddressesFromLocation: data=' + JSON.stringify(data));
1317 1318 1319 1320 1321 1322 1323 1324
          }
      });
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
1325
## geoLocationManager.getAddressesFromLocation
1326

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

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

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

L
liu-binjun 已提交
1333 1334 1335 1336 1337
**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | request | [ReverseGeoCodeRequest](#reversegeocoderequest) | 是 | 设置逆地理编码请求的相关参数。 |
1338 1339 1340 1341 1342

**返回值**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1343
  | Promise&lt;Array&lt;[GeoAddress](#geoaddress)&gt;&gt;  | Array&lt;[GeoAddress](#geoaddress)&gt; | NA | 返回地理描述信息。 |
1344 1345 1346 1347 1348 1349 1350 1351

**错误码**

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

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

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

1356 1357
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
1358
  let reverseGeocodeRequest = {"latitude": 31.12, "longitude": 121.11, "maxItems": 1};
1359
  try {
L
liu-binjun 已提交
1360 1361
      geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest).then((data) => {
          console.log('getAddressesFromLocation: ' + JSON.stringify(data));
1362 1363
      })
      .catch((error) => {
L
liu-binjun 已提交
1364
          console.log('promise, getAddressesFromLocation: error=' + JSON.stringify(error));
1365 1366 1367 1368 1369 1370 1371
      });
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
1372
## geoLocationManager.getAddressesFromLocationName
1373

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

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

L
liu-binjun 已提交
1378
**系统能力**:SystemCapability.Location.Location.Geocoder
1379 1380

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

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

1387
**错误码**
L
liu-binjun 已提交
1388

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

1391 1392 1393
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.   |
L
liu-binjun 已提交
1394
|3301400 | Geocoding query failed.   |
1395 1396

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

1398 1399
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
1400
  let geocodeRequest = {"description": "上海市浦东新区xx路xx号", "maxItems": 1};
1401
  try {
L
liu-binjun 已提交
1402
      geoLocationManager.getAddressesFromLocationName(geocodeRequest, (err, data) => {
1403
          if (err) {
L
liu-binjun 已提交
1404 1405 1406 1407
              console.log('getAddressesFromLocationName: err=' + JSON.stringify(err));
          }
          if (data) {
              console.log('getAddressesFromLocationName: data=' + JSON.stringify(data));
1408 1409 1410 1411 1412 1413 1414 1415
          }
      });
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
1416
## geoLocationManager.getAddressesFromLocationName
1417

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

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

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

1424 1425 1426 1427
**参数**

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

L
liu-binjun 已提交
1430 1431
**返回值**

1432 1433
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1434
  | Promise&lt;Array&lt;[GeoAddress](#geoaddress)&gt;&gt;  | Array&lt;[GeoAddress](#geoaddress)&gt; | NA | 返回地理编码查询结果。 |
L
liu-binjun 已提交
1435 1436 1437 1438 1439 1440 1441

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1442 1443
|3301000 | Location service is unavailable.   |
|3301400 | Geocoding query failed.   |
L
liu-binjun 已提交
1444 1445

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

L
liu-binjun 已提交
1447 1448
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
1449
  let geocodeRequest = {"description": "上海市浦东新区xx路xx号", "maxItems": 1};
1450
  try {
L
liu-binjun 已提交
1451 1452 1453
      geoLocationManager.getAddressesFromLocationName(geocodeRequest).then((result) => {
          console.log('getAddressesFromLocationName: ' + JSON.stringify(result));
      })
1454
      .catch((error) => {
L
liu-binjun 已提交
1455
          console.log('promise, getAddressesFromLocationName: error=' + JSON.stringify(error));
1456 1457 1458 1459
      });
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
1460 1461
  ```

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

L
liu-binjun 已提交
1464
isGeocoderAvailable(): boolean;
L
liu-binjun 已提交
1465

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

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

L
liu-binjun 已提交
1470
**返回值**
1471 1472 1473

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

L
liu-binjun 已提交
1476 1477 1478 1479 1480 1481
**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1482
|3301000 | Location service is unavailable.   |
L
liu-binjun 已提交
1483 1484

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

L
liu-binjun 已提交
1486 1487
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
1488
  try {
L
liu-binjun 已提交
1489
      let isAvailable = geoLocationManager.isGeocoderAvailable();
1490 1491 1492
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
1493 1494 1495
  ```


L
liu-binjun 已提交
1496
## geoLocationManager.getCachedGnssLocationsSize
L
liu-binjun 已提交
1497

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

L
liu-binjun 已提交
1500
获取GNSS芯片缓存位置的个数。
1501

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

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

**参数**
1507 1508 1509

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

L
liu-binjun 已提交
1512 1513 1514 1515 1516 1517
**错误码**

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

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

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

L
liu-binjun 已提交
1523 1524
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
1525
  try {
L
liu-binjun 已提交
1526 1527 1528 1529 1530 1531 1532
      geoLocationManager.getCachedGnssLocationsSize((err, size) => {
          if (err) {
              console.log('getCachedGnssLocationsSize: err=' + JSON.stringify(err));
          }
          if (size) {
              console.log('getCachedGnssLocationsSize: size=' + JSON.stringify(size));
          }
1533 1534 1535 1536
      });
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
1537 1538 1539
  ```


L
liu-binjun 已提交
1540
## geoLocationManager.getCachedGnssLocationsSize
L
liu-binjun 已提交
1541

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

L
liu-binjun 已提交
1544
获取GNSS芯片缓存位置的个数。
L
liu-binjun 已提交
1545

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

L
liu-binjun 已提交
1548 1549 1550 1551 1552 1553 1554
**系统能力**:SystemCapability.Location.Location.Gnss

**返回值**

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

1556
**错误码**
L
liu-binjun 已提交
1557

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

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

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

1567 1568 1569
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
  try {
L
liu-binjun 已提交
1570 1571 1572 1573 1574 1575
      geoLocationManager.getCachedGnssLocationsSize().then((result) => {
          console.log('promise, getCachedGnssLocationsSize: ' + JSON.stringify(result));
      }) 
      .catch((error) => {
          console.log('promise, getCachedGnssLocationsSize: error=' + JSON.stringify(error));
      });
1576 1577 1578 1579 1580 1581
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
1582
## geoLocationManager.flushCachedGnssLocations
1583

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

L
liu-binjun 已提交
1586
读取并清空GNSS芯片所有缓存位置。
1587

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

L
liu-binjun 已提交
1590 1591 1592 1593 1594 1595 1596
**系统能力**:SystemCapability.Location.Location.Gnss

**参数**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | callback | AsyncCallback&lt;void&gt; | 是 | 用来接收错误码信息。 |
L
liu-binjun 已提交
1597 1598 1599 1600 1601 1602 1603

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1604 1605 1606
|3301000 | Location service is unavailable.   |
|3301100 | The location switch is off.   |
|3301200 | Failed to obtain the geographical location.   |
L
liu-binjun 已提交
1607 1608

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

L
liu-binjun 已提交
1610 1611
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
1612
  try {
L
liu-binjun 已提交
1613 1614 1615 1616 1617
      geoLocationManager.flushCachedGnssLocations((err, result) => {
          if (err) {
              console.log('flushCachedGnssLocations: err=' + JSON.stringify(err));
          }
      });
1618 1619 1620
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
1621 1622 1623
  ```


L
liu-binjun 已提交
1624
## geoLocationManager.flushCachedGnssLocations
L
liu-binjun 已提交
1625

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

L
liu-binjun 已提交
1628
读取并清空GNSS芯片所有缓存位置。
L
liu-binjun 已提交
1629

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

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

L
liu-binjun 已提交
1634
**返回值**
1635 1636 1637

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

L
liu-binjun 已提交
1640 1641 1642 1643 1644 1645
**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1646 1647 1648
|3301000 | Location service is unavailable.   |
|3301100 | The location switch is off.   |
|3301200 | Failed to obtain the geographical location.   |
L
liu-binjun 已提交
1649 1650

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

L
liu-binjun 已提交
1652 1653
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
1654
  try {
L
liu-binjun 已提交
1655 1656 1657 1658 1659 1660
      geoLocationManager.flushCachedGnssLocations().then((result) => {
          console.log('promise, flushCachedGnssLocations success');
      })
      .catch((error) => {
          console.log('promise, flushCachedGnssLocations: error=' + JSON.stringify(error));
      });
1661 1662 1663
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
1664 1665 1666
  ```


L
liu-binjun 已提交
1667
## geoLocationManager.sendCommand
L
liu-binjun 已提交
1668

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

L
liu-binjun 已提交
1671
给位置服务子系统的各个部件发送扩展命令。
L
liu-binjun 已提交
1672 1673 1674

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

L
liu-binjun 已提交
1675 1676 1677 1678 1679 1680
**参数**

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

**错误码**

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

| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
L
liu-binjun 已提交
1688
|3301000 | Location service is unavailable.   |
L
liu-binjun 已提交
1689 1690

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

L
liu-binjun 已提交
1692 1693
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
1694
  let requestInfo = {'scenario': 0x301, 'command': "command_1"};
1695
  try {
L
liu-binjun 已提交
1696 1697 1698 1699 1700
      geoLocationManager.sendCommand(requestInfo, (err, result) => {
          if (err) {
              console.log('sendCommand: err=' + JSON.stringify(err));
          }
      });
1701 1702 1703
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
1704 1705 1706
  ```


L
liu-binjun 已提交
1707
## geoLocationManager.sendCommand
L
liu-binjun 已提交
1708

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

L
liu-binjun 已提交
1711
给位置服务子系统的各个部件发送扩展命令。
L
liu-binjun 已提交
1712 1713 1714

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

L
liu-binjun 已提交
1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725
**参数**

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

**返回值**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | Promise&lt;void&gt;  | void | NA | 接收错误码。 |
L
liu-binjun 已提交
1726 1727 1728 1729 1730 1731 1732 1733 1734 1735

**错误码**

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

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

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

L
liu-binjun 已提交
1737 1738
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
L
liu-binjun 已提交
1739
  let requestInfo = {'scenario': 0x301, 'command': "command_1"};
1740
  try {
L
liu-binjun 已提交
1741 1742 1743 1744 1745 1746
      geoLocationManager.sendCommand(requestInfo).then((result) => {
          console.log('promise, sendCommand success');
      })  
      .catch((error) => {
          console.log('promise, sendCommand: error=' + JSON.stringify(error));
      });
1747 1748 1749
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
1750 1751 1752
  ```


L
liu-binjun 已提交
1753
## geoLocationManager.getCountryCode
L
liu-binjun 已提交
1754

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

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

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

1761
**参数**
1762

1763 1764
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1765
  | callback | AsyncCallback&lt;[CountryCode](#countrycode)&gt; | 是 | 用来接收国家码。 |
L
liu-binjun 已提交
1766 1767 1768 1769 1770 1771 1772 1773

**错误码**

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

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

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

L
liu-binjun 已提交
1778 1779
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
1780
  try {
L
liu-binjun 已提交
1781 1782 1783 1784 1785 1786 1787 1788
      geoLocationManager.getCountryCode((err, result) => {
          if (err) {
              console.log('getCountryCode: err=' + JSON.stringify(err));
          }
          if (result) {
              console.log('getCountryCode: result=' + JSON.stringify(result));
          }
      });
1789 1790 1791
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
1792 1793 1794
  ```


L
liu-binjun 已提交
1795
## geoLocationManager.getCountryCode
1796

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

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

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

1803
**返回值**
L
liu-binjun 已提交
1804 1805 1806

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
L
liu-binjun 已提交
1807
  | Promise&lt;[CountryCode](#countrycode)&gt; | [CountryCode](#countrycode) | NA | 用来接收国家码。 |
L
liu-binjun 已提交
1808 1809 1810 1811 1812 1813 1814 1815

**错误码**

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

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

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

L
liu-binjun 已提交
1820 1821
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
1822
  try {
L
liu-binjun 已提交
1823 1824 1825 1826 1827 1828 1829
      geoLocationManager.getCountryCode()
      .then((result) => {
          console.log('promise, getCountryCode: result=' + JSON.stringify(result));
      })
      .catch((error) => {
          console.log('promise, getCountryCode: error=' + JSON.stringify(error));
      });
1830 1831 1832 1833 1834 1835
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```


L
liu-binjun 已提交
1836
## geoLocationManager.enableLocationMock
1837

L
liu-binjun 已提交
1838
enableLocationMock(): void;
1839

L
liu-binjun 已提交
1840
使能位置模拟功能。
1841 1842 1843

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

L
liu-binjun 已提交
1844
**系统API**:此接口为系统接口,三方应用不支持调用。
1845 1846 1847 1848 1849 1850 1851 1852

**错误码**

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

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

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

1857 1858 1859
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
  try {
L
liu-binjun 已提交
1860
      geoLocationManager.enableLocationMock();
1861 1862 1863
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
L
liu-binjun 已提交
1864 1865 1866
  ```


L
liu-binjun 已提交
1867
## geoLocationManager.disableLocationMock
L
liu-binjun 已提交
1868

L
liu-binjun 已提交
1869
disableLocationMock(): void;
L
liu-binjun 已提交
1870

L
liu-binjun 已提交
1871
去使能位置模拟功能。
L
liu-binjun 已提交
1872 1873 1874

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

L
liu-binjun 已提交
1875
**系统API**:此接口为系统接口,三方应用不支持调用。
L
liu-binjun 已提交
1876

L
liu-binjun 已提交
1877
**错误码**
L
liu-binjun 已提交
1878

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

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

L
liu-binjun 已提交
1886
**示例**
L
liu-binjun 已提交
1887

L
liu-binjun 已提交
1888 1889 1890 1891 1892 1893 1894 1895
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
  try {
      geoLocationManager.disableLocationMock();
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```
L
liu-binjun 已提交
1896 1897


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

L
liu-binjun 已提交
1900
setMockedLocations(config: LocationMockConfig): void;
L
liu-binjun 已提交
1901

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

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

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

L
liu-binjun 已提交
1908
**系统API**:此接口为系统接口,三方应用不支持调用。
L
liu-binjun 已提交
1909

L
liu-binjun 已提交
1910
**参数**
L
liu-binjun 已提交
1911

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

L
liu-binjun 已提交
1916
**错误码**
L
liu-binjun 已提交
1917

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

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

L
liu-binjun 已提交
1925
**示例**
L
liu-binjun 已提交
1926

L
liu-binjun 已提交
1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
  let locations = [
      {"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}
  ];
  let config = {"timeInterval": 5, "locations": locations};
  try {
      geoLocationManager.enableLocationMock();
      geoLocationManager.setMockedLocations(config);
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```
L
liu-binjun 已提交
1944 1945


L
liu-binjun 已提交
1946
## geoLocationManager.enableReverseGeocodingMock
L
liu-binjun 已提交
1947

L
liu-binjun 已提交
1948 1949 1950
enableReverseGeocodingMock(): void;

使能逆地理编码模拟功能。
L
liu-binjun 已提交
1951 1952 1953

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

L
liu-binjun 已提交
1954
**系统API**:此接口为系统接口,三方应用不支持调用。
L
liu-binjun 已提交
1955

L
liu-binjun 已提交
1956
**错误码**
L
liu-binjun 已提交
1957

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

L
liu-binjun 已提交
1960 1961 1962
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
1963

L
liu-binjun 已提交
1964
**示例**
L
liu-binjun 已提交
1965

L
liu-binjun 已提交
1966 1967 1968 1969 1970 1971 1972 1973
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
  try {
      geoLocationManager.enableReverseGeocodingMock();
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```
L
liu-binjun 已提交
1974 1975


L
liu-binjun 已提交
1976
## geoLocationManager.disableReverseGeocodingMock
L
liu-binjun 已提交
1977

L
liu-binjun 已提交
1978
disableReverseGeocodingMock(): void;
L
liu-binjun 已提交
1979

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

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

L
liu-binjun 已提交
1984
**系统API**:此接口为系统接口,三方应用不支持调用。
L
liu-binjun 已提交
1985

L
liu-binjun 已提交
1986
**错误码**
L
liu-binjun 已提交
1987

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

L
liu-binjun 已提交
1990 1991 1992
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
1993

L
liu-binjun 已提交
1994
**示例**
L
liu-binjun 已提交
1995

L
liu-binjun 已提交
1996 1997 1998 1999 2000 2001 2002 2003
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
  try {
      geoLocationManager.disableReverseGeocodingMock();
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```
L
liu-binjun 已提交
2004 2005


L
liu-binjun 已提交
2006
## geoLocationManager.setReverseGeocodingMockInfo
L
liu-binjun 已提交
2007

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

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

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

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

L
liu-binjun 已提交
2016
**系统API**:此接口为系统接口,三方应用不支持调用。
L
liu-binjun 已提交
2017

L
liu-binjun 已提交
2018
**参数**
L
liu-binjun 已提交
2019

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

L
liu-binjun 已提交
2024
**错误码**
L
liu-binjun 已提交
2025

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

L
liu-binjun 已提交
2028 2029 2030
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
2031

L
liu-binjun 已提交
2032
**示例**
L
liu-binjun 已提交
2033

L
liu-binjun 已提交
2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049
  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
  let mockInfos = [
      {"location": {"locale": "zh", "latitude": 30.12, "longitude": 120.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 30.12, "longitude": 120.11, "maxItems": 1, "isFromMock": true}},
      {"location": {"locale": "zh", "latitude": 31.12, "longitude": 121.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 31.12, "longitude": 121.11, "maxItems": 1, "isFromMock": true}},
      {"location": {"locale": "zh", "latitude": 32.12, "longitude": 122.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 32.12, "longitude": 122.11, "maxItems": 1, "isFromMock": true}},
      {"location": {"locale": "zh", "latitude": 33.12, "longitude": 123.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 33.12, "longitude": 123.11, "maxItems": 1, "isFromMock": true}},
      {"location": {"locale": "zh", "latitude": 34.12, "longitude": 124.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 34.12, "longitude": 124.11, "maxItems": 1, "isFromMock": true}},
  ];
  try {
      geoLocationManager.enableReverseGeocodingMock();
      geoLocationManager.setReverseGeocodingMockInfo(mockInfos);
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```
L
liu-binjun 已提交
2050 2051


L
liu-binjun 已提交
2052
## geoLocationManager.isLocationPrivacyConfirmed
L
liu-binjun 已提交
2053

L
liu-binjun 已提交
2054
isLocationPrivacyConfirmed(type: LocationPrivacyType): boolean;
L
liu-binjun 已提交
2055

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

L
liu-binjun 已提交
2058
**系统API**:此接口为系统接口,三方应用不支持调用。
L
liu-binjun 已提交
2059

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

L
liu-binjun 已提交
2062
**参数**
L
liu-binjun 已提交
2063

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

L
liu-binjun 已提交
2068
**返回值**
L
liu-binjun 已提交
2069

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

L
liu-binjun 已提交
2074
**错误码**
L
liu-binjun 已提交
2075

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

L
liu-binjun 已提交
2078 2079 2080
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
|3301000 | Location service is unavailable.                                            |
L
liu-binjun 已提交
2081

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

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


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

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

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

L
liu-binjun 已提交
2100 2101 2102
**系统API**:此接口为系统接口,三方应用不支持调用。

**需要权限**:ohos.permission.MANAGE_SECURE_SETTINGS
L
liu-binjun 已提交
2103 2104 2105

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

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

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

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

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

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

L
liu-binjun 已提交
2121 2122 2123 2124 2125 2126 2127 2128 2129 2130
**示例**

  ```ts
  import geoLocationManager from '@ohos.geoLocationManager';
  try {
      geoLocationManager.setLocationPrivacyConfirmStatus(1, true);
  } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
  }
  ```