【发布时间】:2016-05-06 09:29:17
【问题描述】:
我有一个模型包含 geojson 点。使用弹簧数据查找最近的位置非常容易,但如何检索给定路线的最近位置?
我正在从 google 获取路线信息:
【问题讨论】:
-
到目前为止你尝试了什么?
我有一个模型包含 geojson 点。使用弹簧数据查找最近的位置非常容易,但如何检索给定路线的最近位置?
我正在从 google 获取路线信息:
【问题讨论】:
来自地图 googleapi 的路线信息被分解为具有纬度/经度坐标的起始位置和结束位置的步骤。
计算模型中的点到路线中所有起点/终点位置的距离可以衡量该点与路线的距离。距离路线起点/终点的最小“距离”将是距离路线最近的位置。
当计算的距离大于之前的最小累积距离时,您可以通过丢弃任何点来优化计算。
【讨论】:
首先,你需要得到这个结果,然后把它放到一个包含 Lat+Lng 的数组中。
其次,在您的存储库中创建一个方法,其中包含您要使用“Within”一词搜索的参数。
例子:
List<MyObject> findByLocationWithin(Box box);
这个方法代表各自的条件:
{"location" : {"$geoWithin" : {"$box" : [ [x1, y1], [x2, y2]}}}
如果您需要更多信息,请访问以下链接:
http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongodb.repositories.queries
https://docs.mongodb.org/manual/reference/operator/query/box/
【讨论】:
Google 地图 API 返回路线的“步数”,其中包含该路段边缘的坐标。 您可以使用这些边在该直线段上创建外插点。让我们称它们为 p1,p2,p3,p4...pN。 然后您在数据库中针对这些点运行 $near 查询,您将 获取该路线附近最近的位置。
开放的街道地图数据库提供路线坐标信息, 您可以使用它来补充您的数据。 详细答案在这里:Get exact geo coordinates along an entire route, Google Maps or OpenStreetMap
【讨论】: