code: def lookup_by_latlon(lat,lon):
      
  
      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
docs: 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