В моем приложении 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