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

时间:2011-05-12 19:33:38

标签: google-maps google-maps-api-3 bing-maps

我想获得一个我可能在A点和B点之间传递的所有城市的列表

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

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

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

我想向用户提供一系列可考虑的航路点(兴趣点,历史遗址,公园等)

任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:3)

我相信你需要分两步完成这个过程:

第一步是计算一条代表A和B之间路线的折线(如你所说,那是显而易见的)。您可以使用Bing Maps 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内的所有位置。虽然有许多网络服务允许您查询位于个人点x距离内的位置(例如,包括Bing Maps搜索服务和geonames findNearby服务),但我不知道任何提供此功能的Web服务,因此您必须自己提供。

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

SELECT * FROM allCountries WHERE Location.STDistance(@RoutePath)< = 1000;

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