2012-05-03 218 views
-1

我设计一个招聘数据库,我需要它来执行多项任务,所有涉及到整合计算距离的一种方式:)计算距离

1计算候选住在离客户的距离?

2)计算在任何给定日期可供工作的候选人范围内的客户?

3)计算具有客户半径范围内空位的正确资格的候选人人数。

正如你所看到的,我需要计算两种主要方式的距离1)半径2)当乌鸦飞翔时,我宁愿精确的距离,但第一个会做。 我知道我可以整合谷歌地图或其他一些基于网络的映射,但我希望系统能够独立运行,因此无需互联网连接即可运行。 系统将具有HTML5前端,后端位于Mysql和PHP中。

谢谢BIAGIO

+2

有已经有数百个这种性质的问题。你尝试过搜索吗? – eggyal

+0

半径*是*作为乌鸦... –

回答

6

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 ; 

有了,你可以计算两个点(人),当然确定一个点是否在其他半径之间的距离。

+0

6371代表什么? –

+0

6371是以公里为单位的地球半径。这个数值是一个平均值,因为地球不是一个完美的球体。有关维基百科的更多信息,请看:http://en.wikipedia.org/wiki/Earth_radius – grunk

+1

在我们之间,地球并不完全是一个球体。但我会原谅你的。 +1。 –

0

首先,是不是半径实际上是“为飞鸦”从客户端向考生距离是多少?无论如何,你需要根据点之间的距离来计算出你需要的算法。

如果您希望系统是独立的,您需要具有点的坐标值(纬度,经度)。为此,您可能需要和互联网连接以及使用像Google地图这样的服务来查找基于地点的坐标。但是,一旦你存储在你的分贝,你将不需要互联网连接。

有用于基于坐标两点间的距离公式,你会很容易找到它:)

+0

亲爱的所有感谢您的回复,我有公式,是我正在寻找的是乌鸦苍蝇的一部分。 (半径)数据库中的第二部分计算与客户的距离,以便候选人以正确的顺序出现。我一直在寻找的是这个过程在PHP或任何东西的编程脚本?本网站http://www.freemaptools.com/map-tools。HTM已经得到了我需要的东西,但我需要编码过程和获得免费地图的方法,我可以在数据库中插入并用于绘制信息,任何想法? – Biagio

2

只是一个想法:如果你的客户和候选人生活在一个非常有限的区域,我会使用一个矩形地图,并输入数据库中该地区所有城市的x和y值。

由于勾股定理,你可以说:

distance²=(x值的客户端 - x值候选人)²+(y值的客户端 - y值候选人)²