2015-12-25 258 views
-2

在我的ASP.NET MVC应用5我有一个ApiController(的WebAPI)与返回按名称排序的机构单位名单(存储在我的数据库)的方法。它工作正常。计算距离

现在我希望能够通过距离排序这个列表。因此,使用Web服务的移动应用程序将发送用户位置作为参数,并且在服务器端我需要计算用户位置与每个机构位置之间的距离。

我可以使用哪些工具来做到这一点? Google Maps API?另一个?我已经搜索,但没有发现任何有用的... 如果有人知道在哪里可以找到如何开始这个例子,这将是非常有益的。

更新

这里有一些更多的细节:

  • 我的数据库是SQL Server 2014;
  • 每个机构已经有存储在我的数据库中的经度和纬度;

我宁愿让车的最短路径的距离......

+1

空间数据... – dotctor

+1

是否存储在数据库中的机构有一个地理位置? (经度,纬度)?如果是这样,这可能帮助你:http://stackoverflow.com/questions/6366408/calculating-distance-between-two-latitude-and-longitude-geocoordinates – jpgrassi

回答

1

假设你在数据库中存储(纬度经度+)各设立的地理位置,它是非常容易的计算使用Harvesine formula(以及其中的一些online demo)的2个点之间的距离。一旦你知道了距离,你将能够对结果进行分类。您尚未提供有关您正在使用的数据库的任何详细信息,但有些数据存储库已经提供了这种开箱即用的计算方法,因此您无需在客户端上进行这些计算。

如果在另一方面,你不要你的机构的坐标存储在您的数据存储,那么第一步当然会是一些在线服务得到它们。其中有很多,只要选择最适合你的那个。很明显,在这种情况下,这种计算的性能取决于第三方服务的速度。

+0

感谢。你能检查我的更新吗? – amp

+0

您用于存储地理位置的列类型是什么?您是使用特殊的GEOGRAPHY列类型还是仅使用了2列经纬度?就汽车最短距离而言,恐怕在这种情况下,您可能需要使用一些第三方服务,这些服务的道路信息要多得多,而不仅仅是点的地理位置。您可以检出Google地图提供的可用API。 –

+0

我只有两列经纬度。您将检查Google Maps API。 – amp