GeoCoordinateWatcher クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
緯度および経度の座標に基づく場所データを提供します。
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
- 継承
-
GeoCoordinateWatcher
- 属性
- 実装
例
次のプログラムは、 を作成 GeoCoordinateWatcher し、初期化タイムアウトを使用してデータの取得を開始する方法を示しています。 その後、コードは場所の座標 (既知の場合) を出力します。
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
次のプログラムは、イベントをサブスクライブして継続的な場所の更新を受信する方法を PositionChanged 示しています。
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
注釈
クラスは GeoCoordinateWatcher 、現在の場所プロバイダーから座標ベースの場所データを提供します。 現在の場所プロバイダーは、すべてのプロバイダーからのデータの経過時間と精度、場所アプリケーションによって要求される精度、場所プロバイダーに関連する電力消費とパフォーマンスへの影響など、さまざまな要因に基づいて、コンピューター上で最も高いものとして優先順位が付けられます。 たとえば、GPS デバイスが屋内で衛星信号を失い、Wi-Fi 三角形分割プロバイダーがコンピューター上で最も正確なプロバイダーになると、現在の場所プロバイダーが時間の経過と同時に変化する可能性があります。
場所データへのアクセスを開始するには、 を作成GeoCoordinateWatcherし、 を呼び出すか、 をTryStart呼び出Startして、現在の場所プロバイダーからのデータの取得を開始します。
プロパティを Status 確認して、データが使用可能かどうかを確認できます。 データが使用可能な場合は、 プロパティから場所を 1 回取得するか、イベントを Position 処理して継続的な場所の更新を PositionChanged 受け取ることができます。
、Status、および Position プロパティは PermissionをサポートINotifyPropertyChangedしているため、アプリケーションはこれらのプロパティにデータバインドできます。
Windows 7 では、場所プロバイダーがインストールされ、コンピューターの System.Device.Location 場所を解決できる場合、すべてのクラスが完全に機能します。
注意
Windows 7 Starter Edition では、サポートされている場所プロバイダーは コントロール パネル の既定の場所プロバイダーのみです。緯度と経度を指定するにはアドインをインストールする必要があります。
メモ Windows 7 より前のバージョンの Windows では、次の条件が適用されます。
コンストラクターを持つすべての System.Device.Location オブジェクトを作成できますが、 プロパティの Status 値 Disabledは常に になります。
場所イベントは発生しません。
コンストラクター
GeoCoordinateWatcher() |
既定の精度設定を使用して、GeoCoordinateWatcher の新しいインスタンスを初期化します。 |
GeoCoordinateWatcher(GeoPositionAccuracy) |
精度レベルを指定して、GeoCoordinateWatcher の新しいインスタンスを初期化します。 |
プロパティ
DesiredAccuracy |
GeoCoordinateWatcher によって提供される場所データの、要求された精度レベル。 |
MovementThreshold |
場所プロバイダーが別の PositionChanged イベントを発生させるために必要な、最後の PositionChanged イベントの座標からの相対的なメートル単位の移動距離。 |
Permission |
場所プロバイダーからの場所データにアクセスするためのアクセス許可が付与されているか、拒否されているかを示します。 |
Position |
現在の場所を示す GeoCoordinate を取得します。 |
Status |
GeoCoordinateWatcher の現在の状態を取得します。 |
メソッド
Dispose() |
GeoCoordinateWatcher クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。 |
Dispose(Boolean) |
GeoCoordinateWatcher クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。 |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
Finalize() |
GeoCoordinateWatcher がガベージ コレクションによって回収される前にリソースを解放し、その他のクリーンアップ操作を実行します。 |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>) |
PositionChanged イベントが発生すると呼び出されます。 |
OnPositionStatusChanged(GeoPositionStatusChangedEventArgs) |
StatusChanged イベントが発生すると呼び出されます。 |
OnPropertyChanged(String) |
GeoCoordinateWatcher のプロパティが変更されると呼び出されます。 |
Start() |
現在の場所プロバイダーからのデータの取得を示します。 このメソッドは、PositionChanged イベントを有効にし、Position プロパティにアクセスできるようにします。 |
Start(Boolean) |
現在の場所プロバイダーからのデータの取得を示します。 このメソッドは、PositionChanged イベントを有効にし、Position プロパティにアクセスできるようにします。 |
Stop() |
GeoCoordinateWatcher による場所データとイベントの提供を停止します。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
TryStart(Boolean, TimeSpan) |
現在の場所プロバイダーからのデータの取得を開始します。 このメソッドは同期的に返ります。 |
イベント
PositionChanged |
場所データの緯度または経度が変化したことを示します。 |
StatusChanged |
GeoCoordinateWatcher オブジェクトの状態が変化したことを示します。 |
明示的なインターフェイスの実装
IGeoPositionWatcher<GeoCoordinate>.PositionChanged |
場所データが変化したことを示します。 |
IGeoPositionWatcher<GeoCoordinate>.StatusChanged |
場所プロバイダーの状態が変化したことを示します。 |
INotifyPropertyChanged.PropertyChanged |
Status プロパティ、Position プロパティ、または Permission プロパティが変化したことを示します。 |
適用対象
.NET