There are two different ways that a mobile device can detect its location: using a built-in GPS chip or triangulating based on cell towers and WiFi access points. This latter method is called “Network Location” and is usually provided to the Android system by Google’s play services. If someone is going NO GAPPS, however, this normally means that they either use GPS or nothing.

Enter UnifiedNLP, by the creator of the microG project. UnifiedNLP can connect to a number of location-providing backends to tell the Android system its network location. It achieves this by pretending to be the Play Services, the app that the system looks to for the location. Since microG also pretends to be this app, UnifiedNLP is packaged with microG and does not need to be downloaded separately if you are already using microG. For those who do not wish to use microG, however, there is a separate download available that only provides the network location.

As for location backends, I recommend using the Mozilla backend if you do not mind the location calculation being done online, otherwise you can use the Local Wifi and Local GSM backends. These local backends set up databases on the device itself and checks the database to calculate the location on-device. The downside of this is that the GSM backend can take a long time to download its database of cell towers and may eat up battery while doing so. I recommend allowing it to download while charging overnight.

Other backends are also available on F-Droid, if one of the ones I recommended does not work well in your area.