2009-02-27 10 views
11

Je travaille actuellement sur un site Web d'exposition. Je vais afficher les informations de présentation par emplacement pour l'utilisateur triées de différentes manières.Comment trouver automatiquement l'emplacement d'un utilisateur?

Je sais je pouvais demander à l'utilisateur où ils se trouvent quand ils signent dans le site, mais je l'ai remarqué que de nombreux sites ont cette capacité construite pour détecter automatiquement l'emplacement (exemple, voir Last.fm « Événements: Liste des concerts dans votre région ").

Comment font-ils cela? Je construis actuellement mon site web dans Ruby on Rails.

+0

N'oubliez pas de modifier certaines réponses que vous aimez, et éventuellement marquer une réponse acceptée. Les gens peuvent toujours utiliser des encouragements. – GEOCHET

+0

j'ai mis trois réponses en sourdine. Mais quelqu'un est descendu en votant tout. – CodingWithoutComments

+0

@Coding: Intéressant. Continuez alors, bonne question. – GEOCHET

Répondre

1

Ils utilisent généralement la résolution IP par tables IP. ip2nation pourrait donner une idée

9

Voici un lien vers la documentation sur l'API Google Maps pertinente:

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

Il montre un exemple de la façon de l'utiliser:

/** 
* 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"; 
} 

Et vous dit ce que vous en obtiendrez:

Lorsque peuplée, l' google.loader.ClientLocation objet est peuplé avec les propriétés de granularité niveau de métro suivantes:

  • ClientLocation.latitude - fournit la latitude basse résolution associée à l'adresse IP du client

  • ClientLocation.longitude - fournit la longitude basse résolution associée à l'adresse IP du client

  • ClientLocation.address.city - fournit le nom du ville e associée à l'adresse IP du client

  • ClientLocation.address.country - fournit le nom du pays associé à l'adresse IP du client

  • de ClientLocation.address.country_code - fournit le nom du code de pays ISO 3166-1 associé avec l'adresse IP du client

  • de ClientLocation.address.region - fournit le nom de la région spécifique du pays associé à l'adresse IP du client

+0

c'est cool merci. – CodingWithoutComments

+0

Je suis un peu nouveau dans la communauté, donc c'est peut-être faux, mais comment ajouter un extrait de la page à la réponse? Il va encore devoir cliquer sur le lien pour utiliser l'API, n'est-ce pas? – runako

+1

@runako: L'idée est que SO soit un wiki plein d'informations. Donc, avoir un lien est un bon début, mais donner plus d'informations pour donner à quelqu'un une bonne longueur d'avance est encore mieux. – GEOCHET

0

Il y a une nouvelle façon, en fait c'est la meilleure façon de trouver l'emplacement géographique, parce que le navigateur prendra nativement en charge l'API W3C pour la géolocalisation ... Vous devriez vérifier GeoMereLaal.

Questions connexes