2009-08-16 9 views
5

acabo de venir a través de este gran API: http://ipinfodb.com/ip_location_api.phpde GeoLocation API

Sin embargo, me gustaría recuperar también el continente. ¿Es esto posible ya que no puedo encontrarlo?

¿Tal vez hay otra API que está disponible gratuitamente que ofrecerá ciudad, país y continente? He probado Google AJAX API pero tampoco ofrecen continente.

Tal vez tenga que convertir lo que ya tengo en continentes, ¿cómo?

¡Espero que esto no sea demasiado subjetivo!

Gracias a todos

Respuesta

14

¿Por qué no asignar cada countryCode XX countryCode al respectivo continente? No debería ser demasiado difícil ya que solo hay unos 200 países y 5 o 7 continentes.

EDIT: no tengo conocimiento de dicha base de datos dispuestos en PHP, pero aquí es una 'matriz d json_encode para todos los países con el código de país como nombre de la clave y el continente en su valor:

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

sólo tiene que llamar con:

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

Eso es exactamente lo que estoy tratando de hacer, pero surley ya existe una base de datos o PHP tiene alguna función incorporada para hacer esto? – Abs

+0

¡Impresionante! ¿De dónde sacaste ese eyze y cuán preciso crees que es? – Abs

+0

AFAIK es una fuente confiable, la encontré disponible en un servicio web (http://services.sapo.pt/GIS/GetCountries) Acabo de descifrarla y traduje los nombres de los continentes al inglés. –

6

sólo hay 200ish países y sólo 6 continentes, lo que pondría en duda por qué necesita un servicio web para determinar que algo de información ... a menos que usted planea en conseguir una gran cantidad de usuarios de f Los países rom tan políticamente inestables cambiarán de nombre o dejarán de existir antes de que su aplicación lo haga. Solo mantén una lista estática.

Además, no todos los países están en un continente. Nueva Zelanda, por ejemplo, no es parte de Australia (según Wikipedia, al menos).

Si puede determinar el país del usuario mediante programación, tiene suficiente información para buscar su continente en una lista estática de su propiedad. Te llevaría una hora reunir esa información y colocarla en una base de datos o archivo XML, y rara vez cambiará. Ya has pasado casi ese tiempo tratando de descubrir cómo determinar el continente dinámicamente.

+0

¿Qué información de último bit? ¿Te refieres al continente?Necesito determinar esto porque me gustaría hacer varias funciones basadas en la ubicación del continente de los usuarios y luego profundizar por país, ciudad, etc. Mi pregunta puede ser simple, pero mi línea de pensamiento no. :) – Abs

+0

@Abs ver mi edición (moví el comentario a la respuesta para ayudar a aclarar) –

+0

Gracias Rex. Entiendo. Es solo que soy flojo y esperaba que estuviera preparado y listo para mí. – Abs

1

Eche un vistazo MaxMind GeoLite Country y MaxMind GeoLite City.

Si es el continente que busca principalmente (no sé si GeoLite almacena eso) siempre puede asignar los códigos de país de la base de datos GeoLite a los códigos de país del world database que MySql usa como base de datos de muestra. Eso tiene el continente para cada país almacenado.

+0

He intentado con estos tipos y su implementación es complicada, la precisión no es tan buena para la función gratuita. Pero tienes razón, es lo mejor que he encontrado, pero necesito algo mejor y más ligero. – Abs

+2

@Abs - la base de datos mundial mysql tiene continentes. Si las bases de datos de GeoLite tienen códigos de país (no se han verificado), esto podría funcionar. – karim79

+0

Buen punto. Creo que sí. ¡Dios mío, soy un simplón! :) – Abs