function _location_views_expand_map in Location 5.3
File
- contrib/
location_views/ location_views.module, line 1015 - Views-enables the location module.
Code
function _location_views_expand_map($element) {
// Views 1.x has serious issues with persisting #tree.
// Repair stuff that views screwed up.
if (isset($element['#default_value']) && is_string($element['#default_value'])) {
$val = explode(',', $element['#default_value']);
$element['#default_value'] = array(
'latitude' => $val[0],
'longitude' => $val[1],
);
}
if (isset($element['#value']) && is_string($element['#value'])) {
$val = explode(',', $element['#value']);
$element['#value'] = array(
'latitude' => $val[0],
'longitude' => $val[1],
);
}
// @@@ I'm undecided as to whether this is a good idea to have.
// It seems to break the principle of least surprise...
if (!isset($element['#default_value']['latitude']) || empty($element['#default_value']['latitude'])) {
// Default value not set. Attempt to come up with a default value based on the user's location.
global $user;
$result = db_query('SELECT l.latitude, l.longitude FROM {location} l INNER JOIN {location_instance} i ON l.lid = i.lid WHERE i.uid = %d', $user->uid);
if ($row = db_fetch_array($result)) {
$element['#default_value'] = $row;
}
}
if (!isset($element['#default_value']['latitude']) || empty($element['#default_value']['latitude'])) {
// Default value not set, tidy up things a bit to prevent warnings.
$element['#default_value'] = array(
'latitude' => '',
'longitude' => '',
);
}
// The rest of this used to be location_latlon_form(), before it got removed.
$usegmap = function_exists('gmap_set_location') && variable_get('location_usegmap', FALSE);
if ($usegmap) {
$element['map'] = array();
//reserve spot at top of form for map
}
$element['latitude'] = array(
'#type' => 'textfield',
'#title' => t('Latitude'),
'#default_value' => isset($element['#default_value']['latitude']) ? $element['#default_value']['latitude'] : '',
'#size' => 64,
'#maxlength' => 64,
);
$element['longitude'] = array(
'#type' => 'textfield',
'#title' => t('Longitude'),
'#default_value' => isset($element['#default_value']['longitude']) ? $element['#default_value']['longitude'] : '',
'#size' => 64,
'#maxlength' => 64,
'#description' => t('Click on the map to mark the center point for your search, then submit the values.'),
);
if ($usegmap) {
$map_macro = variable_get('gmap_user_map', '[gmap|id=usermap|center=0,30|zoom=16|width=100%|height=400px]');
$element['map']['gmap']['#value'] = gmap_set_location($map_macro, $element, array(
'latitude' => 'latitude',
'longitude' => 'longitude',
));
}
return $element;
}