# Haversine's formula for distance less than 5 meters

I am trying to use haversin formula to prevent mysql table from being updated. I am implementing a reusable based application where data is `mac, route, lat, long`

written by passbus devices im bus and sent to server.

My database table has mac address as `UNIQUE KEY`

. So to avoid another passenger on the same bus storing their data in the table, I would filter these queries with `Haversin formula`

, but I tried it with a tow point that is about 20 meters close together, but I get quantity`4803.800129810092`

``````//calculate the distance between the request sender and all other request in the ArrayList.

private double haversineDistance(LatLong x, LatLong y) {
final int R = 6371; // Radious of the earth
double xLat = x.getLatitude();
double xLon = x.getLongitude();
double yLat = y.getLongitude();
double yLon = y.getLongitude();
;
double latDistance = toRad(yLat - xLat);
double lonDistance = toRad(yLon - xLon);
double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
* Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double distance = R * c;

System.out.println("The distance between two lat and long is:" + distance);

return distance;

}
```

```
+3

source to share

Haversine is too much for that. Pythagoras is adequate.

Below is a javascript function to return distances in meters. I'm sure you can convert to Java '

``````function Pyth(lat1,lat2,lng1,lng2){
R = 6371000; // gives d in metres
d = sqrt(x*x + y*y) * R;
return d;
}
```

```
0

source

All Articles