ohos.geo_location_manager (Location Services)
Note:
Currently in the beta phase.
Location services provide basic functionalities including GNSS positioning, network positioning (cellular base station, WLAN, Bluetooth positioning technologies).
Note:
This module's capabilities only support the WGS-84 coordinate system.
Importing the Module
import kit.LocationKit.*
Permission List
Before using the Location Kit system capabilities, applications must check whether they have obtained user authorization to access device location information. If authorization has not been granted, applications can request the necessary location permissions from the user.
The system provides the following location permissions:
ohos.permission.APPROXIMATELY_LOCATION: Used to obtain approximate location with an accuracy of 5 kilometers.
ohos.permission.LOCATION: Used to obtain precise location with meter-level accuracy.
ohos.permission.LOCATION_IN_BACKGROUND: Used for scenarios where the application needs to continue obtaining location information after switching to the background.
Usage Instructions
API example code usage instructions:
- If the first line of the example code has a "// index.cj" comment, it indicates that the example can be compiled and run in the "index.cj" file of the Cangjie template project.
- If the example requires obtaining the Context application context, it needs to be configured in the "main_ability.cj" file of the Cangjie template project.
For the above example projects and configuration templates, refer to Cangjie Example Code Instructions.
class CurrentLocationRequest
public class CurrentLocationRequest {
public var priority: LocationRequestPriority
public var scenario: LocationRequestScenario
public var maxAccuracy: Float32
public var timeoutMs: Int32
public init(priority!: LocationRequestPriority = LocationRequestPriority.FirstFix,
scenario!: LocationRequestScenario = LocationRequestScenario.Unset, maxAccuracy!: Float32 = 0.0,
timeoutMs!: Int32 = 5000)
}
Function: Parameters for current location information requests.
System Capability: SystemCapability.Location.Location.Core
Since: 21
var maxAccuracy
public var maxAccuracy: Float32
Function: Represents accuracy information in meters.
Only effective in precise location scenarios (where both ohos.permission.APPROXIMATELY_LOCATION and ohos.permission.LOCATION permissions are granted). This field is meaningless in approximate location scenarios (where only ohos.permission.APPROXIMATELY_LOCATION is granted).
Default value is 0, with a valid range of greater than or equal to 0.
When scenario is Navigation/TrajectoryTracking/CarHailing or priority is Accuracy, it is recommended to set maxAccuracy to a value greater than 10.
When scenario is DailyLifeService/NoPower or priority is LowPower/FirstFix, it is recommended to set maxAccuracy to a value greater than 100.
Type: Float32
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var priority
public var priority: LocationRequestPriority
Function: Represents priority information. When scenario is set to Unset, the priority parameter takes effect; otherwise, it does not. If both scenario and priority are set to Unset, the location request cannot be initiated. Valid values are defined in LocationRequestPriority.
Type: LocationRequestPriority
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var scenario
public var scenario: LocationRequestScenario
Function: Represents scenario information. When scenario is set to Unset, the priority parameter takes effect; otherwise, it does not. If both scenario and priority are set to Unset, the location request cannot be initiated. Valid values are defined in LocationRequestScenario.
Type: LocationRequestScenario
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var timeoutMs
public var timeoutMs: Int32
Function: Represents the timeout duration in milliseconds, with a minimum of 1000 milliseconds. Valid range is greater than or equal to 1000.
Type: Int32
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
init(LocationRequestPriority, LocationRequestScenario, Float32, Int32)
public init(priority!: LocationRequestPriority = LocationRequestPriority.FirstFix,
scenario!: LocationRequestScenario = LocationRequestScenario.Unset, maxAccuracy!: Float32 = 0.0,
timeoutMs!: Int32 = 5000)
Function: Constructs a CurrentLocationRequest object.
System Capability: SystemCapability.Location.Location.Core
Since: 21
Parameters:
| Parameter Name | Type | Required | Default Value | Description |
|---|---|---|---|---|
| priority | LocationRequestPriority | No | LocationRequestPriority.FirstFix | Named parameter. Represents priority information. When scenario is set to Unset, the priority parameter takes effect; otherwise, it does not. If both scenario and priority are set to Unset, the location request cannot be initiated. Valid values are defined in LocationRequestPriority. |
| scenario | LocationRequestScenario | No | LocationRequestScenario.Unset | Named parameter. Represents scenario information. When scenario is set to Unset, the priority parameter takes effect; otherwise, it does not. If both scenario and priority are set to Unset, the location request cannot be initiated. Valid values are defined in LocationRequestScenario. |
| maxAccuracy | Float32 | No | 0.0 | Named parameter. Represents accuracy information in meters. Only effective in precise location scenarios (where both ohos.permission.APPROXIMATELY_LOCATION and ohos.permission.LOCATION permissions are granted). This field is meaningless in approximate location scenarios (where only ohos.permission.APPROXIMATELY_LOCATION is granted). Default value is 0, with a valid range of greater than or equal to 0. When scenario is Navigation/TrajectoryTracking/CarHailing or priority is Accuracy, it is recommended to set maxAccuracy to a value greater than 10. When scenario is DailyLifeService/NoPower or priority is LowPower/FirstFix, it is recommended to set maxAccuracy to a value greater than 100. |
| timeoutMs | Int32 | No | 5000 | Named parameter. Represents the timeout duration in milliseconds, with a minimum of 1000 milliseconds. Valid range is greater than or equal to 1000. |
class GeoLocationManager
public class GeoLocationManager {}
Function: A class used to provide location services.
System Capability: SystemCapability.Location.Location.Core
Since: 21
static func getCurrentLocation()
public static func getCurrentLocation(): Location
Function: Obtains the current location.
Required Permission: ohos.APPROXIMATELY_LOCATION
System Capability: SystemCapability.Location.Location.Core
Since: 21
Return Value:
| Type | Description |
|---|---|
| Location | Returns the current location information. |
Example:
// index.cj
import kit.LocationKit.*
let location = GeoLocationManager.getCurrentLocation(SingleLocationRequest(LocatingPriority.PriorityLocatingSpeed, 1000))
static func getCurrentLocation(CurrentLocationRequest)
public static func getCurrentLocation(request: CurrentLocationRequest): Location
Function: Obtains the current location.
Required Permission: ohos.APPROXIMATELY_LOCATION
System Capability: SystemCapability.Location.Location.Core
Since: 21
Parameters:
| Parameter Name | Type | Required | Default Value | Description |
|---|---|---|---|---|
| request | CurrentLocationRequest | Yes | - | Sets the location request parameters. |
Return Value:
| Type | Description |
|---|---|
| Location | Returns the current location information. |
Example:
// index.cj
import kit.LocationKit.*
let location = GeoLocationManager.getCurrentLocation(SingleLocationRequest(LocatingPriority.PriorityLocatingSpeed, 1000))
static func getCurrentLocation(SingleLocationRequest)
public static func getCurrentLocation(request: SingleLocationRequest): Location
Function: Obtains the current location.
Required Permission: ohos.APPROXIMATELY_LOCATION
System Capability: SystemCapability.Location.Location.Core
Since: 21
Parameters:
| Parameter Name | Type | Required | Default Value | Description |
|---|---|---|---|---|
| request | SingleLocationRequest | Yes | - | Sets the location request parameters. |
Return Value:
| Type | Description |
|---|---|
| Location | Returns the current location information. |
Example:
// index.cj
import kit.LocationKit.*
let location = GeoLocationManager.getCurrentLocation(SingleLocationRequest(LocatingPriority.PriorityLocatingSpeed, 1000))
static func isLocationEnabled()
public static func isLocationEnabled(): Bool
Function: Checks whether location services are enabled.
System Capability: SystemCapability.Location.Location.Core
Since: 21
Return Value:
| Type | Description |
|---|---|
| Bool | true: Location services are enabled; false: Location services are disabled. |
Example:
// index.cj
import kit.LocationKit.*
let res = GeoLocationManager.isLocationEnabled()
class Location
public class Location {
public var latitude: Float64
public var longitude: Float64
public var altitude: Float64
public var accuracy: Float64
public var speed: Float64
public var timeStamp: Int64
public var direction: Float64
public var timeSinceBoot: Int64
public var additions: Array<String>
public var additionSize: Int64
public var additionsMap: Map<String, String>
public var altitudeAccuracy: Float64
public var speedAccuracy: Float64
public var directionAccuracy: Float64
public var uncertaintyOfTimeSinceBoot: Int64
public var sourceType: LocationSourceType
}
Function: Location information.
System Capability: SystemCapability.Location.Location.Core
Since: 21
var accuracy
public var accuracy: Float64
Function: Represents accuracy information in meters.
Type: Float64
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var additionSize
public var additionSize: ?Int64
Function: Number of additional information items. Valid range is greater than or equal to 0.
Type: Int64
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var additions
public var additions: ?Array<String>
Function: Additional information.
Type: Array<String>
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var additionsMap
public var additionsMap: ?Map<String, String>
Function: Additional information. The specific content and order are consistent with additions.
Type: Map
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var altitude
public var altitude: Float64
Function: Represents altitude information in meters.
Type: Float64
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var altitudeAccuracy
public var altitudeAccuracy: ?Float64
Function: Represents the accuracy of altitude information in meters.
Type: Float64
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var direction
public var direction: Float64
Function: Represents heading information in degrees, with a valid range of 0 to 360.
Type: Float64
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var directionAccuracy
public var directionAccuracy: ?Float64
Function: Represents the accuracy of heading information in degrees, with a valid range of 0 to 360.
Type: Float64
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var latitude
public var latitude: Float64
Function: Represents latitude information. Positive values indicate north latitude, and negative values indicate south latitude. Valid range is -90 to 90. Only supports the WGS84 coordinate system.
Type: Float64
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var longitude
public var longitude: Float64
Function: Represents longitude information. Positive values indicate east longitude, and negative values indicate west longitude. Valid range is -180 to 180. Only supports the WGS84 coordinate system.
Type: Float64
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var sourceType
public var sourceType: ?LocationSourceType
Function: Represents the source of the location result.
Type: LocationSourceType
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var speed
public var speed: ?Float64
Function: Represents speed information in meters per second.
Type: Float64
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var speedAccuracy
public var speedAccuracy: Float64
Function: Represents the accuracy of speed information in meters per second.
Type: Float64
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var timeSinceBoot
public var timeSinceBoot: Int64
Function: Represents the location timestamp in boot time format.
Type: Int64
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var timeStamp
public var timeStamp: Int64
Function: Represents the location timestamp in UTC format.
Type: Int64
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
var uncertaintyOfTimeSinceBoot
public var uncertaintyOfTimeSinceBoot: ?Int64
Function: Represents the uncertainty of the location timestamp.
Type: Int64
Read/Write Capability: Readable and Writable
System Capability: SystemCapability.Location.Location.Core
Since: 21
class SingleLocationRequest
public class SingleLocationRequest {
public var locatingPriority: LocatingPriority
public var locatingTimeoutMs: Int32
public init(locatingPriority: LocatingPriority, locatingTimeoutMs: Int32)
}
Function: Request parameters for single-shot positioning.
System Capability: SystemCapability.Location.Location.Core
Since: 21
var locatingPriority
public var locatingPriority: LocatingPriority
Function: Indicates priority information. For valid values, see the definition of LocatingPriority.
Type: LocatingPriority
Access: Read-write
System Capability: SystemCapability.Location.Location.Core
Since: 21
var locatingTimeoutMs
public var locatingTimeoutMs: Int32
Function: Indicates the timeout duration in milliseconds, with a minimum of 1000 ms. The value must be greater than or equal to 1000.
Type: Int32
Access: Read-write
System Capability: SystemCapability.Location.Location.Core
Since: 21
init(LocatingPriority, Int32)
public init(locatingPriority: LocatingPriority, locatingTimeoutMs: Int32)
Function: Constructs a SingleLocationRequest object.
System Capability: SystemCapability.Location.Location.Core
Since: 21
Parameters:
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| locatingPriority | LocatingPriority | Yes | - | Indicates priority information. For valid values, see the definition of LocatingPriority. |
| locatingTimeoutMs | Int32 | Yes | - | Indicates the timeout duration in milliseconds, with a minimum of 1000 ms. The value must be greater than or equal to 1000. |
enum LocatingPriority
public enum LocatingPriority {
| PriorityAccuracy
| PriorityLocatingSpeed
| ...
}
Function: Priority types in single-shot location requests.
System Capability: SystemCapability.Location.Location.Core
Since: 21
PriorityAccuracy
PriorityAccuracy
Function: Indicates accuracy priority.
The accuracy-first strategy uses both GNSS and network positioning technologies and returns the most accurate result within a period, which is the shorter of SingleLocationRequest.locatingTimeoutMs and 30 seconds. This strategy consumes more hardware resources and power.
System Capability: SystemCapability.Location.Location.Core
Since: 21
PriorityLocatingSpeed
PriorityLocatingSpeed
Function: Indicates fast location acquisition priority. If an application wants to quickly obtain a location, this priority type can be set.
The speed-first strategy uses both GNSS and network positioning technologies to quickly obtain location results in both indoor and outdoor scenarios. The first obtained location result is returned to the application. This strategy consumes more hardware resources and power.
System Capability: SystemCapability.Location.Location.Core
Since: 21
enum LocationRequestPriority
public enum LocationRequestPriority {
| Unset
| Accuracy
| LowPower
| FirstFix
| ...
}
Function: Priority types for location information in location requests.
System Capability: SystemCapability.Location.Location.Core
Since: 21
Accuracy
Accuracy
Function: Indicates accuracy priority.
The accuracy-first strategy mainly uses GNSS positioning technology. Network positioning technology is used before GNSS provides stable location results. During continuous positioning, if no GNSS location result is obtained for more than 30 seconds, network positioning technology is used. This strategy consumes more hardware resources and power.
System Capability: SystemCapability.Location.Location.Core
Since: 21
FirstFix
FirstFix
Function: Indicates fast location acquisition priority. If an application wants to quickly obtain a location, this priority type can be set.
The speed-first strategy uses both GNSS and network positioning technologies to quickly obtain location results in both indoor and outdoor scenarios. When multiple positioning technologies provide location results, the system selects the most accurate one to return to the application. This strategy consumes more hardware resources and power.
System Capability: SystemCapability.Location.Location.Core
Since: 21
LowPower
LowPower
Function: Indicates low power priority.
The low-power strategy uses only network positioning technology, which can provide location services in both indoor and outdoor scenarios. Since it relies on the distribution of nearby base stations, visible WLANs, and Bluetooth devices, the accuracy of location results may vary significantly. This strategy is recommended for scenarios where high accuracy is not required, as it effectively reduces power consumption.
System Capability: SystemCapability.Location.Location.Core
Since: 21
Unset
Unset
Function: Indicates that the priority is not set, meaning LocationRequestPriority is invalid.
System Capability: SystemCapability.Location.Location.Core
Since: 21
enum LocationRequestScenario
public enum LocationRequestScenario {
| Unset
| Navigation
| TrajectoryTracking
| CarHailing
| DailyLifeService
| NoPower
| ...
}
Function: Positioning scenario types in location requests.
Note:
When using Navigation/TrajectoryTracking/CarHailing scenarios for single-shot or continuous positioning, network positioning technology is used before GNSS provides stable location results. During continuous positioning, if no GNSS location result is obtained for more than 30 seconds, network positioning technology is used to obtain the location.
System Capability: SystemCapability.Location.Location.Core
Since: 21
CarHailing
CarHailing
Function: Indicates ride-hailing scenario.
Applicable to scenarios where users need to locate their current position for ride-hailing services, such as ride-hailing applications.
Mainly uses GNSS positioning technology, which consumes more power.
System Capability: SystemCapability.Location.Location.Core
Since: 21
DailyLifeService
DailyLifeService
Function: Indicates daily service scenario.
Applicable to scenarios where precise user location is not required, such as news, online shopping, and food delivery applications.
This scenario uses only network positioning technology, which consumes less power.
System Capability: SystemCapability.Location.Location.Core
Since: 21
Navigation
Navigation
Function: Indicates navigation scenario.
Applicable to scenarios where real-time device location is needed outdoors, such as vehicle and pedestrian navigation.
Mainly uses GNSS positioning technology, which consumes more power.
System Capability: SystemCapability.Location.Location.Core
Since: 21
NoPower
NoPower
Function: Indicates no-power scenario. In this scenario, positioning is not actively triggered. Location results are returned to the current application only when other applications perform positioning.
System Capability: SystemCapability.Location.Location.Core
Since: 21
TrajectoryTracking
TrajectoryTracking
Function: Indicates trajectory tracking scenario.
Applicable to scenarios where user location trajectories need to be recorded, such as fitness applications tracking movement paths.
Mainly uses GNSS positioning technology, which consumes more power.
System Capability: SystemCapability.Location.Location.Core
Since: 21
Unset
Unset
Function: Indicates that the scenario is not set, meaning LocationRequestScenario is invalid.
System Capability: SystemCapability.Location.Location.Core
Since: 21
enum LocationSourceType
public enum LocationSourceType {
| Gnss
| Network
| Indoor
| Rtk
| ...
}
Function: Source types of location results.
System Capability: SystemCapability.Location.Location.Core
Since: 21
Gnss
Gnss
Function: Indicates that the location result comes from GNSS positioning technology.
System Capability: SystemCapability.Location.Location.Core
Since: 21
Indoor
Indoor
Function: Indicates that the location result comes from indoor high-precision positioning technology.
System Capability: SystemCapability.Location.Location.Core
Since: 21
Network
Network
Function: Indicates that the location result comes from network positioning technology.
System Capability: SystemCapability.Location.Location.Core
Since: 21
Rtk
Rtk
Function: Indicates that the location result comes from outdoor high-precision positioning technology.
System Capability: SystemCapability.Location.Location.Core
Since: 21