#c# #windows-phone-8 #geolocation
#c# #windows-phone-8 #геолокация
Вопрос:
Кажется, что Geolocator просто не работает на WP8, когда должен. (Но по какой-то странной причине отлично работает на 8.1)… Я нахожусь в оптимальных условиях — LTE, FiOS Wifi… Никаких препятствий. Нет причин, по которым это не должно работать. Однако, похоже, он просто зависает и никогда не возвращает текущее местоположение или даже исключение.
Я пытался отключить обратный геокод, и он не работает. Я сузил его до фактического сервиса, который получает местоположение (геолокатор или геопозиция)
ID_CAP_LOCATION включен. Службы определения местоположения телефона включены. Я нацелен на WP8.
Код:
private async void getlocation()
{
try
{
Geolocator gl = new Geolocator(); gl.DesiredAccuracyInMeters = 50;
Geoposition geoposition = await gl.GetGeopositionAsync(maximumAge: TimeSpan.FromMinutes(5), timeout: TimeSpan.FromSeconds(60));
latitude = geoposition.Coordinate.Latitude.ToString(); longitude = geoposition.Coordinate.Longitude.ToString();
//Location to physical address
List<MapLocation> locations;
ReverseGeocodeQuery query = new ReverseGeocodeQuery();
query.GeoCoordinate = new GeoCoordinate(geoposition.Coordinate.Latitude, geoposition.Coordinate.Longitude);
//Set address to tecxtblock
query.QueryCompleted = (s, e) =>
{
locations = e.Result as List<MapLocation>;
address = locations[0].Information.Address.City.ToString();
ts.Center = new GeoCoordinate(geoposition.Coordinate.Latitude, geoposition.Coordinate.Longitude);
ts.ZoomLevel = 7;
location.Text = address.ToUpper(); //Location
//Successful, now get weather for current location
getforecast();
};
query.QueryAsync();
}
catch
{
MessageBox.Show("Location services appear to be turned off. To use Atmosphere, turn location services on.");
}
}
Ответ №1:
Я столкнулся с проблемами на WP8 с фоновым отслеживанием, когда он обновлял позицию только при покупке приложения на передний план. Очень запутанный, поскольку я знал, что он работает на других устройствах без проблем.
В итоге я просто полностью отключил приложение и переустановил, это решило проблему. На всякий случай, если вы еще не пробовали — просто полностью удалите приложение и переустановите / повторно разверните с помощью Visual Studio. Проблема может разрешиться сама собой.
Ответ №2:
У меня была та же проблема. Тот же код работает в 8.1, но не в 8.0
Я смог заставить его работать, когда я вызвал функцию из нажатия кнопки вместо конструктора страницы или в событии Page_loaded .