La geolocalizzazione si basa fondamentalmente su 2 tecniche, quella "terminal based" e quella "network based".
Quando siete connessi via cavo è network based, dipende quindi dalla "molecolarità" della rete, quanto cioè i punti di accesso adsl sono capillari sul territorio.
Più la rete è capillare e più il rilevamento sarà "vicino alla realtà", idem vale per i cellulari.. più siete in aree con copertura cellulare "serrata" (grandi città) e meglio la posizione può essere rilevata, se siete in pianura desolata o alta montagna gli errori sono anche di KM.
Nel caso invece del "terminal based" (un esempio tra tutti: Google Latitude ma anche Friends on fire etc) si tratta di applicazione sul cellulare che voi abilitate di proposito: questa passa al server le informazioni di cell-id con relative letture (ritardo, angolo) e questo serve per triangolare, in modo molto approssimativo e strettamente dipendente dall'orografia e dagli ostacoli, la posizione del terminale rispetto alle celle della rete.
In definitiva, solo il provider può sapere esattamente chi e dove siete, gli altri "indovinano" sulla base di indirizzi IP (ma un intero set o subset sta nello stesso DSLAM, quindi chiunque nel raggio di svariati KM risulta li) e come la rete vs fornitore è mappata (un esempio su tutti.. persone di bologna hanno DSLAM di raccolta a bologna con indirizzi interni, poi tutto il traffico viene concentrato su un POP e da li va in internet... la geolocalizzazione dirà che siete al POP titolare di quegli indirizzi, non a casa vostra)
Spero di essere stato sufficientemente chiaro
Rob