0

我正在设计一个招聘数据库,我需要它来执行几项任务,这些任务都涉及集成一种计算距离的方法:

1)计算候选人与客户的距离?

2) 计算任何一天可工作的候选人半径范围内的客户?

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

如您所见,我需要以两种主要方式计算距离 1)半径 2)当乌鸦飞过时,我更喜欢精确的距离,但第一种方法可以。我知道我可以集成谷歌地图或其他一些基于网络的地图,但我希望系统是独立的,这样它就可以在没有互联网连接的情况下运行。该系统将有一个 HTML5 前端,后端是 Mysql 和 PHP。

谢谢比亚乔

4

3 回答 3

9

两点之间的距离可以用以下公式计算:

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 ;

有了它,您可以计算两点(人)之间的距离,当然还可以确定一个点是否在另一个点的半径内。

于 2012-05-03T09:35:57.510 回答
2

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

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

距离² =(x 值客户端 - x 值候选)² +(y 值客户端 - y 值候选)²

于 2012-05-03T10:05:48.887 回答
0

首先,半径实际上不是从客户到候选人的“乌鸦飞行”距离吗?无论如何...您需要找出一种算法来根据点之间的距离计算您需要的东西。

如果您希望系统是独立的,您将需要具有点的坐标(纬度、经度)的值。为此,您可能需要互联网连接并使用谷歌地图等服务来根据点的地址查找坐标。但是,一旦您将其存储在您的数据库中,您将不需要互联网连接。

有一个公式可以根据坐标计算两点之间的距离,你会很容易找到它:)

于 2012-05-03T09:27:16.313 回答