GeoCoordinateWatcher Klasse

Definition

Gibt Positionsdaten an, die auf Breiten- und Längenkoordinaten basieren.

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
Vererbung
GeoCoordinateWatcher
Attribute
Implementiert

Beispiele

Das folgende Programm zeigt, wie Sie mithilfe eines Initialisierungstimeouts ein GeoCoordinateWatcher erstellen und mit dem Erfassen von Daten beginnen. Der Code gibt dann die Koordinaten der Position aus, sofern bekannt.

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

Das folgende Programm zeigt, wie Sie fortlaufende Standortupdates PositionChanged erhalten, indem Sie Ereignisse abonnieren.

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

Hinweise

Die GeoCoordinateWatcher -Klasse stellt koordinatenbasierte Standortdaten vom aktuellen Standortanbieter bereit. Der aktuelle Standortanbieter wird basierend auf einer Reihe von Faktoren als der höchste auf dem Computer priorisiert, z. B. das Alter und die Genauigkeit der Daten aller Anbieter, die von Standortanwendungen angeforderte Genauigkeit und die mit dem Standortanbieter verbundenen Energieverbrauchs- und Leistungsbeeinträchtigungen. Der aktuelle Standortanbieter kann sich im Laufe der Zeit für instance ändern, wenn ein GPS-Gerät sein Satellitensignal im Innenbereich verliert und ein Wi-Fi Triangulationsanbieter zum genauesten Anbieter auf dem Computer wird.

Um mit dem Zugriff auf Standortdaten zu beginnen, erstellen Sie einen GeoCoordinateWatcher und rufen sie Start auf, oder TryStart initiieren Sie die Erfassung von Daten vom aktuellen Standortanbieter.

Die Status Eigenschaft kann überprüft werden, um festzustellen, ob Daten verfügbar sind. Wenn Daten verfügbar sind, können Sie den Standort einmal von der Position -Eigenschaft abrufen oder fortlaufende Standortupdates erhalten, indem Sie das PositionChanged Ereignis behandeln.

Die PermissionEigenschaften , Status, und Position unterstützen INotifyPropertyChanged, sodass eine Anwendung Datenbindung an diese Eigenschaften durchführen kann.

In Windows 7 sind alle System.Device.Location Klassen voll funktionsfähig, wenn ein Standortanbieter installiert ist und den Standort des Computers auflösen kann.

Hinweis

Unter Windows 7 Starter Edition ist der einzige unterstützte Standortanbieter der Standardspeicherortanbieter in Systemsteuerung, und ein Add-In muss installiert sein, um Breiten- und Längengrad anzugeben.

Hinweis In Windows-Versionen vor Windows 7 gelten die folgenden Bedingungen:

Konstruktoren

GeoCoordinateWatcher()

Initialisiert eine neue Instanz von GeoCoordinateWatcher mit Standardeinstellungen für die Genauigkeit.

GeoCoordinateWatcher(GeoPositionAccuracy)

Initialisiert eine neue Instanz von GeoCoordinateWatcher, wobei die Genauigkeitsstufe angegeben ist.

Eigenschaften

DesiredAccuracy

Die angeforderte Genauigkeitsstufe für die Positionsdaten, die vom GeoCoordinateWatcher bereitgestellt wird.

MovementThreshold

Die Bewegungsentfernung in Metern relativ zur Koordinate des letzten PositionChanged-Ereignisses, die zurückgelegt werden muss, bevor der Ortungsanbieter ein weiteres PositionChanged-Ereignis auslöst.

Permission

Gibt an, ob die Berechtigung für den Zugriff auf Positionsdaten von Ortungsanbietern gewährt oder verweigert wurde.

Position

Ruft die GeoCoordinate ab, die die aktuelle Position angibt.

Status

Ruft den aktuellen Status von GeoCoordinateWatcher ab.

Methoden

Dispose()

Gibt alle von der aktuellen Instanz der GeoCoordinateWatcher-Klasse verwendeten Ressourcen frei.

Dispose(Boolean)

Gibt alle von der aktuellen Instanz der GeoCoordinateWatcher-Klasse verwendeten Ressourcen frei.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
Finalize()

Gibt Ressourcen frei und führt andere Bereinigungsvorgänge durch, bevor das GeoCoordinateWatcher durch die Garbage Collection wieder freigegeben wird.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>)

Wird aufgerufen, wenn ein PositionChanged-Ereignis auftritt.

OnPositionStatusChanged(GeoPositionStatusChangedEventArgs)

Wird aufgerufen, wenn ein StatusChanged-Ereignis auftritt.

OnPropertyChanged(String)

Wird aufgerufen, wenn eine Eigenschaft des GeoCoordinateWatcher geändert wird.

Start()

Initiiert die Erfassung von Daten vom aktuellen Ortungsanbieter. Diese Methode aktiviert PositionChanged-Ereignisse und ermöglicht den Zugriff auf die Position-Eigenschaft.

Start(Boolean)

Initiiert die Erfassung von Daten vom aktuellen Ortungsanbieter. Diese Methode aktiviert PositionChanged-Ereignisse und ermöglicht den Zugriff auf die Position-Eigenschaft.

Stop()

Beendet die Bereitstellung von Positionsdaten und Ortungsereignissen durch den GeoCoordinateWatcher.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
TryStart(Boolean, TimeSpan)

Initiiert die Erfassung von Daten vom aktuellen Ortungsanbieter. Die Rückgabe der Methode erfolgt synchron.

Ereignisse

PositionChanged

Gibt an, dass sich die Breiten- oder Längenkoordinate der Positionsdaten geändert hat.

StatusChanged

Gibt an, dass sich der Status des GeoCoordinateWatcher-Objekts geändert hat.

Explizite Schnittstellenimplementierungen

IGeoPositionWatcher<GeoCoordinate>.PositionChanged

Gibt an, dass die Positionsdaten geändert wurden.

IGeoPositionWatcher<GeoCoordinate>.StatusChanged

Gibt an, dass der Status des Ortungsanbieters geändert wurde.

INotifyPropertyChanged.PropertyChanged

Gibt an, dass die Status-Eigenschaft, die Position-Eigenschaft oder die Permission-Eigenschaft geändert wurde.

Gilt für: