2010-12-12 10 views
-1

Wie kann ich this oder wie this?Die beste Art, Benutzer zu finden

Gibt es einen kostenlosen Webservice, um den Standort von Benutzern zu erkennen?

Ich möchte diese

Vermeiden Sie eine riesige Datenbank von IP-Adressen verwenden, in einer Webseite zu erhalten und ihre Standorte!

Meine Prioritäten sind: 1.Free 2.Most

Antwort

2

Von http://blog.programmableweb.com/2009/03/31/3-free-ways-to-geolocate-by-ip/ bekam ich

Hostip.info eine Gemeinschaft betriebene ist Datenbank von IP-Zuordnung. Seine REST-API lässt sich leicht in den serverseitigen Code integrieren, mit mehreren Optionen für den Ausgabetyp. Sehen Sie sich unser API-Profil hostip.info an, in dem Sie die Mashups sehen, die diese API bereits verwenden.

MaxMind-Geo Lite ist eine API einer anderen Art. Anstatt einen Webdienst anzurufen, wird seine kostenlose Version als Binärdatei verteilt. Es gibt Open-Source-Bibliotheken für allgemeine Programmiersprachen, um auf die IP-Daten zuzugreifen.

Auch http://www.eggheadcafe.com/articles/20051109.asp

ähnliche Frage sehen: https://stackoverflow.com/questions/283016/know-a-good-ip-address-geolocation-service

+0

Wie viel genau sind all diese? Wie tief können sie eine Stadtvorstadt lokalisieren? – Pratik

+0

Hostip.info funktioniert nicht.Zum Beispiel überprüfen Sie dies: 116.72.105.74 – Pratik

+0

Es ist auch nicht mehr verfügbar, besuchen Sie meinen Dienst https://ipdata.co – Jonathan

0

I GeoIP Country Lite Accurate verwenden: Der Service sein sollte. Jeden Monat veröffentlichen sie Updates in der Datenbank und beanspruchen 99,5% Genauigkeit. Es ist trivial zu verwenden, da sie auch Bibliothekscode zum Abfragen der Datenbank bereitstellen.

MaxMind bietet auch stadtbasierte Suchfunktionen, wenn Sie eine höhere Auflösung als nach Land benötigen.

+0

Erhalten Gibt es eine kostenlose Web-Service-Standort der Nutzer zu erkennen? – Pratik

+0

Die MaxMind City-Datenbank ist [http://www.maxmind.com/app/geolitecity] verfügbar und sie beanspruchen 79% Genauigkeit in den USA innerhalb eines Radius von 25 Meilen. – cspolton

+1

Ich verwende den Webservice ip2location von http://www.fraudlabs.com. Sie haben kostenlosen Account und Lizenzschlüssel –

0

Die HTML5 Geolocation API funktioniert in Browsern nie (Safari, Chrome, Firefox), obwohl es eine Art von Standort-Dienst auf dem Computer benötigt. Ich würde das zuerst verwenden und dann auf IP-Adresse zurückfallen, wenn HTML5 Geolocation nicht verfügbar ist. Beispielcode:

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? 
} 

Um das Land, Stadt zu finden und sogar Adresse des Benutzers Sie Google Maps Geocoding API

+0

Was im Falle von Internet Explorer 7/8 und Opera – Pratik

+0

Opera ja, IE Nr. – adamse

0

Dies funktioniert gut ich es getestet, wie weit nutzen können.

einen API-Schlüssel von 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 ''; 
    } 
} 
Verwandte Themen