/**
  * @return \Geocoder\Model\Address
  */
 public function ReverseGeocode()
 {
     if (!$this->owner->Latitude) {
         return false;
     }
     $results = Geocoder::reverseGeocode($this->owner->Latitude, $this->owner->Longitude);
     if ($results) {
         $this->owner->StreetNumber = $results->getStreetNumber();
         $this->owner->StreetName = $results->getStreetName();
         $this->owner->PostalCode = $results->getPostalCode();
         $this->owner->Locality = $results->getLocality();
         $this->owner->SubLocality = $results->getSubLocality();
         $this->owner->CountryName = $results->getCountry();
         $this->owner->CountryCode = $results->getCountryCode();
         if (count($results->getAdminLevels())) {
             $all = $results->getAdminLevels();
             /* @var \Geocoder\Model\AdminLevel $firstLevel */
             $firstLevel = $all[0];
             $this->owner->AdministrativeArea = $firstLevel->getName();
             if (count($all) > 1) {
                 $secondLevel = $all[1];
                 $this->owner->SubAdministrativeArea = $secondLevel->getName();
             }
         }
     }
     return false;
 }
 /**
  */
 public function handleFakeLocations($gridField, $request = null)
 {
     $class = $gridField->getModelClass();
     $all = $class::get();
     foreach ($all as $record) {
         if (!strlen(trim($record->StreetName))) {
             $tries = 0;
             do {
                 $coords = FakeRecordGenerator::latLon(null, null, 200);
                 $infos = Geocoder::reverseGeocode($coords['lat'], $coords['lng']);
                 $tries++;
             } while (!$infos && $tries < 5);
             if ($infos) {
                 $record->Latitude = $infos->getLatitude();
                 $record->Longitude = $infos->getLongitude();
                 $record->StreetName = $infos->getStreetName();
                 $record->StreetNumber = $infos->getStreetNumber();
                 $record->PostalCode = $infos->getPostalCode();
                 $record->CountryCode = $infos->getCountryCode();
                 $record->Locality = $infos->getLocality();
                 $record->write();
             }
         }
     }
     $message = sprintf(_t('DevToolkitFakeLocationsButton.ADD_FAKE_LOCATIONS', 'Added fake locations to %s'), $class);
     DevToolkitAdminExtension::SetSessionMessage($message, 'good');
     return Controller::curr()->redirectBack();
 }