diff --git a/addressfield.info b/addressfield.info
index 445603f..ca6e60c 100644
--- a/addressfield.info
+++ b/addressfield.info
@@ -8,3 +8,4 @@ dependencies[] = ctools
 files[] = addressfield.migrate.inc
 files[] = views/addressfield_views_handler_field_country.inc
 files[] = views/addressfield_views_handler_filter_country.inc
+files[] = views/addressfield_views_handler_filter_administrative_area.inc
diff --git a/views/addressfield.views.inc b/views/addressfield.views.inc
index 9be1637..e4c48a8 100644
--- a/views/addressfield.views.inc
+++ b/views/addressfield.views.inc
@@ -22,6 +22,20 @@ function addressfield_field_views_data($field) {
       $data[$table_name][$column_real_name]['filter']['handler'] = 'addressfield_views_handler_filter_country';
     }
   }
+  
+  // Add a handler for administrative area.
+  foreach ($field['storage']['details']['sql'] as $type => $tables) {
+    foreach ($tables as $table_name => $columns) {
+      if (!isset($columns['administrative_area'])) {
+        continue;
+      }
+      $column_real_name = $columns['administrative_area'];
+      if (!isset($data[$table_name][$column_real_name]['filter'])) {
+        continue;
+      }
+      $data[$table_name][$column_real_name]['filter']['handler'] = 'addressfield_views_handler_filter_administrative_area';
+    }
+  }
 
   // Only expose these components as Views field handlers.
   $implemented = array(
diff --git a/views/addressfield_views_handler_filter_administrative_area.inc b/views/addressfield_views_handler_filter_administrative_area.inc
new file mode 100644
index 0000000..baea7f4
--- /dev/null
+++ b/views/addressfield_views_handler_filter_administrative_area.inc
@@ -0,0 +1,60 @@
+<?php
+ class addressfield_views_handler_filter_administrative_area extends views_handler_filter_in_operator {
+  function get_value_options() {
+    $this->value_title = t('Administrative Area');
+    $field = field_info_field($this->definition['field_name']);
+    $this->value_options = array(
+      'AL' => t('Alabama'),
+      'AK' => t('Alaska'),
+      'AZ' => t('Arizona'),
+      'AR' => t('Arkansas'),
+      'CA' => t('California'),
+      'CO' => t('Colorado'),
+      'CT' => t('Connecticut'),
+      'DE' => t('Delaware'),
+      'FL' => t('Florida'),
+      'GA' => t('Georgia'),
+      'HI' => t('Hawaii'),
+      'ID' => t('Idaho'),
+      'IL' => t('Illinois'),
+      'IN' => t('Indiana'),
+      'IA' => t('Iowa'),
+      'KS' => t('Kansas'),
+      'KY' => t('Kentucky'),
+      'LA' => t('Louisiana'),
+      'ME' => t('Maine'),
+      'MD' => t('Maryland'),
+      'MA' => t('Massachusetts'),
+      'MI' => t('Michigan'),
+      'MN' => t('Minnesota'),
+      'MS' => t('Mississippi'),
+      'MO' => t('Missouri'),
+      'MT' => t('Montana'),
+      'NE' => t('Nebraska'),
+      'NV' => t('Nevada'),
+      'NH' => t('New Hampshire'),
+      'NJ' => t('New Jersey'),
+      'NM' => t('New Mexico'),
+      'NY' => t('New York'),
+      'NC' => t('North Carolina'),
+      'ND' => t('North Dakota'),
+      'OH' => t('Ohio'),
+      'OK' => t('Oklahoma'),
+      'OR' => t('Oregon'),
+      'PA' => t('Pennsylvania'),
+      'RI' => t('Rhode Island'),
+      'SC' => t('South Carolina'),
+      'SD' => t('South Dakota'),
+      'TN' => t('Tennessee'),
+      'TX' => t('Texas'),
+      'UT' => t('Utah'),
+      'VT' => t('Vermont'),
+      'VA' => t('Virginia'),
+      'WA' => t('Washington'),
+      'WV' => t('West Virginia'),
+      'WI' => t('Wisconsin'),
+      'WY' => t('Wyoming'),
+      'DC' => t('District of Columbia'),
+      );
+  }
+}
\ No newline at end of file
