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) 上執行,並將位置定期張貼到做為主電腦上的 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,應用程式必須宣告 重要 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 存取令牌要求表單。 |