Gibt es eine Möglichkeit, den Benutzer Lage zu erhalten, ohne die Benutzer von Google Gears installieren zu müssen?

StackOverflow https://stackoverflow.com/questions/313805

Frage

Ich will nicht den Benutzer haben, installieren Sie Google Gears, so kann ich ihm seine vermutete Lage zeigen. Gibt es eine Möglichkeit, die Lage zu bekommen, ohne Google Gears verwenden?

Ich habe gefunden, http://www.wipmania.com/de/ Blog / google-Geolocation-api / aber nicht ein Beispiel an.

War es hilfreich?

Lösung

Dies ist in der Regel IP-Geolokalisierung genannt.

Ein Beispiel ist hier .

Die Sache ist, die meisten Seiten (wenn Sie beim Aufruf dieser als Web-Service-Plan) wird es Ihnen berechnen. Andernfalls werfen gemeinsam einen Web-Service, der eine Geolocation-Seite packt, analysiert er die Adresse und gibt die gewünschten Informationen.

In PHP, das scheint ziemlich gut zu funktionieren:

<?php
 if(isset($_GET["ip"])){
   echo geolocate($_GET["ip"]);
 }

 function geolocate($ip){
   $raw_html = file_get_contents("http://www.geody.com/geoip.php?ip=$ip");
   if(preg_match('/Location:(.*)/',$raw_html,$matches)){
     $location_raw = $matches[1];

     //Get rid of pesky HTML tags
     $location = preg_replace("/<[^>]*>/","",$location_raw);
     return $location;
   }else{
     return "ERROR";
   }
 }

Andere Tipps

Google bietet eine Möglichkeit, den Standort des Nutzers zu erhalten über das AJAX API loader . Dies wird auch ohne Getriebe arbeitet installiert. Fügen Sie einfach ein Skript-Tag auf die JSAPI zeigen:

<script type="text/javascript" 
   src="http://www.google.com/jsapi?key=ABCDEFG">
</script>

Wenn eine Anwendung den Einsatz der AJAX API-Loader macht, versucht der Loader den Client auf seine IP-Adresse basierend auf geo lokalisieren. Wenn dieser Prozess erfolgreich ist, Standort des Kunden, auf die U-Bahn-Ebene scoped, befindet sich in der google.loader.ClientLocation Eigenschaft zur Verfügung gestellt. Wenn der Prozess um eine Übereinstimmung zu finden, fehlschlägt, wird diese Eigenschaft auf null gesetzt.

if (google.loader.ClientLocation){
  var center = new google.maps.LatLng(
    google.loader.ClientLocation.latitude,
    google.loader.ClientLocation.longitude
  );
  map.setCenter(center);
}

Wenn bevölkert, das google.loader.ClientLocation Objekt wird mit den folgenden U-Bahn-Ebene Granularität Eigenschaften bevölkert:

  • ClientLocation.latitude - liefert die niedrige Auflösung Breite mit der Client-IP-Adresse zugeordnet ist
  • ClientLocation.longitude - liefert die niedrige Auflösung Länge mit der Client-IP-Adresse zugeordnet ist
  • ClientLocation.address.city - liefert den Namen der Stadt mit der Client-IP-Adresse zugeordnet ist
  • ClientLocation.address.country - liefert den Namen des Landes mit der Client-IP-Adresse zugeordnet ist
  • ClientLocation.address.country_code - liefert den Namen der ISO 3166-1-Ländercode mit der Client-IP-Adresse zugeordnet ist
  • ClientLocation.address.region - liefert die länderspezifischen Region Name mit der Client-IP-Adresse zugeordnet ist

Eine Sache, aufpassen, um mit einem Geolocation-Dienst oder eine Bibliothek ist, dass sie nie 100% korrekt sein werden. Wir verwenden ein, IP2Location , und es hat tatsächlich eine stetige Quelle von Beschwerden an unseren Kundendienst gewesen. Wir suchen nach Wegen, um das Verhalten der Website und unter Abwägung der Faktoren zu entfernen, es vollständig aus.

verändern

Das Problem liegt in der Tatsache, dass die Belastung die IP mit einem Benutzer assoziieren mit den Benutzern ISP ist. Sie haben große Blöcke von IP-Bereiche, und sie registrieren, welche Blöcke zu einer bestimmten Stelle gehören. Das Problem ist, dass ISPs oft nicht über diese Informationen aktualisieren, wenn sie blockiert oder ein Block umfasst zu groß einen Bereich verschieben.

Zum Beispiel habe ich leben etwa 60 Meilen nördlich von Manhattan, aber meine IP zeigt oft, dass ich in Chicago bin mit den meisten der Lookup-Tools. Ich habe FIOS, und haben ein paar anderen Leuten gesprochen, die das gleiche Verhalten bestätigt haben.

Sie können HTML5 verwenden für diesen Zweck. Das ist ziemlich einfach. Hier ist Beispiel.

Wenn die Benutzer auf mobil sind, Xitfy ist auch eine kostenlose Option. Sie haben einen kleinen Client, dass, nachdem der Benutzer verpflichtet sich nahtlos auf ihrem Handy installiert werden. Sie können dann eine REST-basierte API aufrufen, ihre genaue lat / lon von GPS / Wi-Fi oder Zelle Turm sourced zu erhalten.

Sie unterstützen Android, Windows Mobile, Blackberry und Symbian, die fast alle Smartphones abdeckt.

Sie können die IP-Adresse mit diesem einfachen Code geocodiert. Es funktioniert großartig. Versuchen Sie folgendes:

function functionname(Your IP Here)
{

    $ip = $ClientIP;

    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true");

    $json = json_decode($json,true);

    return $json;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top