Ich brauche eine repräsentative kanadische Postleitzahl basierend auf Stadt und Provinz Name. Mein erster Ansatz war es, die Geokodierungs-API von Google zu verwenden, um Stadt, Provinz in umgekehrten Geocode umzuwandeln, um die übereinstimmende Adresse zu erhalten und die Postleitzahl daraus zu extrahieren. Die Stadt und die Provinz kommen von einem Formular, das die Google Maps-Autocomplete verwendet, sodass ich weiß, dass sie (zumindest fast) immer gültig sind. In einigen Tests funktioniert das gut, aber ich stieß schnell auf einen Fall in unseren tatsächlichen Daten, der scheitert: Snow Lake, Manitoba.So finden Sie zuverlässig Postleitzahlen von Google Reverse Geocoding
https://maps.googleapis.com/maps/api/geocode/json?address=Snow+Lake%2C+Manitoba&key=MYKEY
In der Geometrie Abschnitt, erhalte ich:
location
lat 54.87856679999999
lng -100.0220321
location_type "APPROXIMATE"
Aber immer, wenn ich eine Suche nach diesem Ort tun (einschließlich Maß an Präzision variiert), erhalte ich Ergebnisse zurück, die nicht enthalten eine Postleitzahl.
https://maps.googleapis.com/maps/api/geocode/json?latlng=54.8785668,-100.0220321&key=MYKEY
Ich habe dies auch versucht, mit den place_id
, die aus verschiedenen Dingen zurückgegeben werden, aber kein Glück. Seltsam ist, wenn ich auf der regulären Google Maps-Seite nach Snow Lake, Manitoba suche, es genau aufspürt und mir sagt, dass die Postleitzahl R0B 1M0 ist. Warum gibt ihre Site gute Informationen, aber nicht die API? Selbst wenn ich den Standort in meiner zweiten URL durch den Standort ersetzen soll, den Google Maps in der URL nach meiner Suche hat (54.8808471, -100.0274579), bekomme ich immer noch keine Postleitzahl, auch wenn ich eine Adresse verwende, die es gibt für diesen Ort (531 Lakeshore Drive).
Durch Versuch und Irrtum (Blick auf die Google Map für einige Straßennamen), fand ich, dass die Suche 117 Balsam St. gibt sowohl eine Postleitzahl und einen Ort, den ich Geocode umkehren können, um eine Postleitzahl zu erhalten. Aber meine eingehenden Daten haben keine Straßennamen oder Nummern, nur Stadt und Provinz, also ist das keine Lösung. Diese Adresse gibt mir ROOFTOP für den location_type, nicht APPROXIMATE oder RANGE_INTERPOLATED, die ich für einige andere bekomme.
Wer weiß, was der Deal hier ist? Gibt es eine zuverlässige Methode, die ich verwenden kann, um zu bekommen, was ich von dieser API benötige, oder wird es einfach ein Hit-and-Miss-Angebot sein?
Hervorragend, vielen Dank! Das funktioniert perfekt. Ich fing an, eine weitere Frage darüber zu formulieren, dass ich keine Ergebnisse für London, Ontario, sondern für London, England erhielt, aber dann begann es auf geheimnisvolle Weise zu arbeiten. Vielleicht wurde ich mit all meinen Debugging-Anfragen so trainiert, dass ich nur an kanadischen Adressen interessiert bin ... –