2009-02-27 5 views
11

Ich arbeite derzeit an einer Show-Website. Ich werde die Showinformationen nach Ort für den Benutzer anzeigen, die auf verschiedene Arten sortiert sind.Wie finde ich automatisch den Standort eines Nutzers?

ich weiß, ich könnte den Benutzer fragen, wo sie sich befinden, wenn sie zum ersten Mal in die Website anmelden, aber ich habe bemerkt, dass viele Websites diese Fähigkeit in Lage zu erkennen, automatisch aufgebaut haben (Beispiel siehe Last.fm „Ereignisse: Konzert-Angebote in Ihrer Nähe ").

Wie machen sie das? Ich baue gerade meine Website in Ruby on Rails.

+0

Vergessen Sie nicht, einige der Antworten, die Sie mögen, aufzufrischen und möglicherweise eine akzeptierte Antwort zu markieren. Menschen können immer Ermutigung nutzen. – GEOCHET

+0

Ich habe drei Antworten hochgestuft. Aber jemand hat alles abgestimmt. – CodingWithoutComments

+0

@ Codierung: Interessant. Mach weiter so, gute Frage. – GEOCHET

Antwort

1

Sie verwenden normalerweise IP-Auflösung von IP-Tabellen. ip2nation könnte eine Idee

9

Hier ist ein Link auf die Dokumentation auf dem entsprechenden Google Maps-API geben:

http://code.google.com/apis/ajax/documentation/#ClientLocation

Es zeigt ein Beispiel dafür, wie es zu benutzen:

/** 
* Set the currentState_ and currentCountry_ properties based on the client's 
* current location (when available and in the US), or to the defaults. 
*/ 
InTheNews.prototype.setDefaultLocation_ = function() { 
    this.currentState_ = this.options_.startingState; 
    if (google.loader.ClientLocation && 
     google.loader.ClientLocation.address.country_code == "US" && 
     google.loader.ClientLocation.address.region) { 

    // geo locate was successful and user is in the United States. range 
    // check the region so that we can safely use it when selecting a 
    // state level polygon overlay 
    var state = google.loader.ClientLocation.address.region.toUpperCase(); 
    if (InTheNews.stateNames[state]) { 
     this.currentState_ = state; 
    } 
    } 
    this.currentCountry_ = "US"; 
} 

Und sagt Ihnen, was Sie davon bekommen:

Wenn bevölkert, die google.loader.ClientLocation Objekt ist mit folgenden U-Bahn-Ebene bevölkerten Granularität Eigenschaften:

  • ClientLocation.latitude - liefert die niedrige Auflösung Breite mit der Client-IP-Adresse zugeordnet

  • ClientLocation.longitude - liefert die niedrige Auflösung Längengrad mit der IP-Adresse des Kunden

  • ClientLocation.address.city - liefert den Namen th e Stadt im Zusammenhang mit der IP-Adresse des Clients

  • ClientLocation.address.country - liefert den Namen des zugehörigen Land mit der IP-Adresse des Clients

  • ClientLocation.address.country_code - liefert den Namen des ISO-3166-1-Ländercode zugeordnet mit der Adresse des Client-IP-

  • ClientLocation.address.region - liefert die länderspezifischen Region Name mit der Client-IP-Adresse zugeordnet

+0

das ist cool, danke. – CodingWithoutComments

+0

Ich bin ein bisschen neu in der Community, also kann dies von der Basis abweichen, aber wie fügt das Hinzufügen eines Snippets von der Seite materiell zur Antwort hinzu? Er muss immer noch auf den Link klicken, um die API zu verwenden, oder? – runako

+1

@runako: Die Idee ist, dass SO ein Wiki voller Informationen ist. Die Verbindung ist also ein guter Anfang, aber es gibt noch mehr Informationen, um jemandem einen guten Vorsprung zu verschaffen. – GEOCHET

0

Es gibt einen neuen Weg, in der Tat ist es der bessere Weg, den geografischen Standort zu finden, da der Browser nativ die W3C API für Geolocation unterstützt ... Sie sollten GeoMereLaal auschecken.