It requires programming and a database if you have a large dataset to search through. I don't know of any off-the-shelf stuff that does this for you, but I'm sure it exists. I've done it before for clients, it's not hard, but it is somewhat time consuming depending on all the aspects of the project.
I'd be tempted to hit it with PHP and MySQL (since it's widely available with cheap webhosting). After filling out the database with the latitude and longitude of each location, the searchable parameters, the address, and any other information you want to display (hours of operation, phone, image link, etc) then the PHP code displays a form asking for the user's location (zip, address, lat/lon/etc) and the other parameters they want to search for.
For instance, one might be interested in kid friendly restaurants. The database contains a list of restaurants that in some way or another cater to kids. It might contains mcdonalds, chuck e cheese, joe's crab shack. and even play centers or stores that happen to serve food and have interesting stuff for kids like jungle java and ikea. The database would also hold whether there's a playplace, and if there are any kids-eat-free days, whether they are willing to host parties, etc.
So in this case the form contains checkboxes for play area, whether the restaurant serves a full meal or if a cafe style light meal is fine, and if they host parties. It also contains a way for the user to input a location, such as a zip code, city state, or lat/lon (and if well done, it automatically uses the iphone or android's built in location ability so it can get the user's current location if visiting via mobile device).
Once submitted, the PHP code composes an SQL query that returns only those restaurants with the required features that are within a given distance to the user's input location. It then sends the response webpage with a google map and code to place all those locations on the map, and give the user the ability to click on them to get additional info (restaurant amenities, phone, hours, reviews, etc).
It would require a few hundred lines of code and many hours setting up the database for a simple backend that supported this. More time if you want it to look pretty, integrate it with some other web frontend or existing website, or make it mobile device friendly.
If you are starting from scratch, then there is probably a google maps book that will get you started with basic examples. Most PHP books will also cover the basics, and some will even use google maps as and example for this. It's a bit of work, but it's nothing particularly difficult - just lots of little pieces to fit together.