CFLib.org – Common Function Library Project

getHaversineDistance(lat1, lon1, lat2, lon2 [, units])

Last updated March 13, 2011

Version: 0 | Requires: ColdFusion 5 | Library: CFMLLib

 
Rated 1 time(s). Average Rating: 5.0

Description:
Calculates distance between Latitude/Longitude points using haversine formula : http://www.movable-type.co.uk/scripts/latlong.html

Return Values:
Returns numeric distance between the two points. Units varies, default is miles.

Example:

view plain print about
#getDistance(1, 1, 2, 2)#

Parameters:

Name Description Required
lat1 latitude of first point Yes
lon1 longitude of first point Yes
lat2 latitude of second point Yes
lon2 longitude of second point Yes
units Units for return value. Default is miles. No

Full UDF Source:

view plain print about
<cfscript>
/**
 * Calculates distance between Latitude/Longitude points using haversine formula.
 * 
 * @param lat1      latitude of first point (Required)
 * @param lon1      longitude of first point (Required)
 * @param lat2      latitude of second point (Required)
 * @param lon2      longitude of second point (Required)
 * @param units      Units for return value. Default is miles. (Optional)
 * @return Returns numeric distance between the two points. Units varies, default is miles. 
 * @author Henry Ho (henryho167@gmail.com) 
 * @version 0, March 13, 2011 
 */

function getDistance(lat1, lon1, lat2, lon2, units = 'miles')
{
    // earth's radius. Default is miles.
    var radius = 3959;
    if (arguments.units EQ 'kilometers' )
        radius = 6371;
    else if (arguments.units EQ 'feet')
        radius = 20903520;
    
    var toRad = pi() / 180;
    var dLat = (lat2-lat1) * toRad;
    var dLon = (lon2-lon1) * toRad; 
    var a = sin(dLat/2)^2 + cos(lat1 * toRad) * cos(lat2 * toRad) * sin(dLon/2)^2; 
    var c = 2 * createObject("java","java.lang.Math").atan2(sqr(a), sqr(1-a));
    
    return radius * c;
}
</cfscript>
blog comments powered by Disqus

Search CFLib.org


Latest Additions

Dave Anderson Dave Anderson added
iniToStruct
20 day(s) ago

Dave Anderson Dave Anderson added
deDupeArray
20 day(s) ago

Richard Richard added
dice
22 day(s) ago

Isaac Dealey Isaac Dealey added
getRelative
a while ago

Top Rated

Darwan Leonardo Sitepu backupDatabase
Rated 5.0, 22 time(s)

Barney Boisvert indentXml
Rated 5.0, 10 time(s)

Kevin Pepperman generateSsccAsn
Rated 5.0, 4 time(s)

Raymond Camden highlightAndCrop
Rated 5.0, 4 time(s)

Created by Raymond Camden / Design by Justin Johnson