API.txt

This file contains the main API functions for OpenLayers and its sub-modules.

Also, see:
THEMING.txt
HOOKS.txt


 Map Array API
======================================================

Maps are built using an array that looks like this:

  $map = array(
    'id' => _openlayers_create_map_id(),
    'projection' => '900913',
    'width' => 'auto',
    'height' => '300px',
    'center' => array(
      'lat' => 40,
      'lon' => 5,
      'zoom' => 5,
    ),
    'options' => array(
      'displayProjection' => "4326",
      'maxResolution' => 156543.0339,
      'maxExtent' => array(
        'left' => -20037508.34,
        'bottom' => -20037508.34,
        'right' => 20037508.34,
        'top' => 20037508.34,
      ),
    ),
    'controls' => array(
      'LayerSwitcher' => TRUE,
    ),
    'default_layer' => 'default_wms',
    'layers' => array(
      'default_wms' => array(
        'id' => 'default_wms',
        'type'=> 'WMS',
        'name' => t('Default Open Layers WMS'),
        'url' => 'http://labs.metacarta.com/wms/vmap0',
        'params' => array(
          'layers' => 'basic',
        ),
        'options' => array(),
        'events' => array(
        	'loadstart'=> array(),
        	'loadend' => array(),
        	'loadcancel' => array(),
          'visibilitychanged' => array(),
          'moveend' => array(),
        ),
      ),
      'default_vector' => array(
        'id' => 'default_vector',
        'type' => 'Vector',
        'name' => t('Default Vector'),
        'options' => array(),
        'events' => array(
        	'loadstart'=> array('yourModulesJSFunction'),
        ),
      ),
    ),
    'behaviors' => array(
      'behavior_id' => array(
        'id' => 'behavior_id',
        'type' => 'openlayers_behaviors_draw_features',
        'feature_type' => 'point',
        'layer' => 'default_vector',
        'featureadded_handler' => array('openlayersCCKFeatureAdded'),
        'featuremodified_handler' => array('openlayersCCKFeatureModified'),
        'featureremoved_handler' => array('openlayersCCKFeatureRemoved'),
      ),
      'zoom_to_layer' => array(
        'id' => 'zoom_to_layer',
        'type' => 'openlayers_behaviors_zoom_to_layer',
        'layer' => 'default_vector',
      ),
    ),
    'events' => array(
      'addlayer' => array(''),
    ),
  );
  
 API: Events
============
 Events are currently supported for both the map object, and layer objects.
 To define an event you would first modify the map or layer's PHP array like so:
  'default_vector' => array(
     'events' => array(
      'moveend' => array('customModuleLoadSomeData','customModuleDoSomethingElse'),
      'zoomend' => array('customModuleLoadSomeData'),
    ),
  )
  
  You would then be responsible for making sure that the customModuleLoadSomeData, and customModuleDoSomethingElse javascript functions are available.
  They would follow the following format:
  
  function customModuleLoadSomeData(event){
    var layer = event.layer;
    
    //Our user has panned or zoomed the map. Let's load some more data into this layer
    ....
  }

  Map Events
  ------------
  preaddlayer
  addlayer
  removelayer
  changelayer
  movestart
  move
  moveend
  zoomend
  popupopen
  popupclose
  addmarker
  removemarker
  clearmarkers
  mouseover
  mouseout
  mousemove
  dragstart
  drag
  dragend
  changebaselayer
  
  One-Time Map Events
    These events are triggered during the map building process, letting you
    execute javascript at various points while the map is being built.
  --------------------
  beforeEverything  -- Executed as soon as possible for each map. The OpenLayers map object is not yet built.
  beforeLayers      -- After the map object is built, but before layers are created and added.
  beforeCenter      -- Before the map is zoomed and centered.
  beforeControls    -- Before controls are added to the map
  beforeEvents      -- Before events are added to the map
  beforeBehaviors   -- Before behaviors are triggered
  mapReady          -- Last call
  
  
  Layer Events
  -------------
  beforefeatureadded
  beforefeaturesadded
  featureadded
  featuresadded
  beforefeatureremoved
  featureremoved
  featuresremoved
  beforefeatureselected
  featureselected
  featureunselected
  beforefeaturemodified
  featuremodified
  afterfeaturemodified
  refresh
  loadstart
  loadend
  loadcancel
  visibilitychanged
  moveend



API: Adding Features
====================

  Although there are many paths to getting features onto maps via events, the API provides a standard way of adding features via the map array.
  To do so built a feature of the Vector type and add geometry, style, and attribute information like so:

    'feature_example' => array(
      'id' => 'feature_example',
      'type' => 'Vector',
      'name' => t('Default Vector'),
      'options' => array(),
      'events' => array(),
      'features' => array(
        'feature_1' => array(
          'wkt' => 'POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2))',
          'attributes' => array(
            'name' => 'A Polygon with a hole in it',
            'date' => 'December 24, 2004',
            'author' => 'Santa Claus',
          ),
          'style' => array(
            'fillColor' => '#aa4400',
            'fillOpacity' => '0.7',
          ),
        ),
        'feature_2' => array(
          'lat' => '40.123',
          'lon' => '-20.123',
          'attributes' => array(
            'name' => 'A point',
            'date' => 'December 24, 2004',
            'author' => 'Rudolf',
          ),
          'style' => array(
            'externalGraphic' => 'http://openlayers.org/dev/img/marker.png',
            'graphicWidth' => 21,
            'graphicHeight' => 25,
            'graphicXOffset' => 10,
            'graphicYOffset' => 10,
          ),
        ),
      ),
    ),


  Default style properties
  ------------------------
  fillColor: "#ee9900"
  fillOpacity: 0.4
  strokeColor: "#ee9900"
  strokeOpacity: 1
  strokeWidth: 1
  strokeLinecap: "round" [butt | round | square]
  strokeDashstyle: "solid" [dot | dash | dashdot | longdash | longdashdot | solid]
  pointRadius: 6
  pointerEvents: "visiblePainted"
  cursor: ""

  Other style properties that have no default values
  --------------------------------------------------
  externalGraphic,
  graphicWidth,
  graphicHeight,
  graphicOpacity,
  graphicXOffset,
  graphicYOffset,
  graphicName,
  display


API: Behaviors
==============

  Behaviors add interactivity to maps. 



API: Layers
===========

  How to add layers to maps.
 
 Adding pre-defined layers
 -------------------------
 
 Example: NASA Layers
 
 $map['layers'] = array (
   'openlayers_layers_nasa_global_mosaic',
   'openlayers_layers_nasa_daily_planet',
   'openlayers_layers_nasa_blue_marble',
 );
 
 Adding layers the long way
 --------------------------
 
  Example: NASA Layers
 
  $map['layers'] = array (
    'openlayers_layers_nasa_global_mosaic' => array(
      'id' => openlayers_layers_nasa_global_mosaic,
      'type' => 'WMS',
      'name' => 'NASA Global Mosaic!',
      'projection' => array('4326'),
      'baselayer' => true,
      'url' => 'http://t1.hypercube.telascience.org/cgi-bin/landsat7',
      'params' => array(
        'layers' => 'landsat7',
      ),
     );
    )
    'openlayers_layers_nasa_daily_planet',
    'openlayers_layers_nasa_blue_marble',
  );  
 
 Some of those parameters are used across all layer types, and some are specific to the 'WMS' layer type.
  id         -- Unique ID of the layer. This should be the same as the array key
  type       -- Layer type. This defines which handler is repsonsible for processing this layer. Examples include WMS, WFS, Vector, KML.
  name       -- The name of the layer presented to the user
  projection -- An array with a list of compatible projections. If projection is not specified, then it is assumed that this layer is compatible with all projections.
  baselayer  -- Should this be considered a baselayer or an overlay? If baselayer is not speficied, then baselayer may be true of false depending on the layer type.
  url        -- WMS SPECIFIC - defines the WMS URL
  params     -- WMS SPECIFIC - associative array of parameters to pass to the WMS query
  
  
  
API: Defining New Reusable Layers
=================================
  
  
  
  
API: Defining New Reusable Layer Types
======================================
  
  
  
  
API: Defining New Reusable Behaviors
====================================
  
  
  
  
  
  
API: predefined Layer Types and how to use them
======================================================
  Vector
  ------
  This is the most fundemental layer type and is used for most overlays.

  WMS
  ---
  http://en.wikipedia.org/wiki/Web_Map_Service
  

  WFS
  ---
  http://en.wikipedia.org/wiki/Web_Feature_Service
  
  KML
  ---
  http://en.wikipedia.org/wiki/KML
  
  XYZ
  ---
  
  Google, VirtualEarth, and Yahoo
  --------------------------------
  These layer types have a very limited way that they can be reused. I beleive all those ways are already implemented. So don't use these, use the implemented layer definitions!
  
  
  
  
  
API: predefined Behaviors and how to use them
======================================================