系统设备位置不起作用

Posted

技术标签:

【中文标题】系统设备位置不起作用【英文标题】:System Device Location not working 【发布时间】:2016-08-05 16:47:41 【问题描述】:

我有使用 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 pc 和 1 个 Windows 10 pc 试过这个,它们都在设置中打开了共享位置。那么这段代码有什么问题呢?如果这有什么不同的话,这也是 geopositionchanged 的​​代码。

    private static void GeoPositionChanged(object sender,
GeoPositionChangedEventArgs<GeoCoordinate> e)
    
        MessageBox.Show("The current location is: " +
            e.Position.Location.Latitude + "/" +
            e.Position.Location.Longitude + ".");
    

【问题讨论】:

等待定位服务准备好。您的 GeoCoordinateWatcher 有一个状态更改事件和另一个位置更改事件。 我在 asp.net mvc 中遇到一个问题,如果您的网站未启用 SSL,则地理位置无法正常工作 【参考方案1】:

等待定位服务准备就绪。您的 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 + ".");
    

【讨论】:

没有骰子,仍然返回未知数 您使用的是哪个版本的 Windows? 'e.Status' 的值是多少?请使用断点查看值。 它说正在初始化 它没有第二次命中。它说启动时初始化,然后尝试获取 position.location 就是这样。 好的,通常状态为 NoData(例如,无权检索数据)或就绪。您使用的是哪个版本的 Windows?

以上是关于系统设备位置不起作用的主要内容,如果未能解决你的问题,请参考以下文章

背景位置在 iphone 设备中不起作用。有啥办法可以解决这个问题吗?

设备锁定时警报不起作用

带有 Google Play 服务的 Android Studio“仅限设备”位置不起作用

CMMotionManager:设备校准在真实设备上不起作用

Google Play 的定位服务在“仅限设备”模式下不起作用

Android 位置管理器不起作用