我正在开发一个职位门户,最终用户将根据他们的位置和接近半径搜索工作。目前,REST API由SLIM和MySQL提供支持。 在Jobs表中,每行都有纬度和经度。我在这里搜索了这个,偶然发现了Geo Distance search with MySQL。
SELECT latitude, longitude, SQRT(
POW(69.1 * (latitude - $lat), 2) +
POW(69.1 * ($long - $long) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < 25 ORDER BY distance;
Where
$lat = User latitude
$long = User longitude
现在我还有两个问题。
如果您可以为搜索性能提出任何可能有用的建议。
答案 0 :(得分:7)
SELECT latitude, longitude, SQRT(
POW(69.1 * (latitude - $lat), 2) +
POW(69.1 * ($long - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < 25 ORDER BY distance;
哪里
$ lat =用户纬度
$ long =用户经度
答案 1 :(得分:2)
$(document).ready(function(){
$(".main_box").on("mousedown",function(){
$(document).on("mousemove",function(event){
$(".dragable_box").css({
left: event.pageX,
top: event.pageY
})
})
})
})
答案 2 :(得分:0)
我已经离开了 -
SELECT id,name,lat,lng, ROUND(( 6371 * acos( cos( radians($lat) ) * cos( radians( lat ) ) * cos( radians( lng ) — radians($lng) ) + sin( radians($lat) ) * sin( radians( lat ) ) ) ),(2) ) AS distance FROM jobs HAVING distance < 50 ORDER BY distance;
我已经对数据进行了基准测试,发现这比Mukesh的答案略快,比@jision的答案好2倍。