• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.geoLocationManager (位置服务)
2
3位置服务提供GNSS定位、网络定位、地理编码、逆地理编码、国家码和地理围栏等基本功能。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 申请权限
10
11应用在使用系统能力前,需要检查是否已经获取用户授权访问设备位置信息。如未获得授权,可以向用户申请需要的位置权限,申请方式请参考下文。
12
13系统提供的定位权限有:
14- ohos.permission.LOCATION
15
16- ohos.permission.APPROXIMATELY_LOCATION
17
18- ohos.permission.LOCATION_IN_BACKGROUND
19
20访问设备的位置信息,必须申请权限,并且获得用户授权。
21
22API9之前的版本,申请ohos.permission.LOCATION即可。
23
24API9及之后的版本,需要申请ohos.permission.APPROXIMATELY_LOCATION或者同时申请ohos.permission.APPROXIMATELY_LOCATIONohos.permission.LOCATION;无法单独申请ohos.permission.LOCATION25
26| 使用的API版本 | 申请位置权限 | 申请结果 | 位置的精确度 |
27| -------- | -------- | -------- | -------- |
28| 小于9 | ohos.permission.LOCATION | 成功 | 获取到精准位置,精准度在米级别。 |
29| 大于等于9 | ohos.permission.LOCATION | 失败 | 无法获取位置。 |
30| 大于等于9 | ohos.permission.APPROXIMATELY_LOCATION | 成功 | 获取到模糊位置,精确度为5公里。 |
31| 大于等于9 | ohos.permission.APPROXIMATELY_LOCATIONohos.permission.LOCATION | 成功 | 获取到精准位置,精准度在米级别。 |
32
33如果应用在后台运行时也需要访问设备位置,除需要将应用声明为允许后台运行外,还必须申请ohos.permission.LOCATION_IN_BACKGROUND权限,这样应用在切入后台之后,系统可以继续上报位置信息。
34
35开发者可以在应用配置文件中声明所需要的权限,具体可参考[授权申请指导](../../security/accesstoken-guidelines.md)。
36
37
38## 导入模块
39
40```ts
41import geoLocationManager from '@ohos.geoLocationManager';
42```
43
44
45## ReverseGeoCodeRequest
46
47逆地理编码请求接口。
48
49**系统能力**:SystemCapability.Location.Location.Geocoder
50
51| 名称 | 类型 | 可读 | 可写 | 说明 |
52| -------- | -------- | -------- | -------- | -------- |
53| locale | string | 是 | 是 | 指定位置描述信息的语言,“zh”代表中文,“en”代表英文。 |
54| latitude | number | 是 | 是 | 表示纬度信息,正值表示北纬,负值表示南纬。取值范围为-90到90。 |
55| longitude | number | 是 | 是 | 表示经度信息,正值表示东经,负值表示西经。取值范围为-180到180。 |
56| maxItems | number | 是 | 是 | 指定返回位置信息的最大个数。取值范围为大于等于0,推荐该值小于10。 |
57
58
59## GeoCodeRequest
60
61地理编码请求接口。
62
63**系统能力**:SystemCapability.Location.Location.Geocoder
64
65| 名称 | 类型 | 可读|可写 | 说明 |
66| -------- | -------- | -------- | -------- | -------- |
67| locale | string | 是 | 是 | 表示位置描述信息的语言,“zh”代表中文,“en”代表英文。 |
68| description | string | 是 | 是 | 表示位置信息描述,如“上海市浦东新区xx路xx号”。 |
69| maxItems | number | 是 | 是 | 表示返回位置信息的最大个数。取值范围为大于等于0,推荐该值小于10。 |
70| minLatitude | number | 是 | 是 | 表示最小纬度信息,与下面三个参数一起,表示一个经纬度范围。取值范围为-90到90。 |
71| minLongitude | number | 是 | 是 | 表示最小经度信息。取值范围为-180到180。 |
72| maxLatitude | number | 是 | 是 | 表示最大纬度信息。取值范围为-90到90。 |
73| maxLongitude | number | 是 | 是 | 表示最大经度信息。取值范围为-180到180。 |
74
75
76## GeoAddress
77
78地理编码类型。
79
80**系统能力**:SystemCapability.Location.Location.Geocoder
81
82| 名称 | 类型 | 可读|可写 | 说明 |
83| -------- | -------- | -------- | -------- | -------- |
84| latitude | number | 是 | 否  | 表示纬度信息,正值表示北纬,负值表示南纬。取值范围为-90到90。 |
85| longitude | number | 是 | 否  | 表示经度信息,正值表示东经,负值表是西经。取值范围为-180到180。 |
86| locale | string | 是 | 否  | 表示位置描述信息的语言,“zh”代表中文,“en”代表英文。 |
87| placeName | string | 是 | 否  | 表示地区信息。 |
88| countryCode | string | 是 | 否  | 表示国家码信息。 |
89| countryName | string| 是 | 否 | 表示国家信息。 |
90| administrativeArea | string | 是 | 否 | 表示省份区域信息。 |
91| subAdministrativeArea | string | 是 | 否 | 表示子区域信息。 |
92| locality | string | 是 | 否 | 表示城市信息。 |
93| subLocality | string | 是 | 否 | 表示子城市信息。 |
94| roadName | string | 是 | 否 |表示路名信息。 |
95| subRoadName | string | 是 | 否 | 表示子路名信息。 |
96| premises | string| 是 | 否|表示门牌号信息。 |
97| postalCode | string | 是 | 否 | 表示邮政编码信息。 |
98| phoneNumber | string | 是 | 否 | 表示联系方式信息。 |
99| addressUrl | string | 是 | 否 | 表示位置信息附件的网址信息。 |
100| descriptions | Array<string> | 是 | 否 | 表示附加的描述信息。 |
101| descriptionsSize | number | 是 | 否 | 表示附加的描述信息数量。取值范围为大于等于0,推荐该值小于10。 |
102| isFromMock | Boolean | 是 | 否 | 表示地名信息是否来自于逆地理编码模拟功能。<br>**系统API**:此接口为系统接口。 |
103
104
105## LocationRequest
106
107位置信息请求类型。
108
109**系统能力**:SystemCapability.Location.Location.Core
110
111| 名称 | 类型 | 可读|可写 | 说明 |
112| -------- | -------- | -------- | -------- | -------- |
113| priority | [LocationRequestPriority](#locationrequestpriority) | 是 | 是 | 表示优先级信息。取值范围见[LocationRequestPriority](#locationrequestpriority)的定义。 |
114| scenario | [LocationRequestScenario](#locationrequestscenario) | 是 | 是 | 表示场景信息。取值范围见[LocationRequestScenario](#locationrequestscenario)的定义。 |
115| timeInterval | number | 是 | 是 | 表示上报位置信息的时间间隔,单位是秒。取值范围为大于0。 |
116| distanceInterval | number | 是 | 是 | 表示上报位置信息的距离间隔。单位是米,取值范围为大于0。 |
117| maxAccuracy | number | 是 | 是 | 表示精度信息。仅在精确位置功能场景下有效,模糊位置功能生效场景下该字段无意义。取值范围为大于0。 |
118
119
120## CurrentLocationRequest
121
122当前位置信息请求类型。
123
124**系统能力**:SystemCapability.Location.Location.Core
125
126| 名称 | 类型 | 可读|可写 | 说明 |
127| -------- | -------- | -------- | -------- | -------- |
128| priority | [LocationRequestPriority](#locationrequestpriority) | 是 | 是 | 表示优先级信息。取值范围见[LocationRequestPriority](#locationrequestpriority)的定义。 |
129| scenario | [LocationRequestScenario](#locationrequestscenario) | 是 | 是 | 表示场景信息。取值范围见[LocationRequestScenario](#locationrequestscenario)的定义。 |
130| maxAccuracy | number | 是 | 是| 表示精度信息,单位是米。仅在精确位置功能场景下有效,模糊位置功能生效场景下该字段无意义。取值范围为大于0。 |
131| timeoutMs | number | 是 | 是 | 表示超时时间,单位是毫秒,最小为1000毫秒。取值范围为大于等于1000。 |
132
133
134## SatelliteStatusInfo
135
136卫星状态信息。
137
138**系统能力**:SystemCapability.Location.Location.Gnss
139
140| 名称 | 类型 | 可读|可写 | 说明 |
141| -------- | -------- | -------- | -------- | -------- |
142| satellitesNumber | number | 是 | 否 | 表示卫星个数。取值范围为大于等于0。 |
143| satelliteIds | Array&lt;number&gt; | 是 | 否 | 表示每个卫星的ID,数组类型。取值范围为大于等于0。 |
144| carrierToNoiseDensitys | Array&lt;number&gt; | 是 | 否 | 表示载波噪声功率谱密度比,即cn0。取值范围为大于0。 |
145| altitudes | Array&lt;number&gt; | 是 | 否 | 表示卫星高度角信息。单位是“度”,取值范围为-90到90。 |
146| azimuths | Array&lt;number&gt; | 是 | 否 | 表示方位角。单位是“度”,取值范围为0到360。 |
147| carrierFrequencies | Array&lt;number&gt; | 是 | 否 | 表示载波频率。单位是Hz,取值范围为大于等于0。 |
148
149
150## CachedGnssLocationsRequest
151
152请求订阅GNSS缓存位置上报功能接口的配置参数。
153
154**系统能力**:SystemCapability.Location.Location.Gnss
155
156| 名称 | 类型 | 可读|可写 | 说明 |
157| -------- | -------- | -------- | -------- | -------- |
158| reportingPeriodSec | number | 是 | 是 | 表示GNSS缓存位置上报的周期,单位是毫秒。取值范围为大于0。 |
159| wakeUpCacheQueueFull | boolean | 是 | 是  | true表示GNSS芯片底层缓存队列满之后会主动唤醒AP芯片,并把缓存位置上报给应用。<br/>false表示GNSS芯片底层缓存队列满之后不会主动唤醒AP芯片,会把缓存位置直接丢弃。 |
160
161
162## Geofence
163
164GNSS围栏的配置参数。目前只支持圆形围栏。
165
166**系统能力**:SystemCapability.Location.Location.Geofence
167
168| 名称 | 类型 | 可读|可写 | 说明 |
169| -------- | -------- | -------- | -------- | -------- |
170| latitude | number | 是 | 是 |表示纬度。取值范围为-90到90。 |
171| longitude | number | 是 |是 | 表示经度。取值范围为-180到180。 |
172| radius | number | 是 |是 | 表示圆形围栏的半径。单位是米,取值范围为大于0。 |
173| expiration | number | 是 |是 | 围栏存活的时间,单位是毫秒。取值范围为大于0。 |
174
175
176## GeofenceRequest
177
178请求添加GNSS围栏消息中携带的参数,包括定位优先级、定位场景和围栏信息。
179
180**系统能力**:SystemCapability.Location.Location.Geofence
181
182| 名称 | 类型 | 可读|可写 | 说明 |
183| -------- | -------- | -------- | -------- | -------- |
184| scenario | [LocationRequestScenario](#locationrequestscenario) | 是 | 是  |  表示定位场景。 |
185| geofence |  [Geofence](#geofence)| 是 | 是  |  表示围栏信息。 |
186
187
188## LocationCommand
189
190扩展命令结构体。
191
192**系统能力**:SystemCapability.Location.Location.Core
193
194| 名称 | 类型 | 可读|可写 | 说明 |
195| -------- | -------- | -------- | -------- | -------- |
196| scenario | [LocationRequestScenario](#locationrequestscenario)  | 是 | 是  | 表示定位场景。 |
197| command | string | 是 | 是  | 扩展命令字符串。 |
198
199
200## Location
201
202位置信息类型。
203
204**系统能力**:SystemCapability.Location.Location.Core
205
206| 名称 | 类型 | 可读|可写 | 说明 |
207| -------- | -------- | -------- | -------- | -------- |
208| latitude | number| 是 | 否 | 表示纬度信息,正值表示北纬,负值表示南纬。取值范围为-90到90。 |
209| longitude | number| 是 | 否 | 表示经度信息,正值表示东经,负值表是西经。取值范围为-180到180。 |
210| altitude | number | 是 | 否 | 表示高度信息,单位米。 |
211| accuracy | number | 是 | 否 | 表示精度信息,单位米。 |
212| speed | number | 是 | 否 |表示速度信息,单位米每秒。 |
213| timeStamp | number | 是 | 否 | 表示位置时间戳,UTC格式。 |
214| direction | number | 是 | 否 | 表示航向信息。单位是“度”,取值范围为0到360。 |
215| timeSinceBoot | number | 是 | 否 | 表示位置时间戳,开机时间格式。 |
216| additions | Array&lt;string&gt; | 是 | 否 | 附加信息。 |
217| additionSize | number | 是 | 否 | 附加信息数量。取值范围为大于等于0。  |
218| isFromMock | Boolean | 是 | 否 | 表示位置信息是否来自于位置模拟功能。<br>**系统API**:此接口为系统接口。 |
219
220
221## ReverseGeocodingMockInfo
222
223逆地理编码模拟功能的配置信息,包含一个位置信息和一个地名信息。
224
225**系统能力**:SystemCapability.Location.Location.Core
226
227**系统API**:此接口为系统接口,三方应用不支持调用。
228
229| 名称 | 类型 | 可读|可写 | 说明 |
230| -------- | -------- | -------- | -------- | -------- |
231| location |  [ReverseGeoCodeRequest](#reversegeocoderequest) | 是 | 是 | 表示经纬度信息。 |
232| geoAddress |  [GeoAddress](#geoaddress) | 是 | 是 |表示地名信息。 |
233
234
235## LocationMockConfig
236
237位置模拟功能的配置参数,包含了模拟位置上报的时间间隔和模拟位置数组。
238
239**系统能力**:SystemCapability.Location.Location.Core
240
241**系统API**:此接口为系统接口,三方应用不支持调用。
242
243| 名称 | 类型 | 可读|可写 | 说明 |
244| -------- | -------- | -------- | -------- | -------- |
245| timeInterval | number | 是 | 是 | 表示模拟位置上报的时间间隔,单位是秒。 |
246| locations | Array&lt;[Location](#location)&gt; | 是 | 是 | 表示模拟位置数组。 |
247
248
249## CountryCode
250
251国家码信息结构体,包含国家码字符串和国家码的来源信息。
252
253**系统能力**:SystemCapability.Location.Location.Core
254
255| 名称 | 类型 | 可读|可写 | 说明 |
256| -------- | -------- | -------- | -------- | -------- |
257| country | string | 是 | 否 | 表示国家码字符串。 |
258| type |  [CountryCodeType](#countrycodetype) | 是 | 否 | 表示国家码信息来源。 |
259
260
261## LocationRequestPriority
262
263位置请求中位置信息优先级设置。
264
265**系统能力**:SystemCapability.Location.Location.Core
266
267| 名称 | 值 | 说明 |
268| -------- | -------- | -------- |
269| UNSET | 0x200 | 表示未设置优先级,表示[LocationRequestPriority](#locationrequestpriority)无效。 |
270| ACCURACY | 0x201 | 表示精度优先。<br/>定位精度优先策略主要以GNSS定位技术为主,在开阔场景下可以提供米级的定位精度,具体性能指标依赖用户设备的定位硬件能力,但在室内等强遮蔽定位场景下,无法提供准确的位置服务。 |
271| LOW_POWER | 0x202 | 表示低功耗优先。<br/>低功耗定位优先策略主要使用基站定位和WLAN、蓝牙定位技术,也可以同时提供室内和户外场景下的位置服务,因为其依赖周边基站、可见WLAN、蓝牙设备的分布情况,定位结果的精度波动范围较大,如果对定位结果精度要求不高,或者使用场景多在有基站、可见WLAN、蓝牙设备高密度分布的情况下,推荐使用,可以有效节省设备功耗。 |
272| FIRST_FIX | 0x203 | 表示快速获取位置优先,如果应用希望快速拿到一个位置,可以将优先级设置为该字段。<br/>快速定位优先策略会同时使用GNSS定位、基站定位和WLAN、蓝牙定位技术,以便室内和户外场景下,通过此策略都可以获得位置结果,当各种定位技术都有提供位置结果时,系统会选择其中精度较好的结果返回给应用。因为对各种定位技术同时使用,对设备的硬件资源消耗较大,功耗也较大。 |
273
274
275## LocationRequestScenario
276
277  位置请求中定位场景设置。
278
279**系统能力**:SystemCapability.Location.Location.Core
280
281| 名称 | 值 | 说明 |
282| -------- | -------- | -------- |
283| UNSET | 0x300 | 表示未设置场景信息。<br/>表示[LocationRequestScenario](#locationrequestscenario)字段无效。 |
284| NAVIGATION | 0x301 | 表示导航场景。<br/>适用于在户外定位设备实时位置的场景,如车载、步行导航。<br/>在此场景下,为保证系统提供位置结果精度最优,主要使用GNSS定位技术提供定位服务<br/>此场景默认以最小1秒间隔上报定位结果。 |
285| TRAJECTORY_TRACKING | 0x302 | 表示运动轨迹记录场景。<br/>适用于记录用户位置轨迹的场景,如运动类应用记录轨迹功能。主要使用GNSS定位技术提供定位服务。<br/>此场景默认以最小1秒间隔上报定位结果。 |
286| CAR_HAILING | 0x303 | 表示打车场景。<br/>适用于用户出行打车时定位当前位置的场景,如网约车类应用。<br/>此场景默认以最小1秒间隔上报定位结果。 |
287| DAILY_LIFE_SERVICE | 0x304 | 表示日常服务使用场景。<br/>适用于不需要定位用户精确位置的使用场景,如新闻资讯、网购、点餐类应用,做推荐、推送时定位用户大致位置即可。<br/>此场景默认以最小1秒间隔上报定位结果。 |
288| NO_POWER | 0x305 | 表示无功耗功场景,这种场景下不会主动触发定位,会在其他应用定位时,才给当前应用返回位置。 |
289
290
291## LocationPrivacyType
292
293定位服务隐私协议类型。
294
295**系统能力**:SystemCapability.Location.Location.Core
296
297**系统API**:此接口为系统接口,三方应用不支持调用。
298
299| 名称 | 值 | 说明 |
300| -------- | -------- | -------- |
301| OTHERS | 0 | 其他场景。预留字段。 |
302| STARTUP | 1 | 开机向导场景下的隐私协议。在开机时弹出协议,提醒用户阅读并选择是否授权。 |
303| CORE_LOCATION | 2 | 开启网络定位时弹出的隐私协议。 |
304
305
306## CountryCodeType
307
308国家码来源类型。
309
310**系统能力**:SystemCapability.Location.Location.Core
311
312| 名称 | 值 | 说明 |
313| -------- | -------- | -------- |
314| COUNTRY_CODE_FROM_LOCALE | 1 | 从全球化模块的语言配置信息中获取到的国家码。 |
315| COUNTRY_CODE_FROM_SIM | 2 | 从SIM卡中获取到的国家码。 |
316| COUNTRY_CODE_FROM_LOCATION | 3 | 基于用户的位置信息,通过逆地理编码查询到的国家码。 |
317| COUNTRY_CODE_FROM_NETWORK | 4 | 从蜂窝网络注册信息中获取到的国家码。 |
318
319
320## geoLocationManager.on('locationChange')
321
322on(type: 'locationChange', request: LocationRequest, callback: Callback&lt;Location&gt;): void
323
324开启位置变化订阅,并发起定位请求。
325
326**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
327
328**系统能力**:SystemCapability.Location.Location.Core
329
330**参数:**
331
332  | 参数名 | 类型 | 必填 | 说明 |
333  | -------- | -------- | -------- | -------- |
334  | type | string | 是 | 设置事件类型。type为“locationChange”,表示位置变化。 |
335  | request |  [LocationRequest](#locationrequest) | 是 | 设置位置请求参数。 |
336  | callback | Callback&lt;[Location](#location)&gt; | 是 | 接收位置变化状态变化监听。 |
337
338**错误码**:
339
340以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
341
342| 错误码ID | 错误信息 |
343| -------- | ---------------------------------------- |
344|3301000 | Location service is unavailable.                                            |
345|3301100 | The location switch is off.                                                 |
346|3301200 | Failed to obtain the geographical location.                                       |
347
348**示例**
349
350  ```ts
351  import geoLocationManager from '@ohos.geoLocationManager';
352  let requestInfo = {'priority': 0x203, 'scenario': 0x300, 'timeInterval': 0, 'distanceInterval': 0, 'maxAccuracy': 0};
353  let locationChange = (location) => {
354      console.log('locationChanger: data: ' + JSON.stringify(location));
355  };
356  try {
357      geoLocationManager.on('locationChange', requestInfo, locationChange);
358  } catch (err) {
359      console.error("errCode:" + err.code + ",errMessage:" + err.message);
360  }
361
362  ```
363
364
365## geoLocationManager.off('locationChange')
366
367off(type: 'locationChange', callback?: Callback&lt;Location&gt;): void
368
369关闭位置变化订阅,并删除对应的定位请求。
370
371**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
372
373**系统能力**:SystemCapability.Location.Location.Core
374
375**参数:**
376
377  | 参数名 | 类型 | 必填 | 说明 |
378  | -------- | -------- | -------- | -------- |
379  | type | string | 是 | 设置事件类型。type为“locationChange”,表示位置变化。 |
380  | callback | Callback&lt;[Location](#location)&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
381
382**错误码**:
383
384以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
385
386| 错误码ID | 错误信息 |
387| -------- | ---------------------------------------- |
388|3301000 | Location service is unavailable.                                            |
389|3301100 | The location switch is off.                                                 |
390|3301200 | Failed to obtain the geographical location.                                       |
391
392**示例**
393
394  ```ts
395  import geoLocationManager from '@ohos.geoLocationManager';
396  let requestInfo = {'priority': 0x203, 'scenario': 0x300, 'timeInterval': 0, 'distanceInterval': 0, 'maxAccuracy': 0};
397  let locationChange = (location) => {
398      console.log('locationChanger: data: ' + JSON.stringify(location));
399  };
400  try {
401      geoLocationManager.on('locationChange', requestInfo, locationChange);
402      geoLocationManager.off('locationChange', locationChange);
403  } catch (err) {
404      console.error("errCode:" + err.code + ",errMessage:" + err.message);
405  }
406  ```
407
408
409## geoLocationManager.on('locationEnabledChange')
410
411on(type: 'locationEnabledChange', callback: Callback&lt;boolean&gt;): void
412
413订阅位置服务状态变化。
414
415**系统能力**:SystemCapability.Location.Location.Core
416
417**参数:**
418
419  | 参数名 | 类型 | 必填 | 说明 |
420  | -------- | -------- | -------- | -------- |
421  | type | string | 是 | 设置事件类型。type为“locationEnabledChange”,表示位置服务状态。 |
422  | callback | Callback&lt;boolean&gt; | 是 | 接收位置服务状态变化监听。 |
423
424**错误码**:
425
426以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
427
428| 错误码ID | 错误信息 |
429| -------- | ---------------------------------------- |
430|3301000 | Location service is unavailable.                                            |
431
432**示例**
433
434  ```ts
435  import geoLocationManager from '@ohos.geoLocationManager';
436  let locationEnabledChange = (state) => {
437      console.log('locationEnabledChange: ' + JSON.stringify(state));
438  }
439  try {
440      geoLocationManager.on('locationEnabledChange', locationEnabledChange);
441  } catch (err) {
442      console.error("errCode:" + err.code + ",errMessage:" + err.message);
443  }
444  ```
445
446
447## geoLocationManager.off('locationEnabledChange')
448
449off(type: 'locationEnabledChange', callback?: Callback&lt;boolean&gt;): void;
450
451取消订阅位置服务状态变化。
452
453**系统能力**:SystemCapability.Location.Location.Core
454
455**参数**:
456
457  | 参数名 | 类型 | 必填 | 说明 |
458  | -------- | -------- | -------- | -------- |
459  | type | string | 是 | 设置事件类型。type为“locationEnabledChange”,表示位置服务状态。 |
460  | callback | Callback&lt;boolean&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
461
462**错误码**:
463
464以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
465
466| 错误码ID | 错误信息 |
467| -------- | ---------------------------------------- |
468|3301000 | Location service is unavailable.                                            |
469
470**示例**
471
472  ```ts
473  import geoLocationManager from '@ohos.geoLocationManager';
474  let locationEnabledChange = (state) => {
475      console.log('locationEnabledChange: state: ' + JSON.stringify(state));
476  }
477  try {
478      geoLocationManager.on('locationEnabledChange', locationEnabledChange);
479      geoLocationManager.off('locationEnabledChange', locationEnabledChange);
480  } catch (err) {
481      console.error("errCode:" + err.code + ",errMessage:" + err.message);
482  }
483  ```
484
485
486## geoLocationManager.on('cachedGnssLocationsChange')
487
488on(type: 'cachedGnssLocationsChange', request: CachedGnssLocationsRequest, callback: Callback&lt;Array&lt;Location&gt;&gt;): void;
489
490订阅缓存GNSS定位结果上报事件。
491
492**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
493
494**系统能力**:SystemCapability.Location.Location.Gnss
495
496**参数**:
497
498  | 参数名 | 类型 | 必填 | 说明 |
499  | -------- | -------- | -------- | -------- |
500  | type | string | 是 | 设置事件类型。type为“cachedGnssLocationsChange”,表示GNSS缓存定位结果上报。 |
501  | request |  [CachedGnssLocationsRequest](#cachedgnsslocationsrequest) | 是 | GNSS缓存功能配置参数 |
502  | callback | Callback&lt;boolean&gt; | 是 | 接收GNSS缓存位置上报。 |
503
504**错误码**:
505
506以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
507
508| 错误码ID | 错误信息 |
509| -------- | ---------------------------------------- |
510|3301000 | Location service is unavailable.                                            |
511|3301100 | The location switch is off.                                                 |
512|3301200 | Failed to obtain the geographical location.                                       |
513
514**示例**
515
516  ```ts
517  import geoLocationManager from '@ohos.geoLocationManager';
518  let cachedLocationsCb = (locations) => {
519      console.log('cachedGnssLocationsChange: locations: ' + JSON.stringify(locations));
520  }
521  let requestInfo = {'reportingPeriodSec': 10, 'wakeUpCacheQueueFull': true};
522  try {
523      geoLocationManager.on('cachedGnssLocationsChange', requestInfo, cachedLocationsCb);
524  } catch (err) {
525      console.error("errCode:" + err.code + ",errMessage:" + err.message);
526  }
527  ```
528
529
530## geoLocationManager.off('cachedGnssLocationsChange')
531
532off(type: 'cachedGnssLocationsChange', callback?: Callback&lt;Array&lt;Location&gt;&gt;): void;
533
534取消订阅缓存GNSS定位结果上报事件。
535
536**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
537
538**系统能力**:SystemCapability.Location.Location.Gnss
539
540**参数**:
541
542  | 参数名 | 类型 | 必填 | 说明 |
543  | -------- | -------- | -------- | -------- |
544  | type | string | 是 | 设置事件类型。type为“cachedGnssLocationsChange”,表示GNSS缓存定位结果上报。 |
545  | callback | Callback&lt;boolean&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
546
547**错误码**:
548
549以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
550
551| 错误码ID | 错误信息 |
552| -------- | ---------------------------------------- |
553|3301000 | Location service is unavailable.                                            |
554|3301100 | The location switch is off.                                                 |
555|3301200 | Failed to obtain the geographical location.                                       |
556
557**示例**
558
559  ```ts
560  import geoLocationManager from '@ohos.geoLocationManager';
561  let cachedLocationsCb = (locations) => {
562      console.log('cachedGnssLocationsChange: locations: ' + JSON.stringify(locations));
563  }
564  let requestInfo = {'reportingPeriodSec': 10, 'wakeUpCacheQueueFull': true};
565  try {
566      geoLocationManager.on('cachedGnssLocationsChange', requestInfo, cachedLocationsCb);
567      geoLocationManager.off('cachedGnssLocationsChange');
568  } catch (err) {
569      console.error("errCode:" + err.code + ",errMessage:" + err.message);
570  }
571  ```
572
573
574## geoLocationManager.on('satelliteStatusChange')
575
576on(type: 'satelliteStatusChange', callback: Callback&lt;SatelliteStatusInfo&gt;): void;
577
578订阅GNSS卫星状态信息上报事件。
579
580**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
581
582**系统能力**:SystemCapability.Location.Location.Gnss
583
584**参数**:
585
586  | 参数名 | 类型 | 必填 | 说明 |
587  | -------- | -------- | -------- | -------- |
588  | type | string | 是 | 设置事件类型。type为“satelliteStatusChange”,表示订阅GNSS卫星状态信息上报。 |
589  | callback | Callback&lt;[SatelliteStatusInfo](#satellitestatusinfo)&gt; | 是 | 接收GNSS卫星状态信息上报。 |
590
591**错误码**:
592
593以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
594
595| 错误码ID | 错误信息 |
596| -------- | ---------------------------------------- |
597|3301000 | Location service is unavailable.                                            |
598|3301100 | The location switch is off.                                                 |
599
600**示例**
601
602  ```ts
603  import geoLocationManager from '@ohos.geoLocationManager';
604  let gnssStatusCb = (satelliteStatusInfo) => {
605      console.log('satelliteStatusChange: ' + JSON.stringify(satelliteStatusInfo));
606  }
607
608  try {
609      geoLocationManager.on('satelliteStatusChange', gnssStatusCb);
610  } catch (err) {
611      console.error("errCode:" + err.code + ",errMessage:" + err.message);
612  }
613  ```
614
615
616## geoLocationManager.off('satelliteStatusChange')
617
618off(type: 'satelliteStatusChange', callback?: Callback&lt;SatelliteStatusInfo&gt;): void;
619
620取消订阅GNSS卫星状态信息上报事件。
621
622**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
623
624**系统能力**:SystemCapability.Location.Location.Gnss
625
626**参数**:
627
628  | 参数名 | 类型 | 必填 | 说明 |
629  | -------- | -------- | -------- | -------- |
630  | type | string | 是 | 设置事件类型。type为“satelliteStatusChange”,表示订阅GNSS卫星状态信息上报。 |
631  | callback | Callback&lt;[SatelliteStatusInfo](#satellitestatusinfo)&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
632
633**错误码**:
634
635以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
636
637| 错误码ID | 错误信息 |
638| -------- | ---------------------------------------- |
639|3301000 | Location service is unavailable.                                            |
640|3301100 | The location switch is off.                                                 |
641
642
643**示例**
644
645  ```ts
646  import geoLocationManager from '@ohos.geoLocationManager';
647  let gnssStatusCb = (satelliteStatusInfo) => {
648      console.log('satelliteStatusChange: ' + JSON.stringify(satelliteStatusInfo));
649  }
650  try {
651      geoLocationManager.on('satelliteStatusChange', gnssStatusCb);
652      geoLocationManager.off('satelliteStatusChange', gnssStatusCb);
653  } catch (err) {
654      console.error("errCode:" + err.code + ",errMessage:" + err.message);
655  }
656  ```
657
658
659## geoLocationManager.on('nmeaMessage')
660
661on(type: 'nmeaMessage', callback: Callback&lt;string&gt;): void;
662
663订阅GNSS NMEA信息上报事件。
664
665**需要权限**:ohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATION
666
667**系统能力**:SystemCapability.Location.Location.Gnss
668
669**参数**:
670
671  | 参数名 | 类型 | 必填 | 说明 |
672  | -------- | -------- | -------- | -------- |
673  | type | string | 是 | 设置事件类型。type为“nmeaMessage”,表示订阅GNSS&nbsp;NMEA信息上报。 |
674  | callback | Callback&lt;string&gt; | 是 | 接收GNSS&nbsp;NMEA信息上报。 |
675
676**错误码**:
677
678以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
679
680| 错误码ID | 错误信息 |
681| -------- | ---------------------------------------- |
682|3301000 | Location service is unavailable.                                            |
683|3301100 | The location switch is off.                                                 |
684
685
686**示例**
687
688  ```ts
689  import geoLocationManager from '@ohos.geoLocationManager';
690  let nmeaCb = (str) => {
691      console.log('nmeaMessage: ' + JSON.stringify(str));
692  }
693
694  try {
695      geoLocationManager.on('nmeaMessage', nmeaCb );
696  } catch (err) {
697      console.error("errCode:" + err.code + ",errMessage:" + err.message);
698  }
699  ```
700
701
702## geoLocationManager.off('nmeaMessage')
703
704off(type: 'nmeaMessage', callback?: Callback&lt;string&gt;): void;
705
706取消订阅GNSS NMEA信息上报事件。
707
708**需要权限**:ohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATION
709
710**系统能力**:SystemCapability.Location.Location.Gnss
711
712**参数**:
713
714  | 参数名 | 类型 | 必填 | 说明 |
715  | -------- | -------- | -------- | -------- |
716  | type | string | 是 | 设置事件类型。type为“nmeaMessage”,表示订阅GNSS&nbsp;NMEA信息上报。 |
717  | callback | Callback&lt;string&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
718
719**错误码**:
720
721以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
722
723| 错误码ID | 错误信息 |
724| -------- | ---------------------------------------- |
725|3301000 | Location service is unavailable.                                            |
726|3301100 | The location switch is off.                                                 |
727
728
729**示例**
730
731  ```ts
732  import geoLocationManager from '@ohos.geoLocationManager';
733  let nmeaCb = (str) => {
734      console.log('nmeaMessage: ' + JSON.stringify(str));
735  }
736
737  try {
738      geoLocationManager.on('nmeaMessage', nmeaCb);
739      geoLocationManager.off('nmeaMessage', nmeaCb);
740  } catch (err) {
741      console.error("errCode:" + err.code + ",errMessage:" + err.message);
742  }
743  ```
744
745
746## geoLocationManager.on('gnssFenceStatusChange')
747
748on(type: 'gnssFenceStatusChange', request: GeofenceRequest, want: WantAgent): void;
749
750添加一个围栏,并订阅地理围栏事件。
751
752**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
753
754**系统能力**:SystemCapability.Location.Location.Geofence
755
756**参数**:
757
758  | 参数名 | 类型 | 必填 | 说明 |
759  | -------- | -------- | -------- | -------- |
760  | type | string | 是 | 设置事件类型。type为“gnssFenceStatusChange”,表示订阅围栏事件上报。 |
761  | request |  [GeofenceRequest](#geofencerequest) | 是 | 围栏的配置参数。 |
762  | want | [WantAgent](js-apis-app-ability-wantAgent.md) | 是 | 用于接收地理围栏事件上报(进出围栏)。 |
763
764**错误码**:
765
766以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
767
768| 错误码ID | 错误信息 |
769| -------- | ---------------------------------------- |
770|3301000 | Location service is unavailable.                                            |
771|3301100 | The location switch is off.                                                 |
772|3301600 | Failed to operate the geofence.                                     |
773
774**示例**
775
776  ```ts
777  import geoLocationManager from '@ohos.geoLocationManager';
778  import wantAgent from '@ohos.app.ability.wantAgent';
779
780  let wantAgentInfo = {
781      wants: [
782          {
783              bundleName: "com.example.myapplication",
784              abilityName: "EntryAbility",
785              action: "action1"
786          }
787      ],
788      operationType: wantAgent.OperationType.START_ABILITY,
789      requestCode: 0,
790      wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
791  };
792
793  wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
794    let requestInfo = {'priority': 0x201, 'scenario': 0x301, "geofence": {"latitude": 121, "longitude": 26, "radius": 100, "expiration": 10000}};
795    try {
796        geoLocationManager.on('gnssFenceStatusChange', requestInfo, wantAgentObj);
797    } catch (err) {
798        console.error("errCode:" + err.code + ",errMessage:" + err.message);
799    }
800  });
801  ```
802
803
804## geoLocationManager.off('gnssFenceStatusChange')
805
806off(type: 'gnssFenceStatusChange', request: GeofenceRequest, want: WantAgent): void;
807
808删除一个围栏,并取消订阅该围栏事件。
809
810**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
811
812**系统能力**:SystemCapability.Location.Location.Geofence
813
814**参数**:
815
816  | 参数名 | 类型 | 必填 | 说明 |
817  | -------- | -------- | -------- | -------- |
818  | type | string | 是 | 设置事件类型。type为“gnssFenceStatusChange”,表示订阅围栏事件上报。 |
819  | request | [GeofenceRequest](#geofencerequest) | 是 | 围栏的配置参数。 |
820  | want | [WantAgent](js-apis-app-ability-wantAgent.md) | 是 | 用于接收地理围栏事件上报(进出围栏)。 |
821
822**错误码**:
823
824以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
825
826| 错误码ID | 错误信息 |
827| -------- | ---------------------------------------- |
828|3301000 | Location service is unavailable.                                            |
829|3301100 | The location switch is off.                                                 |
830|3301600 | Failed to operate the geofence.                                     |
831
832**示例**
833
834  ```ts
835  import geoLocationManager from '@ohos.geoLocationManager';
836  import wantAgent from '@ohos.app.ability.wantAgent';
837
838  let wantAgentInfo = {
839      wants: [
840          {
841              bundleName: "com.example.myapplication",
842              abilityName: "EntryAbility",
843              action: "action1",
844          }
845      ],
846      operationType: wantAgent.OperationType.START_ABILITY,
847      requestCode: 0,
848      wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
849  };
850
851  wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
852    let requestInfo = {'priority': 0x201, 'scenario': 0x301, "geofence": {"latitude": 121, "longitude": 26, "radius": 100, "expiration": 10000}};
853    try {
854        geoLocationManager.on('gnssFenceStatusChange', requestInfo, wantAgentObj);
855        geoLocationManager.off('gnssFenceStatusChange', requestInfo, wantAgentObj);
856    } catch (err) {
857        console.error("errCode:" + err.code + ",errMessage:" + err.message);
858    }
859  });
860  ```
861
862
863## geoLocationManager.on('countryCodeChange')
864
865on(type: 'countryCodeChange', callback: Callback&lt;CountryCode&gt;): void;
866
867订阅国家码信息变化事件。
868
869**系统能力**:SystemCapability.Location.Location.Core
870
871**参数**:
872
873  | 参数名 | 类型 | 必填 | 说明 |
874  | -------- | -------- | -------- | -------- |
875  | type | string | 是 | 设置事件类型。type为“countryCodeChange”,表示订阅国家码信息变化事件。 |
876  | callback | Callback&lt;[CountryCode](#countrycode)&gt; | 是 | 接收国家码信息上报。 |
877
878**错误码**:
879
880以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
881
882| 错误码ID | 错误信息 |
883| -------- | ---------------------------------------- |
884|3301000 | Location service is unavailable.                                            |
885|3301500 | Failed to query the area information.                                       |
886
887
888**示例**
889
890  ```ts
891  import geoLocationManager from '@ohos.geoLocationManager';
892  let callback = (code) => {
893      console.log('countryCodeChange: ' + JSON.stringify(code));
894  }
895
896  try {
897      geoLocationManager.on('countryCodeChange', callback);
898  } catch (err) {
899      console.error("errCode:" + err.code + ",errMessage:" + err.message);
900  }
901  ```
902
903
904## geoLocationManager.off('countryCodeChange')
905
906off(type: 'countryCodeChange', callback?: Callback&lt;CountryCode&gt;): void;
907
908取消订阅国家码变化事件。
909
910**系统能力**:SystemCapability.Location.Location.Core
911
912**参数**:
913
914  | 参数名 | 类型 | 必填 | 说明 |
915  | -------- | -------- | -------- | -------- |
916  | type | string | 是 | 设置事件类型。type为“countryCodeChange”,表示取消订阅国家码信息变化事件。 |
917  | callback | Callback&lt;[CountryCode](#countrycode)&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 |
918
919**错误码**:
920
921以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
922
923| 错误码ID | 错误信息 |
924| -------- | ---------------------------------------- |
925|3301000 | Location service is unavailable.                                            |
926|3301500 | Failed to query the area information.                                       |
927
928**示例**
929
930  ```ts
931  import geoLocationManager from '@ohos.geoLocationManager';
932  let callback = (code) => {
933      console.log('countryCodeChange: ' + JSON.stringify(code));
934  }
935
936  try {
937      geoLocationManager.on('countryCodeChange', callback);
938      geoLocationManager.off('countryCodeChange', callback);
939  } catch (err) {
940      console.error("errCode:" + err.code + ",errMessage:" + err.message);
941  }
942  ```
943
944
945
946## geoLocationManager.getCurrentLocation
947
948getCurrentLocation(request: CurrentLocationRequest, callback: AsyncCallback&lt;Location&gt;): void
949
950获取当前位置,使用callback回调异步返回结果。
951
952**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
953
954**系统能力**:SystemCapability.Location.Location.Core
955
956**参数**:
957
958  | 参数名 | 类型 | 必填 | 说明 |
959  | -------- | -------- | -------- | -------- |
960  | request | [CurrentLocationRequest](#currentlocationrequest) | 是 | 设置位置请求参数。 |
961  | callback | AsyncCallback&lt;[Location](#location)&gt; | 是 | 用来接收位置信息的回调。 |
962
963**错误码**:
964
965以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
966
967| 错误码ID | 错误信息 |
968| -------- | ---------------------------------------- |
969|3301000 | Location service is unavailable.                                            |
970|3301100 | The location switch is off.                                                 |
971|3301200 | Failed to obtain the geographical location.  |
972
973**示例**
974
975  ```ts
976  import geoLocationManager from '@ohos.geoLocationManager';
977  let requestInfo = {'priority': 0x203, 'scenario': 0x300,'maxAccuracy': 0};
978  let locationChange = (err, location) => {
979      if (err) {
980          console.log('locationChanger: err=' + JSON.stringify(err));
981      }
982      if (location) {
983          console.log('locationChanger: location=' + JSON.stringify(location));
984      }
985  };
986
987  try {
988      geoLocationManager.getCurrentLocation(requestInfo, locationChange);
989  } catch (err) {
990      console.error("errCode:" + err.code + ",errMessage:" + err.message);
991  }
992  ```
993
994## geoLocationManager.getCurrentLocation
995
996getCurrentLocation(callback: AsyncCallback&lt;Location&gt;): void;
997
998获取当前位置,通过callback方式异步返回结果。
999
1000**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
1001
1002**系统能力**:SystemCapability.Location.Location.Core
1003
1004**参数**:
1005
1006  | 参数名 | 类型 | 必填 | 说明 |
1007  | -------- | -------- | -------- | -------- |
1008  | callback | AsyncCallback&lt;[Location](#location)&gt; | 是 | 用来接收位置信息的回调。 |
1009
1010**错误码**:
1011
1012以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1013
1014| 错误码ID | 错误信息 |
1015| -------- | ---------------------------------------- |
1016|3301000 | Location service is unavailable.                                            |
1017|3301100 | The location switch is off.                                                 |
1018|3301200 | Failed to obtain the geographical location.  |
1019
1020**示例**
1021
1022  ```ts
1023  import geoLocationManager from '@ohos.geoLocationManager';
1024  let locationChange = (err, location) => {
1025      if (err) {
1026          console.log('locationChanger: err=' + JSON.stringify(err));
1027      }
1028      if (location) {
1029          console.log('locationChanger: location=' + JSON.stringify(location));
1030      }
1031  };
1032
1033  try {
1034      geoLocationManager.getCurrentLocation(locationChange);
1035  } catch (err) {
1036      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1037  }
1038  ```
1039
1040## geoLocationManager.getCurrentLocation
1041
1042getCurrentLocation(request?: CurrentLocationRequest): Promise&lt;Location&gt;
1043
1044获取当前位置,使用Promise方式异步返回结果。
1045
1046**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
1047
1048**系统能力**:SystemCapability.Location.Location.Core
1049
1050**参数**:
1051
1052  | 参数名 | 类型 | 必填 | 说明 |
1053  | -------- | -------- | -------- | -------- |
1054  | request | [CurrentLocationRequest](#currentlocationrequest) | 否 | 设置位置请求参数。 |
1055
1056**返回值**:
1057
1058  | 参数名 | 类型 | 必填 | 说明 |
1059  | -------- | -------- | -------- | -------- |
1060  | Promise&lt;[Location](#location)&gt;  | [Location](#location) | NA | 返回位置信息。 |
1061
1062**错误码**:
1063
1064以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1065
1066| 错误码ID | 错误信息 |
1067| -------- | ---------------------------------------- |
1068|3301000 | Location service is unavailable.                                            |
1069|3301100 | The location switch is off.                                                 |
1070|3301200 | Failed to obtain the geographical location.  |
1071
1072**示例**
1073
1074  ```ts
1075  import geoLocationManager from '@ohos.geoLocationManager';
1076  let requestInfo = {'priority': 0x203, 'scenario': 0x300,'maxAccuracy': 0};
1077  try {
1078      geoLocationManager.getCurrentLocation(requestInfo).then((result) => {
1079          console.log('current location: ' + JSON.stringify(result));
1080      })
1081      .catch((error) => {
1082          console.log('promise, getCurrentLocation: error=' + JSON.stringify(error));
1083      });
1084  } catch (err) {
1085      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1086  }
1087  ```
1088
1089
1090## geoLocationManager.getLastLocation
1091
1092getLastLocation(): Location
1093
1094获取上一次位置。
1095
1096**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
1097
1098**系统能力**:SystemCapability.Location.Location.Core
1099
1100**返回值**:
1101
1102  | 参数名 | 类型 | 必填 | 说明 |
1103  | -------- | -------- | -------- | -------- |
1104  | Location  | [Location](#location) | NA | 位置信息。 |
1105
1106**错误码**:
1107
1108以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1109
1110| 错误码ID | 错误信息 |
1111| -------- | ---------------------------------------- |
1112|3301000 | Location service is unavailable.  |
1113|3301100 | The location switch is off.  |
1114|3301200 |Failed to obtain the geographical location.  |
1115
1116**示例**
1117
1118  ```ts
1119  import geoLocationManager from '@ohos.geoLocationManager';
1120  try {
1121      let location = geoLocationManager.getLastLocation();
1122  } catch (err) {
1123      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1124  }
1125  ```
1126
1127
1128## geoLocationManager.isLocationEnabled
1129
1130isLocationEnabled(): boolean
1131
1132判断位置服务是否已经使能。
1133
1134**系统能力**:SystemCapability.Location.Location.Core
1135
1136**返回值**:
1137
1138  | 参数名 | 类型 | 必填 | 说明 |
1139  | -------- | -------- | -------- | -------- |
1140  | boolean  | boolean | NA | 位置服务是否已经使能。 |
1141
1142**错误码**:
1143
1144以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1145
1146| 错误码ID | 错误信息 |
1147| -------- | ---------------------------------------- |
1148|3301000 | Location service is unavailable.  |
1149
1150**示例**
1151
1152  ```ts
1153  import geoLocationManager from '@ohos.geoLocationManager';
1154  try {
1155      let locationEnabled = geoLocationManager.isLocationEnabled();
1156  } catch (err) {
1157      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1158  }
1159  ```
1160
1161
1162## geoLocationManager.enableLocation
1163
1164enableLocation(callback: AsyncCallback&lt;void&gt;): void;
1165
1166打开位置服务,使用callback回调异步返回结果。
1167
1168**系统API**:此接口为系统接口,三方应用不支持调用。
1169
1170**需要权限**:ohos.permission.MANAGE_SECURE_SETTINGS
1171
1172**系统能力**:SystemCapability.Location.Location.Core
1173
1174**参数**:
1175
1176  | 参数名 | 类型 | 必填 | 说明 |
1177  | -------- | -------- | -------- | -------- |
1178  | callback | AsyncCallback&lt;void&gt; | 是 | 用来接收错误码信息。 |
1179
1180**错误码**:
1181
1182以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1183
1184| 错误码ID | 错误信息 |
1185| -------- | ---------------------------------------- |
1186|3301000 | Location service is unavailable.                                            |
1187
1188**示例**
1189
1190  ```ts
1191  import geoLocationManager from '@ohos.geoLocationManager';
1192  try {
1193      geoLocationManager.enableLocation((err, data) => {
1194          if (err) {
1195              console.log('enableLocation: err=' + JSON.stringify(err));
1196          }
1197      });
1198  } catch (err) {
1199      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1200  }
1201  ```
1202
1203
1204## geoLocationManager.enableLocation
1205
1206enableLocation(): Promise&lt;void&gt;
1207
1208打开位置服务,使用Promise方式异步返回结果。
1209
1210**系统API**:此接口为系统接口,三方应用不支持调用。
1211
1212**需要权限**:ohos.permission.MANAGE_SECURE_SETTINGS
1213
1214**系统能力**:SystemCapability.Location.Location.Core
1215
1216**返回值**:
1217
1218  | 参数名 | 类型 | 必填 | 说明 |
1219  | -------- | -------- | -------- | -------- |
1220  | Promise&lt;void&gt;  | void | NA | 返回错误码信息。 |
1221
1222**错误码**:
1223
1224以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1225
1226| 错误码ID | 错误信息 |
1227| -------- | ---------------------------------------- |
1228|3301000 | Location service is unavailable.                                            |
1229
1230**示例**
1231
1232  ```ts
1233  import geoLocationManager from '@ohos.geoLocationManager';
1234  try {
1235      geoLocationManager.enableLocation().then((result) => {
1236          console.log('promise, enableLocation succeed');
1237      })
1238      .catch((error) => {
1239          console.log('promise, enableLocation: error=' + JSON.stringify(error));
1240      });
1241  } catch (err) {
1242      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1243  }
1244  ```
1245
1246## geoLocationManager.disableLocation
1247
1248disableLocation(): void;
1249
1250关闭位置服务。
1251
1252**系统API**:此接口为系统接口,三方应用不支持调用。
1253
1254**需要权限**:ohos.permission.MANAGE_SECURE_SETTINGS
1255
1256**系统能力**:SystemCapability.Location.Location.Core
1257
1258**错误码**:
1259
1260以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1261
1262| 错误码ID | 错误信息 |
1263| -------- | ---------------------------------------- |
1264|3301000 | Location service is unavailable.                                            |
1265
1266**示例**
1267
1268  ```ts
1269  import geoLocationManager from '@ohos.geoLocationManager';
1270  try {
1271      geoLocationManager.disableLocation();
1272  } catch (err) {
1273      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1274  }
1275  ```
1276
1277
1278
1279## geoLocationManager.getAddressesFromLocation
1280
1281getAddressesFromLocation(request: ReverseGeoCodeRequest, callback: AsyncCallback&lt;Array&lt;GeoAddress&gt;&gt;): void
1282
1283调用逆地理编码服务,将坐标转换为地理描述,使用callback回调异步返回结果。
1284
1285**系统能力**:SystemCapability.Location.Location.Geocoder
1286
1287**参数**:
1288
1289  | 参数名 | 类型 | 必填 | 说明 |
1290  | -------- | -------- | -------- | -------- |
1291  | request | [ReverseGeoCodeRequest](#reversegeocoderequest) | 是 | 设置逆地理编码请求的相关参数。 |
1292  | callback | AsyncCallback&lt;Array&lt;[GeoAddress](#geoaddress)&gt;&gt; | 是 | 接收逆地理编码结果的回调函数。 |
1293
1294**错误码**:
1295
1296以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1297
1298| 错误码ID | 错误信息 |
1299| -------- | ---------------------------------------- |
1300|3301000 | Location service is unavailable.   |
1301|3301300 | Reverse geocoding query failed.   |
1302
1303**示例**
1304
1305  ```ts
1306  import geoLocationManager from '@ohos.geoLocationManager';
1307  let reverseGeocodeRequest = {"latitude": 31.12, "longitude": 121.11, "maxItems": 1};
1308  try {
1309      geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest, (err, data) => {
1310          if (err) {
1311              console.log('getAddressesFromLocation: err=' + JSON.stringify(err));
1312          }
1313          if (data) {
1314              console.log('getAddressesFromLocation: data=' + JSON.stringify(data));
1315          }
1316      });
1317  } catch (err) {
1318      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1319  }
1320  ```
1321
1322
1323## geoLocationManager.getAddressesFromLocation
1324
1325getAddressesFromLocation(request: ReverseGeoCodeRequest): Promise&lt;Array&lt;GeoAddress&gt;&gt;;
1326
1327调用逆地理编码服务,将坐标转换为地理描述,使用Promise方式异步返回结果。
1328
1329**系统能力**:SystemCapability.Location.Location.Geocoder
1330
1331**参数**:
1332
1333  | 参数名 | 类型 | 必填 | 说明 |
1334  | -------- | -------- | -------- | -------- |
1335  | request | [ReverseGeoCodeRequest](#reversegeocoderequest) | 是 | 设置逆地理编码请求的相关参数。 |
1336
1337**返回值**:
1338
1339  | 参数名 | 类型 | 必填 | 说明 |
1340  | -------- | -------- | -------- | -------- |
1341  | Promise&lt;Array&lt;[GeoAddress](#geoaddress)&gt;&gt;  | Array&lt;[GeoAddress](#geoaddress)&gt; | NA | 返回地理描述信息。 |
1342
1343**错误码**:
1344
1345以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1346
1347| 错误码ID | 错误信息 |
1348| -------- | ---------------------------------------- |
1349|3301000 | Location service is unavailable.   |
1350|3301300 | Reverse geocoding query failed.   |
1351
1352**示例**
1353
1354  ```ts
1355  import geoLocationManager from '@ohos.geoLocationManager';
1356  let reverseGeocodeRequest = {"latitude": 31.12, "longitude": 121.11, "maxItems": 1};
1357  try {
1358      geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest).then((data) => {
1359          console.log('getAddressesFromLocation: ' + JSON.stringify(data));
1360      })
1361      .catch((error) => {
1362          console.log('promise, getAddressesFromLocation: error=' + JSON.stringify(error));
1363      });
1364  } catch (err) {
1365      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1366  }
1367  ```
1368
1369
1370## geoLocationManager.getAddressesFromLocationName
1371
1372getAddressesFromLocationName(request: GeoCodeRequest, callback: AsyncCallback&lt;Array&lt;GeoAddress&gt;&gt;): void
1373
1374调用地理编码服务,将地理描述转换为具体坐标,使用callback回调异步返回结果。
1375
1376**系统能力**:SystemCapability.Location.Location.Geocoder
1377
1378**参数**:
1379
1380  | 参数名 | 类型 | 必填 | 说明 |
1381  | -------- | -------- | -------- | -------- |
1382  | request | [GeoCodeRequest](#geocoderequest) | 是 | 设置地理编码请求的相关参数。 |
1383  | callback | AsyncCallback&lt;Array&lt;[GeoAddress](#geoaddress)&gt;&gt; | 是 | 接收地理编码结果的回调函数。 |
1384
1385**错误码**:
1386
1387以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1388
1389| 错误码ID | 错误信息 |
1390| -------- | ---------------------------------------- |
1391|3301000 | Location service is unavailable.   |
1392|3301400 | Geocoding query failed.   |
1393
1394**示例**
1395
1396  ```ts
1397  import geoLocationManager from '@ohos.geoLocationManager';
1398  let geocodeRequest = {"description": "上海市浦东新区xx路xx号", "maxItems": 1};
1399  try {
1400      geoLocationManager.getAddressesFromLocationName(geocodeRequest, (err, data) => {
1401          if (err) {
1402              console.log('getAddressesFromLocationName: err=' + JSON.stringify(err));
1403          }
1404          if (data) {
1405              console.log('getAddressesFromLocationName: data=' + JSON.stringify(data));
1406          }
1407      });
1408  } catch (err) {
1409      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1410  }
1411  ```
1412
1413
1414## geoLocationManager.getAddressesFromLocationName
1415
1416getAddressesFromLocationName(request: GeoCodeRequest): Promise&lt;Array&lt;GeoAddress&gt;&gt;
1417
1418调用地理编码服务,将地理描述转换为具体坐标,使用Promise方式异步返回结果。
1419
1420**系统能力**:SystemCapability.Location.Location.Geocoder
1421
1422**参数**:
1423
1424  | 参数名 | 类型 | 必填 | 说明 |
1425  | -------- | -------- | -------- | -------- |
1426  | request | [GeoCodeRequest](#geocoderequest) | 是 | 设置地理编码请求的相关参数。 |
1427
1428**返回值**:
1429
1430  | 参数名 | 类型 | 必填 | 说明 |
1431  | -------- | -------- | -------- | -------- |
1432  | Promise&lt;Array&lt;[GeoAddress](#geoaddress)&gt;&gt;  | Array&lt;[GeoAddress](#geoaddress)&gt; | NA | 返回地理编码查询结果。 |
1433
1434**错误码**:
1435
1436以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1437
1438| 错误码ID | 错误信息 |
1439| -------- | ---------------------------------------- |
1440|3301000 | Location service is unavailable.   |
1441|3301400 | Geocoding query failed.   |
1442
1443**示例**
1444
1445  ```ts
1446  import geoLocationManager from '@ohos.geoLocationManager';
1447  let geocodeRequest = {"description": "上海市浦东新区xx路xx号", "maxItems": 1};
1448  try {
1449      geoLocationManager.getAddressesFromLocationName(geocodeRequest).then((result) => {
1450          console.log('getAddressesFromLocationName: ' + JSON.stringify(result));
1451      })
1452      .catch((error) => {
1453          console.log('promise, getAddressesFromLocationName: error=' + JSON.stringify(error));
1454      });
1455  } catch (err) {
1456      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1457  }
1458  ```
1459
1460## geoLocationManager.isGeocoderAvailable
1461
1462isGeocoderAvailable(): boolean;
1463
1464判断(逆)地理编码服务状态。
1465
1466**系统能力**:SystemCapability.Location.Location.Geocoder
1467
1468**返回值**:
1469
1470  | 参数名 | 类型 | 必填 | 说明 |
1471  | -------- | -------- | -------- | -------- |
1472  | boolean  | boolean | NA | 返回(逆)地理编码服务是否可用。 |
1473
1474**错误码**:
1475
1476以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1477
1478| 错误码ID | 错误信息 |
1479| -------- | ---------------------------------------- |
1480|3301000 | Location service is unavailable.   |
1481
1482**示例**
1483
1484  ```ts
1485  import geoLocationManager from '@ohos.geoLocationManager';
1486  try {
1487      let isAvailable = geoLocationManager.isGeocoderAvailable();
1488  } catch (err) {
1489      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1490  }
1491  ```
1492
1493
1494## geoLocationManager.getCachedGnssLocationsSize
1495
1496getCachedGnssLocationsSize(callback: AsyncCallback&lt;number&gt;): void;
1497
1498获取GNSS芯片缓存位置的个数。
1499
1500**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
1501
1502**系统能力**:SystemCapability.Location.Location.Gnss
1503
1504**参数**:
1505
1506  | 参数名 | 类型 | 必填 | 说明 |
1507  | -------- | -------- | -------- | -------- |
1508  | callback | AsyncCallback&lt;number&gt; | 是 | 用来接收GNSS芯片缓存位置个数的回调。 |
1509
1510**错误码**:
1511
1512以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1513
1514| 错误码ID | 错误信息 |
1515| -------- | ---------------------------------------- |
1516|3301000 | Location service is unavailable.   |
1517|3301100 | The location switch is off.   |
1518
1519**示例**
1520
1521  ```ts
1522  import geoLocationManager from '@ohos.geoLocationManager';
1523  try {
1524      geoLocationManager.getCachedGnssLocationsSize((err, size) => {
1525          if (err) {
1526              console.log('getCachedGnssLocationsSize: err=' + JSON.stringify(err));
1527          }
1528          if (size) {
1529              console.log('getCachedGnssLocationsSize: size=' + JSON.stringify(size));
1530          }
1531      });
1532  } catch (err) {
1533      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1534  }
1535  ```
1536
1537
1538## geoLocationManager.getCachedGnssLocationsSize
1539
1540getCachedGnssLocationsSize(): Promise&lt;number&gt;;
1541
1542获取GNSS芯片缓存位置的个数。
1543
1544**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
1545
1546**系统能力**:SystemCapability.Location.Location.Gnss
1547
1548**返回值**:
1549
1550  | 参数名 | 类型 | 必填 | 说明 |
1551  | -------- | -------- | -------- | -------- |
1552  | Promise&lt;number&gt;  | number | NA | 返回GNSS缓存位置的个数。 |
1553
1554**错误码**:
1555
1556以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1557
1558| 错误码ID | 错误信息 |
1559| -------- | ---------------------------------------- |
1560|3301000 | Location service is unavailable.   |
1561|3301100 | The location switch is off.   |
1562
1563**示例**
1564
1565  ```ts
1566  import geoLocationManager from '@ohos.geoLocationManager';
1567  try {
1568      geoLocationManager.getCachedGnssLocationsSize().then((result) => {
1569          console.log('promise, getCachedGnssLocationsSize: ' + JSON.stringify(result));
1570      })
1571      .catch((error) => {
1572          console.log('promise, getCachedGnssLocationsSize: error=' + JSON.stringify(error));
1573      });
1574  } catch (err) {
1575      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1576  }
1577  ```
1578
1579
1580## geoLocationManager.flushCachedGnssLocations
1581
1582flushCachedGnssLocations(callback: AsyncCallback&lt;void&gt;): void;
1583
1584读取并清空GNSS芯片所有缓存位置。
1585
1586**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
1587
1588**系统能力**:SystemCapability.Location.Location.Gnss
1589
1590**参数**:
1591
1592  | 参数名 | 类型 | 必填 | 说明 |
1593  | -------- | -------- | -------- | -------- |
1594  | callback | AsyncCallback&lt;void&gt; | 是 | 用来接收错误码信息。 |
1595
1596**错误码**:
1597
1598以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1599
1600| 错误码ID | 错误信息 |
1601| -------- | ---------------------------------------- |
1602|3301000 | Location service is unavailable.   |
1603|3301100 | The location switch is off.   |
1604|3301200 | Failed to obtain the geographical location.   |
1605
1606**示例**
1607
1608  ```ts
1609  import geoLocationManager from '@ohos.geoLocationManager';
1610  try {
1611      geoLocationManager.flushCachedGnssLocations((err, result) => {
1612          if (err) {
1613              console.log('flushCachedGnssLocations: err=' + JSON.stringify(err));
1614          }
1615      });
1616  } catch (err) {
1617      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1618  }
1619  ```
1620
1621
1622## geoLocationManager.flushCachedGnssLocations
1623
1624flushCachedGnssLocations(): Promise&lt;void&gt;;
1625
1626读取并清空GNSS芯片所有缓存位置。
1627
1628**需要权限**:ohos.permission.APPROXIMATELY_LOCATION
1629
1630**系统能力**:SystemCapability.Location.Location.Gnss
1631
1632**返回值**:
1633
1634  | 参数名 | 类型 | 必填 | 说明 |
1635  | -------- | -------- | -------- | -------- |
1636  | Promise&lt;void&gt;  | void | NA | 接收错误码。 |
1637
1638**错误码**:
1639
1640以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1641
1642| 错误码ID | 错误信息 |
1643| -------- | ---------------------------------------- |
1644|3301000 | Location service is unavailable.   |
1645|3301100 | The location switch is off.   |
1646|3301200 | Failed to obtain the geographical location.   |
1647
1648**示例**
1649
1650  ```ts
1651  import geoLocationManager from '@ohos.geoLocationManager';
1652  try {
1653      geoLocationManager.flushCachedGnssLocations().then((result) => {
1654          console.log('promise, flushCachedGnssLocations success');
1655      })
1656      .catch((error) => {
1657          console.log('promise, flushCachedGnssLocations: error=' + JSON.stringify(error));
1658      });
1659  } catch (err) {
1660      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1661  }
1662  ```
1663
1664
1665## geoLocationManager.sendCommand
1666
1667sendCommand(command: LocationCommand, callback: AsyncCallback&lt;void&gt;): void;
1668
1669给位置服务子系统的各个部件发送扩展命令。
1670
1671**系统能力**:SystemCapability.Location.Location.Core
1672
1673**参数**:
1674
1675  | 参数名 | 类型 | 必填 | 说明 |
1676  | -------- | -------- | -------- | -------- |
1677  | command |  [LocationCommand](#locationcommand) | 是 | 指定目标场景,和将要发送的命令(字符串)。 |
1678  | callback | AsyncCallback&lt;void&gt; | 是 | 用来接收错误码。 |
1679
1680**错误码**:
1681
1682以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1683
1684| 错误码ID | 错误信息 |
1685| -------- | ---------------------------------------- |
1686|3301000 | Location service is unavailable.   |
1687
1688**示例**
1689
1690  ```ts
1691  import geoLocationManager from '@ohos.geoLocationManager';
1692  let requestInfo = {'scenario': 0x301, 'command': "command_1"};
1693  try {
1694      geoLocationManager.sendCommand(requestInfo, (err, result) => {
1695          if (err) {
1696              console.log('sendCommand: err=' + JSON.stringify(err));
1697          }
1698      });
1699  } catch (err) {
1700      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1701  }
1702  ```
1703
1704
1705## geoLocationManager.sendCommand
1706
1707sendCommand(command: LocationCommand): Promise&lt;void&gt;;
1708
1709给位置服务子系统的各个部件发送扩展命令。
1710
1711**系统能力**:SystemCapability.Location.Location.Core
1712
1713**参数**:
1714
1715  | 参数名 | 类型 | 必填 | 说明 |
1716  | -------- | -------- | -------- | -------- |
1717  | command | [LocationCommand](#locationcommand) | 是 | 指定目标场景,和将要发送的命令(字符串)。 |
1718
1719**返回值**:
1720
1721  | 参数名 | 类型 | 必填 | 说明 |
1722  | -------- | -------- | -------- | -------- |
1723  | Promise&lt;void&gt;  | void | NA | 接收错误码。 |
1724
1725**错误码**:
1726
1727以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1728
1729| 错误码ID | 错误信息 |
1730| -------- | ---------------------------------------- |
1731|3301000 | Location service is unavailable.                                            |
1732
1733**示例**
1734
1735  ```ts
1736  import geoLocationManager from '@ohos.geoLocationManager';
1737  let requestInfo = {'scenario': 0x301, 'command': "command_1"};
1738  try {
1739      geoLocationManager.sendCommand(requestInfo).then((result) => {
1740          console.log('promise, sendCommand success');
1741      })
1742      .catch((error) => {
1743          console.log('promise, sendCommand: error=' + JSON.stringify(error));
1744      });
1745  } catch (err) {
1746      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1747  }
1748  ```
1749
1750
1751## geoLocationManager.getCountryCode
1752
1753getCountryCode(callback: AsyncCallback&lt;CountryCode&gt;): void;
1754
1755查询当前的国家码。
1756
1757**系统能力**:SystemCapability.Location.Location.Core
1758
1759**参数**:
1760
1761  | 参数名 | 类型 | 必填 | 说明 |
1762  | -------- | -------- | -------- | -------- |
1763  | callback | AsyncCallback&lt;[CountryCode](#countrycode)&gt; | 是 | 用来接收国家码。 |
1764
1765**错误码**:
1766
1767以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1768
1769| 错误码ID | 错误信息 |
1770| -------- | ---------------------------------------- |
1771|3301000 | Location service is unavailable.                                            |
1772|3301500 | Failed to query the area information.|
1773
1774**示例**
1775
1776  ```ts
1777  import geoLocationManager from '@ohos.geoLocationManager';
1778  try {
1779      geoLocationManager.getCountryCode((err, result) => {
1780          if (err) {
1781              console.log('getCountryCode: err=' + JSON.stringify(err));
1782          }
1783          if (result) {
1784              console.log('getCountryCode: result=' + JSON.stringify(result));
1785          }
1786      });
1787  } catch (err) {
1788      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1789  }
1790  ```
1791
1792
1793## geoLocationManager.getCountryCode
1794
1795getCountryCode(): Promise&lt;CountryCode&gt;;
1796
1797查询当前的国家码。
1798
1799**系统能力**:SystemCapability.Location.Location.Core
1800
1801**返回值**:
1802
1803  | 参数名 | 类型 | 必填 | 说明 |
1804  | -------- | -------- | -------- | -------- |
1805  | Promise&lt;[CountryCode](#countrycode)&gt; | [CountryCode](#countrycode) | NA | 用来接收国家码。 |
1806
1807**错误码**:
1808
1809以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1810
1811| 错误码ID | 错误信息 |
1812| -------- | ---------------------------------------- |
1813|3301000 | Location service is unavailable.                                            |
1814|3301500 | Failed to query the area information.|
1815
1816**示例**
1817
1818  ```ts
1819  import geoLocationManager from '@ohos.geoLocationManager';
1820  try {
1821      geoLocationManager.getCountryCode()
1822      .then((result) => {
1823          console.log('promise, getCountryCode: result=' + JSON.stringify(result));
1824      })
1825      .catch((error) => {
1826          console.log('promise, getCountryCode: error=' + JSON.stringify(error));
1827      });
1828  } catch (err) {
1829      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1830  }
1831  ```
1832
1833
1834## geoLocationManager.enableLocationMock
1835
1836enableLocationMock(): void;
1837
1838使能位置模拟功能。
1839
1840**系统能力**:SystemCapability.Location.Location.Core
1841
1842**系统API**:此接口为系统接口,三方应用不支持调用。
1843
1844**错误码**:
1845
1846以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1847
1848| 错误码ID | 错误信息 |
1849| -------- | ---------------------------------------- |
1850|3301000 | Location service is unavailable.                                            |
1851|3301100 | The location switch is off.|
1852
1853**示例**
1854
1855  ```ts
1856  import geoLocationManager from '@ohos.geoLocationManager';
1857  try {
1858      geoLocationManager.enableLocationMock();
1859  } catch (err) {
1860      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1861  }
1862  ```
1863
1864
1865## geoLocationManager.disableLocationMock
1866
1867disableLocationMock(): void;
1868
1869去使能位置模拟功能。
1870
1871**系统能力**:SystemCapability.Location.Location.Core
1872
1873**系统API**:此接口为系统接口,三方应用不支持调用。
1874
1875**错误码**:
1876
1877以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1878
1879| 错误码ID | 错误信息 |
1880| -------- | ---------------------------------------- |
1881|3301000 | Location service is unavailable.                                            |
1882|3301100 | The location switch is off.|
1883
1884**示例**
1885
1886  ```ts
1887  import geoLocationManager from '@ohos.geoLocationManager';
1888  try {
1889      geoLocationManager.disableLocationMock();
1890  } catch (err) {
1891      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1892  }
1893  ```
1894
1895
1896## geoLocationManager.setMockedLocations
1897
1898setMockedLocations(config: LocationMockConfig): void;
1899
1900设置模拟的位置信息,后面会以该接口中携带的时间间隔上报模拟位置。
1901
1902该接口需要在调用[geoLocationManager.enableLocationMock](#geolocationmanagerenablelocationmock)之后才能调用。
1903
1904**系统能力**:SystemCapability.Location.Location.Core
1905
1906**系统API**:此接口为系统接口,三方应用不支持调用。
1907
1908**参数**:
1909
1910  | 参数名 | 类型 | 必填 | 说明 |
1911  | -------- | -------- | -------- | -------- |
1912  | config |  [LocationMockConfig](#locationmockconfig) | 是 | 指示位置模拟的配置参数,包含模拟位置上报的时间间隔和模拟位置数组。 |
1913
1914**错误码**:
1915
1916以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1917
1918| 错误码ID | 错误信息 |
1919| -------- | ---------------------------------------- |
1920|3301000 | Location service is unavailable.                                            |
1921|3301100 | The location switch is off.|
1922
1923**示例**
1924
1925  ```ts
1926  import geoLocationManager from '@ohos.geoLocationManager';
1927  let locations = [
1928      {"latitude": 30.12, "longitude": 120.11, "altitude": 123, "accuracy": 1, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 1000000000, "additionSize": 0, "isFromMock": true},
1929      {"latitude": 31.13, "longitude": 121.11, "altitude": 123, "accuracy": 2, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 2000000000, "additionSize": 0, "isFromMock": true},
1930      {"latitude": 32.14, "longitude": 122.11, "altitude": 123, "accuracy": 3, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 3000000000, "additionSize": 0, "isFromMock": true},
1931      {"latitude": 33.15, "longitude": 123.11, "altitude": 123, "accuracy": 4, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 4000000000, "additionSize": 0, "isFromMock": true},
1932      {"latitude": 34.16, "longitude": 124.11, "altitude": 123, "accuracy": 5, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 5000000000, "additionSize": 0, "isFromMock": true}
1933  ];
1934  let config = {"timeInterval": 5, "locations": locations};
1935  try {
1936      geoLocationManager.enableLocationMock();
1937      geoLocationManager.setMockedLocations(config);
1938  } catch (err) {
1939      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1940  }
1941  ```
1942
1943
1944## geoLocationManager.enableReverseGeocodingMock
1945
1946enableReverseGeocodingMock(): void;
1947
1948使能逆地理编码模拟功能。
1949
1950**系统能力**:SystemCapability.Location.Location.Core
1951
1952**系统API**:此接口为系统接口,三方应用不支持调用。
1953
1954**错误码**:
1955
1956以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1957
1958| 错误码ID | 错误信息 |
1959| -------- | ---------------------------------------- |
1960|3301000 | Location service is unavailable.                                            |
1961
1962**示例**
1963
1964  ```ts
1965  import geoLocationManager from '@ohos.geoLocationManager';
1966  try {
1967      geoLocationManager.enableReverseGeocodingMock();
1968  } catch (err) {
1969      console.error("errCode:" + err.code + ",errMessage:" + err.message);
1970  }
1971  ```
1972
1973
1974## geoLocationManager.disableReverseGeocodingMock
1975
1976disableReverseGeocodingMock(): void;
1977
1978去使能逆地理编码模拟功能。
1979
1980**系统能力**:SystemCapability.Location.Location.Core
1981
1982**系统API**:此接口为系统接口,三方应用不支持调用。
1983
1984**错误码**:
1985
1986以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
1987
1988| 错误码ID | 错误信息 |
1989| -------- | ---------------------------------------- |
1990|3301000 | Location service is unavailable.                                            |
1991
1992**示例**
1993
1994  ```ts
1995  import geoLocationManager from '@ohos.geoLocationManager';
1996  try {
1997      geoLocationManager.disableReverseGeocodingMock();
1998  } catch (err) {
1999      console.error("errCode:" + err.code + ",errMessage:" + err.message);
2000  }
2001  ```
2002
2003
2004## geoLocationManager.setReverseGeocodingMockInfo
2005
2006setReverseGeocodingMockInfo(mockInfos: Array&lt;ReverseGeocodingMockInfo&gt;): void;
2007
2008设置逆地理编码模拟功能的配置信息,包含了位置和地名的对应关系,后续进行逆地理编码查询时如果位置信息位于配置信息中,就返回对应的地名。
2009
2010该接口需要在调用[geoLocationManager.enableReverseGeocodingMock](#geolocationmanagerenablereversegeocodingmock)之后才能调用。
2011
2012**系统能力**:SystemCapability.Location.Location.Core
2013
2014**系统API**:此接口为系统接口,三方应用不支持调用。
2015
2016**参数**:
2017
2018  | 参数名 | 类型 | 必填 | 说明 |
2019  | -------- | -------- | -------- | -------- |
2020  | mockInfos | Array&lt;[ReverseGeocodingMockInfo](#reversegeocodingmockinfo)&gt; | 是 | 指示逆地理编码模拟功能的配置参数数组。逆地理编码模拟功能的配置参数包含了一个位置和一个地名。 |
2021
2022**错误码**:
2023
2024以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
2025
2026| 错误码ID | 错误信息 |
2027| -------- | ---------------------------------------- |
2028|3301000 | Location service is unavailable.                                            |
2029
2030**示例**
2031
2032  ```ts
2033  import geoLocationManager from '@ohos.geoLocationManager';
2034  let mockInfos = [
2035      {"location": {"locale": "zh", "latitude": 30.12, "longitude": 120.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 30.12, "longitude": 120.11, "maxItems": 1, "isFromMock": true}},
2036      {"location": {"locale": "zh", "latitude": 31.12, "longitude": 121.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 31.12, "longitude": 121.11, "maxItems": 1, "isFromMock": true}},
2037      {"location": {"locale": "zh", "latitude": 32.12, "longitude": 122.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 32.12, "longitude": 122.11, "maxItems": 1, "isFromMock": true}},
2038      {"location": {"locale": "zh", "latitude": 33.12, "longitude": 123.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 33.12, "longitude": 123.11, "maxItems": 1, "isFromMock": true}},
2039      {"location": {"locale": "zh", "latitude": 34.12, "longitude": 124.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 34.12, "longitude": 124.11, "maxItems": 1, "isFromMock": true}},
2040  ];
2041  try {
2042      geoLocationManager.enableReverseGeocodingMock();
2043      geoLocationManager.setReverseGeocodingMockInfo(mockInfos);
2044  } catch (err) {
2045      console.error("errCode:" + err.code + ",errMessage:" + err.message);
2046  }
2047  ```
2048
2049
2050## geoLocationManager.isLocationPrivacyConfirmed
2051
2052isLocationPrivacyConfirmed(type: LocationPrivacyType): boolean;
2053
2054查询用户是否同意定位服务隐私申明,是否同意启用定位服务。只有系统应用才能调用。
2055
2056**系统API**:此接口为系统接口,三方应用不支持调用。
2057
2058**系统能力**:SystemCapability.Location.Location.Core
2059
2060**参数**:
2061
2062  | 参数名 | 类型 | 必填 | 说明 |
2063  | -------- | -------- | -------- | -------- |
2064  | type |  [LocationPrivacyType](#locationprivacytype)| 是 | 指定隐私申明场景,例如开机向导中的隐私申明、开启网络定位功能时弹出的隐私申明等。 |
2065
2066**返回值**:
2067
2068  | 参数名 | 类型 | 必填 | 说明 |
2069  | -------- | -------- | -------- | -------- |
2070  | boolean  | boolean | NA | 表示用户是否同意定位服务隐私申明。 |
2071
2072**错误码**:
2073
2074以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
2075
2076| 错误码ID | 错误信息 |
2077| -------- | ---------------------------------------- |
2078|3301000 | Location service is unavailable.                                            |
2079
2080**示例**
2081
2082  ```ts
2083  import geoLocationManager from '@ohos.geoLocationManager';
2084  try {
2085      let isConfirmed = geoLocationManager.isLocationPrivacyConfirmed(1);
2086  } catch (err) {
2087      console.error("errCode:" + err.code + ",errMessage:" + err.message);
2088  }
2089  ```
2090
2091
2092## geoLocationManager.setLocationPrivacyConfirmStatus
2093
2094setLocationPrivacyConfirmStatus(type: LocationPrivacyType, isConfirmed: boolean): void;
2095
2096设置用户勾选定位服务隐私申明的状态,记录用户是否同意启用定位服务。只有系统应用才能调用。
2097
2098**系统API**:此接口为系统接口,三方应用不支持调用。
2099
2100**需要权限**:ohos.permission.MANAGE_SECURE_SETTINGS
2101
2102**系统能力**:SystemCapability.Location.Location.Core
2103
2104**参数**:
2105
2106  | 参数名 | 类型 | 必填 | 说明 |
2107  | -------- | -------- | -------- | -------- |
2108  | type | [LocationPrivacyType](#locationprivacytype) | 是 | 指定隐私申明场景,例如开机向导中的隐私申明、开启网络定位功能时弹出的隐私申明等。 |
2109  | isConfirmed | boolean | 是 | 表示用户是否同意定位服务隐私申明。 |
2110
2111**错误码**:
2112
2113以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。
2114
2115| 错误码ID | 错误信息 |
2116| -------- | ---------------------------------------- |
2117|3301000 | Location service is unavailable.                                            |
2118
2119**示例**
2120
2121  ```ts
2122  import geoLocationManager from '@ohos.geoLocationManager';
2123  try {
2124      geoLocationManager.setLocationPrivacyConfirmStatus(1, true);
2125  } catch (err) {
2126      console.error("errCode:" + err.code + ",errMessage:" + err.message);
2127  }
2128  ```
2129