【发布时间】:2017-05-20 15:36:04
【问题描述】:
我是一般的编码新手,并且正在使用 ASP.NET 进行社交网络项目。我必须想出一种方法来根据他们在个人资料中设置的位置来显示附近的用户。它涉及从 SQLServer 检索那段数据(他们设置的位置),因此我可以显示相关用户。
我该怎么做呢?我使用 C# 作为控制器,需要在 html 文档中引用它。我很感激能得到任何帮助。
谢谢!!!
【问题讨论】:
标签: c# html asp.net sql-server location
我是一般的编码新手,并且正在使用 ASP.NET 进行社交网络项目。我必须想出一种方法来根据他们在个人资料中设置的位置来显示附近的用户。它涉及从 SQLServer 检索那段数据(他们设置的位置),因此我可以显示相关用户。
我该怎么做呢?我使用 C# 作为控制器,需要在 html 文档中引用它。我很感激能得到任何帮助。
谢谢!!!
【问题讨论】:
标签: c# html asp.net sql-server location
如果是一个广泛的话题,那么我建议你先从数据库开始,然后再担心 UI。
假设您有一个用户表,并且他们的当前位置已登录到数据库中。
现在,您想查找半径 5 英里内的所有内容。考虑以下。注意 @Users 只是一个表变量,将被您的实际表替换。
Declare @Users table (ID int,UserName varchar(25),Lat float,Lng float)
Insert Into @Users values
(1,'James',41.721913,-71.265238),
(2,'Joseph',41.709084,-71.386673),
(3,'Mary',41.709084,-71.386673),
(4,'Sam',41.68745,-71.270122),
(5,'Sally',41.756903,-71.222215),
(6,'John',41.744068,-71.315024) -- Let's assume this is my current position
Declare @MyLat float = 41.744068
Declare @MyLng float = -71.315024
Declare @Miles float = 5
Select MilesAway = [dbo].[udf-Geo-Calc-Miles] (@MyLat,@MyLng,A.Lat,A.Lng)
,A.*
From @Users A
Where [dbo].[udf-Geo-Calc-Miles] (@MyLat,@MyLng,A.Lat,A.Lng) <= @Miles
Order by 1
返回
现在,我使用 UDF 来计算里程(可以转换为米)
CREATE Function [dbo].[udf-geo-Calc-Miles] (@Lat1 float,@Lng1 float,@Lat2 Float,@Lng2 float)
Returns Float as
Begin
Declare @Miles Float = (Sin(Radians(@Lat1)) * Sin(Radians(@Lat2))) + (Cos(Radians(@Lat1)) * Cos(Radians(@Lat2)) * Cos(Radians(@Lng2) - Radians(@Lng1)))
Return Case When @Miles is null then 0 else abs((3958.75 * Atan(Sqrt(1 - power(@Miles, 2)) / @Miles))) end
End
【讨论】: