获得最近的纬度和经度

时间:2017-05-24 06:48:54

标签: php sql google-maps haversine

我有这种格式的纬度和经度:   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但不工作。 所以请任何人帮助解决这个问题

1 个答案:

答案 0 :(得分:1)

您需要的是将距离转换为经度和纬度,根据大致在边界框中的条目进行过滤,然后进行更精确的距离过滤。这是一篇很好的论文,解释了如何做到这一切:     http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL