I see here two possible implementations:
You don’t posses enough information about your data (no latitude and longitude information)
I would firstly advise to scan Google’s Geocoding API: https://developers.google.com/maps/documentation/geocoding/start
This API will help you with converting your location name (e.g London) into the Latitude and Longitude pair, which will be the base of the future searches around this particular point.
Having this, you may be further interested in checking out https://developers.google.com/places/web-service/search, which will harvest the extensive Google Places database and return you the specific places within given radius.
You have detailed information about your data sets (latitude and longitude provided)
In this case it’s a matter of how you will persist your location data. You could use simple float columns, you could use database SPATIAL extensions or you could turn your efforts into Full Text Search solutions, like Elasticsearch
I would go with the last option, considering the fact that Elasticsearch offers pretty powerful filters for geo-queries: https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-queries.html
I would also recommend reading Elasticsearch: The Definitive Guide http://shop.oreilly.com/product/0636920028505.do especially part V, Geolocation.