Вы можете использовать широту и долготу.
Excel:
=IF(SIN(Lat1) * SIN(Lat2) + COS(Lat1) * COS(Lat2) * COS(Long1 - Long2) > 1,
RadiusofEarth * ACOS(1), RadiusofEarth *
ACOS(SIN(Lat1) * SIN(Lat2) + COS(Lat1) * COS(Lat2) * COS(Long1-Long2)))
VB.NET импортирует System.Math
Private Function Distance(ByVal lat1 As Double, ByVal lon1 As Double, ByVal lat2 As Double, ByVal lon2 As Double, ByVal unit As String) As Double
Dim theta As Double = lon1 - lon2
Dim dist = System.Math.Sin(deg2rad(lat1)) * System.Math.Sin(deg2rad(lat2)) + System.Math.Cos(deg2rad(lat1)) * System.Math.Cos(deg2rad(lat2)) * System.Math.Cos(deg2rad(theta))
dist = System.Math.Acos(dist)
dist = rad2deg(dist)
dist = dist * 60 * 1.1515
Select Case unit
Case "K"
dist = dist * 1.609344
Case "N"
dist = dist * 0.8684
End Select
Return dist
End Function
Другие полезные ссылки (Первый один также упоминает альтернативы VBA)
ExcelLatLong (также упоминает альтернативы VBA)
Zips by Lat Long Lookup
VBA discussion
EDIT: Ссылка добавлена из-за комментарии дискуссию
More Info(Excel Formula)
вы смотрели на Google Maps API? –
@Amir Raminfar. Когда я в последний раз смотрел карты Google api, ограничение заключалось в том, что любая информация, полученная, должна отображаться на карте, чтобы удовлетворить требования к изъятию. Я не хочу отображать на карте. – MAW74656