GeolocationProvider Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет возможность переопределить расположение пользователя из удаленного источника.
Заметка
Чтобы вызвать API-интерфейсы переопределения расположения, приложение должно объявить runFullTrust
ограниченные возможности.
Важный
API-интерфейсы
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) и периодически публикуют позиции (вызывая эти 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-интерфейсы переопределения расположения, приложение должно объявить Важный API-интерфейсы |
Свойства
IsOverridden |
Возвращает значение, указывающее, переопределяется ли GeolocationProvider. Вы можете получить доступ к значению этого свойства в обработчике для события GeolocationProvider.IsOverriddenChanged. Заметка Чтобы вызвать API-интерфейсы переопределения расположения, приложение должно объявить Важный API-интерфейсы |
Методы
ClearOverridePosition() |
Очищает (или сбрасывает) переопределенную позицию, которая была задана ранее вызовом GeolocationProvider.SetOverridePosition. Заметка Чтобы вызвать API-интерфейсы переопределения расположения, приложение должно объявить Важный API-интерфейсы |
SetOverridePosition(BasicGeoposition, PositionSource, Double) |
Задает переопределение позиции для расположения пользователя. Вы можете очистить позицию переопределения, вызвав GeolocationProvider.ClearOverridePosition Заметка Чтобы вызвать API-интерфейсы переопределения расположения, приложение должно объявить Важный API-интерфейсы |
События
IsOverriddenChanged |
Событие, возникающее при изменении значения свойства GeolocationProvider.IsOverridden. Вы можете зарегистрировать для обработки этого события и получить доступ к текущему значению GeolocationProvider.IsOverridden в ответе. Заметка Чтобы вызвать API-интерфейсы переопределения расположения, приложение должно объявить Важный API-интерфейсы |