2013-08-04 22 views
6

Ich möchte ein PHP-Skript zusammensetzen, um den Namen der Stadt aufzulösen (nichts anderes wird benötigt) mit einer guten Auflösung nur für ein einzelnes Land (IRAN). Da ich die DB mehrmals abfragen muss, ist es besser, eine herunterladbare lokale Version zu durchlaufen. Ich habe die meisten Beiträge auf Stackoverflow gelesen und da jetzt habe ich diese getestet:Zuverlässige City-Level Geo-IP, kostenlose lokale Datenbank

  • GeoIP City von MaxMind klingt gut, ist aber nicht frei.
  • GeoIP von MaxMind, hat ein geringes Maß an Genauigkeit (ca. 50-60%)
  • ip2country.net eine IP-2-City Database, aber nicht frei und Städtenamen für den Iran nicht lösen.
  • Ich versuchte auch die DB#.Lite von ipinfodb.com, die eine API here ohne Erfolg hat. Das Problem ist, dass viele Stadtnamen nicht erkannt werden.
  • Ich versuchte auch hostip.info API, aber es scheint zu langsam zu sein.
  • Es gibt eine free php class mit lokaler DB, die nur den Ländernamen löst.
  • Ich weiß nicht, ob es eine Chance gibt, mit Piwik mit this GeoIP plugin. Es wäre willkommen, Ideen zu haben, wenn jemand davon weiß.
  • ipinfo.io ist ein weiterer Dienst, der Stadtnamen nicht mit Genauigkeit auflösen kann.
  • Ich weiß nicht, ob es eine Möglichkeit gibt, Google Analytics zu verwenden, um Stadtnamen aufzulösen, da ich glaube, dass Google in Bezug auf Länder wie den Iran besser wäre als jeder andere Dienst.

Jede gute Idee würde wirklich geschätzt werden.

+1

Haben Sie versucht https://developers.google.com/fusiontables/? Sie könnten auch Daten von https://en.wikipedia.org/wiki/Category:Cities_in_Iran kneifen –

Antwort

4

Dies ist eine schwierige und zuverlässig zu tun. Ich habe es mal in der Vergangenheit gegeben, und es ging so etwas wie dieses

Es bezahlt für Dienste, die dies wirklich schnell für Sie tun können. Es kann ewig dauern, bis etwas funktioniert, das immer noch unzuverlässig ist, weil Sie die Daten einfach nicht haben. Ich würde ernsthaft in Betracht ziehen, http://www.maxmind.com/en/city_per - es sei denn, natürlich ist dies ein völlig kein kommerzielles Projekt und $ ist ein Nein Nein.

Wenn Sie die lat und lange aus einer IP-Tabelle erhalten können, auch ohne die Daten der Stadt, dann möchten Sie vielleicht so etwas zu verwenden, um für die nächste Stadt von Javascript suchen ist ein optio n - Finding nearest listed (array?) city from known location.

Was ist mit den Browsern Share Location Funktion?

+0

Danke für Ihre Antwort. Ich denke nicht, dass "Browser-Share-Location-Funktion" von allen wichtigen Browsern unterstützt wird. macht es? – Trix

+0

Nein. Ich habe es einfach da draußen geworfen –

+0

Wir verwenden IP2Location LITE, die frei ist und Postleitzahl unterstützt. –

0

Wenn eine browserbasierte Lösung für Ihren Anwendungsfall funktioniert, sollten Sie sich die Datei MaxMind's GeoIP2 JavaScript API ansehen. Es versucht zunächst, den Benutzer mithilfe von HTML5-Geolokalisierung zu lokalisieren. Wenn dies fehlschlägt oder ungenau ist, wird auf die GeoIP2-Daten von MaxMind (nicht GeoLite) zurückgegriffen. MaxMind bietet eine kostenlose Attributionsversion.

0

Manchmal müssen wir lokale Geo-IP-Datenbank anstelle von Web-Services für bestimmte Zwecke verwenden. Dies ist meine Erfahrung: Ich habe Datenbank-Formular https://db-ip.com heruntergeladen. Ich habe viel gesucht und endlich fand ich das zuverlässiger. aber noch zwei weitere Probleme:

  • 1-Die „IP-Adresse Stadt“ Datenbank ist zu groß auf MySQL-Datenbank laden auf Hosting, da es Zeit Limit passieren.
  • 2-Die Datenbank basiert auf IP-Adresse Vergleich von http://lite.ip2location.com Datenbank ist Basis von IP-Nummern.

Also entwickelte ich eine einfache .NET-App, um diese Probleme zu lösen. Die Lösung kann von hier heruntergeladen werden: https://github.com/atoosi/IP2Location-Database-Luncher