1

引用此https://developers.google.com/maps/documentation/places/#PlaceDetails 我期望 JSON 结果始终包含所有address_components详细信息。但是,我的一项搜索最终丢失了 street_number、postal_code 和其他一项。在智能感知中查看显示,其中一名address_components返回的人持有行政区域级别 2。

这让我陷入了一个循环,因为我一直希望返回那些原始值,即使它们可能是空的。我也像这样对预期回报进行硬编码:

array.result.address_components(0).long_name

由于我不能指望组件返回所有结果,因此我需要一种新方法来适当地访问它们并弄清楚当我丢失一些时该怎么做。

4

1 回答 1

0

这是我用来处理这个问题的案例陈述。它有效,但不确定它是否是最优雅的解决方案。

Dim street As String = ""
Dim city As String = ""
Dim state As String = ""
Dim country As String = ""
Dim zip As String = ""
Dim phone As String = ""
Dim website As String = ""

' No guareentee to the order of even if the data will be there so we check each type. '
For j = 0 To array.result.address_components.Length - 1
    Select Case array.result.address_components(j).types(0)
        Case "street_number"
            street += array.result.address_components(j).long_name()
        Case "route"
            street += " " & array.result.address_components(j).long_name()
        Case "locality"
            city = array.result.address_components(j).long_name()
        Case "administrative_area_level_1"
            state = array.result.address_components(j).long_name()
        Case "country"
            country = array.result.address_components(j).long_name()
        Case "postal_code"
            zip = array.result.address_components(j).long_name()
    End Select
Next

我基本上循环浏览 address_components 并检查它们的类型值。如果该值是我正在寻找的值,我会分配它。如果没有街道号码,我稍后会在街道上调用 Trim() 以删除我添加的空白区域。

于 2012-05-04T14:01:53.030 回答