Поскольку вы хотите получить ближайшее расстояние в метрах от текущего значения широты / долготы, первое, что вам нужно сделать, это выполнить преобразование координат.
Большинство GPS-приемников работают в WGS84, и при условии, что вы можете использовать библиотеку, такую как Proj4 ( .NET wrapper ), чтобы преобразовать как текущую позицию, так иположение дороги в метрах (проецируемые координаты; либо в проекции WGS84, либо в локальной системе координат, основанной на вашем географическом положении. Зоны UTM могут работать достаточно хорошо, или OSGB, если вы находитесь в Великобритании).
Вы можете найти проекцию, наилучшим образом подходящую для ваших нужд здесь (однако, когда я пишу это, в настоящее время он недоступен ... отсюда и отсутствие полезных ссылок в настоящее время. Я буду редактироватькогда он снова станет доступен).
Если вам нужна дополнительная помощь в части ГИС, рассмотрите возможность посещения GIS.SE
После того, как вы определите свои местоположения вметров, найдите расстояние между ними:
double distanceX = currentXmetres - roadXmetres;
double distanceY = currentYmetres - roadYmetres;
double Distance = Math.Abs( Math.Sqrt( (distanceX * distanceX) + (distanceY * distanceY) ) );
Теперь вы можете запросить в вашей базе данных значение Distance и найти ближайшее местоположение:
SELECT * FROM table
ORDER BY ABS(Distance - Col 2)
LIMIT 1
Примечание: я не знаюфактическое имя вашей таблицы или столбцов, поэтому замените «table» и «Col 2» соответственно.