GeoCoordinateWatcher Classe

Definição

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:

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.

Aplica-se a