GeoCoordinateWatcher.TryStart не работает должным образом в C # - PullRequest
0 голосов
/ 20 октября 2018

У меня проблема со следующим кодом, а именно: он не отображает запрос на разрешение, поэтому я не могу дать приложению доступ к своему местоположению и не работает.

public Tuple<double, double> GetDeviceLocation()
{
    GeoCoordinateWatcher watcher = new GeoCoordinateWatcher();

    watcher.TryStart(false, TimeSpan.FromMilliseconds(1000));

    GeoCoordinate coord = watcher.Position.Location;

    if (coord.IsUnknown != true)
    {
        return Tuple.Create(coord.Latitude, coord.Longitude);
    }
}

1 Ответ

0 голосов
/ 21 октября 2018

Я просмотрел документы Microsoft и кое-что привлекло мое внимание.

Расстояние, которое необходимо переместить в метрах относительно координаты от последнего события PositionChanged до поставщика местоположениявызывает другое событие PositionChanged.

Примечания

Порог перемещения по умолчанию равен нулю, что означает, что любое изменение местоположения, обнаруженное текущим поставщиком местоположения, вызывает событие PositionChanged иобновить в свойстве Position.

   // Get location
   CLocation myLocation = new CLocation();
   myLocation.GetLocationEvent();

Вы должны быть зарегистрированы PostionChange событие, чтобы получить информацию о местоположении

Используйте класс местоположения (CLocation), где вынужно.

Информация о географическом местоположении MSDN

    public class CLocation
   {
    GeoCoordinateWatcher watcher;

    public void GetLocationEvent()
    {
        this.watcher = new GeoCoordinateWatcher();
        this.watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);
        bool started = this.watcher.TryStart(false, TimeSpan.FromMilliseconds(2000));
        if (!started)
        {
            Console.WriteLine("GeoCoordinateWatcher timed out on start.");
        }
    }

    void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
    {
        PrintPosition(e.Position.Location.Latitude, e.Position.Location.Longitude);
    }

    void PrintPosition(double Latitude, double Longitude)
    {
        Console.WriteLine("Latitude: {0}, Longitude {1}", Latitude, Longitude);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...