Tra cứu Thành phố và Tiểu bang bằng Zip Google Mã địa lý Api [đã đóng]


82

Về cơ bản, tôi muốn truy xuất danh sách thành phố và tiểu bang trong mã vùng. API mã địa lý của Google có khả năng làm như vậy không? Tôi đã thử xem xét tài liệu nhưng thấy thông tin tràn ngập.

Bất kỳ trợ giúp sẽ được đánh giá cao. Nếu có phương pháp khác để hoàn thành nhiệm vụ như vậy, vui lòng cho tôi biết.

Cảm ơn

CHỈNH SỬA: Tôi có thể truy xuất Thành phố và Tiểu bang thông qua: http://maps.google.com/maps/geo?output=xml&q=14606 nhưng có giới hạn nào đối với điều đó không?


Bạn có thể sử dụng API REST mã hóa địa lý của HERE Maps . Tạo một dự án và nhận thông tin đăng nhập REST. Chờ 1 giờ cho họ đi sống (chỉ cho tôi một InvalidCredentials lỗi lúc đầu) và sau đó gọi ví dụ geocoder.cit.api.here.com/6.2/geocode.json?PostalCode=2400&country=Denmark&app_id={APP_ID}&app_code={APP_CODE}&gen=9(bạn có thể cung cấp những phần địa chỉ )
aexl

Câu trả lời:


109

Sử dụng API mã hóa địa lý

Ví dụ: để tra cứu zip 77379, hãy sử dụng một yêu cầu như sau:

https://maps.googleapis.com/maps/api/geocode/json?address=77379&sensor=true&key=YOUR_GOOGLE_PLATFORM_API_KEY


10
Ý bạn là sensor = false ?
Rup

19
"Lưu ý: API mã hóa địa lý chỉ có thể được sử dụng cùng với bản đồ của Google; mã hóa địa lý kết quả mà không hiển thị chúng trên bản đồ bị cấm."
Andy Ray

2
@Rup cảm biến không cần thiết nữa
Dejell

2
Đây là lần truy cập đầu tiên trên google khi googling "api mã zip thành phố", và điều này rõ ràng không phải vậy :(
DuckPuncher

6
@KevinLeary result_type không hạn chế đối với mã bưu chính. Bộ mã hóa địa lý của Google sẽ nhầm mã zip với số địa chỉ đường phố (hãy thử mã zip 89100). Thay vào đó, định dạng để sử dụng được maps.googleapis.com/maps/api/geocode/... như tài liệu ở đây: developers.google.com/maps/documentation/geocoding/...
Mike Kormendy

53

Tôi đã tìm thấy một số cách để thực hiện việc này với các API dựa trên web. Tôi nghĩ rằng Bưu điện Hoa Kỳ sẽ là chính xác nhất, vì mã Zip là thứ của họ, nhưng Ziptastic trông dễ dàng hơn nhiều.

Sử dụng API HTTP / XML của Bưu điện Hoa Kỳ

Theo trang này trên trang web Bưu điện Hoa Kỳ tài liệu API web dựa trên XML của họ , cụ thể là Phần 4.0 (trang 22) của tài liệu PDF này , họ có một URL để bạn có thể gửi một yêu cầu XML chứa Mã Zip gồm 5 chữ số và họ sẽ trả lời bằng một tài liệu XML có chứa Thành phố và Tiểu bang tương ứng.

Theo tài liệu của họ, đây là những gì bạn sẽ gửi:

http://SERVERNAME/ShippingAPITest.dll?API=CityStateLookup&XML=<CityStateLookupRequest%20USERID="xxxxxxx"><ZipCode ID= "0"><Zip5>90210</Zip5></ZipCode></CityStateLookupRequest>

Và đây là những gì bạn sẽ nhận lại:

<?xml version="1.0"?> 
<CityStateLookupResponse> 
    <ZipCode ID="0"> 
        <Zip5>90210</Zip5> 
        <City>BEVERLY HILLS</City> 
        <State>CA</State> 
    </ZipCode> 
</CityStateLookupResponse>

USPS không yêu cầu bạn phải đăng ký với họ trước khi bạn có thể sử dụng API, nhưng, như xa như tôi có thể nói, không có phí để truy cập. Nhân tiện, API của họ có một số tính năng khác: bạn có thể thực hiện Tiêu chuẩn hóa địa chỉ và Tra cứu mã Zip, cũng như toàn bộ bộ theo dõi, vận chuyển, nhãn, v.v.

Sử dụng API Ziptastic HTTP / JSON ( không còn được hỗ trợ )

Cập nhật: Kể từ ngày 13 tháng 8 năm 2017, Ziptastic hiện là một API trả phí và bạn có thể tìm thấy tại đây

Đây là một dịch vụ khá mới, nhưng theo tài liệu của họ, có vẻ như tất cả những gì bạn cần làm là gửi yêu cầu GET tới http://ziptasticapi.com , như sau:

GET http://ziptasticapi.com/48867

Và chúng sẽ trả về một đối tượng JSON dọc theo các dòng:

{"country": "US", "state": "MI", "city": "OWOSSO"}

Thật vậy, nó hoạt động. Bạn có thể kiểm tra điều này từ một dòng lệnh bằng cách làm như sau:

curl http://ziptasticapi.com/48867 

8
Tình yêu lớn đối với đề xuất Ziptastic. <3!
ceejayoz

5
Dịch vụ Bưu điện Hoa Kỳ có thể sẽ từ chối yêu cầu truy cập của bạn trừ khi bạn đang sử dụng API của họ cho các hoạt động liên quan cụ thể đến gửi thư. Ít nhất, đó là kinh nghiệm của tôi.
eaj 16/10/12

1
@eaj Điều đó đúng: "API xác thực địa chỉ có thể được sử dụng cùng với DỊCH VỤ VẬN CHUYỂN HOẶC MAILING CỦA USPS CHỈ."
dragan.stepanovic

2
Ziptastic không còn được hỗ trợ. Nó không nên được sử dụng nữa.
vaindil,

2
@RationalRabbit: Tôi đã gửi bản cập nhật lưu ý rằng Ziptastic hiện là một API trả phí.
Richard Jones

14
function getCityState($zip, $blnUSA = true) {
    $url = "http://maps.googleapis.com/maps/api/geocode/json?address=" . $zip . "&sensor=true";

    $address_info = file_get_contents($url);
    $json = json_decode($address_info);
    $city = "";
    $state = "";
    $country = "";
    if (count($json->results) > 0) {
        //break up the components
        $arrComponents = $json->results[0]->address_components;

        foreach($arrComponents as $index=>$component) {
            $type = $component->types[0];

            if ($city == "" && ($type == "sublocality_level_1" || $type == "locality") ) {
                $city = trim($component->short_name);
            }
            if ($state == "" && $type=="administrative_area_level_1") {
                $state = trim($component->short_name);
            }
            if ($country == "" && $type=="country") {
                $country = trim($component->short_name);

                if ($blnUSA && $country!="US") {
                    $city = "";
                    $state = "";
                    break;
                }
            }
            if ($city != "" && $state != "" && $country != "") {
                //we're done
                break;
            }
        }
    }
    $arrReturn = array("city"=>$city, "state"=>$state, "country"=>$country);

    die(json_encode($arrReturn));
}

Một phần của mã của bạn đã giúp tôi một chút, Cảm ơn bạn rất nhiều :)
Kamlesh

6

vài tháng trước, tôi cũng có yêu cầu tương tự đối với một trong những dự án của mình. Tôi đã tìm kiếm một chút cho nó và tìm ra giải pháp sau đây. Đây không phải là giải pháp duy nhất nhưng tôi thấy nó là một trong những giải pháp đơn giản hơn .

Sử dụng dịch vụ web tại http://www.webservicex.net/uszip.asmx . Phương pháp
cụ thể GetInfoByZIP().

Bạn sẽ có thể truy vấn bằng bất kỳ mã zipcode nào ( ex: 40220) và bạn sẽ nhận được phản hồi như sau ...

<?xml version="1.0" encoding="UTF-8"?>
 <NewDataSet>
  <Table>
   <CITY>Louisville</CITY> 
   <STATE>KY</STATE> 
   <ZIP>40220</ZIP> 
   <AREA_CODE>502</AREA_CODE> 
   <TIME_ZONE>E</TIME_ZONE> 
  </Table> 
</NewDataSet>

Hi vọng điêu nay co ich...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.