使用VB.Net和Bing Maps进行搜索时,显示10个以上的结果

时间:2016-12-20 19:01:56

标签: vb.net bing-maps bing

我创建了一个引用Microsoft以下链接的vb.net代码。 https://msdn.microsoft.com/en-us/library/dd221354.aspx

在纽约搜索说比萨饼时,有没有办法获得超过10个结果?如果我在纽约搜索比萨饼,我只得到10个地点的结果。我怎样才能得到所有这些。也可以在请求中获取地址吗?以下是我的代码。

Imports Bing.SearchService

Public Class Form1

Private Sub btnGeoCode_Click(sender As System.Object, e As System.EventArgs) Handles btnGeoCode.Click
    test(TextBox1.Text)
End Sub

Public Sub test(ByVal keywordLocation As String)

    Dim Key As String = ""
    Dim searchRequest As New SearchRequest

    'credentials  
    searchRequest.Credentials = New SearchService.Credentials()
    searchRequest.Credentials.ApplicationId = Key

    ' Create the search query
    Dim ssQuery As New StructuredSearchQuery
    Dim parts As String() = keywordLocation.Split(";")

    ssQuery.Keyword = parts(0)
    ssQuery.Location = parts(1)
    searchRequest.StructuredQuery = ssQuery


    Dim searchService As New SearchServiceClient
    Dim SearchResponse As SearchResponse = searchService.Search(searchRequest)

    If SearchResponse.ResultSets(0).Results.Length > 0 Then

        Dim lstName As New ArrayList
        Dim lstAddress As New ArrayList

        For i As Integer = 0 To SearchResponse.ResultSets(0).Results.Length - 1

            lstName.Add(SearchResponse.ResultSets(0).Results(i).Name)
            lstAddress.Add(SearchResponse.ResultSets(0).Results(i).LocationData)

        Next

    End If

End Sub

End Class

2 个答案:

答案 0 :(得分:0)

你可以这样做吗。

Public Sub test(ByVal keywordLocation As String)

    Dim Key As String = ""
    Dim searchRequest As New SearchRequest

    'credentials  
    searchRequest.Credentials = New SearchService.Credentials()
    searchRequest.Credentials.ApplicationId = Key

    ' Create the search query
    Dim ssQuery As New StructuredSearchQuery
    Dim parts As String() = keywordLocation.Split(";")

    ssQuery.Keyword = parts(0)
    ssQuery.Location = parts(1)
    searchRequest.StructuredQuery = ssQuery


    Dim searchService As New SearchServiceClient
    Dim SearchResponse As SearchResponse = searchService.Search(searchRequest)

    If SearchResponse.ResultSets(0).Results.Length > 0 Then

        Dim lstName As New ArrayList
        Dim lstAddress As New ArrayList


            lstName.Add(SearchResponse.ResultSets(0).Results(i).Name)
            lstAddress.Add(SearchResponse.ResultSets(0).Results(i).LocationData)



    End If

End Sub

End Class

答案 1 :(得分:0)

看起来您正在使用传统的Bing Maps SOAP服务。通过设置“计数”选项,您可以使用搜索服务返回最多25个结果:

searchRequest.SearchOptions = new SearchService.SearchOptions();
searchRequest.SearchOptions.Count = 25;

没有选项可以返回查询的“where”组件的地址。但是,您可以查看已解析的查询值,这可能会提供您需要的信息。如果需要中心坐标,可以对该信息进行地理编码。

所有这些说明,Bing地图肥皂服务即将结束,并将于2017年6月底弃用。这些服务大约在6年前被Bing Maps REST服务所取代。但是,没有服务可以为兴趣点和商家信息提供免费表单查询。有一个单独的服务,您可以搜索执行附近搜索的数据源并根据类别进行过滤。您将首先对查询的“where”部分进行地理编码,然后使用其坐标对附近的兴趣点进行径向搜索。以下是一些有用的资源:

https://msdn.microsoft.com/en-us/library/ff701713.aspx

https://github.com/Microsoft/BingMapsRESTToolkit/

https://msdn.microsoft.com/en-us/library/hh478189.aspx

https://msdn.microsoft.com/en-us/library/gg585126.aspx

https://code.msdn.microsoft.com/Augmented-Reality-with-bcb17045?redir=0(显示如何在.NET中使用Bing Spatial Data Services)

目前还没有针对Bing Spatial Data Services的.NET工具包,但很快就会有一个。

相关问题