Emplacement techniques pour la détection des adresses IP

Quels sont les emplacement techniques pour la détection des adresses IP?

Je sais que pour le look à la

$_SERVER['HTTP_ACCEPT_LANGUAGE'] (pas précis, mais surtout utile pour la détection de l'emplacement, par exemple si une plage d'adresses IP des utilisateurs mis française à leur navigateur, cela signifie que cette gamme) appartient à la France

gethostbyaddr($_SERVER['REMOTE_ADDR']) (pour look country code top-level domain)

alors peut-être le whois gethostbyaddr($_SERVER['REMOTE_ADDR'])

parfois:

$HTTP_USER_AGENT (Firefox de la chaîne de l'agent utilisateur a le code de langue, pas précis, mais la plupart peuvent être utilisés pour détecter l'emplacement)

Aussi je sais comment obtenir le fuseau horaire mais il ne fonctionne pas dans les nouveaux navigateurs.
En outre, il est question css qui détecte le visiteur de l'histoire, il peut être utilisé pour voir ce que google et les pages de wikipédia, il/elle a visités (google.co.royaume-uni, google.com.tr)

Mais quelles villes?