Assigning Locations to OmniFocus iPhone Contexts

My latest Inside iPhone post is called How an iPhone Can Help You Be More Productive When Commuting Via Mass Transit. One of the things I talk about in that post is the power of using location-based contexts within the OmniFocus for iPhone application.

I realized while writing the Inside iPhone piece that setting locations for contexts within OmniFocus for iPhone 1.0.1 is not straightforward. So I thought I would expand upon that issue here in this post.

The Fundimentals of Context Location

Each context within OmniFocus for iPhone can have a location associated with it. The location can be:

  • the iPhone's current location,
  • a street address,
  • an address associated with a contact in the Address Book, or
  • a business name retrieved from a search conducted using Google.

The location of contexts is set on a hierarchical basis, so I set the location of my home at the "Home" level of the context tree rather than at each sub-context.

My OmniFocus Errands Contexts
Errands Context: Set locations of the contexts in the
Errands list by tapping "Edit" on this screen.

Establishing a Context Location

I set the location of a context by tapping on the "Contexts" choice on the OmniFocus home screen. OmniFocus presents the top level of my context hierarchy. I descend through the context hierarchy by tapping until I reach the list of contexts containing the context whose location I want to set.

I'm talking about my "Errands" contexts in this article. These are stores and service providers that I do business with often. Most of them have definite physical locations that I go to on a regular basis.

In this article, we're talking about my "Target" context. This is where I put my shopping list of products I buy at a Target Store.

If I want to set the location of the "Target" context, I need to stay on this screen and tap the "Edit" button. Once I tap "Edit", I can tap the "Target" element in the list and go to the screen where I set the location of the Target context.

My Target Errands Context
The Target Context Page: Note that I have the Target
context location set to a Business Search for "Target
Stores". This lets me discover the location of Target
Stores near my iPhone's current location.

On the Target Context screen, I can set the location of the context in one of four ways:

  • Current Location: Sets the location of this context to the current location of the iPhone.
  • Address: Sets the location of this context to a street address, presumably using geocoding services from Google.
  • Contact: Sets the location of this context to an address associated with a contact in the Address Book.
  • Business Search: Sets the location of this context to a business name which is automatically retrieved from a business name search conducted using Google.

I set the location of the Target context to a Business Search for "Target Stores". This means that whenever I bring up the Nearby Context in OmniFocus, the app will do a Google business search on the term "Target Stores" and return the location of the nearest result. So if I'm near my house, OmniFocus will return the location of the Target Store in Levittown, PA.

If I'm near my office in New York City, OmniFocus will return the location of Target Store at Atlantic Terminal in Brooklyn or in Jersey City, NJ, neither of which is terribly easy to get to from Chelsea. No matter.

To see the Nearby Context in action, I have to enter a task and assign it to a context that has a location established. So I created a task called "Buy Rubbermaid food containers" and assign it to the Target context. There's a screen capture of this in my Flickr account.

Seeing Tasks that Can Be Accomplished Nearby
The "Nearby" Context showing the fact that I can buy
Rubbermaid food containers at a Target Store about
four miles from my current location.

Now if I tap on the crosshairs icon on the bottom of the screen (second from the left), I can bring up the Nearby Context.

Here I see the the fact that I can buy Rubbermaid food containers at a Target that's approximately four miles from my iPhone's current location.

If I tap the button marked "4 miles", OmniFocus will hand off to the iPhone Maps application and pass the location of the Target Store as the destination and the iPhone's current location as the starting point.

This feature is a game changer for me when I'm in New York. If I have something assigned to the "Apple Store" context, I'll get the nearest Apple Store location whenever I bring up the Nearby context. So, if I get done with a meeting or lunch earlier than expected, I can find out which of the three Apple Stores in Manhattan is closest to where I am, drop by, buy the thing I need, and head back to the office. This saves me time because I don't have to go to the Apple Store on the way home since none of the stores are particularly close to Penn Station.

A lot of my errands contexts are very specific to certain merchants. I could get a lot more generic and define contexts for "drug store", "grocery store", and "hardware store" which would give me a lot more local results for things that I don't need to buy from a specific merchant.

I hope this extended example is helpful to people who aren't currently using OmniFocus for the iPhone. If weren't already using it, I would want to know how OmniFocus integrates location-based services before I went out and bought it. This may not be the hottest feature for you, but it really makes a difference for me, and totally justifies the $19.99 cost of OmniFocus for the iPhone.