共用方式為


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) 上執行,並將位置定期張貼到做為主電腦上的 Proxy 的元件。

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 存取令牌要求表單

適用於