You prefetch the list of locations in the area of interest (there won't be that many compared to the humongous amounts of space Google apps consume already), you keep your user's "personality matrix" synchronized, and then when user asks, e.g., for a restaurant nearby, you display them from off-line cache, sorted by distance, characteristics and by how well they match user's personality matrix.
It would be that simple, if it was about actually suggesting places. But it isn't. It's about suggesting places that pay for advertising and successfully billing them, while also collecting as much data about the users as possible. It's a common occurrence on mobile (and also increasingly common in hardware and desktop software) - things that don't need to be on-line are put on the Internet nevertheless, to facilitate a specific business model.