Отслеживать, следует ли в режиме реального времени следовать маршруту в C# - PullRequest
0 голосов
/ 15 января 2020

Я разрабатываю приложение, которое показывает маршрут между пунктом отправления и пунктом назначения и местоположением устройства в реальном времени, подписавшись на его событие PositionChanged из пространства имен Geolocation в C#.

Я бы хотел реализовать функцию «мониторинга» в режиме реального времени, которая может определять, какой участок исходного маршрута является устройством (город, шоссе и т. д.). У меня есть Список всех различных GPS-позиций на маршруте, соответствующих этим позициям, и у меня есть функция мониторинга, как показано ниже.

//Getting the current GPS position on GeoCoordinte currentGpsForCompare
//pointHighway is a GeoCoordinte List containing all the points along the route that is a highway

 double distanceCompLoop = int.MaxValue;

 if (pointHighway.Count() > 0)
        {
            for (int k = 0; k < pointHighway.Count(); k++)
            {
                double distanceCompare = currentGpsForCompare.GetDistanceTo(pointHighway.ElementAt(k));
                if (distanceCompare < distanceCompLoop)
                {
                    distanceCompLoop = distanceCompare;
                    actionTB.Text = "HIGHWAY";
                    actionTB.ForeColor = System.Drawing.Color.White;
                    actionTB.BackColor = System.Drawing.Color.Green;

                }
            }
        }
.// and the same for city, hilly drive, country roads etcetera
.
.
}

Я чувствую, что реализация этой функции неэффективна и занимает больше времени, так как она должен выполнять циклы все время. Это также означает, что я вынужден увеличить тайм-аут на датчике GPS, чтобы до получения новой позиции GPS я завершил весь необходимый мониторинг. Есть ли более оптимизированный способ сделать это?

...