通过接近度对坐标(纬度和长度)的结果进行排序

时间:2014-09-12 17:05:22

标签: javascript mysql sql google-maps google-maps-api-3

我有一个页面可以在地图中加载很多标记(Google地图)。

单击时标记打开InfoWindows,其中包含“上一个”和“下一个”链接,用户可以使用这些链接来导航标记。现在我没有使用任何特定的顺序,当下一个/ prev标记太远时,地图会移动到整个地方。

我想要做的是以某种方式使用坐标,查询已经返回按邻近度排序的结果(lat和long的某种组合),以便当用户从一个移动时,地图移动“更少”标记到下一个。

我可能有也可能没有中心参考点来计算距离。我需要一个吗?


编辑(更多信息): 想象一下,我有一个查询,如:

select id, name, lat, long from whatever;

我希望有以下几点:

select id, name, somecalc(lat, long) as coord from whatever order by coord;

因此,当我在代码中处理此查询并生成标记时,每个“上一个”和“下一个”链接(我构建为链接列表)都会尽可能地使用最接近它们的标记。我需要的是上面的somecalc

1 个答案:

答案 0 :(得分:0)

好老毕达哥拉斯是你的朋友:我们说我们从coords开始(start_lat,start_long)。例如,这可能是随机的第一个结果。如果您想按照距离坐标来订购结果,只需

 SELECT 
      id, Name,
      SQRT(POW(start_lat - lat, 2) + POW(start_long - Long, 2)) AS distance
 FROM 
      whatever
 ORDER BY 
      distance