public/javascripts/vendor/javascripts/geolib.js
function(coords) {

			if (!coords.length) {
				return false;
			}

			var keys = geolib.getKeys(coords[0]);
			var latitude = keys.latitude;
			var longitude = keys.longitude;

			var max = function( array ){
				return Math.max.apply( Math, array );
			};

			var min = function( array ){
				return Math.min.apply( Math, array );
			};

			var	lat, lng, splitCoords = {lat: [], lng: []};

			for(var coord in coords) {
				splitCoords.lat.push(geolib.useDecimal(coords[coord][latitude]));
				splitCoords.lng.push(geolib.useDecimal(coords[coord][longitude]));
			}

			var minLat = min(splitCoords.lat);
			var minLng = min(splitCoords.lng);
			var maxLat = max(splitCoords.lat);
			var maxLng = max(splitCoords.lng);

			lat = ((minLat + maxLat)/2).toFixed(6);
			lng = ((minLng + maxLng)/2).toFixed(6);

			// distance from the deepest left to the highest right point (diagonal distance)
			var distance = geolib.convertUnit('km', geolib.getDistance({lat:minLat, lng:minLng}, {lat:maxLat, lng:maxLng}));

			return {"latitude": lat, "longitude": lng, "distance": distance};

		}
function(coords) {

			if (!coords.length) {
				return false;
			}

			var keys = geolib.getKeys(coords[0]);
			var latitude = keys.latitude;
			var longitude = keys.longitude;

			var max = function( array ){
				return Math.max.apply( Math, array );
			};

			var min = function( array ){
				return Math.min.apply( Math, array );
			};

			var	lat, lng, splitCoords = {lat: [], lng: []};

			for(var coord in coords) {
				splitCoords.lat.push(geolib.useDecimal(coords[coord][latitude]));
				splitCoords.lng.push(geolib.useDecimal(coords[coord][longitude]));
			}

			var minLat = min(splitCoords.lat);
			var minLng = min(splitCoords.lng);
			var maxLat = max(splitCoords.lat);
			var maxLng = max(splitCoords.lng);

			lat = ((minLat + maxLat)/2).toFixed(6);
			lng = ((minLng + maxLng)/2).toFixed(6);

			// distance from the deepest left to the highest right point (diagonal distance)
			var distance = geolib.convertUnit('km', geolib.getDistance({lat:minLat, lng:minLng}, {lat:maxLat, lng:maxLng}));

			return {"latitude": lat, "longitude": lng, "distance": distance};

		}
function ( coords ) { if ( ! coords . length ) { return false ; } var keys = geolib . getKeys ( coords [ 0 ] ) ; var latitude = keys . latitude ; var longitude = keys . longitude ; var max = function ( array ) { return Math . max . apply ( Math , array ) ; } ; var min = function ( array ) { return Math . min . apply ( Math , array ) ; } ; var lat , lng , splitCoords = { lat : [ ] , lng : [ ] } ; for ( var coord in coords ) { splitCoords . lat . push ( geolib . useDecimal ( coords [ coord ] [ latitude ] ) ) ; splitCoords . lng . push ( geolib . useDecimal ( coords [ coord ] [ longitude ] ) ) ; } var minLat = min ( splitCoords . lat ) ; var minLng = min ( splitCoords . lng ) ; var maxLat = max ( splitCoords . lat ) ; var maxLng = max ( splitCoords . lng ) ; lat = ( ( minLat + maxLat ) / 2 ) . toFixed ( 6 ) ; lng = ( ( minLng + maxLng ) / 2 ) . toFixed ( 6 ) ; // distance from the deepest left to the highest right point (diagonal distance) var distance = geolib . convertUnit ( 'km' , geolib . getDistance ( { lat : minLat , lng : minLng } , { lat : maxLat , lng : maxLng } ) ) ; return { "latitude" : lat , "longitude" : lng , "distance" : distance } ; }
Calculates the center of a collection of geo coordinates

@param		array		Collection of coords [{latitude: 51.510, longitude: 7.1321}, {latitude: 49.1238, longitude: "8° 30' W"}, ...]
@return		object		{latitude: centerLat, longitude: centerLng, distance: diagonalDistance}
Calculates the center of a collection of geo coordinates