Calcolo della nuova longitudine, latitudine dal vecchio + n metri

Voglio creare 2 nuove longitudini e 2 nuove latitudini basate su una coordinata e una distanza in metri, voglio creare un bel riquadro di delimitazione attorno a un certo punto. La sua piccola scala e max 1500meters + e 1500meter -. Quindi è per una parte di una città, non penso che la curva della terra debba essere presa in considerazione.

Quindi ho 50.0452345 (x) e 4.3242234 (y) e voglio sapere x + 500meter, x-500meter, y-500meter, y + 500meter

Ho trovato molti algoritmi ma quasi tutti sembrano occuparsi della distanza tra i punti.

Il numero di chilometri per grado di longitudine è approssimativamente

(2*pi/360) * r_earth * cos(theta) 

dove theta è la latitudine in gradi e r_earth è approssimativamente 6378 km.

Il numero di chilometri per grado di latitudine è approssimativamente lo stesso in tutte le località, ca.

 (2*pi/360) * r_earth = 111 km / degree 

Quindi puoi fare:

 new_latitude = latitude + (dy / r_earth) * (180 / pi); new_longitude = longitude + (dx / r_earth) * (180 / pi) / cos(latitude * pi/180); 

Finché dx e dy sono piccoli rispetto al raggio della terra e non ti avvicini troppo ai poli.

La risposta accettata è perfettamente giusta e funziona. Ho apportato alcune modifiche e trasformato in questo:

 double meters = 50; // number of km per degree = ~111km (111.32 in google maps, but range varies between 110.567km at the equator and 111.699km at the poles) // 1km in degree = 1 / 111.32km = 0.0089 // 1m in degree = 0.0089 / 1000 = 0.0000089 double coef = meters * 0.0000089; double new_lat = my_lat + coef; // pi / 180 = 0.018 double new_long = my_long + coef / Math.cos(my_lat * 0.018); 

Spero che questo aiuti anche.

Avete estratto: come trovo il lat / long che è x km a nord di un dato lat / long ?

Questi calcoli sono fastidiosi al massimo, ne ho fatti molti. La formula haversine sarà tua amica.

Alcuni riferimenti: http://www.movable-type.co.uk/scripts/latlong.html

Per latitudine fai:

 var earth = 6378.137, //radius of the earth in kilometer pi = Math.PI, m = (1 / ((2 * pi / 360) * earth)) / 1000; //1 meter in degree var new_latitude = latitude + (your_meters * m); 

Per longitudine fare:

 var earth = 6378.137, //radius of the earth in kilometer pi = Math.PI, cos = Math.cos, m = (1 / ((2 * pi / 360) * earth)) / 1000; //1 meter in degree var new_longitude = longitude + (your_meters * m) / cos(latitude * (pi / 180)); 

La variabile your_meters può contenere un valore positivo o negativo.