javascript - 按接近度对坐标(纬度和经度)结果进行排序

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

我有一个页面在 map (谷歌地图)中加载了很多标记。

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

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

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


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

select id, name, lat, long from whatever;

我想要的是:

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

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

最佳答案

古老的毕达哥拉斯是您的好 friend :假设我们从坐标 (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

关于javascript - 按接近度对坐标(纬度和经度)结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25813346/

相关文章:

javascript - 如何使用 jquery/javascript 格式化时间

javascript - 删除非 SVG slider

mysql - tomcat7:无法加载 JDBC 驱动程序类 [com.mysql.jdbc.Driver]

php - Web 应用程序中多个用户的访问控制

sql - 使用SQL将有向边转换为无向边

c# - 如何以最快的方式处理 400K 数据的 foreach/group by?

sql - 如何重置Sql Server 2008数据库?

javascript - 搜索数据库以使用两个javascript变量将数字返回给javascript

MySQL集群: How to decode/interpret binary logs?

javascript - 我们如何在 Firestore 数据库中搜索 5,000 个用户?