C# Получите GPS координаты между 2 точками и верните пройденный путь - PullRequest
0 голосов
/ 04 мая 2020

Я работаю над проектом (Запуск приложения для Android Устройства) для моего университета. Итак - вчера я написал метод, который вычисляет расстояние между двумя координатами (предыдущей и текущей). Этот метод повторяется через каждую секунду после начала цикла и заканчивается после его окончания.

Таким образом, по сути, это вырез кода:

       private void ResetInits()
    {
        temp = 0;
        x_start = 0;
        y_start = 0;
        x_actual = 0;
        y_actual = 0;
    }


    async void ActualPos()
    {
        ResetInits();
        var request = new GeolocationRequest(GeolocationAccuracy.Best);
        var currentloc = await Geolocation.GetLocationAsync(request);
        x_actual = currentloc.Latitude;
        y_actual = currentloc.Longitude;
    }


    async void CalcAfterSecMethode()
    {
        var location_start = new Xamarin.Essentials.Location(x_actual, y_actual);


        //new Positions
        var request_start = new GeolocationRequest(GeolocationAccuracy.Best);
        var currentloc_start = await Geolocation.GetLocationAsync(request_start);

        x_start = currentloc_start.Latitude;
        y_start = currentloc_start.Longitude;

        var location = new Xamarin.Essentials.Location(x_start, y_start);

        double distanceaftersec = location_start.CalculateDistance(location, DistanceUnits.Kilometers);


        temp += distanceaftersec;
        ticker.Text = temp.ToString();

        x_actual = x_start;
        y_actual = y_start;

    }


    private void btn_start_Clicked(object sender, EventArgs e)
    {

        //Current Position
        ActualPos();


        Parallel.Invoke(() =>
        {
            stopwatch.Start();
            RunStopuhr();

        });

            Device.StartTimer(TimeSpan.FromMilliseconds(100), () =>
            {

                if (stopwatch.ElapsedMilliseconds >= 1000)
                {
                    //METHODCALC

                    CalcAfterSecMethode();
                    stopwatch.Restart();
                }
                return true;
            });
    }

Самое интересное, когда я запускаю свое приложение на эмуляторе android, оно вычисляет все расстояния от точек ... Так что, в основном, это должно делать обычное приложение для отслеживания бега. Каждую пройденную секунду метод получает 2 балла и добавляет расстояние к ticker.text (это метка в xamarin, просто показывает пройденный трек.) Но! На каждом android устройстве, которое я пробовал - оно показывает реальные запутанные числа: например, 5000 после того, как вы только что начали пробежку.

Было бы замечательно, если бы кто-то мог помочь мне здесь, привет.

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