谷歌地图 - 查找靠近我路线的城市



我想得到一份我在A点和B点之间可能经过的所有城市的清单

输入-
点 A 作为原点
B点作为目的地

输出:
A点和B点之间的路线(很明显)

距离我的路线小于X英里的城市/城镇/地点列表。

我想向用户展示一个需要考虑的可能航点列表(兴趣点、历史遗迹、公园等)

有什么想法吗?

我相信

你需要分两个阶段来做到这一点:

第一步是计算一条折线,表示 A 和 B 之间的路线(正如您所说,这很明显)。例如,您可以使用必应地图 REST (http://msdn.microsoft.com/en-us/library/ff701717.aspx) 或 SOAP (http://msdn.microsoft.com/en-us/library/cc966826.aspx) 路由服务来执行此操作。

从这些服务中的任何一个请求路由时,请确保指定希望将完整路由路径包含在结果中(REST 的 rpo 参数或 SOAP 的 RoutePathType.Points 参数)。这将为您提供用于构建路线路径的所有点的数组 - 否则您只会获得行程点的摘要(即仅包含路线上您需要执行某些操作的点 - 更改道路等)。

获得点数组后,第二步是确定位于这些点之间绘制的路径的距离 x 内的所有位置。虽然有许多 Web 服务允许您查询位于单个点 x 距离范围内的位置(例如,包括 Bing 地图搜索服务和 geonames findNear 服务),但我不知道有任何 Web 服务提供此功能,因此您必须自己提供。

一种方法是使用SQL Server 2008或SQL Server Azure,加载来自 http://download.geonames.org/export/dump/的geonames allNations数据转储。然后,您可以从路径中的点构造 LineString 几何图形,并使用如下查询查询数据库中的地点列表:

从位置.标准(@RoutePath) <= 1000 的所有国家/地区中选择 *;

Johannes Kebeck 发布了一个基于必应 SOAP 路由服务和 SQL Azure 的方法使用此方法的示例,您可以在此处找到: http://jkebeck.wordpress.com/2010/06/26/find-near-route-for-bing-maps-powered-by-sql-azure-spatial/

相关内容

最新更新