Ich habe es geschafft, den Breiten- und Längengrad des Benutzers mithilfe der HTML-basierten Geolokalisierung zu ermitteln.
//Check if browser supports W3C Geolocation API
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
}
//Get latitude and longitude;
function successFunction(position) {
var lat = position.coords.latitude;
var long = position.coords.longitude;
}
Ich möchte den Namen der Stadt anzeigen. Der einzige Weg, ihn zu erhalten, ist die Verwendung einer Reverse-Geolocation-API. Ich habe die Google-Dokumentation zur umgekehrten Geolokalisierung gelesen, weiß jedoch nicht, wie ich die Ausgabe auf meiner Website erhalten soll.
Ich weiß nicht, wie ich das verwenden soll: "http://maps.googleapis.com/maps/api/geocode/json?latlng='+lat+','+long+'&sensor=true"
um den Namen der Stadt auf der Seite anzuzeigen.
Wie kann ich das erreichen?
javascript
html
geolocation
lisovaccaro
quelle
quelle
Antworten:
Sie würden so etwas mit der Google-API tun.
Bitte beachten Sie, dass Sie die Google Maps-Bibliothek einschließen müssen, damit dies funktioniert. Google Geocoder gibt viele Adresskomponenten zurück, sodass Sie eine fundierte Vermutung anstellen müssen, welche Stadt die Stadt haben wird.
"administrative_area_level_1" ist normalerweise das, wonach Sie suchen, aber manchmal ist der Ort die Stadt, nach der Sie suchen.
Wie auch immer - weitere Details zu Google-Antworttypen finden Sie hier und hier .
Unten ist der Code, der den Trick machen sollte:
quelle
Ein anderer Ansatz besteht darin, meinen Dienst http://ipinfo.io zu verwenden , der den Namen der Stadt, Region und des Landes basierend auf der aktuellen IP-Adresse des Benutzers zurückgibt. Hier ist ein einfaches Beispiel:
Hier ist ein detaillierteres JSFiddle-Beispiel, in dem auch die vollständigen Antwortinformationen ausgedruckt werden, sodass Sie alle verfügbaren Details sehen können: http://jsfiddle.net/zK5FN/2/
quelle
Für die Verwendung der HTML5-Geolokalisierung ist eine Benutzerberechtigung erforderlich. Wenn Sie dies nicht möchten, wählen Sie einen externen Locator wie https://geolocation-db.com. IPv6 wird unterstützt. Keine Einschränkungen und unbegrenzte Anfragen erlaubt.
Beispiel
Ein Beispiel für ein reines Javascript ohne Verwendung von jQuery finden Sie in dieser Antwort.
quelle
Sie können den Namen der Stadt, des Landes, des Straßennamens und anderer Geodaten mithilfe der Google Maps-Geokodierungs-API abrufen
und um diese Daten mit jQuery auf der Seite anzuzeigen
quelle
Hier ist eine aktualisierte Arbeitsversion für mich, die Stadt / Stadt erhält. Es sieht so aus, als ob einige Felder in der JSON-Antwort geändert wurden. Verweisen auf frühere Antworten auf diese Fragen. (Danke an Michal & eine weitere Referenz: Link
quelle
geolocator.js kann das. (Ich bin der Autor).
Stadtnamen abrufen (begrenzte Adresse)
Vollständige Adressinformationen abrufen
Im folgenden Beispiel wird zunächst die HTML5-Geolocation-API ausprobiert, um die genauen Koordinaten zu erhalten. Wenn dies fehlschlägt oder abgelehnt wird, wird auf die Geo-IP-Suche zurückgegriffen. Sobald die Koordinaten abgerufen wurden, werden die Koordinaten in eine Adresse umgekehrt geocodiert.
Dies verwendet intern Google APIs (für die Adressensuche). Vor diesem Aufruf sollten Sie Geolocator mit Ihrem Google API-Schlüssel konfigurieren.
Geolocator unterstützt Geolokalisierung (über HTML5- oder IP-Lookups), Geocodierung, Adressensuche (umgekehrte Geocodierung), Entfernung und Dauer, Zeitzoneninformationen und viele weitere Funktionen ...
quelle
Nachdem ich ein paar verschiedene Lösungen zusammen mit meinen eigenen Sachen gesucht und zusammengesetzt hatte, kam ich auf diese Funktion:
quelle
Sie können https://ip-api.io/ verwenden. , um den Namen der Stadt abzurufen. Es unterstützt IPv6.
Als Bonus kann überprüft werden, ob es sich bei der IP-Adresse um einen Tor-Knoten, einen öffentlichen Proxy oder einen Spammer handelt.
Javascript Code:
HTML Quelltext
JSON-Ausgabe
quelle
Wie @PirateApp in seinem Kommentar erwähnt hat, verstößt es ausdrücklich gegen die Google Maps API-Lizenzierung, die Maps API wie beabsichtigt zu verwenden.
Sie haben eine Reihe von Alternativen, darunter das Herunterladen und lokale Abfragen einer Geoip-Datenbank oder die Verwendung eines API-Dienstes eines Drittanbieters, z. B. meines Dienstes ipdata.co .
ipdata gibt Ihnen die Geolokalisierung, Organisation, Währung, Zeitzone, Anrufcode, Flagge und Statusdaten des Tor-Exit-Knotens von einer beliebigen IPv4- oder IPv6-Adresse an.
Und ist skalierbar mit 10 globalen Endpunkten, die jeweils> 10.000 Anfragen pro Sekunde verarbeiten können!
Die Geige; https://jsfiddle.net/ipdata/6wtf0q4g/922/
quelle
Hier ist ein weiterer Versuch. Wenn Sie der akzeptierten Antwort mehr hinzufügen, ist dies möglicherweise umfassender. Natürlich lässt Switch-Case sie elegant aussehen.
quelle
Hier ist eine einfache Funktion, mit der Sie sie abrufen können. Ich habe Axios verwendet , um die API-Anfrage zu stellen, aber Sie können alles andere verwenden.
quelle