我想出了一种方法,它需要一个坐标和一个范围(以英里为单位),并返回围绕原点形成一个圆的坐标列表。我似乎已经取得了一些进展,但我有一个问题,就是让范围部分下降。计算GPS坐标以形成给定大小的半径
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);
}
我发现的问题是,我使用的是告诉英里取决于位置度变化的距离不变..有没有人有完全解决这个问题,还是一个更好的捕鼠器任何建议?
编辑: 我要指出,我在数学:)
请记住,如果您在一张方格纸上绘制它们的经纬度,那么从固定点开始指定一个恒定的距离会看起来像是一个椭圆而不是一个圆。这是因为(除赤道外)一单位纬度所涵盖的距离与一单位纬度不同。 – JonnyBoats 2010-02-26 19:24:54