GeoCoordinateWatcher Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece dados de localização baseados em coordenadas de latitude e longitude.
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
- Herança
-
GeoCoordinateWatcher
- Atributos
- Implementações
Exemplos
O programa a seguir mostra como criar um GeoCoordinateWatcher e começar a adquirir dados usando um tempo limite de inicialização. Em seguida, o código imprime as coordenadas do local, se conhecido.
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
O programa a seguir mostra como receber atualizações contínuas de localização assinando PositionChanged eventos.
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
Comentários
A GeoCoordinateWatcher classe fornece dados de localização baseados em coordenadas do provedor de localização atual. O provedor de localização atual é priorizado como o mais alto no computador, com base em uma série de fatores, como a idade e a precisão dos dados de todos os provedores, a precisão solicitada pelos aplicativos de localização e o impacto no consumo de energia e no desempenho associados ao provedor de localização. O provedor de localização atual pode mudar ao longo do tempo, por exemplo, quando um dispositivo GPS perde seu sinal de satélite dentro de casa e um provedor de triangulação Wi-Fi se torna o provedor mais preciso no computador.
Para começar a acessar dados de localização, crie uma GeoCoordinateWatcher chamada Start e ou TryStart para iniciar a aquisição de dados do provedor de localização atual.
A Status propriedade pode ser verificada para determinar se os dados estão disponíveis. Se os dados estiverem disponíveis, você poderá obter o local uma vez da Position propriedade ou receber atualizações contínuas de localização manipulando o PositionChanged evento.
As Permissionpropriedades , Statuse dão Position suporte INotifyPropertyChangeda , para que um aplicativo possa associar dados a essas propriedades.
No Windows 7, todas as System.Device.Location classes serão totalmente funcionais se um provedor de localização estiver instalado e puder resolve o local do computador.
Observação
No Windows 7 Starter Edition, o único provedor de localização com suporte é o Provedor de Localização Padrão no Painel de Controle, e um suplemento deve ser instalado para especificar latitude e longitude.
Nota Nas versões do Windows anteriores ao Windows 7, as seguintes condições se aplicam:
Todos os System.Device.Location objetos que têm construtores podem ser criados, mas a Status propriedade sempre terá o valor Disabled.
O local indicado pela Location propriedade de Position sempre será Unknown.
Nenhum evento de local será gerado.
Construtores
GeoCoordinateWatcher() |
Inicializa uma nova instância de GeoCoordinateWatcher com configurações de precisão padrão. |
GeoCoordinateWatcher(GeoPositionAccuracy) |
Inicializa uma nova instância de GeoCoordinateWatcher, dado um nível de precisão. |
Propriedades
DesiredAccuracy |
O nível de precisão solicitado para os dados de localização fornecidos pelo GeoCoordinateWatcher. |
MovementThreshold |
A distância que deve ser percorrida, em metros, em relação à coordenada do último evento PositionChanged antes que o localizador gere outro evento PositionChanged. |
Permission |
Indica se a permissão para acessar dados de localização de provedores locais foi concedida ou negada. |
Position |
Obtém o GeoCoordinate que indica o local atual. |
Status |
Obtém o status atual da publicação do GeoCoordinateWatcher. |
Métodos
Dispose() |
Libera todos os recursos usados pela instância atual da classe GeoCoordinateWatcher. |
Dispose(Boolean) |
Libera todos os recursos usados pela instância atual da classe GeoCoordinateWatcher. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
Finalize() |
Libera recursos e executa outras operações de limpeza antes que o GeoCoordinateWatcher seja reivindicado pela coleta de lixo. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>) |
Chamado quando um evento PositionChanged ocorre. |
OnPositionStatusChanged(GeoPositionStatusChangedEventArgs) |
Chamado quando um evento StatusChanged ocorre. |
OnPropertyChanged(String) |
Chamado quando uma propriedade de GeoCoordinateWatcher é alterada. |
Start() |
Inicie a aquisição de dados do localizador atual. Esse método habilita eventos PositionChanged e permite o acesso à propriedade Position. |
Start(Boolean) |
Inicie a aquisição de dados do localizador atual. Esse método habilita eventos PositionChanged e permite o acesso à propriedade Position. |
Stop() |
Interrompe o fornecimento de dados de localização e eventos pelo GeoCoordinateWatcher. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
TryStart(Boolean, TimeSpan) |
Inicia a aquisição de dados do localizador atual. Esse método é retornado de forma síncrona. |
Eventos
PositionChanged |
Indica que a latitude ou a longitude dos dados de localização foi alterada. |
StatusChanged |
Indica que o status do objeto GeoCoordinateWatcher foi alterado. |
Implantações explícitas de interface
IGeoPositionWatcher<GeoCoordinate>.PositionChanged |
Indica que os dados de local foram alterados. |
IGeoPositionWatcher<GeoCoordinate>.StatusChanged |
Indica que o status do provedor de local foi alterado. |
INotifyPropertyChanged.PropertyChanged |
Indica que as propriedades Status, Position ou Permission propriedade foi alterada. |