在我的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并从那里调用方法,我能够解决代码中的问题。从那以后我再没有其他问题了。