2014-05-22 5 views
5

Ich bin kein Programmierer oder Programmierer, aber ich habe jemanden eingestellt, um dies für mich zu tun. Ich bin auch nicht völlig naiv, wenn es um Computerfähigkeiten geht ...Nächste Stadt mit Google Maps API

Ich werde vom Entwickler gesagt, dass es unmöglich ist, geocode in google maps api umzukehren und es die korrekte Stadt genau zurückzugeben. Ich glaube das nicht, weil ich sehe, dass die API eine formatierte Adresse mit der Stadt zurückgibt. Der Entwickler sagt, dass sie nur ein Feld von der API ziehen können und weil Stadtnamen entweder in dem Ortsfeld oder den Nachbarschaftsfeldern liegen, können sie nicht bestimmen, welche für die verschiedenen Koordinaten zu verwenden sind. Sind das wahre Aussagen?

Mir wird auch gesagt, dass umgekehrte Geokodierung für die nächste Stadt, wenn die Koordinaten über Wasser (meist im Meer) existiert, unmöglich ist. Zum Beispiel ist es wahr, dass eine Koordinate 5 Meilen direkt westlich von San Diego ist unmöglich, San Diego als nächste Stadt zurückzukehren?

Ich habe hier nach Lösungen gesucht und ein paar verwandte dazu gefunden, die ich an den Entwickler weitergeleitet habe ... aber ich hoffe, diesen genauen Thread zu nehmen und es ihnen auch zu zeigen. Sind diese Dinge wirklich unmöglich mit Google Maps API?

Vielen Dank für die Hilfe!

+11

Ich fühle mich schlecht für den Mann, den Sie eingestellt haben. :) – DaImTo

+3

[** klicke auf Wasser und erhalte die Geocoding-Ergebnisse **] (http://gmaps-samples-v3.googlecode.com/svn/trunk/geocoder/v3-geocoder-tool.html) –

+0

@Dr .Molle, es gibt keine Ergebnisse auf dem Wasser. – user3663613

Antwort

7

In diesem Dokument für reverse geocoding in der Google Maps JavaScript-API finden Sie eine detaillierte Beschreibung zum Konvertieren von Koordinaten in eine lesbare Adresse.

Ihre erste Aussage ist eine Art wahr:

Sie alle Felder aus den Feldern in den Ergebnissen der Geocoder bei Bedarf lesen. Wenn das address_components Array ein Element in types hat, ist der Name der Stadt ein Teil davon. Aber es ist NICHT garantiert, dass immer dieses Element oder das gewünschte Element enthalten ist. Werfen Sie einen Blick auf die Hierarchie der Typen im obigen Link, die Teil der Antwort sein können. Wenn Sie sagen, Sie müssen die Elemente neighborhood und locality suchen, klingt es für mich, Sie wollen einen bestimmten Namen erzwingen. Dies ist fast unmöglich zu bestimmen.

Der zweite Staat, über die nächste Stadt ist wahr. Hier ist eine Aussage aus der Dokumentation:

Reverse-Geocoding ist keine exakte Wissenschaft. Der Geocodierer versucht , den nächstgelegenen adressierbaren Ort innerhalb einer bestimmten Toleranz zu finden.

Über die Dimensionen dieser Toleranz wird nichts ausgesagt. Ihr Beispiel von 5 Meilen westlich von San Diego kann Daten über San Diego, den Nordpazifik oder Coronado, die in San Diego County ist, zurückgeben.

Vertrauen Sie Ihrem Entwickler!

Bearbeiten: Es hängt davon ab, was Sie tun möchten. Wenn du immer den Namen der Stadt in deiner Anfrage haben willst, vergiss es, du kannst das nicht garantieren.

Es gibt einige Postleitzahl APIs, die in diesem answer beschrieben werden. Aber wieder müssen Sie die Postleitzahl irgendwie bekommen, und die postal_code ist nicht immer Teil der Antwort. Es gibt keine anderen APIs wie Geocodierungs-APIs, die Koordinaten in lesbare Adressen umwandeln können. Aber es gibt einige da draußen aufgeführt here.

+0

So gibt es keine Möglichkeit, eine Stadt zu ziehen, in der sich ein Pin-Drop in Google Maps API befindet? Das scheint mir unmöglich, aber wenn mehr als eine Person mir etwas sagt, fällt es mir schwer zu glauben, ich bin eher aufgeschlossen. Gibt es dann Alternativen? Zipcoode Nachschlagen? Andere API? – user3663613

+0

@ user3663613 Siehe meine Bearbeitung. –

0

Es ist möglich zu erreichen, was Sie wollen. Ich denke, die meisten Leute versuchen, dass Google die Arbeit für sie erledigt, und deshalb ist es schwierig, eine Lösung zu finden.

Sie wollen die nächste Stadt. Alles, was Sie tun müssen, ist die Koordinaten abzufragen. Wenn ein Adresstyp "Lokalität" existiert, ist das Ihre Stadt. Wenn nicht, machen Sie eine neue Anfrage für einen nahegelegenen Punkt und wiederholen Sie diese, bis Sie ein Ergebnis mit "Lokalität" gefunden haben.

Basierend auf dem Algorithmus, mit dem Sie Ihren Anfangspunkt suchen, können Sie die Genauigkeit und die Anzahl der Anfragen anpassen, die Sie benötigen, um Ihre Antwort zu finden.