优化必应地图地理编码和路线映射请求

7
我有一个包含订单和每个订单相关位置的数据库。目前,当用户登录时,我正在使用Bing Maps API对每个订单位置进行地理编码,然后计算与登录用户之间的驾车距离。基于这些距离,用户可以通过下拉框指定最大距离,并在网格视图中显示结果。但是,处理超过100个订单时,这个过程变得非常缓慢。我希望能够优化Bing查询、可能缓存结果(以便它们可以被重新使用而不需要重新访问Bing Maps API),或者利用Ajax来以某种方式后台处理订单。谢谢。
2个回答

1

我计划在不久的将来做类似的事情,所以我有一些建议,但目前没有实际的代码可以分享。希望这对你有用。

我打算在我的数据库中存储每个项目的纬度/经度(只需要进行一次地理编码)。为了选择距离某个点一定距离内的项目,我将计算位于我的中心点的'x'英里北/南/东/西的纬度/经度数字。然后,选择变得简单,仅需要挑选那些纬度/经度值落在我的矩形区域内的记录。

是的,我知道从技术上讲,我应该使用圆来精确控制距离,但这样更容易、更快速。如果您确实需要使用圆来限制更精确的距离,则首先使用此方法,然后使用更复杂的计算方法来清除在角落之外的项目。

我不熟悉Bing的许可证条款,但如果我记得正确的话,关于Google,您需要拥有付费(商业)许可证才能存储地理编码的结果,而且价格不菲。因此,这可能会抵消我所提供建议的任何价值:(

编辑:我仔细阅读了问题,发现它谈论的是驾驶英里数,而不是直线英里数。因此,我的答案并不适用,除非您想将其用作缩小必须进行的驾驶距离计算数量的方法。

另外,在地理编码和许可证方面,您可以查看价格相当便宜的geocoder.us


0

您可能想要做的是创建一个最小生成树,假设用户具有相同的目的地位置。 MST仍然是O(V^2),但是您实际上正在缓存许多最短路径,因为其中许多路径将重复使用相同的道路。

另一个选择是先使用线性距离来估计代替道路里程,但这完全取决于您向用户返回的数据。

祝您好运!


最小生成树如何帮助你找到最短路径?如何决定是否可以沿着最小生成树走并使用“缓存”? - Karussell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接