Можно воспользоваться Google maps API или Yandex maps API. Возьмем вторые.
Берем этот пример
с яндекс карт апи, читаем
документацию по методу geocode. Видим, что в запросе можно указывать "options.kind", где нужно поставить "locality", так же указываем options.boundedBy исходя из радиуса, указываем, сколько городов нужно вернуть. Воаля.
P.S. Если совсем в виде круга нужно зону, то можно сделать постобработку, где смотреть расстояние от найденного города до искомого, если оно больше радиуса -- отбрасывать.