GeoCoordinateWatcher Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 seguinte mostra como criar e GeoCoordinateWatcher começar a adquirir dados usando um timeout de inicialização. O código imprime então as coordenadas do local, se conhecidas.
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
O programa seguinte mostra como receber atualizações contínuas de localização subscrevendo eventos PositionChanged .
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
Observações
A GeoCoordinateWatcher classe fornece dados de localização baseados em coordenadas do fornecedor de localização atual. O fornecedor de localização atual é priorizado como o mais alto no computador, com base em vários fatores, como a idade e precisão dos dados de todos os fornecedores, a precisão solicitada pelas aplicações de localização e o consumo de energia e impacto no desempenho associados ao fornecedor de localização. O fornecedor de localização atual pode mudar ao longo do tempo, por exemplo, quando um dispositivo GPS perde o sinal de satélite em interiores e um fornecedor de triangulação Wi-Fi se torna o fornecedor mais preciso no computador.
Para começar a aceder aos dados de localização, crie uma GeoCoordinateWatcher chamada Start e ou TryStart inicie a aquisição de dados junto do fornecedor de localização atual.
A Status propriedade pode ser verificada para determinar se há dados disponíveis. Se houver dados disponíveis, pode obter a localização uma única vez da Position propriedade, ou receber atualizações contínuas da localização ao tratar do PositionChanged evento.
As Permissionpropriedades , Status, e Position suportam INotifyPropertyChanged, de modo que uma aplicação pode ligar dados a estas propriedades.
Em Windows 7, todas as classes System.Device.Location estão totalmente funcionais se um fornecedor de localização estiver instalado e conseguir resolver a localização do computador.
Note
No Windows 7 Starter Edition, o único fornecedor de localização suportado é o Fornecedor de Localização Padrão no Painel de Controlo, e deve ser instalado um complemento para especificar latitude e longitude.
Nota Nas versões de Windows anteriores à Windows 7, aplicam-se as seguintes condições:
Todos System.Device.Location os objetos que têm construtores podem ser criados, mas a Status propriedade terá sempre o valor Disabled.
A localização indicada pela Location propriedade de Position será Unknownsempre .
Não serão levantados eventos de localização.
Construtores
| Name | Description |
|---|---|
| GeoCoordinateWatcher() |
Inicializa uma nova instância de GeoCoordinateWatcher com as definições de precisão padrão. |
| GeoCoordinateWatcher(GeoPositionAccuracy) |
Inicializa uma nova instância de GeoCoordinateWatcher, dado um nível de precisão. |
Propriedades
| Name | Description |
|---|---|
| DesiredAccuracy |
Obtém 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 PositionChanged evento, antes de o fornecedor de localização levantar outro PositionChanged evento. |
| Permission |
Indica se foi concedida ou recusada autorização para aceder a dados de localização dos fornecedores de localização. |
| Position |
Obtém que GeoCoordinate indica a localização atual. |
| Status |
Obtém o estado atual do GeoCoordinateWatcher. |
Métodos
| Name | Description |
|---|---|
| Dispose() |
Liberta todos os recursos que são usados pela instância atual da GeoCoordinateWatcher classe. |
| Dispose(Boolean) |
Liberta todos os recursos usados pela instância atual da GeoCoordinateWatcher classe. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| Finalize() |
Liberta recursos e realiza outras operações de limpeza antes de ser GeoCoordinateWatcher recuperado pela recolha de lixo. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>) |
Chamada quando ocorre um PositionChanged evento. |
| OnPositionStatusChanged(GeoPositionStatusChangedEventArgs) |
Chamada quando ocorre um StatusChanged evento. |
| OnPropertyChanged(String) |
Chamado quando uma propriedade das GeoCoordinateWatcher alterações. |
| Start() |
Inicie a aquisição de dados junto do fornecedor de localização atual. Este método permite PositionChanged eventos e o acesso à Position propriedade. |
| Start(Boolean) |
Inicie a aquisição de dados junto do fornecedor de localização atual. Este método permite PositionChanged eventos e o acesso à Position propriedade. |
| Stop() |
Impede que GeoCoordinateWatcher forneça dados de localização e eventos. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| TryStart(Boolean, TimeSpan) |
Inicia a aquisição de dados junto do fornecedor de localização atual. Este método retorna de forma síncrona. |
evento
| Name | Description |
|---|---|
| PositionChanged |
Indica que a latitude ou longitude dos dados de localização mudou. |
| StatusChanged |
Indica que o estado do GeoCoordinateWatcher objeto mudou. |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| IGeoPositionWatcher<GeoCoordinate>.PositionChanged |
Indica que os dados de localização mudaram. |
| IGeoPositionWatcher<GeoCoordinate>.StatusChanged |
Indica que o estado do fornecedor de localização mudou. |
| INotifyPropertyChanged.PropertyChanged |
Indica que a Status propriedade, a Position propriedade ou a Permission propriedade mudou. |