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) | 是 | 是 | 表示优先级信息。当scenario取值为UNSET时,priority参数生效,否则priority参数不生效;当scenario和priority均取值为UNSET时,无法发起定位请求。取值范围见[LocationRequestPriority](#locationrequestpriority)的定义。 | 114| scenario | [LocationRequestScenario](#locationrequestscenario) | 是 | 是 | 表示场景信息。当scenario取值为UNSET时,priority参数生效,否则priority参数不生效;当scenario和priority均取值为UNSET时,无法发起定位请求。取值范围见[LocationRequestScenario](#locationrequestscenario)的定义。 | 115| timeInterval | number | 是 | 是 | 表示上报位置信息的时间间隔,单位是秒。默认值为1,取值范围为大于等于0。 | 116| distanceInterval | number | 是 | 是 | 表示上报位置信息的距离间隔。单位是米,默认值为0,取值范围为大于等于0。 | 117| maxAccuracy | number | 是 | 是 | 表示精度信息,单位是米。仅在精确位置功能场景下有效,模糊位置功能生效场景下该字段无意义。默认值为0,取值范围为大于等于0。 | 118 119 120## CurrentLocationRequest 121 122当前位置信息请求类型。 123 124**系统能力**:SystemCapability.Location.Location.Core 125 126| 名称 | 类型 | 可读|可写 | 说明 | 127| -------- | -------- | -------- | -------- | -------- | 128| priority | [LocationRequestPriority](#locationrequestpriority) | 是 | 是 | 表示优先级信息。当scenario取值为UNSET时,priority参数生效,否则priority参数不生效;当scenario和priority均取值为UNSET时,无法发起定位请求。取值范围见[LocationRequestPriority](#locationrequestpriority)的定义。| 129| scenario | [LocationRequestScenario](#locationrequestscenario) | 是 | 是 | 表示场景信息。当scenario取值为UNSET时,priority参数生效,否则priority参数不生效;当scenario和priority均取值为UNSET时,无法发起定位请求。取值范围见[LocationRequestScenario](#locationrequestscenario)的定义。 | 130| maxAccuracy | number | 是 | 是| 表示精度信息,单位是米。仅在精确位置功能场景下有效,模糊位置功能生效场景下该字段无意义。默认值为0,取值范围为大于等于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## LocatingRequiredDataConfig<sup>10+</sup> 262 263获取定位所需数据时的配置参数。 264 265**系统能力**:SystemCapability.Location.Location.Core 266 267**系统API**:此接口为系统接口。 268 269| 名称 | 类型 | 可读|可写 | 说明 | 270| -------- | -------- | -------- | -------- | -------- | 271| type | [LocatingRequiredDataType](#locatingrequireddatatype10) | 是 | 是 | 表示请求获取数据的类型。 | 272| needStartScan | boolean | 是 | 是 | 表示是否需要发起扫描。 | 273| scanInterval | number | 是 | 是 | 表示扫描的时间间隔。单位是毫秒,默认值是10000毫秒,取值范围为大于0。 | 274| scanTimeout | number | 是 | 是 | 表示单次扫描的超时时间。单位是毫秒,默认值是10000毫秒,取值范围为大于0小于600000。 | 275 276 277## LocatingRequiredData<sup>10+</sup> 278 279表示定位业务所需的数据,包含WiFi或蓝牙扫描结果,APP拿到这些数据之后可以用于网络定位等业务。 280 281**系统能力**:SystemCapability.Location.Location.Core 282 283**系统API**:此接口为系统接口。 284 285| 名称 | 类型 | 可读|可写 | 说明 | 286| -------- | -------- | -------- | -------- | -------- | 287| wifiData | [WifiScanInfo](#wifiscaninfo10) | 是 | 否 | 表示WiFi扫描结果。 | 288| bluetoothData | [BluetoothScanInfo](#bluetoothscaninfo10) | 是 | 否 | 表示蓝牙扫描结果。 | 289 290 291## WifiScanInfo<sup>10+</sup> 292 293WiFi扫描信息,包含扫描到的WiFi热点的ssid、bssid和rssi等信息。 294 295**系统能力**:SystemCapability.Location.Location.Core 296 297**系统API**:此接口为系统接口。 298 299| 名称 | 类型 | 可读|可写 | 说明 | 300| -------- | -------- | -------- | -------- | -------- | 301| ssid | string | 是 | 否 | WiFi热点的SSID,编码格式为UTF-8。 | 302| bssid | string | 是 | 否 | WiFi热点的BSSID。 | 303| rssi | number | 是 | 否 | WiFi热点的信号强度(dBm)。 | 304| frequency | number | 是 | 否 | WiFi热点的频率。 | 305| timestamp | number | 是 | 否 | 时间戳。 | 306 307 308## BluetoothScanInfo<sup>10+</sup> 309 310蓝牙扫描信息。 311 312**系统能力**:SystemCapability.Location.Location.Core 313 314**系统API**:此接口为系统接口。 315 316| 名称 | 类型 | 可读|可写 | 说明 | 317| -------- | -------- | -------- | -------- | -------- | 318| deviceName | string | 是 | 否 | 蓝牙设备名称。 | 319| macAddress | string | 是 | 否 | 蓝牙设备的MAC地址。 | 320| rssi | number | 是 | 否 | 蓝牙设备的信号强度(dBm)。 | 321| timestamp | number | 是 | 否 | 时间戳。 | 322 323 324## LocationRequestPriority 325 326位置请求中位置信息优先级设置。 327 328**系统能力**:SystemCapability.Location.Location.Core 329 330| 名称 | 值 | 说明 | 331| -------- | -------- | -------- | 332| UNSET | 0x200 | 表示未设置优先级,表示[LocationRequestPriority](#locationrequestpriority)无效。 | 333| ACCURACY | 0x201 | 表示精度优先。<br/>定位精度优先策略主要以GNSS定位技术为主,在开阔场景下可以提供米级的定位精度,具体性能指标依赖用户设备的定位硬件能力,但在室内等强遮蔽定位场景下,无法提供准确的位置服务。 | 334| LOW_POWER | 0x202 | 表示低功耗优先。<br/>低功耗定位优先策略主要使用基站定位和WLAN、蓝牙定位技术,也可以同时提供室内和户外场景下的位置服务,因为其依赖周边基站、可见WLAN、蓝牙设备的分布情况,定位结果的精度波动范围较大,如果对定位结果精度要求不高,或者使用场景多在有基站、可见WLAN、蓝牙设备高密度分布的情况下,推荐使用,可以有效节省设备功耗。 | 335| FIRST_FIX | 0x203 | 表示快速获取位置优先,如果应用希望快速拿到一个位置,可以将优先级设置为该字段。<br/>快速定位优先策略会同时使用GNSS定位、基站定位和WLAN、蓝牙定位技术,以便室内和户外场景下,通过此策略都可以获得位置结果,当各种定位技术都有提供位置结果时,系统会选择其中精度较好的结果返回给应用。因为对各种定位技术同时使用,对设备的硬件资源消耗较大,功耗也较大。 | 336 337 338## LocationRequestScenario 339 340 位置请求中定位场景设置。 341 342**系统能力**:SystemCapability.Location.Location.Core 343 344| 名称 | 值 | 说明 | 345| -------- | -------- | -------- | 346| UNSET | 0x300 | 表示未设置场景信息。<br/>表示[LocationRequestScenario](#locationrequestscenario)字段无效。 | 347| NAVIGATION | 0x301 | 表示导航场景。<br/>适用于在户外定位设备实时位置的场景,如车载、步行导航。<br/>在此场景下,为保证系统提供位置结果精度最优,主要使用GNSS定位技术提供定位服务<br/>此场景默认以最小1秒间隔上报定位结果。 | 348| TRAJECTORY_TRACKING | 0x302 | 表示运动轨迹记录场景。<br/>适用于记录用户位置轨迹的场景,如运动类应用记录轨迹功能。主要使用GNSS定位技术提供定位服务。<br/>此场景默认以最小1秒间隔上报定位结果。 | 349| CAR_HAILING | 0x303 | 表示打车场景。<br/>适用于用户出行打车时定位当前位置的场景,如网约车类应用。<br/>此场景默认以最小1秒间隔上报定位结果。 | 350| DAILY_LIFE_SERVICE | 0x304 | 表示日常服务使用场景。<br/>适用于不需要定位用户精确位置的使用场景,如新闻资讯、网购、点餐类应用,做推荐、推送时定位用户大致位置即可。<br/>此场景默认以最小1秒间隔上报定位结果。 | 351| NO_POWER | 0x305 | 表示无功耗功场景,这种场景下不会主动触发定位,会在其他应用定位时,才给当前应用返回位置。 | 352 353 354## LocationPrivacyType 355 356定位服务隐私协议类型。 357 358**系统能力**:SystemCapability.Location.Location.Core 359 360**系统API**:此接口为系统接口。 361 362| 名称 | 值 | 说明 | 363| -------- | -------- | -------- | 364| OTHERS | 0 | 其他场景。预留字段。 | 365| STARTUP | 1 | 开机向导场景下的隐私协议。在开机时弹出协议,提醒用户阅读并选择是否授权。 | 366| CORE_LOCATION | 2 | 开启网络定位时弹出的隐私协议。 | 367 368 369## CountryCodeType 370 371国家码来源类型。 372 373**系统能力**:SystemCapability.Location.Location.Core 374 375| 名称 | 值 | 说明 | 376| -------- | -------- | -------- | 377| COUNTRY_CODE_FROM_LOCALE | 1 | 从全球化模块的语言配置信息中获取到的国家码。 | 378| COUNTRY_CODE_FROM_SIM | 2 | 从SIM卡中获取到的国家码。 | 379| COUNTRY_CODE_FROM_LOCATION | 3 | 基于用户的位置信息,通过逆地理编码查询到的国家码。 | 380| COUNTRY_CODE_FROM_NETWORK | 4 | 从蜂窝网络注册信息中获取到的国家码。 | 381 382 383## LocatingRequiredDataType<sup>10+</sup> 384 385定位业务所需数据的类型。 386 387**系统能力**:SystemCapability.Location.Location.Core 388 389**系统API**:此接口为系统接口。 390 391| 名称 | 值 | 说明 | 392| -------- | -------- | -------- | 393| WIFI | 1 | 表示WiFi扫描信息。 | 394| BLUETOOTH | 2 | 表示蓝牙扫描信息。 | 395 396 397## geoLocationManager.on('locationChange') 398 399on(type: 'locationChange', request: LocationRequest, callback: Callback<Location>): void 400 401开启位置变化订阅,并发起定位请求。 402 403**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 404 405**系统能力**:SystemCapability.Location.Location.Core 406 407**参数:** 408 409 | 参数名 | 类型 | 必填 | 说明 | 410 | -------- | -------- | -------- | -------- | 411 | type | string | 是 | 设置事件类型。type为“locationChange”,表示位置变化。 | 412 | request | [LocationRequest](#locationrequest) | 是 | 设置位置请求参数。 | 413 | callback | Callback<[Location](#location)> | 是 | 接收位置变化状态变化监听。 | 414 415**错误码**: 416 417以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 418 419| 错误码ID | 错误信息 | 420| -------- | ---------------------------------------- | 421|3301000 | Location service is unavailable. | 422|3301100 | The location switch is off. | 423|3301200 | Failed to obtain the geographical location. | 424 425**示例** 426 427 ```ts 428 import geoLocationManager from '@ohos.geoLocationManager'; 429 import BusinessError from "@ohos.base"; 430 let requestInfo:geoLocationManager.LocationRequest = {'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX, 'scenario': geoLocationManager.LocationRequestScenario.UNSET, 'timeInterval': 1, 'distanceInterval': 0, 'maxAccuracy': 0}; 431 let locationChange = (location:geoLocationManager.Location):void => { 432 console.log('locationChanger: data: ' + JSON.stringify(location)); 433 }; 434 try { 435 geoLocationManager.on('locationChange', requestInfo, locationChange); 436 } catch (err) { 437 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 438 } 439 440 ``` 441 442 443## geoLocationManager.off('locationChange') 444 445off(type: 'locationChange', callback?: Callback<Location>): void 446 447关闭位置变化订阅,并删除对应的定位请求。 448 449**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 450 451**系统能力**:SystemCapability.Location.Location.Core 452 453**参数:** 454 455 | 参数名 | 类型 | 必填 | 说明 | 456 | -------- | -------- | -------- | -------- | 457 | type | string | 是 | 设置事件类型。type为“locationChange”,表示位置变化。 | 458 | callback | Callback<[Location](#location)> | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 | 459 460**错误码**: 461 462以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 463 464| 错误码ID | 错误信息 | 465| -------- | ---------------------------------------- | 466|3301000 | Location service is unavailable. | 467|3301100 | The location switch is off. | 468|3301200 | Failed to obtain the geographical location. | 469 470**示例** 471 472 ```ts 473 import geoLocationManager from '@ohos.geoLocationManager'; 474 import BusinessError from "@ohos.base"; 475 let requestInfo:geoLocationManager.LocationRequest = {'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX, 'scenario': geoLocationManager.LocationRequestScenario.UNSET, 'timeInterval': 1, 'distanceInterval': 0, 'maxAccuracy': 0}; 476 let locationChange = (location:geoLocationManager.Location):void => { 477 console.log('locationChanger: data: ' + JSON.stringify(location)); 478 }; 479 try { 480 geoLocationManager.on('locationChange', requestInfo, locationChange); 481 geoLocationManager.off('locationChange', locationChange); 482 } catch (err) { 483 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 484 } 485 ``` 486 487 488## geoLocationManager.on('locationEnabledChange') 489 490on(type: 'locationEnabledChange', callback: Callback<boolean>): void 491 492订阅位置服务状态变化。 493 494**系统能力**:SystemCapability.Location.Location.Core 495 496**参数:** 497 498 | 参数名 | 类型 | 必填 | 说明 | 499 | -------- | -------- | -------- | -------- | 500 | type | string | 是 | 设置事件类型。type为“locationEnabledChange”,表示位置服务状态。 | 501 | callback | Callback<boolean> | 是 | 接收位置服务状态变化监听。 | 502 503**错误码**: 504 505以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 506 507| 错误码ID | 错误信息 | 508| -------- | ---------------------------------------- | 509|3301000 | Location service is unavailable. | 510 511**示例** 512 513 ```ts 514 import geoLocationManager from '@ohos.geoLocationManager'; 515 import BusinessError from "@ohos.base"; 516 let locationEnabledChange = (state:boolean):void => { 517 console.log('locationEnabledChange: ' + JSON.stringify(state)); 518 } 519 try { 520 geoLocationManager.on('locationEnabledChange', locationEnabledChange); 521 } catch (err) { 522 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 523 } 524 ``` 525 526 527## geoLocationManager.off('locationEnabledChange') 528 529off(type: 'locationEnabledChange', callback?: Callback<boolean>): void; 530 531取消订阅位置服务状态变化。 532 533**系统能力**:SystemCapability.Location.Location.Core 534 535**参数**: 536 537 | 参数名 | 类型 | 必填 | 说明 | 538 | -------- | -------- | -------- | -------- | 539 | type | string | 是 | 设置事件类型。type为“locationEnabledChange”,表示位置服务状态。 | 540 | callback | Callback<boolean> | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 | 541 542**错误码**: 543 544以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 545 546| 错误码ID | 错误信息 | 547| -------- | ---------------------------------------- | 548|3301000 | Location service is unavailable. | 549 550**示例** 551 552 ```ts 553 import geoLocationManager from '@ohos.geoLocationManager'; 554 import BusinessError from "@ohos.base"; 555 let locationEnabledChange = (state:boolean):void => { 556 console.log('locationEnabledChange: state: ' + JSON.stringify(state)); 557 } 558 try { 559 geoLocationManager.on('locationEnabledChange', locationEnabledChange); 560 geoLocationManager.off('locationEnabledChange', locationEnabledChange); 561 } catch (err) { 562 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 563 } 564 ``` 565 566 567## geoLocationManager.on('cachedGnssLocationsChange') 568 569on(type: 'cachedGnssLocationsChange', request: CachedGnssLocationsRequest, callback: Callback<Array<Location>>): void; 570 571订阅缓存GNSS定位结果上报事件。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。 572 573**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 574 575**系统能力**:SystemCapability.Location.Location.Gnss 576 577**参数**: 578 579 | 参数名 | 类型 | 必填 | 说明 | 580 | -------- | -------- | -------- | -------- | 581 | type | string | 是 | 设置事件类型。type为“cachedGnssLocationsChange”,表示GNSS缓存定位结果上报。 | 582 | request | [CachedGnssLocationsRequest](#cachedgnsslocationsrequest) | 是 | GNSS缓存功能配置参数 | 583 | callback | Callback<boolean> | 是 | 接收GNSS缓存位置上报。 | 584 585**错误码**: 586 587以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 588 589| 错误码ID | 错误信息 | 590| -------- | ---------------------------------------- | 591|3301000 | Location service is unavailable. | 592|3301100 | The location switch is off. | 593|3301200 | Failed to obtain the geographical location. | 594 595**示例** 596 597 ```ts 598 import geoLocationManager from '@ohos.geoLocationManager'; 599 import BusinessError from "@ohos.base"; 600 let cachedLocationsCb = (locations:Array<geoLocationManager.Location>):void => { 601 console.log('cachedGnssLocationsChange: locations: ' + JSON.stringify(locations)); 602 } 603 let requestInfo:geoLocationManager.CachedGnssLocationsRequest = {'reportingPeriodSec': 10, 'wakeUpCacheQueueFull': true}; 604 try { 605 geoLocationManager.on('cachedGnssLocationsChange', requestInfo, cachedLocationsCb); 606 } catch (err) { 607 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 608 } 609 ``` 610 611 612## geoLocationManager.off('cachedGnssLocationsChange') 613 614off(type: 'cachedGnssLocationsChange', callback?: Callback<Array<Location>>): void; 615 616取消订阅缓存GNSS定位结果上报事件。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。 617 618**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 619 620**系统能力**:SystemCapability.Location.Location.Gnss 621 622**参数**: 623 624 | 参数名 | 类型 | 必填 | 说明 | 625 | -------- | -------- | -------- | -------- | 626 | type | string | 是 | 设置事件类型。type为“cachedGnssLocationsChange”,表示GNSS缓存定位结果上报。 | 627 | callback | Callback<boolean> | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 | 628 629**错误码**: 630 631以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 632 633| 错误码ID | 错误信息 | 634| -------- | ---------------------------------------- | 635|3301000 | Location service is unavailable. | 636|3301100 | The location switch is off. | 637|3301200 | Failed to obtain the geographical location. | 638 639**示例** 640 641 ```ts 642 import geoLocationManager from '@ohos.geoLocationManager'; 643 import BusinessError from "@ohos.base"; 644 let cachedLocationsCb = (locations:Array<geoLocationManager.Location>):void => { 645 console.log('cachedGnssLocationsChange: locations: ' + JSON.stringify(locations)); 646 } 647 let requestInfo:geoLocationManager.CachedGnssLocationsRequest = {'reportingPeriodSec': 10, 'wakeUpCacheQueueFull': true}; 648 try { 649 geoLocationManager.on('cachedGnssLocationsChange', requestInfo, cachedLocationsCb); 650 geoLocationManager.off('cachedGnssLocationsChange'); 651 } catch (err) { 652 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 653 } 654 ``` 655 656 657## geoLocationManager.on('satelliteStatusChange') 658 659on(type: 'satelliteStatusChange', callback: Callback<SatelliteStatusInfo>): void; 660 661订阅GNSS卫星状态信息上报事件。 662 663**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 664 665**系统能力**:SystemCapability.Location.Location.Gnss 666 667**参数**: 668 669 | 参数名 | 类型 | 必填 | 说明 | 670 | -------- | -------- | -------- | -------- | 671 | type | string | 是 | 设置事件类型。type为“satelliteStatusChange”,表示订阅GNSS卫星状态信息上报。 | 672 | callback | Callback<[SatelliteStatusInfo](#satellitestatusinfo)> | 是 | 接收GNSS卫星状态信息上报。 | 673 674**错误码**: 675 676以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 677 678| 错误码ID | 错误信息 | 679| -------- | ---------------------------------------- | 680|3301000 | Location service is unavailable. | 681|3301100 | The location switch is off. | 682 683**示例** 684 685 ```ts 686 import geoLocationManager from '@ohos.geoLocationManager'; 687 import BusinessError from "@ohos.base"; 688 let gnssStatusCb = (satelliteStatusInfo:geoLocationManager.SatelliteStatusInfo):void => { 689 console.log('satelliteStatusChange: ' + JSON.stringify(satelliteStatusInfo)); 690 } 691 692 try { 693 geoLocationManager.on('satelliteStatusChange', gnssStatusCb); 694 } catch (err) { 695 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 696 } 697 ``` 698 699 700## geoLocationManager.off('satelliteStatusChange') 701 702off(type: 'satelliteStatusChange', callback?: Callback<SatelliteStatusInfo>): void; 703 704取消订阅GNSS卫星状态信息上报事件。 705 706**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 707 708**系统能力**:SystemCapability.Location.Location.Gnss 709 710**参数**: 711 712 | 参数名 | 类型 | 必填 | 说明 | 713 | -------- | -------- | -------- | -------- | 714 | type | string | 是 | 设置事件类型。type为“satelliteStatusChange”,表示订阅GNSS卫星状态信息上报。 | 715 | callback | Callback<[SatelliteStatusInfo](#satellitestatusinfo)> | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 | 716 717**错误码**: 718 719以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 720 721| 错误码ID | 错误信息 | 722| -------- | ---------------------------------------- | 723|3301000 | Location service is unavailable. | 724|3301100 | The location switch is off. | 725 726 727**示例** 728 729 ```ts 730 import geoLocationManager from '@ohos.geoLocationManager'; 731 import BusinessError from "@ohos.base"; 732 let gnssStatusCb = (satelliteStatusInfo:geoLocationManager.SatelliteStatusInfo):void => { 733 console.log('satelliteStatusChange: ' + JSON.stringify(satelliteStatusInfo)); 734 } 735 try { 736 geoLocationManager.on('satelliteStatusChange', gnssStatusCb); 737 geoLocationManager.off('satelliteStatusChange', gnssStatusCb); 738 } catch (err) { 739 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 740 } 741 ``` 742 743 744## geoLocationManager.on('nmeaMessage') 745 746on(type: 'nmeaMessage', callback: Callback<string>): void; 747 748订阅GNSS NMEA信息上报事件。 749 750**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 751 752**系统能力**:SystemCapability.Location.Location.Gnss 753 754**参数**: 755 756 | 参数名 | 类型 | 必填 | 说明 | 757 | -------- | -------- | -------- | -------- | 758 | type | string | 是 | 设置事件类型。type为“nmeaMessage”,表示订阅GNSS NMEA信息上报。 | 759 | callback | Callback<string> | 是 | 接收GNSS NMEA信息上报。 | 760 761**错误码**: 762 763以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 764 765| 错误码ID | 错误信息 | 766| -------- | ---------------------------------------- | 767|3301000 | Location service is unavailable. | 768|3301100 | The location switch is off. | 769 770 771**示例** 772 773 ```ts 774 import geoLocationManager from '@ohos.geoLocationManager'; 775 import BusinessError from "@ohos.base"; 776 let nmeaCb = (str:string):void => { 777 console.log('nmeaMessage: ' + JSON.stringify(str)); 778 } 779 780 try { 781 geoLocationManager.on('nmeaMessage', nmeaCb ); 782 } catch (err) { 783 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 784 } 785 ``` 786 787 788## geoLocationManager.off('nmeaMessage') 789 790off(type: 'nmeaMessage', callback?: Callback<string>): void; 791 792取消订阅GNSS NMEA信息上报事件。 793 794**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 795 796**系统能力**:SystemCapability.Location.Location.Gnss 797 798**参数**: 799 800 | 参数名 | 类型 | 必填 | 说明 | 801 | -------- | -------- | -------- | -------- | 802 | type | string | 是 | 设置事件类型。type为“nmeaMessage”,表示订阅GNSS NMEA信息上报。 | 803 | callback | Callback<string> | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 | 804 805**错误码**: 806 807以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 808 809| 错误码ID | 错误信息 | 810| -------- | ---------------------------------------- | 811|3301000 | Location service is unavailable. | 812|3301100 | The location switch is off. | 813 814 815**示例** 816 817 ```ts 818 import geoLocationManager from '@ohos.geoLocationManager'; 819 import BusinessError from "@ohos.base"; 820 let nmeaCb = (str:string):void => { 821 console.log('nmeaMessage: ' + JSON.stringify(str)); 822 } 823 824 try { 825 geoLocationManager.on('nmeaMessage', nmeaCb); 826 geoLocationManager.off('nmeaMessage', nmeaCb); 827 } catch (err) { 828 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 829 } 830 ``` 831 832 833## geoLocationManager.on('gnssFenceStatusChange') 834 835on(type: 'gnssFenceStatusChange', request: GeofenceRequest, want: WantAgent): void; 836 837添加一个围栏,并订阅地理围栏事件。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。 838 839**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 840 841**系统能力**:SystemCapability.Location.Location.Geofence 842 843**参数**: 844 845 | 参数名 | 类型 | 必填 | 说明 | 846 | -------- | -------- | -------- | -------- | 847 | type | string | 是 | 设置事件类型。type为“gnssFenceStatusChange”,表示订阅围栏事件上报。 | 848 | request | [GeofenceRequest](#geofencerequest) | 是 | 围栏的配置参数。 | 849 | want | [WantAgent](js-apis-app-ability-wantAgent.md) | 是 | 用于接收地理围栏事件上报(进出围栏)。 | 850 851**错误码**: 852 853以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 854 855| 错误码ID | 错误信息 | 856| -------- | ---------------------------------------- | 857|3301000 | Location service is unavailable. | 858|3301100 | The location switch is off. | 859|3301600 | Failed to operate the geofence. | 860 861**示例** 862 863 ```ts 864 import geoLocationManager from '@ohos.geoLocationManager'; 865 import wantAgent from '@ohos.app.ability.wantAgent'; 866 import BusinessError from "@ohos.base"; 867 868 let wantAgentInfo:wantAgent.WantAgentInfo = { 869 wants: [ 870 { 871 bundleName: "com.example.myapplication", 872 abilityName: "EntryAbility", 873 action: "action1" 874 } 875 ], 876 operationType: wantAgent.OperationType.START_ABILITY, 877 requestCode: 0, 878 wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 879 }; 880 881 wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { 882 let requestInfo:geoLocationManager.GeofenceRequest = {'scenario': 0x301, "geofence": {"latitude": 121, "longitude": 26, "radius": 100, "expiration": 10000}}; 883 try { 884 geoLocationManager.on('gnssFenceStatusChange', requestInfo, wantAgentObj); 885 } catch (err) { 886 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 887 } 888 }); 889 ``` 890 891 892## geoLocationManager.off('gnssFenceStatusChange') 893 894off(type: 'gnssFenceStatusChange', request: GeofenceRequest, want: WantAgent): void; 895 896删除一个围栏,并取消订阅该围栏事件。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。 897 898**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 899 900**系统能力**:SystemCapability.Location.Location.Geofence 901 902**参数**: 903 904 | 参数名 | 类型 | 必填 | 说明 | 905 | -------- | -------- | -------- | -------- | 906 | type | string | 是 | 设置事件类型。type为“gnssFenceStatusChange”,表示订阅围栏事件上报。 | 907 | request | [GeofenceRequest](#geofencerequest) | 是 | 围栏的配置参数。 | 908 | want | [WantAgent](js-apis-app-ability-wantAgent.md) | 是 | 用于接收地理围栏事件上报(进出围栏)。 | 909 910**错误码**: 911 912以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 913 914| 错误码ID | 错误信息 | 915| -------- | ---------------------------------------- | 916|3301000 | Location service is unavailable. | 917|3301100 | The location switch is off. | 918|3301600 | Failed to operate the geofence. | 919 920**示例** 921 922 ```ts 923 import geoLocationManager from '@ohos.geoLocationManager'; 924 import wantAgent from '@ohos.app.ability.wantAgent'; 925 import BusinessError from "@ohos.base"; 926 927 let wantAgentInfo:wantAgent.WantAgentInfo = { 928 wants: [ 929 { 930 bundleName: "com.example.myapplication", 931 abilityName: "EntryAbility", 932 action: "action1", 933 } 934 ], 935 operationType: wantAgent.OperationType.START_ABILITY, 936 requestCode: 0, 937 wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 938 }; 939 940 wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { 941 let requestInfo:geoLocationManager.GeofenceRequest = {'scenario': 0x301, "geofence": {"latitude": 121, "longitude": 26, "radius": 100, "expiration": 10000}};; 942 try { 943 geoLocationManager.on('gnssFenceStatusChange', requestInfo, wantAgentObj); 944 geoLocationManager.off('gnssFenceStatusChange', requestInfo, wantAgentObj); 945 } catch (err) { 946 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 947 } 948 }); 949 ``` 950 951 952## geoLocationManager.on('countryCodeChange') 953 954on(type: 'countryCodeChange', callback: Callback<CountryCode>): void; 955 956订阅国家码信息变化事件。 957 958**系统能力**:SystemCapability.Location.Location.Core 959 960**参数**: 961 962 | 参数名 | 类型 | 必填 | 说明 | 963 | -------- | -------- | -------- | -------- | 964 | type | string | 是 | 设置事件类型。type为“countryCodeChange”,表示订阅国家码信息变化事件。 | 965 | callback | Callback<[CountryCode](#countrycode)> | 是 | 接收国家码信息上报。 | 966 967**错误码**: 968 969以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 970 971| 错误码ID | 错误信息 | 972| -------- | ---------------------------------------- | 973|3301000 | Location service is unavailable. | 974|3301500 | Failed to query the area information. | 975 976 977**示例** 978 979 ```ts 980 import geoLocationManager from '@ohos.geoLocationManager'; 981 import BusinessError from "@ohos.base"; 982 let callback = (code:geoLocationManager.CountryCode):void => { 983 console.log('countryCodeChange: ' + JSON.stringify(code)); 984 } 985 986 try { 987 geoLocationManager.on('countryCodeChange', callback); 988 } catch (err) { 989 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 990 } 991 ``` 992 993 994## geoLocationManager.off('countryCodeChange') 995 996off(type: 'countryCodeChange', callback?: Callback<CountryCode>): void; 997 998取消订阅国家码变化事件。 999 1000**系统能力**:SystemCapability.Location.Location.Core 1001 1002**参数**: 1003 1004 | 参数名 | 类型 | 必填 | 说明 | 1005 | -------- | -------- | -------- | -------- | 1006 | type | string | 是 | 设置事件类型。type为“countryCodeChange”,表示取消订阅国家码信息变化事件。 | 1007 | callback | Callback<[CountryCode](#countrycode)> | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 | 1008 1009**错误码**: 1010 1011以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1012 1013| 错误码ID | 错误信息 | 1014| -------- | ---------------------------------------- | 1015|3301000 | Location service is unavailable. | 1016|3301500 | Failed to query the area information. | 1017 1018**示例** 1019 1020 ```ts 1021 import geoLocationManager from '@ohos.geoLocationManager'; 1022 import BusinessError from "@ohos.base"; 1023 let callback = (code:geoLocationManager.CountryCode):void => { 1024 console.log('countryCodeChange: ' + JSON.stringify(code)); 1025 } 1026 1027 try { 1028 geoLocationManager.on('countryCodeChange', callback); 1029 geoLocationManager.off('countryCodeChange', callback); 1030 } catch (err) { 1031 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1032 } 1033 ``` 1034 1035 1036## geoLocationManager.on('locatingRequiredDataChange')<sup>10+</sup> 1037 1038on(type: 'locatingRequiredDataChange', config: LocatingRequiredDataConfig, callback: Callback<Array<LocatingRequiredData>>): void; 1039 1040订阅定位业务所需数据的变化,主要包含WiFi和蓝牙扫描信息;根据入参决定是否启动WiFi和蓝牙扫描。 1041 1042**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 1043 1044**系统能力**:SystemCapability.Location.Location.Core 1045 1046**系统API**:此接口为系统接口。 1047 1048**参数**: 1049 1050 | 参数名 | 类型 | 必填 | 说明 | 1051 | -------- | -------- | -------- | -------- | 1052 | type | string | 是 | 设置事件类型。type为“locatingRequiredDataChange”,表示订阅定位业务所需数据的变化。 | 1053 | config | [LocatingRequiredDataConfig](#locatingrequireddataconfig10) | 是 | 表示获取定位所需数据时的配置参数。 | 1054 | callback | Callback<Array<[LocatingRequiredData](#locatingrequireddata10)>> | 是 | 接收定位业务所需数据的上报。 | 1055 1056**错误码**: 1057 1058以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1059 1060| 错误码ID | 错误信息 | 1061| -------- | ---------------------------------------- | 1062|3301800 | Failed to start WiFi or Bluetooth scanning. | 1063 1064**示例** 1065 1066 ```ts 1067 import geoLocationManager from '@ohos.geoLocationManager'; 1068 import BusinessError from "@ohos.base"; 1069 let callback = (code:Array<geoLocationManager.LocatingRequiredData>):void => { 1070 console.log('locatingRequiredDataChange: ' + JSON.stringify(code)); 1071 } 1072 let config:geoLocationManager.LocatingRequiredDataConfig = {'type': 1, 'needStartScan': true, 'scanInterval': 10000}; 1073 try { 1074 geoLocationManager.on('locatingRequiredDataChange', config, callback); 1075 } catch (err) { 1076 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1077 } 1078 ``` 1079 1080 1081## geoLocationManager.off('locatingRequiredDataChange')<sup>10+</sup> 1082 1083off(type: 'locatingRequiredDataChange', callback?: Callback<Array<LocatingRequiredData>>): void; 1084 1085取消订阅定位业务所需数据的变化,并停止WiFi和蓝牙扫描。 1086 1087**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 1088 1089**系统能力**:SystemCapability.Location.Location.Core 1090 1091**系统API**:此接口为系统接口。 1092 1093**参数**: 1094 1095 | 参数名 | 类型 | 必填 | 说明 | 1096 | -------- | -------- | -------- | -------- | 1097 | type | string | 是 | 设置事件类型。type为“locatingRequiredDataChange”,表示取消订阅定位业务所需数据的变化。 | 1098 | callback | Callback<Array<[LocatingRequiredData](#locatingrequireddata10)>> | 否 | 需要取消订阅的回调函数。若无此参数,则取消当前类型的所有订阅。 | 1099 1100**错误码**: 1101 1102错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1103 1104**示例** 1105 1106 ```ts 1107 import geoLocationManager from '@ohos.geoLocationManager'; 1108 import BusinessError from "@ohos.base"; 1109 let callback = (code:Array<geoLocationManager.LocatingRequiredData>):void => { 1110 console.log('locatingRequiredDataChange: ' + JSON.stringify(code)); 1111 } 1112 let config:geoLocationManager.LocatingRequiredDataConfig = {'type': 1, 'needStartScan': true, 'scanInterval': 10000}; 1113 try { 1114 geoLocationManager.on('locatingRequiredDataChange', config, callback); 1115 geoLocationManager.off('locatingRequiredDataChange', callback); 1116 } catch (err) { 1117 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1118 } 1119 ``` 1120 1121 1122## geoLocationManager.getCurrentLocation 1123 1124getCurrentLocation(request: CurrentLocationRequest, callback: AsyncCallback<Location>): void 1125 1126获取当前位置,使用callback回调异步返回结果。 1127 1128**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 1129 1130**系统能力**:SystemCapability.Location.Location.Core 1131 1132**参数**: 1133 1134 | 参数名 | 类型 | 必填 | 说明 | 1135 | -------- | -------- | -------- | -------- | 1136 | request | [CurrentLocationRequest](#currentlocationrequest) | 是 | 设置位置请求参数。 | 1137 | callback | AsyncCallback<[Location](#location)> | 是 | 用来接收位置信息的回调。 | 1138 1139**错误码**: 1140 1141以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1142 1143| 错误码ID | 错误信息 | 1144| -------- | ---------------------------------------- | 1145|3301000 | Location service is unavailable. | 1146|3301100 | The location switch is off. | 1147|3301200 | Failed to obtain the geographical location. | 1148 1149**示例** 1150 1151 ```ts 1152 import geoLocationManager from '@ohos.geoLocationManager'; 1153 import BusinessError from "@ohos.base"; 1154 let requestInfo:geoLocationManager.CurrentLocationRequest = {'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX, 'scenario': geoLocationManager.LocationRequestScenario.UNSET,'maxAccuracy': 0}; 1155 let locationChange = (err:BusinessError.BusinessError, location:geoLocationManager.Location):void => { 1156 if (err) { 1157 console.log('locationChanger: err=' + JSON.stringify(err)); 1158 } 1159 if (location) { 1160 console.log('locationChanger: location=' + JSON.stringify(location)); 1161 } 1162 }; 1163 1164 try { 1165 geoLocationManager.getCurrentLocation(requestInfo, locationChange); 1166 } catch (err) { 1167 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1168 } 1169 ``` 1170 1171## geoLocationManager.getCurrentLocation 1172 1173getCurrentLocation(callback: AsyncCallback<Location>): void; 1174 1175获取当前位置,通过callback方式异步返回结果。 1176 1177**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 1178 1179**系统能力**:SystemCapability.Location.Location.Core 1180 1181**参数**: 1182 1183 | 参数名 | 类型 | 必填 | 说明 | 1184 | -------- | -------- | -------- | -------- | 1185 | callback | AsyncCallback<[Location](#location)> | 是 | 用来接收位置信息的回调。 | 1186 1187**错误码**: 1188 1189以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1190 1191| 错误码ID | 错误信息 | 1192| -------- | ---------------------------------------- | 1193|3301000 | Location service is unavailable. | 1194|3301100 | The location switch is off. | 1195|3301200 | Failed to obtain the geographical location. | 1196 1197**示例** 1198 1199 ```ts 1200 import geoLocationManager from '@ohos.geoLocationManager'; 1201 import BusinessError from "@ohos.base"; 1202 let locationChange = (err:BusinessError.BusinessError, location:geoLocationManager.Location) => { 1203 if (err) { 1204 console.log('locationChanger: err=' + JSON.stringify(err)); 1205 } 1206 if (location) { 1207 console.log('locationChanger: location=' + JSON.stringify(location)); 1208 } 1209 }; 1210 1211 try { 1212 geoLocationManager.getCurrentLocation(locationChange); 1213 } catch (err) { 1214 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1215 } 1216 ``` 1217 1218## geoLocationManager.getCurrentLocation 1219 1220getCurrentLocation(request?: CurrentLocationRequest): Promise<Location> 1221 1222获取当前位置,使用Promise方式异步返回结果。 1223 1224**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 1225 1226**系统能力**:SystemCapability.Location.Location.Core 1227 1228**参数**: 1229 1230 | 参数名 | 类型 | 必填 | 说明 | 1231 | -------- | -------- | -------- | -------- | 1232 | request | [CurrentLocationRequest](#currentlocationrequest) | 否 | 设置位置请求参数。 | 1233 1234**返回值**: 1235 1236 | 参数名 | 类型 | 必填 | 说明 | 1237 | -------- | -------- | -------- | -------- | 1238 | Promise<[Location](#location)> | [Location](#location) | NA | 返回位置信息。 | 1239 1240**错误码**: 1241 1242以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1243 1244| 错误码ID | 错误信息 | 1245| -------- | ---------------------------------------- | 1246|3301000 | Location service is unavailable. | 1247|3301100 | The location switch is off. | 1248|3301200 | Failed to obtain the geographical location. | 1249 1250**示例** 1251 1252 ```ts 1253 import geoLocationManager from '@ohos.geoLocationManager'; 1254 import BusinessError from "@ohos.base"; 1255 let requestInfo:geoLocationManager.CurrentLocationRequest = {'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX, 'scenario': geoLocationManager.LocationRequestScenario.UNSET,'maxAccuracy': 0}; 1256 try { 1257 geoLocationManager.getCurrentLocation(requestInfo).then((result) => { 1258 console.log('current location: ' + JSON.stringify(result)); 1259 }) 1260 .catch((error:number) => { 1261 console.log('promise, getCurrentLocation: error=' + JSON.stringify(error)); 1262 }); 1263 } catch (err) { 1264 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1265 } 1266 ``` 1267 1268 1269## geoLocationManager.getLastLocation 1270 1271getLastLocation(): Location 1272 1273获取上一次位置。 1274 1275**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 1276 1277**系统能力**:SystemCapability.Location.Location.Core 1278 1279**返回值**: 1280 1281 | 参数名 | 类型 | 必填 | 说明 | 1282 | -------- | -------- | -------- | -------- | 1283 | Location | [Location](#location) | NA | 位置信息。 | 1284 1285**错误码**: 1286 1287以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1288 1289| 错误码ID | 错误信息 | 1290| -------- | ---------------------------------------- | 1291|3301000 | Location service is unavailable. | 1292|3301100 | The location switch is off. | 1293|3301200 |Failed to obtain the geographical location. | 1294 1295**示例** 1296 1297 ```ts 1298 import geoLocationManager from '@ohos.geoLocationManager'; 1299 import BusinessError from "@ohos.base"; 1300 try { 1301 let location = geoLocationManager.getLastLocation(); 1302 } catch (err) { 1303 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1304 } 1305 ``` 1306 1307 1308## geoLocationManager.isLocationEnabled 1309 1310isLocationEnabled(): boolean 1311 1312判断位置服务是否已经使能。 1313 1314**系统能力**:SystemCapability.Location.Location.Core 1315 1316**返回值**: 1317 1318 | 参数名 | 类型 | 必填 | 说明 | 1319 | -------- | -------- | -------- | -------- | 1320 | boolean | boolean | NA | 位置服务是否已经使能。 | 1321 1322**错误码**: 1323 1324以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1325 1326| 错误码ID | 错误信息 | 1327| -------- | ---------------------------------------- | 1328|3301000 | Location service is unavailable. | 1329 1330**示例** 1331 1332 ```ts 1333 import geoLocationManager from '@ohos.geoLocationManager'; 1334 import BusinessError from "@ohos.base"; 1335 try { 1336 let locationEnabled = geoLocationManager.isLocationEnabled(); 1337 } catch (err) { 1338 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1339 } 1340 ``` 1341 1342 1343## geoLocationManager.enableLocation 1344 1345enableLocation(callback: AsyncCallback<void>): void; 1346 1347打开位置服务,使用callback回调异步返回结果。 1348 1349**系统API**:此接口为系统接口。 1350 1351**需要权限**:ohos.permission.MANAGE_SECURE_SETTINGS 1352 1353**系统能力**:SystemCapability.Location.Location.Core 1354 1355**参数**: 1356 1357 | 参数名 | 类型 | 必填 | 说明 | 1358 | -------- | -------- | -------- | -------- | 1359 | callback | AsyncCallback<void> | 是 | 用来接收错误码信息。 | 1360 1361**错误码**: 1362 1363以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1364 1365| 错误码ID | 错误信息 | 1366| -------- | ---------------------------------------- | 1367|3301000 | Location service is unavailable. | 1368 1369**示例** 1370 1371 ```ts 1372 import geoLocationManager from '@ohos.geoLocationManager'; 1373 import BusinessError from "@ohos.base"; 1374 try { 1375 geoLocationManager.enableLocation((err, data) => { 1376 if (err) { 1377 console.log('enableLocation: err=' + JSON.stringify(err)); 1378 } 1379 }); 1380 } catch (err) { 1381 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1382 } 1383 ``` 1384 1385 1386## geoLocationManager.enableLocation 1387 1388enableLocation(): Promise<void> 1389 1390打开位置服务,使用Promise方式异步返回结果。 1391 1392**系统API**:此接口为系统接口。 1393 1394**需要权限**:ohos.permission.MANAGE_SECURE_SETTINGS 1395 1396**系统能力**:SystemCapability.Location.Location.Core 1397 1398**返回值**: 1399 1400 | 参数名 | 类型 | 必填 | 说明 | 1401 | -------- | -------- | -------- | -------- | 1402 | Promise<void> | void | NA | 返回错误码信息。 | 1403 1404**错误码**: 1405 1406以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1407 1408| 错误码ID | 错误信息 | 1409| -------- | ---------------------------------------- | 1410|3301000 | Location service is unavailable. | 1411 1412**示例** 1413 1414 ```ts 1415 import geoLocationManager from '@ohos.geoLocationManager'; 1416 import BusinessError from "@ohos.base"; 1417 try { 1418 geoLocationManager.enableLocation().then((result) => { 1419 console.log('promise, enableLocation succeed'); 1420 }) 1421 .catch((error:number) => { 1422 console.log('promise, enableLocation: error=' + JSON.stringify(error)); 1423 }); 1424 } catch (err) { 1425 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1426 } 1427 ``` 1428 1429## geoLocationManager.disableLocation 1430 1431disableLocation(): void; 1432 1433关闭位置服务。 1434 1435**系统API**:此接口为系统接口。 1436 1437**需要权限**:ohos.permission.MANAGE_SECURE_SETTINGS 1438 1439**系统能力**:SystemCapability.Location.Location.Core 1440 1441**错误码**: 1442 1443以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1444 1445| 错误码ID | 错误信息 | 1446| -------- | ---------------------------------------- | 1447|3301000 | Location service is unavailable. | 1448 1449**示例** 1450 1451 ```ts 1452 import geoLocationManager from '@ohos.geoLocationManager'; 1453 import BusinessError from "@ohos.base"; 1454 try { 1455 geoLocationManager.disableLocation(); 1456 } catch (err) { 1457 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1458 } 1459 ``` 1460 1461 1462## geoLocationManager.getAddressesFromLocation 1463 1464getAddressesFromLocation(request: ReverseGeoCodeRequest, callback: AsyncCallback<Array<GeoAddress>>): void 1465 1466调用逆地理编码服务,将坐标转换为地理描述,使用callback回调异步返回结果。 1467 1468**系统能力**:SystemCapability.Location.Location.Geocoder 1469 1470**参数**: 1471 1472 | 参数名 | 类型 | 必填 | 说明 | 1473 | -------- | -------- | -------- | -------- | 1474 | request | [ReverseGeoCodeRequest](#reversegeocoderequest) | 是 | 设置逆地理编码请求的相关参数。 | 1475 | callback | AsyncCallback<Array<[GeoAddress](#geoaddress)>> | 是 | 接收逆地理编码结果的回调函数。 | 1476 1477**错误码**: 1478 1479以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1480 1481| 错误码ID | 错误信息 | 1482| -------- | ---------------------------------------- | 1483|3301000 | Location service is unavailable. | 1484|3301300 | Reverse geocoding query failed. | 1485 1486**示例** 1487 1488 ```ts 1489 import geoLocationManager from '@ohos.geoLocationManager'; 1490 import BusinessError from "@ohos.base"; 1491 let reverseGeocodeRequest:geoLocationManager.ReverseGeoCodeRequest = {"latitude": 31.12, "longitude": 121.11, "maxItems": 1}; 1492 try { 1493 geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest, (err, data) => { 1494 if (err) { 1495 console.log('getAddressesFromLocation: err=' + JSON.stringify(err)); 1496 } 1497 if (data) { 1498 console.log('getAddressesFromLocation: data=' + JSON.stringify(data)); 1499 } 1500 }); 1501 } catch (err) { 1502 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1503 } 1504 ``` 1505 1506 1507## geoLocationManager.getAddressesFromLocation 1508 1509getAddressesFromLocation(request: ReverseGeoCodeRequest): Promise<Array<GeoAddress>>; 1510 1511调用逆地理编码服务,将坐标转换为地理描述,使用Promise方式异步返回结果。 1512 1513**系统能力**:SystemCapability.Location.Location.Geocoder 1514 1515**参数**: 1516 1517 | 参数名 | 类型 | 必填 | 说明 | 1518 | -------- | -------- | -------- | -------- | 1519 | request | [ReverseGeoCodeRequest](#reversegeocoderequest) | 是 | 设置逆地理编码请求的相关参数。 | 1520 1521**返回值**: 1522 1523 | 参数名 | 类型 | 必填 | 说明 | 1524 | -------- | -------- | -------- | -------- | 1525 | Promise<Array<[GeoAddress](#geoaddress)>> | Array<[GeoAddress](#geoaddress)> | NA | 返回地理描述信息。 | 1526 1527**错误码**: 1528 1529以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1530 1531| 错误码ID | 错误信息 | 1532| -------- | ---------------------------------------- | 1533|3301000 | Location service is unavailable. | 1534|3301300 | Reverse geocoding query failed. | 1535 1536**示例** 1537 1538 ```ts 1539 import geoLocationManager from '@ohos.geoLocationManager'; 1540 import BusinessError from "@ohos.base"; 1541 let reverseGeocodeRequest:geoLocationManager.ReverseGeoCodeRequest = {"latitude": 31.12, "longitude": 121.11, "maxItems": 1}; 1542 try { 1543 geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest).then((data) => { 1544 console.log('getAddressesFromLocation: ' + JSON.stringify(data)); 1545 }) 1546 .catch((error:number) => { 1547 console.log('promise, getAddressesFromLocation: error=' + JSON.stringify(error)); 1548 }); 1549 } catch (err) { 1550 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1551 } 1552 ``` 1553 1554 1555## geoLocationManager.getAddressesFromLocationName 1556 1557getAddressesFromLocationName(request: GeoCodeRequest, callback: AsyncCallback<Array<GeoAddress>>): void 1558 1559调用地理编码服务,将地理描述转换为具体坐标,使用callback回调异步返回结果。 1560 1561**系统能力**:SystemCapability.Location.Location.Geocoder 1562 1563**参数**: 1564 1565 | 参数名 | 类型 | 必填 | 说明 | 1566 | -------- | -------- | -------- | -------- | 1567 | request | [GeoCodeRequest](#geocoderequest) | 是 | 设置地理编码请求的相关参数。 | 1568 | callback | AsyncCallback<Array<[GeoAddress](#geoaddress)>> | 是 | 接收地理编码结果的回调函数。 | 1569 1570**错误码**: 1571 1572以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1573 1574| 错误码ID | 错误信息 | 1575| -------- | ---------------------------------------- | 1576|3301000 | Location service is unavailable. | 1577|3301400 | Geocoding query failed. | 1578 1579**示例** 1580 1581 ```ts 1582 import geoLocationManager from '@ohos.geoLocationManager'; 1583 import BusinessError from "@ohos.base"; 1584 let geocodeRequest:geoLocationManager.GeoCodeRequest = {"description": "上海市浦东新区xx路xx号", "maxItems": 1}; 1585 try { 1586 geoLocationManager.getAddressesFromLocationName(geocodeRequest, (err, data) => { 1587 if (err) { 1588 console.log('getAddressesFromLocationName: err=' + JSON.stringify(err)); 1589 } 1590 if (data) { 1591 console.log('getAddressesFromLocationName: data=' + JSON.stringify(data)); 1592 } 1593 }); 1594 } catch (err) { 1595 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1596 } 1597 ``` 1598 1599 1600## geoLocationManager.getAddressesFromLocationName 1601 1602getAddressesFromLocationName(request: GeoCodeRequest): Promise<Array<GeoAddress>> 1603 1604调用地理编码服务,将地理描述转换为具体坐标,使用Promise方式异步返回结果。 1605 1606**系统能力**:SystemCapability.Location.Location.Geocoder 1607 1608**参数**: 1609 1610 | 参数名 | 类型 | 必填 | 说明 | 1611 | -------- | -------- | -------- | -------- | 1612 | request | [GeoCodeRequest](#geocoderequest) | 是 | 设置地理编码请求的相关参数。 | 1613 1614**返回值**: 1615 1616 | 参数名 | 类型 | 必填 | 说明 | 1617 | -------- | -------- | -------- | -------- | 1618 | Promise<Array<[GeoAddress](#geoaddress)>> | Array<[GeoAddress](#geoaddress)> | NA | 返回地理编码查询结果。 | 1619 1620**错误码**: 1621 1622以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1623 1624| 错误码ID | 错误信息 | 1625| -------- | ---------------------------------------- | 1626|3301000 | Location service is unavailable. | 1627|3301400 | Geocoding query failed. | 1628 1629**示例** 1630 1631 ```ts 1632 import geoLocationManager from '@ohos.geoLocationManager'; 1633 import BusinessError from "@ohos.base"; 1634 let geocodeRequest:geoLocationManager.GeoCodeRequest = {"description": "上海市浦东新区xx路xx号", "maxItems": 1}; 1635 try { 1636 geoLocationManager.getAddressesFromLocationName(geocodeRequest).then((result) => { 1637 console.log('getAddressesFromLocationName: ' + JSON.stringify(result)); 1638 }) 1639 .catch((error:number) => { 1640 console.log('promise, getAddressesFromLocationName: error=' + JSON.stringify(error)); 1641 }); 1642 } catch (err) { 1643 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1644 } 1645 ``` 1646 1647## geoLocationManager.isGeocoderAvailable 1648 1649isGeocoderAvailable(): boolean; 1650 1651判断(逆)地理编码服务状态。 1652 1653**系统能力**:SystemCapability.Location.Location.Geocoder 1654 1655**返回值**: 1656 1657 | 参数名 | 类型 | 必填 | 说明 | 1658 | -------- | -------- | -------- | -------- | 1659 | boolean | boolean | NA | 返回(逆)地理编码服务是否可用。 | 1660 1661**错误码**: 1662 1663以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1664 1665| 错误码ID | 错误信息 | 1666| -------- | ---------------------------------------- | 1667|3301000 | Location service is unavailable. | 1668 1669**示例** 1670 1671 ```ts 1672 import geoLocationManager from '@ohos.geoLocationManager'; 1673 import BusinessError from "@ohos.base"; 1674 try { 1675 let isAvailable = geoLocationManager.isGeocoderAvailable(); 1676 } catch (err) { 1677 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1678 } 1679 ``` 1680 1681 1682## geoLocationManager.getCachedGnssLocationsSize 1683 1684getCachedGnssLocationsSize(callback: AsyncCallback<number>): void; 1685 1686获取GNSS芯片缓存位置的个数。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。 1687 1688**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 1689 1690**系统能力**:SystemCapability.Location.Location.Gnss 1691 1692**参数**: 1693 1694 | 参数名 | 类型 | 必填 | 说明 | 1695 | -------- | -------- | -------- | -------- | 1696 | callback | AsyncCallback<number> | 是 | 用来接收GNSS芯片缓存位置个数的回调。 | 1697 1698**错误码**: 1699 1700以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1701 1702| 错误码ID | 错误信息 | 1703| -------- | ---------------------------------------- | 1704|3301000 | Location service is unavailable. | 1705|3301100 | The location switch is off. | 1706 1707**示例** 1708 1709 ```ts 1710 import geoLocationManager from '@ohos.geoLocationManager'; 1711 import BusinessError from "@ohos.base"; 1712 try { 1713 geoLocationManager.getCachedGnssLocationsSize((err, size) => { 1714 if (err) { 1715 console.log('getCachedGnssLocationsSize: err=' + JSON.stringify(err)); 1716 } 1717 if (size) { 1718 console.log('getCachedGnssLocationsSize: size=' + JSON.stringify(size)); 1719 } 1720 }); 1721 } catch (err) { 1722 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1723 } 1724 ``` 1725 1726 1727## geoLocationManager.getCachedGnssLocationsSize 1728 1729getCachedGnssLocationsSize(): Promise<number>; 1730 1731获取GNSS芯片缓存位置的个数。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。 1732 1733**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 1734 1735**系统能力**:SystemCapability.Location.Location.Gnss 1736 1737**返回值**: 1738 1739 | 参数名 | 类型 | 必填 | 说明 | 1740 | -------- | -------- | -------- | -------- | 1741 | Promise<number> | number | NA | 返回GNSS缓存位置的个数。 | 1742 1743**错误码**: 1744 1745以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1746 1747| 错误码ID | 错误信息 | 1748| -------- | ---------------------------------------- | 1749|3301000 | Location service is unavailable. | 1750|3301100 | The location switch is off. | 1751 1752**示例** 1753 1754 ```ts 1755 import geoLocationManager from '@ohos.geoLocationManager'; 1756 import BusinessError from "@ohos.base"; 1757 try { 1758 geoLocationManager.getCachedGnssLocationsSize().then((result) => { 1759 console.log('promise, getCachedGnssLocationsSize: ' + JSON.stringify(result)); 1760 }) 1761 .catch((error:number) => { 1762 console.log('promise, getCachedGnssLocationsSize: error=' + JSON.stringify(error)); 1763 }); 1764 } catch (err) { 1765 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1766 } 1767 ``` 1768 1769 1770## geoLocationManager.flushCachedGnssLocations 1771 1772flushCachedGnssLocations(callback: AsyncCallback<void>): void; 1773 1774读取并清空GNSS芯片所有缓存位置。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。 1775 1776**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 1777 1778**系统能力**:SystemCapability.Location.Location.Gnss 1779 1780**参数**: 1781 1782 | 参数名 | 类型 | 必填 | 说明 | 1783 | -------- | -------- | -------- | -------- | 1784 | callback | AsyncCallback<void> | 是 | 用来接收错误码信息。 | 1785 1786**错误码**: 1787 1788以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1789 1790| 错误码ID | 错误信息 | 1791| -------- | ---------------------------------------- | 1792|3301000 | Location service is unavailable. | 1793|3301100 | The location switch is off. | 1794|3301200 | Failed to obtain the geographical location. | 1795 1796**示例** 1797 1798 ```ts 1799 import geoLocationManager from '@ohos.geoLocationManager'; 1800 import BusinessError from "@ohos.base"; 1801 try { 1802 geoLocationManager.flushCachedGnssLocations((err, result) => { 1803 if (err) { 1804 console.log('flushCachedGnssLocations: err=' + JSON.stringify(err)); 1805 } 1806 }); 1807 } catch (err) { 1808 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1809 } 1810 ``` 1811 1812 1813## geoLocationManager.flushCachedGnssLocations 1814 1815flushCachedGnssLocations(): Promise<void>; 1816 1817读取并清空GNSS芯片所有缓存位置。该接口功能由gnss定位芯片提供(仅部分型号支持),如果设备无此芯片或使用的芯片型号不支持该功能,则返回错误码801(Capability not supported)。 1818 1819**需要权限**:ohos.permission.APPROXIMATELY_LOCATION 1820 1821**系统能力**:SystemCapability.Location.Location.Gnss 1822 1823**返回值**: 1824 1825 | 参数名 | 类型 | 必填 | 说明 | 1826 | -------- | -------- | -------- | -------- | 1827 | Promise<void> | void | NA | 接收错误码。 | 1828 1829**错误码**: 1830 1831以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1832 1833| 错误码ID | 错误信息 | 1834| -------- | ---------------------------------------- | 1835|3301000 | Location service is unavailable. | 1836|3301100 | The location switch is off. | 1837|3301200 | Failed to obtain the geographical location. | 1838 1839**示例** 1840 1841 ```ts 1842 import geoLocationManager from '@ohos.geoLocationManager'; 1843 import BusinessError from "@ohos.base"; 1844 try { 1845 geoLocationManager.flushCachedGnssLocations().then((result) => { 1846 console.log('promise, flushCachedGnssLocations success'); 1847 }) 1848 .catch((error:number) => { 1849 console.log('promise, flushCachedGnssLocations: error=' + JSON.stringify(error)); 1850 }); 1851 } catch (err) { 1852 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1853 } 1854 ``` 1855 1856 1857## geoLocationManager.sendCommand 1858 1859sendCommand(command: LocationCommand, callback: AsyncCallback<void>): void; 1860 1861给位置服务子系统的各个部件发送扩展命令。 1862 1863**系统能力**:SystemCapability.Location.Location.Core 1864 1865**参数**: 1866 1867 | 参数名 | 类型 | 必填 | 说明 | 1868 | -------- | -------- | -------- | -------- | 1869 | command | [LocationCommand](#locationcommand) | 是 | 指定目标场景,和将要发送的命令(字符串)。 | 1870 | callback | AsyncCallback<void> | 是 | 用来接收错误码。 | 1871 1872**错误码**: 1873 1874以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1875 1876| 错误码ID | 错误信息 | 1877| -------- | ---------------------------------------- | 1878|3301000 | Location service is unavailable. | 1879 1880**示例** 1881 1882 ```ts 1883 import geoLocationManager from '@ohos.geoLocationManager'; 1884 import BusinessError from "@ohos.base"; 1885 let requestInfo:geoLocationManager.LocationCommand = {'scenario': 0x301, 'command': "command_1"}; 1886 try { 1887 geoLocationManager.sendCommand(requestInfo, (err, result) => { 1888 if (err) { 1889 console.log('sendCommand: err=' + JSON.stringify(err)); 1890 } 1891 }); 1892 } catch (err) { 1893 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1894 } 1895 ``` 1896 1897 1898## geoLocationManager.sendCommand 1899 1900sendCommand(command: LocationCommand): Promise<void>; 1901 1902给位置服务子系统的各个部件发送扩展命令。 1903 1904**系统能力**:SystemCapability.Location.Location.Core 1905 1906**参数**: 1907 1908 | 参数名 | 类型 | 必填 | 说明 | 1909 | -------- | -------- | -------- | -------- | 1910 | command | [LocationCommand](#locationcommand) | 是 | 指定目标场景,和将要发送的命令(字符串)。 | 1911 1912**返回值**: 1913 1914 | 参数名 | 类型 | 必填 | 说明 | 1915 | -------- | -------- | -------- | -------- | 1916 | Promise<void> | void | NA | 接收错误码。 | 1917 1918**错误码**: 1919 1920以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1921 1922| 错误码ID | 错误信息 | 1923| -------- | ---------------------------------------- | 1924|3301000 | Location service is unavailable. | 1925 1926**示例** 1927 1928 ```ts 1929 import geoLocationManager from '@ohos.geoLocationManager'; 1930 import BusinessError from "@ohos.base"; 1931 let requestInfo:geoLocationManager.LocationCommand = {'scenario': 0x301, 'command': "command_1"}; 1932 try { 1933 geoLocationManager.sendCommand(requestInfo).then((result) => { 1934 console.log('promise, sendCommand success'); 1935 }) 1936 .catch((error:number) => { 1937 console.log('promise, sendCommand: error=' + JSON.stringify(error)); 1938 }); 1939 } catch (err) { 1940 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1941 } 1942 ``` 1943 1944 1945## geoLocationManager.getCountryCode 1946 1947getCountryCode(callback: AsyncCallback<CountryCode>): void; 1948 1949查询当前的国家码。 1950 1951**系统能力**:SystemCapability.Location.Location.Core 1952 1953**参数**: 1954 1955 | 参数名 | 类型 | 必填 | 说明 | 1956 | -------- | -------- | -------- | -------- | 1957 | callback | AsyncCallback<[CountryCode](#countrycode)> | 是 | 用来接收国家码。 | 1958 1959**错误码**: 1960 1961以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 1962 1963| 错误码ID | 错误信息 | 1964| -------- | ---------------------------------------- | 1965|3301000 | Location service is unavailable. | 1966|3301500 | Failed to query the area information.| 1967 1968**示例** 1969 1970 ```ts 1971 import geoLocationManager from '@ohos.geoLocationManager'; 1972 import BusinessError from "@ohos.base"; 1973 try { 1974 geoLocationManager.getCountryCode((err, result) => { 1975 if (err) { 1976 console.log('getCountryCode: err=' + JSON.stringify(err)); 1977 } 1978 if (result) { 1979 console.log('getCountryCode: result=' + JSON.stringify(result)); 1980 } 1981 }); 1982 } catch (err) { 1983 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 1984 } 1985 ``` 1986 1987 1988## geoLocationManager.getCountryCode 1989 1990getCountryCode(): Promise<CountryCode>; 1991 1992查询当前的国家码。 1993 1994**系统能力**:SystemCapability.Location.Location.Core 1995 1996**返回值**: 1997 1998 | 参数名 | 类型 | 必填 | 说明 | 1999 | -------- | -------- | -------- | -------- | 2000 | Promise<[CountryCode](#countrycode)> | [CountryCode](#countrycode) | NA | 用来接收国家码。 | 2001 2002**错误码**: 2003 2004以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 2005 2006| 错误码ID | 错误信息 | 2007| -------- | ---------------------------------------- | 2008|3301000 | Location service is unavailable. | 2009|3301500 | Failed to query the area information.| 2010 2011**示例** 2012 2013 ```ts 2014 import geoLocationManager from '@ohos.geoLocationManager'; 2015 import BusinessError from "@ohos.base"; 2016 try { 2017 geoLocationManager.getCountryCode() 2018 .then((result) => { 2019 console.log('promise, getCountryCode: result=' + JSON.stringify(result)); 2020 }) 2021 .catch((error:number) => { 2022 console.log('promise, getCountryCode: error=' + JSON.stringify(error)); 2023 }); 2024 } catch (err) { 2025 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 2026 } 2027 ``` 2028 2029 2030## geoLocationManager.enableLocationMock 2031 2032enableLocationMock(): void; 2033 2034使能位置模拟功能。 2035 2036**系统能力**:SystemCapability.Location.Location.Core 2037 2038**系统API**:此接口为系统接口。 2039 2040**错误码**: 2041 2042以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 2043 2044| 错误码ID | 错误信息 | 2045| -------- | ---------------------------------------- | 2046|3301000 | Location service is unavailable. | 2047|3301100 | The location switch is off.| 2048 2049**示例** 2050 2051 ```ts 2052 import geoLocationManager from '@ohos.geoLocationManager'; 2053 import BusinessError from "@ohos.base"; 2054 try { 2055 geoLocationManager.enableLocationMock(); 2056 } catch (err) { 2057 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 2058 } 2059 ``` 2060 2061 2062## geoLocationManager.disableLocationMock 2063 2064disableLocationMock(): void; 2065 2066去使能位置模拟功能。 2067 2068**系统能力**:SystemCapability.Location.Location.Core 2069 2070**系统API**:此接口为系统接口。 2071 2072**错误码**: 2073 2074以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 2075 2076| 错误码ID | 错误信息 | 2077| -------- | ---------------------------------------- | 2078|3301000 | Location service is unavailable. | 2079|3301100 | The location switch is off.| 2080 2081**示例** 2082 2083 ```ts 2084 import geoLocationManager from '@ohos.geoLocationManager'; 2085 import BusinessError from "@ohos.base"; 2086 try { 2087 geoLocationManager.disableLocationMock(); 2088 } catch (err) { 2089 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 2090 } 2091 ``` 2092 2093 2094## geoLocationManager.setMockedLocations 2095 2096setMockedLocations(config: LocationMockConfig): void; 2097 2098设置模拟的位置信息,后面会以该接口中携带的时间间隔上报模拟位置。 2099 2100该接口需要在调用[geoLocationManager.enableLocationMock](#geolocationmanagerenablelocationmock)之后才能调用。 2101 2102**系统能力**:SystemCapability.Location.Location.Core 2103 2104**系统API**:此接口为系统接口。 2105 2106**参数**: 2107 2108 | 参数名 | 类型 | 必填 | 说明 | 2109 | -------- | -------- | -------- | -------- | 2110 | config | [LocationMockConfig](#locationmockconfig) | 是 | 指示位置模拟的配置参数,包含模拟位置上报的时间间隔和模拟位置数组。 | 2111 2112**错误码**: 2113 2114以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 2115 2116| 错误码ID | 错误信息 | 2117| -------- | ---------------------------------------- | 2118|3301000 | Location service is unavailable. | 2119|3301100 | The location switch is off.| 2120 2121**示例** 2122 2123 ```ts 2124 import geoLocationManager from '@ohos.geoLocationManager'; 2125 import BusinessError from "@ohos.base"; 2126 let locations:Array<geoLocationManager.Location> = [ 2127 {"latitude": 30.12, "longitude": 120.11, "altitude": 123, "accuracy": 1, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 1000000000, "additionSize": 0, "isFromMock": true}, 2128 {"latitude": 31.13, "longitude": 121.11, "altitude": 123, "accuracy": 2, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 2000000000, "additionSize": 0, "isFromMock": true}, 2129 {"latitude": 32.14, "longitude": 122.11, "altitude": 123, "accuracy": 3, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 3000000000, "additionSize": 0, "isFromMock": true}, 2130 {"latitude": 33.15, "longitude": 123.11, "altitude": 123, "accuracy": 4, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 4000000000, "additionSize": 0, "isFromMock": true}, 2131 {"latitude": 34.16, "longitude": 124.11, "altitude": 123, "accuracy": 5, "speed": 5.2, "timeStamp": 16594326109, "direction": 123.11, "timeSinceBoot": 5000000000, "additionSize": 0, "isFromMock": true} 2132 ]; 2133 let config:geoLocationManager.LocationMockConfig = {"timeInterval": 5, "locations": locations}; 2134 try { 2135 geoLocationManager.enableLocationMock(); 2136 geoLocationManager.setMockedLocations(config); 2137 } catch (err) { 2138 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 2139 } 2140 ``` 2141 2142 2143## geoLocationManager.enableReverseGeocodingMock 2144 2145enableReverseGeocodingMock(): void; 2146 2147使能逆地理编码模拟功能。 2148 2149**系统能力**:SystemCapability.Location.Location.Core 2150 2151**系统API**:此接口为系统接口。 2152 2153**错误码**: 2154 2155以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 2156 2157| 错误码ID | 错误信息 | 2158| -------- | ---------------------------------------- | 2159|3301000 | Location service is unavailable. | 2160 2161**示例** 2162 2163 ```ts 2164 import geoLocationManager from '@ohos.geoLocationManager'; 2165 import BusinessError from "@ohos.base"; 2166 try { 2167 geoLocationManager.enableReverseGeocodingMock(); 2168 } catch (err) { 2169 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 2170 } 2171 ``` 2172 2173 2174## geoLocationManager.disableReverseGeocodingMock 2175 2176disableReverseGeocodingMock(): void; 2177 2178去使能逆地理编码模拟功能。 2179 2180**系统能力**:SystemCapability.Location.Location.Core 2181 2182**系统API**:此接口为系统接口。 2183 2184**错误码**: 2185 2186以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 2187 2188| 错误码ID | 错误信息 | 2189| -------- | ---------------------------------------- | 2190|3301000 | Location service is unavailable. | 2191 2192**示例** 2193 2194 ```ts 2195 import geoLocationManager from '@ohos.geoLocationManager'; 2196 import BusinessError from "@ohos.base"; 2197 try { 2198 geoLocationManager.disableReverseGeocodingMock(); 2199 } catch (err) { 2200 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 2201 } 2202 ``` 2203 2204 2205## geoLocationManager.setReverseGeocodingMockInfo 2206 2207setReverseGeocodingMockInfo(mockInfos: Array<ReverseGeocodingMockInfo>): void; 2208 2209设置逆地理编码模拟功能的配置信息,包含了位置和地名的对应关系,后续进行逆地理编码查询时如果位置信息位于配置信息中,就返回对应的地名。 2210 2211该接口需要在调用[geoLocationManager.enableReverseGeocodingMock](#geolocationmanagerenablereversegeocodingmock)之后才能调用。 2212 2213**系统能力**:SystemCapability.Location.Location.Core 2214 2215**系统API**:此接口为系统接口。 2216 2217**参数**: 2218 2219 | 参数名 | 类型 | 必填 | 说明 | 2220 | -------- | -------- | -------- | -------- | 2221 | mockInfos | Array<[ReverseGeocodingMockInfo](#reversegeocodingmockinfo)> | 是 | 指示逆地理编码模拟功能的配置参数数组。逆地理编码模拟功能的配置参数包含了一个位置和一个地名。 | 2222 2223**错误码**: 2224 2225以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 2226 2227| 错误码ID | 错误信息 | 2228| -------- | ---------------------------------------- | 2229|3301000 | Location service is unavailable. | 2230 2231**示例** 2232 2233 ```ts 2234 import geoLocationManager from '@ohos.geoLocationManager'; 2235 import BusinessError from "@ohos.base"; 2236 let mockInfos:Array<geoLocationManager.ReverseGeocodingMockInfo> = [ 2237 {"location": {"locale": "zh", "latitude": 30.12, "longitude": 120.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 30.12, "longitude": 120.11, "isFromMock": true}}, 2238 {"location": {"locale": "zh", "latitude": 31.12, "longitude": 121.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 31.12, "longitude": 121.11, "isFromMock": true}}, 2239 {"location": {"locale": "zh", "latitude": 32.12, "longitude": 122.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 32.12, "longitude": 122.11, "isFromMock": true}}, 2240 {"location": {"locale": "zh", "latitude": 33.12, "longitude": 123.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 33.12, "longitude": 123.11, "isFromMock": true}}, 2241 {"location": {"locale": "zh", "latitude": 34.12, "longitude": 124.11, "maxItems": 1}, "geoAddress": {"locale": "zh", "latitude": 34.12, "longitude": 124.11, "isFromMock": true}}, 2242 ]; 2243 try { 2244 geoLocationManager.enableReverseGeocodingMock(); 2245 geoLocationManager.setReverseGeocodingMockInfo(mockInfos); 2246 } catch (err) { 2247 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 2248 } 2249 ``` 2250 2251 2252## geoLocationManager.isLocationPrivacyConfirmed 2253 2254isLocationPrivacyConfirmed(type: LocationPrivacyType): boolean; 2255 2256查询用户是否同意定位服务隐私申明,是否同意启用定位服务。只有系统应用才能调用。 2257 2258**系统API**:此接口为系统接口。 2259 2260**系统能力**:SystemCapability.Location.Location.Core 2261 2262**参数**: 2263 2264 | 参数名 | 类型 | 必填 | 说明 | 2265 | -------- | -------- | -------- | -------- | 2266 | type | [LocationPrivacyType](#locationprivacytype)| 是 | 指定隐私申明场景,例如开机向导中的隐私申明、开启网络定位功能时弹出的隐私申明等。 | 2267 2268**返回值**: 2269 2270 | 参数名 | 类型 | 必填 | 说明 | 2271 | -------- | -------- | -------- | -------- | 2272 | boolean | boolean | NA | 表示用户是否同意定位服务隐私申明。 | 2273 2274**错误码**: 2275 2276以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 2277 2278| 错误码ID | 错误信息 | 2279| -------- | ---------------------------------------- | 2280|3301000 | Location service is unavailable. | 2281 2282**示例** 2283 2284 ```ts 2285 import geoLocationManager from '@ohos.geoLocationManager'; 2286 import BusinessError from "@ohos.base"; 2287 try { 2288 let isConfirmed = geoLocationManager.isLocationPrivacyConfirmed(1); 2289 } catch (err) { 2290 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 2291 } 2292 ``` 2293 2294 2295## geoLocationManager.setLocationPrivacyConfirmStatus 2296 2297setLocationPrivacyConfirmStatus(type: LocationPrivacyType, isConfirmed: boolean): void; 2298 2299设置用户勾选定位服务隐私申明的状态,记录用户是否同意启用定位服务。只有系统应用才能调用。 2300 2301**系统API**:此接口为系统接口。 2302 2303**需要权限**:ohos.permission.MANAGE_SECURE_SETTINGS 2304 2305**系统能力**:SystemCapability.Location.Location.Core 2306 2307**参数**: 2308 2309 | 参数名 | 类型 | 必填 | 说明 | 2310 | -------- | -------- | -------- | -------- | 2311 | type | [LocationPrivacyType](#locationprivacytype) | 是 | 指定隐私申明场景,例如开机向导中的隐私申明、开启网络定位功能时弹出的隐私申明等。 | 2312 | isConfirmed | boolean | 是 | 表示用户是否同意定位服务隐私申明。 | 2313 2314**错误码**: 2315 2316以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 2317 2318| 错误码ID | 错误信息 | 2319| -------- | ---------------------------------------- | 2320|3301000 | Location service is unavailable. | 2321 2322**示例** 2323 2324 ```ts 2325 import geoLocationManager from '@ohos.geoLocationManager'; 2326 import BusinessError from "@ohos.base"; 2327 try { 2328 geoLocationManager.setLocationPrivacyConfirmStatus(1, true); 2329 } catch (err) { 2330 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 2331 } 2332 ``` 2333 2334 2335## geoLocationManager.getLocatingRequiredData<sup>10+</sup> 2336 2337getLocatingRequiredData(config: LocatingRequiredDataConfig): Promise<Array<LocatingRequiredData>>; 2338 2339单次获取定位业务所需数据,包含WiFi蓝牙扫描信息,使用Promise方式异步返回结果。 2340 2341**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 2342 2343**系统能力**:SystemCapability.Location.Location.Core 2344 2345**系统API**:此接口为系统接口。 2346 2347**参数**: 2348 2349 | 参数名 | 类型 | 必填 | 说明 | 2350 | -------- | -------- | -------- | -------- | 2351 | config | [LocatingRequiredDataConfig](#locatingrequireddataconfig10) | 是 | 表示获取定位所需数据时的配置参数。 | 2352 2353**返回值**: 2354 2355 | 参数名 | 类型 | 必填 | 说明 | 2356 | -------- | -------- | -------- | -------- | 2357 | Promise<Array<[LocatingRequiredData](#locatingrequireddata10)>> | [LocatingRequiredData](#locatingrequireddata10) | NA | 用来接收定位业务所需数据,包含WiFi蓝牙扫描信息。 | 2358 2359**错误码**: 2360 2361以下错误码的详细介绍请参见[位置服务子系统错误码](../errorcodes/errorcode-geoLocationManager.md)。 2362 2363| 错误码ID | 错误信息 | 2364| -------- | ---------------------------------------- | 2365|3301800 | Failed to start WiFi or Bluetooth scanning. | 2366 2367**示例** 2368 2369 ```ts 2370 import geoLocationManager from '@ohos.geoLocationManager'; 2371 import BusinessError from "@ohos.base"; 2372 let config:geoLocationManager.LocatingRequiredDataConfig = {'type': 1, 'needStartScan': true, 'scanInterval': 10000}; 2373 try { 2374 geoLocationManager.getLocatingRequiredData(config).then((result) => { 2375 console.log('getLocatingRequiredData return: ' + JSON.stringify(result)); 2376 }) 2377 .catch((error:number) => { 2378 console.log('promise, getLocatingRequiredData: error=' + JSON.stringify(error)); 2379 }); 2380 } catch (err) { 2381 console.error("errCode:" + (err as BusinessError.BusinessError).code + ",errMessage:" + (err as BusinessError.BusinessError).message); 2382 } 2383 ```