我设计一个招聘数据库,我需要它来执行多项任务,所有涉及到整合计算距离的一种方式:
1)计算距离从客户端候选生活?
2)计算在任何一天可以工作人选的半径范围内的客户呢?
3)计算与用于客户端的半径内的空缺的正确资格的候选数。
你可以看到我需要计算2种主要方式1)半径2)直线距离,我宁愿精确的距离,但首先会做的距离。 我知道我能够整合谷歌地图或其他一些基于网络的映射,但我希望系统是独立的,因此它可以没有互联网连接的功能。 该系统将有一个HTML5前端和后端是MySQL和PHP。
谢谢BIAGIO
2点之间的距离可以用下面的公式计算:
6371*acos(cos(LatitudeA)*cos(LatitudeB)*cos(longitudeB-longitudeA)+sin(LatitudeA)*sin(latitudeB))
当然,这是在一公里“飞鸦”近似。
至极可以通过翻译到PHP:
$longA = 2.3458*(M_PI/180); // M_PI is a php constant
$latA = 48.8608*(M_PI/180);
$longB = 5.0356*(M_PI/180);
$latB = 47.3225*(M_PI/180);
$subBA = bcsub ($longB, $longA, 20);
$cosLatA = cos($latA);
$cosLatB = cos($latB);
$sinLatA = sin($latA);
$sinLatB = sin($latB);
$distance = 6371*acos($cosLatA*$cosLatB*cos($subBA)+$sinLatA*$sinLatB);
echo $distance ;
这样,您可以计算两个点(人)之间的距离,当然,确定一个点是否在其他的半径。
只是一个想法:如果您的客户和候选人生活在一个非常有限的区域,我会用一个矩形图,并在数据库中的该区域所有城市输入x和y的值。
由于勾股定理,你可以说:
distance²=(x值的客户端 - x值候选)2 +(y值的客户端 - y值候选)²
首先,是不是半径实际上是“为飞鸦”从客户端向考生距离是多少? 反正......你需要找出一种算法来计算你所需要的基础上,两点之间的距离。
如果你希望系统是独立的,你需要有对点的坐标(纬度,经度)的值。 对于这一点,你可能需要与互联网连接和使用谷歌地图服务的基础上找到该点的地址坐标。 但是,一旦你在你的数据库,然后保存,你不需要互联网连接。
有用于基于坐标两点间的距离公式,你会很容易找到它:)