Raw layers are an addition to OpenLayers post-alpha7 which allow users to manually add points to a layer type. In comparison to the layer_type method of pulling in custom data, this allows you to 'push' data into the layer data array itself. In any case where reusability is a priority, layer_types should be utilized (as documented in LAYER_TYPES.txt). However, this is a quick method for success that may be more accessible to more developers. A brief, example-only implementation of an arbitrary layer is below. /** * Implementation of hook_ctools_plugin_api(). * Required to provide layers */ function geolocator_ctools_plugin_api($module, $api) { if ($module == "openlayers") { switch ($api) { case 'openlayers_layers': return array('version' => 1); } } } /** * One can have the 'features' => element point to a function * or be built on the fly within the _layers method. However, * close attention must be paid to ctools caching in order to * insure that dynamic data stays dynamic */ function geolocator_openlayers_layers() { $layers = array(); $layer = new stdClass(); $layer->api_version = 1; $layer->name = 'afghanistan'; $layer->title = 'One Point on Afghanistan'; $layer->description = ''; $layer->data = array( 'layer_type' => 'openlayers_layer_type_raw', 'projection' => array('900913'), 'features' => array( array( "wkt"=> "POINT(65 33)", "projection"=> "4326", "attributes"=> array( "name"=> "Afghanistan", "description"=> "248" ) ) ) ); $layers[$layer->name] = $layer; return $layers; } /** * map_preprocess_alter allows one to add a new layer to a map * before layers are rendered and data is pulled from them. */ function geolocator_openlayers_map_preprocess_alter(&$map) { $map['layers']['afghanistan'] = 'afghanistan'; $map['layer_activated']['afghanistan'] = 'afghanistan'; $map['layer_switcher']['afghanistan'] = 'afghanistan'; }