GeoCoordinateWatcher Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce i dati del percorso basati sulle coordinate della latitudine e della 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 un GeoCoordinateWatcher oggetto e 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 != 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
Il programma seguente illustra come ricevere aggiornamenti di posizione continua 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 di posizione basati su coordinate dal provider di posizioni corrente. Il provider di posizioni corrente è prioritario come il più alto nel computer, in base a un numero di fattori, ad esempio l'età e l'accuratezza dei dati di tutti i provider, l'accuratezza richiesta dalle applicazioni di posizione e l'impatto sulle prestazioni e il consumo di energia associati al provider di località. Il provider di posizioni corrente potrebbe cambiare nel tempo, ad esempio quando un dispositivo GPS perde il suo segnale satellite all'interno e un provider di triangolazioni Wi-Fi diventa il provider più accurato nel computer.
Per iniziare ad accedere ai dati della posizione, creare un GeoCoordinateWatcher e chiamare Start o TryStart avviare l'acquisizione di dati dal provider di posizioni corrente.
La Status proprietà può essere controllata per determinare se i dati sono disponibili. Se i dati sono disponibili, è possibile ottenere la posizione una sola volta dalla Position proprietà o ricevere aggiornamenti della posizione continua 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 funzionali se un provider di posizioni è installato e in grado di risolvere il percorso del computer.
Nota
In Windows 7 Starter Edition, l'unico provider di percorsi supportato è il provider di percorsi predefinito in Pannello di controllo e un componente aggiuntivo deve essere installato per specificare la latitudine e longitudine.
Nota Nelle versioni di Windows precedenti a Windows 7, si applicano le condizioni seguenti:
Tutti gli System.Device.Location oggetti che dispongono di costruttori possono essere creati, ma la Status proprietà avrà sempre il valore Disabled.
La posizione indicata dalla Location proprietà di Position sarà Unknownsempre .
Non verranno generati eventi di posizione.
Costruttori
GeoCoordinateWatcher() |
Consente di inizializzare una nuova istanza della classe GeoCoordinateWatcher con le impostazioni di accuratezza predefinite. |
GeoCoordinateWatcher(GeoPositionAccuracy) |
Inizializza una nuova istanza di GeoCoordinateWatcher, specificato un livello di accuratezza. |
Proprietà
DesiredAccuracy |
Livello di accuratezza richiesto per i dati del percorso fornito da GeoCoordinateWatcher. |
MovementThreshold |
Distanza del movimento in metri, relativa alla coordinata dall'ultimo evento PositionChanged prima che il provider di posizione generi un altro evento PositionChanged. |
Permission |
Indica se è stata concessa o negata l'autorizzazione per accedere ai dati del percorso dai provider di posizione. |
Position |
Ottiene GeoCoordinate che indica la posizione corrente. |
Status |
Ottiene lo stato corrente di GeoCoordinateWatcher. |
Metodi
Dispose() |
Rilascia tutte le risorse usate dall'istanza corrente della classe GeoCoordinateWatcher. |
Dispose(Boolean) |
Rilascia tutte le risorse usate dall'istanza corrente della classe GeoCoordinateWatcher. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
Finalize() |
Libera risorse ed esegue altre operazioni di pulizia prima che l'oggetto GeoCoordinateWatcher venga recuperato tramite Garbage Collection. |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>) |
Chiamato quando si verifica un evento PositionChanged. |
OnPositionStatusChanged(GeoPositionStatusChangedEventArgs) |
Chiamato quando si verifica un evento StatusChanged. |
OnPropertyChanged(String) |
Viene chiamato quando si modifica una proprietà di GeoCoordinateWatcher. |
Start() |
Avvia l'acquisizione dei dati dal provider di posizione corrente. Questo metodo abilita eventi PositionChanged e consente l'accesso alla proprietà Position. |
Start(Boolean) |
Avvia l'acquisizione dei dati dal provider di posizione corrente. Questo metodo abilita eventi PositionChanged e consente l'accesso alla proprietà Position. |
Stop() |
Impedisce a GeoCoordinateWatcher di fornire eventi e dati sulla 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 viene restituito in modo sincrono. |
Eventi
PositionChanged |
Indica che è cambiata la latitudine o la longitudine dei dati del percorso. |
StatusChanged |
Indica che lo stato dell'oggetto GeoCoordinateWatcher è cambiato. |
Implementazioni dell'interfaccia esplicita
IGeoPositionWatcher<GeoCoordinate>.PositionChanged |
Indica che i dati del percorso sono cambiati. |
IGeoPositionWatcher<GeoCoordinate>.StatusChanged |
Indica che lo stato del provider di posizione è cambiato. |
INotifyPropertyChanged.PropertyChanged |
Indica che la proprietà Status, Position o Permission è stata modificata. |
Si applica a
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per