GeoCoordinateWatcher Класс

Определение

Представляет данные расположения, выраженные в виде координат широты и долготы.Supplies location data that is based on latitude and longitude coordinates.

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>
type GeoCoordinateWatcher = class
    interface IDisposable
    interface INotifyPropertyChanged
    interface IGeoPositionWatcher<GeoCoordinate>
Public Class GeoCoordinateWatcher
Implements IDisposable, IGeoPositionWatcher(Of GeoCoordinate), INotifyPropertyChanged
Наследование
GeoCoordinateWatcher
Атрибуты
Реализации

Примеры

В следующей программе показано, как создать GeoCoordinateWatcher и начать получение данных с помощью времени ожидания инициализации.The following program shows how to create a GeoCoordinateWatcher and start acquiring data by using an initialization timeout. Затем код выводит координаты расположения, если оно известно.The code then prints the coordinates of the location, if known.

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 события.The following program shows how to receive continuous location updates by subscribing to PositionChanged events.

using System;
using System.Device.Location;

namespace GetLocationEvent
{
    class Program
    {
        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 Класс предоставляет данные расположения на основе координат от поставщика текущего расположения.The GeoCoordinateWatcher class supplies coordinate-based location data from the current location provider. Поставщику расположения назначается приоритет в соответствии с самым высоким значением на компьютере в зависимости от ряда факторов, таких как возраст и точность данных от всех поставщиков, точность, запрашиваемая приложениями размещения, а также энергопотребление и влияние на производительность. связан с поставщиком расположения.The current location provider is prioritized as the highest on the computer, based on a number of factors, such as the age and accuracy of the data from all providers, the accuracy requested by location applications, and the power consumption and performance impact associated with the location provider. При этом поставщик местоположения может измениться с течением времени, например, когда устройство GPS теряет свои подвижки сигнала, а поставщик триангуляции Wi-Fi станет самым точным поставщиком на компьютере.The current location provider might change over time, for instance, when a GPS device loses its satellite signal indoors and a Wi-Fi triangulation provider becomes the most accurate provider on the computer.

Чтобы начать доступ к данным расположения, создайте GeoCoordinateWatcher вызов Start и или TryStart , чтобы инициировать получение данных от поставщика текущего расположения.To begin accessing location data, create a GeoCoordinateWatcher and call Start or TryStart to initiate the acquisition of data from the current location provider.

Status Свойство можно проверить, чтобы определить, доступны ли данные.The Status property can be checked to determine if data is available. Если данные доступны, их можно получить один раз из Position свойства или получить непрерывные обновления расположения, PositionChanged обрабатывая событие.If data is available, you can get the location one time from the Position property, or receive continuous location updates by handling the PositionChanged event.

Свойства Permission, Statusи поддерживают,INotifyPropertyChangedчтобы приложение могла привязывать данные к этим свойствам. PositionThe Permission, Status, and Position properties support INotifyPropertyChanged, so that an application can data-bind to these properties.

В Windows 7 все System.Device.Location классы являются полностью функциональными, если установлен поставщик расположения и может разрешить расположение компьютера.In Windows 7, all the System.Device.Location classes are fully functional if a location provider is installed and able to resolve the computer's location.

Примечание

В Windows 7 Starter Edition единственным поддерживаемым поставщиком расположения является поставщик расположения по умолчанию на панели управления. для указания широты и долготы необходимо установить надстройку.On Windows 7 Starter Edition, the only supported location provider is the Default Location Provider in Control Panel, and an add-in must be installed to specify latitude and longitude.

Примечание . В версиях Windows, предшествовавших Windows 7, применяются следующие условия.Note In versions of Windows prior to Windows 7, the following conditions apply:

  • Все System.Device.Location объекты, имеющие конструкторы, могут быть созданы, Status но свойство всегда будет иметь значение Disabled.All System.Device.Location objects that have constructors can be created, but the Status property will always have the value Disabled.

  • Расположение, Location указанное Position свойством, всегда будет иметь Unknownзначение.The location indicated by the Location property of Position will always be Unknown.

  • События расположения не будут вызываться.No location events will be raised.

Конструкторы

GeoCoordinateWatcher()

Инициализирует новый экземпляр класса GeoCoordinateWatcher с параметрами погрешности по умолчанию.Initializes a new instance of GeoCoordinateWatcher with default accuracy settings.

GeoCoordinateWatcher(GeoPositionAccuracy)

Инициализирует новый экземпляр GeoCoordinateWatcher с заданным уровнем погрешности.Initializes a new instance of GeoCoordinateWatcher, given an accuracy level.

Свойства

DesiredAccuracy

Запрашиваемый уровень точности для данных расположения, предоставляемых GeoCoordinateWatcher.The requested accuracy level for the location data that is provided by the GeoCoordinateWatcher.

MovementThreshold

Расстояние в метрах по отношению к координате из последнего события PositionChanged, после перемещения на которое поставщик расположения породит другое событие PositionChanged.The distance that must be moved, in meters, relative to the coordinate from the last PositionChanged event, before the location provider raises another PositionChanged event.

Permission

Указывает, предоставлено ли разрешение на доступ к данным расположения от поставщиков расположения.Indicates whether permission to access location data from location providers has been granted or denied.

Position

Получает объект GeoCoordinate, указывающий текущее расположение.Gets the GeoCoordinate which indicates the current location.

Status

Получает текущее состояние объекта GeoCoordinateWatcher.Gets the current status of the GeoCoordinateWatcher.

Методы

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса GeoCoordinateWatcher.Releases all resources that are used by the current instance of the GeoCoordinateWatcher class.

Dispose(Boolean)

Освобождает все ресурсы, используемые текущим экземпляром класса GeoCoordinateWatcher.Releases all resources used by the current instance of the GeoCoordinateWatcher class.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
Finalize()

Освобождает ресурсы и выполняет другие операции очистки, перед тем как объект GeoCoordinateWatcher будет удален при сборке мусора.Frees resources and performs other cleanup operations before the GeoCoordinateWatcher is reclaimed by garbage collection.

GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>)

Вызывается, когда происходит событие PositionChanged.Called when a PositionChanged event occurs.

OnPositionStatusChanged(GeoPositionStatusChangedEventArgs)

Вызывается, когда происходит событие StatusChanged.Called when a StatusChanged event occurs.

OnPropertyChanged(String)

Вызывается при изменении свойств объекта GeoCoordinateWatcher.Called when a property of the GeoCoordinateWatcher changes.

Start()

Инициирует получение данных от текущего поставщика расположения.Initiate the acquisition of data from the current location provider. Этот метод делает возможными события PositionChanged и разрешает доступ к свойству Position.This method enables PositionChanged events and allows access to the Position property.

Start(Boolean)

Инициирует получение данных от текущего поставщика расположения.Initiate the acquisition of data from the current location provider. Этот метод делает возможными события PositionChanged и разрешает доступ к свойству Position.This method enables PositionChanged events and allows access to the Position property.

Stop()

Останавливает передачу данных расположения и событий объектом GeoCoordinateWatcher.Stops the GeoCoordinateWatcher from providing location data and events.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)
TryStart(Boolean, TimeSpan)

Инициирует получение данных расположения от текущего поставщика расположения.Initiates the acquisition of data from the current location provider. Этот метод завершает работу синхронно.This method returns synchronously.

События

PositionChanged

Указывает, что широта или долгота в данных расположения изменилась.Indicates that the latitude or longitude of the location data has changed.

StatusChanged

Указывает, что состояние объекта GeoCoordinateWatcher изменилось.Indicates that the status of the GeoCoordinateWatcher object has changed.

Явные реализации интерфейса

IGeoPositionWatcher<GeoCoordinate>.PositionChanged

Указывает, что данные расположения изменились.Indicates that the location data has changed.

IGeoPositionWatcher<GeoCoordinate>.StatusChanged

Указывает, что состояние поставщика расположения изменилось.Indicates that the status of the location provider has changed.

INotifyPropertyChanged.PropertyChanged

Указывает, что свойство Status, свойство Position или свойство Permission изменилось.Indicates that the Status property, the Position property, or the Permission property has changed.

Применяется к