GeoCoordinateWatcher Třída

Definice

Poskytuje data o poloze založená na souřadnicích zeměpisné šířky a délky.

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
Dědičnost
GeoCoordinateWatcher
Atributy
Implementuje

Příklady

Následující program ukazuje, jak vytvořit GeoCoordinateWatcher a začít získávat data pomocí časového limitu inicializace. Kód pak vypíše souřadnice umístění, pokud ho znáte.

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

Následující program ukazuje, jak přijímat průběžné aktualizace polohy přihlášením k odběru PositionChanged událostí.

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

Poznámky

Třída GeoCoordinateWatcher poskytuje data o poloze na základě souřadnic od aktuálního zprostředkovatele umístění. Aktuální poskytovatel polohy má nejvyšší prioritu v počítači na základě řady faktorů, jako je stáří a přesnost dat od všech poskytovatelů, přesnost požadovaná aplikacemi pro zjišťování polohy a dopad na spotřebu energie a výkon související s poskytovatelem polohy. Aktuální poskytovatel polohy se může v průběhu času měnit, například když zařízení GPS ztratí satelitní signál uvnitř a poskytovatel triangulace Wi-Fi se stane nejpřesnějším poskytovatelem v počítači.

Pokud chcete začít přistupovat k údajům o poloze, vytvořte GeoCoordinateWatcher a zavolejte Start nebo TryStart pro zahájení získávání dat od aktuálního poskytovatele polohy.

Vlastnost Status je možné zkontrolovat a určit, jestli jsou data k dispozici. Pokud jsou data k dispozici, můžete polohu získat jednou z Position vlastnosti nebo dostávat průběžné aktualizace polohy zpracováním PositionChanged události.

Vlastnosti Permission, Statusa Position podporují INotifyPropertyChanged, aby se aplikace s těmito vlastnostmi mohly svázat s daty.

Ve Windows 7 jsou všechny System.Device.Location třídy plně funkční, pokud je nainstalován poskytovatel umístění a dokáže přeložit polohu počítače.

Poznámka

V systému Windows 7 Starter Edition je jediným podporovaným poskytovatelem umístění výchozí poskytovatel umístění v Ovládací panely a musí být nainstalován doplněk, který umožňuje zadat zeměpisnou šířku a délku.

Poznámka Ve verzích windows starších než Windows 7 platí následující podmínky:

Konstruktory

GeoCoordinateWatcher()

Inicializuje novou instanci GeoCoordinateWatcher s výchozím nastavením přesnosti.

GeoCoordinateWatcher(GeoPositionAccuracy)

Inicializuje novou instanci objektu GeoCoordinateWatcher, a to na úrovni přesnosti.

Vlastnosti

DesiredAccuracy

Požadovaná úroveň přesnosti pro data o poloze, která poskytuje GeoCoordinateWatcher.

MovementThreshold

Vzdálenost, která musí být přesunuta v metrech vzhledem ke souřadnici od poslední PositionChanged události před tím, než poskytovatel umístění vyvolá další PositionChanged událost.

Permission

Určuje, jestli bylo uděleno nebo odepřeno oprávnění pro přístup k datům o poloze od poskytovatelů polohy.

Position

Získá, GeoCoordinate který označuje aktuální umístění.

Status

Získá aktuální stav objektu GeoCoordinateWatcher.

Metody

Dispose()

Uvolní všechny prostředky, které jsou používány aktuální instancí GeoCoordinateWatcher třídy .

Dispose(Boolean)

Uvolní všechny prostředky používané aktuální instancí GeoCoordinateWatcher třídy .

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
Finalize()

Uvolní prostředky a provede další operace čištění před GeoCoordinateWatcher uvolněním paměti.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>)

Volá se při výskytu PositionChanged události.

OnPositionStatusChanged(GeoPositionStatusChangedEventArgs)

Volá se při výskytu StatusChanged události.

OnPropertyChanged(String)

Volá se, když se GeoCoordinateWatcher změní vlastnost .

Start()

Zahájení získávání dat od aktuálního poskytovatele umístění Tato metoda povoluje PositionChanged události a umožňuje přístup k Position vlastnosti .

Start(Boolean)

Zahájení získávání dat od aktuálního poskytovatele umístění Tato metoda povoluje PositionChanged události a umožňuje přístup k Position vlastnosti .

Stop()

Zastaví poskytování GeoCoordinateWatcher dat o poloze a událostí.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
TryStart(Boolean, TimeSpan)

Zahájí získávání dat od aktuálního poskytovatele umístění. Tato metoda vrací synchronně.

Událost

PositionChanged

Označuje, že se změnila zeměpisná šířka nebo délka dat o poloze.

StatusChanged

Označuje, že se změnil stav objektu GeoCoordinateWatcher .

Explicitní implementace rozhraní

IGeoPositionWatcher<GeoCoordinate>.PositionChanged

Označuje, že se změnila data o poloze.

IGeoPositionWatcher<GeoCoordinate>.StatusChanged

Označuje, že se změnil stav poskytovatele umístění.

INotifyPropertyChanged.PropertyChanged

Označuje, že se změnila Status vlastnost, Position vlastnost nebo Permission vlastnost.

Platí pro