Fahid Zahoor Ответов: 2

Расстояние между двумя адресами с помощью C#


привет всем
я хочу найти расстояние в км между двумя адресами
я хочу сделать это с помощью приложения c#, у меня есть две переменные, которые содержат адреса,
то есть первая переменная "Fromaddress" содержит 1-й адрес abd вторая переменная "Toaddress" содержит второй адрес теперь я хочу вычислить дисстанцию от "
Fromaddress
" к
Toaddress
использование приложения c# winform.

Что я уже пробовал:

я понятия не имею, как я могу это сделать, но я немного знаю об этом, это делается для отправки как адреса на google map из приложения c#, так и google map возвращает расстояние

Patrice T

Анс спрашивать Google было слишком много усилий ?

2 Ответов

Рейтинг:
2

OriginalGriff

Вы, очевидно, знаете о Google, так почему же вы не использовали его?
Тривиальный google, использующий часть вашего вопроса в качестве поисковой строки, привел меня прямо сюда: https://www.aspforums.net/Threads/515185/Calculate-Distance-Duration-between-two-locations-in-Google-Maps-API-using-C-and-VBNet-in-ASPNet/[^]

Пожалуйста, в будущем, по крайней мере, сделайте базовый google перед публикацией здесь, а не тратьте свое и наше время впустую ...


ReturnVoid

Я гуглил по крайней мере последний час или около того. И пока эта ссылка была самой полезной, но снисходительный тон-нет. Если это была такая пустая трата времени, зачем вообще утруждать себя публикацией, ясно, что у вас есть много свободного времени. Иногда использование google и знание того, какие ключевые слова искать, не всегда так очевидно и тривиально, особенно для пользователей, впервые работающих в этой области.
Решение 2 ниже полезно еще больше, так как оно было сделано без снисходительного тона и на самом деле дает некоторое представление о необходимости преобразования адресов в координаты, о чем я раньше не думал.
В следующий раз подумайте, почему вы на самом деле (активно?) находитесь на этом сайте.... так что, пожалуйста, в будущем, по крайней мере, сделайте базовый google о почтовом этикете, прежде чем публиковать здесь, а не тратить свое время и ... ой :P.

OriginalGriff

Мне действительно все равно, если вы сочтете мое общение с другим членом клуба снисходительным: оно было адресовано не вам.
Как это бывает - не то чтобы это имело значение - ОП является вампиром-помощником: он упрямо против того, чтобы учиться чему-либо, если он может заставить других делать это за него. И когда вы переходите к "усилию" публикации вопроса, на который можно просто ответить, погуглив текст, который вы вставили в вопрос, вам, возможно, нужно напомнить, что тратить время занятых добровольцев-это не очень хорошая идея ...

Рейтинг:
2

MadMyche

Для этого есть 2 части: преобразование адресов в координаты и последующее вычисление расстояния между наборами координат.

Преобразование адресов в координаты называется Геокодирование и вот тут вступает в игру Google, поскольку у них есть API. Существует множество существующей документации по этому вопросу; вот суть того, что вам нужно знать:
Начало работы | Geocoding API | разработчики Google[^]

Вторая часть-это определение расстояния между точками; и там, где все эти навыки алгебры, геометрии и тригонометрии, которые вы забыли, переучиваются.
Для достижения наибольшей точности, особенно когда речь идет о больших расстояниях, вы захотите использовать Формула гаверсинуса - Википедия[^]

Если абсолютная точность не требуется и вы находитесь в пределах 100 км или около того, вы можете реализовать некоторые более простые математические вычисления, чтобы получить разницу в широте и долготе, а затем прокачать это через теорему Пифагора, чтобы получить довольно хорошую оценку расстояния

Последняя часть-это преобразования между (десятичными) градусами и километрами, которые могут быть полезны
Насколько велик градус широты долготы[^]


BillWoodruff

заслуживает ли этого тот, кто ничего не пробовал ?

F-ES Sitecore

Просто добавлю, что теперь есть класс, который делает всю математику за вас

Система, Устройство.Местоположение.GeoCoordinate.GetDistanceTo()

ReturnVoid

Спасибо за дополнительные комментарии и решение!

MadMyche

Добро пожаловать. Если это помогло вам, пожалуйста, подумайте о том, чтобы использовать звезды в верхней части решения, чтобы дать оценку этому ответу