I suspect it is largely attributable to Android smartphones, and Google privacy terms.
Whenever a naive android owner (with 'default' settings) switches on his phone, it tells google the precise location from GPS. It also tells Google the SSID and Mac of any WiFi APs within range, which Google then log with the GPS coords. If the phone is actually connected to WiFi, Google can get the IP address and so make a very good guess at geo-locating it, even better if it belongs to an ISP that uses static IPs (which of course is easy to tell). Google would then be missing a trick if the did not sell all that data.
Apple play similar tricks of course but, since they make their $billions mainly from hardware sales, I don't think they are quite as devious.