次の方法で共有


GeoCoordinateWatcher クラス

定義

緯度および経度の座標に基づく場所データを提供します。

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 オブジェクトを作成できますが、 プロパティの StatusDisabledは常に になります。

  • の プロパティによってLocation示される場所は常に になりますUnknownPosition

  • 場所イベントは発生しません。

コンストラクター

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 プロパティが変化したことを示します。

適用対象