Hi Elliot, Great question. I've done a ton of city launches for on-demand (geoconstrained) businesses, including Homejoy and YourMechanic.
I always started with Google Adwords (SEM) and would have a base set of keywords, and then modifying them with city, neighborhood, and zip codes to create hyperlocalized campaigns.
Targeting the campaigns by ZIP and City and using negative lists of zips/cities outside the service area.
We also would use google plus to create service delivery area listings, bit of a hack, but works well for organic local search results.
After SEM was setup I'd focus on Facebook newsfeed ads, targeted by Zip Code with a great intro offer for 1st users. Don't worry about margin, worry about acquiring 100 customers.
And last thing, we would hire a market maker in each city, part time, to go in person, face to face to events, flyering outside of walgreens/CVS, and look for local newsletters related to our target market to sponsor.
While non of this is perfect, and takes tweaking, it worked well to get those first few hundred customers in a local market.