function leaflet_geojson_map_pane_edit_form in Leaflet GeoJSON 7.2
Edit form for the pane's settings.
1 string reference to 'leaflet_geojson_map_pane_edit_form'
- leaflet_geojson.map_pane.inc in plugins/
content_types/ leaflet_geojson.map_pane.inc
File
- plugins/
content_types/ leaflet_geojson.map_pane.inc, line 144
Code
function leaflet_geojson_map_pane_edit_form($form, &$form_state) {
$conf = $form_state['conf'];
// Build base layer selector.
$base_options = array();
foreach (leaflet_map_get_info() as $key => $map) {
$base_options[$key] = t($map['label']);
}
// The default selection is the first one, or the previously selected one.
$default_base = key($base_options);
if (isset($conf['map_settings']['base'])) {
$default_base = $conf['map_settings']['base'];
}
$form['map_settings']['base'] = array(
'#title' => t('Leaflet base layer'),
'#type' => 'select',
'#options' => $base_options,
'#default_value' => $default_base,
'#required' => TRUE,
'#description' => t('Select the Leaflet base layer (map style) that will display the data.'),
);
// Provide some UI help for setting up multi-layer maps.
$data_layers_description = t('Choose one or more GeoJSON sources that will provide the map data. ');
$data_layers_description .= t('If more than one source is selected, a layer control will appear on the map. ');
$data_layers_description .= t('Views GeoJSON page displays are automatically exposed here.');
// Build the data layers selector.
$form['map_settings']['info'] = array(
'#type' => 'fieldset',
'#tree' => TRUE,
'#title' => 'Views GeoJSON Data Layers',
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#description' => $data_layers_description,
);
// Grab the available layers.
$sources = leaflet_geojson_source_get_info(NULL, TRUE);
$source_options = array();
foreach ($sources as $id => $source) {
$source_options[$id] = $source['title'];
}
// Figure out if we have any data layers yet, and set the layer count..
if (empty($form_state['layer_count'])) {
// During creation, we wont have any data yet, so only one layer.
if (!isset($conf['map_settings']['info']['data'])) {
$form_state['layer_count'] = 1;
}
else {
// During edit, we'll have one or more layers, so count.
$form_state['layer_count'] = count($conf['map_settings']['info']['data']);
}
}
// Build the number of layer selections indicated by layer_count.
for ($layer_index = 1; $layer_index <= $form_state['layer_count']; $layer_index++) {
$default_layer_source = key($source_options);
if (isset($conf['map_settings']['info']['data']['leaflet_' . $layer_index])) {
$default_layer_source = $conf['map_settings']['info']['data']['leaflet_' . $layer_index];
}
$form['map_settings']['info']['data']['leaflet_' . $layer_index] = array(
'#type' => 'select',
'#title' => t('GeoJSON layer source'),
'#options' => $source_options,
'#default_value' => $default_layer_source,
'#required' => $layer_index == 1,
);
}
// Provide an "Add another layer" button.
$form['map_settings']['info']['add_layer'] = array(
'#type' => 'submit',
'#value' => t('Add another layer'),
'#submit' => array(
'leaflet_geojson_map_pane_add_layer',
),
);
// Provide a "Remove" button for latest selected layer.
if ($form_state['layer_count'] > 1) {
$form['map_settings']['info']['remove_layer'] = array(
'#type' => 'submit',
'#value' => t('Remove last layer'),
'#submit' => array(
'leaflet_geojson_map_pane_remove_last_layer',
),
);
}
// Leaflet wants a height in the call to the render function.
$default_height = isset($conf['map_settings']['height']) ? $conf['map_settings']['height'] : 400;
$form['map_settings']['height'] = array(
'#title' => t('Map height'),
'#type' => 'textfield',
'#field_suffix' => t('px'),
'#size' => 4,
'#default_value' => $default_height,
'#required' => FALSE,
'#description' => t("Set the map height in pixels."),
);
// Optionally override natural center and zoom.
$default_override_zoom_center = isset($conf['map_settings']['override_zoom_center']) ? $conf['map_settings']['override_zoom_center'] : 0;
$form['map_settings']['override_zoom_center'] = array(
'#type' => 'checkbox',
'#title' => 'Override natural center and zoom placement',
'#default_value' => $default_override_zoom_center,
'#description' => t("Map will auto zoom and center based on the data. Check this box to customize the zooom and center"),
);
$form['map_settings']['custom_zoom_center'] = array(
'#type' => 'fieldset',
'#title' => 'Zoom and Center',
'#tree' => TRUE,
'#states' => array(
'visible' => array(
':input[name="override_zoom_center"]' => array(
'checked' => TRUE,
),
),
),
);
$default_zoom = isset($conf['map_settings']['custom_zoom_center']['zoom']) ? $conf['map_settings']['custom_zoom_center']['zoom'] : 1;
$form['map_settings']['custom_zoom_center']['zoom'] = array(
'#title' => t('Zoom'),
'#type' => 'textfield',
'#size' => 20,
'#default_value' => $default_zoom,
'#required' => FALSE,
);
$form['map_settings']['custom_zoom_center']['center'] = array(
'#type' => 'fieldset',
'#title' => 'Map center',
'#tree' => TRUE,
'#description' => t("Provide a default map center especially when using the bounding box strategy."),
);
$default_center = isset($conf['map_settings']['custom_zoom_center']['center']) ? $conf['map_settings']['custom_zoom_center']['center'] : array(
'lon' => 0,
'lat' => 0,
);
$form['map_settings']['custom_zoom_center']['center']['lon'] = array(
'#title' => t('Center longitude'),
'#type' => 'textfield',
'#size' => 20,
'#default_value' => $default_center['lon'],
'#required' => FALSE,
);
$form['map_settings']['custom_zoom_center']['center']['lat'] = array(
'#title' => t('Center latitude'),
'#type' => 'textfield',
'#size' => 20,
'#default_value' => $default_center['lat'],
'#required' => FALSE,
);
return $form;
}