我有这种格式的纬度和经度: 15.1393658,76.92150059999994,13.0873783,77.41112120000003,14.7017498,77.59016529999997
如果我输入另一个纬度和经度,如lat = 13.0874193,lan = 77.41100640000002,则必须提供上面lat lan的最近lat lan。 我使用了Haversine Formula, $ 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但不工作。 所以请任何人帮助解决这个问题
答案 0 :(得分:1)
您需要的是将距离转换为经度和纬度,根据大致在边界框中的条目进行过滤,然后进行更精确的距离过滤。这是一篇很好的论文,解释了如何做到这一切: http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL