所以情况如下:我有一个客户表和一个商店表,每个表都有自己的地址。当一位顾客在寻找一家商店时,我想根据他们与他的地址的距离对商店进行排序。我使用谷歌地图API获取地址之间的距离。有什么想法吗?谢谢*我使用微软SQL服务器和asp.net。
我过去曾使用固有的SQL Server DbGeography数学来做过类似的事情。假设您已经Imports System.Data.Entity.Spatial
,那么:
Dim dblDistance As Double
Dim geoHouseLocation As DbGeography
Dim geoStoreLocation As DbGeography ' = appropriate table value
geoHouseLocation = DbGeogrpahy.FromText("POINT(" & stLong & " " & stLat & ")")
dblDistance = geoHouseLocation.Distance(geoStoreLocation)
如果您希望使用SQL来计算,那么我们需要知道Lat/Long字段的格式(它们是以DbGeography类型、字符串还是数字等形式存储的?)例如,如果您的Geography数据类型将房屋和商店的点位置保存在表中,那么下面的查询将按升序为您提供离给定房子最近的商店:
SELECT tblHouses.HouseID, tblStores.StoreName, tblHouses.GeoPoint.STDistance(tblStores.GeoPoint) AS GeoDistance
FROM tblHouses, tblStores
WHERE tblHouses.HouseID = 1
ORDER BY tblHouses.GeoPoint.STDistance(tblStores.GeoPoint) ASC