2010-11-17 109 views
1

嘿,所有... 我已经接受了全球搜索项目的任务。 他们想要搜索图片的数据库,所有这些数据库都在mysql数据库中使用每张图片的long/lat 引用。按照经度和纬度排序mysql表上的结果,然后是纬度,而不是圆形半径

但是,他们的搜索标准有点特定。

简化表结构是: id INT汽车股份有限公司主要 imagePath VARCHAR 255 long十进制12,7 lat十进制12,7

我需要提供SQL语句开始长/纬度位置。 然后,他们想要接收34张图像,从最初的 长参考向南。一旦他们达到-90(地球的底部),弹出 超过1度向右/东,并搜索到北方90和 重复,直到找到34个图像。

什么让我感到困惑的是如何计算负增加变化..确保我们沿着地球'长'参考上下循环。

有没有人以前做过这个..? 我想在单个查询中做到这一点... (我已经看到了如何取得基于圆的半径的结果,但我的客户..保佑他们..不想这样做)

好的,回到谷歌!

思考...

的Tris ...

+1

提示:转换为整数并使用模运算创建排序顺序乘数,然后按经度排序,然后按纬度乘以排序顺序乘数。但是还有一些边缘情况需要照顾(等纬度和潜在的环绕+180 - > -180)。 – 2010-11-17 21:03:37

回答

1

输入是$ the_lat和$ the_long

SELECT * 
FROM table 
WHERE long > $the_long 
OR (long = $the_long AND lat >= $the_lat) 
ORDER BY long ASC, lat ASC 
LIMIT 34 

原样,这是一个单向搜索 - 它不会换行大约需要多长时间< $ the_long。

+0

哇,这么简单..! – Beertastic 2010-11-19 06:51:01

+0

我正在谷歌交替排序...或类似的东西! – Beertastic 2010-11-19 06:51:46