Freigeben über


GeoCoordinateWatcher Klasse

Definition

Liefert Standortdaten, die auf Breiten- und Längengradkoordinaten 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 daten GeoCoordinateWatcher erstellen und mit dem Abrufen von Daten beginnen. Der Code druckt dann die Koordinaten der Position, falls 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)
            {
                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 fortlaufende Positionsupdates durch Abonnieren von PositionChanged Ereignissen empfangen werden.

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 liefert koordinatenbasierte Standortdaten vom aktuellen Standortanbieter. Der aktuelle Standortanbieter wird auf dem Computer basierend auf einer Reihe von Faktoren priorisiert, z. B. das Alter und die Genauigkeit der Daten aller Anbieter, die Genauigkeit, die von Standortanwendungen angefordert wird, sowie die Leistungs- und Leistungsauswirkungen, die dem Standortanbieter zugeordnet sind. Der aktuelle Standortanbieter kann sich beispielsweise im Laufe der Zeit ändern, wenn ein GPS-Gerät sein Satellitensignal im Innenbereich verliert und ein Wi-Fi Triangulationsanbieter der genaueste Anbieter auf dem Computer wird.

Um mit dem Zugriff auf Standortdaten zu beginnen, erstellen Sie einen GeoCoordinateWatcher Anruf, Start oder TryStart initiieren Sie den Erwerb 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 aus der Position Eigenschaft abrufen oder fortlaufende Positionsaktualisierungen erhalten, indem Sie das PositionChanged Ereignis behandeln.

Die Permission, Statusund Position Eigenschaften unterstützen INotifyPropertyChanged, sodass eine Anwendung eine Datenbindung an diese Eigenschaften ausführen kann.

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

Hinweis

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

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

Konstruktoren

Name Beschreibung
GeoCoordinateWatcher()

Initialisiert eine neue Instanz mit GeoCoordinateWatcher Standardgenauigkeitseinstellungen.

GeoCoordinateWatcher(GeoPositionAccuracy)

Initialisiert eine neue Instanz von GeoCoordinateWatcher, die eine Genauigkeitsebene hat.

Eigenschaften

Name Beschreibung
DesiredAccuracy

Ruft die angeforderte Genauigkeitsebene für die Standortdaten ab, die von der GeoCoordinateWatcher.

MovementThreshold

Der Abstand, der in Metern verschoben werden muss, relativ zur Koordinate vom letzten PositionChanged Ereignis, bevor der Standortanbieter ein weiteres PositionChanged Ereignis auslöst.

Permission

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

Position

Ruft ab, der die GeoCoordinate aktuelle Position angibt.

Status

Ruft den aktuellen Status der GeoCoordinateWatcher.

Methoden

Name Beschreibung
Dispose()

Gibt alle Ressourcen frei, die von der aktuellen Instanz der GeoCoordinateWatcher Klasse verwendet werden.

Dispose(Boolean)

Gibt alle Ressourcen frei, die von der aktuellen Instanz der GeoCoordinateWatcher Klasse verwendet werden.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
Finalize()

Gibt Ressourcen frei und führt andere Bereinigungsvorgänge aus, bevor die GeoCoordinateWatcher Garbage Collection zurückgefordert wird.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der 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 der GeoCoordinateWatcher Änderungen geändert wird.

Start()

Initiieren Sie den Erwerb von Daten vom aktuellen Standortanbieter. Diese Methode ermöglicht PositionChanged Ereignisse und ermöglicht den Zugriff auf die Position Eigenschaft.

Start(Boolean)

Initiieren Sie den Erwerb von Daten vom aktuellen Standortanbieter. Diese Methode ermöglicht PositionChanged Ereignisse und ermöglicht den Zugriff auf die Position Eigenschaft.

Stop()

Verhindert die GeoCoordinateWatcher Bereitstellung von Standortdaten und Ereignissen.

ToString()

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

(Geerbt von Object)
TryStart(Boolean, TimeSpan)

Initiiert den Erwerb von Daten vom aktuellen Standortanbieter. Diese Methode gibt synchron zurück.

Ereignisse

Name Beschreibung
PositionChanged

Gibt an, dass sich der Breiten- oder Längengrad der Standortdaten geändert hat.

StatusChanged

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

Explizite Schnittstellenimplementierungen

Name Beschreibung
IGeoPositionWatcher<GeoCoordinate>.PositionChanged

Gibt an, dass sich die Standortdaten geändert haben.

IGeoPositionWatcher<GeoCoordinate>.StatusChanged

Gibt an, dass sich der Status des Standortanbieters geändert hat.

INotifyPropertyChanged.PropertyChanged

Gibt an, dass sich die Status Eigenschaft, die Position Eigenschaft oder die Permission Eigenschaft geändert hat.

Gilt für: