GeoCoordinateWatcher.Start 方法

定义

开始从当前位置提供程序获取数据。 此方法启用 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 不会引发事件,并且 的 Location 属性 Position 返回的位置将包含 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,则在尚未授予权限的情况下可以选择显示权限对话框。

实现

适用于