Как отобразить скорость моего устройства, используя широту и долготу - PullRequest
0 голосов
/ 01 мая 2019

после извлечения широты и долготы я пытался использовать их, чтобы получить текущую скорость, но все, что я могу получить, это 0 (я пробовал это в автобусе и поезде)

Я попытался получить свою текущую позицию, и я сохранил ее в двух переменных, а затем я использовал функцию «Задержка», чтобы получить мою вторую позицию через 1 секунду, а затем я рассчитал расстояние между этими двумя точками, и я посчитал мою скорость позже.

Я - это функция для определения моего расстояния:

public double distance_on_geoid(double lat1, double lon1, double lat2, double lon2)
{
    double x = (lon2 - lon1)*(lon2 - lon1);
    double y = (lat2 - lat1)* (lat2 - lat1);
    double z = 6371 * Math.PI * 2;
    double w = z / 360;
    double xx = x + y;
    double zz = xx * z;
    double distance = Math.Sqrt(zz);
    return distance;
}

II - это функция для расчета моей скорости:

public double GetVitesse(double distance)
{
    double time_s = 0.27;
    double speed_kph = distance / time_s;
    return speed_kph;
}

III - так я назвал функции:

var locator = CrossGeolocator.Current;
locator.DesiredAccuracy = 50;
var position = await locator.GetPositionAsync(TimeSpan.FromSeconds(1));

while (true)
{
    double lat1 = position.Latitude;
    double long1 = position.Longitude;
    await Task.Delay(1000);
    double lat2 = position.Latitude;
    double long2 = position.Longitude;
    double dist = distance_on_geoid(lat1, long1, lat2, long2);
    double vits = GetVitesse(dist);

    vitesse.Text = vits.ToString();
}

Я ожидаю отображения скорости на моем ярлыке vitesse.

...