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_LOCATION和ohos.permission.LOCATION;无法单独申请ohos.permission.LOCATION。 25 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_LOCATION和ohos.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<number> | 是 | 否 | 表示每个卫星的ID,数组类型。取值范围为大于等于0。 | 144| carrierToNoiseDensitys | Array<number> | 是 | 否 | 表示载波噪声功率谱密度比,即cn0。取值范围为大于0。 | 145| altitudes | Array<number> | 是 | 否 | 表示卫星高度角信息。单位是“度”,取值范围为-90到90。 | 146| azimuths | Array<number> | 是 | 否 | 表示方位角。单位是“度”,取值范围为0到360。 | 147| carrierFrequencies | Array<number> | 是 | 否 | 表示载波频率。单位是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<string> | 是 | 否 | 附加信息。 | 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<[Location](#location)> | 是 | 是 | 表示模拟位置数组。 | 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<Location>): 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<[Location](#location)> | 是 | 接收位置变化状态变化监听。 | 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<Location>): 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<[Location](#location)> | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 | 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<boolean>): void 412 413订阅位置服务状态变化。 414 415**系统能力**:SystemCapability.Location.Location.Core 416 417**参数:** 418 419 | 参数名 | 类型 | 必填 | 说明 | 420 | -------- | -------- | -------- | -------- | 421 | type | string | 是 | 设置事件类型。type为“locationEnabledChange”,表示位置服务状态。 | 422 | callback | Callback<boolean> | 是 | 接收位置服务状态变化监听。 | 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<boolean>): void; 450 451取消订阅位置服务状态变化。 452 453**系统能力**:SystemCapability.Location.Location.Core 454 455**参数**: 456 457 | 参数名 | 类型 | 必填 | 说明 | 458 | -------- | -------- | -------- | -------- | 459 | type | string | 是 | 设置事件类型。type为“locationEnabledChange”,表示位置服务状态。 | 460 | callback | Callback<boolean> | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 | 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<Array<Location>>): 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<boolean> | 是 | 接收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<Array<Location>>): 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<boolean> | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 | 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<SatelliteStatusInfo>): 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<[SatelliteStatusInfo](#satellitestatusinfo)> | 是 | 接收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<SatelliteStatusInfo>): 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<[SatelliteStatusInfo](#satellitestatusinfo)> | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 | 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<string>): void; 662 663订阅GNSS NMEA信息上报事件。 664 665**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 666 667**系统能力**:SystemCapability.Location.Location.Gnss 668 669**参数**: 670 671 | 参数名 | 类型 | 必填 | 说明 | 672 | -------- | -------- | -------- | -------- | 673 | type | string | 是 | 设置事件类型。type为“nmeaMessage”,表示订阅GNSS NMEA信息上报。 | 674 | callback | Callback<string> | 是 | 接收GNSS 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<string>): void; 705 706取消订阅GNSS NMEA信息上报事件。 707 708**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 709 710**系统能力**:SystemCapability.Location.Location.Gnss 711 712**参数**: 713 714 | 参数名 | 类型 | 必填 | 说明 | 715 | -------- | -------- | -------- | -------- | 716 | type | string | 是 | 设置事件类型。type为“nmeaMessage”,表示订阅GNSS NMEA信息上报。 | 717 | callback | Callback<string> | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 | 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<CountryCode>): void; 866 867订阅国家码信息变化事件。 868 869**系统能力**:SystemCapability.Location.Location.Core 870 871**参数**: 872 873 | 参数名 | 类型 | 必填 | 说明 | 874 | -------- | -------- | -------- | -------- | 875 | type | string | 是 | 设置事件类型。type为“countryCodeChange”,表示订阅国家码信息变化事件。 | 876 | callback | Callback<[CountryCode](#countrycode)> | 是 | 接收国家码信息上报。 | 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<CountryCode>): void; 907 908取消订阅国家码变化事件。 909 910**系统能力**:SystemCapability.Location.Location.Core 911 912**参数**: 913 914 | 参数名 | 类型 | 必填 | 说明 | 915 | -------- | -------- | -------- | -------- | 916 | type | string | 是 | 设置事件类型。type为“countryCodeChange”,表示取消订阅国家码信息变化事件。 | 917 | callback | Callback<[CountryCode](#countrycode)> | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 | 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<Location>): 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<[Location](#location)> | 是 | 用来接收位置信息的回调。 | 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<Location>): void; 997 998获取当前位置,通过callback方式异步返回结果。 999 1000**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 1001 1002**系统能力**:SystemCapability.Location.Location.Core 1003 1004**参数**: 1005 1006 | 参数名 | 类型 | 必填 | 说明 | 1007 | -------- | -------- | -------- | -------- | 1008 | callback | AsyncCallback<[Location](#location)> | 是 | 用来接收位置信息的回调。 | 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<Location> 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<[Location](#location)> | [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<void>): 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<void> | 是 | 用来接收错误码信息。 | 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<void> 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<void> | 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<Array<GeoAddress>>): void 1282 1283调用逆地理编码服务,将坐标转换为地理描述,使用callback回调异步返回结果。 1284 1285**系统能力**:SystemCapability.Location.Location.Geocoder 1286 1287**参数**: 1288 1289 | 参数名 | 类型 | 必填 | 说明 | 1290 | -------- | -------- | -------- | -------- | 1291 | request | [ReverseGeoCodeRequest](#reversegeocoderequest) | 是 | 设置逆地理编码请求的相关参数。 | 1292 | callback | AsyncCallback<Array<[GeoAddress](#geoaddress)>> | 是 | 接收逆地理编码结果的回调函数。 | 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<Array<GeoAddress>>; 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<Array<[GeoAddress](#geoaddress)>> | Array<[GeoAddress](#geoaddress)> | 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<Array<GeoAddress>>): void 1373 1374调用地理编码服务,将地理描述转换为具体坐标,使用callback回调异步返回结果。 1375 1376**系统能力**:SystemCapability.Location.Location.Geocoder 1377 1378**参数**: 1379 1380 | 参数名 | 类型 | 必填 | 说明 | 1381 | -------- | -------- | -------- | -------- | 1382 | request | [GeoCodeRequest](#geocoderequest) | 是 | 设置地理编码请求的相关参数。 | 1383 | callback | AsyncCallback<Array<[GeoAddress](#geoaddress)>> | 是 | 接收地理编码结果的回调函数。 | 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<Array<GeoAddress>> 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<Array<[GeoAddress](#geoaddress)>> | Array<[GeoAddress](#geoaddress)> | 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<number>): void; 1497 1498获取GNSS芯片缓存位置的个数。 1499 1500**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 1501 1502**系统能力**:SystemCapability.Location.Location.Gnss 1503 1504**参数**: 1505 1506 | 参数名 | 类型 | 必填 | 说明 | 1507 | -------- | -------- | -------- | -------- | 1508 | callback | AsyncCallback<number> | 是 | 用来接收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<number>; 1541 1542获取GNSS芯片缓存位置的个数。 1543 1544**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 1545 1546**系统能力**:SystemCapability.Location.Location.Gnss 1547 1548**返回值**: 1549 1550 | 参数名 | 类型 | 必填 | 说明 | 1551 | -------- | -------- | -------- | -------- | 1552 | Promise<number> | 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<void>): void; 1583 1584读取并清空GNSS芯片所有缓存位置。 1585 1586**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 1587 1588**系统能力**:SystemCapability.Location.Location.Gnss 1589 1590**参数**: 1591 1592 | 参数名 | 类型 | 必填 | 说明 | 1593 | -------- | -------- | -------- | -------- | 1594 | callback | AsyncCallback<void> | 是 | 用来接收错误码信息。 | 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<void>; 1625 1626读取并清空GNSS芯片所有缓存位置。 1627 1628**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 1629 1630**系统能力**:SystemCapability.Location.Location.Gnss 1631 1632**返回值**: 1633 1634 | 参数名 | 类型 | 必填 | 说明 | 1635 | -------- | -------- | -------- | -------- | 1636 | Promise<void> | 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<void>): void; 1668 1669给位置服务子系统的各个部件发送扩展命令。 1670 1671**系统能力**:SystemCapability.Location.Location.Core 1672 1673**参数**: 1674 1675 | 参数名 | 类型 | 必填 | 说明 | 1676 | -------- | -------- | -------- | -------- | 1677 | command | [LocationCommand](#locationcommand) | 是 | 指定目标场景,和将要发送的命令(字符串)。 | 1678 | callback | AsyncCallback<void> | 是 | 用来接收错误码。 | 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<void>; 1708 1709给位置服务子系统的各个部件发送扩展命令。 1710 1711**系统能力**:SystemCapability.Location.Location.Core 1712 1713**参数**: 1714 1715 | 参数名 | 类型 | 必填 | 说明 | 1716 | -------- | -------- | -------- | -------- | 1717 | command | [LocationCommand](#locationcommand) | 是 | 指定目标场景,和将要发送的命令(字符串)。 | 1718 1719**返回值**: 1720 1721 | 参数名 | 类型 | 必填 | 说明 | 1722 | -------- | -------- | -------- | -------- | 1723 | Promise<void> | 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<CountryCode>): void; 1754 1755查询当前的国家码。 1756 1757**系统能力**:SystemCapability.Location.Location.Core 1758 1759**参数**: 1760 1761 | 参数名 | 类型 | 必填 | 说明 | 1762 | -------- | -------- | -------- | -------- | 1763 | callback | AsyncCallback<[CountryCode](#countrycode)> | 是 | 用来接收国家码。 | 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<CountryCode>; 1796 1797查询当前的国家码。 1798 1799**系统能力**:SystemCapability.Location.Location.Core 1800 1801**返回值**: 1802 1803 | 参数名 | 类型 | 必填 | 说明 | 1804 | -------- | -------- | -------- | -------- | 1805 | Promise<[CountryCode](#countrycode)> | [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<ReverseGeocodingMockInfo>): 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<[ReverseGeocodingMockInfo](#reversegeocodingmockinfo)> | 是 | 指示逆地理编码模拟功能的配置参数数组。逆地理编码模拟功能的配置参数包含了一个位置和一个地名。 | 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