Ho trovato un metodo che prende una coordinata e un intervallo (in miglia) e restituisce un elenco di coordinate che formano un cerchio attorno all'origine. Mi sembra di aver fatto qualche progresso con esso, ma ho un problema con l'abbattimento della gamma.Calcola le coordinate GPS per formare un raggio di una data dimensione
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);
}
Il problema che ho trovato è che la costante sto usando per raccontare la distanza in miglia in misura cambia a seconda posizione .. Qualcuno ha qualche suggerimento per risolvere questo problema, o una trappola per topi migliore del tutto ?
EDIT: Vorrei sottolineare, io sono terribile in matematica :)
Ricordare che il punto di arresto indica una distanza costante da un punto fisso sarebbe _seem_ essere un'elisse e non un cerchio se si grafici la loro lat/lon su un pezzo di carta millimetrata. Questo perché (eccetto all'equatore) la distanza percorsa da un'unità di lat non è la stessa di una unità di lon. – JonnyBoats