Compartir vía


GeoCoordinateWatcher Clase

Definición

Proporciona datos de ubicación basados en coordenadas de latitud y longitud.

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
Herencia
GeoCoordinateWatcher
Atributos
Implementaciones

Ejemplos

En el siguiente programa se muestra cómo crear y GeoCoordinateWatcher empezar a adquirir datos mediante un tiempo de espera de inicialización. A continuación, el código imprime las coordenadas de la ubicación, si se conoce.

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

En el siguiente programa se muestra cómo recibir actualizaciones continuas de ubicación mediante la suscripción a 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

Comentarios

La GeoCoordinateWatcher clase proporciona datos de ubicación basados en coordenadas del proveedor de ubicación actual. El proveedor de ubicación actual tiene prioridad como el más alto en el equipo, en función de varios factores, como la antigüedad y la precisión de los datos de todos los proveedores, la precisión solicitada por las aplicaciones de ubicación y el consumo de energía y el impacto en el rendimiento asociado al proveedor de ubicación. El proveedor de ubicación actual podría cambiar con el tiempo, por ejemplo, cuando un dispositivo GPS pierde su señal satélite en interiores y un proveedor de triangulación Wi-Fi se convierte en el proveedor más preciso del equipo.

Para empezar a acceder a los datos de ubicación, cree un GeoCoordinateWatcher y llame Start a o TryStart para iniciar la adquisición de datos del proveedor de ubicación actual.

La Status propiedad se puede comprobar para determinar si hay datos disponibles. Si los datos están disponibles, puede obtener la ubicación una vez desde la Position propiedad o recibir actualizaciones continuas de ubicación controlando el PositionChanged evento.

Las Permissionpropiedades , Statusy Position admiten INotifyPropertyChanged, para que una aplicación pueda enlazar datos a estas propiedades.

En Windows 7, todas las System.Device.Location clases son totalmente funcionales si se instala un proveedor de ubicación y pueden resolver la ubicación del equipo.

Nota

En Windows 7 Starter Edition, el único proveedor de ubicación admitido es el proveedor de ubicación predeterminado en Panel de control y se debe instalar un complemento para especificar la latitud y la longitud.

Nota En las versiones de Windows anteriores a Windows 7, se aplican las siguientes condiciones:

Constructores

GeoCoordinateWatcher()

Inicializa una nueva instancia de GeoCoordinateWatcher con la configuración de exactitud predeterminada.

GeoCoordinateWatcher(GeoPositionAccuracy)

Inicializa una nueva instancia de GeoCoordinateWatcher, dado un nivel de exactitud.

Propiedades

DesiredAccuracy

El nivel de exactitud solicitado para los datos de ubicación proporcionado por GeoCoordinateWatcher.

MovementThreshold

Distancia que se debe mover, en metros, con respecto a la coordenada del último evento PositionChanged, antes de que el proveedor de ubicación genere otro evento PositionChanged.

Permission

Indica si el permiso de acceso a los datos de ubicación de los proveedores de ubicación se ha concedido o denegado.

Position

Obtiene la GeoCoordinate que indica la ubicación actual.

Status

Obtiene el estado actual de la instancia de GeoCoordinateWatcher.

Métodos

Dispose()

Libera todos los recursos utilizados por la instancia actual de la clase GeoCoordinateWatcher.

Dispose(Boolean)

Libera todos los recursos usados por la instancia actual de la clase GeoCoordinateWatcher.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
Finalize()

Libera recursos y realiza otras operaciones de limpieza antes de que se reclame el elemento GeoCoordinateWatcher durante la recolección de elementos no usados.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>)

Se le llama cuando se produce un evento PositionChanged.

OnPositionStatusChanged(GeoPositionStatusChangedEventArgs)

Se le llama cuando se produce un evento StatusChanged.

OnPropertyChanged(String)

Se le llama cuando cambia una propiedad de GeoCoordinateWatcher.

Start()

Inicia la adquisición de datos desde el proveedor de ubicación actual. Este método admite eventos PositionChanged y permite el acceso a la propiedad Position.

Start(Boolean)

Inicia la adquisición de datos desde el proveedor de ubicación actual. Este método admite eventos PositionChanged y permite el acceso a la propiedad Position.

Stop()

Hace que GeoCoordinateWatcher deje de proporcionar datos de ubicación y eventos.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
TryStart(Boolean, TimeSpan)

Inicia la adquisición de datos desde el proveedor de ubicación actual. Este método vuelve de forma sincrónica.

Eventos

PositionChanged

Indica que la latitud o la longitud de los datos de ubicación ha cambiado.

StatusChanged

Indica que el estado del objeto GeoCoordinateWatcher ha cambiado.

Implementaciones de interfaz explícitas

IGeoPositionWatcher<GeoCoordinate>.PositionChanged

Indica que los datos de ubicación han cambiado.

IGeoPositionWatcher<GeoCoordinate>.StatusChanged

Indica que el estado del proveedor de ubicación ha cambiado.

INotifyPropertyChanged.PropertyChanged

Indica que la propiedad Status, Position o Permission ha cambiado.

Se aplica a