列出某个位置半径范围内的点?

时间:2014-07-23 23:47:34

标签: php mysql algorithm location radius

我正在为iPhone应用制作API。简而言之,我将位置存储在数据库中(Lat / long)。当用户发送对点内的请求时,比方说,半径为五(5)英里,我需要使用算法只给我MySQL数据库中的那些点。

  1. 如何在坐标中将里程转换为分钟? IE,考虑到经度的逐渐减少的性质,我将多少添加到坐标我搜索到与用户位置进行比较?
  2. 2当您前往地球的不同点时,考虑经度/纬度变化的方式,有什么好的公式?

    谢谢:)

1 个答案:

答案 0 :(得分:0)

您从未提及过如何存储数据,因此我无法提供实际代码。这是我想出的:

  1. 将所有数据导入一些高效的数据库。优化它以有效提升某个X / Y范围内的坐标
  2. 选择10x10英里广场内的所有坐标。将它们导入数组
  3. 使用foreach浏览该数组并使用距离公式(distance=sqrt((x-x)^2+(y-y)^2))。如果在5英里内,将其添加到另一个阵列。如果没有,请忽略它。
  4. 我不知道在一个小位置有数千个坐标会有多高效;您可能需要对其进行微调(例如,如果您找到最近的位置,请首先尝试使用较小的方框)。

    我必须同意Darren的观点,即谷歌地图API可能更适合,但我之前没有使用它。