Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我有一个asp.net.asmx Web服务,我需要返回与查询Web服务的客户端最近的地址列表_Asp.net_Vb.net_Visual Studio 2010_.net 3.5_Asmx - Fatal编程技术网

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

我有一个asp.net.asmx Web服务,我需要返回与查询Web服务的客户端最近的地址列表,asp.net,vb.net,visual-studio-2010,.net-3.5,asmx,Asp.net,Vb.net,Visual Studio 2010,.net 3.5,Asmx,我目前有一个在visual basic中构建的Web服务,作为visual Studio 2010中的asmx Web服务。目前,当我使用android应用程序查询Web服务时,我从数据库中获得了指定数量的地址。我需要的是Android应用程序将用户的当前位置传递给Web服务,并让它返回数据库中10个最近地址的列表,但我如何做到这一点 下面是我对数据库进行查询的方法 <WebMethod()> _ Public Function GetFuelStops(ByVal skip As

我目前有一个在visual basic中构建的Web服务,作为visual Studio 2010中的asmx Web服务。目前,当我使用android应用程序查询Web服务时,我从数据库中获得了指定数量的地址。我需要的是Android应用程序将用户的当前位置传递给Web服务,并让它返回数据库中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()

您的应用程序需要启用GPS,GPS将触发当前位置坐标,即纬度和经度

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

一旦掌握了所有纬度/经度值,就需要在查询中使用sin/cos公式从数据库返回前5或前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()
干杯