Cloudant 中的距离计算

Distance calculation in Cloudant

这是我要解决的问题。

客户通过 Node.js 应用程序管理的 API 发送他们的当前位置。 Cloudant 数据库存储坐标列表(几千个)。

获得的最佳方式是什么 a)所有坐标的列表和 b) 这些坐标中的每一个与客户位置的距离 c) 落在客户位置的 X km 半径范围内

已经为那些存储的坐标创建了地理空间索引。

速度和效率是关键,但有时它们可​​能是相反的品质。如果可能的话,我更愿意使用 Cloudant 中的原生函数而不是自定义代码。

在网站上查看,似乎在 cloudant 中已经有一些预构建的地理空间信息: https://docs.cloudant.com/geo.html#geospatial-indexing

过去的某个时候,我做的有点不同。我用搜索索引做到了: https://docs.cloudant.com/search.html 该索引将显示纬度和经度。然后,要查找距某个搜索点 25 英里以内的任何文档,您可以编写一个 lucene 查询,将 lat 从 [search_lat-25miles、search_lat+25miles] 和 lng 从 [search_lng-25miles, search_lat+25英里]。 使用这种方法,我能够使用原始纬度和经度来做到这一点。看起来 cloudant 有一些新功能可以使地理空间搜索也更简单一些。