Técnicas de detección de ubicación para direcciones IP

¿Cuáles son las técnicas de detección de ubicación para las direcciones IP?
Sé mirar el
$_SERVER['HTTP_ACCEPT_LANGUAGE'] (no es preciso pero es muy útil para detectar la ubicación, por ejemplo, si los usuarios de un rango de IP configuran el francés en su navegador, significa que este rango pertenece a Francia
y
gethostbyaddr($_SERVER['REMOTE_ADDR']) (para buscar el dominio de nivel superior del código de país)
entonces puede ser a whoisgethostbyaddr($_SERVER['REMOTE_ADDR'])
a veces:
$HTTP_USER_AGENT (La cadena de agente de usuario de Firefox tiene un código de idioma, no preciso pero en su mayoría se puede usar para detectar la ubicación)

También sé cómo obtener la zona horaria, pero no funciona en los nuevos navegadores. Además hayproblema de css que detecta el historial del visitante, se puede usar para ver qué páginas de google y wikipedia ha visitado (google.co.uk, google.com.tr)

¿Pero qué hay de las ciudades?

Respuestas a la pregunta(9)

Su respuesta a la pregunta