Germany ~ (1000 x 1000 km) have ~2100 citys, not much.
if you would collect the data by click around the borders each one minute u need 35 hours
maybe u can extract the borders (geofence) from a web api request at open street map? (steal)
or u can live with a nearest city, just the middle of the city in lat,lon.
its really necessary to have the exact city from user?
the best solution is to be independent. (not addicted from google,apple,ms,amazon)
i think a small sqlite database can store all that u do not need a web request.