using System.Device.Location;
using System.Collections.Generic;
public static void Main()
var coordinates = new List<GeoCoordinate>(){
new GeoCoordinate(39.1061, -94.5829),
new GeoCoordinate(39.1061, -94.5829),
new GeoCoordinate(39.1063, -94.5852),
new GeoCoordinate(39.1063, -94.5857),
new GeoCoordinate(39.1063, -94.5863),
new GeoCoordinate(39.1064, -94.5841),
new GeoCoordinate(39.1105, -94.5488),
new GeoCoordinate(39.1127, -94.5196),
new GeoCoordinate(39.1029, -94.5744),
new GeoCoordinate(39.069, -94.5084),
new GeoCoordinate(39.2367, -94.6236),
new GeoCoordinate(38.9485, -94.5029),
new GeoCoordinate(39.0369, -94.4665),
new GeoCoordinate(38.9537, -94.4858),
new GeoCoordinate(39.1009, -94.5328),
new GeoCoordinate(38.9535, -94.4547),
new GeoCoordinate(39.0999, -94.5033),
new GeoCoordinate(39.1024, -94.5744),
new GeoCoordinate(39.1, -94.5027),
new GeoCoordinate(39.0999, -94.5021),
new GeoCoordinate(39.0993, -94.5714),
new GeoCoordinate(39.0999, -94.5015),
new GeoCoordinate(39.1007, -94.5112),
new GeoCoordinate(39.1013, -94.5335),
new GeoCoordinate(39.101, -94.5264),
new GeoCoordinate(39.101, -94.5263),
new GeoCoordinate(39.1002, -94.5027),
new GeoCoordinate(39.1005, -94.5026),
new GeoCoordinate(39.1005, -94.5026),
new GeoCoordinate(39.07, -94.5733),
new GeoCoordinate(39.1019, -94.5483),
new GeoCoordinate(38.9635, -94.5889),
new GeoCoordinate(39.1007, -94.5033),
new GeoCoordinate(39.1008, -94.5026),
new GeoCoordinate(39.1007, -94.501),
new GeoCoordinate(39.1005, -94.5248),
new GeoCoordinate(38.9653, -94.5667),
new GeoCoordinate(38.9649, -94.5558),
new GeoCoordinate(38.9665, -94.5819),
new GeoCoordinate(39.0377, -94.4789),
new GeoCoordinate(38.9619, -94.4756),
new GeoCoordinate(39.0345, -94.4785),
new GeoCoordinate(39.0345, -94.4787),
new GeoCoordinate(39.1008, -94.4781),
new GeoCoordinate(39.1001, -94.4784),
new GeoCoordinate(39.1008, -94.4786),
new GeoCoordinate(39.101, -94.4788),
new GeoCoordinate(39.1004, -94.4789),
new GeoCoordinate(39.1009, -94.4789),
new GeoCoordinate(35.6607, -105.995),
double maxDistance = CheckForMaxDistance(coordinates, 0, 0);
Console.WriteLine(maxDistance);
public static double CheckForMaxDistance(List<GeoCoordinate> listToCheck, double currentMax, int startIndex){
for(int i = startIndex+1;i<listToCheck.Count;i++){
var calcD = DistanceApart(listToCheck[startIndex].Latitude, listToCheck[startIndex].Longitude,listToCheck[i].Latitude, listToCheck[i].Longitude);
Console.WriteLine(currentMax);
if(startIndex+1 < listToCheck.Count)
currentMax = CheckForMaxDistance(listToCheck, currentMax, startIndex+1);
public static double DistanceApart(double sLatitude, double sLongitude, double eLatitude, double eLongitude){
var sCoord = new GeoCoordinate(sLatitude, sLongitude);
var eCoord = new GeoCoordinate(eLatitude, eLongitude);
return ConvertMetersToMiles(sCoord.GetDistanceTo(eCoord));
public static double ConvertMetersToMiles(double meters)
return (meters / 1609.344);