在Stack Overflow上有一些像这样的问题,但因为我找不到任何足够相似的问题让我跟随。
我希望从db中选择距目标x英里的行。
示例表列:
| city_name(varchar) | lat(decimal) | lon(decimal) |
查询效果我正在寻找(使用php或mysql)
$target_lat = ;
$target_lon = ;
"SELECT table.city_name WHERE (table.lat,table.lon) LESS THAN 20 MILES FROM ($target_lat,$target_lon")
显然我不希望查询采用这种结构! (我从未在mysql中使用Pi等...)
答案 0 :(得分:3)
听起来你正在寻找mySql的地理空间包。这里列出的功能允许在两个纬度/长点之间进行距离检查。请记住,由于地球的曲率,常规距离计算不适用于纬度/经度。 =)
答案 1 :(得分:1)
答案 2 :(得分:0)
你会在谷歌搜索“mysql radius search”
中找到许多代码片段这里复制它们有点太长了。
修改:http://spinczyk.net/blog/2009/10/04/radius-search-with-google-maps-and-mysql/
答案 3 :(得分:0)
毕达哥拉斯定理指出,直角三角形的斜边长度的平方等于另外两边的平方和。
C^2 = A^2 + B^2
C = SQRT(A^2 + B^2)
在这种情况下,其他边的长度由lat值和long值的差值决定。在短距离内,这将给你一个非常好的近似。但是,这仍然没有给你英里,这是一个更加困难的转换,因为lat / long和miles之间没有固定的关系。相反,经度之间的距离随纬度的变化而变化。