2010-02-16 2 views
2

Ce serait un avantage important pour mon entreprise si nous pouvions afficher des informations correspondant à l'emplacement d'un utilisateur quand ils atteignent la page d'accueil de notre site Web. Je comprends qu'essayer d'obtenir la géolocalisation à partir d'une seule adresse IP n'est pas une science exacte, mais nous sommes prêts à prendre ce que nous pouvons obtenir. Quelles sont les techniques disponibles pour déterminer les emplacements approximatifs d'un utilisateur Web?Comment puis-je obtenir l'emplacement géographique approximatif d'un internaute?

+0

où souhaitez-vous recueillir ces données? du client lors de l'interaction avec votre site, par ex. formulaire de soumission ou de connexion, ou sur le serveur déclenché par un arbitrage même? –

+0

@Sky Sanders: Cette information doit être disponible sur la page d'accueil, sans connaître préalablement l'utilisateur ou en lui demandant de spécifier son emplacement (si possible). –

+0

'sur' la page d'accueil. cela signifie-t-il que le serveur doit savoir servir le contenu géocentrique ou qu'il y aura une carte ou un javascript côté client géocentrique consommant l'information. –

Répondre

5

votre meilleur pari est d'utiliser les google apis. Vous pouvez définir l'adresse IP dans un champ de formulaire soumis. Ou vous pouvez utiliser un .net api

google.loader.ClientLocation to get a person's lat/long using their IP address


<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script type="text/javascript" src="http://www.google.com/jsapi?key=ABQIAAAALDWeTDQHOJCbCf0JnUqL8BT2yXp_ZAY8_ufC3CFXhHIE1NvwkxQA7AE8xB9MyWgHECPY2qimOp7BUQ"></script> 
    <script src="scripts/clientLocation.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     function $g(id) { 
      return document.getElementById(id); 
     } 

     function displayLocation(latitudeEl, longitudeEl, cityEl, regionEl, countryEl, country_codeEl) { 
      var cloc = new ClientLocation.Location(google.loader.ClientLocation); 
      if (latitudeEl) latitudeEl.innerHTML = cloc.latitude; 
      if (longitudeEl) longitudeEl.innerHTML = cloc.longitude; 
      if (cityEl) cityEl.innerHTML = cloc.address.city; 
      if (regionEl) regionEl.innerHTML = cloc.address.region; 
      if (country) country.innerHTML = cloc.address.country; 
      if (country_codeEl) country_codeEl.innerHTML = cloc.address.country_code; 
     } 

     function init() { 
      displayLocation($g("latitude"), $g("longitude"), $g("city"), $g("region"), $g("country"), $g("country_code")); 
     } 
    </script> 

</head> 
<body onload="init()"> 
    <form id="form1" runat="server"> 
    <div> 
     latitude : <span id="latitude"></span> 
     <br /> 
     longitude : <span id="longitude"></span> 
     <br /> 
     city : <span id="city"></span> 
     <br /> 
     region : <span id="region"></span> 
     <br /> 
     country : <span id="country"></span> 
     <br /> 
     country_code : <span id="country_code"></span> 
     <br /> 
    </div> 
    </form> 
</body> 
</html> 

// <copyright file="clientLocation.js" company="Sky Sanders"> 
// This source is placed in the Public Domain. 
// http://skysanders.net/subtext 
// Attribution is appreciated. 
// </copyright> 


/* 
object literal format for google.loader.clientlocation 
{ 
"latitude": 33.324, 
"longitude": -111.867, 
"address": { 
"city": "Chandler", 
"region": "AZ", 
"country": "USA", 
"country_code": "US" 
} 
} 
*/ 

var ClientLocation = {}; 

ClientLocation.Address = function() { 
    /// <field name="city" type="String" /> 
    /// <field name="region" type="String" /> 
    /// <field name="country" type="String" /> 
    /// <field name="country_code" type="String" /> 
    /// <returns type="ClientLocation.Address"/> 
    if (arguments.length > 0) { 
     this.city = arguments[0].city; 
     this.region = arguments[0].region; 
     this.country = arguments[0].country; 
     this.country_code = arguments[0].country_code; 
     return; 
    } 
    else { 
     this.city = ""; 
     this.region = ""; 
     this.country = ""; 
     this.country_code = ""; 
    } 

} 
ClientLocation.Location = function() { 
    /// <field name="latitude" type="Number" /> 
    /// <field name="longitude" type="Number" /> 
    /// <field name="address" type="ClientLocation.Address" /> 
    if (arguments.length > 0) { 

     this.latitude = arguments[0].latitude; 
     this.longitude = arguments[0].longitude; 
     this.address = arguments[0].address; 

    } 
    else { 
     this.latitude = 0; 
     this.longitude = 0; 
     this.address = undefined; 
    } 

} 
+0

Regarde approprié à mes besoins. Je vais avoir une plongée. –

2

Vous ne pouvez pas dire à coup sûr et il peut être inexact, mais les services existent pour mapper les adresses IP à leur emplacement géographique.

Je viens Binged pour elle et je suis arrivé: http://www.ip2location.com/

Ils ont tendance à avoir besoin d'abonnements à leur service, bien que

1

La meilleure option est d'autoriser les données de quelqu'un comme MaxMind - ils utilisent beaucoup de différentes méthodes, dont certaines très astucieuses, pour trouver l'emplacement associé à une adresse IP et dans mon expérience, leurs données sont assez faciles à intégrer.

Questions connexes