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 來覆寫電腦位置的遠端存取用戶端伺服器端應用程式。 在此案例中,用戶端應用程式會在各種操作系統上執行, (OS) (,例如 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 物件,並將其提供給位置感知應用程式。 位置覆寫會話的長度是由 對 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存取令牌要求表單

適用於