GeoCoordinateWatcher Широта и долгота к метке

Код ниже, который я получил с одного из форумов, я пытаюсь получить широту и долготу клиентского компьютера (пользователя). Но он возвращает мне неизвестное место. Мне нужно было добавить или изменить это.

public string GetUserLocation()
{
 string coords = "";
 GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);
 watcher.Start(); 
 GeoCoordinate coord = watcher.Position.Location;
 if (!watcher.Position.Location.IsUnknown)
 {
 ****** lat = coord.Latitude;
 ****** longi = coord.Longitude; 
 coords = lat + "," + longi;
 }
 else
 {
 return coords="Unknown latitude and longitude.";
 }
 return coords;
}
1 ответ

вы пробовали watcher.TryStart чтобы проверить, правильно ли инициализирован ваш наблюдатель?

bool started = watcher.TryStart(false, TimeSpan.FromMilliseconds(2000));
if (!started)
{
 Console.WriteLine("GeoCoordinateWatcher timed out on start.");
}

Также проверьте статус и разрешение GeoCoordinateWatcher

Свойство Status можно проверить, чтобы определить, доступны ли данные. Если данные доступны, вы можете получить местоположение один раз из свойства Position или получить непрерывные обновления местоположения, обработав событие PositionChanged.

Свойства Permission, Status и Position поддерживают INotifyPropertyChanged, так что приложение может привязывать данные к этим свойствам.

Вот как проверить разрешение:

if (watcher.Permission == GeoPositionPermission.Granted)
{
 // you have permission... 
}

И вы можете посмотреть здесь, чтобы проверить статус.

licensed under cc by-sa 3.0 with attribution.