You are here

function geocoder_widget_values_from_geometry in Geocoder 7

Geocoder Widget - Field values from geometry.

Given a geometry and the field type, return back a values array for that field. The passed back array represents a single delta.

1 call to geocoder_widget_values_from_geometry()
geocoder_widget_resolve_deltas in ./geocoder.widget.inc
Geocoder Widget - Resolve Deltas.

File

./geocoder.widget.inc, line 585
geocoder.widget.inc

Code

function geocoder_widget_values_from_geometry($geometry, $target_info) {
  if ($target_info['type'] === 'geofield') {
    return geofield_get_values_from_geometry($geometry);
  }
  if ($target_info['type'] === 'geolocation_latlng') {
    $centroid = $geometry
      ->centroid();
    $lat = $centroid
      ->y();
    $lng = $centroid
      ->x();
    return array(
      'lat' => $lat,
      'lng' => $lng,
      'lat_sin' => sin(deg2rad($lat)),
      'lat_cos' => cos(deg2rad($lat)),
      'lng_rad' => deg2rad($lng),
    );
  }
  if ($target_info['type'] === 'location') {
    $centroid = $geometry
      ->centroid();
    return array(
      'latitude' => $centroid
        ->y(),
      'longitude' => $centroid
        ->x(),
      'source' => 2,
    );
  }
  if ($target_info['type'] === 'postgis') {
    $srid = $geometry
      ->getSRID() ? $geometry
      ->getSRID() : '4326';
    $type = $target_info['settings']['type'];
    $postgis_geometry = new PostgisGeometry($type, $srid);
    $postgis_geometry
      ->fromText($geometry
      ->asText());
    $postgis_geometry
      ->transform($target_info['settings']['srid']);
    return array(
      'geometry' => $postgis_geometry
        ->getGeometry(),
    );
  }
}