GeoCoordinateWatcher Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет данные расположения, основанные на координатах широты и долготы.
public ref class GeoCoordinateWatcher : IDisposable, System::ComponentModel::INotifyPropertyChanged, System::Device::Location::IGeoPositionWatcher<System::Device::Location::GeoCoordinate ^>
[System.Security.SecurityCritical]
public class GeoCoordinateWatcher : IDisposable, System.ComponentModel.INotifyPropertyChanged, System.Device.Location.IGeoPositionWatcher<System.Device.Location.GeoCoordinate>
[<System.Security.SecurityCritical>]
type GeoCoordinateWatcher = class
interface IDisposable
interface INotifyPropertyChanged
interface IGeoPositionWatcher<GeoCoordinate>
Public Class GeoCoordinateWatcher
Implements IDisposable, IGeoPositionWatcher(Of GeoCoordinate), INotifyPropertyChanged
- Наследование
-
GeoCoordinateWatcher
- Атрибуты
- Реализации
Примеры
В следующей программе показано, как создать GeoCoordinateWatcher и начать получение данных с помощью времени ожидания инициализации. Затем код выводит координаты расположения, если известно.
using System;
using System.Device.Location;
namespace GetLocationProperty
{
class Program
{
static void Main(string[] args)
{
GetLocationProperty();
}
static void GetLocationProperty()
{
GeoCoordinateWatcher watcher = new GeoCoordinateWatcher();
// Do not suppress prompt, and wait 1000 milliseconds to start.
watcher.TryStart(false, TimeSpan.FromMilliseconds(1000));
GeoCoordinate coord = watcher.Position.Location;
if (!coord.IsUnknown)
{
Console.WriteLine("Lat: {0}, Long: {1}",
coord.Latitude,
coord.Longitude);
}
else
{
Console.WriteLine("Unknown latitude and longitude.");
}
}
}
}
Imports System.Device.Location
Module GetLocationProperty
Public Sub GetLocationProperty()
Dim watcher As New System.Device.Location.GeoCoordinateWatcher()
watcher.TryStart(False, TimeSpan.FromMilliseconds(1000))
Dim coord As GeoCoordinate = watcher.Position.Location
If coord.IsUnknown <> True Then
Console.WriteLine("Lat: {0}, Long: {1}", coord.Latitude, coord.Longitude)
Else
Console.WriteLine("Unknown latitude and longitude.")
End If
End Sub
Public Sub Main()
GetLocationProperty()
Console.ReadLine()
End Sub
End Module
В следующей программе показано, как получать обновления непрерывного расположения, подписавшись на PositionChanged события.
using System;
using System.Device.Location;
namespace GetLocationEvent
{
class AsyncProgram
{
static void Main(string[] args)
{
CLocation myLocation = new CLocation();
myLocation.GetLocationEvent();
Console.WriteLine("Enter any key to quit.");
Console.ReadLine();
}
class CLocation
{
GeoCoordinateWatcher watcher;
public void GetLocationEvent()
{
this.watcher = new GeoCoordinateWatcher();
this.watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);
bool started = this.watcher.TryStart(false, TimeSpan.FromMilliseconds(2000));
if (!started)
{
Console.WriteLine("GeoCoordinateWatcher timed out on start.");
}
}
void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
PrintPosition(e.Position.Location.Latitude, e.Position.Location.Longitude);
}
void PrintPosition(double Latitude, double Longitude)
{
Console.WriteLine("Latitude: {0}, Longitude {1}", Latitude, Longitude);
}
}
}
}
Imports System.Device.Location
Module GetLocationEvent
Public Class CLocation
Private WithEvents watcher As GeoCoordinateWatcher
Public Sub GetLocationEvent()
watcher = New System.Device.Location.GeoCoordinateWatcher()
AddHandler watcher.PositionChanged, AddressOf watcher_PositionChanged
Dim started As Boolean = watcher.TryStart(False, TimeSpan.FromMilliseconds(1000))
If Not started Then
Console.WriteLine("GeoCoordinateWatcher timed out on start.")
End If
End Sub
Private Sub watcher_PositionChanged(ByVal sender As Object, ByVal e As GeoPositionChangedEventArgs(Of GeoCoordinate))
PrintPosition(e.Position.Location.Latitude, e.Position.Location.Longitude)
End Sub
Private Sub PrintPosition(ByVal Latitude As Double, ByVal Longitude As Double)
Console.WriteLine("Latitude: {0}, Longitude {1}", Latitude, Longitude)
End Sub
End Class
Public Sub Main()
Dim myLocation As New CLocation()
myLocation.GetLocationEvent()
Console.WriteLine("Enter any key to quit.")
Console.ReadLine()
End Sub
End Module
Комментарии
Класс GeoCoordinateWatcher предоставляет данные о расположении на основе координат из текущего поставщика расположений. Текущий поставщик расположений определяется как самый высокий на компьютере на основе ряда факторов, таких как возраст и точность данных от всех поставщиков, точность, запрошенная приложениями расположения, а также влияние энергопотребления и производительности, связанного с поставщиком расположений. Текущий поставщик расположений может измениться со временем, например, когда устройство GPS теряет свой спутниковый сигнал в помещении, и поставщик Wi-Fi триангуляции становится наиболее точным поставщиком на компьютере.
Чтобы начать доступ к данным расположения, создайте GeoCoordinateWatcher и вызовите Start или TryStart инициируйте получение данных от текущего поставщика расположений.
Свойство Status можно проверить, чтобы определить, доступны ли данные. Если данные доступны, вы можете получить расположение один раз из свойства или получать обновления непрерывного Position расположения, обрабатывая PositionChanged событие.
Поддержка Permissionсвойств Statusи Position свойств INotifyPropertyChanged, чтобы приложение может привязать данные к этим свойствам.
В Windows 7 все System.Device.Location классы полностью функциональны, если поставщик расположений установлен и может разрешить расположение компьютера.
Замечание
В Windows 7 Starter Edition единственный поддерживаемый поставщик расположений — поставщик расположения по умолчанию на панели управления, а надстройка должна быть установлена, чтобы указать широту и долготу.
Примечание В версиях Windows до Windows 7 применяются следующие условия:
Все System.Device.Location объекты, имеющие конструкторы, могут быть созданы, но Status свойство всегда будет иметь значение Disabled.
Расположение, указанное свойством LocationPosition всегда будет Unknown.
События расположения не будут вызваны.
Конструкторы
| Имя | Описание |
|---|---|
| GeoCoordinateWatcher() |
Инициализирует новый экземпляр GeoCoordinateWatcher с параметрами точности по умолчанию. |
| GeoCoordinateWatcher(GeoPositionAccuracy) |
Инициализирует новый экземпляр GeoCoordinateWatcherс учетом уровня точности. |
Свойства
| Имя | Описание |
|---|---|
| DesiredAccuracy |
Возвращает запрошенный уровень точности для данных расположения, предоставляемых этим элементом GeoCoordinateWatcher. |
| MovementThreshold |
Расстояние, которое необходимо переместить в метрах относительно координаты от последнего PositionChanged события, прежде чем поставщик расположения вызывает другое PositionChanged событие. |
| Permission |
Указывает, предоставлено ли разрешение на доступ к данным о расположении от поставщиков расположений или отклонено. |
| Position |
Возвращает значение GeoCoordinate , указывающее текущее расположение. |
| Status |
Возвращает текущее состояние GeoCoordinateWatcherобъекта . |
Методы
| Имя | Описание |
|---|---|
| Dispose() |
Освобождает все ресурсы, используемые текущим экземпляром GeoCoordinateWatcher класса. |
| Dispose(Boolean) |
Освобождает все ресурсы, используемые текущим экземпляром GeoCoordinateWatcher класса. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| Finalize() |
Освобождает ресурсы и выполняет другие операции очистки перед GeoCoordinateWatcher восстановлением сборкой мусора. |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>) |
Вызывается при возникновении PositionChanged события. |
| OnPositionStatusChanged(GeoPositionStatusChangedEventArgs) |
Вызывается при возникновении StatusChanged события. |
| OnPropertyChanged(String) |
Вызывается при изменении свойства GeoCoordinateWatcher . |
| Start() |
Инициируйте получение данных из текущего поставщика расположений. Этот метод включает PositionChanged события и разрешает доступ к свойству Position . |
| Start(Boolean) |
Инициируйте получение данных из текущего поставщика расположений. Этот метод включает PositionChanged события и разрешает доступ к свойству Position . |
| Stop() |
GeoCoordinateWatcher Останавливает предоставление данных и событий расположения. |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
| TryStart(Boolean, TimeSpan) |
Инициирует получение данных от текущего поставщика расположений. Этот метод возвращается синхронно. |
События
| Имя | Описание |
|---|---|
| PositionChanged |
Указывает, что широта или долгота данных расположения изменились. |
| StatusChanged |
Указывает, что состояние GeoCoordinateWatcher объекта изменилось. |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| IGeoPositionWatcher<GeoCoordinate>.PositionChanged |
Указывает, что изменены данные расположения. |
| IGeoPositionWatcher<GeoCoordinate>.StatusChanged |
Указывает, что состояние поставщика расположения изменилось. |
| INotifyPropertyChanged.PropertyChanged |
Указывает, что Status свойство, Position свойство или Permission свойство изменилось. |