【问题标题】:Sorting results of coordinates (lat and long) by proximity按邻近度对坐标(纬度和经度)的排序结果
【发布时间】:2014-11-06 22:21:12
【问题描述】:

我有一个在地图(谷歌地图)中加载大量标记的页面。

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

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

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


编辑(更多信息): 假设我有一个查询,例如:

select id, name, lat, long from whatever;

我想要以下几行:

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

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

【问题讨论】:

  • 您现有的代码是什么样的?您尝试过什么来实现这一点?有多少个标记?他们会改变吗?您是否需要在每次开始时对其进行动态排序,还是可以手动对输入数据进行排序以满足您的条件?
  • 我会添加更多信息。
  • 恐怕没有办法实现。

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


【解决方案1】:

老毕达哥拉斯是你的朋友:假设我们从坐标(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

【讨论】:

    猜你喜欢
    • 2012-07-09
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 2014-12-16
    相关资源
    最近更新 更多