Rounding latitude and longitude to get within approximately 1 km

507 Views Asked by At

I would like to simplify a GPS coordinate to a "TOP LEFT" position of a defined virtual grid (for example 100 kilometers).

If my GPS coordinate is in a cell of the grid, then we use the GPS position of the "TOP LEFT" of the cell.

The new coordinate is not intended to be displayed on a map but just to be communicated and manipulated.

This imaginary grid would have an editable distance (e.g. 1 kilometer or 100 kilometers).

I had imagined calculating the distance between two known points:

  1. latitude = 0 / longitude = 0 (Null Island)
  2. has GPS coordinate (ex: lat 48.858284648396626 lng 2.294501066207886)
we calculate distances for lat/lng (i use leaflet distanceTo function )
distance_latitude: 5432.79 km (?)   : distanceTo( [0,0],[48.858284648396626,0])
distance_longitude: 255.14 km (?)   : distanceTo( [0,0],[0,2.294501066207886])
var distance=100; // in kilometers
distance_latitude= Math.floor(distance_latitude/ distance) * distance;
= 5400
distance_longitude= Math.floor(distance_longitude / distance) * distance;
= 200

but after that... how to transform these kilometers (from Null Island) to a new coordinate? (so the top left of the current cell where the poi is)

(grid not in scale!)

enter image description here

1

There are 1 best solutions below

0
On

Sometimes it's better to wait for a good night's sleep!

answer: just move nullIsland the distance between the poi and... nullIsland... simply! So all the dots (red) take the TopLeft position -blue marker- of the imaginary grid (in my screenshot: a 5Km grid).

enter image description here