GeoCoordinateWatcher Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Supplies location data that is based on latitude and longitude coordinates.
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
- Inheritance
-
GeoCoordinateWatcher
- Attributes
- Implements
Examples
The following program shows how to create a GeoCoordinateWatcher and start acquiring data by using an initialization timeout. The code then prints the coordinates of the location, if known.
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
The following program shows how to receive continuous location updates by subscribing to PositionChanged events.
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
Remarks
The GeoCoordinateWatcher class supplies coordinate-based location data from the current location provider. The current location provider is prioritized as the highest on the computer, based on a number of factors, such as the age and accuracy of the data from all providers, the accuracy requested by location applications, and the power consumption and performance impact associated with the location provider. The current location provider might change over time, for instance, when a GPS device loses its satellite signal indoors and a Wi-Fi triangulation provider becomes the most accurate provider on the computer.
To begin accessing location data, create a GeoCoordinateWatcher and call Start or TryStart to initiate the acquisition of data from the current location provider.
The Status property can be checked to determine if data is available. If data is available, you can get the location one time from the Position property, or receive continuous location updates by handling the PositionChanged event.
The Permission, Status, and Position properties support INotifyPropertyChanged, so that an application can data-bind to these properties.
In Windows 7, all the System.Device.Location classes are fully functional if a location provider is installed and able to resolve the computer's location.
Note
On Windows 7 Starter Edition, the only supported location provider is the Default Location Provider in Control Panel, and an add-in must be installed to specify latitude and longitude.
Note In versions of Windows prior to Windows 7, the following conditions apply:
All System.Device.Location objects that have constructors can be created, but the Status property will always have the value Disabled.
The location indicated by the Location property of Position will always be Unknown.
No location events will be raised.
Constructors
GeoCoordinateWatcher() |
Initializes a new instance of GeoCoordinateWatcher with default accuracy settings. |
GeoCoordinateWatcher(GeoPositionAccuracy) |
Initializes a new instance of GeoCoordinateWatcher, given an accuracy level. |
Properties
DesiredAccuracy |
The requested accuracy level for the location data that is provided by the GeoCoordinateWatcher. |
MovementThreshold |
The distance that must be moved, in meters, relative to the coordinate from the last PositionChanged event, before the location provider raises another PositionChanged event. |
Permission |
Indicates whether permission to access location data from location providers has been granted or denied. |
Position |
Gets the GeoCoordinate which indicates the current location. |
Status |
Gets the current status of the GeoCoordinateWatcher. |
Methods
Dispose() |
Releases all resources that are used by the current instance of the GeoCoordinateWatcher class. |
Dispose(Boolean) |
Releases all resources used by the current instance of the GeoCoordinateWatcher class. |
Equals(Object) |
Determines whether the specified object is equal to the current object. (Inherited from Object) |
Finalize() |
Frees resources and performs other cleanup operations before the GeoCoordinateWatcher is reclaimed by garbage collection. |
GetHashCode() |
Serves as the default hash function. (Inherited from Object) |
GetType() |
Gets the Type of the current instance. (Inherited from Object) |
MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>) |
Called when a PositionChanged event occurs. |
OnPositionStatusChanged(GeoPositionStatusChangedEventArgs) |
Called when a StatusChanged event occurs. |
OnPropertyChanged(String) |
Called when a property of the GeoCoordinateWatcher changes. |
Start() |
Initiate the acquisition of data from the current location provider. This method enables PositionChanged events and allows access to the Position property. |
Start(Boolean) |
Initiate the acquisition of data from the current location provider. This method enables PositionChanged events and allows access to the Position property. |
Stop() |
Stops the GeoCoordinateWatcher from providing location data and events. |
ToString() |
Returns a string that represents the current object. (Inherited from Object) |
TryStart(Boolean, TimeSpan) |
Initiates the acquisition of data from the current location provider. This method returns synchronously. |
Events
PositionChanged |
Indicates that the latitude or longitude of the location data has changed. |
StatusChanged |
Indicates that the status of the GeoCoordinateWatcher object has changed. |
Explicit Interface Implementations
IGeoPositionWatcher<GeoCoordinate>.PositionChanged |
Indicates that the location data has changed. |
IGeoPositionWatcher<GeoCoordinate>.StatusChanged |
Indicates that the status of the location provider has changed. |
INotifyPropertyChanged.PropertyChanged |
Indicates that the Status property, the Position property, or the Permission property has changed. |