google-api - verwalten - use google geocode api




Suche nach Stadt und Bundesstaat nach Google Geocode Api (3)

Ich habe ein paar Möglichkeiten gefunden, dies mit webbasierten APIs zu tun. Ich denke, der US Postal Service wäre der genaueste, da die Postleitzahlen ihr Ding sind, aber Ziptastic sieht viel einfacher aus.

Verwenden der HTTP / XML-API des US-Postdienstes

Laut dieser Seite auf der Website des US-Postdienstes, die ihre XML-basierte Web-API , insbesondere Abschnitt 4.0 (Seite 22) dieses PDF-Dokuments dokumentiert , haben sie eine URL, wo Sie eine XML-Anfrage mit einer 5-stelligen Postleitzahl senden können Antworten Sie mit einem XML-Dokument, das die entsprechende Stadt und den entsprechenden Bundesstaat enthält.

Laut ihrer Dokumentation würden Sie Folgendes senden:

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

Und hier ist, was Sie zurück erhalten würden:

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

USPS verlangt, dass Sie sich bei ihnen registrieren, bevor Sie die API verwenden können, aber soweit ich das beurteilen kann, entstehen keine Kosten für den Zugriff. Übrigens hat ihre API noch einige andere Eigenschaften: Sie können Adressstandardisierung und Postleitzahlsuche, sowie die ganze Reihe von Tracking, Versand, Etiketten, etc. tun.

Verwenden der ziptastischen HTTP / JSON-API (wird nicht mehr unterstützt )

Update: Ab dem 13. August 2017 ist Ziptastic jetzt eine kostenpflichtige API und kann hier gefunden werden

Dies ist ein ziemlich neuer Service, aber laut ihrer Dokumentation sieht es so aus, als ob Sie nur eine GET-Anfrage an http://ziptasticapi.com senden müssen:

GET http://ziptasticapi.com/48867

Und sie werden ein JSON-Objekt nach folgenden Kriterien zurückgeben:

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

Tatsächlich funktioniert es. Sie können dies über eine Befehlszeile testen, indem Sie Folgendes tun:

curl http://ziptasticapi.com/48867 

Ich möchte im Grunde eine Liste von Stadt und Staat innerhalb einer Postleitzahl abrufen. Ist Google Geocode API dazu in der Lage? Ich habe versucht, in die Dokumentation zu schauen, fand aber die Information überwältigend.

Jede Hilfe wäre willkommen. Wenn es eine andere Methode gibt, um diese Aufgabe zu erfüllen, lassen Sie es mich bitte wissen.

Vielen Dank

EDIT: Ich war in der Lage, die Stadt und Staat durch: http://maps.google.com/maps/geo?output=xml&q=14606 abrufen, aber gibt es eine Einschränkung dagegen?



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




google-geocoder