I use city-specific landing pages all of the time to facilitate local SEO for my service area clients. The key to make enough of the content on the pages unique so that they pass muster when checked for duplicate content. Typically, I'll create a blog-style article with 750 - 1000 words or more included within the content to boost the "unique-ness" of the content and then have my team right multiple versions of the topic from scratch for however many pages I need. Its a bit labor intensive, but it works great.
And then if a particular landing page isn't ranking well enough - I know for what pages to build links.
In some instances, if a business has multiple services I'll create entire content silos that consist of a series of unique pages for each service/city combination. For instance, a paint contractor offers interior painting, exterior painting and deck staining. For City A, I build a page for City A + Paint Contractor and have it link to the three sub-pages: City A + Interior, City A + Exterior and City A + Decks. Using internal linking and targeted back linking along with sufficient unique content on each page, we'll often see first page boosts within a few days once they are indexed.