2012-05-03 3 views
1

참조하기 https://developers.google.com/maps/documentation/places/#PlaceDetails 나는 항상 address_components 세부 정보를 모두 보유 할 것으로 기대하고있었습니다. 그러나 내 검색 중 하나가 street_number, postal_code 및 기타 중 하나가 누락되었습니다. intellisense에서 보았을 때 address_components 중 하나가 administrative_area_level_2를 반환했습니다.Google JSON 세부 정보 없음

항상 비어있는 경우에도 원래의 값이 반환 될 것으로 기대했기 때문에 이것은 루프로 던졌습니다. 나는 또한과 같이 기대 수익을 하드 코딩했다 : 나는 구성 요소가 모든 결과를 반환 할 것으로 예상 할 수 없기 때문에

array.result.address_components(0).long_name 

, 나는 적절하게 액세스하고 난 때 무엇을 알아낼 수있는 새로운 방법이 필요합니다 일부가 누락되었습니다.

+0

우리는 어떤 종류의 프로그래밍 언어를 사용합니까? –

+0

VB.net이 내가 사용하고있는 것입니다. 내가 선택한 케이스를 사용하여 각 구성 요소의 유형을 조사해야한다고 생각합니다. – Mitchell

+0

나는 당신이 자신을 생성하는 데 필요한 데이터에 관해서 어떤 종류의 추정을하지 말아야한다고 생각한다. 변수를 사용하기 전에 변수가 존재하는지 확인하십시오. –

답변

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()을 호출합니다.