function geofield_field_formatter_view in Geofield 7.2
Same name and namespace in other branches
- 7 geofield.formatters.inc \geofield_field_formatter_view()
Implements hook_field_formatter_view().
File
- ./
geofield.formatters.inc, line 215 - Drupal field formatter hooks and helper functions.
Code
function geofield_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
// First check to see if we have any value and remove any unset deltas
foreach ($items as $delta => $item) {
if (empty($item['geom'])) {
unset($items[$delta]);
}
}
// Transform into centroid or bounding if needed
if ($display['settings']['data'] != 'full') {
geophp_load();
if ($display['settings']['data'] == 'centroid') {
foreach ($items as $delta => $item) {
$centroid_wkt = 'POINT(' . $item['lon'] . ' ' . $item['lat'] . ')';
$centroid = geoPHP::load($centroid_wkt);
$items[$delta] = geofield_get_values_from_geometry($centroid);
}
}
if ($display['settings']['data'] == 'bounding') {
foreach ($items as $delta => $item) {
$envelope_wkt = 'POLYGON ((' . $item['left'] . ' ' . $item['top'] . ', ' . $item['right'] . ' ' . $item['top'] . ', ' . $item['right'] . ' ' . $item['bottom'] . ', ' . $item['left'] . ' ' . $item['bottom'] . ', ' . $item['left'] . ' ' . $item['top'] . '))';
$envelope = geoPHP::load($envelope_wkt);
$items[$delta] = geofield_get_values_from_geometry($envelope);
}
}
}
// If we are a lat, lon, or latlon, and we are using degrees-minutes-seconds (instead of decimal degrees), then do a transformation
if (isset($display['settings']['format'])) {
if ($display['settings']['format'] == 'degrees_minutes_seconds') {
foreach ($items as $delta => $item) {
$items[$delta]['lat'] = geofield_latlon_DECtoDMS($item['lat'], 'lat');
$items[$delta]['lon'] = geofield_latlon_DECtoDMS($item['lon'], 'lon');
}
}
}
// If we are a lat, lon, or latlon, and we are using celestial coordinate system (instead of decimal degrees), then do a transformation
if (isset($display['settings']['format'])) {
if ($display['settings']['format'] == 'ccs') {
foreach ($items as $delta => $item) {
$items[$delta]['lat'] = geofield_latlon_DECtoCCS($item['lat'], 'lat');
$items[$delta]['lon'] = geofield_latlon_DECtoCCS($item['lon'], 'lon');
}
}
}
switch ($display['type']) {
case 'geofield_wkt':
geophp_load();
foreach ($items as $delta => $item) {
$geometry = geoPHP::load($item['geom']);
$wkt = $geometry
->out('wkt');
$microdata = _geofield_item_microdata_propertyvalue($entity, $instance, $item);
$element[$delta] = array(
'#markup' => $wkt . $microdata,
);
}
return $element;
case 'geofield_geojson':
geophp_load();
foreach ($items as $delta => $item) {
$geometry = geoPHP::load($item['geom']);
$json = $geometry
->out('json');
$element[$delta] = array(
'#markup' => $json,
);
}
return $element;
case 'geofield_kml':
geophp_load();
foreach ($items as $delta => $item) {
$geometry = geoPHP::load($item['geom']);
$kml = $geometry
->out('kml');
$element[$delta] = array(
'#markup' => $kml,
);
}
return $element;
case 'geofield_gpx':
geophp_load();
foreach ($items as $delta => $item) {
$geometry = geoPHP::load($item['geom']);
$kml = $geometry
->out('gpx');
$element[$delta] = array(
'#markup' => $kml,
);
}
return $element;
case 'geofield_geohash':
geophp_load();
foreach ($items as $delta => $item) {
$geometry = geoPHP::load($item['geom']);
$geohash = $geometry
->out('geohash');
$element[$delta] = array(
'#markup' => $geohash,
);
}
return $element;
case 'geofield_latlon':
foreach ($items as $delta => $item) {
$microdata = _geofield_item_microdata_propertyvalue($entity, $instance, $item);
if ($display['settings']['labels']) {
$element[$delta] = array(
'#markup' => t('Latitude: !latitude <br/>Longitude: !longitude' . $microdata, array(
'!latitude' => $item['lat'],
'!longitude' => $item['lon'],
)),
);
}
else {
$element[$delta] = array(
'#markup' => $item['lat'] . ', ' . $item['lon'] . $microdata,
);
}
}
return $element;
case 'geofield_lat':
foreach ($items as $delta => $item) {
$microdata = _geofield_item_microdata_propertyvalue($entity, $instance, $item);
$element[$delta] = array(
'#markup' => $item['lat'] . $microdata,
);
}
return $element;
case 'geofield_lon':
foreach ($items as $delta => $item) {
$microdata = _geofield_item_microdata_propertyvalue($entity, $instance, $item);
$element[$delta] = array(
'#markup' => $item['lon'] . $microdata,
);
}
return $element;
case 'geofield_geo_type':
foreach ($items as $delta => $item) {
$element[$delta] = array(
'#markup' => $item['geo_type'],
);
}
return $element;
case 'geofield_openlayers':
$map_name = $display['settings']['map_preset'] ? $display['settings']['map_preset'] : 'geofield_formatter_map';
$element[0] = array(
'#markup' => _geofield_openlayers_formatter($map_name, $items),
);
return $element;
case 'geofield_def_list':
foreach ($items as $delta => $item) {
$element[$delta] = array(
'#markup' => _geofield_def_list_formatter($item, $display['settings']),
);
}
return $element;
case 'geofield_description':
foreach ($items as $delta => $item) {
$element[$delta] = array(
'#markup' => _geofield_description_formatter($item, $display['settings']),
);
}
return $element;
}
return $element;
}