首先,我不确定这个问题应该出现在 stackoverflow 或其他 stackexchange 网络中。所以如果错误的地方只是为我移动。
在DB或js中计算lat/lng的2个点之间的距离更好吗?由于谷歌地图提供了computeDistanceBetween()。这真的很容易使用,但我想如果我有 10000 行并且只有 5 行在距离内并显示到地图中。
任何想法?
首先,我不确定这个问题应该出现在 stackoverflow 或其他 stackexchange 网络中。所以如果错误的地方只是为我移动。
在DB或js中计算lat/lng的2个点之间的距离更好吗?由于谷歌地图提供了computeDistanceBetween()。这真的很容易使用,但我想如果我有 10000 行并且只有 5 行在距离内并显示到地图中。
任何想法?
如果您的问题只是关于应该在哪里计算,那么我更喜欢客户端。它简单、快速、更灵活和动态,并且您可以卸载您的服务器。
在不了解您的问题的情况下,我可能会在客户端(或“在 JS”中)执行计算密集型任务。通过在客户端之间分配它,这永远不会给您的服务器端应用程序带来太多负载。
当然,要选择最佳方法,您必须考虑许多变量。
您可以考虑的其他事项:
这取决于计算的频率。如果您的点是永久的,那么您可以在将行插入表格之前只计算一次所有需要的距离,并保存计算结果以供以后提供给客户。但是如果计算是可重复的并且点的坐标最终会改变,那么最好使用客户端计算。实际上,对于浏览器来说,执行一些 JavaScript 来计算距离,即使是很多点也不是那么难的任务。此外,如果您有大量输入数据,您可以考虑在客户端进行一些后台预计算并将结果缓存在 localStorage* 中,这样您的用户将永远不会等待。
* store.js可以帮助您确保跨浏览器的兼容性。
在哪里更好地计算距离完全取决于您的应用程序。如果您的客户有信息,那么在 JS 中会更好。
在这种情况下,您似乎正在尝试计算存储在数据库中的最接近给定点的点。使用地理空间索引的数据库肯定会更好地处理这个问题。
典型的算法使用简单的方法缩小结果集。在 x & y +/- 10KM 内,然后使用该结果集进行完整计算。
我会说如果您的信息在数据库中,那么请考虑为您的 DBMS 使用内置的地理空间工具。