2017-05-24 131 views
-1

我有这种格式的纬度和经度: 15.1393658,76.92150059999994,13.0873783,77.41112120000003,14.7017498,77.59016529999997获得最近的纬度和经度

如果我进入了另一个纬度和经度纬度一样= 13.0874193,LAN = 77.41100640000002他们必须给予最接近的lat lan以上的lat lan。 我已经使用Haversine公式, $ connection = Yii :: $ app-> getDb();

$command = $connection->createCommand(' 
     SELECT fpro_userid, 6371 * 2 * ASIN(SQRT(POWER(SIN(('.$user_lat.' - abs('.$new_string.')) * pi()/180/2),2) + COS('.$user_lan.' * pi()/180) * COS(abs('.$new_string.') * pi()/180) * POWER(SIN(('.$user_lan.' - '.$new_string.') * pi()/180/2), 2))) as distance FROM farm_profile having distance < 19.2 ORDER BY distance 
    '); 

    $result = $command->queryAll(); 

在PHP中,但不工作。 所以请任何人帮助解决这个问题

+1

请告诉我们你真正得到了什么错误。 “不工作”不会帮助我们。 – prgrm

回答

1

你需要的是将距离转换成经度和纬度的度数,基于那些约束条件大致在边界框中的条目进行过滤,然后做一个更精确的距离过滤。这里有很好的论文解释了如何做到这一点: http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL

+0

阅读这篇文章[为什么连接不好?](https://meta.stackexchange.com/q/7515) –

+0

为什么? @Deep 3015 –

+0

这[解释](https://meta.stackexchange.com/a/7521)。如果您在回答中发布了jsfiddle链接,则会生成警报,说明在答案中添加了相关代码。所以在这里添加**链接**,但也添加了一些必要的代码。为了将来的读者保存,外部链接是不可预测的。我希望你能理解 –