I like it how iOS displays this arrow when location services are or were used, and how one can see in "Privacy -> Location Services" a brief history of which app did what, and enable or disable location access at all per app.
That does nothing for IP based geo location though. Every rest request to modern cloud services gets geotagged and those tags can be surprisingly accurate in populated areas for people that use wifi.
IP-based location isn't very accurate due to IPv4 addresses becoming a scarce resource.
Mobile 3G/4G data networks are reusing those IPs, so at best you'll get a country or state-level accuracy.
The IP of home / business connections can be static and the accuracy can be good, however you're not taking that IP with you when on the move. So in order to track a user's movement, online services have to link that IP to some unique identifier of that user.
It's not insurmountable of course and native apps have no problem in generating such unique identifiers per user, however without consent it's now illegal to use a user's IP for tracking his location under GDPR and it's also illegal to generate unique identifiers for users without consent. Even logging IPs is now illegal, unless you're doing it for security purposes and only for a limited amount of time.
Also the Terms of Use documents aren't sufficient, there are already many lawsuits active and we'll soon hear of the fallout.
Yes, although they won't get the whole Wi-Fi scan list, which means no fine grained triangulation, and also no BSSID, but it's definitely imperfect.
It's also very frustrating if you are using the Wi-Fi APIs for legitimate purposes. Having to explain to a user why you need location permissions in order to set up a Wi-Fi peripheral isn't easy.
By introducing VPN I guess (I think Google offers one on their Fi service) - I don't seen any other solution, especially since telcos sell your data as well.
It's just worth noting that flipping a switch in your OS might not do much in terms of location tracking.