Bagikan melalui


GeoCoordinateWatcher Kelas

Definisi

Memasok data lokasi yang didasarkan pada koordinat lintang dan bujur.

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
Warisan
GeoCoordinateWatcher
Atribut
Penerapan

Contoh

Program berikut menunjukkan cara membuat GeoCoordinateWatcher dan mulai memperoleh data dengan menggunakan batas waktu inisialisasi. Kode kemudian mencetak koordinat lokasi, jika diketahui.

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

Program berikut menunjukkan cara menerima pembaruan lokasi berkelanjutan dengan berlangganan PositionChanged peristiwa.

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

Keterangan

Kelas ini GeoCoordinateWatcher menyediakan data lokasi berbasis koordinat dari penyedia lokasi saat ini. Penyedia lokasi saat ini diprioritaskan sebagai yang tertinggi di komputer, berdasarkan sejumlah faktor, seperti usia dan akurasi data dari semua penyedia, akurasi yang diminta oleh aplikasi lokasi, dan konsumsi daya dan dampak performa yang terkait dengan penyedia lokasi. Penyedia lokasi saat ini mungkin berubah dari waktu ke waktu, misalnya, ketika perangkat GPS kehilangan sinyal satelitnya di dalam ruangan dan penyedia triangulasi Wi-Fi menjadi penyedia yang paling akurat di komputer.

Untuk mulai mengakses data lokasi, buat GeoCoordinateWatcher dan panggil Start atau TryStart untuk memulai akuisisi data dari penyedia lokasi saat ini.

Properti Status dapat diperiksa untuk menentukan apakah data tersedia. Jika data tersedia, Anda bisa mendapatkan lokasi satu kali dari Position properti , atau menerima pembaruan lokasi berkelanjutan dengan menangani PositionChanged peristiwa.

Properti Permission, Status, dan Position mendukung INotifyPropertyChanged, sehingga aplikasi dapat mengikat data ke properti ini.

Di Windows 7, semua System.Device.Location kelas berfungsi penuh jika penyedia lokasi diinstal dan dapat menyelesaikan lokasi komputer.

Catatan

Pada Windows 7 Starter Edition, satu-satunya penyedia lokasi yang didukung adalah Penyedia Lokasi Default di Panel Kontrol, dan add-in harus diinstal untuk menentukan garis lintang dan bujur.

Catatan Dalam versi Windows sebelum Windows 7, kondisi berikut berlaku:

Konstruktor

GeoCoordinateWatcher()

Menginisialisasi instans GeoCoordinateWatcher baru dengan pengaturan akurasi default.

GeoCoordinateWatcher(GeoPositionAccuracy)

Menginisialisasi instans GeoCoordinateWatcherbaru , mengingat tingkat akurasi.

Properti

DesiredAccuracy

Tingkat akurasi yang diminta untuk data lokasi yang disediakan oleh GeoCoordinateWatcher.

MovementThreshold

Jarak yang harus dipindahkan, dalam meter, relatif terhadap koordinat dari peristiwa terakhir PositionChanged , sebelum penyedia lokasi memunculkan peristiwa lain PositionChanged .

Permission

Menunjukkan apakah izin untuk mengakses data lokasi dari penyedia lokasi telah diberikan atau ditolak.

Position

GeoCoordinate Mendapatkan yang menunjukkan lokasi saat ini.

Status

Mendapatkan status saat ini dari GeoCoordinateWatcher.

Metode

Dispose()

Merilis semua sumber daya yang digunakan oleh instans GeoCoordinateWatcher kelas saat ini.

Dispose(Boolean)

Merilis semua sumber daya yang digunakan oleh instans GeoCoordinateWatcher kelas saat ini.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
Finalize()

Membebaskan sumber daya dan melakukan operasi pembersihan lainnya sebelum GeoCoordinateWatcher direklamasi oleh pengumpulan sampah.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
OnPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate>)

Dipanggil saat PositionChanged peristiwa terjadi.

OnPositionStatusChanged(GeoPositionStatusChangedEventArgs)

Dipanggil saat StatusChanged peristiwa terjadi.

OnPropertyChanged(String)

Dipanggil ketika properti GeoCoordinateWatcher perubahan.

Start()

Memulai akuisisi data dari penyedia lokasi saat ini. Metode ini memungkinkan PositionChanged peristiwa dan memungkinkan akses ke Position properti .

Start(Boolean)

Memulai akuisisi data dari penyedia lokasi saat ini. Metode ini memungkinkan PositionChanged peristiwa dan memungkinkan akses ke Position properti .

Stop()

GeoCoordinateWatcher Menghentikan penyediaan data lokasi dan peristiwa.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
TryStart(Boolean, TimeSpan)

Memulai akuisisi data dari penyedia lokasi saat ini. Metode ini kembali secara sinkron.

Acara

PositionChanged

Menunjukkan bahwa garis lintang atau bujur data lokasi telah berubah.

StatusChanged

Menunjukkan bahwa status GeoCoordinateWatcher objek telah berubah.

Implementasi Antarmuka Eksplisit

IGeoPositionWatcher<GeoCoordinate>.PositionChanged

Menunjukkan bahwa data lokasi telah berubah.

IGeoPositionWatcher<GeoCoordinate>.StatusChanged

Menunjukkan bahwa status penyedia lokasi telah berubah.

INotifyPropertyChanged.PropertyChanged

Menunjukkan bahwa Status properti, Position properti , atau Permission properti telah berubah.

Berlaku untuk