2009-08-16 10 views
5

ich auf diesem großen API gerade gekommen bin: http://ipinfodb.com/ip_location_api.phpGeoLocation API

Allerdings würde Ich mag auch den Kontinent abrufen. Ist das überhaupt möglich, da ich es nicht finden kann?

Vielleicht gibt es eine andere API, die frei verfügbar ist, die Stadt, Land und Kontinent anbieten wird? Ich habe Googles AJAX API versucht, aber sie bieten auch keinen Kontinent an.

Vielleicht muss ich einfach konvertieren, was ich bereits in Kontinente habe, wie ?!

Ich hoffe, das ist nicht zu subjektiv!

Dank all

Antwort

14

Warum Sie jede Country den Plan nicht sehen XX Countrycode auf dem jeweiligen Kontinent? Sollte nicht zu hart sein, da es nur etwa 200 Länder und 5 oder 7 Kontinente gibt.

EDIT: Ich habe keine Kenntnis von solchen vorbereiteten Datenbank in PHP, aber hier ist ein json_encode ‚d-Array für alle Länder mit dem Ländercode als Schlüssel und Kontinent Namen als Wert:

$json = '{"AD":"Europe","AE":"Asia","AF":"Asia","AG":"North America","AI":"North America","AL":"Europe","AM":"Asia","AN":"North America","AO":"Africa","AQ":"Antarctica","AR":"South America","AS":"Australia","AT":"Europe","AU":"Australia","AW":"North America","AZ":"Asia","BA":"Europe","BB":"North America","BD":"Asia","BE":"Europe","BF":"Africa","BG":"Europe","BH":"Asia","BI":"Africa","BJ":"Africa","BM":"North America","BN":"Asia","BO":"South America","BR":"South America","BS":"North America","BT":"Asia","BW":"Africa","BY":"Europe","BZ":"North America","CA":"North America","CC":"Asia","CD":"Africa","CF":"Africa","CG":"Africa","CH":"Europe","CI":"Africa","CK":"Australia","CL":"South America","CM":"Africa","CN":"Asia","CO":"South America","CR":"North America","CU":"North America","CV":"Africa","CX":"Asia","CY":"Asia","CZ":"Europe","DE":"Europe","DJ":"Africa","DK":"Europe","DM":"North America","DO":"North America","DZ":"Africa","EC":"South America","EE":"Europe","EG":"Africa","EH":"Africa","ER":"Africa","ES":"Europe","ET":"Africa","FI":"Europe","FJ":"Australia","FK":"South America","FM":"Australia","FO":"Europe","FR":"Europe","GA":"Africa","GB":"Europe","GD":"North America","GE":"Asia","GF":"South America","GG":"Europe","GH":"Africa","GI":"Europe","GL":"North America","GM":"Africa","GN":"Africa","GP":"North America","GQ":"Africa","GR":"Europe","GS":"Antarctica","GT":"North America","GU":"Australia","GW":"Africa","GY":"South America","HK":"Asia","HN":"North America","HR":"Europe","HT":"North America","HU":"Europe","ID":"Asia","IE":"Europe","IL":"Asia","IM":"Europe","IN":"Asia","IO":"Asia","IQ":"Asia","IR":"Asia","IS":"Europe","IT":"Europe","JE":"Europe","JM":"North America","JO":"Asia","JP":"Asia","KE":"Africa","KG":"Asia","KH":"Asia","KI":"Australia","KM":"Africa","KN":"North America","KP":"Asia","KR":"Asia","KW":"Asia","KY":"North America","KZ":"Asia","LA":"Asia","LB":"Asia","LC":"North America","LI":"Europe","LK":"Asia","LR":"Africa","LS":"Africa","LT":"Europe","LU":"Europe","LV":"Europe","LY":"Africa","MA":"Africa","MC":"Europe","MD":"Europe","ME":"Europe","MG":"Africa","MH":"Australia","MK":"Europe","ML":"Africa","MM":"Asia","MN":"Asia","MO":"Asia","MP":"Australia","MQ":"North America","MR":"Africa","MS":"North America","MT":"Europe","MU":"Africa","MV":"Asia","MW":"Africa","MX":"North America","MY":"Asia","MZ":"Africa","NA":"Africa","NC":"Australia","NE":"Africa","NF":"Australia","NG":"Africa","NI":"North America","NL":"Europe","NO":"Europe","NP":"Asia","NR":"Australia","NU":"Australia","NZ":"Australia","OM":"Asia","PA":"North America","PE":"South America","PF":"Australia","PG":"Australia","PH":"Asia","PK":"Asia","PL":"Europe","PM":"North America","PN":"Australia","PR":"North America","PS":"Asia","PT":"Europe","PW":"Australia","PY":"South America","QA":"Asia","RE":"Africa","RO":"Europe","RS":"Europe","RU":"Europe","RW":"Africa","SA":"Asia","SB":"Australia","SC":"Africa","SD":"Africa","SE":"Europe","SG":"Asia","SH":"Africa","SI":"Europe","SJ":"Europe","SK":"Europe","SL":"Africa","SM":"Europe","SN":"Africa","SO":"Africa","SR":"South America","ST":"Africa","SV":"North America","SY":"Asia","SZ":"Africa","TC":"North America","TD":"Africa","TF":"Antarctica","TG":"Africa","TH":"Asia","TJ":"Asia","TK":"Australia","TM":"Asia","TN":"Africa","TO":"Australia","TR":"Asia","TT":"North America","TV":"Australia","TW":"Asia","TZ":"Africa","UA":"Europe","UG":"Africa","US":"North America","UY":"South America","UZ":"Asia","VC":"North America","VE":"South America","VG":"North America","VI":"North America","VN":"Asia","VU":"Australia","WF":"Australia","WS":"Australia","YE":"Asia","YT":"Africa","ZA":"Africa","ZM":"Africa","ZW":"Africa"}'; 

nennen Sie es einfach mit:

echo '<pre>'; 
print_r(json_decode($json, true)); 
echo '</pre>'; 
+0

Das ist genau das, was ich versuche zu tun, aber surley gibt es eine Datenbank, die bereits existiert oder PHP hat einige eingebaute Funktion, dies zu tun? – Abs

+0

Super !! Woher hast du diese Augen und wie genau glaubst du, ist es? – Abs

+0

AFAIK es ist eine zuverlässige Quelle, ich fand es auf einem Web-Service verfügbar (http://services.sapo.pt/GIS/GetCountries) Ich kratzte es einfach und übersetzte die Kontinentnamen ins Englische. –

6

es gibt nur 200ish Länder und nur 6 Kontinenten, also würde ich fragen, warum Sie einen Web-Service brauchen, dass etwas von Informationen, um zu bestimmen ... es sei denn, Sie bekommen eine Menge von Benutzern planen f Aus Ländern, die politisch so instabil sind, werden sie den Namen ändern oder aufhören zu existieren, bevor Ihre App funktioniert. Behalte einfach eine statische Liste.

Auch sind nicht alle Länder auf einem Kontinent. Neuseeland zum Beispiel gehört nicht zu Australien (zumindest nach Wikipedia).

Wenn Sie das Land des Benutzers programmgesteuert ermitteln können, haben Sie genügend Informationen, um ihren Kontinent in einer statischen Liste nachzuschlagen, die Sie besitzen. Es würde eine Stunde dauern, diese Informationen selbst zu sammeln und in eine Datenbank oder XML-Datei zu schreiben, und das wird sich selten ändern. Sie haben schon fast diese Zeit damit verbracht, herauszufinden, wie Sie den Kontinent dynamisch bestimmen können.

+0

Welche letzte Bit-Info? Du meinst den Kontinent?Ich muss dies feststellen, da ich verschiedene Funktionen basierend auf dem Standort des Benutzers Kontinent durchführen und dann nach Land, Stadt usw. aufschlüsseln möchte. Meine Frage mag einfach sein, aber mein Gedankengang ist nicht. :) – Abs

+0

@Abs sehe meine Bearbeitung (verschoben Kommentar in die Antwort zu helfen, zu klären) –

+0

Danke Rex. Ich verstehe. Es ist nur, dass ich faul bin und gehofft habe, dass es vorbereitet und alles für mich verpackt wäre! – Abs

1

Schauen Sie sich MaxMind GeoLite Country und MaxMind GeoLite City.

Wenn es der Kontinent ist, nach dem Sie hauptsächlich suchen (ich weiß nicht, ob GeoLite das speichert), könnten Sie die Ländercodes aus der GeoLite-Datenbank immer den Ländercodes der world database zuordnen, die MySql als Beispieldatenbank verwendet. Das hat den Kontinent für jedes Land gespeichert.

+0

Ich habe diese Jungs versucht und ihre Implementierung ist chaotisch, Genauigkeit ist nicht so toll für die kostenlose Funktion. Aber du hast recht, es ist das Beste, was ich je gesehen habe, aber ich brauche etwas Besseres und Leichteres. – Abs

+2

@Abs - die MySQL-Weltdatenbank hat Kontinente. Wenn die GeoLite-Datenbank (n) Ländercodes haben (nicht markiert), könnte dies funktionieren. – karim79

+0

Guter Punkt. Ich denke, das tut es. Lieber Gott, ich bin ein Dummkopf! :) – Abs