class openlayers_layer_type_geojson in Openlayers 7.2
OpenLayers GeoJSON Layer Type class
Hierarchy
- class \openlayers_layer_type
Expanded class hierarchy of openlayers_layer_type_geojson
3 string references to 'openlayers_layer_type_geojson'
- openlayers_layer_type_geojson::options_init in plugins/
layer_types/ openlayers_layer_type_geojson.inc - Provide initial values for options.
- _openlayers_openlayers_layers in includes/
openlayers.layers.inc - Internal callback Helper function to return default layers.
- _openlayers_test_openlayers_layers in tests/
includes/ openlayers_test.layers.inc - @file
File
- plugins/
layer_types/ openlayers_layer_type_geojson.inc, line 10 - GeoJSON Layer Type
View source
class openlayers_layer_type_geojson extends openlayers_layer_type {
/**
* Provide initial values for options.
*/
function options_init() {
return array(
'layer_type' => 'openlayers_layer_type_geojson',
'layer_handler' => 'geojson',
'projection' => array(
'EPSG:4326',
),
'serverResolutions' => openlayers_get_resolutions('EPSG:4326'),
'isBaseLayer' => FALSE,
'vector' => TRUE,
'geojson_data' => '',
'useBBOX' => FALSE,
) + parent::options_init();
}
/**
* Options form which generates layers
*/
function options_form($defaults = array()) {
return array(
'url' => array(
'#type' => 'textfield',
'#title' => t('URL'),
'#description' => t('The URL of the GeoJSON file. This can be a Drupal path as well, as it will get run through the Drupal <a href="!url">url()</a> function.', array(
'!url' => 'http://api.drupal.org/api/drupal/includes--common.inc/function/url',
)),
'#maxlength' => 1024,
'#default_value' => isset($this->data['url']) ? $this->data['url'] : '',
),
'useBBOX' => array(
'#type' => 'checkbox',
'#title' => t('Use Bounding Box Strategy'),
'#description' => t('Bounding Box strategy will add a query string onto the GeoJSON URL, which means that only data in the viewport of the map will be loaded. This can be helpful if you have lots of data coming from the feed.'),
'#default_value' => isset($this->data['useBBOX']) ? $this->data['useBBOX'] : FALSE,
),
//see http://dev.openlayers.org/docs/files/OpenLayers/Strategy/BBOX-js.html#OpenLayers.Strategy.BBOX.resFactor
'resFactor' => array(
'#type' => 'textfield',
'#title' => t('Bounding Box resFactor'),
'#description' => t('Used to determine when previously requested features are invalid (set to 1 if unsure).
The resFactor will be compared to the resolution of the previous request to the current map resolution.<br />
If resFactor > (old / new) and 1/resFactor < (old / new).
<ul>
<li>If you set a resFactor of 1, data will be requested every time the resolution changes.</li>
<li>If you set a resFactor of 3, data will be requested if the old resolution is 3 times the new, or if the new is 3 times the old.</li>
<li>If the old bounds do not contain the new bounds new data will always be requested (with or without considering resFactor).</li>
</ul>
'),
'#default_value' => isset($this->data['resFactor']) ? $this->data['resFactor'] : 1,
),
//see http://dev.openlayers.org/docs/files/OpenLayers/Strategy/BBOX-js.html#OpenLayers.Strategy.BBOX.ratio
'ratio' => array(
'#type' => 'textfield',
'#title' => t('Bounding Box ratio'),
'#description' => t('The ratio of the data bounds to the viewport bounds (in each dimension). Default is 3.'),
'#default_value' => isset($this->data['ratio']) ? $this->data['ratio'] : 3,
),
'preload' => array(
'#type' => 'checkbox',
'#title' => t('Preload layer'),
'#description' => t('Load data before layer is made visible. Useful when you want to avoid having to wait for an Ajax call to load the data'),
'#default_value' => isset($this->data['preload']) ? $this->data['preload'] : FALSE,
),
'useScript' => array(
'#type' => 'checkbox',
'#title' => t('Use Script Method'),
'#description' => t('Avoid 405 error and XSS issues load data from another server with ajax'),
'#default_value' => isset($this->data['useScript']) ? $this->data['useScript'] : FALSE,
),
'callbackKey' => array(
'#type' => 'textfield',
'#title' => t('Script Callback Key'),
'#description' => t('Key returned by callback along with geoJSON'),
'#default_value' => isset($this->data['callbackKey']) ? $this->data['callbackKey'] : NULL,
),
'geojson_data' => array(
'#type' => 'textarea',
'#title' => t('GeoJSON Data'),
'#description' => t('Paste raw GeoJSON data here. It is better to use a URL. This is provided for very simple use cases like one or two features. If there is data here, it will override the URL above.'),
'#default_value' => isset($this->data['geojson_data']) ? $this->data['geojson_data'] : '',
),
);
}
/**
* Render.
*/
function render(&$map) {
if (isset($map['views_arguments'])) {
foreach ((array) $map['views_arguments'] as $name => $value) {
$this->data['url'] = str_replace("[{$name}]", $value, $this->data['url']);
}
}
if (module_exists('facetapi') && isset($_GET['f'])) {
$this->data['url'] = !empty($this->data['url']) ? url($this->data['url'], array(
'query' => array(
'f' => $_GET['f'],
),
'absolute' => TRUE,
)) : '';
}
else {
$this->data['url'] = !empty($this->data['url']) ? file_create_url($this->data['url']) : '';
}
drupal_add_js(drupal_get_path('module', 'openlayers') . '/plugins/layer_types/openlayers_layer_type_geojson.js');
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
openlayers_layer_type:: |
public | property | Stores the options for this layer. | |
openlayers_layer_type:: |
public | property | Stores the current map. | |
openlayers_layer_type:: |
public | function | ||
openlayers_layer_type:: |
function | Submit the options_form(). | 6 | |
openlayers_layer_type:: |
function | Validate the options_form(). | 11 | |
openlayers_layer_type:: |
function | Options form to configure layer-type-wide options. | 3 | |
openlayers_layer_type:: |
function | Set configuration and store map. | ||
openlayers_layer_type_geojson:: |
function |
Options form which generates layers Overrides openlayers_layer_type:: |
||
openlayers_layer_type_geojson:: |
function |
Provide initial values for options. Overrides openlayers_layer_type:: |
||
openlayers_layer_type_geojson:: |
function |
Render. Overrides openlayers_layer_type:: |