Ich benötige eine Liste von Ländern, Bundesstaaten und Städten, die auf einer Sammlung von Lat / Long-Werten basiert, die ich habe. Ich muss diese Informationen so speichern, dass die Hierarchie erhalten bleibt und keine Duplikate vorhanden sind (z. B. "USA" und "USA" und "Vereinigte Staaten von Amerika" sind dasselbe Land; ich möchte nur eine Instanz dieses Landes in meiner Datenbank haben). .
Ist dies mit der Google Map API möglich?
google-maps
geolocation
google-maps-api-3
geocoding
StackOverflowNewbie
quelle
quelle
Antworten:
Was Sie suchen, wird als umgekehrte Geokodierung bezeichnet . Google bietet über die Google Geocoding-API einen serverseitigen Reverse- Geocodierungsdienst an , den Sie für Ihr Projekt verwenden sollten.
So würde eine Antwort auf die folgende Anfrage aussehen:
Antwort:
Sie können sich auch dafür entscheiden, die Antwort in XML anstelle von JSON zu erhalten, indem Sie einfach XML in der Anforderungs-URI durch JSON ersetzen:
Soweit ich weiß, wird Google denselben Namen auch für Adresskomponenten zurückgeben, insbesondere für übergeordnete Namen wie Ländernamen und Städtenamen. Beachten Sie jedoch, dass die Ergebnisse für die meisten Anwendungen zwar sehr genau sind, Sie jedoch gelegentlich Rechtschreibfehler oder mehrdeutige Ergebnisse feststellen können.
quelle
sensor=false
dasHier haben Sie eine grundlegende Antwort: Ermitteln Sie den Namen der Stadt mithilfe der Geolokalisierung
Aber für das, was Sie suchen, würde ich diesen Weg empfehlen.
Nur wenn Sie auch administrative_area_level_1 benötigen, um verschiedene Dinge für Paris, Texas, USA und Paris, Ile-de-France, Frankreich zu speichern und einen manuellen Fallback bereitzustellen:
- -
Es gibt ein Problem in Michals Art, dass es das erste Ergebnis gibt, kein bestimmtes. Er verwendet Ergebnisse [0]. Ich halte es für richtig (ich habe gerade seinen Code geändert), NUR das Ergebnis zu nehmen, dessen Typ "Lokalität" ist, das immer vorhanden ist, selbst in einem eventuellen manuellen Fallback, falls der Browser die Geolokalisierung nicht unterstützt.
Sein Weg: Abgerufene Ergebnisse unterscheiden sich von der Verwendung von http://maps.googleapis.com/maps/api/geocode/json?address=bucharest&sensor=false von der Verwendung von http://maps.googleapis.com/maps/api/geocode /json?latlng=44.42514,26.10540&sensor=false (Suche nach Namen / Suche nach lat & lng)
Auf diese Weise: gleiche abgerufene Ergebnisse.
quelle
Ich habe diese Frage als Ausgangspunkt für meine eigene Lösung verwendet. Ich fand es angemessen, meinen Code zurückzugeben, da er kleiner als der von Tabacitu ist
Abhängigkeiten:
Code:
quelle
Ich fand das GeoCoder-Javascript ein wenig fehlerhaft, als ich es in meine JSP-Dateien aufnahm.
Sie können dies auch versuchen:
quelle
$.get(url).success(function(data)
zu$.get(url, function(data)
und es funktioniert gutIch habe diese Funktion geschrieben, die basierend auf der
address_components
von der gmaps-API zurückgegebenen Funktion extrahiert, wonach Sie suchen . Dies ist die Stadt (zum Beispiel).Wechsel
locality
zuadministrative_area_level_1
für den Staat etc.In meinem js-Code verwende ich wie folgt:
Wird zurückkehren:
Waltham, MA
quelle
Probieren Sie einfach diesen Code aus. Dieser Code funktioniert mit mir
quelle
Ich habe eine kleine Mapper-Funktion erstellt:
Es ist eine Lösung für Angular 4, aber ich denke, Sie werden auf die Idee kommen.
Verwendung:
Auf diese Weise wird das
address
Objekt ungefähr so aussehen:Ich hoffe es hilft!
quelle
quelle
@ Szkíta Hatte eine großartige Lösung, indem eine Funktion erstellt wurde, die die Adressenteile in einem benannten Array abruft. Hier ist eine kompilierte Lösung für diejenigen, die einfaches JavaScript verwenden möchten.
Funktion zum Konvertieren von Ergebnissen in das benannte Array:
Geocodieren Sie die LAT / LNG-Werte:
quelle