Геолокатор висит на WP8, работает на 8.1?

#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 .