0

我正在使用 hasrsine 查询来提取最接近移动应用程序提供的纬度/经度的位置。

查询如下所示:

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

我究竟做错了什么?

4

2 回答 2

2

我可能遗漏了一些东西,但是如果您想将英里转换为英尺,您不想乘以 5280 而不是除以吗?

于 2012-10-27T00:18:07.727 回答
2

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

$distance = (float)( $dist_x * 5280 );
于 2012-10-27T00:37:55.977 回答