通过


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不会引发事件,并且属性返回LocationPosition的位置将包含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 如果尚未授予权限,则为 (可选)显示权限对话框。

实现

适用于