def lookup_by_latlon(lat,lon):
    """Looks up location given lat,lon
    returns dictionary with address:
    d['street number']  : 1925
    d['route']          : Illinois Dr
    d['city']           : South Pasadena
    d['admin area 2']   : Los Angeles County
    d['admin area 1']   : California
    d['country']        : USA
    d['postal_code']    : 91030
    d['fullname']       : Full address string
    """

    logger.info("Looking up %s/%s via google"%(lat,lon))
    results = Geocoder.reverse_geocode(float(lat),float(lon))
    addrs=results.data[0]['address_components']
    d={}
    d['fullname']=str(results)
    for addr in addrs:
        if addr['types'][0]=='locality':
            d['city']=addr['short_name']
        elif addr['types'][0]=='street_number':
            d['street number']=addr['short_name']
        elif addr['types'][0]=='route':
            d['route']=addr['short_name']
        elif addr['types'][0]=='admin area 2':
            d['admin area 2']=addr['short_name']
        elif addr['types'][0]=='admin area 1':
            d['admin area 1']=addr['short_name']
        elif addr['types'][0]=='country':
            d['country']=addr['long_name']
        elif addr['types'][0]=='postal_code':
            d['postal_code']=addr['short_name']

    # Slow us down so google doesn't complain!
    time.sleep(0.1)

    return d