GeolocationProvider 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供从远程源替代用户位置的功能。
注意
若要调用位置覆盖 API,应用必须声明 runFullTrust
受限功能。
重要
Windows.Devices.Geolocation.Provider API 是受限访问功能的一部分, (请参阅 LimitedAccessFeatures 类) 。 有关详细信息或请求解锁令牌,请使用 LAF 访问令牌请求表单。
public ref class GeolocationProvider sealed
/// [Windows.Foundation.Metadata.Activatable(983040, "Windows.Foundation.UniversalApiContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 983040)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class GeolocationProvider final
[Windows.Foundation.Metadata.Activatable(983040, "Windows.Foundation.UniversalApiContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 983040)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class GeolocationProvider
function GeolocationProvider()
Public NotInheritable Class GeolocationProvider
- 继承
- 属性
Windows 要求
设备系列 |
Windows 11 Insider Preview (在 10.0.23504.0 中引入)
|
API contract |
Windows.Foundation.UniversalApiContract (在 v15.0 中引入)
|
应用功能 |
runFullTrust
|
示例
此代码示例中的方案涉及远程访问客户端的服务器端应用,这些 API 用于替代计算机的位置。 在此方案中,客户端应用在 Windows、MacOS、iOS 或 Linux) 等各种操作系统 (OSs) (上运行,并通过调用这些 API) 到充当主机上代理的组件来定期发布位置 (。
using Windows.Devices.Geolocation;
using Windows.Devices.Geolocation.Provider;
...
public class OverrideLocation
{
public struct ClientPositionInfo
{
public BasicGeoposition geoposition;
public PositionSource positionSource;
public double accuracy;
};
private GeolocationProvider geolocationProvide = null;
// When remote desktop connection is established,
// call this API to initialize.
public void Initialize()
{
geolocationProvider = new GeolocationProvider();
geolocationProvider.IsOverriddenChanged +=
new EventHandler<object>(OnIsOverriddenChanged);
}
// Uninitialize when remote desktop connection is stopped.
public void DeInitialize()
{
geolocationProvider.IsOverriddenChanged -= OnIsOverriddenChanged;
geolocationProvide.ClearOverridePosition();
}
private void OnIsOverriddenChanged(object sender, object args)
{
if (!geolocationProvider.IsOverridden)
{
SetPosition();
}
}
// When remote desktop connection established,
// call this API to set override position.
public bool SetPosition()
{
// Get client location information from client side.
ClientPositionInfo clientPositionInfo = GetClientLocationInformation();
LocationOverrideStatus status = geolocationProvider.SetOverridePosition(
clientPositionInfo.geoposition,
clientPositionInfo.positionSource,
clientPositionInfo.accuracy);
if (status == LocationOverrideStatus.AlreadyStarted)
{
// Failed to get override session.
return false;
}
else if (status == LocationOverrideStatus.AccessDenied)
{
// Do not have access to override.
return false;
}
else if (status == LocationOverrideStatus.Other)
{
// something else caused the failure.
return false;
}
return true;
}
public bool UpdatePosition()
{
// Update position.
return SetPosition();
}
}
注解
应从要重写位置并将其提供给位置感知应用的用户上下文访问 GeolocationProvider 对象。 位置替代会话的长度由对 SetOverridePosition 和 ClearOverridePosition 的调用约束。 会话成功启动后,在清除原始对象之前,其他实体无法获取替代功能。
构造函数
GeolocationProvider() |
构造 GeolocationProvider 的新实例。 注意 若要调用位置覆盖 API,应用必须声明 重要 Windows.Devices.Geolocation.Provider API 是受限访问功能的一部分, (请参阅 LimitedAccessFeatures 类) 。 有关详细信息或请求解锁令牌,请使用 LAF 访问令牌请求表单。 |
属性
IsOverridden |
获取一个值,该值指示当前是否重写拥有的 GeolocationProvider 。 可以在 GeolocationProvider.IsOverriddenChanged 事件的处理程序中访问此属性的值。 注意 若要调用位置覆盖 API,应用必须声明 重要 Windows.Devices.Geolocation.Provider API 是受限访问功能的一部分, (请参阅 LimitedAccessFeatures 类) 。 有关详细信息或请求解锁令牌,请使用 LAF 访问令牌请求表单。 |
方法
ClearOverridePosition() |
清除 (或重置) 之前通过调用 GeolocationProvider.SetOverridePosition 设置的替代位置。 注意 若要调用位置覆盖 API,应用必须声明 重要 Windows.Devices.Geolocation.Provider API 是受限访问功能的一部分, (请参阅 LimitedAccessFeatures 类) 。 有关详细信息或请求解锁令牌,请使用 LAF 访问令牌请求表单。 |
SetOverridePosition(BasicGeoposition, PositionSource, Double) |
设置用户位置的替代位置。 可以通过调用 GeolocationProvider.ClearOverridePosition 来清除替代位置 注意 若要调用位置覆盖 API,应用必须声明 重要 Windows.Devices.Geolocation.Provider API 是受限访问功能的一部分, (请参阅 LimitedAccessFeatures 类) 。 有关详细信息或请求解锁令牌,请使用 LAF 访问令牌请求表单。 |
事件
IsOverriddenChanged |
当 GeolocationProvider.IsOverridden 属性的值更改时引发的事件。 可以注册以处理此事件,并访问 GeolocationProvider.IsOverridden 的当前值作为响应。 注意 若要调用位置覆盖 API,应用必须声明 重要 Windows.Devices.Geolocation.Provider API 是受限访问功能的一部分, (请参阅 LimitedAccessFeatures 类) 。 有关详细信息或请求解锁令牌,请使用 LAF 访问令牌请求表单。 |
适用于
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈