GeolocationProvider 类

定义

提供从远程源替代用户位置的功能。

注意

若要调用位置替代 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
继承
Object Platform::Object IInspectable 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,应用必须声明 runFullTrust受限功能

重要

Windows.Devices.Geolocation.Provider API 是受限访问功能的一部分(请参阅 LimitedAccessFeatures 类)。 有关详细信息或请求解锁令牌,请使用 LAF 访问令牌请求表单

属性

IsOverridden

获取一个值,该值指示当前是否重写拥有 GeolocationProvider。 可以在 GeolocationProvider.IsOverriddenChanged 事件的处理程序中访问此属性的值。

注意

若要调用位置替代 API,应用必须声明 runFullTrust受限功能

重要

Windows.Devices.Geolocation.Provider API 是受限访问功能的一部分(请参阅 LimitedAccessFeatures 类)。 有关详细信息或请求解锁令牌,请使用 LAF 访问令牌请求表单

方法

ClearOverridePosition()

清除(或重置)之前通过调用 GeolocationProvider.SetOverridePosition设置的替代位置。

注意

若要调用位置替代 API,应用必须声明 runFullTrust受限功能

重要

Windows.Devices.Geolocation.Provider API 是受限访问功能的一部分(请参阅 LimitedAccessFeatures 类)。 有关详细信息或请求解锁令牌,请使用 LAF 访问令牌请求表单

SetOverridePosition(BasicGeoposition, PositionSource, Double)

设置用户位置的替代位置。 可以通过调用 GeolocationProvider.ClearOverridePosition 来清除替代位置

注意

若要调用位置替代 API,应用必须声明 runFullTrust受限功能

重要

Windows.Devices.Geolocation.Provider API 是受限访问功能的一部分(请参阅 LimitedAccessFeatures 类)。 有关详细信息或请求解锁令牌,请使用 LAF 访问令牌请求表单

事件

IsOverriddenChanged

GeolocationProvider.IsOverridden 属性更改时引发的事件。 可以注册以处理此事件,并在响应中访问 GeolocationProvider.IsOverridden 的当前值。

注意

若要调用位置替代 API,应用必须声明 runFullTrust受限功能

重要

Windows.Devices.Geolocation.Provider API 是受限访问功能的一部分(请参阅 LimitedAccessFeatures 类)。 有关详细信息或请求解锁令牌,请使用 LAF 访问令牌请求表单

适用于