使用mysql经纬度算法查找附近的地点
在google maps上扒了一段很酷的SQL语句,根据经度和纬度去计算距离,从数据库中查询某范围以内的地点,并按照距离排序。以下是SQL语句,有兴趣的可以研究研究一下他的算法。
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
注意:latitude = 37 longitude = -122,distance < 25 miles,参数值可根据实际需要替换。如果要用kilometers代替miles,把3959替代为6371。
Thanks:
http://stackoverflow.com/questions/11112926/how-to-find-nearest-location-using-latitude-and-longitude-from-sql-database
https://developers.google.com/maps/articles/phpsqlsearch_v3
本文固定链接:http://www.penglig.com/post-346.html
本文由Cfans_gpl原创或编辑,互联分享,尊重版权,转载请以链接形式标明本文地址。
本文由Cfans_gpl原创或编辑,互联分享,尊重版权,转载请以链接形式标明本文地址。