Condividi tramite


GeoCoordinateWatcher Classe

Definizione

Fornisce i dati sulla posizione basati sulle coordinate di latitudine e longitudine.

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
Ereditarietà
GeoCoordinateWatcher
Attributi
Implementazioni

Esempio

Il programma seguente illustra come creare e GeoCoordinateWatcher avviare l'acquisizione di dati usando un timeout di inizializzazione. Il codice stampa quindi le coordinate della posizione, se noto.

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

Il programma seguente illustra come ricevere aggiornamenti continui della posizione sottoscrivendo PositionChanged gli eventi.

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

Commenti

La GeoCoordinateWatcher classe fornisce dati sulla posizione in base alle coordinate dal provider di posizione corrente. Il provider di posizione corrente è prioritario come il più alto nel computer, in base a diversi fattori, ad esempio l'età e l'accuratezza dei dati di tutti i provider, l'accuratezza richiesta dalle applicazioni di posizione e l'impatto sul consumo di energia e sulle prestazioni associati al provider di posizione. Il provider di posizione corrente potrebbe cambiare nel tempo, ad esempio, quando un dispositivo GPS perde il suo segnale satellite al chiuso e un provider di triangolazione Wi-Fi diventa il provider più accurato sul computer.

Per iniziare ad accedere ai dati sulla posizione, creare un GeoCoordinateWatcher oggetto e chiamare Start o TryStart per avviare l'acquisizione dei dati dal provider di posizione corrente.

È possibile controllare la Status proprietà per determinare se i dati sono disponibili. Se i dati sono disponibili, è possibile ottenere la posizione una volta dalla Position proprietà o ricevere aggiornamenti continui della posizione gestendo l'evento PositionChanged .

Le Permissionproprietà , Statuse Position supportano INotifyPropertyChanged, in modo che un'applicazione possa associare dati a queste proprietà.

In Windows 7, tutte le System.Device.Location classi sono completamente funzionanti se un provider di percorsi è installato e in grado di risolvere il percorso del computer.

Annotazioni

In Windows 7 Starter Edition, l'unico provider di percorsi supportato è il provider di percorsi predefinito nel Pannello di controllo e un componente aggiuntivo deve essere installato per specificare latitudine e longitudine.

Nota Nelle versioni di Windows precedenti a Windows 7 si applicano le condizioni seguenti:

Costruttori

Nome Descrizione
GeoCoordinateWatcher()

Inizializza una nuova istanza di GeoCoordinateWatcher con impostazioni di accuratezza predefinite.

GeoCoordinateWatcher(GeoPositionAccuracy)

Inizializza una nuova istanza di , in base a un livello di GeoCoordinateWatcheraccuratezza.

Proprietà

Nome Descrizione
DesiredAccuracy

Ottiene il livello di accuratezza richiesto per i dati sulla posizione forniti da GeoCoordinateWatcher.

MovementThreshold

Distanza che deve essere spostata, in metri, rispetto alla coordinata dell'ultimo PositionChanged evento, prima che il provider di posizione generi un altro PositionChanged evento.

Permission

Indica se l'autorizzazione per accedere ai dati sulla posizione dai provider di posizione è stata concessa o negata.

Position

Ottiene l'oggetto GeoCoordinate che indica la posizione corrente.

Status

Ottiene lo stato corrente dell'oggetto GeoCoordinateWatcher.

Metodi

Nome Descrizione
Dispose()

Rilascia tutte le risorse utilizzate dall'istanza corrente della GeoCoordinateWatcher classe .

Dispose(Boolean)

Rilascia tutte le risorse usate dall'istanza corrente della GeoCoordinateWatcher classe .

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Finalize()

Libera le risorse ed esegue altre operazioni di pulizia prima che venga GeoCoordinateWatcher recuperato da Garbage Collection.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>)

Chiamato quando si verifica un PositionChanged evento.

OnPositionStatusChanged(GeoPositionStatusChangedEventArgs)

Chiamato quando si verifica un StatusChanged evento.

OnPropertyChanged(String)

Chiamato quando viene modificata una proprietà dell'oggetto GeoCoordinateWatcher .

Start()

Avviare l'acquisizione dei dati dal provider di posizione corrente. Questo metodo abilita PositionChanged gli eventi e consente l'accesso Position alla proprietà .

Start(Boolean)

Avviare l'acquisizione dei dati dal provider di posizione corrente. Questo metodo abilita PositionChanged gli eventi e consente l'accesso Position alla proprietà .

Stop()

Impedisce all'oggetto di GeoCoordinateWatcher fornire i dati e gli eventi di posizione.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
TryStart(Boolean, TimeSpan)

Avvia l'acquisizione dei dati dal provider di posizione corrente. Questo metodo restituisce in modo sincrono.

Eventi

Nome Descrizione
PositionChanged

Indica che la latitudine o la longitudine dei dati della posizione è stata modificata.

StatusChanged

Indica che lo stato dell'oggetto GeoCoordinateWatcher è stato modificato.

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IGeoPositionWatcher<GeoCoordinate>.PositionChanged

Indica che i dati della posizione sono stati modificati.

IGeoPositionWatcher<GeoCoordinate>.StatusChanged

Indica che lo stato del provider di posizione è stato modificato.

INotifyPropertyChanged.PropertyChanged

Indica che la Status proprietà, la Position proprietà o la Permission proprietà è stata modificata.

Si applica a