c# - 系统设备位置不起作用

标签 c# windows geolocation

我有使用 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/

相关文章:

node.js - 在 win10 中,我执行 yarn add protobufjs,但错误显示 : error An unexpected error occurred: "EPERM: operation not permitted, unlink

windows - 使用 Desktop Duplication API 捕获登录和锁定屏幕

json - 谷歌地理位置未发现错误

在 GPS 坐标数据库中查找 'hot spots' 的算法

java - geo_point 类型的不同格式?

c# - 如何使用 Moq 和 NUnit 测试委托(delegate)

c# - LINQ - 通过也是 List<T> 的属性对 List<T> 进行分组

c# - 如何在存储库模式中加载相关数据

c# - 每当数据库更新时更新 C# 客户端

c++ - 为什么此代码在具有多字节字符集但不具有 unicode 字符集的 visual studio 中完美运行?