Share via


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) 等各种操作系统 (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 对象。 位置替代会话的长度由对 SetOverridePositionClearOverridePosition 的调用约束。 会话成功启动后,在清除原始对象之前,其他实体无法获取替代功能。

构造函数

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 访问令牌请求表单

适用于