GeoCoordinateWatcher.Start 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
起始從目前位置提供者取得資料的作業。 這個方法會啟用 PositionChanged 事件並且允許存取 Position 屬性。
多載
Start() |
起始從目前位置提供者取得資料的作業。 這個方法會啟用 PositionChanged 事件並且允許存取 Position 屬性。 |
Start(Boolean) |
起始從目前位置提供者取得資料的作業。 這個方法會啟用 PositionChanged 事件並且允許存取 Position 屬性。 |
Start()
起始從目前位置提供者取得資料的作業。 這個方法會啟用 PositionChanged 事件並且允許存取 Position 屬性。
public:
virtual void Start();
public void Start ();
abstract member Start : unit -> unit
override this.Start : unit -> unit
Public Sub Start ()
實作
範例
下列程式會處理呼叫 之後 Start 發生的第一個位置更新。
using System;
using System.Device.Location;
namespace GetLocationDataUpdateOnce
{
class Program
{
static void Main(string[] args)
{
CLocation myLocation = new CLocation();
myLocation.GetLocationDataEvent();
Console.WriteLine("Enter any key to quit.");
Console.ReadLine();
}
class CLocation
{
GeoCoordinateWatcher watcher;
public void GetLocationDataEvent()
{
this.watcher = new GeoCoordinateWatcher();
this.watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);
this.watcher.Start();
}
void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
PrintPosition(e.Position.Location.Latitude, e.Position.Location.Longitude);
// Stop receiving updates after the first one.
this.watcher.Stop();
}
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 GetLocationDataEvent()
watcher = New System.Device.Location.GeoCoordinateWatcher()
AddHandler watcher.PositionChanged, AddressOf watcher_PositionChanged
watcher.Start()
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)
' Stop receiving updates after the first one.
watcher.Stop()
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.GetLocationDataEvent()
Console.WriteLine("Enter any key to quit.")
Console.ReadLine()
End Sub
End Module
備註
呼叫這個方法會起始從目前位置提供者取得數據。 根據來自所有提供者的數據年齡和精確度、應用程式或應用程式所要求的精確度,以及與位置提供者相關聯的耗電量和效能影響等因素,選取目前的位置提供者。 目前的位置提供者可能會隨著時間而變更,例如,當 GPS 裝置在室內失去其衛星訊號,而 Wi-Fi 三角提供者會成為電腦上的最精確提供者。
如果呼叫 方法時 Start ,目前的優先順序位置提供者沒有數據,則會開始取得數據。 如果數據變成可用時已授與客戶端許可權,則可以同步存取數據,並在正在處理事件時以異步方式傳遞。
如果呼叫 時Start停用 Windows 7 感測器和位置平臺,Start將會立即傳回、PositionChanged不會引發事件,且 的屬性Position所Location傳回的位置將包含 Unknown。
如果目前優先順序的位置提供者有數據,則會立即同步使用,並在正在處理事件時以異步方式傳遞。
如果呼叫的應用程式沒有從位置提供者存取數據的許可權,系統會提示使用者提供對話框來授與或拒絕許可權。 對話框將會是無模式的。
適用於
Start(Boolean)
起始從目前位置提供者取得資料的作業。 這個方法會啟用 PositionChanged 事件並且允許存取 Position 屬性。
public:
virtual void Start(bool suppressPermissionPrompt);
public void Start (bool suppressPermissionPrompt);
abstract member Start : bool -> unit
override this.Start : bool -> unit
Public Sub Start (suppressPermissionPrompt As Boolean)
參數
- suppressPermissionPrompt
- Boolean
true
表示要隱藏使用權限對話方塊。false
表示如果尚未授與使用權限,則選擇性顯示使用權限對話方塊。