2010-12-12 57 views
-1

comment puis-je faire this ou comme this?Meilleur moyen de localiser les utilisateurs

Existe-t-il un service Web gratuit pour détecter l'emplacement des utilisateurs?

Je veux l'utiliser dans une page Web

Évitez le maintien d'une énorme base de données d'adresses IP et leur emplacement!

Mes priorités sont les suivantes: Le service devrait être: 1.Free 2.Most précise

Répondre

2

De http://blog.programmableweb.com/2009/03/31/3-free-ways-to-geolocate-by-ip/ j'ai eu

Hostip.info est une base de données alimentée communauté de cartographie IP. Son API REST est facile à intégrer dans le code côté serveur, avec plusieurs options pour le type de sortie. Consultez notre profil API hostip.info, où vous pouvez voir les mashups utilisant déjà cette API.

MaxMind-Geo Lite est une API d'un type différent. Plutôt que d'appeler un service Web, sa version gratuite est distribuée en tant que binaire. Il existe des bibliothèques open source pour les langages de programmation communs pour accéder aux données IP.

Voir aussi http://www.eggheadcafe.com/articles/20051109.asp

question similaires: https://stackoverflow.com/questions/283016/know-a-good-ip-address-geolocation-service

+0

Combien précis sont tous ceux-ci? À quelle profondeur peuvent-ils localiser une banlieue de la ville? – Pratik

+0

Hostip.info ne fonctionne pas.Par exemple vérifier ceci: 116.72.105.74 – Pratik

+0

Il est également plus disponible, consultez mon service https://ipdata.co – Jonathan

0

J'utilise GeoIP Country Lite. Chaque mois, ils publient des mises à jour de la base de données et revendiquent une précision de 99,5%. Il est trivial à utiliser car ils fournissent également le code de la bibliothèque pour interroger la base de données. MaxMind fournit également des recherches en ville si vous avez besoin d'une résolution plus élevée que par pays.

+0

Y at-il un service Web gratuit pour détecter l'emplacement des utilisateurs? – Pratik

+0

La base de données MaxMind City est disponible [ici] (http://www.maxmind.com/app/geolitecity) et revendique une précision de 79% aux États-Unis dans un rayon de 25 miles. – cspolton

+1

J'utilise le service web ip2location de http://www.fraudlabs.com. Ils ont un compte gratuit et une clé de licence –

0

L'API HTML5 fonctionne dans les navigateurs Géolocalisation jamais (Safari, Chrome, Firefox), mais il nécessite une sorte de service de localisation sur l'ordinateur. J'utiliserais ceci d'abord, puis je me replierais sur place par IP si la géolocalisation HTML5 n'est pas disponible. Exemple de code:

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function (pos) { 
    console.log([pos.latitude, pos.longitude]); 
    }, function (err) { 
    // Do something else, IP location based? 
    }); 
} else { 
    // Do something else, IP location based? 
} 

Pour trouver le pays, la ville et même l'adresse de l'utilisateur, vous pouvez utiliser Google Maps Geocoding API

+0

Que dans le cas de Internet Explorer 7/8 et Opera – Pratik

+0

Opéra oui, IE non. – adamse

0

Cela fonctionne très bien pour autant je l'ai testé.

obtenir une clé api de ipinfodb.org

var Geolocation = new geolocate(false, true); 
Geolocation.checkcookie(function() { 
    alert('Visitor latitude code : ' + Geolocation.getField('Latitude')); 
    alert('Visitor Longitude code : ' + Geolocation.getField('Longitude')); 
}); 

function geolocate(timezone, cityPrecision) { 
    alert("Using IPInfoDB"); 
    var key = 'your api code'; 
    var api = (cityPrecision) ? "ip_query.php" : "ip_query_country.php"; 
    var domain = 'api.ipinfodb.com'; 
    var version = 'v2'; 
    var url = "http://" + domain + "/" + version + "/" + api + "?key=" + key + "&output=json" + ((timezone) ? "&timezone=true" : "&timezone=false") + "&callback=?"; 
    var geodata; 
    var JSON = JSON || {}; 

    // implement JSON.stringify serialization 
    JSON.stringify = JSON.stringify || function (obj) { 
     var t = typeof (obj); 
     if (t != "object" || obj === null) { 
      // simple data type 
      if (t == "string") obj = '"'+obj+'"'; 
      return String(obj); 
     } 
     else { 
      // recurse array or object 
      var n, v, json = [], arr = (obj && obj.constructor == Array); 
      for (n in obj) { 
       v = obj[n]; t = typeof(v); 
       if (t == "string") v = '"'+v+'"'; 
       else if (t == "object" && v !== null) v = JSON.stringify(v); 
       json.push((arr ? "" : '"' + n + '":') + String(v)); 
      } 
      return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}"); 
     } 
    }; 

    // implement JSON.parse de-serialization 
    JSON.parse = JSON.parse || function (str) { 
     if (str === "") str = '""'; 
     eval("var p=" + str + ";"); 
     return p; 
    }; 

    // Check if cookie already exist. If not, query IPInfoDB 
    this.checkcookie = function(callback) { 
     geolocationCookie = getCookie('geolocation'); 
     if (!geolocationCookie) { 
      getGeolocation(callback); 
     } 
     else { 
      geodata = JSON.parse(geolocationCookie); 
      callback(); 
     } 
    } 

    // Return a geolocation field 
    this.getField = function(field) { 
     try { 
      return geodata[field]; 
     } catch(err) {} 
    } 

    // Request to IPInfoDB 
    function getGeolocation(callback) { 
     try { 
      $.getJSON(url, 
        function(data){ 
       if (data['Status'] == 'OK') { 
        geodata = data; 
        JSONString = JSON.stringify(geodata); 
        setCookie('geolocation', JSONString, 365); 
        callback(); 
       } 
      }); 
     } catch(err) {} 
    } 

    // Set the cookie 
    function setCookie(c_name, value, expire) { 
     var exdate=new Date(); 
     exdate.setDate(exdate.getDate()+expire); 
     document.cookie = c_name+ "=" +escape(value) + ((expire==null) ? "" : ";expires="+exdate.toGMTString()); 
    } 

    // Get the cookie content 
    function getCookie(c_name) { 
     if (document.cookie.length > 0) { 
      c_start=document.cookie.indexOf(c_name + "="); 
      if (c_start != -1){ 
       c_start=c_start + c_name.length+1; 
       c_end=document.cookie.indexOf(";",c_start); 
       if (c_end == -1) { 
        c_end=document.cookie.length; 
       } 
       return unescape(document.cookie.substring(c_start,c_end)); 
      } 
     } 
     return ''; 
    } 
}