GeoCoordinateWatcher Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Dostarcza dane lokalizacji oparte na współrzędnych szerokości i długości geograficznej.
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
- Dziedziczenie
-
GeoCoordinateWatcher
- Atrybuty
- Implementuje
Przykłady
Poniższy program pokazuje, jak utworzyć GeoCoordinateWatcher i rozpocząć uzyskiwanie danych przy użyciu limitu czasu inicjowania. Następnie kod wyświetla współrzędne lokalizacji, jeśli jest znana.
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
Poniższy program pokazuje, jak odbierać aktualizacje lokalizacji ciągłej przez subskrybowanie PositionChanged zdarzeń.
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
Uwagi
Klasa GeoCoordinateWatcher dostarcza dane lokalizacji oparte na współrzędnych od bieżącego dostawcy lokalizacji. Bieżący dostawca lokalizacji ma priorytet najwyższy na komputerze, na podstawie wielu czynników, takich jak wiek i dokładność danych od wszystkich dostawców, dokładność żądana przez aplikacje lokalizacji oraz zużycie energii i wpływ na wydajność skojarzony z dostawcą lokalizacji. Bieżący dostawca lokalizacji może ulec zmianie w czasie, na przykład, gdy urządzenie GPS traci sygnał satelitarny w pomieszczeniach, a dostawca triangulacji Wi-Fi staje się najbardziej dokładnym dostawcą na komputerze.
Aby rozpocząć uzyskiwanie dostępu do danych lokalizacji, utwórz wywołanie GeoCoordinateWatcherStart i lub TryStart zainicjuj pozyskiwanie danych od bieżącego dostawcy lokalizacji.
Właściwość Status można sprawdzić, aby określić, czy dane są dostępne. Jeśli dane są dostępne, możesz pobrać lokalizację jednorazowo z Position właściwości lub otrzymywać ciągłe aktualizacje lokalizacji, obsługując PositionChanged zdarzenie.
Właściwości Permission, Statusi Position obsługują INotifyPropertyChangedelement , aby aplikacja mogła powiązać dane z tymi właściwościami.
W systemie Windows 7 wszystkie System.Device.Location klasy są w pełni funkcjonalne, jeśli dostawca lokalizacji jest zainstalowany i może rozpoznać lokalizację komputera.
Uwaga
W systemie Windows 7 Starter Edition jedynym obsługiwanym dostawcą lokalizacji jest domyślny dostawca lokalizacji w Panel sterowania, a dodatek musi być zainstalowany, aby określić szerokość i długość geograficzną.
Uwaga W wersjach systemu Windows wcześniejszych niż Windows 7 obowiązują następujące warunki:
Wszystkie System.Device.Location obiekty, które mają konstruktory, można utworzyć, ale Status właściwość zawsze będzie mieć wartość Disabled.
Lokalizacja wskazana Location przez właściwość właściwości Position zawsze będzie mieć Unknownwartość .
Nie zostaną zgłoszone żadne zdarzenia lokalizacji.
Konstruktory
GeoCoordinateWatcher() |
Inicjuje nowe wystąpienie z domyślnymi GeoCoordinateWatcher ustawieniami dokładności. |
GeoCoordinateWatcher(GeoPositionAccuracy) |
Inicjuje nowe wystąpienie klasy GeoCoordinateWatcher, biorąc pod uwagę poziom dokładności. |
Właściwości
DesiredAccuracy |
Żądany poziom dokładności dla danych lokalizacji dostarczonych przez program GeoCoordinateWatcher. |
MovementThreshold |
Odległość, która musi zostać przeniesiona w metrach względem współrzędnych z ostatniego PositionChanged zdarzenia, zanim dostawca lokalizacji zgłosi kolejne PositionChanged zdarzenie. |
Permission |
Wskazuje, czy udzielono uprawnień dostępu do danych lokalizacji od dostawców lokalizacji, czy odmówiono. |
Position |
Pobiera element GeoCoordinate wskazujący bieżącą lokalizację. |
Status |
Pobiera bieżący stan elementu GeoCoordinateWatcher. |
Metody
Dispose() |
Zwalnia wszystkie zasoby używane przez bieżące wystąpienie GeoCoordinateWatcher klasy. |
Dispose(Boolean) |
Zwalnia wszystkie zasoby używane przez bieżące wystąpienie klasy GeoCoordinateWatcher. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
Finalize() |
Zwalnia zasoby i wykonuje inne operacje oczyszczania przed odzyskaniem GeoCoordinateWatcher przez odzyskiwanie pamięci. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>) |
Wywoływana PositionChanged , gdy wystąpi zdarzenie. |
OnPositionStatusChanged(GeoPositionStatusChangedEventArgs) |
Wywoływana StatusChanged , gdy wystąpi zdarzenie. |
OnPropertyChanged(String) |
Wywoływana, gdy właściwość GeoCoordinateWatcher zmian. |
Start() |
Zainicjuj pozyskiwanie danych od bieżącego dostawcy lokalizacji. Ta metoda włącza PositionChanged zdarzenia i zezwala na dostęp do Position właściwości. |
Start(Boolean) |
Zainicjuj pozyskiwanie danych od bieżącego dostawcy lokalizacji. Ta metoda włącza PositionChanged zdarzenia i zezwala na dostęp do Position właściwości. |
Stop() |
GeoCoordinateWatcher Uniemożliwia dostarczanie danych lokalizacji i zdarzeń. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
TryStart(Boolean, TimeSpan) |
Inicjuje pozyskiwanie danych od bieżącego dostawcy lokalizacji. Ta metoda zwraca synchronicznie. |
Zdarzenia
PositionChanged |
Wskazuje, że szerokość geograficzna lub długość geograficzna danych lokalizacji uległa zmianie. |
StatusChanged |
Wskazuje, że stan GeoCoordinateWatcher obiektu został zmieniony. |
Jawne implementacje interfejsu
IGeoPositionWatcher<GeoCoordinate>.PositionChanged |
Wskazuje, że dane lokalizacji uległy zmianie. |
IGeoPositionWatcher<GeoCoordinate>.StatusChanged |
Wskazuje, że stan dostawcy lokalizacji uległ zmianie. |
INotifyPropertyChanged.PropertyChanged |
Wskazuje, że Status właściwość, Position właściwość lub Permission właściwość uległa zmianie. |