For the internal information system, it became necessary to work with information tied to ordinary residential buildings.
To display a card is trivial - every first is able. In particular, a house map has been already made in half an hour, based on OpenStreetMap / Leaflet, where every house for which there is a geo-tagged entry in the database is marked with a marker.
The problem arose in reverse geocoding - how to make it possible for the user to click on the polygon-building on the map and the address of this object was recognized? Those. a “new” (for the company) house appears, which must be added to the base. The user goes, clicks on the house, a panel appears adding entries for the house at this address. If it clicks not on the house, but on something else, nothing happens (because there is no object in this place).
The quick crutch was the use of Nominatim, but the results of reverse geolocation on the coordinates leave much to be desired, and the result is not so hot. I’m poking in the wasteland outside the city, I’m getting an address somewhere in the city, and it’s not even clear where this is (the landfill doesn’t return). I would like to get an answer or “I don’t know anything here” or “there is a building object, nobody has already assigned an address to it on OSM (not bad, we'll write it ourselves and send it to OSM), but in general it’s a polygon about 4 vertices, coordinates are attached.” In the emphasis I can not find anything more or less ready in the pile of fragmented documentation.
Of course, there is an option - download the OSM dump, stuff PostgIS with PostGIS, and, after reading some documentation, make your own geocoder. But for sure I'm not the first with such desires, and something is already more ready than the creation of the whole bike from scratch.
Scale - a small town, roughly - up to 10,000 buildings. Up to the point that you can cut into squares (roughly, 10x10), but do all the client-side. Requests for geocoding - up to, probably, a couple of dozen on a particularly productive day, that is, mere trifles.
Yes, Google Maps, Yandex.Maps, 2GIS - thanks, does not fit, all of them have a license agreement that requires a) use for a site open for all, not an internal corporate admin panel and b) severely limits the ability to use data received from the geocoder ( consider vendor lock-in).