第一次启动后Geolocator.GetGeopositionAsync()的奇怪行为

时间:2012-12-27 08:34:22

标签: geolocation windows-phone-8

我正在编写需要获取设备位置的Windows Phone 8应用程序(不跟踪更改,只获取位置)。我将下一个代码添加到我的起始页面的OnNavigatedTo()方法中,但是在启动应用程序后,即使在10秒超时后,进度指示器也不会隐藏。但是,如果我导航到另一个页面然后返回,一切正常。这发生在模拟器上,我没有真正的设备。我做错了什么?

protected async override void OnNavigatedTo(NavigationEventArgs e)
{
    if(_geoPosition == null)
    {
        try
        {
            var geolocator = new Geolocator();
            geolocator.DesiredAccuracyInMeters = 50;

            _progressIndicator = new ProgressIndicator
            {
                IsIndeterminate = true,
                Text = "Getting current location, please wait...",
                IsVisible = true
            };
            SystemTray.SetIsVisible(this, true);
            SystemTray.SetProgressIndicator(this, _progressIndicator);

            _geoPosition = await geolocator.GetGeopositionAsync(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(10));

            _progressIndicator.IsVisible = false;
            SystemTray.SetIsVisible(this, false);
        }
        catch (UnauthorizedAccessException)
        {
            MessageBox.Show("Location is disabled in phone settings");
        }
    }
}

谢谢!

UPD :只是尝试将此代码添加到空项目中,并且工作正常。试图注释掉OnNavigatedTo的某些部分,我没有将其包含在代码片段中,并发现原因在于此页面的数据源初始化。我很抱歉误报。

1 个答案:

答案 0 :(得分:1)

您的代码适用于我,尝试经典重启VS和项目!代码应该可以工作,使用模拟器和设备进行测试(诺基亚820)。

祝你好运