Ti e' gia' stata data risposta, per quanto riguarda le reti Wi-Fi ho da aggiungere che esistono servizi come Google Geolocation API che, data una lista di reti Wi-Fi nelle vicinanze e' capace di triangolare la posizione se gli access point sono gia' stati mappati, la precisione cresce se si fornisce anche la potenza del segnale. La probabilita' che un access point sia mappato e' molto alta: una volta potevano farlo solo tramite la google car, che andando in giro per le strade faceva una sorta di wardriving registrando tutti gli indirizzi MAC e le posizioni GPS, adesso invece basta che un telefono Android con i servizi Google installati (quasi la totalita' togliendo Huawei e custom ROM poco usate) e con il GPS e Wi-Fi attivo passi vicino all'access point per spifferare il tutto a mamma Google.
PS: tramite il vendor del MAC address, Google riesce a capire quasi sempre se si tratta di un hotspot mobile o di un access point fisso.