2010-12-28 3 views
1

V3의 Google지도 API를 사용하면 줄 바꿈으로 주소를 형식화하는 신뢰할 수있는 방법이 있습니까? 이것에 의해, 내가 가진 address_components 배열이 지오 코딩의 응답 객체를 통해 찾고 줄 바꿈이있는 올바른 우편 주소 [google maps]

1600 원형 극장 파크 웨이
마운틴 뷰, CA 94043

1600 Amphitheatre Parkway Mountain View, CA 94043 같은 포맷해야 의미, 위 주소의 경우 8 개 구성 요소가 사용됩니다 (일부 구성 요소가 주소로 사용되지는 않음).

0: Object 
    long_name: "1600" 
    short_name: "1600" 
    types: Array[1] 
     0: "street_number" 
     length: 1 
1: Object 
    long_name: "Amphitheatre Pkwy" 
    short_name: "Amphitheatre Pkwy" 
    types: Array[1] 
     0: "route" 
     length: 1 
2: Object 
    long_name: "Mountain View" 
    short_name: "Mountain View" 
    types: Array[2] 
     0: "locality" 
     1: "political" 
     length: 2 
3: Object 
    long_name: "San Jose" 
    short_name: "San Jose" 
    types: Array[2] 
     0: "administrative_area_level_3" 
     1: "political" 
     length: 2 
4: Object 
    long_name: "Santa Clara" 
    short_name: "Santa Clara" 
    types: Array[2] 
     0: "administrative_area_level_2" 
     1: "political" 
     length: 2 
5: Object 
    long_name: "California" 
    short_name: "CA" 
    types: Array[2] 
     0: "administrative_area_level_1" 
     1: "political" 
     length: 2 
6: Object 
    long_name: "United States" 
    short_name: "US" 
    types: Array[2] 
     0: "country" 
     1: "political" 
     length: 2 
7: Object 
    long_name: "94043" 
    short_name: "94043" 
    types: Array[1] 
     0: "postal_code" 
     length: 1 

처럼 당신이 원하는 부분을 결합

sprintf("%s %s<br />%s, %s %s", 
     array[0].short_name, 
     array[1].short_name, 
     array[2].short_name, 
     array[5].short_name, 
     array[7].short_name) 

[편집] 난 그냥 sprintf와는 그래서 단지 연결 내가 추측 할 것, 자바 스크립트에서 기본적으로 정의되어 있지 않은 것을 깨달았다. [/ 편집]

그러나 그것은 끔찍하게 신뢰할 수없는 것처럼 보인다. 누구든지 address_components의 구조에 대한 세부 사항을 알고 있으며, 미국의 거리 주소와 비슷한 방식으로 신뢰할 만합니까? 내가 원한다면 올바른 유형 (street_number, route 등)을 찾을 수있을 것입니다. 누군가가 내가 "m 여기서 뭐하는 것보다 더 좋은 방법이 있다면 나는 그것을 사랑 것

...

답변

0

또는 ... (다시, 미국 주소로 가정) ... CASS 인증 서비스가 있습니다. 예를 들어 SmartyStreets라는 회사에서 일하면서 주소 확인을합니다.반면에 구글은 근사치을 사용하지만 사용자가 얻은 결과가 정확하지는 않습니다. 그것은 최고의 추측을합니다. CASS 인증 소프트웨어는 신뢰할 수 있고 정확합니다.

LiveAddress API은 간단한 REST 요청의 결과를 반환합니다. 다음은 위에서 사용 된 주소의 JSON 결과의 미리보기는 다음과 같습니다

"delivery_line_1":"1600 Amphitheatre Pkwy", 
"last_line":"Mountain View CA 94043-1351" 
그래서 여기

자동으로 표준화되어있어 제대로 당신을 위해 줄 바꿈으로 구분 . 나는 당신이 그것을 약간의 사용 (플러스, 무료)이라고 생각할 것입니다. 질문이 있으면 알려주십시오. 내가 너를 도울거야.

+1

이것은 꽤 오래 전 이었지만 응답에 감사드립니다. CASS 인증에 대해 알게되어 반갑습니다. – munchybunch

1

주소 구성 요소와 유형 http://code.google.com/apis/maps/documentation/geocoding/#Types에 설명되어 있습니다. 당신이 원하는 무엇

입니다 요소를 반복하고 types 배열의 값을 확인하십시오. 도시가 N 번째 요소라고 항상 가정하고 싶지는 않습니다. N을 선택하면 어떤 일이든 원하는대로 자주 잘못 될 것입니다. 유형을 확실히 확인하고 싶습니다.

미국의 주소는 행정 구역 번호를 생략하고 싶습니다. nce는 보통 거리 주소의 일부가 아닌 카운티입니다.

일반적으로 locality 유형의 요소 앞에 줄 바꿈을 넣을 수 있습니다. 이것이 결과를 얻는 데 필요한 유일한 줄 바꿈 규칙 일 수 있습니다.

1) 비법 농촌 지역 주소 :

확실히 문제가 될 수있는 주소들 중 적어도 두 종류의 테스트. 어쩌면 알래스카 한 가운데에서 임의의 위치를 ​​선택하십시오.

2) 초 고밀도 장소. 브루클린은 아마도 그곳을위한 좋은 장소 일 것입니다. 나는 Brooklyn이 sublocality로, 뉴욕 (City)은 지역으로 등록 될 것입니다. 합법적 인 우편 주소가 무엇인지 확인하십시오. 당신이 sublocality를 사용하고 지역을 무시할 필요가 있다는 것을 알 수 있습니다. 나는 잘 모르겠다.

위의 내용에서 미국 주소를 추측하고 있습니다. 미국 이외의 주소를 구문 분석하려고하면 모든 배팅이 해제됩니다.