IDefaultLocation::SetReport 方法 (locationapi.h)
[Win32 位置 API 可用于“要求”部分中指定的操作系统。 它可能在后续版本中变更或不可用。 请改用 Windows.Devices.Geolocation API。 ]
设置默认位置。
语法
HRESULT SetReport(
[in] REFIID reportType,
[in] ILocationReport *pLocationReport
);
参数
[in] reportType
REFIID ,表示使用 pLocationReport 传递的报表类型的接口 ID。
[in] pLocationReport
指向 ILocationReport 实例的指针,该实例包含来自默认位置提供程序的位置报告。
返回值
可能的值包括(但并不限于)下表中的项。
返回值 | 说明 |
---|---|
|
已成功设置位置报告。 |
|
位置报告包含无效数据。 当公民地址报告不包含有效的 IS0 3166 双字母国家或地区代码,或者纬度/经度报表不包含 -90 到 90 之间的纬度或不包含 -180 到 180 之间的经度时,可能会出现这种情况。 |
|
用户没有设置默认位置的权限。 |
注解
ILocationReport 是特定位置报表类型的基接口。 用于 pLocationReport 的实际接口必须与通过 reportType 指定的类型匹配。
请注意,reportType 指定的类型必须是 ICivicAddressReport 或 ILatLongReport 的 IID。
纬度/经度报表中提供的纬度和经度必须对应于地球上的某个位置。 否则,此方法返回 HRESULT 错误值。
注意 如果满足以下两个条件,则应用程序不会从 OnLocationChanged 接收预期的位置更改事件。 首先,应用程序在 LOCALSERVICE、SYSTEM 或 NETWORKSERVICE 用户帐户的上下文中作为服务运行。 其次,位置更改事件是由于更改默认位置(当用户在 控制面板 中选择默认位置时手动)或以编程方式在应用程序调用 IDefaultLocation::SetReport 时更改。
示例
以下示例演示如何使用市政地址报告设置默认位置。
// set the civic address fields of the Default Location
hr = spDefaultLocation->SetReport(IID_ICivicAddressReport, spCivicAddressReport);
if (E_INVALIDARG == hr)
{
wprintf(L"The civic address report has invalid data. ");
wprintf(L"Country/region must be a valid ISO-3166 2-letter or 3-letter code.\n");
}
else if (E_ACCESSDENIED == hr)
{
wprintf(L"Administrator privilege required.\n");
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 [仅限桌面应用],Windows 7 |
最低受支持的服务器 | 无受支持的版本 |
目标平台 | Windows |
标头 | locationapi.h |
DLL | LocationAPI.dll |