Multiclass Classification that includes a Geospatial Element
If this is a U.S. model you can try County (FIPS) codes, which are coarser-grained areas than ZIP codes (there can be many ZIP codes in a county).  If bearing and distance worked for you, this should also work.  Your classifier would need to handle categorical data.  In R, this is pretty easy to do if you already have a ZIP code:

library(noncensus)
data(zip_codes)
my_dataframe['fips']&lt;-zip_codes$fips[match(my_dataframe$zip, zip_codes$zip)]


This assumes you already have a dataframe called my_dataframe with ZIP codes as a column named 'zip'.

As a bonus you can use the choroplethr package to create a nice visualization of some scalar value, for example, your item price:

library(choroplethr)
df_to_plot&lt;-data.frame()
df_to_plot['region']&lt;-my_dataframe$fips
df_to_plot['value']&lt;-my_dataframe$price

county_choropleth(df_to_plot, title='price by location')