You are here

public function IpGeoLocGlobal::flattenGoogleAddress in IP Geolocation Views & Maps 8

Fleshes out the $ip_geoloc_address array.

This is based on the additional data provided in the $google_address array. This may involve tweaking of the 'latitude' and 'longitude' entries so that they remain consistent with the street address components.

Parameters

array $google_address: Array of address components as returned by Google service.

array $ip_geoloc_address: The $google_address in flattened form.

Return value

bool TRUE, unless google_address or ip_geoloc_address are empty

File

src/Services/IpGeoLocGlobal.php, line 280

Class

IpGeoLocGlobal
Class IpGeoLocGlobal.

Namespace

Drupal\ip_geoloc\Services

Code

public function flattenGoogleAddress(array $google_address, array &$ip_geoloc_address) {
  if (is_array($google_address) && is_array($google_address['address_components']) && is_array($ip_geoloc_address)) {
    $ip_geoloc_address['provider'] = 'google';
    foreach ($google_address['address_components'] as $component) {
      $long_name = $component['long_name'];
      if (!empty($long_name)) {
        $type = $component['types'][0];
        $ip_geoloc_address[$type] = $long_name;
        if ($type == 'country' && !empty($component['short_name'])) {
          $ip_geoloc_address['country_code'] = $component['short_name'];
        }
      }
    }
    $ip_geoloc_address['formatted_address'] = $google_address['formatted_address'];

    // The following may be slightly different from the original lat,long passed
    // into ip_geoloc_reverse_geocode().
    $ip_geoloc_address['latitude'] = $google_address['geometry']['location']['lat'];
    $ip_geoloc_address['longitude'] = $google_address['geometry']['location']['lng'];
    return TRUE;
  }
  return FALSE;
}