Пошук міста та штату за Zip Google Geocode Api [закрито]


83

В основному я хочу отримати список міст і штатів у поштовому індексі. Чи здатний API Geocode Google це зробити? Я спробував вивчити документацію, але виявив, що інформація надзвичайна.

Будь-яка допомога буде вдячна. Якщо існує інший спосіб виконання такого завдання, будь ласка, дайте мені знати.

Дякую

РЕДАГУВАТИ: мені вдалося отримати місто та штат через: http://maps.google.com/maps/geo?output=xml&q=14606, але чи існує обмеження щодо цього?


Ви можете скористатися HERE Maps Geocoding REST API . Створіть проект і отримайте облікові дані REST. Зачекайте 1 годину, поки вони почнуть працювати ( спочатку показав мені помилку InvalidCredentials ), а потім зателефонуйте, наприклад geocoder.cit.api.here.com/6.2/geocode.json?PostalCode=2400&country=Denmark&app_id={APP_ID}&app_code={APP_CODE}&gen=9(ви можете вказати адресні частини )
aexl

Відповіді:


111

Використовуйте API геокодування

Наприклад, для пошуку zip 77379 використовуйте такий запит:

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


10
Ви маєте на увазі датчик = помилковий ?
Rup

19
"Примітка: API геокодування можна використовувати лише разом із картою Google; результати геокодування без їх відображення на карті заборонені."
Andy Ray

2
Датчик @Rup більше не потрібен
Dejell

2
Це перше потрапляння в Google під час гуглювання "city zip code api", і це, очевидно, не те :(
DuckPuncher

6
@KevinLeary result_type не обмежується поштовим індексом. Геокодер Google помилково вводить поштові індекси за номерами вулиць (спробуйте поштовий індекс 89100). Натомість використовується формат maps.googleapis.com/maps/api/geocode/…, як це задокументовано тут: developers.google.com/maps/documentation/geocoding/…
Майк Корменді

54

Я знайшов кілька способів зробити це за допомогою веб-інтерфейсів API. Я думаю, що Поштова служба США була б найточнішою, оскільки поштові індекси - це їхня річ, але Ziptastic виглядає набагато простіше.

Використання поштової служби США HTTP / XML API

Відповідно до цієї сторінки на веб-сайті Поштової служби США, яка документує їх веб-API на основі XML , зокрема Розділ 4.0 (сторінка 22) цього документа PDF , вони мають URL-адресу, куди Ви можете надіслати XML-запит, що містить 5-значний поштовий індекс, і вони відповісти XML-документом, що містить відповідне місто та штат.

Відповідно до їх документації, ось що ви надішлете:

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

І ось що ви отримаєте назад:

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

USPS це вимагає , щоб ви входите з ними , перш ніж ви можете використовувати API, але, наскільки я міг судити, не стягувати плату за доступ. До речі, їх API має деякі інші особливості: ви можете виконувати стандартизацію адрес та пошук поштового індексу, а також весь набір відстеження, доставки, ярликів тощо.

Використання API Ziptastic HTTP / JSON ( більше не підтримується )

Оновлення: станом на 13 серпня 2017 року Ziptastic тепер є платним API, і його можна знайти тут

Це досить нова послуга, але, згідно з їх документацією, схоже, все, що вам потрібно зробити, це надіслати запит GET на http://ziptasticapi.com приблизно так:

GET http://ziptasticapi.com/48867

І вони повернуть об'єкт JSON за лініями:

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

Дійсно, це працює. Ви можете перевірити це з командного рядка, виконавши щось на зразок:

curl http://ziptasticapi.com/48867 

8
Основна любов до рекомендації Ziptastic. <3!
ceejayoz

5
Поштова служба США, можливо, відхилить ваш запит на доступ, якщо ви не використовуєте їх API для дій, пов'язаних із розсилкою. Принаймні, це був мій досвід.
eaj

1
@eaj Це правда: "API перевірки адреси можна використовувати ТОЛЬКО ДО ДОСТАВКИ ТА ПОШТОВОЇ ПОСЛУГИ USPS".
dragan.stepanovic

2
Ziptastic більше не підтримується. Його більше не слід використовувати.
vaindil

2
@RationalRabbit: Я подав оновлення, зазначивши, що Ziptastic тепер є платним API.
Річард Джонс,

15
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));
}

Частина коду допомогла мені трохи, спасибі багато :)
Kamlesh

6

пару місяців тому у мене була така сама вимога до одного зі своїх проектів. Я трохи його пошукав і з’ясував таке рішення. Це не єдине рішення, але я знайшов одне з більш простих .

Скористайтеся веб-сервісом за адресою http://www.webservicex.net/uszip.asmx .
Конкретно GetInfoByZIP()метод.

Ви зможете робити запити за будь-яким поштовим індексом ( ex: 40220), і у вас буде відповідь, як показано нижче ...

<?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>

Сподіваюся, це допомагає ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.