Местоположение всегда возвращает "Неизвестно" - PullRequest
2 голосов
/ 23 мая 2011

Я только что попробовал свое первое приложение WP7 на реальном устройстве. Моя проблема в том, что я использую геолокацию для одной из функций, но я всегда получаю неизвестное местоположение. Я не знаю, есть ли способ предоставить разрешения на местоположение для моего приложения или я что-то упустил. В настройках телефона включены службы определения местоположения, и приложение карты работает без каких-либо проблем в поиске моей реальной позиции. Я проверил свойство GeoCoordinateWatcher.Permisson и его значение «Предоставлено». У меня уже есть эта строка <Capability Name="ID_CAP_LOCATION"/> в WMAppManifest.xml.

Есть идеи, как ее решить?

[EDIT]

Вот мой код. Я добавил стартовую строку после того, как вы сказали мне сделать это, но у меня все еще есть проблемы.

 string location = "41,0";
 GeoCoordinateWatcher watcher = new GeoCoordinateWatcher();
 watcher.Start();
 var myPosition = watcher.Position;

 if (!myPosition.Location.IsUnknown) {
 location = myPosition.Location.Latitude + "," +  myPosition.Location.Longitude;

}

1 Ответ

2 голосов
/ 26 мая 2011

Подождите, пока службы определения местоположения не будут готовы.Ваш GeoCoordinateWatcher имеет событие для изменения статуса и еще одно для изменения позиции.Ваш код должен выглядеть следующим образом.

//this goes somewhere in your startup sequence
_geoCoordinateWatcher.StatusChanged += 
  new EventHandler<GeoPositionStatusChangedEventArgs>(_gcw_StatusChanged);
_geoCoordinateWatcher.PositionChanged += 
  new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(_gcw_PositionChanged);
_geoCoordinateWatcher.MovementThreshold = 50; //metres
_geoCoordinateWatcher.Start();

...

static void _gcw_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
{
  if (e.Status == GeoPositionStatus.Ready)
    PhoneApplicationService.Current.State["CurrentLocation"] = 
      _geoCoordinateWatcher.Position.Location;
}

static void _gcw_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
  PhoneApplicationService.Current.State["CurrentLocation"] = e.Position.Location;
}

Поскольку вы, похоже, испытываете некоторое горе, я предлагаю вам начать с помещения сообщения в событие изменения статуса, чтобы вы могли определить, сработает ли оно на вашем телефоне, и один развы получаете эту сортированную попытку изменения позиции и т. д.

Кроме того, вы пытались выйти на улицу?Возможно, вы не получите внутри GPS замок, а расположение вышки сотовой связи не всегда работает.Выйдите на улицу и освободитесь от высоких зданий.Если вы живете в высотном доме, выходите на балкон или (лучше всего) на крышу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...