我有使用 Windows 计算机中的 system.device.location api 的代码。这应该是相当简单的代码
var watcher = new GeoCoordinateWatcher();
watcher.PositionChanged +=
new EventHandler<GeoPositionChangedEventArgs<
GeoCoordinate>>(GeoPositionChanged);
watcher.Start();
var coord = watcher.Position.Location;
我的意思是我需要做的就是启动地理观察器,然后读取位置。但它只返回“位置未知”,我想知道代码是否有问题,或者是否需要在计算机上安装某些东西,或者什么。我已经用几台 Windows 7 电脑和 1 台 Windows 10 电脑试过了,它们都在设置中打开了共享位置。那么这段代码有什么问题呢?如果有任何不同,这也是 geospositionchanged 的代码。
private static void GeoPositionChanged(object sender,
GeoPositionChangedEventArgs<GeoCoordinate> e)
{
MessageBox.Show("The current location is: " +
e.Position.Location.Latitude + "/" +
e.Position.Location.Longitude + ".");
}
最佳答案
等待位置服务准备就绪。您的 GeoCoordinateWatcher 有一个状态更改事件和另一个位置更改事件。
GeoCoordinateWatcher _watcher;
public Class1()
{
_watcher = new GeoCoordinateWatcher();
_watcher.StatusChanged += Watcher_StatusChanged;
_watcher.PositionChanged += GeoPositionChanged;
_watcher.Start();
var coord = _watcher.Position.Location;
}
private void Watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
{
if (e.Status == GeoPositionStatus.Ready)
{
MessageBox.Show("Watcher is ready. First location: The current location is: " +
_watcher.Position.Location.Latitude + "/" +
_watcher.Position.Location.Longitude + ".");
}
}
private static void GeoPositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
MessageBox.Show("The current location is: " +
e.Position.Location.Latitude + "/" +
e.Position.Location.Longitude + ".");
}
关于c# - 系统设备位置不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38794188/