我有一个Facebook网站,供老人在英国寻找职业,但业主已要求邮政编码部分搜索到位,以及距离选择,以便他们可以搜索职业说5 10 15与原始邮政编码的距离。我将邮政编码和长和纬度存储在配置文件表中。
userid int(11)是NULL
profile_pic文本是NULL
资格文本是NULL
education int(11)是NULL
patient int(11)是NULL
carer int(11)是NULL
telephone varchar(50)是NULL
mobile varchar(50)是NULL
性别int(11)是NULL
profile_areas int(11)是NULL
type int(11)是NULL
care_cats int(11)没有
lng varchar(20)没有
lat varchar(20)否
我的问题是我如何创建这样的搜索即时翻转通过第三方搜索查找长和lat我需要给出距离avalble并显示与距离匹配的配置文件
答案 0 :(得分:0)
这是SQL语句,它将找到距离37,-122坐标25英里半径范围内最近的20个位置。它根据该行的纬度/经度和目标纬度/经度计算距离,然后仅询问距离值小于25的行,按距离对整个查询进行排序,并将其限制为20个结果。要按公里而不是英里搜索,请将3959替换为6371。
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;
来自:http://code.google.com/apis/maps/articles/phpsqlsearch_v3.html