Using microG version 0.2.4-108-g464d45d, which integrates UnifiedNLP, with Xposed module XposedGmsCore-UnifiedNLP, which easily integrates microG UnifiedNLP into the system. With this setup I got good results with MozillaNlpBackend and with LocalGsmNlpBackend, but couldn’t get correct localization with OpenBmapNlpBackend.
The Mozilla service is the most precise since it uses both GSM and Wi-Fi info, but I chose to use LocalGsmNlpBackend instead because of a few advantages to me: (a) it doesn’t need to turn Wi-Fi on for localization since it only uses GSM, the radi is always on anyway; (b) it doesn’t send any personal info out since the database is pre-downloaded into memory; and © it reduces battery and data consumption. Normally I get a GPS lock within seconds using it as a backend, so I don’t need the increased precision offered by Mozilla, and in underserved areas Wi-Fi location won’t probably be very helpful anyway.
PS: I added the DejaVu as a second backend, works perfectly too.