我有一个 asp.net .asmx Web 服务,我需要返回最接近查询 Web 服务的客户端的地址列表

Posted

技术标签:

【中文标题】我有一个 asp.net .asmx Web 服务,我需要返回最接近查询 Web 服务的客户端的地址列表【英文标题】:I have a asp.net .asmx webservice and I need to return a list of Address's that are closest to the client querying the webservice 【发布时间】:2013-04-17 08:45:14 【问题描述】:

我目前有一个 Web 服务,我在 Visual Basic 中作为 Visual Studio 2010 中的 asmx Web 服务构建。目前,当我使用我的 android 应用程序查询 Web 服务时,我从数据库中获得了指定数量的地址。我需要的是 Android 应用程序将用户当前位置传递给网络服务,并让它返回数据库中最近的 10 个地址的列表,但我该怎么做呢?

下面是我查询数据库的方法。

<WebMethod()> _
Public Function GetFuelStops(ByVal skip As Integer, ByVal take As Integer) As FuelStop()
    Dim resultList = New List(Of FuelStop)()

    Using sqlCon As New SqlConnection()
        sqlCon.ConnectionString = "Data Source=(local);Initial Catalog=****;User ID=****;Password=***(***"
        Dim sql = <sql>
            SELECT
                [Physical_Address_Street]
                , [Physical_Address_Local]
                , [Physical_Address_State]
                , [Physical_Address_Zip]
                , [Phone_Number]
            FROM Gas_Stations
            WHERE Location_Type = 1
            </sql>

        Dim command As New SqlCommand()
        command.CommandText = CStr(sql)
        command.Connection = sqlCon
        sqlCon.Open()

        Using reader = command.ExecuteReader()
            While reader.Read()
                Dim fuelStop = New FuelStop()
                fuelStop.Physical_Address_Street = reader.GetString(0)
                fuelStop.Physical_Address_Local = reader.GetString(1)
                fuelStop.Physical_Address_State = reader.GetString(2)
                fuelStop.Physical_Address_Zip = reader.GetString(3)
                fuelStop.Phone_Number = reader.GetString(4)

                resultList.Add(fuelStop)
            End While
        End Using
    End Using
    Return resultList.Skip(skip).Take(take).ToArray()

【问题讨论】:

【参考方案1】:

您的应用需要启用 GPS(这将触发当前位置坐标),即纬度和经度。

同时,您的数据库表应该有每个地址的纬度和经度值,因为这些纬度和经度值将用于距离比较。

一旦您掌握了所有纬度/经度值,您需要在查询中使用 sin/cos 公式从数据库中返回前 5 或前 10 条记录。

干杯

【讨论】:

以上是关于我有一个 asp.net .asmx Web 服务,我需要返回最接近查询 Web 服务的客户端的地址列表的主要内容,如果未能解决你的问题,请参考以下文章

使用 ajax() 和 jsonp 调用 asp.net 远程 Web 服务 .asmx 时出现意外令牌 <

jQuery Ajax 到 asp.net asmx web 服务抛出请求格式无效:application/json

从 Web 服务 (asmx) 页面引用 asp.net 页面上的字段

如何使用 Retrofit 在 android 中调用图像上传 Web 服务 (ASP.NET) .asmx 文件

asp.net asmx Web 服务返回 xml 而不是 json

如何使用jQuery调用带有参数的asp.net asmx web服务来获取响应