Google maps Mongodb地理空间索引与谷歌地图方向服务

Google maps Mongodb地理空间索引与谷歌地图方向服务,google-maps,mongodb,google-maps-api-3,geospatial,Google Maps,Mongodb,Google Maps Api 3,Geospatial,我最近参与了一个关于基于位置的服务的小项目,我的目的是在请求乘客(支持GPS的Android手机)的给定半径内找到最近的驾驶室(安装了GPS)。我想使用MongoDB的地理空间索引,但结果表明,地理空间索引适用于横向长度,它们计算两点之间的位移,而不是距离。在我的例子中,搜索被限制在一个城市内,我不得不去谷歌地图方向服务,因为它告诉我在路上的距离,估计需要的时间等等 这是否意味着只有当位移足够大,距离和位移基本相同时,地理空间索引才有意义?地理空间索引的目标是基于多维空间上的位置进行快速数据检索



我最近参与了一个关于基于位置的服务的小项目,我的目的是在请求乘客(支持GPS的Android手机)的给定半径内找到最近的驾驶室(安装了GPS)。我想使用MongoDB的地理空间索引,但结果表明,地理空间索引适用于横向长度,它们计算两点之间的位移,而不是距离。在我的例子中,搜索被限制在一个城市内,我不得不去谷歌地图方向服务,因为它告诉我在路上的距离,估计需要的时间等等


这是否意味着只有当位移足够大,距离和位移基本相同时,地理空间索引才有意义?

地理空间索引的目标是基于多维空间上的位置进行快速数据检索。如果MongoDB数据库中有驾驶室位置数据,您可以使用地理空间索引快速选择一组简化的驾驶室,这些驾驶室很可能是最近的,但您仍然必须使用道路网络上的算法计算道路上的距离(以及最终的驾驶时间)

例如,您知道,如果最近的(直线)驾驶室距离您20公里,则您知道20公里半径以外的任何驾驶室肯定会比您找到的第一个驾驶室更远(在道路上),因此您对它们不感兴趣。
然后,您可以使用MongoDB spatial index获取半径为20公里的所有出租车,然后您可以找到其中哪一辆车的距离最小。

同意,然后使用Google Maps API距离矩阵查找数据子集之间的距离。@pqnet感谢您的回复,但21公里排量的驾驶室实际上可能比20公里排量的驾驶室更靠近道路(想象21公里的直线道路和20公里的弯曲道路)…MongoDB不知道这一点…这正是我的问题:(曲线道路不能比直线道路短。这是一个基本的三角形属性。至少在欧几里德空间:因为你在准球面上,你可能需要计算大地坐标(或者至少是它的下限),但你仍然可以确定从A直走到B比从A直走到B的任何路径都要短或相等。比较驾驶路线以找到“最近的车”严格来说,这不是一个地理空间查询,它是对几个因素的评估,包括:行驶距离、旅行时间和交通流限制。使用快速地理搜索来缩小候选范围以提供给搜索引擎将是一个很好的方法(由@ManoMarks指出的漂亮API!)。