2009-08-16 173 views
5

我剛剛碰到這個偉大的API:http://ipinfodb.com/ip_location_api.php地理位置API

不過,我想也找回了大陸。這是甚至可能的,因爲我找不到它。

也許有另一個API可以免費獲得,可以提供城市,國家和大陸嗎?我曾嘗試谷歌AJAX API,但他們也不提供大陸。

也許我將不得不將我已經擁有的東西轉化爲大陸,怎麼樣?!

我希望這不是太主觀!

感謝所有

回答

14

你爲什麼不映射每個COUNTRYCODE XX COUNTRYCODE到各自的大陸?因爲只有大約200個國家和5,7個大陸,所以不要太難。

編輯:我沒有在PHP這樣的備數據庫的知識,但這裏是所有國家代碼爲重點和大陸的名稱值的國家json_encode「d數組:

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

只是把它叫做:

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

那正是我想要做的,但是surley有一個已經存在的數據庫,或者PHP有一些內置函數來做到這一點? – Abs 2009-08-16 00:12:37

+0

真棒!你從哪裏得到這個眼睛,你認爲它有多準確? – Abs 2009-08-16 17:49:14

+0

AFAIK它是一個可靠的來源,我發現它可以在網絡服務(http://services.sapo.pt/GIS/GetCountries)上找到,我只是把它抄下來並將大陸名稱翻譯成英文。 – 2009-08-16 23:34:19

6

這裏只有200ish國家只有6大洲,所以我會問,爲什麼你需要一個Web服務,以確定信息的該位......除非你計劃得到了很多用戶的F rom國家如此政治不穩定,它們會在您的應用程序執行之前更改名稱或停止存在。只要保持一個靜態列表。

此外,並非所有國家都在大陸上。例如新西蘭,不是澳大利亞的一部分(至少根據維基百科)。

如果您可以通過編程方式確定用戶的國家/地區,則您有足夠的信息在您擁有的靜態列表中查找其大陸。這需要您花一個小時來組裝自己的信息,並將其放入數據庫或XML文件中,並且很少會更改。你已經花費了大量時間試圖找出如何動態地確定大陸。

+0

什麼是最後一點信息?你的意思是大陸?我需要確定這一點,因爲我想根據用戶大陸位置執行各種功能,然後按國家,城市等進行深入分析。我的問題可能很簡單,但我的思路不是。 :) – Abs 2009-08-16 00:13:48

+0

@Abs看到我的編輯(感動的評論,以幫助澄清答案) – 2009-08-16 00:25:52

+0

感謝雷克斯。我明白。它只是我很懶,希望它會做好準備,併爲我包裝! – Abs 2009-08-16 00:29:02

1

看一看MaxMind GeoLite CountryMaxMind GeoLite City

如果它是你主要是後大陸(我不知道是否GEOLITE上存儲了),你可以從數據庫GEOLITE上的國家代碼始終映射到MySQL使用的示例數據庫world database的國家代碼。這就是每個國家儲存的大陸。

+0

我已經試過這些傢伙,他們的實施是凌亂的,準確性不是那麼偉大的免費功能。但你是對的,它是我遇到的最好的,但我需要更好更輕的東西。 – Abs 2009-08-16 00:14:45

+2

@Abs - mysql世界數據庫有大陸。如果GeoLite數據庫有國家代碼(沒有選中),這可能會起作用。 – karim79 2009-08-16 00:23:45

+0

好點。我認爲它確實如此。親愛的上帝,我是個傻瓜! :) – Abs 2009-08-16 00:28:13