Die meisten Adressfelder auf Webformularen fragen nach Stadt, Bundesland und Postleitzahl (oder Stadt und Postleitzahl außerhalb der USA). Aber wie wir Nerds oft beklagen, sind Stadt und Bundesland redundant mit der Postleitzahl. Oder zumindest können sie aus einer korrekt eingegebenen Postleitzahl abgeleitet werden. Das ist die Art von Dingen, die Computer gut können. Was wir brauchen, ist eine ordentliche API, die uns diese Informationen auf Abruf liefert.
Geben Sie Ziptastic ein, die API genau dafür. Update April 2017: Ziptastic hat jetzt kostenpflichtige Pläne. Aus ihren FAQ geht hervor, dass sie immer noch eine kostenlose Version der API Version 2 haben, die auf 100 Anfragen pro 24 Stunden begrenzt ist. Unsere Demo wird diese nutzen!
Formular-Markup
Fünf Felder. Zwei für die Straße, dann Stadt, Bundesland und Postleitzahl. Alles in ein Formular und ein Feldset verpackt. Nichts Besonderes.
<form action="#" method="post" class="fancy-form">
<fieldset>
<legend>Address</legend>
<div>
<div>
<input type="text" name="address-line-1" id="address-line-1">
<label for="address-line-1">Street #1</label>
</div>
</div>
<div>
<div>
<input type="text" name="address-line-2" id="address-line-2">
<label for="address-line-2">Street #2</label>
</div>
</div>
<div>
<div class="city-wrap">
<input type="text" name="city" id="city">
<label for="city">City</label>
</div>
<div class="state-wrap">
<input type="text" name="state" id="state">
<label for="state">State</label>
</div>
<div class="zip-wrap">
<input type="text" pattern="[0-9]*" name="zip" id="zip">
<label for="zip">Zip</label>
<p class="zip-error">Not a real zip code.</p>
</div>
</div>
<div>
<input type="submit" value="Submit">
</div>
</fieldset>
</form>
Nur die Postleitzahl zuerst anzeigen
Wir werden alle divs ausblenden, die jede Zeile von Formularelementen umschließen. Wir werden JavaScript verwenden, damit das Formular auch dann benutzbar ist, wenn der Benutzer JavaScript deaktiviert hat.
$(".fancy-form div > div").hide();
Dann nur die Postleitzahl anzeigen.
form .zip-wrap {
display: block !important;
}
Frontend-Validierung
Im Frontend tun wir bereits das Beste, was wir können, um die korrekte Eingabe einer Postleitzahl durch HTML5-Input-Attribute wie pattern, maxlength und required zu unterstützen.
<input type="text" pattern="[0-9]*" maxlength="5" required name="zip" id="zip">
Beachten Sie, dass der Typ nicht number ist. Wenn Sie type=number in Erwägung ziehen, überlegen Sie: „Wäre ich damit einverstanden, dass der Browser Kommas in diese Zahl einfügt?“ Wenn die Antwort nein ist, verwenden Sie ihn nicht, da einige dies tun.
jQuery: Auf Eingabe einer gültigen Postleitzahl warten
Wir werden das Postleitzahlen-Input auf Tastendrücke überwachen. Sollte der endgültige Wert nach einem Tastendruck eine gültige Postleitzahl sein, versuchen wir, Stadt und Bundesland über Ziptastic abzurufen und die anderen Felder anzuzeigen.
$("#zip").keyup(function() {
var el = $(this);
if ((el.val().length == 5) && (is_int(el.val()))) {
// Make Ajax call, etc
}
}
Die `is_int`-Funktion ist nur ein zusätzlicher Schutz dafür, dass die Zahl eine Ganzzahl ist (wie alle Postleitzahlen), falls der aktuelle Browser die notwendige HTML5-Unterstützung nicht hat.
function is_int(value){
if ((parseFloat(value) == parseInt(value)) && !isNaN(value)) {
return true;
} else {
return false;
}
}
jQuery: Die Daten per AJAX abrufen
Ja, also jQuery. Wir haben es oben verwendet, um die Ereignisbehandlung für das Input-Feld zu vereinfachen, aber es ist hier wirklich notwendig, da seine Fähigkeit, AJAX-Aufrufe mit Fehlerbehandlung durchzuführen, 62 Mal einfacher ist, als dies mit reinem JavaScript zu tun.
Nach der bestandenen Validierung können wir den AJAX-Aufruf tätigen. Alles, was wir als Daten übergeben, ist die gesammelte Postleitzahl, und wir erhalten etwas JSON zurück, das trivial einfach zugänglich ist, um Stadt und Bundesland zu erhalten und sie als Werte für die entsprechenden Input-Felder anzuwenden.
$.ajax({
url: "http://zip.elevenbasetwo.com",
cache: false,
dataType: "json",
type: "GET",
data: "zip=" + el.val(),
success: function(result, success) {
$(".fancy-form div > div").slideDown(); /* Show the fields */
$("#city").val(result.city); /* Fill the data */
$("#state").val(result.state);
$(".zip-error").hide(); /* In case they failed once before */
$("#address-line-1").focus(); /* Put cursor where they need it */
},
error: function(result, success) {
$(".zip-error").show(); /* Ruh row */
}
});
Natürlich können wir den ganzen Tag lang auf die korrekte Formatierung von Postleitzahlen validieren, aber nicht *jede* 5-stellige Ganzzahl ist eine Postleitzahl. Wenn wir Ziptastic nach einer nicht existierenden Postleitzahl fragen, gibt es einen Fehler zurück. In diesem Fall zeigen wir einfach eine Fehlermeldung an.
Demo
Siehe den Pen Using Ziptastic von Chris Coyier (@chriscoyier) auf CodePen.
Notizen
- Ich werde Ihnen nicht sagen, dass das kugelsicher ist. Adressen sind schwierig. Ich habe gehört, dass manche Postleitzahlen über Bundeslandgrenzen hinausgehen.
Ziptastic ist nur für die USA.Nur wenige Tage nach der Veröffentlichung unterstützt Ziptastic Postleitzahlen international. Zippopotamus ist ähnlich und unterstützt 60 Länder.
Total cool. Vorsicht… Verursacht einen kompletten Nerd-Gasmus.
Danke für die Demo!
Es sieht so aus, als ob Sie das Tabulator-Taste im `keyup`-Ereignishandler beachten sollten. Das Tabulator-Drücken zum Postleitzahlenfeld validiert es und fokussiert das Straßenadressfeld automatisch, wenn bereits eine gültige Postleitzahl vorhanden ist.
Sehr schön.
Normalerweise sind diejenigen mit schwierigen Postleitzahlen sich dessen bereits bewusst. Meine Schwester lebt zum Beispiel in Maplewood, MN, und hat die Postleitzahl 55109. Sie grenzt an St. Paul, MN, und fast jedes Mal, wenn man 55109 eingibt (Formulare, Karten usw.), wird St. Paul, MN angezeigt.
Das ist großartig! Mir ist dasselbe aufgefallen wie Katie – ich habe auch eine Postleitzahl verwendet, mit der ich außerhalb von Minneapolis aufgewachsen bin, aber die Stadt wurde mit Mpls gefüllt.
aber es vermittelt die Botschaft und Postämter liefern normalerweise korrekt, selbst wenn man die nächstgelegene Großstadt angibt.
Eine kleine Verbesserung, die ich vorschlagen würde, wäre, `$(“.zip-error”).hide();` direkt vor dem AJAX-Aufruf zu platzieren.
Ohne diese Änderung könnte es für den Benutzer verwirrend werden, wenn er eine falsche Postleitzahl eingibt und dann versucht, sie zu korrigieren. Selbst nach der Korrektur bleibt die Fehlermeldung sichtbar, bis der AJAX-Callback empfangen wird.
Mit der Änderung verschwindet die Fehlermeldung nach der Eingabe einer 5-stelligen Ganzzahl und während des Wartens auf den Callback.
VIELEN DANK! Ich frage mich immer, warum die meisten Websites versuchen, meine Postleitzahl nicht automatisch vorzuschlagen, obwohl die automatische Ausfüllfunktion der meisten Browser mich faul hält ;)
Guter Tipp, Travis.
Hallo Chris,
Wieder einmal liefern Sie großartige Arbeit. Ich mag die Idee von Smart Forms.
Ein Problem gefunden, sollte leicht zu lösen sein: Es funktioniert nicht gut mit Postleitzahlen, die mit 0 beginnen – zum Beispiel beginnt ganz Vermont mit 05 – ich bin 05641 (Barre, VT). Eingegeben, wird nicht erkannt. Erneut versucht mit 01234 (Boston/Bedford, MA) und auch kein Erfolg. Ich vermute, das Skript ignoriert führende Nullen.
Geben Sie immer eine Basis an, wenn Sie parseInt verwenden. parseFloat interpretiert 05641 als 5641, während parseInt (ohne Basis) dies als 13011 (Oktal 05641) parst. parseInt(‘05641‘, 10) gibt Ihnen das gewünschte Ergebnis.
Noch unerwarteter ist, dass parseInt(‘05922‘) einfach 5 zurückgibt, da 9 keine gültige Oktalzahl ist und parseInt parst, bis es auf etwas Nicht-Numerisches stößt.
Weiß jemand, wie man „Orte innerhalb von x Meilen“ berechnet?
(Cooler Post übrigens)!
Eine etwas schwierige Frage. Sie benötigen einen Datensatz von Orten und deren Mittelpunkten (oder Schwerpunkten).
Dann nehmen Sie den Schwerpunkt des Ortes, an dem Sie interessiert sind (sagen wir San Francisco, CA). Sie können eine Bounding Box berechnen (die nur 4 Koordinaten sind, die jede Ecke der Box darstellen). Dann würden Sie eine Abfrage gegen den Datensatz für andere Schwerpunkte ausführen, die sich innerhalb Ihrer berechneten Bounding Box befinden.
* Schwerpunkt ~ 3 Meilen = Bounding Box
* Schwerpunkte innerhalb der Bounding Box abrufen
Berechnung von Entfernungen zwischen zwei Punkten mit der Google Maps API =)
Ich ermittle die Breite/Länge der eingegebenen Postleitzahl und führe dann eine Berechnung in der Datenbankabfrage durch, die sie mit den gespeicherten vergleicht (falls Sie sie gespeichert haben). Auf diese Weise können Sie beispielsweise X Geschäfte in der Nähe von Y Postleitzahl finden, da Sie, sobald Sie die Entfernung berechnet haben, in der Auswahl nach beliebiger Entfernung filtern können, z. B. 50 Meilen, 100 usw.
Ein Beispiel dafür in Aktion wäre: http://www.craftcourses.com/search/PO8%208PT
Natürlich – dies wird in gerader Linie (nicht über eine Straße) berechnet, sodass 100 Meilen 140 Meilen über die Straße bedeuten könnten. Wenn Sie weitere Details zur Vorgehensweise wünschen, lassen Sie es mich wissen :)
Das funktioniert in den Staaten, aber was ist mit uns hier in Kanada?
Wo ist Kanada? LOL
Laut den Notizen Zippopotamus… Du solltest die Notizen lesen.
Laut den Notizen Zippopotamus… Du solltest die Notizen lesen.
Sehr coole Sache. Ich schätze es!
Ich liebe diese Demo definitiv, aber ich frage mich, ob dies einige Usability-Fragen aufwirft? Wenn ich zu einem Webformular komme und ein Adressformular erwarte, aber nur ein Postleitzahlenfeld sehe, könnte ich (fälschlicherweise) glauben, dass das Formular nicht richtig geladen hat oder dass die Seite defekt ist.
Ich weiß, dass dies eine Demo ist, daher versuche ich nicht, dies als „falsch“ zu bezeichnen. Aber als Vorschlag für eine tatsächliche Anwendung dieses Musters sollten Sie einige Mikroskripte einfügen, die sagen: „Hey! Geben Sie einfach Ihre Postleitzahl ein und wir kümmern uns um Stadt und Bundesland!“
Nur meine 2 Cent.
Vielleicht die Felder für Stadt/Bundesland sichtbar lassen, aber sie deaktivieren und etwas ausblassen (zusätzlich zu Ihren Mikroskripten).
Wahr, das könnte man tun, und das würde ich wahrscheinlich auch tun: mit JavaScript eine Klasse zum Formular/Formularelementen hinzufügen, damit diese Felder ausgeblendet werden.
Ich hätte nur Angst, dass Sie bei diesem Ansatz die Felder in der traditionellen Reihenfolge anzeigen müssen: Die Stadt- und Bundeslandfelder kämen *vor* dem Postleitzahlenfeld. Alles andere würde eine weitere potenziell störende Usability-Schwierigkeit mit sich bringen. Wenn Sie also die traditionelle Reihenfolge beibehalten, riskieren Sie, dass Benutzer die Mikroskripte ignorieren (nicht die Schuld des Entwicklers, ich weiß), und die Elemente in der Reihenfolge eingeben (1. Stadt, 2. Bundesland, 3. Postleitzahl), was diese Methode für diesen Anwendungsfall nutzlos macht. Wiederum, kein Weltuntergang, wenn dies passiert. Und der Benutzer, der sowohl Ihre Texte als auch die visuellen Hinweise ignoriert, ist wahrscheinlich ein Grenzfall. Ich denke hier nur laut nach...
Eigentlich denke ich, dass ich das überanalysiere.
Außerdem sollte „rending“ (wörtlich: zerreißen) „rendering“ (darstellen) heißen.
Jetzt brauchen wir nur noch eine Version für Großbritannien.
Jetzt brauchen wir nur noch Großbritannien darin.
Fantastische API. Nur zur Referenz: Ich habe ein .NET-Interface für diesen Dienst hier zusammengestellt. Referenzieren Sie es in Ihrem ASP.Net-, C#-.Net- oder VB.Net-Projekt und verwenden Sie es wie folgt (C#)
Tolle Idee – ich habe in 10 Ländern gelebt, aber nie in den USA
Wenn das 1. Feld
*Land*
2. Feld
*PLZ/Postleitzahl*
Dies würde es international nutzbar machen
Insbesondere für Ortsnamen mit Satzzeichen etc. ist die übereinstimmende Postleitzahl eine Frage sauberer Daten, um sicherzustellen, dass kein Tippfehler vorliegt (z. B. in der Postleitzahl) und um saubere Daten abbauen zu können. Es ist auch eine Verschwendung von Zeit für die Leute, immer wieder dieselben (vollständigen Adressinformationen) in Formulare einzugeben. Daher ist eine ordnungsgemäße automatisierte Unterstützung in dieser Hinsicht sehr willkommen, und die Leute sind nicht frustriert beim Ausfüllen. Frustration mit Formularen kann zu Umsatzverlust führen, wenn Sie Kunden-Anmelde- oder Bestellformulare haben.
All die Formulare, bei denen Sie viele bereits bekannte Informationen wiederholen müssen (weil Sie eine Kennung erhalten haben), sind ein Ärgernis, das wir vermeiden können. Wenn Sie die gesamte verschwendete Zeit für die Eingabe von doppelten Daten für alle Systeme der Welt addieren würden, wären es viele Lebenszeiten wert… die im Wesentlichen aus unzureichenden Datenerfassungs- und Verarbeitungssystemen stammen. Und viele Lebenszeiten werden mit der Bereinigung von Dreckdaten verbracht, die nicht sein sollten.
...schiebt sich leise vom Sockel.
Kanada hat Buchstaben in den Postleitzahlen. Nur so am Rande
d.
Ich möchte diesen Ansatz aus der Sicht der Adressverifizierungsbranche kommentieren. Ich bin Entwickler bei SmartyStreets, wo ich viel Erfahrung mit USPS-Adressqualitäts-Produkten habe.
Danke, dass Sie darauf hinweisen, dass „Adressen schwierig sind“ und dass Postleitzahlen Bundeslandgrenzen überschreiten. Ich kann diese Aussage noch weiter ausführen und sagen, dass, obwohl Postleitzahlen (sehr selten) Bundeslandgrenzen überschreiten, sie sehr oft Stadt- und Kreisgrenzen überschreiten. Es ist auch ziemlich üblich, dass eine Postleitzahl alternative Namen hat, die von der USPS zugewiesen wurden und die gültig (und oft angemessener als der Standard) für den Versand sind, sowie einige alternative Namen, die NICHT für den Versand geeignet sind. Bei meiner Durchsicht des Codes stelle ich fest, dass Ziptastic dies nicht berücksichtigt („SELECT * FROM zipcodes WHERE zipcode=’$zip’ LIMIT 1“ reicht da nicht aus).
Ein weiteres Bedenken, das ich bei einem Dienst wie Ziptastic habe, ist die zugrunde liegende Datenquelle. Die Ziptastic-Datenbank enthält etwas mehr als 80.000 Datensätze, was angesichts der von mir erwähnten alternativen Namen angemessen ist, aber es beunruhigt mich, dass es im Ziptastic-Repository keine Referenz gibt, die zeigt, woher die Postleitzahlendaten stammen (bitte korrigieren Sie mich, wenn ich etwas übersehen habe). Wenn sie von einem Drittanbieter gekauft wurden, sind sie dann lizenziert, in einem öffentlichen Repository veröffentlicht zu werden, sodass andere Leute freien Zugang dazu haben? Wie oft aktualisiert er sie? Postleitzahlen werden von der USPS monatlich hinzugefügt und entfernt.
Letztendlich respektiere ich die Autoren von Ziptastic – sie arbeiten daran, eine reale Herausforderung im Web zu lösen, indem sie die Benutzererfahrung vereinfachen und Benutzerfehler reduzieren. Ich bin besorgt, dass dieser vereinfachte Ansatz denjenigen, die ihn in ihren Anwendungen einsetzen, ein falsches Sicherheitsgefühl vermittelt. Die Wahrheit ist, dass der einzige Weg, die korrekte Kombination aus Stadt/Bundesland/Postleitzahl sicherzustellen, darin besteht, eine Adresse als Ganzes zu verifizieren, indem ein CASS-zertifizierter Adressverifizierungsdienst verwendet wird.
Alter… *überall, wo ich hinschaue*, sehe ich nur, wie du für Smartystreets spamst.
Ich werde Ihr Produkt allein schon aus Ärger nicht nutzen.
Sie erreichen zwar Marktsättigung, aber Sie spammen auch die Hölle aus jedem Nachrichtenthread, den ich gefunden habe.
Hallo,
Es ist großartig für Postleitzahlen. Aber könnten Sie mir bitte sagen, ob es international zugelassen ist.
Ähm, ein wenig verwirrt. Soweit ich weiß, funktioniert $.ajax nicht mit externen URLs. Oder doch?
Ich glaube, Sie haben Recht. Ich habe vor ein paar Tagen darüber gelesen und es hat etwas mit der Same-Origin-Policy zu tun. Die jQuery-Dokumentation besagt:
„Aufgrund von Browser-Sicherheitsbeschränkungen unterliegen die meisten ‚Ajax‘-Anfragen der Same-Origin-Policy; die Anfrage kann keine Daten von einer anderen Domain, Subdomain oder einem anderen Protokoll erfolgreich abrufen.“
Aber diese Richtlinie ist browserabhängig, und vielleicht ist das der Grund, warum die Demo in meinem Firefox (407 Proxy Authentication Required) überhaupt nicht funktioniert. Ich glaube, es gibt einige Möglichkeiten, dieses Problem zu umgehen, aber ich bin mir nicht sicher, ob sie hier verwendet werden.
Dafür gibt es keine Workaround – ich habe viele Dinge ausprobiert und bin schließlich auf einen Server-CURL gestoßen :). Nur eine Sache lässt mich an meinen Gedanken zweifeln – JSON. Vielleicht ist AJAX mit JSON auf Domains, die nicht die gleiche Herkunft haben, erlaubt. Chris, könnten Sie das bitte klären.
Wissen Sie was. Ich bin mir wirklich nicht sicher, warum das funktioniert. Ich kann sagen, dass es in allen Firefox-Browsern funktioniert, die ich getestet habe. Cross-Domain-Beschränkungen sind meiner Erfahrung nach ziemlich konsistent über Browser hinweg.
Normalerweise ist die Antwort JSONP, was eine einfache/clevere Möglichkeit ist, dies zu umgehen, ohne etwas serverseitiges zu involvieren. Aber das scheint hier nicht der Fall zu sein.
Weiß jemand anderes, warum das funktioniert?
Ich habe einige Artikel durchgesehen – ja, der Grund ist, dass Sie JSON verwenden. Asynchrone Cross-Domain-JS-Anfragen sind tatsächlich erlaubt. Sie haben mir in jQuery/JavaScript eine neue Sache eröffnet. Das ändert viele Dinge :) Vielen Dank
Gut zu wissen.
Der Grund, warum es bei mir nicht funktioniert hat, war, dass ich hinter einem Firmenproxy war. Jetzt ist alles in Ordnung.
Ich glaube, es funktioniert Cross-Domain, weil ihr Server den Header zurückgibt
Access-Control-Allow-Origin: *
Es sollte für IE8 und höher funktionieren.
Kann mir jemand erklären, warum die folgende Gleichheitsprüfung in der `is_int`-Funktion?
parseFloat(value) == parseInt(value)Dient es dazu, zu prüfen, ob die Zeichenfolge ein vom Browser hinzugefügtes „,“ oder „.“ hat? Wie hängt das mit der `isNaN`-Prüfung zusammen? Ich bin verwirrt und es beschäftigt mich.
Danke, toller Beitrag
Ich bin verwirrt – gibt es das in den USA nicht schon? Wenn ich online in Großbritannien einkaufe, muss ich normalerweise nur eine Hausnummer/Namen und meine Postleitzahl angeben, und die Adresse (Straßenname, Stadt/Ort, Land usw.) wird automatisch ausgefüllt. Das gibt es doch schon seit mindestens 5 Jahren?
Die USA hinken Europa etwa 5 Jahre hinterher. Haben Sie Geduld mit uns, wir werden dorthin gelangen.
Obwohl ich zustimme, dass es nicht „kugelsicher“ ist, wie Sie sagten, bin ich mir nicht sicher, ob es wichtig wäre, wenn Sie es auf der Website eines kleinen Unternehmens verwenden würden, solange Sie sich bewusst sind, wo sich die Kundenbasis befindet.
Alles in allem denke ich, dass dies ein sehr nützliches Werkzeug sein wird.
Cooles Werkzeug, leider scheint die Demo mit RI-Postleitzahlen nicht zu funktionieren, wie jemand früher sagte, es könnten die führenden Nullen sein (RI-Postleitzahlen beginnen so).
@chris – wie Sie darauf hinweisen: Adressen sind schwierig. Ich glaube, ich habe eine Antwort darauf, kann sie Ihnen aber nicht codieren. Ein kleiner Dorn im Auge für uns, wir haben eine beträchtliche Summe für ein therapeutisches Bett bezahlt, das „nicht“ geliefert werden konnte, weil ihr Computer die Postleitzahl, zu der unser Gebiet vor 11 Monaten geändert worden war, nicht erkannte (kein Scherz). Die Wiederherstellungsversuche eskalierten bis hin zur Einbeziehung des „Get Gephardt“ (Ombudsman) des Fernsehens und brachten uns ein kostenloses Bett. Immer noch finde ich 5 Jahre später, dass einige Tankstellen unsere Postleitzahl nicht erkennen, wegen (Sie erraten es).
Das Postsystem ist kostenlos und haftbar, um Grenzen und Nummern nach eigenem Ermessen zu ändern. Daher sollte dies im besten Fall nur als etwas angesehen werden, um ein STANDARD-Feld „vorab auszufüllen“. 1) Zuerst die Postleitzahl abfragen (damit die meisten Leute sie ausfüllen); 2) Felder erweitern – mit vorab ausgefüllten Feldern (falls möglich); 3) WENN Ganzzahl, Regex, AJAX fehlschlägt: Warnung „Wir erkennen diese Postleitzahl nicht“ anzeigen; aber 4) Immer manuelle Eingabe durch den Benutzer zulassen und niemals verhindern.
Die Demo funktioniert bei mir nicht mit unseren lokalen Postleitzahlen wie 90260, 90278 usw. Habe FF 12 und IE8 ausprobiert
Ich habe die Demo mit 90260 (meine Postleitzahl) ausprobiert und sofort nach der Eingabe der 5./letzten Ziffer gab sie eine Fehlermeldung aus: „Keine echte Postleitzahl.“ Habe ein paar andere bekannte gültige Postleitzahlen ausprobiert, gleicher Fehler. Fehler ignoriert, Enter-Taste gedrückt & es leert das Feld, ohne Anzeige von Stadt, Bundesland (sehe leere Felder, die sofort verschwinden).
Vielen Dank
Craig
http://geocoder.ca bietet die gleiche Funktionalität seit 5 Jahren an. z.B.
http://geocoder.ca/?postal=K1R7S8&geoit=xml&jsonp=1&callback=test&standard=1
für Kanada
oder
http://geocoder.ca/?postal=10001&geoit=xml&jsonp=1&callback=test&standard=1 für die USA
es macht auch Reverse-Geocoding basierend auf Lat/Lon und mehr. und es war und ist immer kostenlos.
Wenn Sie weitere Funktionen benötigen, lassen Sie es mich wissen.
Wie wäre es, wenn die PLZ+4 in den USA einbezogen würde? Zum Beispiel: 75704-2933. Das könnte eine Adresse wie diese zurückgeben
123 Somewhere Street
Nowhere, Texas 75704
Ist das möglich?
Immer noch nur die Staaten (nicht international)
Das füge ich bald hinzu. Schauen Sie morgen wieder vorbei für ein funktionierendes Beispiel.
z.
erledigt
http://geocoder.ca/?postal=75704-2933&geoit=xml&jsonp=1&callback=test&standard=1&showcountry=1&moreinfo=1
Sehr schick, aber es funktioniert in IE-9 nicht – seufz
sehr cool! Aber leider lebe ich in Indonesien. Wie kann ich den Ländercode, die URL, den Bereich und die Anzahl ersetzen?
danke für Ihre Aufmerksamkeit
Das ist fantastisch und eine Strategie, die ich seit einiger Zeit mit einer von mir geführten Datenbank implementiere. Ich liebe diese API!
Ich mag auch die versteckten Elemente, die nach der Auswahl der Postleitzahl angezeigt werden, da ich die Postleitzahl immer über Stadt/Staat platziert habe und es immer etwas umständlich fand.
Ich werde vielleicht den Übergang nur für Stadt/Staat anstelle des gesamten Formulars verwenden.
Wie immer ein großartiger Beitrag, mein Freund!
Hallo! Nur zur Info für alle, die Ziptastic vielleicht nutzen. Wir haben unsere Datenbank aktualisiert, um mehr Länder zu unterstützen.
Manchmal funktioniert es in IE und manchmal nicht. Kann etwas behoben werden?
aber leider lebe ich in Indonesien. Wie kann ich den Ländercode, die URL, den Bereich und die Anzahl ersetzen?
Das ist wirklich brillant, ich finde es immer noch sinnlos, Stadt/Bundesstaat zu erfassen, wenn der Benutzer eine Postleitzahl eingibt.
Da es jetzt internationale Postleitzahlen unterstützt, könnte es eine Idee sein, das Beispiel zu aktualisieren, um Längen größer als 5 zuzulassen, da dies für internationale Postleitzahlen erforderlich ist.
Umwerfend. Das ist etwas, wonach ich gesucht habe.
Danke an den Autor. :)
Bis vor kurzem haben wir Google Maps verwendet, um dieses Problem zu lösen. Immer noch auf der Suche nach guten Alternativen. Für einige Projekte benötigen wir auch Geolocation, daher scheint die beste Wahl im Moment die Einrichtung unserer eigenen Nominatim-Installation mit Daten von openstreetmap.org zu sein.
Hallo Chris,
Ich verfolge Ihre Artikel und lerne so viel daraus. Danke, dass Sie eine meiner Inspirationen beim Erstellen schöner Websites sind. Ich freue mich auf Ihre weiteren Artikel, die mir wirklich sehr geholfen haben.
Das ist großartige Arbeit!!!
Kann ich die Quelldaten aus My SQL ziehen?
Die MySQL-Datenbank ist lokal und heißt Psyc mit einer Tabelle namens Zip
Ich habe die folgenden Felder in der Zip-Tabelle
Stree1
Stree 2
City
State
Zip
Ich brauche wirklich Daten aus MySQL, daher schätze ich jede Hilfe sehr.
Danke im Voraus,
cibsrk
Hmm, ich habe die Vorwahl für Chicago, 60657, ausprobiert und es wurde die Stadt Graceland angezeigt. Das ist falsch.
Vielleicht liegt es daran, dass sie die Vorwahl auf mehr als fünf Ziffern umgestellt haben? Die offizielle Vorwahl für das Gebiet, nach dem ich in Chicago suche, ist 60657-2012
Weiß jemand, warum die Stadt zerstückelt hereinkommt?
Zum Beispiel: 19103
PHILA, PA
Warum wird der vollständige Name Philadelphia nicht ausgeschrieben? Gibt es eine Möglichkeit, das zu bekommen?
Außerdem funktioniert es in keiner Version von IE :(
Ich weiß nicht warum… Jemand?
Dieser Code funktioniert nicht für indische Postleitzahlen wie 160015,456001,208214,452001……………..
Wir brauchen ein Produkt, das die Postleitzahl eingibt… ich habe Name, Adresse, Stadt und Bundesland… suche nur nach der Postleitzahl… gibt es ein solches Produkt? danke~laura
(Nicht das Datum hier… drei Jahre später, während ich schreibe.)
Jemand sagte mir „Ziptastic ist tot“, aber die Website scheint lebendig und gut. Ich bin mir nicht sicher, was dort los ist. Die Demo schlägt auch auf dieser Website fehl, sieht so aus, als ob die Ajax-Anfrage fehlschlägt (404?).
Dies wurde als Alternative empfohlen: https://code.google.com/archive/p/ziplookup/
Ich werde dies stattdessen oben im Artikel platzieren, wenn ich eine Bestätigung über den Zustand von Ziptastic erhalte.