Подождите, пока службы определения местоположения не будут готовы.Ваш 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 замок, а расположение вышки сотовой связи не всегда работает.Выйдите на улицу и освободитесь от высоких зданий.Если вы живете в высотном доме, выходите на балкон или (лучше всего) на крышу.