/** * @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(); }