protected function addressFromIP($ip) { $geocoder = AddressGeocoding::get_geocoder(); $geodata = array(); try { if ($ip) { $geodata = $geocoder->geocode($ip)->toArray(); } } catch (Exception $e) { SS_Log::log($e, SS_Log::ERR); } $geodata = array_filter($geodata); $datamap = array('Country' => 'countryCode', 'County' => 'county', 'State' => 'region', 'PostalCode' => 'zipcode', 'Latitude' => 'latitude', 'Longitude' => 'longitude'); $mappeddata = array(); foreach ($datamap as $addressfield => $geofield) { if (is_array($geofield)) { if ($data = implode(" ", array_intersect_key($geodata, array_combine($geofield, $geofield)))) { $mappeddata[$addressfield] = $data; } } elseif (isset($geodata[$geofield])) { $mappeddata[$addressfield] = $geodata[$geofield]; } } return $mappeddata; }
public function set_geocoder(\Geocoder\Geocoder $geocoder) { self::$inst = $geocoder; }