Я придумал метод, который берет координату и диапазон (в милях) и возвращает список координат, которые образуют круг вокруг начала координат. Кажется, я достиг некоторого прогресса в этом, но у меня есть проблема с уменьшением диапазона.
private const Double LAT_MILE = 0.0144839;
private const Double LONG_MILE = 0.0190693;
public static List<Gps.Coordinate> GetRadius(Double OriginLatitude, Double OriginLongitude, Double Range, int Points)
{
List<Gps.Coordinate> Result = new List<Coordinate>();
//insert a new point
for (int i = 0; i < Points; i++)
{
Result.Add(new Gps.Coordinate()
{
Latitude = ((Range * LAT_MILE) * System.Math.Cos(i)) + OriginLatitude,
Longitude = ((Range * LONG_MILE) * System.Math.Sin(i)) + OriginLongitude
});
}
//sort using nearest neighbor
return SortCoords(ref Result);
}
Проблема, которую я обнаружил, заключается в том, что константа, которую я использую для определения расстояния в милях в градусах, меняется в зависимости от местоположения. У кого-нибудь есть какие-либо предложения по решению этой проблемы или вообще лучшая мышеловка?
EDIT:
Я должен отметить, я ужасен в математике:)