El Geofence es un perímetro virtual para un área geográfica del mundo real (un radio alrededor de un punto). Y se usa entre otras cosas para calcular la distancia GPS entre dos puntos. He aquí como calcularlo usando JAVA o PHP y coordenadas GPS.

public static double geoFence(double lon1, double lat1, double lon2, double lat2){
	double dlon = Radians(lon2 - lon1);
	double dlat = Radians(lat2 - lat1);
 
 
	double a = (Math.sin(dlat / 2) * Math.sin(dlat / 2)) + Math.cos(Radians(lat1)) * Math.cos(Radians(lat2)) * (Math.sin(dlon / 2) * Math.sin(dlon / 2));
	double angle = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
	double RADIUS = 6371;
 
	double metros = (angle * RADIUS) * 1000;
 
	return metros;
}
function geoFence($lon1, $lat1, $lon2, $lat2){
 
    $dlon = deg2rad($lon2 - $lon1);
	$dlat = deg2rad($lat2 - $lat1);
 
 
	$a = (sin($dlat / 2) * sin($dlat / 2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * (sin($dlon / 2) * sin($dlon / 2));
	$angle = 2 * atan2(sqrt($a), sqrt(1 - $a));
	$RADIUS = 6371;
 
	$metros = ($angle * $RADIUS) * 1000;
 
	return $metros;
}