用hasrsine和float计算距离...有点工作

时间:2012-10-26 23:55:03

标签: php floating-point distance haversine

我正在使用一个半字查询来提取离移动应用提供的最靠近纬度/经度的位置。

查询如下所示:

SELECT *,(((acos(sin(($latitude *pi()/180)) * sin((`lat`*pi()/180))+cos(($latitude *pi()/180)) * cos((`lat`*pi()/180))* cos((($longitude - `lon`)*pi()/180))))*180/pi())*60*1.1515) AS dist_x 
FROM `work_places`
HAVING dist_x <= '1'
ORDER BY dist_x ASC
LIMIT 10

这工作得很好,而且我得到了我应该得到的位置。

问题在于将dist_x转换为用户可读的内容。现在,让我们说dist_x读作:0.00996273036944(floatval和字符串显示相同,所以它正确转换)

由于查询正在搜索1英里,我试图将其转换为英尺,因此我将dist_x除以5280。

       $distance = (float)( $dist_x / 5280 );

我得到的是$ distance = 1.88688075179E-6

我做错了什么?

2 个答案:

答案 0 :(得分:2)

我可能会遗漏一些东西,但是如果你想将里程转换为英尺,你不想乘以5280而不是分开吗?

答案 1 :(得分:2)

一英里是5280英尺,所以它应该是

$distance = (float)( $dist_x * 5280 );