Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 计算距离_Php_Html_Gis_Geospatial_Distance - Fatal编程技术网

Php 计算距离

Php 计算距离,php,html,gis,geospatial,distance,Php,Html,Gis,Geospatial,Distance,我正在设计一个招聘数据库,我需要它来执行多个任务,这些任务都涉及整合一种计算距离的方法: 1计算候选人与客户的距离 2计算任何一天可供工作的候选人半径范围内的客户 3计算客户半径范围内具有该空缺的正确资格的候选人人数 正如你所见,我需要用两种主要方法计算距离1半径2乌鸦飞,我更喜欢精确的距离,但第一种方法可以。 我知道我可以集成谷歌地图或其他基于网络的地图,但我希望该系统是独立的,这样它就可以在没有互联网连接的情况下运行。 该系统将有一个HTML5前端,后端是Mysql和PHP 谢谢你,比亚吉奥

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

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

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

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

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


谢谢你,比亚吉奥首先,半径实际上不是从客户到候选人的“乌鸦般”距离吗?无论如何,你需要找出一个算法,根据点之间的距离计算出你需要的东西

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


有一个基于坐标计算两点之间距离的公式,您很容易找到它:

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

6371*acos(cos(LatitudeA)*cos(LatitudeB)*cos(longitudeB-longitudeA)+sin(LatitudeA)*sin(latitudeB))
当然,这是一个以公里为单位的近似值

Wich可通过以下方式转换为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-value客户机-x-value候选客户机²+y-value客户机-y-value候选客户机²。你试过搜索吗?半径就像乌鸦一样…6371代表什么?6371是地球的半径,单位为公里。这个值是平均值,因为地球当然不是一个完美的球体。查看维基百科,了解更多信息:在我们之间,地球并不完全是一个球体。但我会原谅你的+亲爱的所有人谢谢你的回复,我有公式,是的,我正在寻找的部分是作为乌鸦苍蝇。半径数据库中的第二部分计算与客户机的距离,以便候选人按正确的顺序出现。我要找的是用PHP或其他语言编写的这个过程的编程脚本??这个网站已经得到了我所需要的,但我需要的过程编码和一种获得免费地图的方式,我可以插入数据库,并使用它来绘制信息,有什么想法吗?