在我的Windows Phone 8应用程序中,我尝试使用主页上的GetGeopositionAsync来显示基于用户位置的某些项目。

调用GetGeopositionAsync不会在指定的超时内返回,也不会返回。

我使用的代码很简单:

            Geolocator geolocator = new Geolocator();
            geolocator.DesiredAccuracyInMeters = 50;

            Geoposition geoposition = null;
            try
            {
                geoposition = await geolocator.GetGeopositionAsync(
                    maximumAge: TimeSpan.FromMinutes(5),
                    timeout: TimeSpan.FromSeconds(10));
            }
            catch (UnauthorizedAccessException ex)
           {

                // location services disabled or other error
                // user should setup his location

            }


我能够找到的解决方案是为GeoCoordinateWatcher创建一个异步包装,它似乎运行良好。
但是我对我的解决方案不太自信,我更喜欢使用GetGeopositionAsync,它看起来像在WP8中获取设备位置的推荐方法。

更新:其他人正在报告相同的行为:
http://social.msdn.microsoft.com/forums/en-us/wpdevelop/thread/ff166fac-b423-4428-abd8-610bf0102fc0

最佳答案

您什么时候调用要求地理的方法?当我在ViewModel中将调用作为构造函数的一部分时,我发现遇到相同的问题。

通过添加OnLoadedCommand并从那里调用方法,我能够解决代码中的问题。从那以后我再没有其他问题了。

10-08 02:55