Compartilhar via


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 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:

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.

Aplica-se a