所以情况是这样的:我有一张供顾客使用的桌子和一张供商店使用的桌子,每个都有自己的地址。当客户正在搜索商店时,我希望按照商店与他的地址的距离对商店进行排序。我使用谷歌地图 API 获得地址之间的距离。有任何想法吗?谢谢!* 我使用带有 asp.net 的 Microsoft SQL 服务器。
问问题
353 次
1 回答
0
过去,我使用固有的 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
于 2016-05-03T16:49:27.890 回答