Lat long distance

Haversine Distance vs Google Distance

by Amitesh Kumar

HTML

<script src="http://maps.googleapis.com/maps/api/js?sensor=false&amp;extension=.js"></script>
<script src="http://maps.google.com/maps/api/js?sensor=false&amp;libraries=geometry"></script>

JavaScript

var xp = 7.070562277980709;  // point_lat
    var yp = 125.60755640475463;  // point_long
    var radius = 63.942490126300555;  // radius
    //var xc = 51.656398773;  // outside circle_lat
    //var yc = -121.2880020144; //outside circle_lon
    var xc = 7.070479805752504;  // circle_lat
    var yc = 125.60851603754577; // circle_lon

    var r       =   radius; // convert meter to kilometer
    var dlat    =   (xp - xc) * (Math.PI / 180);
    var dlng    =   (yp - yc) * (Math.PI / 180);
    var a       =   ((Math.sin(dlat / 2)) * (Math.sin(dlat / 2)));
    var b       =   ((Math.cos(xp * (Math.PI / 180))) * (Math.cos(xc * (Math.PI / 180))));
    var c       =   ((Math.sin(dlng / 2)) * (Math.sin(dlng / 2)));
    var d       =   a + (b * c);
    var e       =   2 * Math.atan2(Math.sqrt(d), Math.sqrt(1 - d));
    var f       =   r * e;

/* distance from google api */
var myLatLngFrom = new google.maps.LatLng(xp, yp);
var myLatLngTo = new google.maps.LatLng(xc, yc);
var g_distance = google.maps.geometry.spherical.computeDistanceBetween(myLatLngFrom, myLatLngTo, radius)
/*...*/
var msg = "Haversine Distance : "+f + "\n Google Distance     : "+g_distance;
    if (f < r) {
        msg +='\n Point is INSIDE';
    } else if(f > r) {
        msg +='\n Point is OUTSIDE';
    }
alert(msg)