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 != true)
{
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 Начальная Edition единственным поддерживаемым поставщиком расположений является поставщик расположений по умолчанию в панель управления. Для указания широты и долготы необходимо установить надстройку.
Примечание В версиях Windows, предшествующих Windows 7, применяются следующие условия:
Можно создать все System.Device.Location объекты с конструкторами, но Status свойство всегда будет иметь значение Disabled.
Расположение, указанное свойством Location объекта Position , всегда будет равно 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 изменилось. |