2009-08-16 35 views
5

Właśnie natknąć tej wielkiej API: http://ipinfodb.com/ip_location_api.phpgeolokalizacja API

Jednakże chciałbym również pobrać kontynentu. Czy to możliwe, ponieważ nie mogę go znaleźć.

Może jest inny interfejs API, który jest swobodnie dostępny, oferując miasto, kraj i kontynent? Wypróbowałem Googles AJAX API, ale nie oferują one również kontynentu.

Może będę musiał po prostu zmienić to, co już mam na kontynenty, jak ?!

Mam nadzieję, że nie jest to zbyt subiektywne!

Dzięki wszystkim

Odpowiedz

14

Dlaczego nie można mapować każdy CountryCode XX CountryCode do danego kontynentu? Nie powinno to być zbyt trudne, ponieważ istnieje tylko około 200 krajów i 5 lub 7 kontynentów.

EDIT: mam żadnej wiedzy o takiej przygotowanej bazy danych w PHP, ale tutaj jest json_encode „d tablica dla wszystkich krajów z kodem kraju jako nazwę klucza i kontynentu jako wartość:

$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"}'; 

Wystarczy zadzwonić go z:

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

Dokładnie to, co próbuję zrobić, ale surley istnieje baza danych, która istnieje już lub PHP ma wbudowaną funkcję, aby to zrobić? – Abs

+0

Awesome !! Skąd wziąłeś tę eyze i jak dokładne sądzisz? – Abs

+0

AFAIK to niezawodne źródło, znalazłem je dostępne w serwisie internetowym (http://services.sapo.pt/GIS/GetCountries) Właśnie je zeskrobałem i przetłumaczyłem nazwy kontynentów na angielski. –

6

jest tylko 200ish krajów i tylko 6 kontynentach, więc mam pytanie dlaczego trzeba usługi internetowej, aby ustalić, że trochę informacji ... chyba że planujesz na uzyskanie wielu użytkowników f kraje rom tak niestabilne politycznie, że zmienią nazwy lub przestaną istnieć przed twoją aplikacją. Po prostu zachowaj listę statyczną.

Nie wszystkie kraje znajdują się na kontynencie. Nową Zelandię na przykład nie jest częścią Australii (przynajmniej według Wikipedii).

Jeśli programistycznie można ustalić kraj użytkownika, masz wystarczającą ilość informacji, aby wyszukać swój kontynent na liście statycznej, którą posiadasz. Złożenie tych informacji zajęłoby ci godzinę, a następnie umieścisz je w bazie danych lub pliku XML i rzadko się zmienia. Już spędziłeś prawie tyle czasu, próbując dowiedzieć się, jak dynamicznie określić kontynent.

+0

Co ostatnio trochę informacji? Masz na myśli kontynent?Muszę to ustalić, ponieważ chciałbym wykonywać różne funkcje w oparciu o lokalizację użytkowników kontynentalnych, a następnie drążyć dane według kraju, miasta itp. Moje pytanie może być proste, ale mój sposób myślenia nie jest. :) – Abs

+0

@Abs zobacz moją edycję (przeniesiony komentarz do odpowiedzi, aby pomóc wyjaśnić) –

+0

Dzięki Rex. Rozumiem. To tylko dlatego, że jestem leniwy i miałem nadzieję, że będzie to przygotowane i wszystkie zapakowane dla mnie! – Abs

1

Zobacz MaxMind GeoLite Country i MaxMind GeoLite City.

Jeśli chodzi o kontynent, na którym głównie się znajdujesz (nie wiem, czy GeoLite to przechowuje), możesz zawsze zamapować kody krajów z bazy danych GeoLite na kody krajów world database, które MySql używa jako przykładowa baza danych. To ma kontynent dla każdego kraju przechowywanego.

+0

Próbowałem tych facetów i ich realizacja jest niechlujna, dokładność nie jest tak wspaniała dla darmowej funkcji. Ale masz rację, jest to najlepsze, na jakie natrafiłem, ale potrzebuję czegoś lepszego i lżejszego. – Abs

+2

@Abs - baza danych mysql zawiera kontynenty. Jeśli baza danych GeoLite ma kody krajów (nie zostały sprawdzone), może to działać. – karim79

+0

Dobra uwaga. Myślę, że tak. Drogi Boże, jestem prostakiem! :) – Abs

Powiązane problemy