GeoCoordinateWatcher.Start 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
開始從目前位置提供者取得資料。 此方法能啟動 PositionChanged 事件並允許存取 Position 該物業。
多載
| 名稱 | Description |
|---|---|
| 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 沒有資料,它會開始取得資料。 若權限在資料可用時已授予用戶端,資料可同步存取,且在處理事件時會非同步傳送。
若 Windows 7 的感測器與位置平台在呼叫時Start被停用,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 如果尚未授予權限,則可選擇顯示權限對話框。