Я сделал так:
1. выкачал базу OSM
2. выдрал оттуда координаты населенных пунктов и залил в "свою" базу (вк)
3. использую поиск по заданным координатам из
этого руководства
Результат:
тк базы с объектами изначально разные, невозможно было получить координаты для каждого нас. пункта в моей базе из данных OSM. Из 2 млн записей с координатами у меня только 187 тыс. Задача же стояла определить предполагаемый город пользователя, так что мне этой точности оказалось более чем достаточно. Это примерно до поселка городского типа.