-1

首先,我不确定这个问题应该出现在 stackoverflow 或其他 stackexchange 网络中。所以如果错误的地方只是为我移动。

在DB或js中计算lat/lng的2个点之间的距离更好吗?由于谷歌地图提供了computeDistanceBetween()。这真的很容易使用,但我想如果我有 10000 行并且只有 5 行在距离内并显示到地图中。

任何想法?

4

4 回答 4

0

如果您的问题只是关于应该在哪里计算,那么我更喜欢客户端。它简单、快速、更灵活和动态,并且您可以卸载您的服务器。

于 2012-09-09T15:52:41.520 回答
0

在不了解您的问题的情况下,我可能会在客户端(或“在 JS”中)执行计算密集型任务。通过在客户端之间分配它,这永远不会给您的服务器端应用程序带来太多负载。

当然,要选择最佳方法,您必须考虑许多变量。

您可以考虑的其他事项:

  • 在服务器端执行并缓存结果,
  • 使用 google-api 并将其缓存在您的服务器上,
  • 还有很多很多...
于 2012-09-09T15:53:56.263 回答
0

这取决于计算的频率。如果您的点是永久的,那么您可以在将行插入表格之前只计算一次所有需要的距离,并保存计算结果以供以后提供给客户。但是如果计算是可重复的并且点的坐标最终会改变,那么最好使用客户端计算。实际上,对于浏览器来说,执行一些 JavaScript 来计算距离,即使是很多点也不是那么难的任务。此外,如果您有大量输入数据,您可以考虑在客户端进行一些后台预计算并将结果缓存在 localStorage* 中,这样您的用户将永远不会等待。

* store.js可以帮助您确保跨浏览器的兼容性。

于 2012-09-09T16:10:33.847 回答
0

在哪里更好地计算距离完全取决于您的应用程序。如果您的客户有信息,那么在 JS 中会更好。

在这种情况下,您似乎正在尝试计算存储在数据库中的最接近给定点的点。使用地理空间索引的数据库肯定会更好地处理这个问题。

典型的算法使用简单的方法缩小结果集。在 x & y +/- 10KM 内,然后使用该结果集进行完整计算。

我会说如果您的信息在数据库中,那么请考虑为您的 DBMS 使用内置的地理空间工具。

于 2012-09-09T16:11:46.617 回答