function geocoder_field_widget_resolve_deltas in Geocoder 7.2
Geocoder Widget - Resolve Deltas
Given a list of geometries, and user configuration on how to handle deltas, we created a list of items to be inserted into the fields.
1 call to geocoder_field_widget_resolve_deltas()
- geocoder_field_widget_get_field_value in modules/
geocoder_field/ geocoder_field.module - Get a field's value based on geocoded data.
File
- modules/
geocoder_field/ geocoder_field.module, line 439
Code
function geocoder_field_widget_resolve_deltas($geometries, $delta_handling = 'default', $target_info) {
$values = array();
// Default delta handling: just pass one delta to the next
if ($delta_handling == 'default') {
foreach ($geometries as $geometry) {
$values[] = geocoder_field_widget_values_from_geometry($geometry, $target_info);
}
}
// Single-to-multiple handling - if we can, explode out the component geometries
if ($delta_handling == 's_to_m' || $delta_handling == 'c_to_m') {
$type = $geometries[0]
->geometryType();
if (in_array($type, array(
'MultiPoint',
'MultiLineString',
'MultiPolygon',
'GeometryCollection',
))) {
$components = $geometries[0]
->getComponents();
foreach ($components as $component) {
$values[] = geocoder_field_widget_values_from_geometry($component, $target_info);
}
}
else {
$values[] = geocoder_field_widget_values_from_geometry($geometries[0], $target_info);
}
}
// For multiple-to-single handling, run it though geometryReduce
if ($delta_handling == 'm_to_s' || $delta_handling == 'c_to_s') {
$reduced_geom = \geoPHP::geometryReduce($geometries);
$values[] = geocoder_field_widget_values_from_geometry($reduced_geom, $target_info);
}
return $values;
}