GeoCoordinateWatcher Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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 vytiskne souřadnice umístění, pokud je to známo.
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
Následující program ukazuje, jak přijímat aktualizace průběžného umístění 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 založená na souřadnicích od aktuálního poskytovatele umístění. Aktuální poskytovatel umístění je upřednostněn jako nejvyšší na počítači na základě řady faktorů, jako je věk a přesnost dat od všech poskytovatelů, přesnost požadovaná aplikacemi umístění a vliv spotřeby energie a výkonu spojeného s poskytovatelem umístění. Aktuální poskytovatel polohy se může v průběhu času změnit, například když gps zařízení ztratí satelitní signál uvnitř a Wi-Fi triangulační poskytovatel se stane nejpřesnějším poskytovatelem počítače.
Pokud chcete začít přistupovat k datům o poloze, vytvořte GeoCoordinateWatcher a zavolejte Start nebo TryStart zahajte získávání dat od aktuálního poskytovatele umístění.
Vlastnost Status lze zkontrolovat a určit, zda jsou data k dispozici. Pokud jsou data dostupná, můžete umístění získat jednou z Position vlastnosti nebo přijímat aktualizace průběžného PositionChanged umístění zpracováním události.
Funkce Permission, Statusa Position vlastnosti podporují INotifyPropertyChanged, aby aplikace mohl s těmito vlastnostmi vytvořit vazbu dat.
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 umístění počítače.
Poznámka:
V systému Windows 7 Starter Edition je jediným podporovaným poskytovatelem umístění výchozí zprostředkovatel umístění v Ovládacích panelech a musí být nainstalovaný doplněk, který určuje zeměpisnou šířku a délku.
Poznámka Ve verzích Windows před Windows 7 platí následující podmínky:
Všechny System.Device.Location objekty, které mají konstruktory lze vytvořit, ale Status vlastnost bude mít vždy hodnotu Disabled.
Umístění označené Location vlastností Position bude vždy Unknown.
Nebudou vyvolány žádné události polohy.
Konstruktory
| Name | Description |
|---|---|
| GeoCoordinateWatcher() |
Inicializuje novou instanci GeoCoordinateWatcher s výchozím nastavením přesnosti. |
| GeoCoordinateWatcher(GeoPositionAccuracy) |
Inicializuje novou instanci GeoCoordinateWatcher, s ohledem na úroveň přesnosti. |
Vlastnosti
| Name | Description |
|---|---|
| DesiredAccuracy |
Získá požadovanou úroveň přesnosti pro údaje o poloze, které poskytuje GeoCoordinateWatcher. |
| MovementThreshold |
Vzdálenost, která se musí přesunout v metrech vzhledem ke souřadnici od poslední PositionChanged události, než poskytovatel umístění vyvolá jinou PositionChanged událost. |
| Permission |
Určuje, jestli bylo uděleno nebo odepřeno oprávnění pro přístup k údajům o poloze od poskytovatelů umístění. |
| Position |
GeoCoordinate Získá, který označuje aktuální umístění. |
| Status |
Získá aktuální stav GeoCoordinateWatcher. |
Metody
| Name | Description |
|---|---|
| Dispose() |
Uvolní všechny prostředky, které používají aktuální instance GeoCoordinateWatcher třídy. |
| Dispose(Boolean) |
Uvolní všechny prostředky používané aktuální instancí GeoCoordinateWatcher třídy. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven 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í funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>) |
Volá se, když dojde k PositionChanged události. |
| OnPositionStatusChanged(GeoPositionStatusChangedEventArgs) |
Volá se, když dojde k StatusChanged události. |
| OnPropertyChanged(String) |
Volá se, když se změní vlastnost GeoCoordinateWatcher . |
| Start() |
Zahajte získávání dat od aktuálního poskytovatele umístění. Tato metoda umožňuje PositionChanged události a umožňuje přístup k Position vlastnosti. |
| Start(Boolean) |
Zahajte získávání dat od aktuálního poskytovatele umístění. Tato metoda umožňuje PositionChanged události a umožňuje přístup k Position vlastnosti. |
| Stop() |
GeoCoordinateWatcher Zastaví poskytování 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
| Name | Description |
|---|---|
| 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í
| Name | Description |
|---|---|
| IGeoPositionWatcher<GeoCoordinate>.PositionChanged |
Označuje, že se data o poloze změnila. |
| IGeoPositionWatcher<GeoCoordinate>.StatusChanged |
Označuje, že se změnil stav poskytovatele umístění. |
| INotifyPropertyChanged.PropertyChanged |
Označuje, že se Status vlastnost, Position vlastnost nebo Permission vlastnost změnila. |