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)上运行,并定期(通过调用这些 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 访问令牌请求表单。 |