From 7282fabcfef34ef95b8c6bd414f34d77037451e1 Mon Sep 17 00:00:00 2001 From: arno Date: Sat, 11 Jul 2009 18:36:32 +0200 Subject: [PATCH 1/1] initial commit --- COPYING.txt | 47 + README.txt | 23 + admin.php | 157 + auth.php | 47 + build.sh | 53 + changes.php | 138 + img | 1 + inc/.htaccess | 1 + inc/db/anydb.php | 189 + inc/db/mysql.php | 250 + inc/errors.php | 29 + inc/settings.php | 32 + inc/utils.php | 15 + index.php | 52 + items.php | 62 + .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 260 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 251 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 104 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 153 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 3762 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 90 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 129 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_228ef1_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 0 -> 5355 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../ui-lightness/jquery-ui-1.7.2.custom.css | 406 ++ jquery/development-bundle/AUTHORS.txt | 30 + jquery/development-bundle/GPL-LICENSE.txt | 278 + jquery/development-bundle/MIT-LICENSE.txt | 25 + .../demos/datepicker/alt-field.html | 31 + .../demos/datepicker/buttonbar.html | 33 + .../demos/datepicker/date-formats.html | 43 + .../demos/datepicker/default.html | 31 + .../demos/datepicker/dropdown-month-year.html | 34 + .../demos/datepicker/icon-trigger.html | 31 + .../demos/datepicker/images/calendar.gif | Bin 0 -> 269 bytes .../demos/datepicker/index.html | 26 + .../demos/datepicker/inline.html | 31 + .../demos/datepicker/localization.html | 120 + .../demos/datepicker/min-max.html | 31 + .../demos/datepicker/multiple-calendars.html | 34 + jquery/development-bundle/demos/demos.css | 334 ++ .../demos/images/calendar.gif | Bin 0 -> 269 bytes .../demos/images/demo-config-on-tile.gif | Bin 0 -> 180 bytes .../demos/images/demo-config-on.gif | Bin 0 -> 343 bytes .../demos/images/demo-spindown-closed.gif | Bin 0 -> 104 bytes .../demos/images/demo-spindown-open.gif | Bin 0 -> 105 bytes .../demos/images/icon-docs-info.gif | Bin 0 -> 214 bytes .../demos/images/pbar-ani.gif | Bin 0 -> 304064 bytes jquery/development-bundle/demos/index.html | 269 + .../development-bundle/docs/datepicker.html | 2150 ++++++++ .../external/bgiframe/ChangeLog.txt | 20 + .../external/bgiframe/META.json | 32 + .../external/bgiframe/docs/index.html | 113 + .../external/bgiframe/jquery.bgiframe.js | 100 + .../external/bgiframe/jquery.bgiframe.min.js | 10 + .../external/bgiframe/jquery.bgiframe.pack.js | 10 + .../external/bgiframe/test/index.html | 197 + .../external/cookie/jquery.cookie.js | 97 + .../external/cookie/jquery.cookie.min.js | 10 + .../external/cookie/jquery.cookie.pack.js | 10 + .../external/cookie/jquery.cookie.zip | Bin 0 -> 3471 bytes .../external/jsdiff/jsdiff.js | 159 + .../external/qunit/testrunner.js | 780 +++ .../external/qunit/testsuite.css | 120 + .../external/simulate/jquery.simulate.js | 152 + jquery/development-bundle/jquery-1.3.2.js | 4376 +++++++++++++++ .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../base/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../development-bundle/themes/base/ui.all.css | 2 + .../themes/base/ui.base.css | 2 + .../themes/base/ui.core.css | 37 + .../themes/base/ui.datepicker.css | 62 + .../themes/base/ui.theme.css | 245 + .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 260 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 251 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 104 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 153 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 3762 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 90 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 129 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_228ef1_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 0 -> 5355 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../ui-lightness/jquery-ui-1.7.2.custom.css | 406 ++ .../themes/ui-lightness/ui.accordion.css | 9 + .../themes/ui-lightness/ui.all.css | 2 + .../themes/ui-lightness/ui.base.css | 2 + .../themes/ui-lightness/ui.core.css | 37 + .../themes/ui-lightness/ui.datepicker.css | 62 + .../themes/ui-lightness/ui.dialog.css | 13 + .../themes/ui-lightness/ui.progressbar.css | 4 + .../themes/ui-lightness/ui.resizable.css | 13 + .../themes/ui-lightness/ui.slider.css | 17 + .../themes/ui-lightness/ui.tabs.css | 11 + .../themes/ui-lightness/ui.theme.css | 247 + .../ui/i18n/jquery-ui-i18n.js | 771 +++ .../ui/i18n/ui.datepicker-ar.js | 20 + .../ui/i18n/ui.datepicker-bg.js | 20 + .../ui/i18n/ui.datepicker-ca.js | 19 + .../ui/i18n/ui.datepicker-cs.js | 19 + .../ui/i18n/ui.datepicker-da.js | 19 + .../ui/i18n/ui.datepicker-de.js | 19 + .../ui/i18n/ui.datepicker-el.js | 19 + .../ui/i18n/ui.datepicker-eo.js | 19 + .../ui/i18n/ui.datepicker-es.js | 19 + .../ui/i18n/ui.datepicker-fa.js | 19 + .../ui/i18n/ui.datepicker-fi.js | 19 + .../ui/i18n/ui.datepicker-fr.js | 19 + .../ui/i18n/ui.datepicker-he.js | 19 + .../ui/i18n/ui.datepicker-hr.js | 19 + .../ui/i18n/ui.datepicker-hu.js | 19 + .../ui/i18n/ui.datepicker-hy.js | 19 + .../ui/i18n/ui.datepicker-id.js | 19 + .../ui/i18n/ui.datepicker-is.js | 19 + .../ui/i18n/ui.datepicker-it.js | 19 + .../ui/i18n/ui.datepicker-ja.js | 20 + .../ui/i18n/ui.datepicker-ko.js | 19 + .../ui/i18n/ui.datepicker-lt.js | 19 + .../ui/i18n/ui.datepicker-lv.js | 19 + .../ui/i18n/ui.datepicker-ms.js | 19 + .../ui/i18n/ui.datepicker-nl.js | 19 + .../ui/i18n/ui.datepicker-no.js | 19 + .../ui/i18n/ui.datepicker-pl.js | 19 + .../ui/i18n/ui.datepicker-pt-BR.js | 19 + .../ui/i18n/ui.datepicker-ro.js | 22 + .../ui/i18n/ui.datepicker-ru.js | 19 + .../ui/i18n/ui.datepicker-sk.js | 19 + .../ui/i18n/ui.datepicker-sl.js | 20 + .../ui/i18n/ui.datepicker-sq.js | 19 + .../ui/i18n/ui.datepicker-sr-SR.js | 19 + .../ui/i18n/ui.datepicker-sr.js | 19 + .../ui/i18n/ui.datepicker-sv.js | 19 + .../ui/i18n/ui.datepicker-th.js | 19 + .../ui/i18n/ui.datepicker-tr.js | 19 + .../ui/i18n/ui.datepicker-uk.js | 25 + .../ui/i18n/ui.datepicker-zh-CN.js | 19 + .../ui/i18n/ui.datepicker-zh-TW.js | 19 + .../ui/jquery-ui-1.7.2.custom.js | 2155 ++++++++ jquery/development-bundle/ui/ui.core.js | 519 ++ jquery/development-bundle/ui/ui.datepicker.js | 1636 ++++++ jquery/development-bundle/version.txt | 1 + jquery/index.html | 266 + jquery/jquery-1.3.2.js | 4376 +++++++++++++++ jquery/jquery-1.3.2.min.js | 19 + jquery/jquery-ui-1.7.2.custom.min.js | 22 + jquery/jquery-ui-1.7.2.custom.zip | Bin 0 -> 324748 bytes jquery/js/jquery-1.3.2.min.js | 19 + jquery/js/jquery-ui-1.7.2.custom.min.js | 22 + js/admin.js | 891 +++ js/jquery-1.3.2.js | 4376 +++++++++++++++ js/jquery-1.3.2.min.js | 19 + js/syp.js | 192 + lib | 1 + license.txt | 1 + media/admin.css | 169 + media/common.css | 54 + media/newimage_throbber.gif | Bin 0 -> 9427 bytes media/pwd_throbber.gif | Bin 0 -> 404 bytes media/syp.css | 50 + openlayers/OpenLayers.js | 299 ++ .../apidoc_config/Data/ClassHierarchy.nd | Bin 0 -> 22329 bytes .../apidoc_config/Data/ConfigFileInfo.nd | Bin 0 -> 26 bytes openlayers/apidoc_config/Data/FileInfo.nd | 222 + .../apidoc_config/Data/ImageFileInfo.nd | Bin 0 -> 198 bytes .../apidoc_config/Data/ImageReferenceTable.nd | Bin 0 -> 234 bytes openlayers/apidoc_config/Data/IndexInfo.nd | Bin 0 -> 267 bytes .../apidoc_config/Data/PreviousMenuState.nd | Bin 0 -> 16660 bytes .../apidoc_config/Data/PreviousSettings.nd | Bin 0 -> 103 bytes openlayers/apidoc_config/Data/SymbolTable.nd | Bin 0 -> 385093 bytes openlayers/apidoc_config/Languages.txt | 113 + openlayers/apidoc_config/Menu.txt | 400 ++ openlayers/apidoc_config/OL.css | 20 + openlayers/apidoc_config/Topics.txt | 105 + openlayers/art/arrows.svg | 127 + openlayers/art/layer-switcher-maximize.svg | 128 + openlayers/art/layer-switcher-minimize.svg | 142 + openlayers/art/marker.svg | 25 + openlayers/art/measuring-stick-off.svg | 36 + openlayers/art/measuring-stick-on.svg | 36 + openlayers/art/panning-hand-off.svg | 44 + openlayers/art/panning-hand-on.svg | 44 + openlayers/art/slider.svg | 71 + openlayers/art/zoom-world.svg | 193 + openlayers/art/zoombar.svg | 73 + openlayers/build/OpenLayers.js | 1093 ++++ openlayers/build/README.txt | 14 + openlayers/build/build.py | 50 + openlayers/build/buildUncompressed.py | 25 + openlayers/build/full.cfg | 32 + openlayers/build/library.cfg | 68 + openlayers/build/license.txt | 92 + openlayers/build/lite.cfg | 22 + .../doc/apidocs/files/OpenLayers-js.html | 43 + .../doc/apidocs/files/OpenLayers/Ajax-js.html | 65 + .../files/OpenLayers/BaseTypes-js.html | 96 + .../files/OpenLayers/BaseTypes/Bounds-js.html | 92 + .../files/OpenLayers/BaseTypes/Class-js.html | 49 + .../OpenLayers/BaseTypes/Element-js.html | 57 + .../files/OpenLayers/BaseTypes/LonLat-js.html | 63 + .../files/OpenLayers/BaseTypes/Pixel-js.html | 59 + .../files/OpenLayers/BaseTypes/Size-js.html | 55 + .../apidocs/files/OpenLayers/Console-js.html | 75 + .../apidocs/files/OpenLayers/Control-js.html | 75 + .../OpenLayers/Control/ArgParser-js.html | 47 + .../OpenLayers/Control/Attribution-js.html | 47 + .../files/OpenLayers/Control/Button-js.html | 42 + .../OpenLayers/Control/DragFeature-js.html | 61 + .../files/OpenLayers/Control/DragPan-js.html | 39 + .../OpenLayers/Control/DrawFeature-js.html | 53 + .../OpenLayers/Control/EditingToolbar-js.html | 43 + .../OpenLayers/Control/GetFeature-js.html | 73 + .../Control/KeyboardDefaults-js.html | 51 + .../OpenLayers/Control/LayerSwitcher-js.html | 51 + .../files/OpenLayers/Control/Measure-js.html | 57 + .../OpenLayers/Control/ModifyFeature-js.html | 82 + .../OpenLayers/Control/MouseDefaults-js.html | 47 + .../OpenLayers/Control/MousePosition-js.html | 57 + .../OpenLayers/Control/MouseToolbar-js.html | 51 + .../OpenLayers/Control/NavToolbar-js.html | 43 + .../OpenLayers/Control/Navigation-js.html | 51 + .../Control/NavigationHistory-js.html | 67 + .../OpenLayers/Control/OverviewMap-js.html | 73 + .../files/OpenLayers/Control/Pan-js.html | 47 + .../files/OpenLayers/Control/PanPanel-js.html | 45 + .../files/OpenLayers/Control/PanZoom-js.html | 59 + .../OpenLayers/Control/PanZoomBar-js.html | 55 + .../files/OpenLayers/Control/Panel-js.html | 65 + .../OpenLayers/Control/Permalink-js.html | 57 + .../files/OpenLayers/Control/Scale-js.html | 43 + .../OpenLayers/Control/ScaleLine-js.html | 43 + .../OpenLayers/Control/SelectFeature-js.html | 71 + .../files/OpenLayers/Control/Snapping-js.html | 57 + .../files/OpenLayers/Control/Split-js.html | 71 + .../Control/WMSGetFeatureInfo-js.html | 58 + .../files/OpenLayers/Control/ZoomBox-js.html | 39 + .../files/OpenLayers/Control/ZoomIn-js.html | 39 + .../files/OpenLayers/Control/ZoomOut-js.html | 39 + .../OpenLayers/Control/ZoomPanel-js.html | 45 + .../Control/ZoomToMaxExtent-js.html | 39 + .../apidocs/files/OpenLayers/Events-js.html | 91 + .../apidocs/files/OpenLayers/Feature-js.html | 47 + .../files/OpenLayers/Feature/Vector-js.html | 55 + .../files/OpenLayers/Feature/WFS-js.html | 43 + .../apidocs/files/OpenLayers/Filter-js.html | 51 + .../OpenLayers/Filter/Comparison-js.html | 63 + .../files/OpenLayers/Filter/FeatureId-js.html | 53 + .../files/OpenLayers/Filter/Logical-js.html | 57 + .../files/OpenLayers/Filter/Spatial-js.html | 59 + .../apidocs/files/OpenLayers/Format-js.html | 57 + .../files/OpenLayers/Format/ArcXML-js.html | 51 + .../OpenLayers/Format/ArcXML/Features-js.html | 47 + .../files/OpenLayers/Format/Filter-js.html | 55 + .../files/OpenLayers/Format/Filter/v1-js.html | 43 + .../OpenLayers/Format/Filter/v1_0_0-js.html | 47 + .../OpenLayers/Format/Filter/v1_1_0-js.html | 47 + .../files/OpenLayers/Format/GML-js.html | 71 + .../files/OpenLayers/Format/GML/Base-js.html | 57 + .../files/OpenLayers/Format/GML/v2-js.html | 43 + .../files/OpenLayers/Format/GML/v3-js.html | 43 + .../files/OpenLayers/Format/GPX-js.html | 57 + .../files/OpenLayers/Format/GeoJSON-js.html | 49 + .../files/OpenLayers/Format/GeoRSS-js.html | 63 + .../files/OpenLayers/Format/JSON-js.html | 57 + .../files/OpenLayers/Format/KML-js.html | 63 + .../files/OpenLayers/Format/OSM-js.html | 53 + .../files/OpenLayers/Format/SLD-js.html | 57 + .../files/OpenLayers/Format/SLD/v1-js.html | 47 + .../OpenLayers/Format/SLD/v1_0_0-js.html | 47 + .../files/OpenLayers/Format/Text-js.html | 53 + .../files/OpenLayers/Format/WFS-js.html | 51 + .../OpenLayers/Format/WFSCapabilities-js.html | 53 + .../Format/WFSCapabilities/v1-js.html | 47 + .../Format/WFSCapabilities/v1_0_0-js.html | 43 + .../Format/WFSCapabilities/v1_1_0-js.html | 43 + .../Format/WFSDescribeFeatureType-js.html | 39 + .../files/OpenLayers/Format/WFST-js.html | 39 + .../files/OpenLayers/Format/WFST/v1-js.html | 51 + .../OpenLayers/Format/WFST/v1_0_0-js.html | 43 + .../OpenLayers/Format/WFST/v1_1_0-js.html | 43 + .../files/OpenLayers/Format/WKT-js.html | 43 + .../files/OpenLayers/Format/WMC-js.html | 55 + .../files/OpenLayers/Format/WMC/v1-js.html | 43 + .../OpenLayers/Format/WMC/v1_0_0-js.html | 47 + .../OpenLayers/Format/WMC/v1_1_0-js.html | 47 + .../OpenLayers/Format/WMSCapabilities-js.html | 53 + .../Format/WMSCapabilities/v1_1-js.html | 47 + .../Format/WMSCapabilities/v1_1_0-js.html | 43 + .../Format/WMSCapabilities/v1_1_1-js.html | 43 + .../Format/WMSDescribeLayer-js.html | 53 + .../Format/WMSDescribeLayer/v1_1-js.html | 47 + .../Format/WMSGetFeatureInfo-js.html | 53 + .../files/OpenLayers/Format/XML-js.html | 79 + .../apidocs/files/OpenLayers/Geometry-js.html | 57 + .../OpenLayers/Geometry/Collection-js.html | 85 + .../files/OpenLayers/Geometry/Curve-js.html | 49 + .../OpenLayers/Geometry/LineString-js.html | 53 + .../OpenLayers/Geometry/LinearRing-js.html | 67 + .../Geometry/MultiLineString-js.html | 43 + .../OpenLayers/Geometry/MultiPoint-js.html | 49 + .../OpenLayers/Geometry/MultiPolygon-js.html | 43 + .../files/OpenLayers/Geometry/Point-js.html | 71 + .../files/OpenLayers/Geometry/Polygon-js.html | 55 + .../OpenLayers/Geometry/Rectangle-js.html | 49 + .../apidocs/files/OpenLayers/Handler-js.html | 70 + .../files/OpenLayers/Handler/Box-js.html | 47 + .../files/OpenLayers/Handler/Click-js.html | 61 + .../files/OpenLayers/Handler/Drag-js.html | 43 + .../files/OpenLayers/Handler/Feature-js.html | 43 + .../files/OpenLayers/Handler/Hover-js.html | 55 + .../files/OpenLayers/Handler/Keyboard-js.html | 47 + .../OpenLayers/Handler/MouseWheel-js.html | 43 + .../files/OpenLayers/Handler/Path-js.html | 43 + .../files/OpenLayers/Handler/Point-js.html | 55 + .../files/OpenLayers/Handler/Polygon-js.html | 43 + .../OpenLayers/Handler/RegularPolygon-js.html | 69 + .../doc/apidocs/files/OpenLayers/Icon-js.html | 47 + .../doc/apidocs/files/OpenLayers/Lang-js.html | 53 + .../apidocs/files/OpenLayers/Lang/ca-js.html | 39 + .../files/OpenLayers/Lang/cs-CZ-js.html | 39 + .../files/OpenLayers/Lang/da-DK-js.html | 39 + .../apidocs/files/OpenLayers/Lang/de-js.html | 39 + .../files/OpenLayers/Lang/en-CA-js.html | 39 + .../apidocs/files/OpenLayers/Lang/en-js.html | 39 + .../apidocs/files/OpenLayers/Lang/es-js.html | 39 + .../apidocs/files/OpenLayers/Lang/fr-js.html | 39 + .../apidocs/files/OpenLayers/Lang/it-js.html | 39 + .../apidocs/files/OpenLayers/Lang/nb-js.html | 39 + .../apidocs/files/OpenLayers/Lang/nl-js.html | 39 + .../files/OpenLayers/Lang/pt-BR-js.html | 39 + .../files/OpenLayers/Lang/sv-SE-js.html | 39 + .../files/OpenLayers/Lang/zh-CN-js.html | 39 + .../files/OpenLayers/Lang/zh-TW-js.html | 39 + .../apidocs/files/OpenLayers/Layer-js.html | 145 + .../OpenLayers/Layer/ArcGIS93Rest-js.html | 59 + .../files/OpenLayers/Layer/ArcIMS-js.html | 77 + .../files/OpenLayers/Layer/Boxes-js.html | 47 + .../files/OpenLayers/Layer/EventPane-js.html | 55 + .../OpenLayers/Layer/FixedZoomLevels-js.html | 49 + .../files/OpenLayers/Layer/GML-js.html | 53 + .../files/OpenLayers/Layer/GeoRSS-js.html | 53 + .../files/OpenLayers/Layer/Google-js.html | 97 + .../files/OpenLayers/Layer/Grid-js.html | 69 + .../OpenLayers/Layer/HTTPRequest-js.html | 63 + .../files/OpenLayers/Layer/Image-js.html | 51 + .../files/OpenLayers/Layer/KaMap-js.html | 61 + .../files/OpenLayers/Layer/KaMapCache-js.html | 49 + .../files/OpenLayers/Layer/MapGuide-js.html | 65 + .../files/OpenLayers/Layer/MapServer-js.html | 47 + .../Layer/MapServer/Untiled-js.html | 47 + .../files/OpenLayers/Layer/Markers-js.html | 61 + .../files/OpenLayers/Layer/MultiMap-js.html | 81 + .../files/OpenLayers/Layer/PointTrack-js.html | 51 + .../Layer/SphericalMercator-js.html | 45 + .../files/OpenLayers/Layer/TMS-js.html | 59 + .../files/OpenLayers/Layer/Text-js.html | 54 + .../files/OpenLayers/Layer/TileCache-js.html | 55 + .../files/OpenLayers/Layer/Vector-js.html | 87 + .../Layer/Vector/RootContainer-js.html | 47 + .../OpenLayers/Layer/VirtualEarth-js.html | 85 + .../files/OpenLayers/Layer/WFS-js.html | 79 + .../files/OpenLayers/Layer/WMS-js.html | 63 + .../OpenLayers/Layer/WMS/Untiled-js.html | 47 + .../files/OpenLayers/Layer/WorldWind-js.html | 51 + .../files/OpenLayers/Layer/XYZ-js.html | 58 + .../files/OpenLayers/Layer/Yahoo-js.html | 93 + .../doc/apidocs/files/OpenLayers/Map-js.html | 238 + .../apidocs/files/OpenLayers/Marker-js.html | 56 + .../files/OpenLayers/Marker/Box-js.html | 43 + .../apidocs/files/OpenLayers/Popup-js.html | 69 + .../files/OpenLayers/Popup/Anchored-js.html | 55 + .../OpenLayers/Popup/AnchoredBubble-js.html | 55 + .../files/OpenLayers/Popup/Framed-js.html | 59 + .../OpenLayers/Popup/FramedCloud-js.html | 63 + .../files/OpenLayers/Projection-js.html | 53 + .../apidocs/files/OpenLayers/Protocol-js.html | 63 + .../files/OpenLayers/Protocol/HTTP-js.html | 59 + .../files/OpenLayers/Protocol/SQL-js.html | 55 + .../OpenLayers/Protocol/SQL/Gears-js.html | 59 + .../files/OpenLayers/Protocol/WFS-js.html | 39 + .../files/OpenLayers/Protocol/WFS/v1-js.html | 47 + .../OpenLayers/Protocol/WFS/v1_0_0-js.html | 43 + .../OpenLayers/Protocol/WFS/v1_1_0-js.html | 43 + .../apidocs/files/OpenLayers/Renderer-js.html | 49 + .../files/OpenLayers/Renderer/Canvas-js.html | 51 + .../OpenLayers/Renderer/Elements-js.html | 79 + .../files/OpenLayers/Renderer/SVG-js.html | 59 + .../files/OpenLayers/Renderer/VML-js.html | 53 + .../apidocs/files/OpenLayers/Request-js.html | 63 + .../OpenLayers/Request/XMLHttpRequest-js.html | 39 + .../doc/apidocs/files/OpenLayers/Rule-js.html | 59 + .../apidocs/files/OpenLayers/Strategy-js.html | 47 + .../files/OpenLayers/Strategy/BBOX-js.html | 47 + .../files/OpenLayers/Strategy/Cluster-js.html | 55 + .../files/OpenLayers/Strategy/Fixed-js.html | 51 + .../files/OpenLayers/Strategy/Paging-js.html | 59 + .../files/OpenLayers/Strategy/Save-js.html | 55 + .../apidocs/files/OpenLayers/Style-js.html | 63 + .../apidocs/files/OpenLayers/StyleMap-js.html | 43 + .../doc/apidocs/files/OpenLayers/Tile-js.html | 53 + .../files/OpenLayers/Tile/Image-js.html | 43 + .../apidocs/files/OpenLayers/Tile/WFS-js.html | 43 + .../apidocs/files/OpenLayers/Tween-js.html | 73 + .../doc/apidocs/files/OpenLayers/Util-js.html | 53 + openlayers/doc/apidocs/index.html | 1 + openlayers/doc/apidocs/index/Classes.html | 34 + openlayers/doc/apidocs/index/Classes2.html | 34 + openlayers/doc/apidocs/index/Constants.html | 102 + openlayers/doc/apidocs/index/Constructor.html | 98 + .../doc/apidocs/index/Constructor2.html | 62 + openlayers/doc/apidocs/index/Files.html | 42 + openlayers/doc/apidocs/index/Functions.html | 38 + openlayers/doc/apidocs/index/Functions2.html | 34 + openlayers/doc/apidocs/index/Functions3.html | 34 + openlayers/doc/apidocs/index/Functions4.html | 38 + openlayers/doc/apidocs/index/Functions5.html | 34 + openlayers/doc/apidocs/index/Functions6.html | 62 + openlayers/doc/apidocs/index/Functions7.html | 38 + openlayers/doc/apidocs/index/Functions8.html | 46 + openlayers/doc/apidocs/index/General.html | 38 + openlayers/doc/apidocs/index/General10.html | 34 + openlayers/doc/apidocs/index/General11.html | 38 + openlayers/doc/apidocs/index/General12.html | 34 + openlayers/doc/apidocs/index/General13.html | 38 + openlayers/doc/apidocs/index/General14.html | 46 + openlayers/doc/apidocs/index/General15.html | 34 + openlayers/doc/apidocs/index/General2.html | 34 + openlayers/doc/apidocs/index/General3.html | 34 + openlayers/doc/apidocs/index/General4.html | 34 + openlayers/doc/apidocs/index/General5.html | 34 + openlayers/doc/apidocs/index/General6.html | 34 + openlayers/doc/apidocs/index/General7.html | 46 + openlayers/doc/apidocs/index/General8.html | 38 + openlayers/doc/apidocs/index/General9.html | 34 + openlayers/doc/apidocs/index/Properties.html | 54 + openlayers/doc/apidocs/index/Properties2.html | 58 + openlayers/doc/apidocs/index/Properties3.html | 58 + openlayers/doc/apidocs/index/Properties4.html | 46 + openlayers/doc/apidocs/javascript/main.js | 836 +++ .../doc/apidocs/javascript/searchdata.js | 212 + openlayers/doc/apidocs/search/ClassesO.html | 20 + openlayers/doc/apidocs/search/ClassesU.html | 20 + openlayers/doc/apidocs/search/ConstantsB.html | 20 + openlayers/doc/apidocs/search/ConstantsC.html | 20 + openlayers/doc/apidocs/search/ConstantsD.html | 20 + openlayers/doc/apidocs/search/ConstantsE.html | 20 + openlayers/doc/apidocs/search/ConstantsF.html | 20 + openlayers/doc/apidocs/search/ConstantsI.html | 20 + openlayers/doc/apidocs/search/ConstantsK.html | 20 + openlayers/doc/apidocs/search/ConstantsL.html | 20 + openlayers/doc/apidocs/search/ConstantsM.html | 20 + openlayers/doc/apidocs/search/ConstantsO.html | 20 + openlayers/doc/apidocs/search/ConstantsR.html | 20 + openlayers/doc/apidocs/search/ConstantsS.html | 20 + openlayers/doc/apidocs/search/ConstantsT.html | 20 + openlayers/doc/apidocs/search/ConstantsU.html | 20 + openlayers/doc/apidocs/search/ConstantsV.html | 20 + openlayers/doc/apidocs/search/ConstantsX.html | 20 + openlayers/doc/apidocs/search/ConstantsY.html | 20 + openlayers/doc/apidocs/search/ConstantsZ.html | 20 + .../doc/apidocs/search/ConstructorA.html | 20 + .../doc/apidocs/search/ConstructorB.html | 20 + .../doc/apidocs/search/ConstructorC.html | 20 + .../doc/apidocs/search/ConstructorD.html | 20 + .../doc/apidocs/search/ConstructorE.html | 20 + .../doc/apidocs/search/ConstructorF.html | 20 + .../doc/apidocs/search/ConstructorG.html | 20 + .../doc/apidocs/search/ConstructorH.html | 20 + .../doc/apidocs/search/ConstructorI.html | 20 + .../doc/apidocs/search/ConstructorJ.html | 20 + .../doc/apidocs/search/ConstructorK.html | 20 + .../doc/apidocs/search/ConstructorL.html | 20 + .../doc/apidocs/search/ConstructorM.html | 20 + .../doc/apidocs/search/ConstructorN.html | 20 + .../doc/apidocs/search/ConstructorO.html | 20 + .../doc/apidocs/search/ConstructorP.html | 20 + .../doc/apidocs/search/ConstructorR.html | 20 + .../doc/apidocs/search/ConstructorS.html | 20 + .../doc/apidocs/search/ConstructorT.html | 20 + .../doc/apidocs/search/ConstructorU.html | 20 + .../doc/apidocs/search/ConstructorV.html | 20 + .../doc/apidocs/search/ConstructorW.html | 20 + .../doc/apidocs/search/ConstructorX.html | 20 + .../doc/apidocs/search/ConstructorY.html | 20 + .../doc/apidocs/search/ConstructorZ.html | 20 + openlayers/doc/apidocs/search/FilesA.html | 20 + openlayers/doc/apidocs/search/FilesC.html | 20 + openlayers/doc/apidocs/search/FilesO.html | 20 + openlayers/doc/apidocs/search/FunctionsA.html | 20 + openlayers/doc/apidocs/search/FunctionsB.html | 20 + openlayers/doc/apidocs/search/FunctionsC.html | 20 + openlayers/doc/apidocs/search/FunctionsD.html | 20 + openlayers/doc/apidocs/search/FunctionsE.html | 20 + openlayers/doc/apidocs/search/FunctionsF.html | 20 + openlayers/doc/apidocs/search/FunctionsG.html | 20 + openlayers/doc/apidocs/search/FunctionsH.html | 20 + openlayers/doc/apidocs/search/FunctionsI.html | 20 + openlayers/doc/apidocs/search/FunctionsL.html | 20 + openlayers/doc/apidocs/search/FunctionsM.html | 20 + openlayers/doc/apidocs/search/FunctionsN.html | 20 + openlayers/doc/apidocs/search/FunctionsO.html | 20 + openlayers/doc/apidocs/search/FunctionsP.html | 20 + openlayers/doc/apidocs/search/FunctionsR.html | 20 + openlayers/doc/apidocs/search/FunctionsS.html | 20 + openlayers/doc/apidocs/search/FunctionsT.html | 20 + openlayers/doc/apidocs/search/FunctionsU.html | 20 + openlayers/doc/apidocs/search/FunctionsV.html | 20 + openlayers/doc/apidocs/search/FunctionsW.html | 20 + openlayers/doc/apidocs/search/FunctionsZ.html | 20 + openlayers/doc/apidocs/search/GeneralA.html | 20 + openlayers/doc/apidocs/search/GeneralB.html | 20 + openlayers/doc/apidocs/search/GeneralC.html | 20 + openlayers/doc/apidocs/search/GeneralD.html | 20 + openlayers/doc/apidocs/search/GeneralE.html | 20 + openlayers/doc/apidocs/search/GeneralF.html | 20 + openlayers/doc/apidocs/search/GeneralG.html | 20 + openlayers/doc/apidocs/search/GeneralH.html | 20 + openlayers/doc/apidocs/search/GeneralI.html | 20 + openlayers/doc/apidocs/search/GeneralJ.html | 20 + openlayers/doc/apidocs/search/GeneralK.html | 20 + openlayers/doc/apidocs/search/GeneralL.html | 20 + openlayers/doc/apidocs/search/GeneralM.html | 20 + openlayers/doc/apidocs/search/GeneralN.html | 20 + openlayers/doc/apidocs/search/GeneralO.html | 20 + openlayers/doc/apidocs/search/GeneralP.html | 20 + openlayers/doc/apidocs/search/GeneralR.html | 20 + openlayers/doc/apidocs/search/GeneralS.html | 20 + openlayers/doc/apidocs/search/GeneralT.html | 20 + openlayers/doc/apidocs/search/GeneralU.html | 20 + openlayers/doc/apidocs/search/GeneralV.html | 20 + openlayers/doc/apidocs/search/GeneralW.html | 20 + openlayers/doc/apidocs/search/GeneralX.html | 20 + openlayers/doc/apidocs/search/GeneralY.html | 20 + openlayers/doc/apidocs/search/GeneralZ.html | 20 + openlayers/doc/apidocs/search/NoResults.html | 15 + .../doc/apidocs/search/PropertiesA.html | 20 + .../doc/apidocs/search/PropertiesB.html | 20 + .../doc/apidocs/search/PropertiesC.html | 20 + .../doc/apidocs/search/PropertiesD.html | 20 + .../doc/apidocs/search/PropertiesE.html | 20 + .../doc/apidocs/search/PropertiesF.html | 20 + .../doc/apidocs/search/PropertiesG.html | 20 + .../doc/apidocs/search/PropertiesH.html | 20 + .../doc/apidocs/search/PropertiesI.html | 20 + .../doc/apidocs/search/PropertiesK.html | 20 + .../doc/apidocs/search/PropertiesL.html | 20 + .../doc/apidocs/search/PropertiesM.html | 20 + .../doc/apidocs/search/PropertiesN.html | 20 + .../doc/apidocs/search/PropertiesO.html | 20 + .../doc/apidocs/search/PropertiesP.html | 20 + .../doc/apidocs/search/PropertiesR.html | 20 + .../doc/apidocs/search/PropertiesS.html | 20 + .../doc/apidocs/search/PropertiesT.html | 20 + .../doc/apidocs/search/PropertiesU.html | 20 + .../doc/apidocs/search/PropertiesV.html | 20 + .../doc/apidocs/search/PropertiesW.html | 20 + .../doc/apidocs/search/PropertiesX.html | 20 + .../doc/apidocs/search/PropertiesY.html | 20 + .../doc/apidocs/search/PropertiesZ.html | 20 + openlayers/doc/apidocs/styles/1.css | 763 +++ openlayers/doc/apidocs/styles/2.css | 20 + openlayers/doc/apidocs/styles/main.css | 2 + openlayers/doc/authors.txt | 50 + openlayers/doc/customization | 49 + .../doc/devdocs/files/OpenLayers-js.html | 51 + .../doc/devdocs/files/OpenLayers/Ajax-js.html | 141 + .../files/OpenLayers/BaseTypes-js.html | 110 + .../files/OpenLayers/BaseTypes/Bounds-js.html | 112 + .../files/OpenLayers/BaseTypes/Class-js.html | 53 + .../OpenLayers/BaseTypes/Element-js.html | 65 + .../files/OpenLayers/BaseTypes/LonLat-js.html | 67 + .../files/OpenLayers/BaseTypes/Pixel-js.html | 61 + .../files/OpenLayers/BaseTypes/Size-js.html | 57 + .../devdocs/files/OpenLayers/Console-js.html | 75 + .../devdocs/files/OpenLayers/Control-js.html | 109 + .../OpenLayers/Control/ArgParser-js.html | 55 + .../OpenLayers/Control/Attribution-js.html | 55 + .../files/OpenLayers/Control/Button-js.html | 50 + .../OpenLayers/Control/DragFeature-js.html | 87 + .../files/OpenLayers/Control/DragPan-js.html | 55 + .../OpenLayers/Control/DrawFeature-js.html | 63 + .../OpenLayers/Control/EditingToolbar-js.html | 47 + .../OpenLayers/Control/GetFeature-js.html | 113 + .../Control/KeyboardDefaults-js.html | 55 + .../OpenLayers/Control/LayerSwitcher-js.html | 99 + .../files/OpenLayers/Control/Measure-js.html | 85 + .../OpenLayers/Control/ModifyFeature-js.html | 128 + .../OpenLayers/Control/MouseDefaults-js.html | 79 + .../OpenLayers/Control/MousePosition-js.html | 73 + .../OpenLayers/Control/MouseToolbar-js.html | 81 + .../OpenLayers/Control/NavToolbar-js.html | 47 + .../OpenLayers/Control/Navigation-js.html | 79 + .../Control/NavigationHistory-js.html | 99 + .../OpenLayers/Control/OverviewMap-js.html | 113 + .../files/OpenLayers/Control/Pan-js.html | 55 + .../files/OpenLayers/Control/PanPanel-js.html | 45 + .../files/OpenLayers/Control/PanZoom-js.html | 75 + .../OpenLayers/Control/PanZoomBar-js.html | 85 + .../files/OpenLayers/Control/Panel-js.html | 73 + .../OpenLayers/Control/Permalink-js.html | 65 + .../files/OpenLayers/Control/Scale-js.html | 49 + .../OpenLayers/Control/ScaleLine-js.html | 67 + .../OpenLayers/Control/SelectFeature-js.html | 121 + .../files/OpenLayers/Control/Snapping-js.html | 95 + .../files/OpenLayers/Control/Split-js.html | 91 + .../Control/WMSGetFeatureInfo-js.html | 102 + .../files/OpenLayers/Control/ZoomBox-js.html | 53 + .../files/OpenLayers/Control/ZoomIn-js.html | 47 + .../files/OpenLayers/Control/ZoomOut-js.html | 47 + .../OpenLayers/Control/ZoomPanel-js.html | 45 + .../Control/ZoomToMaxExtent-js.html | 47 + .../devdocs/files/OpenLayers/Events-js.html | 151 + .../devdocs/files/OpenLayers/Feature-js.html | 73 + .../files/OpenLayers/Feature/Vector-js.html | 85 + .../files/OpenLayers/Feature/WFS-js.html | 49 + .../devdocs/files/OpenLayers/Filter-js.html | 51 + .../OpenLayers/Filter/Comparison-js.html | 67 + .../files/OpenLayers/Filter/FeatureId-js.html | 53 + .../files/OpenLayers/Filter/Logical-js.html | 57 + .../files/OpenLayers/Filter/Spatial-js.html | 61 + .../devdocs/files/OpenLayers/Format-js.html | 63 + .../files/OpenLayers/Format/ArcXML-js.html | 73 + .../OpenLayers/Format/ArcXML/Features-js.html | 47 + .../files/OpenLayers/Format/Filter-js.html | 57 + .../files/OpenLayers/Format/Filter/v1-js.html | 69 + .../OpenLayers/Format/Filter/v1_0_0-js.html | 61 + .../OpenLayers/Format/Filter/v1_1_0-js.html | 61 + .../files/OpenLayers/Format/GML-js.html | 111 + .../files/OpenLayers/Format/GML/Base-js.html | 81 + .../files/OpenLayers/Format/GML/v2-js.html | 55 + .../files/OpenLayers/Format/GML/v3-js.html | 65 + .../files/OpenLayers/Format/GPX-js.html | 61 + .../files/OpenLayers/Format/GeoJSON-js.html | 101 + .../files/OpenLayers/Format/GeoRSS-js.html | 77 + .../files/OpenLayers/Format/JSON-js.html | 85 + .../files/OpenLayers/Format/KML-js.html | 143 + .../files/OpenLayers/Format/OSM-js.html | 71 + .../files/OpenLayers/Format/SLD-js.html | 59 + .../files/OpenLayers/Format/SLD/v1-js.html | 73 + .../OpenLayers/Format/SLD/v1_0_0-js.html | 51 + .../files/OpenLayers/Format/Text-js.html | 53 + .../files/OpenLayers/Format/WFS-js.html | 65 + .../OpenLayers/Format/WFSCapabilities-js.html | 53 + .../Format/WFSCapabilities/v1-js.html | 59 + .../Format/WFSCapabilities/v1_0_0-js.html | 43 + .../Format/WFSCapabilities/v1_1_0-js.html | 43 + .../Format/WFSDescribeFeatureType-js.html | 57 + .../files/OpenLayers/Format/WFST-js.html | 47 + .../files/OpenLayers/Format/WFST/v1-js.html | 77 + .../OpenLayers/Format/WFST/v1_0_0-js.html | 55 + .../OpenLayers/Format/WFST/v1_1_0-js.html | 55 + .../files/OpenLayers/Format/WKT-js.html | 49 + .../files/OpenLayers/Format/WMC-js.html | 67 + .../files/OpenLayers/Format/WMC/v1-js.html | 149 + .../OpenLayers/Format/WMC/v1_0_0-js.html | 51 + .../OpenLayers/Format/WMC/v1_1_0-js.html | 59 + .../OpenLayers/Format/WMSCapabilities-js.html | 55 + .../Format/WMSCapabilities/v1_1-js.html | 79 + .../Format/WMSCapabilities/v1_1_0-js.html | 47 + .../Format/WMSCapabilities/v1_1_1-js.html | 47 + .../Format/WMSDescribeLayer-js.html | 53 + .../Format/WMSDescribeLayer/v1_1-js.html | 47 + .../Format/WMSGetFeatureInfo-js.html | 67 + .../files/OpenLayers/Format/XML-js.html | 107 + .../devdocs/files/OpenLayers/Geometry-js.html | 85 + .../OpenLayers/Geometry/Collection-js.html | 93 + .../files/OpenLayers/Geometry/Curve-js.html | 53 + .../OpenLayers/Geometry/LineString-js.html | 61 + .../OpenLayers/Geometry/LinearRing-js.html | 73 + .../Geometry/MultiLineString-js.html | 53 + .../OpenLayers/Geometry/MultiPoint-js.html | 53 + .../OpenLayers/Geometry/MultiPolygon-js.html | 47 + .../files/OpenLayers/Geometry/Point-js.html | 75 + .../files/OpenLayers/Geometry/Polygon-js.html | 61 + .../OpenLayers/Geometry/Rectangle-js.html | 61 + .../devdocs/files/OpenLayers/Handler-js.html | 92 + .../files/OpenLayers/Handler/Box-js.html | 69 + .../files/OpenLayers/Handler/Click-js.html | 85 + .../files/OpenLayers/Handler/Drag-js.html | 87 + .../files/OpenLayers/Handler/Feature-js.html | 91 + .../files/OpenLayers/Handler/Hover-js.html | 69 + .../files/OpenLayers/Handler/Keyboard-js.html | 61 + .../OpenLayers/Handler/MouseWheel-js.html | 63 + .../files/OpenLayers/Handler/Path-js.html | 79 + .../files/OpenLayers/Handler/Point-js.html | 95 + .../files/OpenLayers/Handler/Polygon-js.html | 57 + .../OpenLayers/Handler/RegularPolygon-js.html | 97 + .../doc/devdocs/files/OpenLayers/Icon-js.html | 79 + .../doc/devdocs/files/OpenLayers/Lang-js.html | 55 + .../devdocs/files/OpenLayers/Lang/ca-js.html | 39 + .../files/OpenLayers/Lang/cs-CZ-js.html | 39 + .../files/OpenLayers/Lang/da-DK-js.html | 39 + .../devdocs/files/OpenLayers/Lang/de-js.html | 39 + .../files/OpenLayers/Lang/en-CA-js.html | 39 + .../devdocs/files/OpenLayers/Lang/en-js.html | 39 + .../devdocs/files/OpenLayers/Lang/es-js.html | 39 + .../devdocs/files/OpenLayers/Lang/fr-js.html | 39 + .../devdocs/files/OpenLayers/Lang/it-js.html | 39 + .../devdocs/files/OpenLayers/Lang/nb-js.html | 39 + .../devdocs/files/OpenLayers/Lang/nl-js.html | 39 + .../files/OpenLayers/Lang/pt-BR-js.html | 39 + .../files/OpenLayers/Lang/sv-SE-js.html | 39 + .../files/OpenLayers/Lang/zh-CN-js.html | 39 + .../files/OpenLayers/Lang/zh-TW-js.html | 39 + .../devdocs/files/OpenLayers/Layer-js.html | 177 + .../OpenLayers/Layer/ArcGIS93Rest-js.html | 71 + .../files/OpenLayers/Layer/ArcIMS-js.html | 99 + .../files/OpenLayers/Layer/Boxes-js.html | 49 + .../files/OpenLayers/Layer/EventPane-js.html | 85 + .../OpenLayers/Layer/FixedZoomLevels-js.html | 57 + .../files/OpenLayers/Layer/GML-js.html | 65 + .../files/OpenLayers/Layer/GeoRSS-js.html | 73 + .../files/OpenLayers/Layer/Google-js.html | 111 + .../files/OpenLayers/Layer/Grid-js.html | 99 + .../OpenLayers/Layer/HTTPRequest-js.html | 71 + .../files/OpenLayers/Layer/Image-js.html | 75 + .../files/OpenLayers/Layer/KaMap-js.html | 67 + .../files/OpenLayers/Layer/KaMapCache-js.html | 53 + .../files/OpenLayers/Layer/MapGuide-js.html | 83 + .../files/OpenLayers/Layer/MapServer-js.html | 57 + .../Layer/MapServer/Untiled-js.html | 51 + .../files/OpenLayers/Layer/Markers-js.html | 69 + .../files/OpenLayers/Layer/MultiMap-js.html | 83 + .../files/OpenLayers/Layer/PointTrack-js.html | 51 + .../Layer/SphericalMercator-js.html | 53 + .../files/OpenLayers/Layer/TMS-js.html | 63 + .../files/OpenLayers/Layer/Text-js.html | 68 + .../files/OpenLayers/Layer/TileCache-js.html | 59 + .../files/OpenLayers/Layer/Vector-js.html | 123 + .../Layer/Vector/RootContainer-js.html | 65 + .../OpenLayers/Layer/VirtualEarth-js.html | 87 + .../files/OpenLayers/Layer/WFS-js.html | 103 + .../files/OpenLayers/Layer/WMS-js.html | 73 + .../OpenLayers/Layer/WMS/Untiled-js.html | 51 + .../files/OpenLayers/Layer/WorldWind-js.html | 59 + .../files/OpenLayers/Layer/XYZ-js.html | 62 + .../files/OpenLayers/Layer/Yahoo-js.html | 99 + .../doc/devdocs/files/OpenLayers/Map-js.html | 298 + .../devdocs/files/OpenLayers/Marker-js.html | 84 + .../files/OpenLayers/Marker/Box-js.html | 61 + .../devdocs/files/OpenLayers/Popup-js.html | 159 + .../files/OpenLayers/Popup/Anchored-js.html | 63 + .../OpenLayers/Popup/AnchoredBubble-js.html | 69 + .../files/OpenLayers/Popup/Framed-js.html | 77 + .../OpenLayers/Popup/FramedCloud-js.html | 67 + .../files/OpenLayers/Projection-js.html | 67 + .../devdocs/files/OpenLayers/Protocol-js.html | 91 + .../files/OpenLayers/Protocol/HTTP-js.html | 89 + .../files/OpenLayers/Protocol/SQL-js.html | 59 + .../OpenLayers/Protocol/SQL/Gears-js.html | 97 + .../files/OpenLayers/Protocol/WFS-js.html | 49 + .../files/OpenLayers/Protocol/WFS/v1-js.html | 81 + .../OpenLayers/Protocol/WFS/v1_0_0-js.html | 47 + .../OpenLayers/Protocol/WFS/v1_1_0-js.html | 47 + .../devdocs/files/OpenLayers/Renderer-js.html | 91 + .../files/OpenLayers/Renderer/Canvas-js.html | 93 + .../OpenLayers/Renderer/Elements-js.html | 161 + .../files/OpenLayers/Renderer/SVG-js.html | 123 + .../files/OpenLayers/Renderer/VML-js.html | 107 + .../devdocs/files/OpenLayers/Request-js.html | 63 + .../OpenLayers/Request/XMLHttpRequest-js.html | 39 + .../doc/devdocs/files/OpenLayers/Rule-js.html | 75 + .../devdocs/files/OpenLayers/Strategy-js.html | 65 + .../files/OpenLayers/Strategy/BBOX-js.html | 75 + .../files/OpenLayers/Strategy/Cluster-js.html | 77 + .../files/OpenLayers/Strategy/Fixed-js.html | 59 + .../files/OpenLayers/Strategy/Paging-js.html | 75 + .../files/OpenLayers/Strategy/Save-js.html | 61 + .../devdocs/files/OpenLayers/Style-js.html | 91 + .../devdocs/files/OpenLayers/StyleMap-js.html | 57 + .../doc/devdocs/files/OpenLayers/Tile-js.html | 83 + .../files/OpenLayers/Tile/Image-js.html | 83 + .../devdocs/files/OpenLayers/Tile/WFS-js.html | 63 + .../devdocs/files/OpenLayers/Tween-js.html | 105 + .../doc/devdocs/files/OpenLayers/Util-js.html | 143 + openlayers/doc/devdocs/index.html | 1 + openlayers/doc/devdocs/index/Classes.html | 34 + openlayers/doc/devdocs/index/Classes2.html | 34 + openlayers/doc/devdocs/index/Constants.html | 102 + openlayers/doc/devdocs/index/Constructor.html | 98 + .../doc/devdocs/index/Constructor2.html | 62 + openlayers/doc/devdocs/index/Files.html | 46 + openlayers/doc/devdocs/index/Functions.html | 38 + openlayers/doc/devdocs/index/Functions10.html | 38 + openlayers/doc/devdocs/index/Functions11.html | 34 + openlayers/doc/devdocs/index/Functions12.html | 34 + openlayers/doc/devdocs/index/Functions13.html | 38 + openlayers/doc/devdocs/index/Functions14.html | 38 + openlayers/doc/devdocs/index/Functions2.html | 34 + openlayers/doc/devdocs/index/Functions3.html | 34 + openlayers/doc/devdocs/index/Functions4.html | 34 + openlayers/doc/devdocs/index/Functions5.html | 38 + openlayers/doc/devdocs/index/Functions6.html | 34 + openlayers/doc/devdocs/index/Functions7.html | 42 + openlayers/doc/devdocs/index/Functions8.html | 34 + openlayers/doc/devdocs/index/Functions9.html | 38 + openlayers/doc/devdocs/index/General.html | 38 + openlayers/doc/devdocs/index/General10.html | 38 + openlayers/doc/devdocs/index/General11.html | 34 + openlayers/doc/devdocs/index/General12.html | 34 + openlayers/doc/devdocs/index/General13.html | 34 + openlayers/doc/devdocs/index/General14.html | 34 + openlayers/doc/devdocs/index/General15.html | 34 + openlayers/doc/devdocs/index/General16.html | 34 + openlayers/doc/devdocs/index/General17.html | 34 + openlayers/doc/devdocs/index/General18.html | 34 + openlayers/doc/devdocs/index/General19.html | 34 + openlayers/doc/devdocs/index/General2.html | 34 + openlayers/doc/devdocs/index/General20.html | 34 + openlayers/doc/devdocs/index/General21.html | 34 + openlayers/doc/devdocs/index/General22.html | 34 + openlayers/doc/devdocs/index/General23.html | 42 + openlayers/doc/devdocs/index/General3.html | 34 + openlayers/doc/devdocs/index/General4.html | 34 + openlayers/doc/devdocs/index/General5.html | 34 + openlayers/doc/devdocs/index/General6.html | 34 + openlayers/doc/devdocs/index/General7.html | 34 + openlayers/doc/devdocs/index/General8.html | 34 + openlayers/doc/devdocs/index/General9.html | 34 + openlayers/doc/devdocs/index/Properties.html | 46 + .../doc/devdocs/index/Properties10.html | 42 + openlayers/doc/devdocs/index/Properties2.html | 38 + openlayers/doc/devdocs/index/Properties3.html | 42 + openlayers/doc/devdocs/index/Properties4.html | 46 + openlayers/doc/devdocs/index/Properties5.html | 42 + openlayers/doc/devdocs/index/Properties6.html | 38 + openlayers/doc/devdocs/index/Properties7.html | 34 + openlayers/doc/devdocs/index/Properties8.html | 34 + openlayers/doc/devdocs/index/Properties9.html | 46 + openlayers/doc/devdocs/javascript/main.js | 836 +++ .../doc/devdocs/javascript/searchdata.js | 212 + openlayers/doc/devdocs/search/ClassesO.html | 20 + openlayers/doc/devdocs/search/ClassesU.html | 20 + openlayers/doc/devdocs/search/ConstantsB.html | 20 + openlayers/doc/devdocs/search/ConstantsC.html | 20 + openlayers/doc/devdocs/search/ConstantsD.html | 20 + openlayers/doc/devdocs/search/ConstantsE.html | 20 + openlayers/doc/devdocs/search/ConstantsF.html | 20 + openlayers/doc/devdocs/search/ConstantsI.html | 20 + openlayers/doc/devdocs/search/ConstantsK.html | 20 + openlayers/doc/devdocs/search/ConstantsL.html | 20 + openlayers/doc/devdocs/search/ConstantsM.html | 20 + openlayers/doc/devdocs/search/ConstantsO.html | 20 + openlayers/doc/devdocs/search/ConstantsR.html | 20 + openlayers/doc/devdocs/search/ConstantsS.html | 20 + openlayers/doc/devdocs/search/ConstantsT.html | 20 + openlayers/doc/devdocs/search/ConstantsU.html | 20 + openlayers/doc/devdocs/search/ConstantsV.html | 20 + openlayers/doc/devdocs/search/ConstantsX.html | 20 + openlayers/doc/devdocs/search/ConstantsY.html | 20 + openlayers/doc/devdocs/search/ConstantsZ.html | 20 + .../doc/devdocs/search/ConstructorA.html | 20 + .../doc/devdocs/search/ConstructorB.html | 20 + .../doc/devdocs/search/ConstructorC.html | 20 + .../doc/devdocs/search/ConstructorD.html | 20 + .../doc/devdocs/search/ConstructorE.html | 20 + .../doc/devdocs/search/ConstructorF.html | 20 + .../doc/devdocs/search/ConstructorG.html | 20 + .../doc/devdocs/search/ConstructorH.html | 20 + .../doc/devdocs/search/ConstructorI.html | 20 + .../doc/devdocs/search/ConstructorJ.html | 20 + .../doc/devdocs/search/ConstructorK.html | 20 + .../doc/devdocs/search/ConstructorL.html | 20 + .../doc/devdocs/search/ConstructorM.html | 20 + .../doc/devdocs/search/ConstructorN.html | 20 + .../doc/devdocs/search/ConstructorO.html | 20 + .../doc/devdocs/search/ConstructorP.html | 20 + .../doc/devdocs/search/ConstructorR.html | 20 + .../doc/devdocs/search/ConstructorS.html | 20 + .../doc/devdocs/search/ConstructorT.html | 20 + .../doc/devdocs/search/ConstructorU.html | 20 + .../doc/devdocs/search/ConstructorV.html | 20 + .../doc/devdocs/search/ConstructorW.html | 20 + .../doc/devdocs/search/ConstructorX.html | 20 + .../doc/devdocs/search/ConstructorY.html | 20 + .../doc/devdocs/search/ConstructorZ.html | 20 + openlayers/doc/devdocs/search/FilesA.html | 20 + openlayers/doc/devdocs/search/FilesC.html | 20 + openlayers/doc/devdocs/search/FilesO.html | 20 + openlayers/doc/devdocs/search/FilesW.html | 20 + openlayers/doc/devdocs/search/FunctionsA.html | 20 + openlayers/doc/devdocs/search/FunctionsB.html | 20 + openlayers/doc/devdocs/search/FunctionsC.html | 20 + openlayers/doc/devdocs/search/FunctionsD.html | 20 + openlayers/doc/devdocs/search/FunctionsE.html | 20 + openlayers/doc/devdocs/search/FunctionsF.html | 20 + openlayers/doc/devdocs/search/FunctionsG.html | 20 + openlayers/doc/devdocs/search/FunctionsH.html | 20 + openlayers/doc/devdocs/search/FunctionsI.html | 20 + openlayers/doc/devdocs/search/FunctionsL.html | 20 + openlayers/doc/devdocs/search/FunctionsM.html | 20 + openlayers/doc/devdocs/search/FunctionsN.html | 20 + openlayers/doc/devdocs/search/FunctionsO.html | 20 + openlayers/doc/devdocs/search/FunctionsP.html | 20 + openlayers/doc/devdocs/search/FunctionsR.html | 20 + openlayers/doc/devdocs/search/FunctionsS.html | 20 + .../doc/devdocs/search/FunctionsSymbols.html | 20 + openlayers/doc/devdocs/search/FunctionsT.html | 20 + openlayers/doc/devdocs/search/FunctionsU.html | 20 + openlayers/doc/devdocs/search/FunctionsV.html | 20 + openlayers/doc/devdocs/search/FunctionsW.html | 20 + openlayers/doc/devdocs/search/FunctionsZ.html | 20 + openlayers/doc/devdocs/search/GeneralA.html | 20 + openlayers/doc/devdocs/search/GeneralB.html | 20 + openlayers/doc/devdocs/search/GeneralC.html | 20 + openlayers/doc/devdocs/search/GeneralD.html | 20 + openlayers/doc/devdocs/search/GeneralE.html | 20 + openlayers/doc/devdocs/search/GeneralF.html | 20 + openlayers/doc/devdocs/search/GeneralG.html | 20 + openlayers/doc/devdocs/search/GeneralH.html | 20 + openlayers/doc/devdocs/search/GeneralI.html | 20 + openlayers/doc/devdocs/search/GeneralJ.html | 20 + openlayers/doc/devdocs/search/GeneralK.html | 20 + openlayers/doc/devdocs/search/GeneralL.html | 20 + openlayers/doc/devdocs/search/GeneralM.html | 20 + openlayers/doc/devdocs/search/GeneralN.html | 20 + openlayers/doc/devdocs/search/GeneralO.html | 20 + openlayers/doc/devdocs/search/GeneralP.html | 20 + openlayers/doc/devdocs/search/GeneralQ.html | 20 + openlayers/doc/devdocs/search/GeneralR.html | 20 + openlayers/doc/devdocs/search/GeneralS.html | 20 + .../doc/devdocs/search/GeneralSymbols.html | 20 + openlayers/doc/devdocs/search/GeneralT.html | 20 + openlayers/doc/devdocs/search/GeneralU.html | 20 + openlayers/doc/devdocs/search/GeneralV.html | 20 + openlayers/doc/devdocs/search/GeneralW.html | 20 + openlayers/doc/devdocs/search/GeneralX.html | 20 + openlayers/doc/devdocs/search/GeneralY.html | 20 + openlayers/doc/devdocs/search/GeneralZ.html | 20 + openlayers/doc/devdocs/search/NoResults.html | 15 + .../doc/devdocs/search/PropertiesA.html | 20 + .../doc/devdocs/search/PropertiesB.html | 20 + .../doc/devdocs/search/PropertiesC.html | 20 + .../doc/devdocs/search/PropertiesD.html | 20 + .../doc/devdocs/search/PropertiesE.html | 20 + .../doc/devdocs/search/PropertiesF.html | 20 + .../doc/devdocs/search/PropertiesG.html | 20 + .../doc/devdocs/search/PropertiesH.html | 20 + .../doc/devdocs/search/PropertiesI.html | 20 + .../doc/devdocs/search/PropertiesJ.html | 20 + .../doc/devdocs/search/PropertiesK.html | 20 + .../doc/devdocs/search/PropertiesL.html | 20 + .../doc/devdocs/search/PropertiesM.html | 20 + .../doc/devdocs/search/PropertiesN.html | 20 + .../doc/devdocs/search/PropertiesO.html | 20 + .../doc/devdocs/search/PropertiesP.html | 20 + .../doc/devdocs/search/PropertiesQ.html | 20 + .../doc/devdocs/search/PropertiesR.html | 20 + .../doc/devdocs/search/PropertiesS.html | 20 + .../doc/devdocs/search/PropertiesSymbols.html | 20 + .../doc/devdocs/search/PropertiesT.html | 20 + .../doc/devdocs/search/PropertiesU.html | 20 + .../doc/devdocs/search/PropertiesV.html | 20 + .../doc/devdocs/search/PropertiesW.html | 20 + .../doc/devdocs/search/PropertiesX.html | 20 + .../doc/devdocs/search/PropertiesY.html | 20 + .../doc/devdocs/search/PropertiesZ.html | 20 + openlayers/doc/devdocs/styles/1.css | 763 +++ openlayers/doc/devdocs/styles/2.css | 20 + openlayers/doc/devdocs/styles/main.css | 2 + openlayers/doc/licenses/APACHE-2.0.txt | 202 + openlayers/doc/licenses/BSD-LICENSE.txt | 28 + openlayers/doc/licenses/MIT-LICENSE.txt | 18 + openlayers/doc/readme.txt | 7 + openlayers/doc/walkthru.html | 96 + openlayers/doc_config/Data/ClassHierarchy.nd | Bin 0 -> 22329 bytes openlayers/doc_config/Data/ConfigFileInfo.nd | Bin 0 -> 26 bytes openlayers/doc_config/Data/FileInfo.nd | 222 + openlayers/doc_config/Data/ImageFileInfo.nd | Bin 0 -> 198 bytes .../doc_config/Data/ImageReferenceTable.nd | Bin 0 -> 234 bytes openlayers/doc_config/Data/IndexInfo.nd | Bin 0 -> 267 bytes .../doc_config/Data/PreviousMenuState.nd | Bin 0 -> 16663 bytes .../doc_config/Data/PreviousSettings.nd | Bin 0 -> 103 bytes openlayers/doc_config/Data/SymbolTable.nd | Bin 0 -> 782361 bytes openlayers/doc_config/Languages.txt | 113 + openlayers/doc_config/Menu.txt | 400 ++ openlayers/doc_config/OL.css | 20 + openlayers/doc_config/Topics.txt | 102 + openlayers/examples/GMLParser.html | 43 + openlayers/examples/Jugl.js | 84 + openlayers/examples/KMLParser.html | 47 + .../examples/WMSDescribeLayerParser.html | 41 + openlayers/examples/accessible.html | 139 + openlayers/examples/all-overlays.html | 69 + openlayers/examples/animated_panning.html | 92 + openlayers/examples/animator.js | 670 +++ openlayers/examples/arcgis93rest.html | 64 + openlayers/examples/arcims-thematic.html | 77 + openlayers/examples/arcims.html | 52 + openlayers/examples/attribution.html | 54 + openlayers/examples/baseLayers.html | 96 + .../examples/behavior-fixed-http-gml.html | 49 + openlayers/examples/boxes-vector.html | 54 + openlayers/examples/boxes.html | 53 + openlayers/examples/browser-name.html | 89 + openlayers/examples/buffer.html | 49 + openlayers/examples/click-handler.html | 227 + openlayers/examples/click.html | 81 + openlayers/examples/controls.html | 63 + openlayers/examples/custom-control-point.html | 56 + openlayers/examples/custom-control.html | 59 + openlayers/examples/custom-style.html | 61 + openlayers/examples/data/line.json | 10 + openlayers/examples/data/point.json | 8 + openlayers/examples/data/poly.json | 9 + openlayers/examples/data/roads.json | 349 ++ openlayers/examples/debug.html | 73 + openlayers/examples/doubleSetCenter.html | 32 + openlayers/examples/drag-feature.html | 102 + openlayers/examples/draw-feature.html | 105 + .../examples/editingtoolbar-outside.html | 52 + openlayers/examples/editingtoolbar.html | 47 + openlayers/examples/events.html | 150 + openlayers/examples/example-list.html | 239 + openlayers/examples/example.html | 56 + openlayers/examples/filter.html | 99 + openlayers/examples/fractional-zoom.html | 67 + openlayers/examples/fullScreen.html | 66 + openlayers/examples/geojson.html | 62 + openlayers/examples/georss-flickr.html | 100 + openlayers/examples/georss-markers.html | 39 + openlayers/examples/georss.html | 57 + openlayers/examples/georss.xml | 378 ++ openlayers/examples/getfeature-wfs.html | 80 + .../examples/getfeatureinfo-control.html | 217 + openlayers/examples/getfeatureinfo.html | 62 + openlayers/examples/gml-layer.html | 36 + openlayers/examples/gml/line.xml | 42 + openlayers/examples/gml/multipoint.xml | 70 + openlayers/examples/gml/multipolygon.xml | 106 + openlayers/examples/gml/owls.xml | 156 + openlayers/examples/gml/point.xml | 42 + openlayers/examples/gml/polygon.xml | 89 + openlayers/examples/google-reproject.html | 57 + openlayers/examples/google.html | 63 + openlayers/examples/graphic-name.html | 88 + openlayers/examples/gutter.html | 54 + openlayers/examples/highlight-feature.html | 80 + openlayers/examples/hover-handler.html | 211 + openlayers/examples/image-layer.html | 69 + openlayers/examples/intersects.html | 183 + openlayers/examples/kamap.html | 39 + openlayers/examples/kamap.txt | 508 ++ openlayers/examples/kml-layer.html | 43 + openlayers/examples/kml/lines.kml | 275 + openlayers/examples/kml/styles.kml | 21 + openlayers/examples/kml/sundials.kml | 2273 ++++++++ openlayers/examples/late-render.html | 42 + openlayers/examples/layer-opacity.html | 89 + openlayers/examples/layerLoadMonitoring.html | 129 + openlayers/examples/layerswitcher.html | 55 + openlayers/examples/lite.html | 32 + openlayers/examples/mapguide.html | 150 + openlayers/examples/mapserver.html | 35 + openlayers/examples/mapserver_untiled.html | 35 + openlayers/examples/marker-shadow.html | 142 + openlayers/examples/markerResize.html | 51 + openlayers/examples/marker_shadow.png | Bin 0 -> 374 bytes openlayers/examples/markers.html | 53 + openlayers/examples/markersTextLayer.html | 34 + openlayers/examples/measure.html | 169 + openlayers/examples/mm.html | 60 + openlayers/examples/modify-feature.html | 172 + openlayers/examples/mouse-position.html | 29 + openlayers/examples/multimap-mercator.html | 65 + openlayers/examples/multiserver.html | 41 + openlayers/examples/mvs.html | 125 + openlayers/examples/navigation-control.html | 34 + openlayers/examples/navigation-history.html | 57 + .../examples/navtoolbar-alwaysZoom.html | 78 + .../examples/navtoolbar-outsidemap.html | 49 + openlayers/examples/navtoolbar.html | 39 + openlayers/examples/notile.html | 39 + openlayers/examples/openmnnd.html | 155 + openlayers/examples/ordering.html | 211 + openlayers/examples/osm-layer.html | 119 + openlayers/examples/osm/sutton_coldfield.osm | 662 +++ openlayers/examples/outOfRangeMarkers.html | 61 + openlayers/examples/outOfRangeMarkers.txt | 3 + openlayers/examples/overviewmap.html | 105 + openlayers/examples/pan-zoom-panels.html | 56 + openlayers/examples/panel.html | 96 + openlayers/examples/point-track-markers.html | 64 + openlayers/examples/popupMatrix.html | 904 ++++ openlayers/examples/popupMatrix.jpg | Bin 0 -> 46095 bytes openlayers/examples/popups.html | 129 + openlayers/examples/projected-map.html | 67 + openlayers/examples/protocol-gears.html | 257 + openlayers/examples/proxy.cgi | 78 + openlayers/examples/regular-polygons.html | 166 + openlayers/examples/resize-features.html | 94 + openlayers/examples/restricted-extent.html | 70 + openlayers/examples/rotate-features.html | 108 + .../examples/select-feature-multilayer.html | 116 + .../examples/select-feature-openpopup.html | 99 + openlayers/examples/select-feature.html | 141 + openlayers/examples/setextent.html | 34 + openlayers/examples/sld.html | 116 + openlayers/examples/small.jpg | Bin 0 -> 16415 bytes openlayers/examples/snap-split.html | 267 + openlayers/examples/snapping.html | 314 ++ openlayers/examples/spherical-mercator.html | 142 + openlayers/examples/split-feature.html | 103 + openlayers/examples/strategy-bbox.html | 65 + .../examples/strategy-cluster-threshold.html | 145 + openlayers/examples/strategy-cluster.html | 202 + openlayers/examples/strategy-paging.html | 79 + openlayers/examples/style.css | 82 + openlayers/examples/stylemap.html | 91 + openlayers/examples/styles-context.html | 105 + openlayers/examples/styles-rotation.html | 85 + openlayers/examples/styles-unique.html | 103 + .../examples/sundials-spherical-mercator.html | 128 + openlayers/examples/sundials.html | 98 + .../symbolizers-fill-stroke-graphic.html | 122 + .../examples/tasmania/TasmaniaCities.xml | 40 + .../examples/tasmania/TasmaniaRoads.xml | 204 + .../tasmania/TasmaniaStateBoundaries.xml | 92 + .../examples/tasmania/TasmaniaWaterBodies.xml | 162 + openlayers/examples/tasmania/sld-tasmania.xml | 594 ++ openlayers/examples/teleportation.html | 70 + openlayers/examples/textfile.txt | 4 + openlayers/examples/thinlong.jpg | Bin 0 -> 60996 bytes openlayers/examples/tilecache.html | 63 + openlayers/examples/tms.html | 56 + openlayers/examples/transition.html | 63 + openlayers/examples/urban.html | 45 + openlayers/examples/ve-novibrate.html | 62 + openlayers/examples/ve.html | 68 + .../examples/vector-features-with-text.html | 112 + openlayers/examples/vector-features.html | 138 + openlayers/examples/vector-formats.html | 221 + .../examples/wfs-protocol-transactions.html | 197 + openlayers/examples/wfs-protocol.html | 48 + openlayers/examples/wfs-reprojection.html | 114 + openlayers/examples/wfs-snap-split.html | 288 + openlayers/examples/wfs-states.html | 45 + openlayers/examples/wfs-t.html | 103 + openlayers/examples/wfs.html | 34 + openlayers/examples/widelong.jpg | Bin 0 -> 214964 bytes openlayers/examples/wideshort.jpg | Bin 0 -> 48477 bytes openlayers/examples/wmc.html | 147 + openlayers/examples/wms-untiled.html | 45 + openlayers/examples/wms.html | 43 + openlayers/examples/wmst.html | 55 + openlayers/examples/worldwind.html | 47 + openlayers/examples/wrapDateLine.html | 75 + openlayers/examples/xhtml.html | 38 + openlayers/examples/xml.html | 155 + openlayers/examples/xml/features.xml | 2 + openlayers/examples/xml/georss-flickr.xml | 730 +++ openlayers/examples/xml/track1.xml | 98 + openlayers/examples/xml/wmsdescribelayer.xml | 5 + openlayers/examples/xyz-esri.html | 34 + openlayers/examples/yahoo.html | 46 + openlayers/examples/yelp-georss.xml | 147 + openlayers/examples/zoomLevels.html | 76 + openlayers/img/blank.gif | Bin 0 -> 42 bytes openlayers/img/cloud-popup-relative.png | Bin 0 -> 2564 bytes openlayers/img/drag-rectangle-off.png | Bin 0 -> 1202 bytes openlayers/img/drag-rectangle-on.png | Bin 0 -> 1218 bytes openlayers/img/east-mini.png | Bin 0 -> 451 bytes openlayers/img/layer-switcher-maximize.png | Bin 0 -> 451 bytes openlayers/img/layer-switcher-minimize.png | Bin 0 -> 249 bytes openlayers/img/marker-blue.png | Bin 0 -> 992 bytes openlayers/img/marker-gold.png | Bin 0 -> 831 bytes openlayers/img/marker-green.png | Bin 0 -> 967 bytes openlayers/img/marker.png | Bin 0 -> 606 bytes openlayers/img/measuring-stick-off.png | Bin 0 -> 3343 bytes openlayers/img/measuring-stick-on.png | Bin 0 -> 3816 bytes openlayers/img/north-mini.png | Bin 0 -> 484 bytes openlayers/img/panning-hand-off.png | Bin 0 -> 3875 bytes openlayers/img/panning-hand-on.png | Bin 0 -> 3977 bytes openlayers/img/slider.png | Bin 0 -> 285 bytes openlayers/img/south-mini.png | Bin 0 -> 481 bytes openlayers/img/west-mini.png | Bin 0 -> 453 bytes openlayers/img/zoom-minus-mini.png | Bin 0 -> 359 bytes openlayers/img/zoom-plus-mini.png | Bin 0 -> 489 bytes openlayers/img/zoom-world-mini.png | Bin 0 -> 1072 bytes openlayers/img/zoombar.png | Bin 0 -> 463 bytes openlayers/lib/Firebug/errorIcon.png | Bin 0 -> 457 bytes openlayers/lib/Firebug/firebug.css | 209 + openlayers/lib/Firebug/firebug.html | 23 + openlayers/lib/Firebug/firebug.js | 674 +++ openlayers/lib/Firebug/firebugx.js | 9 + openlayers/lib/Firebug/infoIcon.png | Bin 0 -> 524 bytes openlayers/lib/Firebug/license.txt | 30 + openlayers/lib/Firebug/readme.txt | 13 + openlayers/lib/Firebug/warningIcon.png | Bin 0 -> 516 bytes openlayers/lib/Gears/gears_init.js | 88 + openlayers/lib/OpenLayers.js | 299 ++ openlayers/lib/OpenLayers/Ajax.js | 677 +++ openlayers/lib/OpenLayers/BaseTypes.js | 529 ++ openlayers/lib/OpenLayers/BaseTypes/Bounds.js | 671 +++ openlayers/lib/OpenLayers/BaseTypes/Class.js | 114 + .../lib/OpenLayers/BaseTypes/Element.js | 244 + openlayers/lib/OpenLayers/BaseTypes/LonLat.js | 189 + openlayers/lib/OpenLayers/BaseTypes/Pixel.js | 124 + openlayers/lib/OpenLayers/BaseTypes/Size.js | 84 + openlayers/lib/OpenLayers/Console.js | 245 + openlayers/lib/OpenLayers/Control.js | 349 ++ .../lib/OpenLayers/Control/ArgParser.js | 165 + .../lib/OpenLayers/Control/Attribution.js | 92 + openlayers/lib/OpenLayers/Control/Button.js | 43 + .../lib/OpenLayers/Control/DragFeature.js | 293 + openlayers/lib/OpenLayers/Control/DragPan.js | 85 + .../lib/OpenLayers/Control/DrawFeature.js | 115 + .../lib/OpenLayers/Control/EditingToolbar.js | 62 + .../lib/OpenLayers/Control/GetFeature.js | 558 ++ .../OpenLayers/Control/KeyboardDefaults.js | 121 + .../lib/OpenLayers/Control/LayerSwitcher.js | 638 +++ openlayers/lib/OpenLayers/Control/Measure.js | 317 ++ .../lib/OpenLayers/Control/ModifyFeature.js | 738 +++ .../lib/OpenLayers/Control/MouseDefaults.js | 367 ++ .../lib/OpenLayers/Control/MousePosition.js | 171 + .../lib/OpenLayers/Control/MouseToolbar.js | 405 ++ .../lib/OpenLayers/Control/NavToolbar.js | 54 + .../lib/OpenLayers/Control/Navigation.js | 247 + .../OpenLayers/Control/NavigationHistory.js | 399 ++ .../lib/OpenLayers/Control/OverviewMap.js | 700 +++ openlayers/lib/OpenLayers/Control/Pan.js | 85 + openlayers/lib/OpenLayers/Control/PanPanel.js | 47 + openlayers/lib/OpenLayers/Control/PanZoom.js | 244 + .../lib/OpenLayers/Control/PanZoomBar.js | 373 ++ openlayers/lib/OpenLayers/Control/Panel.js | 286 + .../lib/OpenLayers/Control/Permalink.js | 219 + openlayers/lib/OpenLayers/Control/Scale.js | 77 + .../lib/OpenLayers/Control/ScaleLine.js | 208 + .../lib/OpenLayers/Control/SelectFeature.js | 562 ++ openlayers/lib/OpenLayers/Control/Snapping.js | 546 ++ openlayers/lib/OpenLayers/Control/Split.js | 497 ++ .../OpenLayers/Control/WMSGetFeatureInfo.js | 415 ++ openlayers/lib/OpenLayers/Control/ZoomBox.js | 93 + openlayers/lib/OpenLayers/Control/ZoomIn.js | 34 + openlayers/lib/OpenLayers/Control/ZoomOut.js | 34 + .../lib/OpenLayers/Control/ZoomPanel.js | 53 + .../lib/OpenLayers/Control/ZoomToMaxExtent.js | 39 + openlayers/lib/OpenLayers/Events.js | 828 +++ openlayers/lib/OpenLayers/Feature.js | 222 + openlayers/lib/OpenLayers/Feature/Vector.js | 419 ++ openlayers/lib/OpenLayers/Feature/WFS.js | 79 + openlayers/lib/OpenLayers/Filter.js | 66 + .../lib/OpenLayers/Filter/Comparison.js | 255 + openlayers/lib/OpenLayers/Filter/FeatureId.js | 80 + openlayers/lib/OpenLayers/Filter/Logical.js | 117 + openlayers/lib/OpenLayers/Filter/Spatial.js | 127 + openlayers/lib/OpenLayers/Format.js | 122 + openlayers/lib/OpenLayers/Format/ArcXML.js | 1025 ++++ .../lib/OpenLayers/Format/ArcXML/Features.js | 48 + openlayers/lib/OpenLayers/Format/Filter.js | 114 + openlayers/lib/OpenLayers/Format/Filter/v1.js | 449 ++ .../lib/OpenLayers/Format/Filter/v1_0_0.js | 145 + .../lib/OpenLayers/Format/Filter/v1_1_0.js | 158 + openlayers/lib/OpenLayers/Format/GML.js | 872 +++ openlayers/lib/OpenLayers/Format/GML/Base.js | 572 ++ openlayers/lib/OpenLayers/Format/GML/v2.js | 192 + openlayers/lib/OpenLayers/Format/GML/v3.js | 461 ++ openlayers/lib/OpenLayers/Format/GPX.js | 179 + openlayers/lib/OpenLayers/Format/GeoJSON.js | 707 +++ openlayers/lib/OpenLayers/Format/GeoRSS.js | 419 ++ openlayers/lib/OpenLayers/Format/JSON.js | 388 ++ openlayers/lib/OpenLayers/Format/KML.js | 1238 +++++ openlayers/lib/OpenLayers/Format/OSM.js | 452 ++ openlayers/lib/OpenLayers/Format/SLD.js | 130 + openlayers/lib/OpenLayers/Format/SLD/v1.js | 883 +++ .../lib/OpenLayers/Format/SLD/v1_0_0.js | 50 + openlayers/lib/OpenLayers/Format/Text.js | 151 + openlayers/lib/OpenLayers/Format/WFS.js | 219 + .../lib/OpenLayers/Format/WFSCapabilities.js | 75 + .../OpenLayers/Format/WFSCapabilities/v1.js | 117 + .../Format/WFSCapabilities/v1_0_0.js | 31 + .../Format/WFSCapabilities/v1_1_0.js | 31 + .../Format/WFSDescribeFeatureType.js | 193 + openlayers/lib/OpenLayers/Format/WFST.js | 33 + openlayers/lib/OpenLayers/Format/WFST/v1.js | 358 ++ .../lib/OpenLayers/Format/WFST/v1_0_0.js | 133 + .../lib/OpenLayers/Format/WFST/v1_1_0.js | 137 + openlayers/lib/OpenLayers/Format/WKT.js | 353 ++ openlayers/lib/OpenLayers/Format/WMC.js | 214 + openlayers/lib/OpenLayers/Format/WMC/v1.js | 860 +++ .../lib/OpenLayers/Format/WMC/v1_0_0.js | 49 + .../lib/OpenLayers/Format/WMC/v1_1_0.js | 116 + .../lib/OpenLayers/Format/WMSCapabilities.js | 77 + .../OpenLayers/Format/WMSCapabilities/v1_1.js | 266 + .../Format/WMSCapabilities/v1_1_0.js | 37 + .../Format/WMSCapabilities/v1_1_1.js | 37 + .../lib/OpenLayers/Format/WMSDescribeLayer.js | 90 + .../Format/WMSDescribeLayer/v1_1.js | 96 + .../OpenLayers/Format/WMSGetFeatureInfo.js | 280 + openlayers/lib/OpenLayers/Format/XML.js | 880 +++ openlayers/lib/OpenLayers/Geometry.js | 455 ++ .../lib/OpenLayers/Geometry/Collection.js | 499 ++ openlayers/lib/OpenLayers/Geometry/Curve.js | 92 + .../lib/OpenLayers/Geometry/LineString.js | 551 ++ .../lib/OpenLayers/Geometry/LinearRing.js | 414 ++ .../OpenLayers/Geometry/MultiLineString.js | 261 + .../lib/OpenLayers/Geometry/MultiPoint.js | 69 + .../lib/OpenLayers/Geometry/MultiPolygon.js | 45 + openlayers/lib/OpenLayers/Geometry/Point.js | 282 + openlayers/lib/OpenLayers/Geometry/Polygon.js | 258 + .../lib/OpenLayers/Geometry/Rectangle.js | 98 + openlayers/lib/OpenLayers/Geometry/Surface.js | 16 + openlayers/lib/OpenLayers/Handler.js | 285 + openlayers/lib/OpenLayers/Handler/Box.js | 209 + openlayers/lib/OpenLayers/Handler/Click.js | 324 ++ openlayers/lib/OpenLayers/Handler/Drag.js | 350 ++ openlayers/lib/OpenLayers/Handler/Feature.js | 387 ++ openlayers/lib/OpenLayers/Handler/Hover.js | 182 + openlayers/lib/OpenLayers/Handler/Keyboard.js | 108 + .../lib/OpenLayers/Handler/MouseWheel.js | 242 + openlayers/lib/OpenLayers/Handler/Path.js | 301 ++ openlayers/lib/OpenLayers/Handler/Point.js | 372 ++ openlayers/lib/OpenLayers/Handler/Polygon.js | 143 + .../lib/OpenLayers/Handler/RegularPolygon.js | 410 ++ openlayers/lib/OpenLayers/Icon.js | 227 + openlayers/lib/OpenLayers/Lang.js | 132 + openlayers/lib/OpenLayers/Lang/ca.js | 124 + openlayers/lib/OpenLayers/Lang/cs-CZ.js | 120 + openlayers/lib/OpenLayers/Lang/da-DK.js | 123 + openlayers/lib/OpenLayers/Lang/de.js | 69 + openlayers/lib/OpenLayers/Lang/en-CA.js | 25 + openlayers/lib/OpenLayers/Lang/en.js | 123 + openlayers/lib/OpenLayers/Lang/es.js | 125 + openlayers/lib/OpenLayers/Lang/fr.js | 121 + openlayers/lib/OpenLayers/Lang/it.js | 120 + openlayers/lib/OpenLayers/Lang/nb.js | 120 + openlayers/lib/OpenLayers/Lang/nl.js | 68 + openlayers/lib/OpenLayers/Lang/pt-BR.js | 122 + openlayers/lib/OpenLayers/Lang/sv-SE.js | 121 + openlayers/lib/OpenLayers/Lang/zh-CN.js | 120 + openlayers/lib/OpenLayers/Lang/zh-TW.js | 121 + openlayers/lib/OpenLayers/Layer.js | 1170 ++++ .../lib/OpenLayers/Layer/ArcGIS93Rest.js | 252 + openlayers/lib/OpenLayers/Layer/ArcIMS.js | 442 ++ openlayers/lib/OpenLayers/Layer/Boxes.js | 75 + openlayers/lib/OpenLayers/Layer/EventPane.js | 417 ++ .../lib/OpenLayers/Layer/FixedZoomLevels.js | 314 ++ openlayers/lib/OpenLayers/Layer/GML.js | 170 + openlayers/lib/OpenLayers/Layer/GeoRSS.js | 265 + openlayers/lib/OpenLayers/Layer/Google.js | 599 +++ openlayers/lib/OpenLayers/Layer/Grid.js | 742 +++ .../lib/OpenLayers/Layer/HTTPRequest.js | 240 + openlayers/lib/OpenLayers/Layer/Image.js | 253 + openlayers/lib/OpenLayers/Layer/KaMap.js | 205 + openlayers/lib/OpenLayers/Layer/KaMapCache.js | 147 + openlayers/lib/OpenLayers/Layer/MapGuide.js | 488 ++ openlayers/lib/OpenLayers/Layer/MapServer.js | 198 + .../lib/OpenLayers/Layer/MapServer/Untiled.js | 71 + openlayers/lib/OpenLayers/Layer/Markers.js | 186 + openlayers/lib/OpenLayers/Layer/MultiMap.js | 283 + openlayers/lib/OpenLayers/Layer/PointTrack.js | 102 + .../lib/OpenLayers/Layer/SphericalMercator.js | 159 + openlayers/lib/OpenLayers/Layer/TMS.js | 152 + openlayers/lib/OpenLayers/Layer/Text.js | 262 + openlayers/lib/OpenLayers/Layer/TileCache.js | 164 + openlayers/lib/OpenLayers/Layer/Vector.js | 814 +++ .../OpenLayers/Layer/Vector/RootContainer.js | 156 + .../lib/OpenLayers/Layer/VirtualEarth.js | 338 ++ openlayers/lib/OpenLayers/Layer/WFS.js | 598 +++ openlayers/lib/OpenLayers/Layer/WMS.js | 235 + .../lib/OpenLayers/Layer/WMS/Untiled.js | 71 + openlayers/lib/OpenLayers/Layer/WorldWind.js | 119 + openlayers/lib/OpenLayers/Layer/XYZ.js | 178 + openlayers/lib/OpenLayers/Layer/Yahoo.js | 420 ++ openlayers/lib/OpenLayers/Map.js | 2338 ++++++++ openlayers/lib/OpenLayers/Marker.js | 241 + openlayers/lib/OpenLayers/Marker/Box.js | 119 + openlayers/lib/OpenLayers/Popup.js | 1051 ++++ openlayers/lib/OpenLayers/Popup/Anchored.js | 197 + .../lib/OpenLayers/Popup/AnchoredBubble.js | 189 + openlayers/lib/OpenLayers/Popup/Framed.js | 342 ++ .../lib/OpenLayers/Popup/FramedCloud.js | 230 + openlayers/lib/OpenLayers/Projection.js | 177 + openlayers/lib/OpenLayers/Protocol.js | 227 + openlayers/lib/OpenLayers/Protocol/HTTP.js | 521 ++ openlayers/lib/OpenLayers/Protocol/SQL.js | 87 + .../lib/OpenLayers/Protocol/SQL/Gears.js | 559 ++ openlayers/lib/OpenLayers/Protocol/WFS.js | 70 + openlayers/lib/OpenLayers/Protocol/WFS/v1.js | 343 ++ .../lib/OpenLayers/Protocol/WFS/v1_0_0.js | 39 + .../lib/OpenLayers/Protocol/WFS/v1_1_0.js | 43 + openlayers/lib/OpenLayers/Renderer.js | 301 ++ openlayers/lib/OpenLayers/Renderer/Canvas.js | 511 ++ .../lib/OpenLayers/Renderer/Elements.js | 1021 ++++ openlayers/lib/OpenLayers/Renderer/SVG.js | 928 ++++ openlayers/lib/OpenLayers/Renderer/VML.js | 979 ++++ openlayers/lib/OpenLayers/Request.js | 332 ++ .../lib/OpenLayers/Request/XMLHttpRequest.js | 313 ++ openlayers/lib/OpenLayers/Rule.js | 209 + openlayers/lib/OpenLayers/SingleFile.js | 9 + openlayers/lib/OpenLayers/Strategy.js | 116 + openlayers/lib/OpenLayers/Strategy/BBOX.js | 270 + openlayers/lib/OpenLayers/Strategy/Cluster.js | 279 + openlayers/lib/OpenLayers/Strategy/Fixed.js | 136 + openlayers/lib/OpenLayers/Strategy/Paging.js | 235 + openlayers/lib/OpenLayers/Strategy/Save.js | 194 + openlayers/lib/OpenLayers/Style.js | 407 ++ openlayers/lib/OpenLayers/StyleMap.js | 159 + openlayers/lib/OpenLayers/Tile.js | 280 + openlayers/lib/OpenLayers/Tile/Image.js | 576 ++ openlayers/lib/OpenLayers/Tile/WFS.js | 191 + openlayers/lib/OpenLayers/Tween.js | 322 ++ openlayers/lib/OpenLayers/Util.js | 1616 ++++++ openlayers/lib/Rico/Color.js | 244 + openlayers/lib/Rico/Corner.js | 330 ++ openlayers/license.txt | 37 + openlayers/news.txt | 49 + openlayers/readme.txt | 71 + openlayers/release-license.txt | 3 + openlayers/repository-license.txt | 3 + openlayers/tests/Ajax.html | 27 + openlayers/tests/BaseTypes.html | 366 ++ openlayers/tests/BaseTypes/Bounds.html | 637 +++ openlayers/tests/BaseTypes/Class.html | 315 ++ openlayers/tests/BaseTypes/Element.html | 268 + openlayers/tests/BaseTypes/LonLat.html | 173 + openlayers/tests/BaseTypes/Pixel.html | 111 + openlayers/tests/BaseTypes/Size.html | 67 + openlayers/tests/Console.html | 39 + openlayers/tests/Control.html | 81 + openlayers/tests/Control/Attribution.html | 43 + openlayers/tests/Control/Button.html | 17 + openlayers/tests/Control/DragFeature.html | 279 + openlayers/tests/Control/DragPan.html | 82 + openlayers/tests/Control/DrawFeature.html | 83 + openlayers/tests/Control/GetFeature.html | 118 + .../tests/Control/KeyboardDefaults.html | 172 + openlayers/tests/Control/LayerSwitcher.html | 193 + openlayers/tests/Control/Measure.html | 75 + openlayers/tests/Control/ModifyFeature.html | 620 +++ openlayers/tests/Control/MousePosition.html | 88 + openlayers/tests/Control/MouseToolbar.html | 59 + openlayers/tests/Control/NavToolbar.html | 34 + openlayers/tests/Control/Navigation.html | 104 + .../tests/Control/NavigationHistory.html | 176 + openlayers/tests/Control/OverviewMap.html | 80 + openlayers/tests/Control/PanZoom.html | 230 + openlayers/tests/Control/PanZoomBar.html | 75 + openlayers/tests/Control/Panel.html | 126 + openlayers/tests/Control/Permalink.html | 237 + openlayers/tests/Control/Scale.html | 53 + openlayers/tests/Control/ScaleLine.html | 189 + openlayers/tests/Control/SelectFeature.html | 381 ++ openlayers/tests/Control/Snapping.html | 334 ++ openlayers/tests/Control/Split.html | 296 + .../tests/Control/WMSGetFeatureInfo.html | 278 + openlayers/tests/Events.html | 457 ++ openlayers/tests/Extras.html | 21 + openlayers/tests/Feature.html | 200 + openlayers/tests/Feature/Vector.html | 136 + openlayers/tests/Filter.html | 21 + openlayers/tests/Filter/Comparison.html | 207 + openlayers/tests/Filter/FeatureId.html | 67 + openlayers/tests/Filter/Logical.html | 75 + openlayers/tests/Filter/Spatial.html | 103 + openlayers/tests/Format.html | 23 + openlayers/tests/Format/ArcXML.html | 277 + openlayers/tests/Format/ArcXML/Features.html | 69 + openlayers/tests/Format/Filter.html | 21 + openlayers/tests/Format/Filter/v1.html | 126 + openlayers/tests/Format/Filter/v1_0_0.html | 160 + openlayers/tests/Format/Filter/v1_1_0.html | 210 + openlayers/tests/Format/GML.html | 420 ++ openlayers/tests/Format/GML/cases.js | 227 + openlayers/tests/Format/GML/v2.html | 646 +++ openlayers/tests/Format/GML/v3.html | 728 +++ openlayers/tests/Format/GPX.html | 39 + openlayers/tests/Format/GeoJSON.html | 416 ++ openlayers/tests/Format/GeoRSS.html | 105 + openlayers/tests/Format/JSON.html | 53 + openlayers/tests/Format/KML.html | 213 + openlayers/tests/Format/OSM.html | 101 + openlayers/tests/Format/SLD.html | 36 + openlayers/tests/Format/SLD/v1_0_0.html | 387 ++ openlayers/tests/Format/Text.html | 49 + openlayers/tests/Format/WFS.html | 81 + openlayers/tests/Format/WFSCapabilities.html | 43 + .../tests/Format/WFSCapabilities/v1.html | 128 + .../tests/Format/WFSDescribeFeatureType.html | 381 ++ openlayers/tests/Format/WFST.html | 23 + openlayers/tests/Format/WFST/v1.html | 160 + openlayers/tests/Format/WFST/v1_0_0.html | 111 + openlayers/tests/Format/WFST/v1_1_0.html | 115 + openlayers/tests/Format/WKT.html | 244 + openlayers/tests/Format/WMC.html | 143 + openlayers/tests/Format/WMC/v1.html | 200 + openlayers/tests/Format/WMC/v1_1_0.html | 74 + openlayers/tests/Format/WMSCapabilities.html | 20 + .../tests/Format/WMSCapabilities/v1_1_1.html | 57 + .../tests/Format/WMSCapabilities/v1_1_1.js | 4773 +++++++++++++++++ openlayers/tests/Format/WMSDescribeLayer.html | 38 + .../tests/Format/WMSGetFeatureInfo.html | 271 + openlayers/tests/Format/XML.html | 834 +++ openlayers/tests/Geometry.html | 344 ++ openlayers/tests/Geometry/Collection.html | 270 + openlayers/tests/Geometry/Curve.html | 157 + openlayers/tests/Geometry/LineString.html | 383 ++ openlayers/tests/Geometry/LinearRing.html | 241 + .../tests/Geometry/MultiLineString.html | 267 + openlayers/tests/Geometry/MultiPoint.html | 130 + openlayers/tests/Geometry/MultiPolygon.html | 34 + openlayers/tests/Geometry/Point.html | 214 + openlayers/tests/Geometry/Polygon.html | 381 ++ openlayers/tests/Geometry/Rectangle.html | 76 + openlayers/tests/Geometry/Surface.html | 22 + openlayers/tests/Handler.html | 261 + openlayers/tests/Handler/Click.html | 299 ++ openlayers/tests/Handler/Drag.html | 379 ++ openlayers/tests/Handler/Feature.html | 484 ++ openlayers/tests/Handler/Hover.html | 136 + openlayers/tests/Handler/Keyboard.html | 106 + openlayers/tests/Handler/MouseWheel.html | 136 + openlayers/tests/Handler/Path.html | 186 + openlayers/tests/Handler/Point.html | 227 + openlayers/tests/Handler/Polygon.html | 201 + openlayers/tests/Handler/RegularPolygon.html | 228 + openlayers/tests/Icon.html | 68 + openlayers/tests/Lang.html | 106 + openlayers/tests/Layer.html | 513 ++ openlayers/tests/Layer/ArcGIS93Rest.html | 363 ++ openlayers/tests/Layer/ArcIMS.html | 89 + openlayers/tests/Layer/EventPane.html | 130 + openlayers/tests/Layer/FixedZoomLevels.html | 109 + openlayers/tests/Layer/GML.html | 60 + openlayers/tests/Layer/GeoRSS.html | 210 + openlayers/tests/Layer/Google.html | 246 + openlayers/tests/Layer/Grid.html | 633 +++ openlayers/tests/Layer/HTTPRequest.html | 214 + openlayers/tests/Layer/Image.html | 164 + openlayers/tests/Layer/KaMap.html | 287 + openlayers/tests/Layer/MapGuide.html | 177 + openlayers/tests/Layer/MapServer.html | 472 ++ openlayers/tests/Layer/Markers.html | 156 + openlayers/tests/Layer/MultiMap.html | 105 + openlayers/tests/Layer/PointTrack.html | 79 + openlayers/tests/Layer/SphericalMercator.html | 95 + openlayers/tests/Layer/TMS.html | 215 + openlayers/tests/Layer/Text.html | 211 + openlayers/tests/Layer/TileCache.html | 203 + openlayers/tests/Layer/Vector.html | 556 ++ .../tests/Layer/Vector/RootContainer.html | 63 + openlayers/tests/Layer/WFS.html | 177 + openlayers/tests/Layer/WMS.html | 407 ++ openlayers/tests/Layer/WrapDateLine.html | 182 + openlayers/tests/Layer/XYZ.html | 182 + openlayers/tests/Layer/Yahoo.html | 120 + openlayers/tests/Layer/atom-1.0.xml | 34 + .../tests/Layer/data_Layer_Text_textfile.txt | 3 + .../Layer/data_Layer_Text_textfile_2.txt | 3 + .../data_Layer_Text_textfile_overflow.txt | 3 + openlayers/tests/Layer/georss.txt | 378 ++ openlayers/tests/Layer/mice.xml | 156 + openlayers/tests/Layer/owls.xml | 156 + openlayers/tests/Map.html | 1306 +++++ openlayers/tests/Marker.html | 163 + openlayers/tests/Marker/Box.html | 183 + openlayers/tests/OpenLayers.html | 25 + openlayers/tests/Popup.html | 213 + openlayers/tests/Popup/Anchored.html | 37 + openlayers/tests/Popup/AnchoredBubble.html | 59 + openlayers/tests/Popup/FramedCloud.html | 18 + openlayers/tests/Projection.html | 30 + openlayers/tests/Protocol.html | 33 + openlayers/tests/Protocol/HTTP.html | 746 +++ openlayers/tests/Protocol/SQL.html | 23 + openlayers/tests/Protocol/SQL/Gears.html | 473 ++ openlayers/tests/Protocol/WFS.html | 285 + openlayers/tests/README.txt | 16 + openlayers/tests/Renderer.html | 80 + openlayers/tests/Renderer/Canvas.html | 86 + openlayers/tests/Renderer/Elements.html | 565 ++ openlayers/tests/Renderer/SVG.html | 481 ++ openlayers/tests/Renderer/VML.html | 421 ++ openlayers/tests/Request.html | 325 ++ openlayers/tests/Request/XMLHttpRequest.html | 14 + openlayers/tests/Rule.html | 99 + openlayers/tests/Strategy.html | 94 + openlayers/tests/Strategy/BBOX.html | 278 + openlayers/tests/Strategy/Cluster.html | 130 + openlayers/tests/Strategy/Fixed.html | 193 + openlayers/tests/Strategy/Paging.html | 113 + openlayers/tests/Strategy/Save.html | 108 + openlayers/tests/Style.html | 345 ++ openlayers/tests/StyleMap.html | 44 + openlayers/tests/Tile.html | 95 + openlayers/tests/Tile/Image.html | 302 ++ openlayers/tests/Tile/WFS.html | 173 + openlayers/tests/Tween.html | 68 + openlayers/tests/Util.html | 948 ++++ openlayers/tests/atom-1.0.xml | 34 + openlayers/tests/auto-tests.html | 2447 +++++++++ openlayers/tests/data/geos_wkt_intersects.js | 495 ++ openlayers/tests/data/osm.js | 14 + openlayers/tests/data_Layer_Text_textfile.txt | 3 + .../tests/data_Layer_Text_textfile_2.txt | 3 + .../data_Layer_Text_textfile_overflow.txt | 3 + openlayers/tests/geom_eq.js | 110 + openlayers/tests/georss.txt | 378 ++ openlayers/tests/grid_inittiles.html | 30 + openlayers/tests/index.html | 6 + openlayers/tests/list-tests.html | 170 + openlayers/tests/manual/ajax.html | 49 + openlayers/tests/manual/ajax.txt | 1 + openlayers/tests/manual/arcims-2117.html | 103 + openlayers/tests/manual/arkansas.rss | 9 + openlayers/tests/manual/big-georss.html | 27 + .../tests/manual/clip-features-svg.html | 123 + openlayers/tests/manual/draw-feature.html | 73 + openlayers/tests/manual/feature-handler.html | 126 + .../manual/geojson-geomcoll-reprojection.html | 74 + openlayers/tests/manual/google-panning.html | 117 + .../tests/manual/overviewmap-projection.html | 70 + openlayers/tests/manual/pan-redraw-svg.html | 58 + openlayers/tests/manual/popup-keepInMap.html | 100 + openlayers/tests/manual/reflow.html | 59 + .../tests/manual/rendered-dimensions.html | 48 + .../tests/manual/renderedDimensions.html | 113 + openlayers/tests/manual/select-feature.html | 75 + openlayers/tests/manual/tiles-loading.html | 122 + openlayers/tests/manual/tween.html | 82 + openlayers/tests/manual/ve-opacity.html | 62 + .../manual/vector-features-performance.html | 142 + .../tests/manual/vector-layer-zindex.html | 143 + openlayers/tests/mice.xml | 156 + openlayers/tests/owls.xml | 156 + openlayers/tests/run-tests.html | 2413 +++++++++ .../tests/selenium/remotecontrol/config.cfg | 48 + .../tests/selenium/remotecontrol/selenium.py | 1846 +++++++ .../tests/selenium/remotecontrol/setup.txt | 8 + .../tests/selenium/remotecontrol/test_ol.py | 95 + openlayers/tests/speed/geometry.html | 43 + openlayers/tests/speed/string_format.html | 29 + openlayers/tests/speed/wmc_speed.html | 30 + openlayers/tests/throws.js | 82 + openlayers/tests/xml_eq.js | 311 ++ openlayers/theme/default/framedCloud.css | 0 openlayers/theme/default/google.css | 9 + openlayers/theme/default/ie6-style.css | 7 + .../theme/default/img/add_point_off.png | Bin 0 -> 1616 bytes openlayers/theme/default/img/add_point_on.png | Bin 0 -> 1464 bytes openlayers/theme/default/img/blank.gif | Bin 0 -> 42 bytes openlayers/theme/default/img/close.gif | Bin 0 -> 1078 bytes .../theme/default/img/drag-rectangle-off.png | Bin 0 -> 1202 bytes .../theme/default/img/drag-rectangle-on.png | Bin 0 -> 1218 bytes .../theme/default/img/draw_line_off.png | Bin 0 -> 1567 bytes openlayers/theme/default/img/draw_line_on.png | Bin 0 -> 1399 bytes .../theme/default/img/draw_point_off.png | Bin 0 -> 1612 bytes .../theme/default/img/draw_point_on.png | Bin 0 -> 1460 bytes .../theme/default/img/draw_polygon_off.png | Bin 0 -> 1546 bytes .../theme/default/img/draw_polygon_on.png | Bin 0 -> 1407 bytes .../theme/default/img/editing_tool_bar.png | Bin 0 -> 3901 bytes .../theme/default/img/move_feature_off.png | Bin 0 -> 1543 bytes .../theme/default/img/move_feature_on.png | Bin 0 -> 1379 bytes .../theme/default/img/navigation_history.png | Bin 0 -> 7021 bytes .../default/img/overview_replacement.gif | Bin 0 -> 79 bytes .../theme/default/img/pan-panel-NOALPHA.png | Bin 0 -> 566 bytes openlayers/theme/default/img/pan-panel.png | Bin 0 -> 1287 bytes openlayers/theme/default/img/pan_off.png | Bin 0 -> 1696 bytes openlayers/theme/default/img/pan_on.png | Bin 0 -> 1568 bytes .../theme/default/img/panning-hand-off.png | Bin 0 -> 3875 bytes .../theme/default/img/panning-hand-on.png | Bin 0 -> 3977 bytes .../theme/default/img/remove_point_off.png | Bin 0 -> 1612 bytes .../theme/default/img/remove_point_on.png | Bin 0 -> 1464 bytes openlayers/theme/default/img/ruler.png | Bin 0 -> 1211 bytes .../theme/default/img/save_features_off.png | Bin 0 -> 357 bytes .../theme/default/img/save_features_on.png | Bin 0 -> 364 bytes .../theme/default/img/view_next_off.png | Bin 0 -> 1644 bytes openlayers/theme/default/img/view_next_on.png | Bin 0 -> 1686 bytes .../theme/default/img/view_previous_off.png | Bin 0 -> 1553 bytes .../theme/default/img/view_previous_on.png | Bin 0 -> 1592 bytes .../theme/default/img/zoom-panel-NOALPHA.png | Bin 0 -> 1173 bytes openlayers/theme/default/img/zoom-panel.png | Bin 0 -> 1624 bytes openlayers/theme/default/style.css | 343 ++ openlayers/tools/BeautifulSoup.py | 1767 ++++++ openlayers/tools/README.txt | 14 + openlayers/tools/exampleparser.py | 251 + openlayers/tools/jsmin.c | 272 + openlayers/tools/jsmin.py | 216 + openlayers/tools/jsmin.pyc | Bin 0 -> 5888 bytes openlayers/tools/mergejs.py | 252 + openlayers/tools/mergejs.pyc | Bin 0 -> 5555 bytes openlayers/tools/minimize.py | 47 + openlayers/tools/oldot.py | 43 + openlayers/tools/release.sh | 29 + openlayers/tools/shrinksafe.py | 54 + openlayers/tools/toposort.py | 260 + openlayers/tools/toposort.pyc | Bin 0 -> 5474 bytes openlayers/tools/update_dev_dir.sh | 45 + syp.cfg | 33 + theme | 1 + wizard.php | 108 + 1710 files changed, 214700 insertions(+) create mode 100644 COPYING.txt create mode 100644 README.txt create mode 100644 admin.php create mode 100644 auth.php create mode 100755 build.sh create mode 100644 changes.php create mode 120000 img create mode 100644 inc/.htaccess create mode 100644 inc/db/anydb.php create mode 100644 inc/db/mysql.php create mode 100644 inc/errors.php create mode 100644 inc/settings.php create mode 100644 inc/utils.php create mode 100644 index.php create mode 100644 items.php create mode 100644 jquery/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png create mode 100644 jquery/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100644 jquery/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png create mode 100644 jquery/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png create mode 100644 jquery/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png create mode 100644 jquery/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 jquery/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png create mode 100644 jquery/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100644 jquery/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png create mode 100644 jquery/css/ui-lightness/images/ui-icons_222222_256x240.png create mode 100644 jquery/css/ui-lightness/images/ui-icons_228ef1_256x240.png create mode 100644 jquery/css/ui-lightness/images/ui-icons_ef8c08_256x240.png create mode 100644 jquery/css/ui-lightness/images/ui-icons_ffd27a_256x240.png create mode 100644 jquery/css/ui-lightness/images/ui-icons_ffffff_256x240.png create mode 100644 jquery/css/ui-lightness/jquery-ui-1.7.2.custom.css create mode 100644 jquery/development-bundle/AUTHORS.txt create mode 100644 jquery/development-bundle/GPL-LICENSE.txt create mode 100644 jquery/development-bundle/MIT-LICENSE.txt create mode 100644 jquery/development-bundle/demos/datepicker/alt-field.html create mode 100644 jquery/development-bundle/demos/datepicker/buttonbar.html create mode 100644 jquery/development-bundle/demos/datepicker/date-formats.html create mode 100644 jquery/development-bundle/demos/datepicker/default.html create mode 100644 jquery/development-bundle/demos/datepicker/dropdown-month-year.html create mode 100644 jquery/development-bundle/demos/datepicker/icon-trigger.html create mode 100644 jquery/development-bundle/demos/datepicker/images/calendar.gif create mode 100644 jquery/development-bundle/demos/datepicker/index.html create mode 100644 jquery/development-bundle/demos/datepicker/inline.html create mode 100644 jquery/development-bundle/demos/datepicker/localization.html create mode 100644 jquery/development-bundle/demos/datepicker/min-max.html create mode 100644 jquery/development-bundle/demos/datepicker/multiple-calendars.html create mode 100644 jquery/development-bundle/demos/demos.css create mode 100644 jquery/development-bundle/demos/images/calendar.gif create mode 100644 jquery/development-bundle/demos/images/demo-config-on-tile.gif create mode 100644 jquery/development-bundle/demos/images/demo-config-on.gif create mode 100644 jquery/development-bundle/demos/images/demo-spindown-closed.gif create mode 100644 jquery/development-bundle/demos/images/demo-spindown-open.gif create mode 100644 jquery/development-bundle/demos/images/icon-docs-info.gif create mode 100644 jquery/development-bundle/demos/images/pbar-ani.gif create mode 100644 jquery/development-bundle/demos/index.html create mode 100644 jquery/development-bundle/docs/datepicker.html create mode 100644 jquery/development-bundle/external/bgiframe/ChangeLog.txt create mode 100644 jquery/development-bundle/external/bgiframe/META.json create mode 100644 jquery/development-bundle/external/bgiframe/docs/index.html create mode 100644 jquery/development-bundle/external/bgiframe/jquery.bgiframe.js create mode 100644 jquery/development-bundle/external/bgiframe/jquery.bgiframe.min.js create mode 100644 jquery/development-bundle/external/bgiframe/jquery.bgiframe.pack.js create mode 100644 jquery/development-bundle/external/bgiframe/test/index.html create mode 100644 jquery/development-bundle/external/cookie/jquery.cookie.js create mode 100644 jquery/development-bundle/external/cookie/jquery.cookie.min.js create mode 100644 jquery/development-bundle/external/cookie/jquery.cookie.pack.js create mode 100644 jquery/development-bundle/external/cookie/jquery.cookie.zip create mode 100644 jquery/development-bundle/external/jsdiff/jsdiff.js create mode 100644 jquery/development-bundle/external/qunit/testrunner.js create mode 100644 jquery/development-bundle/external/qunit/testsuite.css create mode 100644 jquery/development-bundle/external/simulate/jquery.simulate.js create mode 100644 jquery/development-bundle/jquery-1.3.2.js create mode 100644 jquery/development-bundle/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 jquery/development-bundle/themes/base/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 jquery/development-bundle/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 jquery/development-bundle/themes/base/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 jquery/development-bundle/themes/base/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 jquery/development-bundle/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 jquery/development-bundle/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 jquery/development-bundle/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 jquery/development-bundle/themes/base/images/ui-icons_222222_256x240.png create mode 100644 jquery/development-bundle/themes/base/images/ui-icons_2e83ff_256x240.png create mode 100644 jquery/development-bundle/themes/base/images/ui-icons_454545_256x240.png create mode 100644 jquery/development-bundle/themes/base/images/ui-icons_888888_256x240.png create mode 100644 jquery/development-bundle/themes/base/images/ui-icons_cd0a0a_256x240.png create mode 100644 jquery/development-bundle/themes/base/ui.all.css create mode 100644 jquery/development-bundle/themes/base/ui.base.css create mode 100644 jquery/development-bundle/themes/base/ui.core.css create mode 100644 jquery/development-bundle/themes/base/ui.datepicker.css create mode 100644 jquery/development-bundle/themes/base/ui.theme.css create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-icons_222222_256x240.png create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-icons_228ef1_256x240.png create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png create mode 100644 jquery/development-bundle/themes/ui-lightness/images/ui-icons_ffffff_256x240.png create mode 100644 jquery/development-bundle/themes/ui-lightness/jquery-ui-1.7.2.custom.css create mode 100644 jquery/development-bundle/themes/ui-lightness/ui.accordion.css create mode 100644 jquery/development-bundle/themes/ui-lightness/ui.all.css create mode 100644 jquery/development-bundle/themes/ui-lightness/ui.base.css create mode 100644 jquery/development-bundle/themes/ui-lightness/ui.core.css create mode 100644 jquery/development-bundle/themes/ui-lightness/ui.datepicker.css create mode 100644 jquery/development-bundle/themes/ui-lightness/ui.dialog.css create mode 100644 jquery/development-bundle/themes/ui-lightness/ui.progressbar.css create mode 100644 jquery/development-bundle/themes/ui-lightness/ui.resizable.css create mode 100644 jquery/development-bundle/themes/ui-lightness/ui.slider.css create mode 100644 jquery/development-bundle/themes/ui-lightness/ui.tabs.css create mode 100644 jquery/development-bundle/themes/ui-lightness/ui.theme.css create mode 100644 jquery/development-bundle/ui/i18n/jquery-ui-i18n.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-ar.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-bg.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-ca.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-cs.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-da.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-de.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-el.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-eo.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-es.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-fa.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-fi.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-fr.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-he.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-hr.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-hu.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-hy.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-id.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-is.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-it.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-ja.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-ko.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-lt.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-lv.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-ms.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-nl.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-no.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-pl.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-pt-BR.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-ro.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-ru.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-sk.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-sl.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-sq.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-sr-SR.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-sr.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-sv.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-th.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-tr.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-uk.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-zh-CN.js create mode 100644 jquery/development-bundle/ui/i18n/ui.datepicker-zh-TW.js create mode 100644 jquery/development-bundle/ui/jquery-ui-1.7.2.custom.js create mode 100644 jquery/development-bundle/ui/ui.core.js create mode 100644 jquery/development-bundle/ui/ui.datepicker.js create mode 100644 jquery/development-bundle/version.txt create mode 100644 jquery/index.html create mode 100644 jquery/jquery-1.3.2.js create mode 100644 jquery/jquery-1.3.2.min.js create mode 100644 jquery/jquery-ui-1.7.2.custom.min.js create mode 100644 jquery/jquery-ui-1.7.2.custom.zip create mode 100644 jquery/js/jquery-1.3.2.min.js create mode 100644 jquery/js/jquery-ui-1.7.2.custom.min.js create mode 100644 js/admin.js create mode 100644 js/jquery-1.3.2.js create mode 100644 js/jquery-1.3.2.min.js create mode 100644 js/syp.js create mode 120000 lib create mode 100644 license.txt create mode 100644 media/admin.css create mode 100644 media/common.css create mode 100644 media/newimage_throbber.gif create mode 100644 media/pwd_throbber.gif create mode 100644 media/syp.css create mode 100644 openlayers/OpenLayers.js create mode 100644 openlayers/apidoc_config/Data/ClassHierarchy.nd create mode 100644 openlayers/apidoc_config/Data/ConfigFileInfo.nd create mode 100644 openlayers/apidoc_config/Data/FileInfo.nd create mode 100644 openlayers/apidoc_config/Data/ImageFileInfo.nd create mode 100644 openlayers/apidoc_config/Data/ImageReferenceTable.nd create mode 100644 openlayers/apidoc_config/Data/IndexInfo.nd create mode 100644 openlayers/apidoc_config/Data/PreviousMenuState.nd create mode 100644 openlayers/apidoc_config/Data/PreviousSettings.nd create mode 100644 openlayers/apidoc_config/Data/SymbolTable.nd create mode 100644 openlayers/apidoc_config/Languages.txt create mode 100644 openlayers/apidoc_config/Menu.txt create mode 100644 openlayers/apidoc_config/OL.css create mode 100644 openlayers/apidoc_config/Topics.txt create mode 100644 openlayers/art/arrows.svg create mode 100644 openlayers/art/layer-switcher-maximize.svg create mode 100644 openlayers/art/layer-switcher-minimize.svg create mode 100644 openlayers/art/marker.svg create mode 100644 openlayers/art/measuring-stick-off.svg create mode 100644 openlayers/art/measuring-stick-on.svg create mode 100644 openlayers/art/panning-hand-off.svg create mode 100644 openlayers/art/panning-hand-on.svg create mode 100644 openlayers/art/slider.svg create mode 100644 openlayers/art/zoom-world.svg create mode 100644 openlayers/art/zoombar.svg create mode 100644 openlayers/build/OpenLayers.js create mode 100644 openlayers/build/README.txt create mode 100755 openlayers/build/build.py create mode 100755 openlayers/build/buildUncompressed.py create mode 100644 openlayers/build/full.cfg create mode 100644 openlayers/build/library.cfg create mode 100644 openlayers/build/license.txt create mode 100644 openlayers/build/lite.cfg create mode 100644 openlayers/doc/apidocs/files/OpenLayers-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Ajax-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/BaseTypes-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Bounds-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Class-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Element-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/BaseTypes/LonLat-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Pixel-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Size-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Console-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/ArgParser-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/Attribution-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/Button-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/DragFeature-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/DragPan-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/DrawFeature-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/EditingToolbar-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/GetFeature-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/KeyboardDefaults-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/LayerSwitcher-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/Measure-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/ModifyFeature-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/MouseDefaults-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/MousePosition-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/MouseToolbar-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/NavToolbar-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/Navigation-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/NavigationHistory-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/OverviewMap-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/Pan-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/PanPanel-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/PanZoom-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/PanZoomBar-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/Panel-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/Permalink-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/Scale-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/ScaleLine-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/SelectFeature-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/Snapping-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/Split-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/WMSGetFeatureInfo-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/ZoomBox-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/ZoomIn-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/ZoomOut-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/ZoomPanel-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Control/ZoomToMaxExtent-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Events-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Feature-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Feature/Vector-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Feature/WFS-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Filter-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Filter/Comparison-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Filter/FeatureId-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Filter/Logical-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Filter/Spatial-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/ArcXML-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/ArcXML/Features-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/Filter-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/Filter/v1-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/Filter/v1_0_0-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/Filter/v1_1_0-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/GML-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/GML/Base-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/GML/v2-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/GML/v3-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/GPX-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/GeoJSON-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/GeoRSS-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/JSON-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/KML-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/OSM-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/SLD-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/SLD/v1-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/SLD/v1_0_0-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/Text-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WFS-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities/v1-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities/v1_0_0-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities/v1_1_0-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WFSDescribeFeatureType-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WFST-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WFST/v1-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WFST/v1_0_0-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WFST/v1_1_0-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WKT-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WMC-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WMC/v1-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WMC/v1_0_0-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WMC/v1_1_0-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities/v1_1-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities/v1_1_0-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities/v1_1_1-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WMSDescribeLayer-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WMSDescribeLayer/v1_1-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/WMSGetFeatureInfo-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Format/XML-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Geometry-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Geometry/Collection-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Geometry/Curve-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Geometry/LineString-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Geometry/LinearRing-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Geometry/MultiLineString-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Geometry/MultiPoint-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Geometry/MultiPolygon-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Geometry/Point-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Geometry/Polygon-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Geometry/Rectangle-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Handler-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Handler/Box-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Handler/Click-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Handler/Drag-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Handler/Feature-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Handler/Hover-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Handler/Keyboard-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Handler/MouseWheel-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Handler/Path-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Handler/Point-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Handler/Polygon-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Handler/RegularPolygon-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Icon-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/ca-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/cs-CZ-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/da-DK-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/de-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/en-CA-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/en-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/es-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/fr-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/it-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/nb-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/nl-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/pt-BR-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/sv-SE-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/zh-CN-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Lang/zh-TW-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/ArcGIS93Rest-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/ArcIMS-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/Boxes-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/EventPane-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/FixedZoomLevels-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/GML-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/GeoRSS-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/Google-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/Grid-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/HTTPRequest-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/Image-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/KaMap-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/KaMapCache-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/MapGuide-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/MapServer-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/MapServer/Untiled-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/Markers-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/MultiMap-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/PointTrack-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/SphericalMercator-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/TMS-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/Text-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/TileCache-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/Vector-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/Vector/RootContainer-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/VirtualEarth-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/WFS-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/WMS-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/WMS/Untiled-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/WorldWind-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/XYZ-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Layer/Yahoo-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Map-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Marker-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Marker/Box-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Popup-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Popup/Anchored-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Popup/AnchoredBubble-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Popup/Framed-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Popup/FramedCloud-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Projection-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Protocol-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Protocol/HTTP-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Protocol/SQL-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Protocol/SQL/Gears-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS/v1-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS/v1_0_0-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS/v1_1_0-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Renderer-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Renderer/Canvas-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Renderer/Elements-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Renderer/SVG-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Renderer/VML-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Request-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Request/XMLHttpRequest-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Rule-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Strategy-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Strategy/BBOX-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Strategy/Cluster-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Strategy/Fixed-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Strategy/Paging-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Strategy/Save-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Style-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/StyleMap-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Tile-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Tile/Image-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Tile/WFS-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Tween-js.html create mode 100644 openlayers/doc/apidocs/files/OpenLayers/Util-js.html create mode 100644 openlayers/doc/apidocs/index.html create mode 100644 openlayers/doc/apidocs/index/Classes.html create mode 100644 openlayers/doc/apidocs/index/Classes2.html create mode 100644 openlayers/doc/apidocs/index/Constants.html create mode 100644 openlayers/doc/apidocs/index/Constructor.html create mode 100644 openlayers/doc/apidocs/index/Constructor2.html create mode 100644 openlayers/doc/apidocs/index/Files.html create mode 100644 openlayers/doc/apidocs/index/Functions.html create mode 100644 openlayers/doc/apidocs/index/Functions2.html create mode 100644 openlayers/doc/apidocs/index/Functions3.html create mode 100644 openlayers/doc/apidocs/index/Functions4.html create mode 100644 openlayers/doc/apidocs/index/Functions5.html create mode 100644 openlayers/doc/apidocs/index/Functions6.html create mode 100644 openlayers/doc/apidocs/index/Functions7.html create mode 100644 openlayers/doc/apidocs/index/Functions8.html create mode 100644 openlayers/doc/apidocs/index/General.html create mode 100644 openlayers/doc/apidocs/index/General10.html create mode 100644 openlayers/doc/apidocs/index/General11.html create mode 100644 openlayers/doc/apidocs/index/General12.html create mode 100644 openlayers/doc/apidocs/index/General13.html create mode 100644 openlayers/doc/apidocs/index/General14.html create mode 100644 openlayers/doc/apidocs/index/General15.html create mode 100644 openlayers/doc/apidocs/index/General2.html create mode 100644 openlayers/doc/apidocs/index/General3.html create mode 100644 openlayers/doc/apidocs/index/General4.html create mode 100644 openlayers/doc/apidocs/index/General5.html create mode 100644 openlayers/doc/apidocs/index/General6.html create mode 100644 openlayers/doc/apidocs/index/General7.html create mode 100644 openlayers/doc/apidocs/index/General8.html create mode 100644 openlayers/doc/apidocs/index/General9.html create mode 100644 openlayers/doc/apidocs/index/Properties.html create mode 100644 openlayers/doc/apidocs/index/Properties2.html create mode 100644 openlayers/doc/apidocs/index/Properties3.html create mode 100644 openlayers/doc/apidocs/index/Properties4.html create mode 100644 openlayers/doc/apidocs/javascript/main.js create mode 100644 openlayers/doc/apidocs/javascript/searchdata.js create mode 100644 openlayers/doc/apidocs/search/ClassesO.html create mode 100644 openlayers/doc/apidocs/search/ClassesU.html create mode 100644 openlayers/doc/apidocs/search/ConstantsB.html create mode 100644 openlayers/doc/apidocs/search/ConstantsC.html create mode 100644 openlayers/doc/apidocs/search/ConstantsD.html create mode 100644 openlayers/doc/apidocs/search/ConstantsE.html create mode 100644 openlayers/doc/apidocs/search/ConstantsF.html create mode 100644 openlayers/doc/apidocs/search/ConstantsI.html create mode 100644 openlayers/doc/apidocs/search/ConstantsK.html create mode 100644 openlayers/doc/apidocs/search/ConstantsL.html create mode 100644 openlayers/doc/apidocs/search/ConstantsM.html create mode 100644 openlayers/doc/apidocs/search/ConstantsO.html create mode 100644 openlayers/doc/apidocs/search/ConstantsR.html create mode 100644 openlayers/doc/apidocs/search/ConstantsS.html create mode 100644 openlayers/doc/apidocs/search/ConstantsT.html create mode 100644 openlayers/doc/apidocs/search/ConstantsU.html create mode 100644 openlayers/doc/apidocs/search/ConstantsV.html create mode 100644 openlayers/doc/apidocs/search/ConstantsX.html create mode 100644 openlayers/doc/apidocs/search/ConstantsY.html create mode 100644 openlayers/doc/apidocs/search/ConstantsZ.html create mode 100644 openlayers/doc/apidocs/search/ConstructorA.html create mode 100644 openlayers/doc/apidocs/search/ConstructorB.html create mode 100644 openlayers/doc/apidocs/search/ConstructorC.html create mode 100644 openlayers/doc/apidocs/search/ConstructorD.html create mode 100644 openlayers/doc/apidocs/search/ConstructorE.html create mode 100644 openlayers/doc/apidocs/search/ConstructorF.html create mode 100644 openlayers/doc/apidocs/search/ConstructorG.html create mode 100644 openlayers/doc/apidocs/search/ConstructorH.html create mode 100644 openlayers/doc/apidocs/search/ConstructorI.html create mode 100644 openlayers/doc/apidocs/search/ConstructorJ.html create mode 100644 openlayers/doc/apidocs/search/ConstructorK.html create mode 100644 openlayers/doc/apidocs/search/ConstructorL.html create mode 100644 openlayers/doc/apidocs/search/ConstructorM.html create mode 100644 openlayers/doc/apidocs/search/ConstructorN.html create mode 100644 openlayers/doc/apidocs/search/ConstructorO.html create mode 100644 openlayers/doc/apidocs/search/ConstructorP.html create mode 100644 openlayers/doc/apidocs/search/ConstructorR.html create mode 100644 openlayers/doc/apidocs/search/ConstructorS.html create mode 100644 openlayers/doc/apidocs/search/ConstructorT.html create mode 100644 openlayers/doc/apidocs/search/ConstructorU.html create mode 100644 openlayers/doc/apidocs/search/ConstructorV.html create mode 100644 openlayers/doc/apidocs/search/ConstructorW.html create mode 100644 openlayers/doc/apidocs/search/ConstructorX.html create mode 100644 openlayers/doc/apidocs/search/ConstructorY.html create mode 100644 openlayers/doc/apidocs/search/ConstructorZ.html create mode 100644 openlayers/doc/apidocs/search/FilesA.html create mode 100644 openlayers/doc/apidocs/search/FilesC.html create mode 100644 openlayers/doc/apidocs/search/FilesO.html create mode 100644 openlayers/doc/apidocs/search/FunctionsA.html create mode 100644 openlayers/doc/apidocs/search/FunctionsB.html create mode 100644 openlayers/doc/apidocs/search/FunctionsC.html create mode 100644 openlayers/doc/apidocs/search/FunctionsD.html create mode 100644 openlayers/doc/apidocs/search/FunctionsE.html create mode 100644 openlayers/doc/apidocs/search/FunctionsF.html create mode 100644 openlayers/doc/apidocs/search/FunctionsG.html create mode 100644 openlayers/doc/apidocs/search/FunctionsH.html create mode 100644 openlayers/doc/apidocs/search/FunctionsI.html create mode 100644 openlayers/doc/apidocs/search/FunctionsL.html create mode 100644 openlayers/doc/apidocs/search/FunctionsM.html create mode 100644 openlayers/doc/apidocs/search/FunctionsN.html create mode 100644 openlayers/doc/apidocs/search/FunctionsO.html create mode 100644 openlayers/doc/apidocs/search/FunctionsP.html create mode 100644 openlayers/doc/apidocs/search/FunctionsR.html create mode 100644 openlayers/doc/apidocs/search/FunctionsS.html create mode 100644 openlayers/doc/apidocs/search/FunctionsT.html create mode 100644 openlayers/doc/apidocs/search/FunctionsU.html create mode 100644 openlayers/doc/apidocs/search/FunctionsV.html create mode 100644 openlayers/doc/apidocs/search/FunctionsW.html create mode 100644 openlayers/doc/apidocs/search/FunctionsZ.html create mode 100644 openlayers/doc/apidocs/search/GeneralA.html create mode 100644 openlayers/doc/apidocs/search/GeneralB.html create mode 100644 openlayers/doc/apidocs/search/GeneralC.html create mode 100644 openlayers/doc/apidocs/search/GeneralD.html create mode 100644 openlayers/doc/apidocs/search/GeneralE.html create mode 100644 openlayers/doc/apidocs/search/GeneralF.html create mode 100644 openlayers/doc/apidocs/search/GeneralG.html create mode 100644 openlayers/doc/apidocs/search/GeneralH.html create mode 100644 openlayers/doc/apidocs/search/GeneralI.html create mode 100644 openlayers/doc/apidocs/search/GeneralJ.html create mode 100644 openlayers/doc/apidocs/search/GeneralK.html create mode 100644 openlayers/doc/apidocs/search/GeneralL.html create mode 100644 openlayers/doc/apidocs/search/GeneralM.html create mode 100644 openlayers/doc/apidocs/search/GeneralN.html create mode 100644 openlayers/doc/apidocs/search/GeneralO.html create mode 100644 openlayers/doc/apidocs/search/GeneralP.html create mode 100644 openlayers/doc/apidocs/search/GeneralR.html create mode 100644 openlayers/doc/apidocs/search/GeneralS.html create mode 100644 openlayers/doc/apidocs/search/GeneralT.html create mode 100644 openlayers/doc/apidocs/search/GeneralU.html create mode 100644 openlayers/doc/apidocs/search/GeneralV.html create mode 100644 openlayers/doc/apidocs/search/GeneralW.html create mode 100644 openlayers/doc/apidocs/search/GeneralX.html create mode 100644 openlayers/doc/apidocs/search/GeneralY.html create mode 100644 openlayers/doc/apidocs/search/GeneralZ.html create mode 100644 openlayers/doc/apidocs/search/NoResults.html create mode 100644 openlayers/doc/apidocs/search/PropertiesA.html create mode 100644 openlayers/doc/apidocs/search/PropertiesB.html create mode 100644 openlayers/doc/apidocs/search/PropertiesC.html create mode 100644 openlayers/doc/apidocs/search/PropertiesD.html create mode 100644 openlayers/doc/apidocs/search/PropertiesE.html create mode 100644 openlayers/doc/apidocs/search/PropertiesF.html create mode 100644 openlayers/doc/apidocs/search/PropertiesG.html create mode 100644 openlayers/doc/apidocs/search/PropertiesH.html create mode 100644 openlayers/doc/apidocs/search/PropertiesI.html create mode 100644 openlayers/doc/apidocs/search/PropertiesK.html create mode 100644 openlayers/doc/apidocs/search/PropertiesL.html create mode 100644 openlayers/doc/apidocs/search/PropertiesM.html create mode 100644 openlayers/doc/apidocs/search/PropertiesN.html create mode 100644 openlayers/doc/apidocs/search/PropertiesO.html create mode 100644 openlayers/doc/apidocs/search/PropertiesP.html create mode 100644 openlayers/doc/apidocs/search/PropertiesR.html create mode 100644 openlayers/doc/apidocs/search/PropertiesS.html create mode 100644 openlayers/doc/apidocs/search/PropertiesT.html create mode 100644 openlayers/doc/apidocs/search/PropertiesU.html create mode 100644 openlayers/doc/apidocs/search/PropertiesV.html create mode 100644 openlayers/doc/apidocs/search/PropertiesW.html create mode 100644 openlayers/doc/apidocs/search/PropertiesX.html create mode 100644 openlayers/doc/apidocs/search/PropertiesY.html create mode 100644 openlayers/doc/apidocs/search/PropertiesZ.html create mode 100644 openlayers/doc/apidocs/styles/1.css create mode 100644 openlayers/doc/apidocs/styles/2.css create mode 100644 openlayers/doc/apidocs/styles/main.css create mode 100644 openlayers/doc/authors.txt create mode 100644 openlayers/doc/customization create mode 100644 openlayers/doc/devdocs/files/OpenLayers-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Ajax-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/BaseTypes-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Bounds-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Class-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Element-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/BaseTypes/LonLat-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Pixel-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Size-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Console-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/ArgParser-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/Attribution-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/Button-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/DragFeature-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/DragPan-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/DrawFeature-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/EditingToolbar-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/GetFeature-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/KeyboardDefaults-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/LayerSwitcher-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/Measure-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/ModifyFeature-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/MouseDefaults-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/MousePosition-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/MouseToolbar-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/NavToolbar-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/Navigation-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/NavigationHistory-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/OverviewMap-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/Pan-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/PanPanel-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/PanZoom-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/PanZoomBar-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/Panel-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/Permalink-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/Scale-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/ScaleLine-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/SelectFeature-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/Snapping-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/Split-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/WMSGetFeatureInfo-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/ZoomBox-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/ZoomIn-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/ZoomOut-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/ZoomPanel-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Control/ZoomToMaxExtent-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Events-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Feature-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Feature/Vector-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Feature/WFS-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Filter-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Filter/Comparison-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Filter/FeatureId-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Filter/Logical-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Filter/Spatial-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/ArcXML-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/ArcXML/Features-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/Filter-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/Filter/v1-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/Filter/v1_0_0-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/Filter/v1_1_0-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/GML-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/GML/Base-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/GML/v2-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/GML/v3-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/GPX-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/GeoJSON-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/GeoRSS-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/JSON-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/KML-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/OSM-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/SLD-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/SLD/v1-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/SLD/v1_0_0-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/Text-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WFS-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities/v1-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities/v1_0_0-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities/v1_1_0-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WFSDescribeFeatureType-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WFST-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WFST/v1-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WFST/v1_0_0-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WFST/v1_1_0-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WKT-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WMC-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WMC/v1-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WMC/v1_0_0-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WMC/v1_1_0-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities/v1_1-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities/v1_1_0-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities/v1_1_1-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WMSDescribeLayer-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WMSDescribeLayer/v1_1-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/WMSGetFeatureInfo-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Format/XML-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Geometry-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Geometry/Collection-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Geometry/Curve-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Geometry/LineString-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Geometry/LinearRing-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Geometry/MultiLineString-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Geometry/MultiPoint-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Geometry/MultiPolygon-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Geometry/Point-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Geometry/Polygon-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Geometry/Rectangle-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Handler-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Handler/Box-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Handler/Click-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Handler/Drag-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Handler/Feature-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Handler/Hover-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Handler/Keyboard-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Handler/MouseWheel-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Handler/Path-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Handler/Point-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Handler/Polygon-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Handler/RegularPolygon-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Icon-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/ca-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/cs-CZ-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/da-DK-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/de-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/en-CA-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/en-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/es-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/fr-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/it-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/nb-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/nl-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/pt-BR-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/sv-SE-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/zh-CN-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Lang/zh-TW-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/ArcGIS93Rest-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/ArcIMS-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/Boxes-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/EventPane-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/FixedZoomLevels-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/GML-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/GeoRSS-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/Google-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/Grid-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/HTTPRequest-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/Image-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/KaMap-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/KaMapCache-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/MapGuide-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/MapServer-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/MapServer/Untiled-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/Markers-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/MultiMap-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/PointTrack-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/SphericalMercator-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/TMS-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/Text-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/TileCache-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/Vector-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/Vector/RootContainer-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/VirtualEarth-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/WFS-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/WMS-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/WMS/Untiled-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/WorldWind-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/XYZ-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Layer/Yahoo-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Map-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Marker-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Marker/Box-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Popup-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Popup/Anchored-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Popup/AnchoredBubble-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Popup/Framed-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Popup/FramedCloud-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Projection-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Protocol-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Protocol/HTTP-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Protocol/SQL-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Protocol/SQL/Gears-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS/v1-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS/v1_0_0-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS/v1_1_0-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Renderer-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Renderer/Canvas-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Renderer/Elements-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Renderer/SVG-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Renderer/VML-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Request-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Request/XMLHttpRequest-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Rule-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Strategy-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Strategy/BBOX-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Strategy/Cluster-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Strategy/Fixed-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Strategy/Paging-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Strategy/Save-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Style-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/StyleMap-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Tile-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Tile/Image-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Tile/WFS-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Tween-js.html create mode 100644 openlayers/doc/devdocs/files/OpenLayers/Util-js.html create mode 100644 openlayers/doc/devdocs/index.html create mode 100644 openlayers/doc/devdocs/index/Classes.html create mode 100644 openlayers/doc/devdocs/index/Classes2.html create mode 100644 openlayers/doc/devdocs/index/Constants.html create mode 100644 openlayers/doc/devdocs/index/Constructor.html create mode 100644 openlayers/doc/devdocs/index/Constructor2.html create mode 100644 openlayers/doc/devdocs/index/Files.html create mode 100644 openlayers/doc/devdocs/index/Functions.html create mode 100644 openlayers/doc/devdocs/index/Functions10.html create mode 100644 openlayers/doc/devdocs/index/Functions11.html create mode 100644 openlayers/doc/devdocs/index/Functions12.html create mode 100644 openlayers/doc/devdocs/index/Functions13.html create mode 100644 openlayers/doc/devdocs/index/Functions14.html create mode 100644 openlayers/doc/devdocs/index/Functions2.html create mode 100644 openlayers/doc/devdocs/index/Functions3.html create mode 100644 openlayers/doc/devdocs/index/Functions4.html create mode 100644 openlayers/doc/devdocs/index/Functions5.html create mode 100644 openlayers/doc/devdocs/index/Functions6.html create mode 100644 openlayers/doc/devdocs/index/Functions7.html create mode 100644 openlayers/doc/devdocs/index/Functions8.html create mode 100644 openlayers/doc/devdocs/index/Functions9.html create mode 100644 openlayers/doc/devdocs/index/General.html create mode 100644 openlayers/doc/devdocs/index/General10.html create mode 100644 openlayers/doc/devdocs/index/General11.html create mode 100644 openlayers/doc/devdocs/index/General12.html create mode 100644 openlayers/doc/devdocs/index/General13.html create mode 100644 openlayers/doc/devdocs/index/General14.html create mode 100644 openlayers/doc/devdocs/index/General15.html create mode 100644 openlayers/doc/devdocs/index/General16.html create mode 100644 openlayers/doc/devdocs/index/General17.html create mode 100644 openlayers/doc/devdocs/index/General18.html create mode 100644 openlayers/doc/devdocs/index/General19.html create mode 100644 openlayers/doc/devdocs/index/General2.html create mode 100644 openlayers/doc/devdocs/index/General20.html create mode 100644 openlayers/doc/devdocs/index/General21.html create mode 100644 openlayers/doc/devdocs/index/General22.html create mode 100644 openlayers/doc/devdocs/index/General23.html create mode 100644 openlayers/doc/devdocs/index/General3.html create mode 100644 openlayers/doc/devdocs/index/General4.html create mode 100644 openlayers/doc/devdocs/index/General5.html create mode 100644 openlayers/doc/devdocs/index/General6.html create mode 100644 openlayers/doc/devdocs/index/General7.html create mode 100644 openlayers/doc/devdocs/index/General8.html create mode 100644 openlayers/doc/devdocs/index/General9.html create mode 100644 openlayers/doc/devdocs/index/Properties.html create mode 100644 openlayers/doc/devdocs/index/Properties10.html create mode 100644 openlayers/doc/devdocs/index/Properties2.html create mode 100644 openlayers/doc/devdocs/index/Properties3.html create mode 100644 openlayers/doc/devdocs/index/Properties4.html create mode 100644 openlayers/doc/devdocs/index/Properties5.html create mode 100644 openlayers/doc/devdocs/index/Properties6.html create mode 100644 openlayers/doc/devdocs/index/Properties7.html create mode 100644 openlayers/doc/devdocs/index/Properties8.html create mode 100644 openlayers/doc/devdocs/index/Properties9.html create mode 100644 openlayers/doc/devdocs/javascript/main.js create mode 100644 openlayers/doc/devdocs/javascript/searchdata.js create mode 100644 openlayers/doc/devdocs/search/ClassesO.html create mode 100644 openlayers/doc/devdocs/search/ClassesU.html create mode 100644 openlayers/doc/devdocs/search/ConstantsB.html create mode 100644 openlayers/doc/devdocs/search/ConstantsC.html create mode 100644 openlayers/doc/devdocs/search/ConstantsD.html create mode 100644 openlayers/doc/devdocs/search/ConstantsE.html create mode 100644 openlayers/doc/devdocs/search/ConstantsF.html create mode 100644 openlayers/doc/devdocs/search/ConstantsI.html create mode 100644 openlayers/doc/devdocs/search/ConstantsK.html create mode 100644 openlayers/doc/devdocs/search/ConstantsL.html create mode 100644 openlayers/doc/devdocs/search/ConstantsM.html create mode 100644 openlayers/doc/devdocs/search/ConstantsO.html create mode 100644 openlayers/doc/devdocs/search/ConstantsR.html create mode 100644 openlayers/doc/devdocs/search/ConstantsS.html create mode 100644 openlayers/doc/devdocs/search/ConstantsT.html create mode 100644 openlayers/doc/devdocs/search/ConstantsU.html create mode 100644 openlayers/doc/devdocs/search/ConstantsV.html create mode 100644 openlayers/doc/devdocs/search/ConstantsX.html create mode 100644 openlayers/doc/devdocs/search/ConstantsY.html create mode 100644 openlayers/doc/devdocs/search/ConstantsZ.html create mode 100644 openlayers/doc/devdocs/search/ConstructorA.html create mode 100644 openlayers/doc/devdocs/search/ConstructorB.html create mode 100644 openlayers/doc/devdocs/search/ConstructorC.html create mode 100644 openlayers/doc/devdocs/search/ConstructorD.html create mode 100644 openlayers/doc/devdocs/search/ConstructorE.html create mode 100644 openlayers/doc/devdocs/search/ConstructorF.html create mode 100644 openlayers/doc/devdocs/search/ConstructorG.html create mode 100644 openlayers/doc/devdocs/search/ConstructorH.html create mode 100644 openlayers/doc/devdocs/search/ConstructorI.html create mode 100644 openlayers/doc/devdocs/search/ConstructorJ.html create mode 100644 openlayers/doc/devdocs/search/ConstructorK.html create mode 100644 openlayers/doc/devdocs/search/ConstructorL.html create mode 100644 openlayers/doc/devdocs/search/ConstructorM.html create mode 100644 openlayers/doc/devdocs/search/ConstructorN.html create mode 100644 openlayers/doc/devdocs/search/ConstructorO.html create mode 100644 openlayers/doc/devdocs/search/ConstructorP.html create mode 100644 openlayers/doc/devdocs/search/ConstructorR.html create mode 100644 openlayers/doc/devdocs/search/ConstructorS.html create mode 100644 openlayers/doc/devdocs/search/ConstructorT.html create mode 100644 openlayers/doc/devdocs/search/ConstructorU.html create mode 100644 openlayers/doc/devdocs/search/ConstructorV.html create mode 100644 openlayers/doc/devdocs/search/ConstructorW.html create mode 100644 openlayers/doc/devdocs/search/ConstructorX.html create mode 100644 openlayers/doc/devdocs/search/ConstructorY.html create mode 100644 openlayers/doc/devdocs/search/ConstructorZ.html create mode 100644 openlayers/doc/devdocs/search/FilesA.html create mode 100644 openlayers/doc/devdocs/search/FilesC.html create mode 100644 openlayers/doc/devdocs/search/FilesO.html create mode 100644 openlayers/doc/devdocs/search/FilesW.html create mode 100644 openlayers/doc/devdocs/search/FunctionsA.html create mode 100644 openlayers/doc/devdocs/search/FunctionsB.html create mode 100644 openlayers/doc/devdocs/search/FunctionsC.html create mode 100644 openlayers/doc/devdocs/search/FunctionsD.html create mode 100644 openlayers/doc/devdocs/search/FunctionsE.html create mode 100644 openlayers/doc/devdocs/search/FunctionsF.html create mode 100644 openlayers/doc/devdocs/search/FunctionsG.html create mode 100644 openlayers/doc/devdocs/search/FunctionsH.html create mode 100644 openlayers/doc/devdocs/search/FunctionsI.html create mode 100644 openlayers/doc/devdocs/search/FunctionsL.html create mode 100644 openlayers/doc/devdocs/search/FunctionsM.html create mode 100644 openlayers/doc/devdocs/search/FunctionsN.html create mode 100644 openlayers/doc/devdocs/search/FunctionsO.html create mode 100644 openlayers/doc/devdocs/search/FunctionsP.html create mode 100644 openlayers/doc/devdocs/search/FunctionsR.html create mode 100644 openlayers/doc/devdocs/search/FunctionsS.html create mode 100644 openlayers/doc/devdocs/search/FunctionsSymbols.html create mode 100644 openlayers/doc/devdocs/search/FunctionsT.html create mode 100644 openlayers/doc/devdocs/search/FunctionsU.html create mode 100644 openlayers/doc/devdocs/search/FunctionsV.html create mode 100644 openlayers/doc/devdocs/search/FunctionsW.html create mode 100644 openlayers/doc/devdocs/search/FunctionsZ.html create mode 100644 openlayers/doc/devdocs/search/GeneralA.html create mode 100644 openlayers/doc/devdocs/search/GeneralB.html create mode 100644 openlayers/doc/devdocs/search/GeneralC.html create mode 100644 openlayers/doc/devdocs/search/GeneralD.html create mode 100644 openlayers/doc/devdocs/search/GeneralE.html create mode 100644 openlayers/doc/devdocs/search/GeneralF.html create mode 100644 openlayers/doc/devdocs/search/GeneralG.html create mode 100644 openlayers/doc/devdocs/search/GeneralH.html create mode 100644 openlayers/doc/devdocs/search/GeneralI.html create mode 100644 openlayers/doc/devdocs/search/GeneralJ.html create mode 100644 openlayers/doc/devdocs/search/GeneralK.html create mode 100644 openlayers/doc/devdocs/search/GeneralL.html create mode 100644 openlayers/doc/devdocs/search/GeneralM.html create mode 100644 openlayers/doc/devdocs/search/GeneralN.html create mode 100644 openlayers/doc/devdocs/search/GeneralO.html create mode 100644 openlayers/doc/devdocs/search/GeneralP.html create mode 100644 openlayers/doc/devdocs/search/GeneralQ.html create mode 100644 openlayers/doc/devdocs/search/GeneralR.html create mode 100644 openlayers/doc/devdocs/search/GeneralS.html create mode 100644 openlayers/doc/devdocs/search/GeneralSymbols.html create mode 100644 openlayers/doc/devdocs/search/GeneralT.html create mode 100644 openlayers/doc/devdocs/search/GeneralU.html create mode 100644 openlayers/doc/devdocs/search/GeneralV.html create mode 100644 openlayers/doc/devdocs/search/GeneralW.html create mode 100644 openlayers/doc/devdocs/search/GeneralX.html create mode 100644 openlayers/doc/devdocs/search/GeneralY.html create mode 100644 openlayers/doc/devdocs/search/GeneralZ.html create mode 100644 openlayers/doc/devdocs/search/NoResults.html create mode 100644 openlayers/doc/devdocs/search/PropertiesA.html create mode 100644 openlayers/doc/devdocs/search/PropertiesB.html create mode 100644 openlayers/doc/devdocs/search/PropertiesC.html create mode 100644 openlayers/doc/devdocs/search/PropertiesD.html create mode 100644 openlayers/doc/devdocs/search/PropertiesE.html create mode 100644 openlayers/doc/devdocs/search/PropertiesF.html create mode 100644 openlayers/doc/devdocs/search/PropertiesG.html create mode 100644 openlayers/doc/devdocs/search/PropertiesH.html create mode 100644 openlayers/doc/devdocs/search/PropertiesI.html create mode 100644 openlayers/doc/devdocs/search/PropertiesJ.html create mode 100644 openlayers/doc/devdocs/search/PropertiesK.html create mode 100644 openlayers/doc/devdocs/search/PropertiesL.html create mode 100644 openlayers/doc/devdocs/search/PropertiesM.html create mode 100644 openlayers/doc/devdocs/search/PropertiesN.html create mode 100644 openlayers/doc/devdocs/search/PropertiesO.html create mode 100644 openlayers/doc/devdocs/search/PropertiesP.html create mode 100644 openlayers/doc/devdocs/search/PropertiesQ.html create mode 100644 openlayers/doc/devdocs/search/PropertiesR.html create mode 100644 openlayers/doc/devdocs/search/PropertiesS.html create mode 100644 openlayers/doc/devdocs/search/PropertiesSymbols.html create mode 100644 openlayers/doc/devdocs/search/PropertiesT.html create mode 100644 openlayers/doc/devdocs/search/PropertiesU.html create mode 100644 openlayers/doc/devdocs/search/PropertiesV.html create mode 100644 openlayers/doc/devdocs/search/PropertiesW.html create mode 100644 openlayers/doc/devdocs/search/PropertiesX.html create mode 100644 openlayers/doc/devdocs/search/PropertiesY.html create mode 100644 openlayers/doc/devdocs/search/PropertiesZ.html create mode 100644 openlayers/doc/devdocs/styles/1.css create mode 100644 openlayers/doc/devdocs/styles/2.css create mode 100644 openlayers/doc/devdocs/styles/main.css create mode 100644 openlayers/doc/licenses/APACHE-2.0.txt create mode 100644 openlayers/doc/licenses/BSD-LICENSE.txt create mode 100644 openlayers/doc/licenses/MIT-LICENSE.txt create mode 100644 openlayers/doc/readme.txt create mode 100644 openlayers/doc/walkthru.html create mode 100644 openlayers/doc_config/Data/ClassHierarchy.nd create mode 100644 openlayers/doc_config/Data/ConfigFileInfo.nd create mode 100644 openlayers/doc_config/Data/FileInfo.nd create mode 100644 openlayers/doc_config/Data/ImageFileInfo.nd create mode 100644 openlayers/doc_config/Data/ImageReferenceTable.nd create mode 100644 openlayers/doc_config/Data/IndexInfo.nd create mode 100644 openlayers/doc_config/Data/PreviousMenuState.nd create mode 100644 openlayers/doc_config/Data/PreviousSettings.nd create mode 100644 openlayers/doc_config/Data/SymbolTable.nd create mode 100644 openlayers/doc_config/Languages.txt create mode 100644 openlayers/doc_config/Menu.txt create mode 100644 openlayers/doc_config/OL.css create mode 100644 openlayers/doc_config/Topics.txt create mode 100644 openlayers/examples/GMLParser.html create mode 100644 openlayers/examples/Jugl.js create mode 100644 openlayers/examples/KMLParser.html create mode 100644 openlayers/examples/WMSDescribeLayerParser.html create mode 100644 openlayers/examples/accessible.html create mode 100644 openlayers/examples/all-overlays.html create mode 100644 openlayers/examples/animated_panning.html create mode 100644 openlayers/examples/animator.js create mode 100644 openlayers/examples/arcgis93rest.html create mode 100644 openlayers/examples/arcims-thematic.html create mode 100644 openlayers/examples/arcims.html create mode 100644 openlayers/examples/attribution.html create mode 100644 openlayers/examples/baseLayers.html create mode 100644 openlayers/examples/behavior-fixed-http-gml.html create mode 100644 openlayers/examples/boxes-vector.html create mode 100644 openlayers/examples/boxes.html create mode 100644 openlayers/examples/browser-name.html create mode 100644 openlayers/examples/buffer.html create mode 100644 openlayers/examples/click-handler.html create mode 100644 openlayers/examples/click.html create mode 100644 openlayers/examples/controls.html create mode 100644 openlayers/examples/custom-control-point.html create mode 100644 openlayers/examples/custom-control.html create mode 100644 openlayers/examples/custom-style.html create mode 100644 openlayers/examples/data/line.json create mode 100644 openlayers/examples/data/point.json create mode 100644 openlayers/examples/data/poly.json create mode 100644 openlayers/examples/data/roads.json create mode 100644 openlayers/examples/debug.html create mode 100644 openlayers/examples/doubleSetCenter.html create mode 100644 openlayers/examples/drag-feature.html create mode 100644 openlayers/examples/draw-feature.html create mode 100644 openlayers/examples/editingtoolbar-outside.html create mode 100644 openlayers/examples/editingtoolbar.html create mode 100644 openlayers/examples/events.html create mode 100644 openlayers/examples/example-list.html create mode 100644 openlayers/examples/example.html create mode 100644 openlayers/examples/filter.html create mode 100644 openlayers/examples/fractional-zoom.html create mode 100644 openlayers/examples/fullScreen.html create mode 100644 openlayers/examples/geojson.html create mode 100644 openlayers/examples/georss-flickr.html create mode 100644 openlayers/examples/georss-markers.html create mode 100644 openlayers/examples/georss.html create mode 100644 openlayers/examples/georss.xml create mode 100644 openlayers/examples/getfeature-wfs.html create mode 100644 openlayers/examples/getfeatureinfo-control.html create mode 100644 openlayers/examples/getfeatureinfo.html create mode 100644 openlayers/examples/gml-layer.html create mode 100644 openlayers/examples/gml/line.xml create mode 100644 openlayers/examples/gml/multipoint.xml create mode 100644 openlayers/examples/gml/multipolygon.xml create mode 100644 openlayers/examples/gml/owls.xml create mode 100644 openlayers/examples/gml/point.xml create mode 100644 openlayers/examples/gml/polygon.xml create mode 100644 openlayers/examples/google-reproject.html create mode 100644 openlayers/examples/google.html create mode 100644 openlayers/examples/graphic-name.html create mode 100644 openlayers/examples/gutter.html create mode 100644 openlayers/examples/highlight-feature.html create mode 100644 openlayers/examples/hover-handler.html create mode 100644 openlayers/examples/image-layer.html create mode 100644 openlayers/examples/intersects.html create mode 100644 openlayers/examples/kamap.html create mode 100644 openlayers/examples/kamap.txt create mode 100644 openlayers/examples/kml-layer.html create mode 100644 openlayers/examples/kml/lines.kml create mode 100644 openlayers/examples/kml/styles.kml create mode 100644 openlayers/examples/kml/sundials.kml create mode 100644 openlayers/examples/late-render.html create mode 100644 openlayers/examples/layer-opacity.html create mode 100644 openlayers/examples/layerLoadMonitoring.html create mode 100644 openlayers/examples/layerswitcher.html create mode 100644 openlayers/examples/lite.html create mode 100644 openlayers/examples/mapguide.html create mode 100644 openlayers/examples/mapserver.html create mode 100644 openlayers/examples/mapserver_untiled.html create mode 100644 openlayers/examples/marker-shadow.html create mode 100644 openlayers/examples/markerResize.html create mode 100755 openlayers/examples/marker_shadow.png create mode 100644 openlayers/examples/markers.html create mode 100644 openlayers/examples/markersTextLayer.html create mode 100644 openlayers/examples/measure.html create mode 100644 openlayers/examples/mm.html create mode 100644 openlayers/examples/modify-feature.html create mode 100644 openlayers/examples/mouse-position.html create mode 100644 openlayers/examples/multimap-mercator.html create mode 100644 openlayers/examples/multiserver.html create mode 100644 openlayers/examples/mvs.html create mode 100644 openlayers/examples/navigation-control.html create mode 100644 openlayers/examples/navigation-history.html create mode 100644 openlayers/examples/navtoolbar-alwaysZoom.html create mode 100644 openlayers/examples/navtoolbar-outsidemap.html create mode 100644 openlayers/examples/navtoolbar.html create mode 100644 openlayers/examples/notile.html create mode 100644 openlayers/examples/openmnnd.html create mode 100644 openlayers/examples/ordering.html create mode 100644 openlayers/examples/osm-layer.html create mode 100644 openlayers/examples/osm/sutton_coldfield.osm create mode 100644 openlayers/examples/outOfRangeMarkers.html create mode 100644 openlayers/examples/outOfRangeMarkers.txt create mode 100644 openlayers/examples/overviewmap.html create mode 100644 openlayers/examples/pan-zoom-panels.html create mode 100644 openlayers/examples/panel.html create mode 100644 openlayers/examples/point-track-markers.html create mode 100644 openlayers/examples/popupMatrix.html create mode 100755 openlayers/examples/popupMatrix.jpg create mode 100644 openlayers/examples/popups.html create mode 100644 openlayers/examples/projected-map.html create mode 100644 openlayers/examples/protocol-gears.html create mode 100755 openlayers/examples/proxy.cgi create mode 100644 openlayers/examples/regular-polygons.html create mode 100644 openlayers/examples/resize-features.html create mode 100644 openlayers/examples/restricted-extent.html create mode 100644 openlayers/examples/rotate-features.html create mode 100644 openlayers/examples/select-feature-multilayer.html create mode 100644 openlayers/examples/select-feature-openpopup.html create mode 100644 openlayers/examples/select-feature.html create mode 100644 openlayers/examples/setextent.html create mode 100644 openlayers/examples/sld.html create mode 100755 openlayers/examples/small.jpg create mode 100644 openlayers/examples/snap-split.html create mode 100644 openlayers/examples/snapping.html create mode 100644 openlayers/examples/spherical-mercator.html create mode 100644 openlayers/examples/split-feature.html create mode 100644 openlayers/examples/strategy-bbox.html create mode 100644 openlayers/examples/strategy-cluster-threshold.html create mode 100644 openlayers/examples/strategy-cluster.html create mode 100644 openlayers/examples/strategy-paging.html create mode 100644 openlayers/examples/style.css create mode 100644 openlayers/examples/stylemap.html create mode 100644 openlayers/examples/styles-context.html create mode 100644 openlayers/examples/styles-rotation.html create mode 100644 openlayers/examples/styles-unique.html create mode 100644 openlayers/examples/sundials-spherical-mercator.html create mode 100644 openlayers/examples/sundials.html create mode 100644 openlayers/examples/symbolizers-fill-stroke-graphic.html create mode 100644 openlayers/examples/tasmania/TasmaniaCities.xml create mode 100644 openlayers/examples/tasmania/TasmaniaRoads.xml create mode 100644 openlayers/examples/tasmania/TasmaniaStateBoundaries.xml create mode 100644 openlayers/examples/tasmania/TasmaniaWaterBodies.xml create mode 100644 openlayers/examples/tasmania/sld-tasmania.xml create mode 100644 openlayers/examples/teleportation.html create mode 100644 openlayers/examples/textfile.txt create mode 100755 openlayers/examples/thinlong.jpg create mode 100644 openlayers/examples/tilecache.html create mode 100644 openlayers/examples/tms.html create mode 100644 openlayers/examples/transition.html create mode 100644 openlayers/examples/urban.html create mode 100644 openlayers/examples/ve-novibrate.html create mode 100644 openlayers/examples/ve.html create mode 100644 openlayers/examples/vector-features-with-text.html create mode 100644 openlayers/examples/vector-features.html create mode 100644 openlayers/examples/vector-formats.html create mode 100644 openlayers/examples/wfs-protocol-transactions.html create mode 100644 openlayers/examples/wfs-protocol.html create mode 100644 openlayers/examples/wfs-reprojection.html create mode 100644 openlayers/examples/wfs-snap-split.html create mode 100644 openlayers/examples/wfs-states.html create mode 100644 openlayers/examples/wfs-t.html create mode 100644 openlayers/examples/wfs.html create mode 100755 openlayers/examples/widelong.jpg create mode 100755 openlayers/examples/wideshort.jpg create mode 100644 openlayers/examples/wmc.html create mode 100644 openlayers/examples/wms-untiled.html create mode 100644 openlayers/examples/wms.html create mode 100644 openlayers/examples/wmst.html create mode 100644 openlayers/examples/worldwind.html create mode 100644 openlayers/examples/wrapDateLine.html create mode 100644 openlayers/examples/xhtml.html create mode 100644 openlayers/examples/xml.html create mode 100644 openlayers/examples/xml/features.xml create mode 100644 openlayers/examples/xml/georss-flickr.xml create mode 100644 openlayers/examples/xml/track1.xml create mode 100644 openlayers/examples/xml/wmsdescribelayer.xml create mode 100644 openlayers/examples/xyz-esri.html create mode 100644 openlayers/examples/yahoo.html create mode 100644 openlayers/examples/yelp-georss.xml create mode 100644 openlayers/examples/zoomLevels.html create mode 100644 openlayers/img/blank.gif create mode 100755 openlayers/img/cloud-popup-relative.png create mode 100644 openlayers/img/drag-rectangle-off.png create mode 100644 openlayers/img/drag-rectangle-on.png create mode 100644 openlayers/img/east-mini.png create mode 100644 openlayers/img/layer-switcher-maximize.png create mode 100644 openlayers/img/layer-switcher-minimize.png create mode 100644 openlayers/img/marker-blue.png create mode 100644 openlayers/img/marker-gold.png create mode 100644 openlayers/img/marker-green.png create mode 100644 openlayers/img/marker.png create mode 100644 openlayers/img/measuring-stick-off.png create mode 100644 openlayers/img/measuring-stick-on.png create mode 100644 openlayers/img/north-mini.png create mode 100644 openlayers/img/panning-hand-off.png create mode 100644 openlayers/img/panning-hand-on.png create mode 100644 openlayers/img/slider.png create mode 100644 openlayers/img/south-mini.png create mode 100644 openlayers/img/west-mini.png create mode 100644 openlayers/img/zoom-minus-mini.png create mode 100644 openlayers/img/zoom-plus-mini.png create mode 100644 openlayers/img/zoom-world-mini.png create mode 100644 openlayers/img/zoombar.png create mode 100644 openlayers/lib/Firebug/errorIcon.png create mode 100644 openlayers/lib/Firebug/firebug.css create mode 100644 openlayers/lib/Firebug/firebug.html create mode 100644 openlayers/lib/Firebug/firebug.js create mode 100644 openlayers/lib/Firebug/firebugx.js create mode 100644 openlayers/lib/Firebug/infoIcon.png create mode 100644 openlayers/lib/Firebug/license.txt create mode 100644 openlayers/lib/Firebug/readme.txt create mode 100644 openlayers/lib/Firebug/warningIcon.png create mode 100644 openlayers/lib/Gears/gears_init.js create mode 100644 openlayers/lib/OpenLayers.js create mode 100644 openlayers/lib/OpenLayers/Ajax.js create mode 100644 openlayers/lib/OpenLayers/BaseTypes.js create mode 100644 openlayers/lib/OpenLayers/BaseTypes/Bounds.js create mode 100644 openlayers/lib/OpenLayers/BaseTypes/Class.js create mode 100644 openlayers/lib/OpenLayers/BaseTypes/Element.js create mode 100644 openlayers/lib/OpenLayers/BaseTypes/LonLat.js create mode 100644 openlayers/lib/OpenLayers/BaseTypes/Pixel.js create mode 100644 openlayers/lib/OpenLayers/BaseTypes/Size.js create mode 100644 openlayers/lib/OpenLayers/Console.js create mode 100644 openlayers/lib/OpenLayers/Control.js create mode 100644 openlayers/lib/OpenLayers/Control/ArgParser.js create mode 100644 openlayers/lib/OpenLayers/Control/Attribution.js create mode 100644 openlayers/lib/OpenLayers/Control/Button.js create mode 100644 openlayers/lib/OpenLayers/Control/DragFeature.js create mode 100644 openlayers/lib/OpenLayers/Control/DragPan.js create mode 100644 openlayers/lib/OpenLayers/Control/DrawFeature.js create mode 100644 openlayers/lib/OpenLayers/Control/EditingToolbar.js create mode 100644 openlayers/lib/OpenLayers/Control/GetFeature.js create mode 100644 openlayers/lib/OpenLayers/Control/KeyboardDefaults.js create mode 100644 openlayers/lib/OpenLayers/Control/LayerSwitcher.js create mode 100644 openlayers/lib/OpenLayers/Control/Measure.js create mode 100644 openlayers/lib/OpenLayers/Control/ModifyFeature.js create mode 100644 openlayers/lib/OpenLayers/Control/MouseDefaults.js create mode 100644 openlayers/lib/OpenLayers/Control/MousePosition.js create mode 100644 openlayers/lib/OpenLayers/Control/MouseToolbar.js create mode 100644 openlayers/lib/OpenLayers/Control/NavToolbar.js create mode 100644 openlayers/lib/OpenLayers/Control/Navigation.js create mode 100644 openlayers/lib/OpenLayers/Control/NavigationHistory.js create mode 100644 openlayers/lib/OpenLayers/Control/OverviewMap.js create mode 100644 openlayers/lib/OpenLayers/Control/Pan.js create mode 100644 openlayers/lib/OpenLayers/Control/PanPanel.js create mode 100644 openlayers/lib/OpenLayers/Control/PanZoom.js create mode 100644 openlayers/lib/OpenLayers/Control/PanZoomBar.js create mode 100644 openlayers/lib/OpenLayers/Control/Panel.js create mode 100644 openlayers/lib/OpenLayers/Control/Permalink.js create mode 100644 openlayers/lib/OpenLayers/Control/Scale.js create mode 100644 openlayers/lib/OpenLayers/Control/ScaleLine.js create mode 100644 openlayers/lib/OpenLayers/Control/SelectFeature.js create mode 100644 openlayers/lib/OpenLayers/Control/Snapping.js create mode 100644 openlayers/lib/OpenLayers/Control/Split.js create mode 100644 openlayers/lib/OpenLayers/Control/WMSGetFeatureInfo.js create mode 100644 openlayers/lib/OpenLayers/Control/ZoomBox.js create mode 100644 openlayers/lib/OpenLayers/Control/ZoomIn.js create mode 100644 openlayers/lib/OpenLayers/Control/ZoomOut.js create mode 100644 openlayers/lib/OpenLayers/Control/ZoomPanel.js create mode 100644 openlayers/lib/OpenLayers/Control/ZoomToMaxExtent.js create mode 100644 openlayers/lib/OpenLayers/Events.js create mode 100644 openlayers/lib/OpenLayers/Feature.js create mode 100644 openlayers/lib/OpenLayers/Feature/Vector.js create mode 100644 openlayers/lib/OpenLayers/Feature/WFS.js create mode 100644 openlayers/lib/OpenLayers/Filter.js create mode 100644 openlayers/lib/OpenLayers/Filter/Comparison.js create mode 100644 openlayers/lib/OpenLayers/Filter/FeatureId.js create mode 100644 openlayers/lib/OpenLayers/Filter/Logical.js create mode 100644 openlayers/lib/OpenLayers/Filter/Spatial.js create mode 100644 openlayers/lib/OpenLayers/Format.js create mode 100644 openlayers/lib/OpenLayers/Format/ArcXML.js create mode 100644 openlayers/lib/OpenLayers/Format/ArcXML/Features.js create mode 100644 openlayers/lib/OpenLayers/Format/Filter.js create mode 100644 openlayers/lib/OpenLayers/Format/Filter/v1.js create mode 100644 openlayers/lib/OpenLayers/Format/Filter/v1_0_0.js create mode 100644 openlayers/lib/OpenLayers/Format/Filter/v1_1_0.js create mode 100644 openlayers/lib/OpenLayers/Format/GML.js create mode 100644 openlayers/lib/OpenLayers/Format/GML/Base.js create mode 100644 openlayers/lib/OpenLayers/Format/GML/v2.js create mode 100644 openlayers/lib/OpenLayers/Format/GML/v3.js create mode 100644 openlayers/lib/OpenLayers/Format/GPX.js create mode 100644 openlayers/lib/OpenLayers/Format/GeoJSON.js create mode 100644 openlayers/lib/OpenLayers/Format/GeoRSS.js create mode 100644 openlayers/lib/OpenLayers/Format/JSON.js create mode 100644 openlayers/lib/OpenLayers/Format/KML.js create mode 100644 openlayers/lib/OpenLayers/Format/OSM.js create mode 100644 openlayers/lib/OpenLayers/Format/SLD.js create mode 100644 openlayers/lib/OpenLayers/Format/SLD/v1.js create mode 100644 openlayers/lib/OpenLayers/Format/SLD/v1_0_0.js create mode 100644 openlayers/lib/OpenLayers/Format/Text.js create mode 100644 openlayers/lib/OpenLayers/Format/WFS.js create mode 100644 openlayers/lib/OpenLayers/Format/WFSCapabilities.js create mode 100644 openlayers/lib/OpenLayers/Format/WFSCapabilities/v1.js create mode 100644 openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_0_0.js create mode 100644 openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_1_0.js create mode 100644 openlayers/lib/OpenLayers/Format/WFSDescribeFeatureType.js create mode 100644 openlayers/lib/OpenLayers/Format/WFST.js create mode 100644 openlayers/lib/OpenLayers/Format/WFST/v1.js create mode 100644 openlayers/lib/OpenLayers/Format/WFST/v1_0_0.js create mode 100644 openlayers/lib/OpenLayers/Format/WFST/v1_1_0.js create mode 100644 openlayers/lib/OpenLayers/Format/WKT.js create mode 100644 openlayers/lib/OpenLayers/Format/WMC.js create mode 100644 openlayers/lib/OpenLayers/Format/WMC/v1.js create mode 100644 openlayers/lib/OpenLayers/Format/WMC/v1_0_0.js create mode 100644 openlayers/lib/OpenLayers/Format/WMC/v1_1_0.js create mode 100644 openlayers/lib/OpenLayers/Format/WMSCapabilities.js create mode 100644 openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1.js create mode 100644 openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1_0.js create mode 100644 openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1_1.js create mode 100644 openlayers/lib/OpenLayers/Format/WMSDescribeLayer.js create mode 100644 openlayers/lib/OpenLayers/Format/WMSDescribeLayer/v1_1.js create mode 100644 openlayers/lib/OpenLayers/Format/WMSGetFeatureInfo.js create mode 100644 openlayers/lib/OpenLayers/Format/XML.js create mode 100644 openlayers/lib/OpenLayers/Geometry.js create mode 100644 openlayers/lib/OpenLayers/Geometry/Collection.js create mode 100644 openlayers/lib/OpenLayers/Geometry/Curve.js create mode 100644 openlayers/lib/OpenLayers/Geometry/LineString.js create mode 100644 openlayers/lib/OpenLayers/Geometry/LinearRing.js create mode 100644 openlayers/lib/OpenLayers/Geometry/MultiLineString.js create mode 100644 openlayers/lib/OpenLayers/Geometry/MultiPoint.js create mode 100644 openlayers/lib/OpenLayers/Geometry/MultiPolygon.js create mode 100644 openlayers/lib/OpenLayers/Geometry/Point.js create mode 100644 openlayers/lib/OpenLayers/Geometry/Polygon.js create mode 100644 openlayers/lib/OpenLayers/Geometry/Rectangle.js create mode 100644 openlayers/lib/OpenLayers/Geometry/Surface.js create mode 100644 openlayers/lib/OpenLayers/Handler.js create mode 100644 openlayers/lib/OpenLayers/Handler/Box.js create mode 100644 openlayers/lib/OpenLayers/Handler/Click.js create mode 100644 openlayers/lib/OpenLayers/Handler/Drag.js create mode 100644 openlayers/lib/OpenLayers/Handler/Feature.js create mode 100644 openlayers/lib/OpenLayers/Handler/Hover.js create mode 100644 openlayers/lib/OpenLayers/Handler/Keyboard.js create mode 100644 openlayers/lib/OpenLayers/Handler/MouseWheel.js create mode 100644 openlayers/lib/OpenLayers/Handler/Path.js create mode 100644 openlayers/lib/OpenLayers/Handler/Point.js create mode 100644 openlayers/lib/OpenLayers/Handler/Polygon.js create mode 100644 openlayers/lib/OpenLayers/Handler/RegularPolygon.js create mode 100644 openlayers/lib/OpenLayers/Icon.js create mode 100644 openlayers/lib/OpenLayers/Lang.js create mode 100644 openlayers/lib/OpenLayers/Lang/ca.js create mode 100644 openlayers/lib/OpenLayers/Lang/cs-CZ.js create mode 100644 openlayers/lib/OpenLayers/Lang/da-DK.js create mode 100644 openlayers/lib/OpenLayers/Lang/de.js create mode 100644 openlayers/lib/OpenLayers/Lang/en-CA.js create mode 100644 openlayers/lib/OpenLayers/Lang/en.js create mode 100644 openlayers/lib/OpenLayers/Lang/es.js create mode 100644 openlayers/lib/OpenLayers/Lang/fr.js create mode 100644 openlayers/lib/OpenLayers/Lang/it.js create mode 100644 openlayers/lib/OpenLayers/Lang/nb.js create mode 100644 openlayers/lib/OpenLayers/Lang/nl.js create mode 100644 openlayers/lib/OpenLayers/Lang/pt-BR.js create mode 100644 openlayers/lib/OpenLayers/Lang/sv-SE.js create mode 100644 openlayers/lib/OpenLayers/Lang/zh-CN.js create mode 100644 openlayers/lib/OpenLayers/Lang/zh-TW.js create mode 100644 openlayers/lib/OpenLayers/Layer.js create mode 100644 openlayers/lib/OpenLayers/Layer/ArcGIS93Rest.js create mode 100644 openlayers/lib/OpenLayers/Layer/ArcIMS.js create mode 100644 openlayers/lib/OpenLayers/Layer/Boxes.js create mode 100644 openlayers/lib/OpenLayers/Layer/EventPane.js create mode 100644 openlayers/lib/OpenLayers/Layer/FixedZoomLevels.js create mode 100644 openlayers/lib/OpenLayers/Layer/GML.js create mode 100644 openlayers/lib/OpenLayers/Layer/GeoRSS.js create mode 100644 openlayers/lib/OpenLayers/Layer/Google.js create mode 100644 openlayers/lib/OpenLayers/Layer/Grid.js create mode 100644 openlayers/lib/OpenLayers/Layer/HTTPRequest.js create mode 100644 openlayers/lib/OpenLayers/Layer/Image.js create mode 100644 openlayers/lib/OpenLayers/Layer/KaMap.js create mode 100644 openlayers/lib/OpenLayers/Layer/KaMapCache.js create mode 100644 openlayers/lib/OpenLayers/Layer/MapGuide.js create mode 100644 openlayers/lib/OpenLayers/Layer/MapServer.js create mode 100644 openlayers/lib/OpenLayers/Layer/MapServer/Untiled.js create mode 100644 openlayers/lib/OpenLayers/Layer/Markers.js create mode 100644 openlayers/lib/OpenLayers/Layer/MultiMap.js create mode 100644 openlayers/lib/OpenLayers/Layer/PointTrack.js create mode 100644 openlayers/lib/OpenLayers/Layer/SphericalMercator.js create mode 100644 openlayers/lib/OpenLayers/Layer/TMS.js create mode 100644 openlayers/lib/OpenLayers/Layer/Text.js create mode 100644 openlayers/lib/OpenLayers/Layer/TileCache.js create mode 100644 openlayers/lib/OpenLayers/Layer/Vector.js create mode 100644 openlayers/lib/OpenLayers/Layer/Vector/RootContainer.js create mode 100644 openlayers/lib/OpenLayers/Layer/VirtualEarth.js create mode 100644 openlayers/lib/OpenLayers/Layer/WFS.js create mode 100644 openlayers/lib/OpenLayers/Layer/WMS.js create mode 100644 openlayers/lib/OpenLayers/Layer/WMS/Untiled.js create mode 100644 openlayers/lib/OpenLayers/Layer/WorldWind.js create mode 100644 openlayers/lib/OpenLayers/Layer/XYZ.js create mode 100644 openlayers/lib/OpenLayers/Layer/Yahoo.js create mode 100644 openlayers/lib/OpenLayers/Map.js create mode 100644 openlayers/lib/OpenLayers/Marker.js create mode 100644 openlayers/lib/OpenLayers/Marker/Box.js create mode 100644 openlayers/lib/OpenLayers/Popup.js create mode 100644 openlayers/lib/OpenLayers/Popup/Anchored.js create mode 100644 openlayers/lib/OpenLayers/Popup/AnchoredBubble.js create mode 100644 openlayers/lib/OpenLayers/Popup/Framed.js create mode 100644 openlayers/lib/OpenLayers/Popup/FramedCloud.js create mode 100644 openlayers/lib/OpenLayers/Projection.js create mode 100755 openlayers/lib/OpenLayers/Protocol.js create mode 100644 openlayers/lib/OpenLayers/Protocol/HTTP.js create mode 100644 openlayers/lib/OpenLayers/Protocol/SQL.js create mode 100644 openlayers/lib/OpenLayers/Protocol/SQL/Gears.js create mode 100644 openlayers/lib/OpenLayers/Protocol/WFS.js create mode 100644 openlayers/lib/OpenLayers/Protocol/WFS/v1.js create mode 100644 openlayers/lib/OpenLayers/Protocol/WFS/v1_0_0.js create mode 100644 openlayers/lib/OpenLayers/Protocol/WFS/v1_1_0.js create mode 100644 openlayers/lib/OpenLayers/Renderer.js create mode 100644 openlayers/lib/OpenLayers/Renderer/Canvas.js create mode 100644 openlayers/lib/OpenLayers/Renderer/Elements.js create mode 100644 openlayers/lib/OpenLayers/Renderer/SVG.js create mode 100644 openlayers/lib/OpenLayers/Renderer/VML.js create mode 100644 openlayers/lib/OpenLayers/Request.js create mode 100644 openlayers/lib/OpenLayers/Request/XMLHttpRequest.js create mode 100644 openlayers/lib/OpenLayers/Rule.js create mode 100644 openlayers/lib/OpenLayers/SingleFile.js create mode 100755 openlayers/lib/OpenLayers/Strategy.js create mode 100644 openlayers/lib/OpenLayers/Strategy/BBOX.js create mode 100644 openlayers/lib/OpenLayers/Strategy/Cluster.js create mode 100644 openlayers/lib/OpenLayers/Strategy/Fixed.js create mode 100644 openlayers/lib/OpenLayers/Strategy/Paging.js create mode 100644 openlayers/lib/OpenLayers/Strategy/Save.js create mode 100644 openlayers/lib/OpenLayers/Style.js create mode 100644 openlayers/lib/OpenLayers/StyleMap.js create mode 100644 openlayers/lib/OpenLayers/Tile.js create mode 100644 openlayers/lib/OpenLayers/Tile/Image.js create mode 100644 openlayers/lib/OpenLayers/Tile/WFS.js create mode 100644 openlayers/lib/OpenLayers/Tween.js create mode 100644 openlayers/lib/OpenLayers/Util.js create mode 100644 openlayers/lib/Rico/Color.js create mode 100644 openlayers/lib/Rico/Corner.js create mode 100644 openlayers/license.txt create mode 100644 openlayers/news.txt create mode 100644 openlayers/readme.txt create mode 100644 openlayers/release-license.txt create mode 100644 openlayers/repository-license.txt create mode 100644 openlayers/tests/Ajax.html create mode 100644 openlayers/tests/BaseTypes.html create mode 100644 openlayers/tests/BaseTypes/Bounds.html create mode 100644 openlayers/tests/BaseTypes/Class.html create mode 100644 openlayers/tests/BaseTypes/Element.html create mode 100644 openlayers/tests/BaseTypes/LonLat.html create mode 100644 openlayers/tests/BaseTypes/Pixel.html create mode 100644 openlayers/tests/BaseTypes/Size.html create mode 100644 openlayers/tests/Console.html create mode 100644 openlayers/tests/Control.html create mode 100644 openlayers/tests/Control/Attribution.html create mode 100644 openlayers/tests/Control/Button.html create mode 100644 openlayers/tests/Control/DragFeature.html create mode 100644 openlayers/tests/Control/DragPan.html create mode 100644 openlayers/tests/Control/DrawFeature.html create mode 100644 openlayers/tests/Control/GetFeature.html create mode 100644 openlayers/tests/Control/KeyboardDefaults.html create mode 100644 openlayers/tests/Control/LayerSwitcher.html create mode 100644 openlayers/tests/Control/Measure.html create mode 100644 openlayers/tests/Control/ModifyFeature.html create mode 100644 openlayers/tests/Control/MousePosition.html create mode 100644 openlayers/tests/Control/MouseToolbar.html create mode 100644 openlayers/tests/Control/NavToolbar.html create mode 100644 openlayers/tests/Control/Navigation.html create mode 100644 openlayers/tests/Control/NavigationHistory.html create mode 100644 openlayers/tests/Control/OverviewMap.html create mode 100644 openlayers/tests/Control/PanZoom.html create mode 100644 openlayers/tests/Control/PanZoomBar.html create mode 100644 openlayers/tests/Control/Panel.html create mode 100644 openlayers/tests/Control/Permalink.html create mode 100644 openlayers/tests/Control/Scale.html create mode 100644 openlayers/tests/Control/ScaleLine.html create mode 100644 openlayers/tests/Control/SelectFeature.html create mode 100644 openlayers/tests/Control/Snapping.html create mode 100644 openlayers/tests/Control/Split.html create mode 100644 openlayers/tests/Control/WMSGetFeatureInfo.html create mode 100644 openlayers/tests/Events.html create mode 100644 openlayers/tests/Extras.html create mode 100644 openlayers/tests/Feature.html create mode 100644 openlayers/tests/Feature/Vector.html create mode 100644 openlayers/tests/Filter.html create mode 100644 openlayers/tests/Filter/Comparison.html create mode 100644 openlayers/tests/Filter/FeatureId.html create mode 100644 openlayers/tests/Filter/Logical.html create mode 100644 openlayers/tests/Filter/Spatial.html create mode 100644 openlayers/tests/Format.html create mode 100644 openlayers/tests/Format/ArcXML.html create mode 100644 openlayers/tests/Format/ArcXML/Features.html create mode 100644 openlayers/tests/Format/Filter.html create mode 100644 openlayers/tests/Format/Filter/v1.html create mode 100644 openlayers/tests/Format/Filter/v1_0_0.html create mode 100644 openlayers/tests/Format/Filter/v1_1_0.html create mode 100644 openlayers/tests/Format/GML.html create mode 100644 openlayers/tests/Format/GML/cases.js create mode 100644 openlayers/tests/Format/GML/v2.html create mode 100644 openlayers/tests/Format/GML/v3.html create mode 100644 openlayers/tests/Format/GPX.html create mode 100644 openlayers/tests/Format/GeoJSON.html create mode 100644 openlayers/tests/Format/GeoRSS.html create mode 100644 openlayers/tests/Format/JSON.html create mode 100644 openlayers/tests/Format/KML.html create mode 100644 openlayers/tests/Format/OSM.html create mode 100644 openlayers/tests/Format/SLD.html create mode 100644 openlayers/tests/Format/SLD/v1_0_0.html create mode 100644 openlayers/tests/Format/Text.html create mode 100644 openlayers/tests/Format/WFS.html create mode 100644 openlayers/tests/Format/WFSCapabilities.html create mode 100644 openlayers/tests/Format/WFSCapabilities/v1.html create mode 100644 openlayers/tests/Format/WFSDescribeFeatureType.html create mode 100644 openlayers/tests/Format/WFST.html create mode 100644 openlayers/tests/Format/WFST/v1.html create mode 100644 openlayers/tests/Format/WFST/v1_0_0.html create mode 100644 openlayers/tests/Format/WFST/v1_1_0.html create mode 100644 openlayers/tests/Format/WKT.html create mode 100644 openlayers/tests/Format/WMC.html create mode 100644 openlayers/tests/Format/WMC/v1.html create mode 100644 openlayers/tests/Format/WMC/v1_1_0.html create mode 100644 openlayers/tests/Format/WMSCapabilities.html create mode 100644 openlayers/tests/Format/WMSCapabilities/v1_1_1.html create mode 100644 openlayers/tests/Format/WMSCapabilities/v1_1_1.js create mode 100644 openlayers/tests/Format/WMSDescribeLayer.html create mode 100644 openlayers/tests/Format/WMSGetFeatureInfo.html create mode 100644 openlayers/tests/Format/XML.html create mode 100644 openlayers/tests/Geometry.html create mode 100644 openlayers/tests/Geometry/Collection.html create mode 100644 openlayers/tests/Geometry/Curve.html create mode 100644 openlayers/tests/Geometry/LineString.html create mode 100644 openlayers/tests/Geometry/LinearRing.html create mode 100644 openlayers/tests/Geometry/MultiLineString.html create mode 100644 openlayers/tests/Geometry/MultiPoint.html create mode 100644 openlayers/tests/Geometry/MultiPolygon.html create mode 100644 openlayers/tests/Geometry/Point.html create mode 100644 openlayers/tests/Geometry/Polygon.html create mode 100644 openlayers/tests/Geometry/Rectangle.html create mode 100644 openlayers/tests/Geometry/Surface.html create mode 100644 openlayers/tests/Handler.html create mode 100644 openlayers/tests/Handler/Click.html create mode 100644 openlayers/tests/Handler/Drag.html create mode 100644 openlayers/tests/Handler/Feature.html create mode 100644 openlayers/tests/Handler/Hover.html create mode 100644 openlayers/tests/Handler/Keyboard.html create mode 100644 openlayers/tests/Handler/MouseWheel.html create mode 100644 openlayers/tests/Handler/Path.html create mode 100644 openlayers/tests/Handler/Point.html create mode 100644 openlayers/tests/Handler/Polygon.html create mode 100644 openlayers/tests/Handler/RegularPolygon.html create mode 100644 openlayers/tests/Icon.html create mode 100644 openlayers/tests/Lang.html create mode 100644 openlayers/tests/Layer.html create mode 100644 openlayers/tests/Layer/ArcGIS93Rest.html create mode 100644 openlayers/tests/Layer/ArcIMS.html create mode 100644 openlayers/tests/Layer/EventPane.html create mode 100644 openlayers/tests/Layer/FixedZoomLevels.html create mode 100644 openlayers/tests/Layer/GML.html create mode 100644 openlayers/tests/Layer/GeoRSS.html create mode 100644 openlayers/tests/Layer/Google.html create mode 100644 openlayers/tests/Layer/Grid.html create mode 100644 openlayers/tests/Layer/HTTPRequest.html create mode 100644 openlayers/tests/Layer/Image.html create mode 100644 openlayers/tests/Layer/KaMap.html create mode 100644 openlayers/tests/Layer/MapGuide.html create mode 100644 openlayers/tests/Layer/MapServer.html create mode 100644 openlayers/tests/Layer/Markers.html create mode 100644 openlayers/tests/Layer/MultiMap.html create mode 100644 openlayers/tests/Layer/PointTrack.html create mode 100644 openlayers/tests/Layer/SphericalMercator.html create mode 100644 openlayers/tests/Layer/TMS.html create mode 100644 openlayers/tests/Layer/Text.html create mode 100644 openlayers/tests/Layer/TileCache.html create mode 100644 openlayers/tests/Layer/Vector.html create mode 100644 openlayers/tests/Layer/Vector/RootContainer.html create mode 100644 openlayers/tests/Layer/WFS.html create mode 100644 openlayers/tests/Layer/WMS.html create mode 100644 openlayers/tests/Layer/WrapDateLine.html create mode 100644 openlayers/tests/Layer/XYZ.html create mode 100755 openlayers/tests/Layer/Yahoo.html create mode 100644 openlayers/tests/Layer/atom-1.0.xml create mode 100644 openlayers/tests/Layer/data_Layer_Text_textfile.txt create mode 100644 openlayers/tests/Layer/data_Layer_Text_textfile_2.txt create mode 100644 openlayers/tests/Layer/data_Layer_Text_textfile_overflow.txt create mode 100644 openlayers/tests/Layer/georss.txt create mode 100644 openlayers/tests/Layer/mice.xml create mode 100644 openlayers/tests/Layer/owls.xml create mode 100644 openlayers/tests/Map.html create mode 100644 openlayers/tests/Marker.html create mode 100644 openlayers/tests/Marker/Box.html create mode 100644 openlayers/tests/OpenLayers.html create mode 100644 openlayers/tests/Popup.html create mode 100644 openlayers/tests/Popup/Anchored.html create mode 100644 openlayers/tests/Popup/AnchoredBubble.html create mode 100644 openlayers/tests/Popup/FramedCloud.html create mode 100644 openlayers/tests/Projection.html create mode 100644 openlayers/tests/Protocol.html create mode 100644 openlayers/tests/Protocol/HTTP.html create mode 100644 openlayers/tests/Protocol/SQL.html create mode 100644 openlayers/tests/Protocol/SQL/Gears.html create mode 100644 openlayers/tests/Protocol/WFS.html create mode 100644 openlayers/tests/README.txt create mode 100644 openlayers/tests/Renderer.html create mode 100644 openlayers/tests/Renderer/Canvas.html create mode 100644 openlayers/tests/Renderer/Elements.html create mode 100644 openlayers/tests/Renderer/SVG.html create mode 100644 openlayers/tests/Renderer/VML.html create mode 100644 openlayers/tests/Request.html create mode 100644 openlayers/tests/Request/XMLHttpRequest.html create mode 100644 openlayers/tests/Rule.html create mode 100644 openlayers/tests/Strategy.html create mode 100644 openlayers/tests/Strategy/BBOX.html create mode 100644 openlayers/tests/Strategy/Cluster.html create mode 100644 openlayers/tests/Strategy/Fixed.html create mode 100644 openlayers/tests/Strategy/Paging.html create mode 100644 openlayers/tests/Strategy/Save.html create mode 100644 openlayers/tests/Style.html create mode 100644 openlayers/tests/StyleMap.html create mode 100644 openlayers/tests/Tile.html create mode 100644 openlayers/tests/Tile/Image.html create mode 100644 openlayers/tests/Tile/WFS.html create mode 100644 openlayers/tests/Tween.html create mode 100644 openlayers/tests/Util.html create mode 100644 openlayers/tests/atom-1.0.xml create mode 100644 openlayers/tests/auto-tests.html create mode 100644 openlayers/tests/data/geos_wkt_intersects.js create mode 100644 openlayers/tests/data/osm.js create mode 100644 openlayers/tests/data_Layer_Text_textfile.txt create mode 100644 openlayers/tests/data_Layer_Text_textfile_2.txt create mode 100644 openlayers/tests/data_Layer_Text_textfile_overflow.txt create mode 100644 openlayers/tests/geom_eq.js create mode 100644 openlayers/tests/georss.txt create mode 100644 openlayers/tests/grid_inittiles.html create mode 100644 openlayers/tests/index.html create mode 100644 openlayers/tests/list-tests.html create mode 100644 openlayers/tests/manual/ajax.html create mode 100644 openlayers/tests/manual/ajax.txt create mode 100644 openlayers/tests/manual/arcims-2117.html create mode 100644 openlayers/tests/manual/arkansas.rss create mode 100644 openlayers/tests/manual/big-georss.html create mode 100644 openlayers/tests/manual/clip-features-svg.html create mode 100644 openlayers/tests/manual/draw-feature.html create mode 100644 openlayers/tests/manual/feature-handler.html create mode 100644 openlayers/tests/manual/geojson-geomcoll-reprojection.html create mode 100644 openlayers/tests/manual/google-panning.html create mode 100644 openlayers/tests/manual/overviewmap-projection.html create mode 100644 openlayers/tests/manual/pan-redraw-svg.html create mode 100644 openlayers/tests/manual/popup-keepInMap.html create mode 100644 openlayers/tests/manual/reflow.html create mode 100644 openlayers/tests/manual/rendered-dimensions.html create mode 100644 openlayers/tests/manual/renderedDimensions.html create mode 100644 openlayers/tests/manual/select-feature.html create mode 100644 openlayers/tests/manual/tiles-loading.html create mode 100644 openlayers/tests/manual/tween.html create mode 100644 openlayers/tests/manual/ve-opacity.html create mode 100644 openlayers/tests/manual/vector-features-performance.html create mode 100644 openlayers/tests/manual/vector-layer-zindex.html create mode 100644 openlayers/tests/mice.xml create mode 100644 openlayers/tests/owls.xml create mode 100644 openlayers/tests/run-tests.html create mode 100644 openlayers/tests/selenium/remotecontrol/config.cfg create mode 100644 openlayers/tests/selenium/remotecontrol/selenium.py create mode 100644 openlayers/tests/selenium/remotecontrol/setup.txt create mode 100644 openlayers/tests/selenium/remotecontrol/test_ol.py create mode 100644 openlayers/tests/speed/geometry.html create mode 100644 openlayers/tests/speed/string_format.html create mode 100644 openlayers/tests/speed/wmc_speed.html create mode 100644 openlayers/tests/throws.js create mode 100644 openlayers/tests/xml_eq.js create mode 100644 openlayers/theme/default/framedCloud.css create mode 100644 openlayers/theme/default/google.css create mode 100755 openlayers/theme/default/ie6-style.css create mode 100644 openlayers/theme/default/img/add_point_off.png create mode 100644 openlayers/theme/default/img/add_point_on.png create mode 100644 openlayers/theme/default/img/blank.gif create mode 100644 openlayers/theme/default/img/close.gif create mode 100644 openlayers/theme/default/img/drag-rectangle-off.png create mode 100644 openlayers/theme/default/img/drag-rectangle-on.png create mode 100644 openlayers/theme/default/img/draw_line_off.png create mode 100644 openlayers/theme/default/img/draw_line_on.png create mode 100644 openlayers/theme/default/img/draw_point_off.png create mode 100644 openlayers/theme/default/img/draw_point_on.png create mode 100644 openlayers/theme/default/img/draw_polygon_off.png create mode 100644 openlayers/theme/default/img/draw_polygon_on.png create mode 100644 openlayers/theme/default/img/editing_tool_bar.png create mode 100644 openlayers/theme/default/img/move_feature_off.png create mode 100644 openlayers/theme/default/img/move_feature_on.png create mode 100644 openlayers/theme/default/img/navigation_history.png create mode 100644 openlayers/theme/default/img/overview_replacement.gif create mode 100755 openlayers/theme/default/img/pan-panel-NOALPHA.png create mode 100755 openlayers/theme/default/img/pan-panel.png create mode 100644 openlayers/theme/default/img/pan_off.png create mode 100644 openlayers/theme/default/img/pan_on.png create mode 100644 openlayers/theme/default/img/panning-hand-off.png create mode 100644 openlayers/theme/default/img/panning-hand-on.png create mode 100644 openlayers/theme/default/img/remove_point_off.png create mode 100644 openlayers/theme/default/img/remove_point_on.png create mode 100644 openlayers/theme/default/img/ruler.png create mode 100644 openlayers/theme/default/img/save_features_off.png create mode 100644 openlayers/theme/default/img/save_features_on.png create mode 100644 openlayers/theme/default/img/view_next_off.png create mode 100644 openlayers/theme/default/img/view_next_on.png create mode 100644 openlayers/theme/default/img/view_previous_off.png create mode 100644 openlayers/theme/default/img/view_previous_on.png create mode 100755 openlayers/theme/default/img/zoom-panel-NOALPHA.png create mode 100755 openlayers/theme/default/img/zoom-panel.png create mode 100644 openlayers/theme/default/style.css create mode 100644 openlayers/tools/BeautifulSoup.py create mode 100644 openlayers/tools/README.txt create mode 100755 openlayers/tools/exampleparser.py create mode 100644 openlayers/tools/jsmin.c create mode 100755 openlayers/tools/jsmin.py create mode 100644 openlayers/tools/jsmin.pyc create mode 100755 openlayers/tools/mergejs.py create mode 100644 openlayers/tools/mergejs.pyc create mode 100644 openlayers/tools/minimize.py create mode 100644 openlayers/tools/oldot.py create mode 100755 openlayers/tools/release.sh create mode 100755 openlayers/tools/shrinksafe.py create mode 100644 openlayers/tools/toposort.py create mode 100644 openlayers/tools/toposort.pyc create mode 100755 openlayers/tools/update_dev_dir.sh create mode 100644 syp.cfg create mode 120000 theme create mode 100644 wizard.php diff --git a/COPYING.txt b/COPYING.txt new file mode 100644 index 0000000..ad60c4f --- /dev/null +++ b/COPYING.txt @@ -0,0 +1,47 @@ +- Show Your Places is available under the modified bsd license, and can be used + and redistributed under the conditions of this license. A copy of modified + besd license is included in this file. + +- OpenLayers is available under a BSD-style License. A copy of its license + should be available at http://svn.openlayers.org/trunk/openlayers/license.txt + +- Jquery is available under both MIT and GPL licences. More informations can be + found at http://docs.jquery.com/Licensing + +- newimage_throbber.gif and pwd_throbber.gif files have been generated with + http://ajaxload.info/ generator and are free for use. + + + +=============================================================================== + +Software License Agreement (BSD License) + +Copyright (c) 2009, Arnaud Renevier +All rights reserved. + +Redistribution and use of this software in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of Arnaud Renevier nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of Parakey Inc. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..b1f096f --- /dev/null +++ b/README.txt @@ -0,0 +1,23 @@ +Show Your Places (SYP) is a web CMS whose goal is to manage a pictures or +photos collection with geographic location. The website shows a map with +markers matching picture locations. When selecting a marker, visitors can see +image and its description. + +Requirements +------------ +- php5 +- mysql extension for php +- mysql must support spatial extension; mysql version must be >= 4.1 for MyISAM + tables or >= 5.0.16 for other tables. I assumed it would not be a problem. + If that's a problem for you, send me a mail, and I'll do without spatial + support. + +Installation +------------ +edit inc/settings.php +open http://yoururl.com/wizard.php +follow instructions + +Author +------ +Arno Renevier diff --git a/admin.php b/admin.php new file mode 100644 index 0000000..02a5645 --- /dev/null +++ b/admin.php @@ -0,0 +1,157 @@ +connect (DBHOST, DBUSER, DBPWD, DBNAME, DBPREFIX); + $usrtblexists = $connection->users_table_exists (); + $itemstblexists = $connection->items_table_exists (); +} catch (Exception $e) { + $error = true; +} +if (!$usrtblexists || !$itemstblexists) { + $error = true; +} + if ($error) { +?> + + + + + SYP admin + + + +

SYP n'est pas correctement installé. Veuillez + consulter le fichier README.txt et suivez les instructions + d'installation.

+ + + + + + + + SYP admin + + + + + + + + + + + + + + + + + + +
+ +

Déconnexion

+ + +

.

+ +
+
+
+
+
+
+ +
+ +
+ fermer +
+ + +
+

+ Upload en cours + throbber +

+ +

+

+
+ +
+

Pour modifier les données d'une photo, sélectionnez le marqueur correspondant

+

Vous pouvez déplacer le marqueur en effectuant un glisser-déposer

+ +

+
+ + +
checkpwdmd5 ("admin", $_COOKIE [$cookie_name])) { + echo ' class="hidden"'; + } + } + ?>> +
+
+
+
+ + + + + +
+

+ +

+

+ Connexion en cours + throbber +

+

+

Le mot de passe n'est pas correct

+
+
+
+ + + + diff --git a/auth.php b/auth.php new file mode 100644 index 0000000..4a43a22 --- /dev/null +++ b/auth.php @@ -0,0 +1,47 @@ +connect (DBHOST, DBUSER, DBPWD, DBNAME, DBPREFIX); + if ($con->checkpwdmd5 ("admin", md5 ($pwd))) { + // cookie will be valid for 2 weeks. I've chosen that value + // arbitrarily, and it may change in the future. + $time = time () + 14 * 60 * 24 * 60; + $cookie_name = sprintf ("%sauth", DBPREFIX); + setcookie ($cookie_name, md5 ($pwd), $time, "" , "", false, true); + access_allowed (); + } else { + access_denied (); + } +} + +if ($_GET ["logout"] == "true" || $_GET ["logout"] == "1") { + logout (); +} + +try { + main ($connection); +} catch (Exception $e) { + access_denied (); +} +?> diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..92873f5 --- /dev/null +++ b/build.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +set -e + +PROJVERS=0.0.1 +PROJNAME=syp + +BUILDDIR=${1:-build} +DESTDIR=${BUILDDIR}/${PROJNAME}-${PROJVERS} + +rm -rf $BUILDDIR +mkdir -p $DESTDIR + +# php includes +cp -RLp inc/ $DESTDIR/ + +# other php files +cp -p admin.php auth.php changes.php index.php items.php wizard.php $DESTDIR/ + +# media +cp -RLp media/ $DESTDIR/ + +# openlayers +mkdir -p $DESTDIR/openlayers +cd openlayers/build/ +python build.py ../../syp.cfg +cd ../../ +cp -RLp openlayers/build/OpenLayers.js $DESTDIR/openlayers/ +cp -RLp openlayers/img/ $DESTDIR/openlayers/ +cp -RLp openlayers/theme/ $DESTDIR/openlayers/ + +# other javascript +cp -RLp js/ $DESTDIR/ + +# replace jquery with minified version +for file in $DESTDIR/js/jquery-*.min.js; do + jversion=${file##$DESTDIR/js/jquery-} + jversion=${jversion%%\.min\.js} + mv $file $DESTDIR/js/jquery-$jversion.js +done + +# copyright and readme files +cp -p license.txt README.txt COPYING.txt $DESTDIR/ + +# creates upload directory +mkdir $DESTDIR/upload +chmod a+wx $DESTDIR/upload + +# generate sources +cd $BUILDDIR +tar -pczf ${PROJNAME}_${PROJVERS}.tar.gz ${PROJNAME}-${PROJVERS} +zip -r ${PROJNAME}_${PROJVERS}.zip ${PROJNAME}-${PROJVERS} +cd .. diff --git a/changes.php b/changes.php new file mode 100644 index 0000000..9c157ae --- /dev/null +++ b/changes.php @@ -0,0 +1,138 @@ +imgurl_exists ($filename)) { + return $filename; + } else { + $counter++; + $filename = $dirname . '/' . $base . '_' . $counter . '.' . $ext; + } + } + // we tried to find an unused filename 1000 times. Give up now. + return null; +} + +function checkimgupload ($file) { + if (!is_uploaded_file ($file ["tmp_name"])) { + if ($file ["error"] == UPLOAD_ERR_INI_SIZE) { + file_too_big_error (); + } else { + request_error (); + } + } + if (!getimagesize ($file ["tmp_name"])) { + notanimage_error (); + } +} + +function main ($con) { + if (isset ($_FILES ["newimage_input"])) { + $file = $_FILES ["newimage_input"]; + checkimgupload ($file); + + $dest = unique_file (UPLOADDIR, $file ["name"], $con); + if (!isset ($dest) || + (!move_uploaded_file ($file ["tmp_name"], $dest))) { + server_error (); + } + + exit (sprintf ("

request accepted

+

%s

", + rawurlencode ($dest))); + } else if (isset ($_POST ["feature_imgurl"])) { + $imgurl = rawurldecode (unquote ($_POST ["feature_imgurl"])); + $title = unquote ($_POST ["feature_title"]); + $description = unquote ($_POST ["feature_description"]); + $lon = $_POST ["feature_lon"]; + $lat = $_POST ["feature_lat"]; + + try { + $feature = new feature ($imgurl, $title, $description, $lon, $lat); + } catch (Exception $e) { + switch ($e->getMessage ()) { + case $feature->err_lonlat_invalid: + request_error (); + default: + server_error (); + } + } + + try { + if (!$con->save_feature ($feature)) { + feature_unavailable (); + } + } catch (Exception $e) { + server_error (); + } + + request_success (); + } else if (isset ($_POST ["feature_delete"])) { + $imgurl = rawurldecode (unquote ($_POST ["feature_delete"])); + $feature = $con->getfeature ($imgurl); + if (!isset ($feature)) { + feature_unavailable (); + } + + try { + $con->delete_feature ($feature); + } catch (Exception $e) { + server_error (); + } + + request_success (); + } else if (isset ($_POST ["imgurl_delete_0"])) { + $idx = 0; + while (isset ($_POST ["imgurl_delete_" . $idx])) { + $imgurl = rawurldecode (unquote ($_POST ["imgurl_delete_" . $idx])); + if (!$con->imgurl_exists ($imgurl)) { + if (file_exists ($imgurl)) { + unlink ($imgurl); + } else { + $fname = relative_path ($imgurl); + if (file_exists ($fname)) { + unlink ($fname); + } + } + } + $idx++; + } + } else { + request_error (); + } +} + +try { + $connection->connect (DBHOST, DBUSER, DBPWD, DBNAME, DBPREFIX); +} catch (Exception $e) { + server_error (); +} +$cookie_name = sprintf ("%sauth", DBPREFIX); +if (!isset ($_COOKIE [$cookie_name]) || + !$connection->checkpwdmd5 ("admin", $_COOKIE [$cookie_name])) { + access_denied (); +} + +main ($connection) +?> diff --git a/img b/img new file mode 120000 index 0000000..15a761c --- /dev/null +++ b/img @@ -0,0 +1 @@ +openlayers/img/ \ No newline at end of file diff --git a/inc/.htaccess b/inc/.htaccess new file mode 100644 index 0000000..14249c5 --- /dev/null +++ b/inc/.htaccess @@ -0,0 +1 @@ +Deny from all \ No newline at end of file diff --git a/inc/db/anydb.php b/inc/db/anydb.php new file mode 100644 index 0000000..7706506 --- /dev/null +++ b/inc/db/anydb.php @@ -0,0 +1,189 @@ +imgurl = $relpath; + } else { + $this->imgurl = $imgurl; + } + + // title + $this->title = $title; + + // description + $this->description = $description; + + // longitude + if (!isset ($lon) || !is_numeric ($lon) || + ($lon < -180) || ($lon > 180)) { + throw new Exception ($this->err_lonlat_invalid); + } + $this->lon = $lon; + + // latitude + if (!isset ($lat) || !is_numeric ($lat) || + ($lat < -90) || ($lat > 90)) { + throw new Exception ($this->err_lonlat_invalid); + } + $this->lat = $lat; + } + + public function __get ($attr) { + if (isset ($this->$attr)) return $this->$attr; + else throw new Exception ('Unknow attribute '.$attr); + } + + public function __set ($attr,$value) { + throw new Exception ('properties can only be set in constructor'); + } + + public function imgurl_exists () { + if (file_exists ($this->imgurl)) { + return true; + } + if (!function_exists ("curl_init")) { + return false; + } + $handle = curl_init ($this->imgurl); + if ($handle === false) + { + return false; + } + curl_setopt ($handle, CURLOPT_NOBODY, true); + curl_setopt ($handle, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt ($handle, CURLOPT_TIMEOUT, 10); + $connectable = curl_exec ($handle); + curl_close ($handle); + return $connectable; + } +} + +interface anydbConnection { + const err_driver_unavailable = 1; + const err_connection = 2; + const err_unknown_database = 3; + const err_query = 3; + + /* + * connect to database; That method may be called multiple times. + */ + public function connect($host, $user, $pwd, $dbname, $dbprefix); + + /* + * return true if users table already exists + */ + public function users_table_exists(); + + /* + * create users table; if $error_if_exists is true; throws an err_query + * error in case users table already exists. + */ + public function create_users_table($error_if_exists); + + /* + * return true if items table already exists + */ + public function items_table_exists(); + + /* + * create items table; if $error_if_exists is true; throws an err_query + * error in case items table already exists. + */ + public function create_items_table($error_if_exists); + + /* + * set password $pwd for user $usrname. If $usrname does not exist, create + * it. + */ + public function setpwd($usrname, $pwd); + + /* + * check that $pwd_md5 is md5 for $username password. + */ + public function checkpwdmd5($usrname, $pwd_md5); + + /* + * saves feature in database. Returns false if $feature does not exist and + * if $feature->imgurl is not accessible; returns true otherwise. + */ + public function save_feature($feature); + + /* + * delete feature from database. Returns true in case of success, even if + * image was not referenced in the database. + */ + public function delete_feature($feature); + + /* + * Returns feature with given imgurl. If none exists, returns null. + */ + public function getfeature($imgurl); + + /* + * returns an array of available features + */ + public function listfeatures(); + + /* + * returns true if a feature with imgurl exists + */ + public function imgurl_exists($imgurl); + + /* + * returns Minimum Bounding Rectangle containing all feature locations. + * That function must return a result even if database is not functional. + * Minimum Bounding Rectangle is presented as an Array: + * [bottom, left, top, right] + */ + public function mbr(); + + /* + * get name of database backend + */ + public function getdbname(); +} +?> diff --git a/inc/db/mysql.php b/inc/db/mysql.php new file mode 100644 index 0000000..1e20c34 --- /dev/null +++ b/inc/db/mysql.php @@ -0,0 +1,250 @@ +link) { // connection has already been opened + return; + } + $this->link = @mysql_connect ($host,$user,$pwd,true); + if (!$this->link) { + throw new Exception (anydbConnection::err_connection); + } + if (!mysql_select_db ($dbname, $this->link)) { + throw new Exception (anydbConnection::err_unknown_database); + } + $this->dbprefix = $dbprefix; + } + + public function users_table_exists () { + return $this->_tblexists ("users"); + } + public function create_users_table ($error_if_exists) { + $query = sprintf ("CREATE TABLE " . + ($error_if_exists ? " " : "IF NOT EXISTS ") . + "%susers ( + name VARCHAR(255) NOT NULL, pwd CHAR(32), + PRIMARY KEY (name));", $this->dbprefix); + $this->_execute_query ($query); + } + + public function items_table_exists () { + return $this->_tblexists ("items"); + } + public function create_items_table ($error_if_exists) { + $query = sprintf ("CREATE TABLE " . + ($error_if_exists ? " " : "IF NOT EXISTS ") . + "%sitems ( + imgurl VARCHAR(255), + title VARCHAR(127), + description TEXT, + location POINT, + date DATETIME, + PRIMARY KEY (imgurl) + );", $this->dbprefix); + $this->_execute_query ($query); + } + + public function setpwd ($user_name, $pwd) { + $usrname_escaped = mysql_real_escape_string ($user_name); + $query = sprintf ("SELECT COUNT(*) FROM %susers WHERE name LIKE '%s';", + $this->dbprefix, $usrname_escaped); + $res = mysql_fetch_array ($this->_execute_query ($query), MYSQL_NUM); + if ($res [0] == 1) { + $query = sprintf ("UPDATE %susers SET pwd='%s' WHERE name like '%s';", + $this->dbprefix, md5 ($pwd), $usrname_escaped); + } else { + $query = sprintf ("INSERT INTO %susers VALUES ('%s', '%s');", + $this->dbprefix, $usrname_escaped, md5 ($pwd)); + } + $this->_execute_query ($query); + } + + public function checkpwdmd5 ($user_name, $pwd_md5) { + $query = sprintf ("SELECT COUNT(*) FROM %susers WHERE name LIKE '%s' + AND pwd LIKE '%s';", + $this->dbprefix, + mysql_real_escape_string ($user_name), + mysql_real_escape_string ($pwd_md5)); + $res = mysql_fetch_array ($this->_execute_query ($query), MYSQL_NUM); + if ($res [0] >= 1) { + return true; + } else { + return false; + } + } + + public function save_feature ($feature) { + $query = sprintf ("SELECT imgurl FROM %sitems WHERE imgurl = '%s'", + $this->dbprefix, + mysql_real_escape_string ($feature->imgurl)); + $this->_execute_query ($query); + if (mysql_affected_rows ($this->link) == 0) { + if ($feature->imgurl_exists ()) { + $query = sprintf ("INSERT INTO %sitems + (imgurl, title, description, location, date) + VALUES ('%s', '%s', '%s', + GeomFromText('POINT(%s %s)'), NOW())", + $this->dbprefix, + mysql_real_escape_string ($feature->imgurl), + mysql_real_escape_string ($feature->title), + mysql_real_escape_string ($feature->description), + $feature->lon, + $feature->lat + ); + $this->_execute_query ($query); + return true; + } else { + return false; + } + } else { + $query = sprintf ("UPDATE %sitems SET title='%s', description='%s', + location=GeomFromText('POINT(%s %s)') + where imgurl = '%s'", + $this->dbprefix, + mysql_real_escape_string ($feature->title), + mysql_real_escape_string ($feature->description), + $feature->lon, + $feature->lat, + mysql_real_escape_string ($feature->imgurl) + ); + $this->_execute_query ($query); + return true; + } + } + + public function delete_feature ($feature) { + $query = sprintf ("DELETE from %sitems WHERE imgurl like '%s'", + $this->dbprefix, + mysql_real_escape_string ($feature->imgurl)); + $this->_execute_query ($query); + return true; + } + + public function getfeature ($imgurl) { + $query = sprintf ("SELECT imgurl, title, description, AsText(location) + AS location FROM %sitems WHERE imgurl like '%s';", + $this->dbprefix, mysql_real_escape_string ($imgurl)); + $row = mysql_fetch_assoc ($this->_execute_query ($query)); + if (!isset ($row)) { + return null; + } + return $this->_feature_frow_row ($row); + } + + public function listfeatures () { + $query = sprintf ("SELECT imgurl, title, description, AsText(location) + AS location FROM %sitems;", + $this->dbprefix); + + $features = array (); + $res = $this->_execute_query ($query); + while ($row = mysql_fetch_assoc ($res)) { + $feature = $this->_feature_frow_row ($row); + if (isset ($feature)) { + $features[] = $feature; + } + } + return $features; + } + + public function imgurl_exists ($imgurl) { + $query = sprintf ("SELECT COUNT(*) FROM %sitems WHERE imgurl LIKE '%s';", + $this->dbprefix, mysql_real_escape_string ($imgurl)); + $res = mysql_fetch_array ($this->_execute_query ($query), MYSQL_NUM); + return ($res [0] >= 1) ? true : false; + } + + public function mbr () { + $maxlon = -180; + $minlon = 180; + $maxlat = -88; + $minlat = 88; + + if (!$this->link) { + return array ($minlon, $minlat, $maxlon, $maxlat); + } + try { + $features = $this->listfeatures (); + } catch (Exception $e) { + return array ($minlon, $minlat, $maxlon, $maxlat); + } + + if (count ($features) == 0) { + return array ($minlon, $minlat, $maxlon, $maxlat); + } else if (count ($features) == 1) { + // in case there's only one feature, we show an area of at least + // 4 x 4 degrees + $feature = $features [0]; + + $minlon = max ($feature->lon - 2, -180); + $maxlon = min ($feature->lon + 2, 180); + $minlat = max ($feature->lat - 2, -90); + $maxlat = min ($feature->lat + 2, 90); + + return array ($minlon, $minlat, $maxlon, $maxlat); + } else { + foreach ($features as $feature) { + $minlon = min ($feature->lon, $minlon); + $minlat = min ($feature->lat, $minlat); + $maxlon = max ($feature->lon, $maxlon); + $maxlat = max ($feature->lat, $maxlat); + } + + return array ($minlon, $minlat, $maxlon, $maxlat); + } + } + + public function getdbname () { + return "Mysql"; + } + + private function _tblexists ($tblname) { + $query = sprintf ("SHOW TABLES LIKE '%s%s';", + $this->dbprefix, $tblname); + return mysql_num_rows ($this->_execute_query ($query)) == 1; + } + + private function _feature_frow_row ($row) { + // XXX: should I remove invalid features from database ? + if (!preg_match ('/^POINT\(([0-9\-\.]+)\s+([0-9\-\.]+)\)$/', + $row ["location"], $matches)) { + return null; + } + $lon = $matches [1]; + $lat = $matches [2]; + try { + $feature = new feature ($row ["imgurl"], $row ["title"], $row + ["description"], $lon, $lat); + } catch (Exception $e) { + return null; + } + return $feature; + } + + private function _execute_query ($query) { + if (!function_exists ("mysql_query")) { + throw new Exception (anydbConnection::err_driver_unavailable); + } + if (!$this->link) { + throw new Exception (anydbConnection::err_query); + } + $res = mysql_query ($query, $this->link); + if ($res == false) { + throw new Exception (anydbConnection::err_query); + } + return $res; + } +} + +$connection = new mysqlConnection(); +?> diff --git a/inc/errors.php b/inc/errors.php new file mode 100644 index 0000000..0eef29b --- /dev/null +++ b/inc/errors.php @@ -0,0 +1,29 @@ + diff --git a/inc/settings.php b/inc/settings.php new file mode 100644 index 0000000..33a358f --- /dev/null +++ b/inc/settings.php @@ -0,0 +1,32 @@ + diff --git a/inc/utils.php b/inc/utils.php new file mode 100644 index 0000000..50eb995 --- /dev/null +++ b/inc/utils.php @@ -0,0 +1,15 @@ + diff --git a/index.php b/index.php new file mode 100644 index 0000000..cd32d0e --- /dev/null +++ b/index.php @@ -0,0 +1,52 @@ +connect (DBHOST, DBUSER, DBPWD, DBNAME, DBPREFIX); +} catch (Exception $e) { +} + +$bbox = $connection->mbr (); +?> + + + + <?php echo defined ("SITETITLE") ? SITETITLE : "SYP"?> + + + + + + + + + + + + + + + +
+
+ + + diff --git a/items.php b/items.php new file mode 100644 index 0000000..f816cfb --- /dev/null +++ b/items.php @@ -0,0 +1,62 @@ + + + +'; + + if (SITETITLE) { + printf (' %s', SITETITLE); + } + foreach ($features as $feature) { + $title = htmlspecialchars ($feature->title, ENT_QUOTES); + $description = htmlspecialchars ($feature->description, ENT_QUOTES); + if (strpos ($feature->imgurl, "http://") === 0) { + $imgurl = "http://" . rawurlencode (substr($feature->imgurl, 7)); + } else if (strpos ($feature->imgurl, "https://") === 0) { + $imgurl = "https://" . rawurlencode (substr ($feature->imgurl, 8)); + } else { + $imgurl = rawurlencode ($feature->imgurl); + } + $imgurl = str_replace ('%2F', '/', $imgurl); + $lon = $feature->lon; + $lat = $feature->lat; + $alt = (strlen ($title) > 60) ? + (substr ($title, 0, 57) . '...') : + $title; + + printf (' + + %s + %s

+ %s + ]]>
+ + %s,%s + +
+', $title, $description, $alt, $imgurl, $lon, $lat); + } + + echo'
+
'; +} + +try { + $connection->connect (DBHOST, DBUSER, DBPWD, DBNAME, DBPREFIX); + $features = $connection->listfeatures (); +} catch (Exception $e) { + server_error (); +} +header ("Content-type: application/vnd.google-earth.kml+xml"); +main ($features); +?> diff --git a/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png new file mode 100644 index 0000000000000000000000000000000000000000..954e22dbd99e8c6dd7091335599abf2d10bf8003 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEr#)R9Ln2z=UU%d=WFXS=@V?HT z#xG*`>Yvsgk=}99w^d^D^d*@m74oMo<%#FcopJf?u00-~YVKV2wzrI*_R6;UORMea zBFVSEnN~eiVA6V&z`E)YLz5Aok^D)In}Yn=OzDpgR5Wv0XfT8pOkmV{sKAJ-PO9#T zZK}IXj&Q-V!U)!LcB_3K0&C*{ literal 0 HcmV?d00001 diff --git a/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/jquery/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png new file mode 100644 index 0000000000000000000000000000000000000000..64ece5707d91a6edf9fad4bfcce0c4dbcafcf58d GIT binary patch literal 251 zcmVbvPcjKS|RKP(6sDcCAB(_QB%0978a<$Ah$!b|E zwn;|HO0i8cQj@~)s!ajF0S002ovPDHLkV1oEp BYH0uf literal 0 HcmV?d00001 diff --git a/jquery/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/jquery/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..abdc01082bf3534eafecc5819d28c9574d44ea89 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQY-ImG zFPf9b{J;c_6SHRK%WcbN_hZpM=(Ry;4Rxv2@@2Y=$K57eF$X$=!PC{xWt~$(69B)$ BI)4BF literal 0 HcmV?d00001 diff --git a/jquery/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/jquery/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..9b383f4d2eab09c0f2a739d6b232c32934bc620b GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour1U*q978O6-yYw{%b*}|_(02F z@qbE9)0CJMo;*v*PWv`Vh2h6EmG8IS-Cm{3U~`8Wr|(IeVvr?&A!+5o1urJq>lZQCib*Zhu}sqf+Qs1M>gTe~DWM4f DTJt$0 literal 0 HcmV?d00001 diff --git a/jquery/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/jquery/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouqzpV=978O6-=0?FV^9z|eBtf= z|7WztIJ;WT>{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/jquery/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/jquery/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png new file mode 100644 index 0000000000000000000000000000000000000000..39d5824d6af5456f1e89fc7847ea3599ea5fd815 GIT binary patch literal 3762 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 literal 0 HcmV?d00001 diff --git a/jquery/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/jquery/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..f1273672d253263b7564e9e21d69d7d9d0b337d9 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l%l7LV~E7mxPQ=F85a&M@g_{ d|GeK{$Y5lo%PMu^>wln`44$rjF6*2UngE4^EGqy2 literal 0 HcmV?d00001 diff --git a/jquery/css/ui-lightness/images/ui-icons_222222_256x240.png b/jquery/css/ui-lightness/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..ee039dc096a38a3753f92519546eee94bcfbeffa GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/jquery/css/ui-lightness/images/ui-icons_228ef1_256x240.png b/jquery/css/ui-lightness/images/ui-icons_228ef1_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..10e3631dcab364a0a1ab81862d678fd032908dd7 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/jquery/css/ui-lightness/images/ui-icons_ef8c08_256x240.png b/jquery/css/ui-lightness/images/ui-icons_ef8c08_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..35bb8efa9c87eed9615e64354e12d3578c604823 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/jquery/css/ui-lightness/images/ui-icons_ffd27a_256x240.png b/jquery/css/ui-lightness/images/ui-icons_ffd27a_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..4a48e64dc5787d629c7018412638d5a791b19695 GIT binary patch literal 5355 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 W{n<*kA)EjA%Y34)uU4z#5c5A# literal 0 HcmV?d00001 diff --git a/jquery/css/ui-lightness/images/ui-icons_ffffff_256x240.png b/jquery/css/ui-lightness/images/ui-icons_ffffff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..bef5178a9054c16582876bac57017f783272e750 GIT binary patch literal 4369 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 l!Q;r%?Y*7ztoF~2ao>D^xRgPV&GAM literal 0 HcmV?d00001 diff --git a/jquery/css/ui-lightness/jquery-ui-1.7.2.custom.css b/jquery/css/ui-lightness/jquery-ui-1.7.2.custom.css new file mode 100644 index 0000000..9d7aa08 --- /dev/null +++ b/jquery/css/ui-lightness/jquery-ui-1.7.2.custom.css @@ -0,0 +1,406 @@ +/* +* jQuery UI CSS Framework +* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +*/ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + + +/* +* jQuery UI CSS Framework +* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px +*/ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } +.ui-widget-content a { color: #333333; } +.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header a { color: #ffffff; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; outline: none; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; outline: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; outline: none; } +.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; outline: none; } +.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; outline: none; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; outline: none; text-decoration: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #ffffff; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; } +.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; } +.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } +.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } +.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } +.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; } +.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } +.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; }/* Accordion +----------------------------------*/ +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; } +.ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker +----------------------------------*/ +.ui-datepicker { width: 17em; padding: .2em .2em 0; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; } +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/* Dialog +----------------------------------*/ +.ui-dialog { position: relative; padding: .2em; width: 300px; } +.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/* Progressbar +----------------------------------*/ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable +----------------------------------*/ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider +----------------------------------*/ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs +----------------------------------*/ +.ui-tabs { padding: .2em; zoom: 1; } +.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; } +.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } diff --git a/jquery/development-bundle/AUTHORS.txt b/jquery/development-bundle/AUTHORS.txt new file mode 100644 index 0000000..637175b --- /dev/null +++ b/jquery/development-bundle/AUTHORS.txt @@ -0,0 +1,30 @@ +jQuery UI Authors (http://ui.jquery.com/about) + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +and logs, available at http://jquery-ui.googlecode.com/svn/ + +Brandon Aaron +Paul Bakaus (paulbakaus.com) +David Bolter +Rich Caloggero +Chi Cheng (cloudream@gmail.com) +Colin Clark (http://colin.atrc.utoronto.ca/) +Michelle D'Souza +Aaron Eisenberger (aaronchi@gmail.com) +Ariel Flesler +Bohdan Ganicky +Scott González +Marc Grabanski (m@marcgrabanski.com) +Klaus Hartl (stilbuero.de) +Scott Jehl +Cody Lindley +Eduardo Lundgren (eduardolundgren@gmail.com) +Todd Parker +John Resig +Patty Toland +Ca-Phun Ung (yelotofu.com) +Keith Wood (kbwood@virginbroadband.com.au) +Maggie Costello Wachs +Richard D. Worth (rdworth.org) +Jörn Zaefferer (bassistance.de) diff --git a/jquery/development-bundle/GPL-LICENSE.txt b/jquery/development-bundle/GPL-LICENSE.txt new file mode 100644 index 0000000..11dddd0 --- /dev/null +++ b/jquery/development-bundle/GPL-LICENSE.txt @@ -0,0 +1,278 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. diff --git a/jquery/development-bundle/MIT-LICENSE.txt b/jquery/development-bundle/MIT-LICENSE.txt new file mode 100644 index 0000000..f0f2ba9 --- /dev/null +++ b/jquery/development-bundle/MIT-LICENSE.txt @@ -0,0 +1,25 @@ +Copyright (c) 2009 Paul Bakaus, http://jqueryui.com/ + +This software consists of voluntary contributions made by many +individuals (AUTHORS.txt, http://jqueryui.com/about) For exact +contribution history, see the revision history and logs, available +at http://jquery-ui.googlecode.com/svn/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/jquery/development-bundle/demos/datepicker/alt-field.html b/jquery/development-bundle/demos/datepicker/alt-field.html new file mode 100644 index 0000000..372e2bf --- /dev/null +++ b/jquery/development-bundle/demos/datepicker/alt-field.html @@ -0,0 +1,31 @@ + + + + jQuery UI Datepicker - Populate alternate field + + + + + + + + + +
+ +

Date:  

+ +
+ +
+ +

Populate an alternate field with its own date format whenever a date is selected using the altField and altFormat options. This feature could be used to present a human-friendly date for user selection, while passing a more computer-friendly date through for further processing.

+ +
+ + + diff --git a/jquery/development-bundle/demos/datepicker/buttonbar.html b/jquery/development-bundle/demos/datepicker/buttonbar.html new file mode 100644 index 0000000..eeea08a --- /dev/null +++ b/jquery/development-bundle/demos/datepicker/buttonbar.html @@ -0,0 +1,33 @@ + + + + jQuery UI Datepicker - Display button bar + + + + + + + + + +
+ +

Date:

+ +
+ +
+ +

Display a button for selecting Today's date and a Done button for closing the calendar with the boolean showButtonPanel option. Each button is enabled by default when the bar is displayed, but can be turned off with additional options. Button text is customizable.

+ +
+ + + diff --git a/jquery/development-bundle/demos/datepicker/date-formats.html b/jquery/development-bundle/demos/datepicker/date-formats.html new file mode 100644 index 0000000..a8712ec --- /dev/null +++ b/jquery/development-bundle/demos/datepicker/date-formats.html @@ -0,0 +1,43 @@ + + + + jQuery UI Datepicker - Format date + + + + + + + + + +
+ +

Date:

+ +

Format options:
+ +

+ +
+ +
+ +

Display date feedback in a variety of ways. Choose a date format from the dropdown, then click on the input and select a date to see it in that format.

+ +
+ + + diff --git a/jquery/development-bundle/demos/datepicker/default.html b/jquery/development-bundle/demos/datepicker/default.html new file mode 100644 index 0000000..368e0bc --- /dev/null +++ b/jquery/development-bundle/demos/datepicker/default.html @@ -0,0 +1,31 @@ + + + + jQuery UI Datepicker - Default functionality + + + + + + + + + +
+ +

Date:

+ +
+ +
+ +

The datepicker is tied to a standard form input field. Focus on the input (click, or use the tab key) to open an interactive calendar in a small overlay. Choose a date, click elsewhere on the page (blur the input), or hit the Esc key to close. If a date is chosen, feedback is shown as the input's value.

+ +
+ + + diff --git a/jquery/development-bundle/demos/datepicker/dropdown-month-year.html b/jquery/development-bundle/demos/datepicker/dropdown-month-year.html new file mode 100644 index 0000000..c169310 --- /dev/null +++ b/jquery/development-bundle/demos/datepicker/dropdown-month-year.html @@ -0,0 +1,34 @@ + + + + jQuery UI Datepicker - Display month & year menus + + + + + + + + + +
+ +

Date:

+ +
+ +
+ +

Show month and year dropdowns in place of the static month/year header to facilitate navigation through large timeframes. Add the boolean changeMonth and changeYear options.

+ +
+ + + diff --git a/jquery/development-bundle/demos/datepicker/icon-trigger.html b/jquery/development-bundle/demos/datepicker/icon-trigger.html new file mode 100644 index 0000000..5b4de4a --- /dev/null +++ b/jquery/development-bundle/demos/datepicker/icon-trigger.html @@ -0,0 +1,31 @@ + + + + jQuery UI Datepicker - Icon trigger + + + + + + + + + +
+ +

Date:

+ +
+ +
+ +

Click the icon next to the input field to show the datepicker. Set the datepicker to open on focus (default behavior), on icon click, or both.

+ +
+ + + diff --git a/jquery/development-bundle/demos/datepicker/images/calendar.gif b/jquery/development-bundle/demos/datepicker/images/calendar.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0abaa7c0b892e781b6f553453a0027efea014b9 GIT binary patch literal 269 zcmZ?wbhEHb6kyoJ#dt% zaYstuiRe5}O|8;NEA%ba6j)5k7TbN(gNwC&D)Y{1Cu2PhDy(ymnp7_1Ai(k{X>FbJ zg$yQ1aX#U+v{)u7c4kS5=DdO;0Y*k<=8BdGnYaWYcOkak83LIJ0`39}`h<8zSFc^O QT3n!+Z|k=0I}{nL0T`orxBvhE literal 0 HcmV?d00001 diff --git a/jquery/development-bundle/demos/datepicker/index.html b/jquery/development-bundle/demos/datepicker/index.html new file mode 100644 index 0000000..dfe22db --- /dev/null +++ b/jquery/development-bundle/demos/datepicker/index.html @@ -0,0 +1,26 @@ + + + + jQuery UI Datepicker Demos + + + + +
+ + + diff --git a/jquery/development-bundle/demos/datepicker/inline.html b/jquery/development-bundle/demos/datepicker/inline.html new file mode 100644 index 0000000..2d5ad75 --- /dev/null +++ b/jquery/development-bundle/demos/datepicker/inline.html @@ -0,0 +1,31 @@ + + + + jQuery UI Datepicker - Display inline + + + + + + + + + +
+ +Date:
+ +
+ +
+ +

Display the datepicker embedded in the page instead of in an overlay. Simply call .datepicker() on a div instead of an input.

+ +
+ + + diff --git a/jquery/development-bundle/demos/datepicker/localization.html b/jquery/development-bundle/demos/datepicker/localization.html new file mode 100644 index 0000000..39bc660 --- /dev/null +++ b/jquery/development-bundle/demos/datepicker/localization.html @@ -0,0 +1,120 @@ + + + + jQuery UI Datepicker - Localize calendar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

Date:   +

+ +
+ +
+ +

Localize the datepicker calendar language and format (English / Western formatting is the default). The datepicker includes built-in support for languages that read right-to-left, such as Arabic and Hebrew.

+ +
+ + + diff --git a/jquery/development-bundle/demos/datepicker/min-max.html b/jquery/development-bundle/demos/datepicker/min-max.html new file mode 100644 index 0000000..06a1776 --- /dev/null +++ b/jquery/development-bundle/demos/datepicker/min-max.html @@ -0,0 +1,31 @@ + + + + jQuery UI Datepicker - Restrict date range + + + + + + + + + +
+ +

Date:

+ +
+ +
+ +

Restrict the range of selectable dates with the minDate and maxDate options. Set the beginning and end dates as actual dates (new Date(2009, 1 - 1, 26)), as a numeric offset from today (-20), or as a string of periods and units ('+1M +10D'). For the last, use 'D' for days, 'W' for weeks, 'M' for months, or 'Y' for years.

+ +
+ + + diff --git a/jquery/development-bundle/demos/datepicker/multiple-calendars.html b/jquery/development-bundle/demos/datepicker/multiple-calendars.html new file mode 100644 index 0000000..86e55a0 --- /dev/null +++ b/jquery/development-bundle/demos/datepicker/multiple-calendars.html @@ -0,0 +1,34 @@ + + + + jQuery UI Datepicker - Display multiple months + + + + + + + + + +
+ +

Date:

+ +
+ +
+ +

Set the numberOfMonths option to an integer of 2 or more to show multiple months in a single datepicker.

+ +
+ + + diff --git a/jquery/development-bundle/demos/demos.css b/jquery/development-bundle/demos/demos.css new file mode 100644 index 0000000..2d2ce1f --- /dev/null +++ b/jquery/development-bundle/demos/demos.css @@ -0,0 +1,334 @@ +body { + font-size: 62.5%; +} + +table { + font-size: 1em; +} + +/* Site + -------------------------------- */ + +body { + font-family: "Trebuchet MS", "Helvetica", "Arial", "Verdana", "sans-serif"; +} + +/* Layout + -------------------------------- */ + +.layout-grid { + width: 960px; +} + +.layout-grid td { + vertical-align: top; +} + +.layout-grid td.left-nav { + width: 140px; +} + +.layout-grid td.normal { + border-left: 1px solid #eee; + padding: 20px 24px; + font-family: "Trebuchet MS", "Helvetica", "Arial", "Verdana", "sans-serif"; +} + +.layout-grid td.demos { + background: url('/images/demos_bg.jpg') no-repeat; + height: 337px; + overflow: hidden; +} + +/* Normal + -------------------------------- */ + +.normal h3, +.normal h4 { + margin: 0; + font-weight: normal; +} + +.normal h3 { + padding: 0 0 9px; + font-size: 1.8em; +} + +.normal h4 { + padding-bottom: 21px; + border-bottom: 1px dashed #999; + font-size: 1.2em; + font-weight: bold; +} + +.normal p { + font-size: 1.2em; +} + +/* Demos */ + +.demos-nav, .demos-nav dt, .demos-nav dd, .demos-nav ul, .demos-nav li { + margin: 0; + padding: 0 +} + +.demos-nav { + float: left; + width: 170px; + font-size: 1.3em; +} + +.demos-nav dt, +.demos-nav h4 { + margin: 0; + padding: 0; + font: normal 1.1em "Trebuchet MS", "Helvetica", "Arial", "Verdana", "sans-serif"; + color: #e87b10; +} + +.demos-nav dt, +.demos-nav h4 { + margin-top: 1.5em; + margin-bottom: 0; + padding-left: 8px; + padding-bottom:5px; + line-height: 1.2em; + border-bottom: 1px solid #F4F4F4; +} + +.demos-nav dd a, +.demos-nav li a { + border-bottom: 1px solid #F4F4F4; + display:block; + padding: 4px 3px 4px 8px; + font-size: 90%; + text-decoration: none; + color: #555 ; + margin:2px 0; + height:13px; +} + +.demos-nav dd a:hover, +.demos-nav dd a:focus, +.demos-nav dd a:hover, +.demos-nav dd a:focus { + background: #f3f3f3; + color:#000; + -moz-border-radius: 5px; -webkit-border-radius: 5px; +} + .demos-nav dd a.selected { + background: #555; + color:#ffffff; + -moz-border-radius: 5px; -webkit-border-radius: 5px; +} + + +/* new styles for demo pages, added by Filament 12.29.08 +eventually we should convert the font sizes to ems -- using px for now to minimize style conflicts +*/ + +.normal h3.demo-header { font-size:32px; padding:0 0 5px; border-bottom:1px solid #eee; text-transform: capitalize; } +.normal h4.demo-subheader { font-size:10px; text-transform: uppercase; color:#999; padding:8px 0 3px; border:0; margin:0; } +.normal a:link, +.normal a:visited { color:#1b75bb; text-decoration:none; } +.normal a:hover, +.normal a:active { color:#0b559b; } + +#demo-config { padding:20px 0 0; } + +#demo-frame { float:left; width:540px; height:380px; border:1px solid #ddd; overflow: auto; position: relative; } +#demo-frame h3, #demo-frame h4 { padding: 0; font-weight: bold; font-size: 1em; } + +#demo-config-menu { float:right; width:180px; } +#demo-config-menu h4 { font-size:13px; color:#666; font-weight:normal; border:0; padding-left:18px; } + +#demo-config-menu ul { list-style: none; padding: 0; margin: 0; } + +#demo-config-menu li { font-size:12px; padding:0 0 0 10px; margin:3px 0; zoom: 1; } + +#demo-config-menu li a:link, +#demo-config-menu li a:visited { display:block; padding:1px 8px 4px; border-bottom:1px dotted #b3b3b3; } +* html #demo-config-menu li a:link, +* html #demo-config-menu li a:visited { padding:1px 8px 2px; } +#demo-config-menu li a:hover, +#demo-config-menu li a:active { background-color:#f6f6f6; } + +#demo-config-menu li.demo-config-on { background: url(images/demo-config-on-tile.gif) repeat-x left center; } + +#demo-config-menu li.demo-config-on a:link, +#demo-config-menu li.demo-config-on a:visited, +#demo-config-menu li.demo-config-on a:hover, +#demo-config-menu li.demo-config-on a:active { background: url(images/demo-config-on.gif) no-repeat left; padding-left:18px; color:#fff; border:0; margin-left:-10px; margin-top: 0px; margin-bottom: 0px; } + +#demo-source, #demo-notes { + clear: both; + padding: 20px 0 0; + font-size: 1.3em; +} + +#demo-notes { width:520px; color:#333; font-size: 1em; } +#demo-notes p code, .demo-description p code { padding: 0; font-weight: bold; } +#demo-source pre, #demo-source code { padding: 0; } +code, pre { padding:8px 0 8px 20px ; font-size: 1.2em; line-height:130%; } + +#demo-source a:link, +#demo-source a:visited, +#demo-source a:hover, +#demo-source a:active { font-size:12px; padding-left:13px; background-position: left center; background-repeat: no-repeat; } + +#demo-source a.source-open:link, +#demo-source a.source-open:visited, +#demo-source a.source-open:hover, +#demo-source a.source-open:active { background-image: url(images/demo-spindown-open.gif); } + +#demo-source a.source-closed:link, +#demo-source a.source-closed:visited, +#demo-source a.source-closed:hover, +#demo-source a.source-closed:active { background-image: url(images/demo-spindown-closed.gif); } + +div.demo { + padding:12px; + font-family: "Trebuchet MS", "Arial", "Helvetica", "Verdana", "sans-serif"; +} + +div.demo h3.docs { clear:left; font-size:12px; font-weight:normal; padding:0 0 1em; margin:0; } + +div.demo-description { + clear:both; + padding:12px; + font-family: "Trebuchet MS", "Arial", "Helvetica", "Verdana", "sans-serif"; + font-size: 1.3em; + line-height: 1.4em; +} + +.ui-draggable, .ui-droppable { + background-position: top left; +} + +.left-nav .demos-nav { + padding-right: 10px; +} + +#demo-link { font-size:11px; padding-top: 6px; clear: both; overflow: hidden; } +#demo-link a span.ui-icon { float:left; margin-right:3px; } + +/* Component containers +----------------------------------*/ +#widget-docs .ui-widget { font-family: Trebuchet MS,Verdana,Arial,sans-serif; font-size: 1em; } +#widget-docs .ui-widget input, #widget-docs .ui-widget select, #widget-docs .ui-widget textarea, #widget-docs .ui-widget button { font-family: Trebuchet MS,Verdana,Arial,sans-serif; font-size: 1em; } +#widget-docs .ui-widget-header { border: 1px solid #ffffff; background: #464646 url(images/464646_40x100_textures_01_flat_100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +#widget-docs .ui-widget-header a { color: #ffffff; } +#widget-docs .ui-widget-content { border: 1px solid #ffffff; background: #ffffff url(images/ffffff_40x100_textures_01_flat_75.png) 50% 50% repeat-x; color: #222222; } +#widget-docs .ui-widget-content a { color: #222222; } + +/* Interaction states +----------------------------------*/ +#widget-docs .ui-state-default, #widget-docs .ui-widget-content #widget-docs .ui-state-default { border: 1px solid #666666; background: #555555 url(images/555555_40x100_textures_03_highlight_soft_75.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; outline: none; } +#widget-docs .ui-state-default a { color: #ffffff; text-decoration: none; outline: none; } +#widget-docs .ui-state-hover, #widget-docs .ui-widget-content #widget-docs .ui-state-hover, #widget-docs .ui-state-focus, #widget-docs .ui-widget-content #widget-docs .ui-state-focus { border: 1px solid #666666; background: #444444 url(images/444444_40x100_textures_03_highlight_soft_60.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; outline: none; } +#widget-docs .ui-state-hover a { color: #ffffff; text-decoration: none; outline: none; } +#widget-docs .ui-state-active, #widget-docs .ui-widget-content #widget-docs .ui-state-active { border: 1px solid #666666; background: #ffffff url(images/ffffff_40x100_textures_01_flat_65.png) 50% 50% repeat-x; font-weight: normal; color: #F6921E; outline: none; } +#widget-docs .ui-state-active a { color: #F6921E; outline: none; text-decoration: none; } + +/* Interaction Cues +----------------------------------*/ +#widget-docs .ui-state-highlight, #widget-docs .ui-widget-content #widget-docs .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/fbf9ee_40x100_textures_02_glass_55.png) 50% 50% repeat-x; color: #363636; } +#widget-docs .ui-state-error, #widget-docs .ui-widget-content #widget-docs .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/fef1ec_40x100_textures_05_inset_soft_95.png) 50% bottom repeat-x; color: #cd0a0a; } +#widget-docs .ui-state-error-text, #widget-docs .ui-widget-content #widget-docs .ui-state-error-text { color: #cd0a0a; } +#widget-docs .ui-state-disabled, #widget-docs .ui-widget-content #widget-docs .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } +#widget-docs .ui-priority-primary, #widget-docs .ui-widget-content #widget-docs .ui-priority-primary { font-weight: bold; } +#widget-docs .ui-priority-secondary, #widget-docs .ui-widget-content #widget-docs .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } + +/* Icons +----------------------------------*/ + +/* states and images */ +#demo-frame-wrapper .ui-icon, #widget-docs .ui-icon { width: 16px; height: 16px; background-image: url(images/222222_256x240_icons_icons.png); } +#widget-docs .ui-widget-content .ui-icon {background-image: url(images/222222_256x240_icons_icons.png); } +#widget-docs .ui-widget-header .ui-icon {background-image: url(images/222222_256x240_icons_icons.png); } +#widget-docs .ui-state-default .ui-icon { background-image: url(images/888888_256x240_icons_icons.png); } +#widget-docs .ui-state-hover .ui-icon, #widget-docs .ui-state-focus .ui-icon {background-image: url(images/454545_256x240_icons_icons.png); } +#widget-docs .ui-state-active .ui-icon {background-image: url(images/454545_256x240_icons_icons.png); } +#widget-docs .ui-state-highlight .ui-icon {background-image: url(images/2e83ff_256x240_icons_icons.png); } +#widget-docs .ui-state-error .ui-icon, #widget-docs .ui-state-error-text .ui-icon {background-image: url(images/cd0a0a_256x240_icons_icons.png); } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +#widget-docs .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; } +#widget-docs .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; } +#widget-docs .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; } +#widget-docs .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } +#widget-docs .ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; } +#widget-docs .ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } +#widget-docs .ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } +#widget-docs .ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; } +#widget-docs .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; } + +/* Overlays */ +#widget-docs .ui-widget-overlay { background: #aaaaaa url(images/aaaaaa_40x100_textures_01_flat_0.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } +#widget-docs .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/aaaaaa_40x100_textures_01_flat_0.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; } + +/* +----------------------------------*/ + +#widget-docs { margin:20px 0 0; border: none; } + +#widget-docs h2, #widget-docs h3, #widget-docs h4, #widget-docs p, #widget-docs ul, #widget-docs code { margin:0; padding:0; } +#widget-docs code { display:block; color:#444; font-size:.9em; margin:0 0 1em; } +#widget-docs code strong { color:#000; } +#widget-docs p { margin:0 3em 1.2em 0; } +#widget-docs p.intro { font-size:13px; color:#666; line-height:1.3; } +#widget-docs ul { list-style-type: none; } + +#widget-docs h2 { font-size:16px; margin:1.2em 0 .5em; } +#widget-docs h3 { font-size:14px; color:#e6820E; margin:1.5em 0 .5em; } +.normal #widget-docs h4 { font-size:12px; color:#000; border:0; margin:0 0 .5em; } + +#docs-overview-main { width:400px; } +#docs-overview-sidebar { float:right; width:200px; } +#docs-overview-sidebar a span { color:#666; } +#widget-docs #docs-overview-main p { margin-right:0; } +#widget-docs #docs-overview-sidebar h4 { padding-left:0; } + +.docs-list-header { float:left; width:100%; margin:10px 0 0; border-bottom:1px solid #eee; } +#widget-docs .docs-list-header h2 { float:left; margin:0; } +#widget-docs .docs-list-header p { float:right; margin:5px 0; font-size:11px; } + +.docs-list { float:left; width:100%; padding:0 0 10px; } +.docs-list .param-header { float:left; clear:left; width:100%; padding:8px 0; border-top:1px solid #eee; } +#widget-docs .param-header h3, #widget-docs .param-header p { margin:0; float:left; } +#widget-docs .param-header h3 { width:50%; } +#widget-docs .param-header h3 span { background: url(images/demo-spindown-closed.gif) no-repeat left; padding-left:13px; } +#widget-docs .param-open .param-header h3 span { background: url(images/demo-spindown-open.gif) no-repeat left; } +#widget-docs .param-header p { width:24%; } +#widget-docs .param-header p.param-type span { background: url(images/icon-docs-info.gif) no-repeat left; cursor:pointer; border-bottom:1px dashed #ccc; padding-left:15px; } + +.param-details { padding-left:13px; } +.param-args { margin:0 0 1.5em; border-top:1px dotted #ccc;} +.param-args td { padding:3px 30px 3px 5px; border-bottom:1px dotted #ccc; } + + +/* overrides for ui-tab styles */ +#widget-docs ul.ui-tabs-nav { padding:0 0 0 8px; } +#widget-docs .ui-tabs-nav li { margin:5px 5px 0 0; } + +#widget-docs .ui-tabs-nav li a:link, +#widget-docs .ui-tabs-nav li a:visited, +#widget-docs .ui-tabs-nav li a:hover, +#widget-docs .ui-tabs-nav li a:active { font-size:14px; padding:4px 1.2em 3px; color:#fff; } + +#widget-docs .ui-tabs-nav li.ui-tabs-selected a:link, +#widget-docs .ui-tabs-nav li.ui-tabs-selected a:visited, +#widget-docs .ui-tabs-nav li.ui-tabs-selected a:hover, +#widget-docs .ui-tabs-nav li.ui-tabs-selected a:active { color:#e6820E; } + +#widget-docs .ui-tabs-panel { padding:20px 9px; font-size:12px; line-height:1.4; color:#000; } + +#widget-docs .ui-widget-content a:link, +#widget-docs .ui-widget-content a:visited { color:#1b75bb; text-decoration:none; } +#widget-docs .ui-widget-content a:hover, +#widget-docs .ui-widget-content a:active { color:#0b559b; } + diff --git a/jquery/development-bundle/demos/images/calendar.gif b/jquery/development-bundle/demos/images/calendar.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0abaa7c0b892e781b6f553453a0027efea014b9 GIT binary patch literal 269 zcmZ?wbhEHb6kyoJ#dt% zaYstuiRe5}O|8;NEA%ba6j)5k7TbN(gNwC&D)Y{1Cu2PhDy(ymnp7_1Ai(k{X>FbJ zg$yQ1aX#U+v{)u7c4kS5=DdO;0Y*k<=8BdGnYaWYcOkak83LIJ0`39}`h<8zSFc^O QT3n!+Z|k=0I}{nL0T`orxBvhE literal 0 HcmV?d00001 diff --git a/jquery/development-bundle/demos/images/demo-config-on-tile.gif b/jquery/development-bundle/demos/images/demo-config-on-tile.gif new file mode 100644 index 0000000000000000000000000000000000000000..359da95a77a5a289d8a633b03d1c462d16b9c558 GIT binary patch literal 180 zcmZ?wbhEHbWMW8RIKsg2W3kbX1$y77DSw}({(Xk(&lMIwmzw;Tr~7lY&9Ak#-=-@5 zTyFMbk-^VZR^R7pf1j=SZL<8Yb@mKI1I3>#V6{3R5@aU>t6_plUrOe@j8*H_%v9mH rWa7F}r;U+;N0_C(`S8aI9yXRHhXnx+^De9?@md?T{>B><76xkoA)Gl& literal 0 HcmV?d00001 diff --git a/jquery/development-bundle/demos/images/demo-config-on.gif b/jquery/development-bundle/demos/images/demo-config-on.gif new file mode 100644 index 0000000000000000000000000000000000000000..9fcec1ac1b18fe0f81f5f19b9179f0d0691d9777 GIT binary patch literal 343 zcmZ?wbhEHb>eYpL{LbHGGZvI$i{rBbBpL$N^wzAW3n{YU=MdO?c zXHu`kEUtnb6Rud^c&pi#e&D^a0aIfWlPW`7dz&C*cTcybv^>kC$xdR*Y%^v!OUZD~ l<8;vwckkZ&_wRdqduwZJ|NsBb ufC?0UvM@3*a53nBgh6I7u!ssUx`uikzEFMiq4*)e#;GFgtr?*#4Aua7yd%B< literal 0 HcmV?d00001 diff --git a/jquery/development-bundle/demos/images/demo-spindown-open.gif b/jquery/development-bundle/demos/images/demo-spindown-open.gif new file mode 100644 index 0000000000000000000000000000000000000000..e1c60aa558ebc4701d66d89c893b9185d92926ae GIT binary patch literal 105 zcmZ?wbhEHbWM^Pw*v!Rn?%cV3`}VC{w{G6Nd9AIj%a$#>ckkZ&_wRdqduwZJ|NsBb vfC?0UvM@3*a53nBgh6I7u!spPwVb$6c!g7Y5WAt|d?6L5pNhxD85yhrk)R_C literal 0 HcmV?d00001 diff --git a/jquery/development-bundle/demos/images/icon-docs-info.gif b/jquery/development-bundle/demos/images/icon-docs-info.gif new file mode 100644 index 0000000000000000000000000000000000000000..6b0464e011124fc006425aa596f528bf35b7ebeb GIT binary patch literal 214 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 + + + + jQuery UI Demos + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
Interactions
+ + + + + +
Widgets
+ +
Datepicker
+ + + + +
Effects
+ + + + + + + + + +
About jQuery UI
+
Getting Started
+
Upgrade Guide
+
Changelog
+
Roadmap
+
Subversion Access
+
UI Developer Guidelines
+
Theming
+
Theming jQuery UI
+
jQuery UI CSS Framework
+
ThemeRoller application
+
Theme Switcher Widget
+ +
+
+ +
+ +

Instructions

+

+ These demos showcase some common uses of each jQuery UI plugin. Simply copy and paste code from the demos to get started. Have fun playing with them. +

+ +
+ +
+ + diff --git a/jquery/development-bundle/docs/datepicker.html b/jquery/development-bundle/docs/datepicker.html new file mode 100644 index 0000000..f0772b2 --- /dev/null +++ b/jquery/development-bundle/docs/datepicker.html @@ -0,0 +1,2150 @@ + + +
+

jQuery UI Datepicker

+
+

Overview

+
+

The jQuery UI Datepicker is a highly configurable plugin that adds datepicker functionality to your pages. You can customize the date format and language, restrict the selectable date ranges and add in buttons and other navigation options easily.

+

By default, the datepicker calendar opens in a small overlay onFocus and closes automatically onBlur or when a date if selected. For an inline calendar, simply attach the datepicker to a div or span. +

You can use keyboard shortcuts to drive the datepicker: +

+
    +
  • page up/down - previous/next month
  • +
  • ctrl+page up/down - previous/next year
  • +
  • ctrl+home - current month or open when closed
  • +
  • ctrl+left/right - previous/next day
  • +
  • ctrl+up/down - previous/next week
  • +
  • enter - accept the selected date
  • +
  • ctrl+end - close and erase the date
  • +
  • escape - close the datepicker without selection
  • +
+

Utility functions

+ +
+
+

Dependencies

+
    +
  • UI Core
  • +
+
+
+

Example

+
+ +

+A simple jQuery UI Datepicker.
+

+
$("#datepicker").datepicker();
+
+

+

+
<!DOCTYPE html>
+<html>
+<head>
+  <link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" />
+  <script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script>
+  <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.core.js"></script>
+  <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.datepicker.js"></script>
+  <script type="text/javascript">
+  $(document).ready(function(){
+    $("#datepicker").datepicker();
+  });
+  </script>
+</head>
+<body style="font-size:62.5%;">
+  
+<div type="text" id="datepicker"></div>
+
+</body>
+</html>
+
+

+

+
+
+
+

Options

+
    + +
  • +
    +

    altField

    +
    +
    Type:
    +
    String
    + +
    Default:
    +
    ''
    + +
    +
    +
    +

    The jQuery selector for another field that is to be updated with the selected date from the datepicker. Use the altFormat setting below to change the format of the date within this field. Leave as blank for no alternate field.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the altField option specified. +
    +
    +
    $('.selector').datepicker({ altField: '#actualDate' });
    +
    + + +
    + Get or set the altField option, after init. +
    +
    +
    //getter
    +var altField = $('.selector').datepicker('option', 'altField');
    +//setter
    +$('.selector').datepicker('option', 'altField', '#actualDate');
    +
    + +
    +
    +
  • + + +
  • +
    +

    altFormat

    +
    +
    Type:
    +
    String
    + +
    Default:
    +
    ''
    + +
    +
    +
    +

    The dateFormat to be used for the altField option. This allows one date format to be shown to the user for selection purposes, while a different format is actually sent behind the scenes. For a full list of the possible formats see the formatDate function

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the altFormat option specified. +
    +
    +
    $('.selector').datepicker({ altFormat: 'yy-mm-dd' });
    +
    + + +
    + Get or set the altFormat option, after init. +
    +
    +
    //getter
    +var altFormat = $('.selector').datepicker('option', 'altFormat');
    +//setter
    +$('.selector').datepicker('option', 'altFormat', 'yy-mm-dd');
    +
    + +
    +
    +
  • + + +
  • +
    +

    appendText

    +
    +
    Type:
    +
    String
    + +
    Default:
    +
    ''
    + +
    +
    +
    +

    The text to display after each date field, e.g. to show the required format.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the appendText option specified. +
    +
    +
    $('.selector').datepicker({ appendText: '(yyyy-mm-dd)' });
    +
    + + +
    + Get or set the appendText option, after init. +
    +
    +
    //getter
    +var appendText = $('.selector').datepicker('option', 'appendText');
    +//setter
    +$('.selector').datepicker('option', 'appendText', '(yyyy-mm-dd)');
    +
    + +
    +
    +
  • + + +
  • +
    +

    buttonImage

    +
    +
    Type:
    +
    String
    + +
    Default:
    +
    ''
    + +
    +
    +
    +

    The URL for the popup button image. If set, button text becomes the alt value and is not directly displayed.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the buttonImage option specified. +
    +
    +
    $('.selector').datepicker({ buttonImage: '/images/datepicker.gif' });
    +
    + + +
    + Get or set the buttonImage option, after init. +
    +
    +
    //getter
    +var buttonImage = $('.selector').datepicker('option', 'buttonImage');
    +//setter
    +$('.selector').datepicker('option', 'buttonImage', '/images/datepicker.gif');
    +
    + +
    +
    +
  • + + +
  • +
    +

    buttonImageOnly

    +
    +
    Type:
    +
    Boolean
    + +
    Default:
    +
    false
    + +
    +
    +
    +

    Set to true to place an image after the field to use as the trigger without it appearing on a button.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the buttonImageOnly option specified. +
    +
    +
    $('.selector').datepicker({ buttonImageOnly: true });
    +
    + + +
    + Get or set the buttonImageOnly option, after init. +
    +
    +
    //getter
    +var buttonImageOnly = $('.selector').datepicker('option', 'buttonImageOnly');
    +//setter
    +$('.selector').datepicker('option', 'buttonImageOnly', true);
    +
    + +
    +
    +
  • + + +
  • +
    +

    buttonText

    +
    +
    Type:
    +
    String
    + +
    Default:
    +
    '...'
    + +
    +
    +
    +

    The text to display on the trigger button. Use in conjunction with showOn equal to 'button' or 'both'.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the buttonText option specified. +
    +
    +
    $('.selector').datepicker({ buttonText: 'Choose' });
    +
    + + +
    + Get or set the buttonText option, after init. +
    +
    +
    //getter
    +var buttonText = $('.selector').datepicker('option', 'buttonText');
    +//setter
    +$('.selector').datepicker('option', 'buttonText', 'Choose');
    +
    + +
    +
    +
  • + + +
  • +
    +

    changeMonth

    +
    +
    Type:
    +
    Boolean
    + +
    Default:
    +
    false
    + +
    +
    +
    +

    Allows you to change the month by selecting from a drop-down list. You can enable this feature by setting the attribute to true.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the changeMonth option specified. +
    +
    +
    $('.selector').datepicker({ changeMonth: true });
    +
    + + +
    + Get or set the changeMonth option, after init. +
    +
    +
    //getter
    +var changeMonth = $('.selector').datepicker('option', 'changeMonth');
    +//setter
    +$('.selector').datepicker('option', 'changeMonth', true);
    +
    + +
    +
    +
  • + + +
  • +
    +

    changeYear

    +
    +
    Type:
    +
    Boolean
    + +
    Default:
    +
    false
    + +
    +
    +
    +

    Allows you to change the year by selecting from a drop-down list. You can enable this feature by setting the attribute to true.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the changeYear option specified. +
    +
    +
    $('.selector').datepicker({ changeYear: true });
    +
    + + +
    + Get or set the changeYear option, after init. +
    +
    +
    //getter
    +var changeYear = $('.selector').datepicker('option', 'changeYear');
    +//setter
    +$('.selector').datepicker('option', 'changeYear', true);
    +
    + +
    +
    +
  • + + +
  • +
    +

    closeText

    +
    +
    Type:
    +
    String
    + +
    Default:
    +
    'Done'
    + +
    +
    +
    +

    The text to display for the close link. This attribute is one of the regionalisation attributes. Use the showButtonPanel to display this button.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the closeText option specified. +
    +
    +
    $('.selector').datepicker({ closeText: 'X' });
    +
    + + +
    + Get or set the closeText option, after init. +
    +
    +
    //getter
    +var closeText = $('.selector').datepicker('option', 'closeText');
    +//setter
    +$('.selector').datepicker('option', 'closeText', 'X');
    +
    + +
    +
    +
  • + + +
  • +
    +

    constrainInput

    +
    +
    Type:
    +
    Boolean
    + +
    Default:
    +
    true
    + +
    +
    +
    +

    True if the input field is constrained to the current date format.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the constrainInput option specified. +
    +
    +
    $('.selector').datepicker({ constrainInput: false });
    +
    + + +
    + Get or set the constrainInput option, after init. +
    +
    +
    //getter
    +var constrainInput = $('.selector').datepicker('option', 'constrainInput');
    +//setter
    +$('.selector').datepicker('option', 'constrainInput', false);
    +
    + +
    +
    +
  • + + +
  • +
    +

    currentText

    +
    +
    Type:
    +
    String
    + +
    Default:
    +
    'Today'
    + +
    +
    +
    +

    The text to display for the current day link. This attribute is one of the regionalisation attributes. Use the showButtonPanel to display this button.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the currentText option specified. +
    +
    +
    $('.selector').datepicker({ currentText: 'Now' });
    +
    + + +
    + Get or set the currentText option, after init. +
    +
    +
    //getter
    +var currentText = $('.selector').datepicker('option', 'currentText');
    +//setter
    +$('.selector').datepicker('option', 'currentText', 'Now');
    +
    + +
    +
    +
  • + + +
  • +
    +

    dateFormat

    +
    +
    Type:
    +
    String
    + +
    Default:
    +
    'mm/dd/yy'
    + +
    +
    +
    +

    The format for parsed and displayed dates. This attribute is one of the regionalisation attributes. For a full list of the possible formats see the formatDate function.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the dateFormat option specified. +
    +
    +
    $('.selector').datepicker({ dateFormat: 'yy-mm-dd' });
    +
    + + +
    + Get or set the dateFormat option, after init. +
    +
    +
    //getter
    +var dateFormat = $('.selector').datepicker('option', 'dateFormat');
    +//setter
    +$('.selector').datepicker('option', 'dateFormat', 'yy-mm-dd');
    +
    + +
    +
    +
  • + + +
  • +
    +

    dayNames

    +
    +
    Type:
    +
    Array
    + +
    Default:
    +
    ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
    + +
    +
    +
    +

    The list of long day names, starting from Sunday, for use as requested via the dateFormat setting. They also appear as popup hints when hovering over the corresponding column headings. This attribute is one of the regionalisation attributes.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the dayNames option specified. +
    +
    +
    $('.selector').datepicker({ dayNames: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'] });
    +
    + + +
    + Get or set the dayNames option, after init. +
    +
    +
    //getter
    +var dayNames = $('.selector').datepicker('option', 'dayNames');
    +//setter
    +$('.selector').datepicker('option', 'dayNames', ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi']);
    +
    + +
    +
    +
  • + + +
  • +
    +

    dayNamesMin

    +
    +
    Type:
    +
    Array
    + +
    Default:
    +
    ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']
    + +
    +
    +
    +

    The list of minimised day names, starting from Sunday, for use as column headers within the datepicker. This attribute is one of the regionalisation attributes.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the dayNamesMin option specified. +
    +
    +
    $('.selector').datepicker({ dayNamesMin: ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'] });
    +
    + + +
    + Get or set the dayNamesMin option, after init. +
    +
    +
    //getter
    +var dayNamesMin = $('.selector').datepicker('option', 'dayNamesMin');
    +//setter
    +$('.selector').datepicker('option', 'dayNamesMin', ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa']);
    +
    + +
    +
    +
  • + + +
  • +
    +

    dayNamesShort

    +
    +
    Type:
    +
    Array
    + +
    Default:
    +
    ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
    + +
    +
    +
    +

    The list of abbreviated day names, starting from Sunday, for use as requested via the dateFormat setting. This attribute is one of the regionalisation attributes.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the dayNamesShort option specified. +
    +
    +
    $('.selector').datepicker({ dayNamesShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'] });
    +
    + + +
    + Get or set the dayNamesShort option, after init. +
    +
    +
    //getter
    +var dayNamesShort = $('.selector').datepicker('option', 'dayNamesShort');
    +//setter
    +$('.selector').datepicker('option', 'dayNamesShort', ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam']);
    +
    + +
    +
    +
  • + + +
  • +
    +

    defaultDate

    +
    +
    Type:
    +
    Date, Number, String
    + +
    Default:
    +
    null
    + +
    +
    +
    +

    Set the date to highlight on first opening if the field is blank. Specify either an actual date via a Date object, or a number of days from today (e.g. +7) or a string of values and periods ('y' for years, 'm' for months, 'w' for weeks, 'd' for days, e.g. '+1m +7d'), or null for today.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the defaultDate option specified. +
    +
    +
    $('.selector').datepicker({ defaultDate: +7 });
    +
    + + +
    + Get or set the defaultDate option, after init. +
    +
    +
    //getter
    +var defaultDate = $('.selector').datepicker('option', 'defaultDate');
    +//setter
    +$('.selector').datepicker('option', 'defaultDate', +7);
    +
    + +
    +
    +
  • + + +
  • +
    +

    duration

    +
    +
    Type:
    +
    String, Number
    + +
    Default:
    +
    'normal'
    + +
    +
    +
    +

    Control the speed at which the datepicker appears, it may be a time in milliseconds, a string representing one of the three predefined speeds ("slow", "normal", "fast"), or '' for immediately.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the duration option specified. +
    +
    +
    $('.selector').datepicker({ duration: 'slow' });
    +
    + + +
    + Get or set the duration option, after init. +
    +
    +
    //getter
    +var duration = $('.selector').datepicker('option', 'duration');
    +//setter
    +$('.selector').datepicker('option', 'duration', 'slow');
    +
    + +
    +
    +
  • + + +
  • +
    +

    firstDay

    +
    +
    Type:
    +
    Number
    + +
    Default:
    +
    0
    + +
    +
    +
    +

    Set the first day of the week: Sunday is 0, Monday is 1, ... This attribute is one of the regionalisation attributes.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the firstDay option specified. +
    +
    +
    $('.selector').datepicker({ firstDay: 1 });
    +
    + + +
    + Get or set the firstDay option, after init. +
    +
    +
    //getter
    +var firstDay = $('.selector').datepicker('option', 'firstDay');
    +//setter
    +$('.selector').datepicker('option', 'firstDay', 1);
    +
    + +
    +
    +
  • + + +
  • +
    +

    gotoCurrent

    +
    +
    Type:
    +
    Boolean
    + +
    Default:
    +
    false
    + +
    +
    +
    +

    If true, the current day link moves to the currently selected date instead of today.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the gotoCurrent option specified. +
    +
    +
    $('.selector').datepicker({ gotoCurrent: true });
    +
    + + +
    + Get or set the gotoCurrent option, after init. +
    +
    +
    //getter
    +var gotoCurrent = $('.selector').datepicker('option', 'gotoCurrent');
    +//setter
    +$('.selector').datepicker('option', 'gotoCurrent', true);
    +
    + +
    +
    +
  • + + +
  • +
    +

    hideIfNoPrevNext

    +
    +
    Type:
    +
    Boolean
    + +
    Default:
    +
    false
    + +
    +
    +
    +

    Normally the previous and next links are disabled when not applicable (see minDate/maxDate). You can hide them altogether by setting this attribute to true.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the hideIfNoPrevNext option specified. +
    +
    +
    $('.selector').datepicker({ hideIfNoPrevNext: true });
    +
    + + +
    + Get or set the hideIfNoPrevNext option, after init. +
    +
    +
    //getter
    +var hideIfNoPrevNext = $('.selector').datepicker('option', 'hideIfNoPrevNext');
    +//setter
    +$('.selector').datepicker('option', 'hideIfNoPrevNext', true);
    +
    + +
    +
    +
  • + + +
  • +
    +

    isRTL

    +
    +
    Type:
    +
    Boolean
    + +
    Default:
    +
    false
    + +
    +
    +
    +

    True if the current language is drawn from right to left. This attribute is one of the regionalisation attributes.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the isRTL option specified. +
    +
    +
    $('.selector').datepicker({ isRTL: true });
    +
    + + +
    + Get or set the isRTL option, after init. +
    +
    +
    //getter
    +var isRTL = $('.selector').datepicker('option', 'isRTL');
    +//setter
    +$('.selector').datepicker('option', 'isRTL', true);
    +
    + +
    +
    +
  • + + +
  • +
    +

    maxDate

    +
    +
    Type:
    +
    Date, Number, String
    + +
    Default:
    +
    null
    + +
    +
    +
    +

    Set a maximum selectable date via a Date object, or a number of days from today (e.g. +7) or a string of values and periods ('y' for years, 'm' for months, 'w' for weeks, 'd' for days, e.g. '+1m +1w'), or null for no limit.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the maxDate option specified. +
    +
    +
    $('.selector').datepicker({ maxDate: '+1m +1w' });
    +
    + + +
    + Get or set the maxDate option, after init. +
    +
    +
    //getter
    +var maxDate = $('.selector').datepicker('option', 'maxDate');
    +//setter
    +$('.selector').datepicker('option', 'maxDate', '+1m +1w');
    +
    + +
    +
    +
  • + + +
  • +
    +

    minDate

    +
    +
    Type:
    +
    Date, Number, String
    + +
    Default:
    +
    null
    + +
    +
    +
    +

    Set a minimum selectable date via a Date object, or a number of days from today (e.g. +7) or a string of values and periods ('y' for years, 'm' for months, 'w' for weeks, 'd' for days, e.g. '-1y -1m'), or null for no limit.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the minDate option specified. +
    +
    +
    $('.selector').datepicker({ minDate: new Date(2007, 1 - 1, 1) });
    +
    + + +
    + Get or set the minDate option, after init. +
    +
    +
    //getter
    +var minDate = $('.selector').datepicker('option', 'minDate');
    +//setter
    +$('.selector').datepicker('option', 'minDate', new Date(2007, 1 - 1, 1));
    +
    + +
    +
    +
  • + + +
  • +
    +

    monthNames

    +
    +
    Type:
    +
    Array
    + +
    Default:
    +
    ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
    + +
    +
    +
    +

    The list of full month names, as used in the month header on each datepicker and as requested via the dateFormat setting. This attribute is one of the regionalisation attributes.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the monthNames option specified. +
    +
    +
    $('.selector').datepicker({ monthNames: ['Januar','Februar','Marts','April','Maj','Juni','Juli','August','September','Oktober','November','December'] });
    +
    + + +
    + Get or set the monthNames option, after init. +
    +
    +
    //getter
    +var monthNames = $('.selector').datepicker('option', 'monthNames');
    +//setter
    +$('.selector').datepicker('option', 'monthNames', ['Januar','Februar','Marts','April','Maj','Juni','Juli','August','September','Oktober','November','December']);
    +
    + +
    +
    +
  • + + +
  • +
    +

    monthNamesShort

    +
    +
    Type:
    +
    Array
    + +
    Default:
    +
    ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    + +
    +
    +
    +

    The list of abbreviated month names, for use as requested via the dateFormat setting. This attribute is one of the regionalisation attributes.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the monthNamesShort option specified. +
    +
    +
    $('.selector').datepicker({ monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Aug','Sep','Okt','Nov','Dec'] });
    +
    + + +
    + Get or set the monthNamesShort option, after init. +
    +
    +
    //getter
    +var monthNamesShort = $('.selector').datepicker('option', 'monthNamesShort');
    +//setter
    +$('.selector').datepicker('option', 'monthNamesShort', ['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Aug','Sep','Okt','Nov','Dec']);
    +
    + +
    +
    +
  • + + +
  • +
    +

    navigationAsDateFormat

    +
    +
    Type:
    +
    Boolean
    + +
    Default:
    +
    false
    + +
    +
    +
    +

    When true the formatDate function is applied to the prevText, nextText, and currentText values before display, allowing them to display the target month names for example.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the navigationAsDateFormat option specified. +
    +
    +
    $('.selector').datepicker({ navigationAsDateFormat: true });
    +
    + + +
    + Get or set the navigationAsDateFormat option, after init. +
    +
    +
    //getter
    +var navigationAsDateFormat = $('.selector').datepicker('option', 'navigationAsDateFormat');
    +//setter
    +$('.selector').datepicker('option', 'navigationAsDateFormat', true);
    +
    + +
    +
    +
  • + + +
  • +
    +

    nextText

    +
    +
    Type:
    +
    String
    + +
    Default:
    +
    'Next'
    + +
    +
    +
    +

    The text to display for the next month link. This attribute is one of the regionalisation attributes. With the standard ThemeRoller styling, this value is replaced by an icon.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the nextText option specified. +
    +
    +
    $('.selector').datepicker({ nextText: 'Later' });
    +
    + + +
    + Get or set the nextText option, after init. +
    +
    +
    //getter
    +var nextText = $('.selector').datepicker('option', 'nextText');
    +//setter
    +$('.selector').datepicker('option', 'nextText', 'Later');
    +
    + +
    +
    +
  • + + +
  • +
    +

    numberOfMonths

    +
    +
    Type:
    +
    Number, Array
    + +
    Default:
    +
    1
    + +
    +
    +
    +

    Set how many months to show at once. The value can be a straight integer, or can be a two-element array to define the number of rows and columns to display.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the numberOfMonths option specified. +
    +
    +
    $('.selector').datepicker({ numberOfMonths: [2, 3] });
    +
    + + +
    + Get or set the numberOfMonths option, after init. +
    +
    +
    //getter
    +var numberOfMonths = $('.selector').datepicker('option', 'numberOfMonths');
    +//setter
    +$('.selector').datepicker('option', 'numberOfMonths', [2, 3]);
    +
    + +
    +
    +
  • + + +
  • +
    +

    prevText

    +
    +
    Type:
    +
    String
    + +
    Default:
    +
    'Prev'
    + +
    +
    +
    +

    The text to display for the previous month link. This attribute is one of the regionalisation attributes. With the standard ThemeRoller styling, this value is replaced by an icon.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the prevText option specified. +
    +
    +
    $('.selector').datepicker({ prevText: 'Earlier' });
    +
    + + +
    + Get or set the prevText option, after init. +
    +
    +
    //getter
    +var prevText = $('.selector').datepicker('option', 'prevText');
    +//setter
    +$('.selector').datepicker('option', 'prevText', 'Earlier');
    +
    + +
    +
    +
  • + + +
  • +
    +

    shortYearCutoff

    +
    +
    Type:
    +
    String, Number
    + +
    Default:
    +
    '+10'
    + +
    +
    +
    +

    Set the cutoff year for determining the century for a date (used in conjunction with dateFormat 'y'). If a numeric value (0-99) is provided then this value is used directly. If a string value is provided then it is converted to a number and added to the current year. Once the cutoff year is calculated, any dates entered with a year value less than or equal to it are considered to be in the current century, while those greater than it are deemed to be in the previous century.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the shortYearCutoff option specified. +
    +
    +
    $('.selector').datepicker({ shortYearCutoff: 50 });
    +
    + + +
    + Get or set the shortYearCutoff option, after init. +
    +
    +
    //getter
    +var shortYearCutoff = $('.selector').datepicker('option', 'shortYearCutoff');
    +//setter
    +$('.selector').datepicker('option', 'shortYearCutoff', 50);
    +
    + +
    +
    +
  • + + +
  • +
    +

    showAnim

    +
    +
    Type:
    +
    String
    + +
    Default:
    +
    'show'
    + +
    +
    +
    +

    Set the name of the animation used to show/hide the datepicker. Use 'show' (the default), 'slideDown', 'fadeIn', or any of the show/hide jQuery UI effects.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the showAnim option specified. +
    +
    +
    $('.selector').datepicker({ showAnim: 'fold' });
    +
    + + +
    + Get or set the showAnim option, after init. +
    +
    +
    //getter
    +var showAnim = $('.selector').datepicker('option', 'showAnim');
    +//setter
    +$('.selector').datepicker('option', 'showAnim', 'fold');
    +
    + +
    +
    +
  • + + +
  • +
    +

    showButtonPanel

    +
    +
    Type:
    +
    Boolean
    + +
    Default:
    +
    false
    + +
    +
    +
    +

    Whether to show the button panel.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the showButtonPanel option specified. +
    +
    +
    $('.selector').datepicker({ showButtonPanel: true });
    +
    + + +
    + Get or set the showButtonPanel option, after init. +
    +
    +
    //getter
    +var showButtonPanel = $('.selector').datepicker('option', 'showButtonPanel');
    +//setter
    +$('.selector').datepicker('option', 'showButtonPanel', true);
    +
    + +
    +
    +
  • + + +
  • +
    +

    showCurrentAtPos

    +
    +
    Type:
    +
    Number
    + +
    Default:
    +
    0
    + +
    +
    +
    +

    Specify where in a multi-month display the current month shows, starting from 0 at the top/left.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the showCurrentAtPos option specified. +
    +
    +
    $('.selector').datepicker({ showCurrentAtPos: 3 });
    +
    + + +
    + Get or set the showCurrentAtPos option, after init. +
    +
    +
    //getter
    +var showCurrentAtPos = $('.selector').datepicker('option', 'showCurrentAtPos');
    +//setter
    +$('.selector').datepicker('option', 'showCurrentAtPos', 3);
    +
    + +
    +
    +
  • + + +
  • +
    +

    showMonthAfterYear

    +
    +
    Type:
    +
    Boolean
    + +
    Default:
    +
    false
    + +
    +
    +
    +

    Whether to show the month after the year in the header.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the showMonthAfterYear option specified. +
    +
    +
    $('.selector').datepicker({ showMonthAfterYear: true });
    +
    + + +
    + Get or set the showMonthAfterYear option, after init. +
    +
    +
    //getter
    +var showMonthAfterYear = $('.selector').datepicker('option', 'showMonthAfterYear');
    +//setter
    +$('.selector').datepicker('option', 'showMonthAfterYear', true);
    +
    + +
    +
    +
  • + + +
  • +
    +

    showOn

    +
    +
    Type:
    +
    String
    + +
    Default:
    +
    'focus'
    + +
    +
    +
    +

    Have the datepicker appear automatically when the field receives focus ('focus'), appear only when a button is clicked ('button'), or appear when either event takes place ('both').

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the showOn option specified. +
    +
    +
    $('.selector').datepicker({ showOn: 'both' });
    +
    + + +
    + Get or set the showOn option, after init. +
    +
    +
    //getter
    +var showOn = $('.selector').datepicker('option', 'showOn');
    +//setter
    +$('.selector').datepicker('option', 'showOn', 'both');
    +
    + +
    +
    +
  • + + +
  • +
    +

    showOptions

    +
    +
    Type:
    +
    Options
    + +
    Default:
    +
    {}
    + +
    +
    +
    +

    If using one of the jQuery UI effects for showAnim, you can provide additional settings for that animation via this option.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the showOptions option specified. +
    +
    +
    $('.selector').datepicker({ showOptions: {direction: 'up' });
    +
    + + +
    + Get or set the showOptions option, after init. +
    +
    +
    //getter
    +var showOptions = $('.selector').datepicker('option', 'showOptions');
    +//setter
    +$('.selector').datepicker('option', 'showOptions', {direction: 'up');
    +
    + +
    +
    +
  • + + +
  • +
    +

    showOtherMonths

    +
    +
    Type:
    +
    Boolean
    + +
    Default:
    +
    false
    + +
    +
    +
    +

    Display dates in other months (non-selectable) at the start or end of the current month.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the showOtherMonths option specified. +
    +
    +
    $('.selector').datepicker({ showOtherMonths: true });
    +
    + + +
    + Get or set the showOtherMonths option, after init. +
    +
    +
    //getter
    +var showOtherMonths = $('.selector').datepicker('option', 'showOtherMonths');
    +//setter
    +$('.selector').datepicker('option', 'showOtherMonths', true);
    +
    + +
    +
    +
  • + + +
  • +
    +

    stepMonths

    +
    +
    Type:
    +
    Number
    + +
    Default:
    +
    1
    + +
    +
    +
    +

    Set how many months to move when clicking the Previous/Next links.

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the stepMonths option specified. +
    +
    +
    $('.selector').datepicker({ stepMonths: 3 });
    +
    + + +
    + Get or set the stepMonths option, after init. +
    +
    +
    //getter
    +var stepMonths = $('.selector').datepicker('option', 'stepMonths');
    +//setter
    +$('.selector').datepicker('option', 'stepMonths', 3);
    +
    + +
    +
    +
  • + + +
  • +
    +

    yearRange

    +
    +
    Type:
    +
    String
    + +
    Default:
    +
    '-10:+10'
    + +
    +
    +
    +

    Control the range of years displayed in the year drop-down: either relative to current year (-nn:+nn) or absolute (nnnn:nnnn).

    +
    +
    +

    Code examples

    +
    + +
    + Initialize a datepicker with the yearRange option specified. +
    +
    +
    $('.selector').datepicker({ yearRange: '2000:2010' });
    +
    + + +
    + Get or set the yearRange option, after init. +
    +
    +
    //getter
    +var yearRange = $('.selector').datepicker('option', 'yearRange');
    +//setter
    +$('.selector').datepicker('option', 'yearRange', '2000:2010');
    +
    + +
    +
    +
  • + +
+
+
+

Events

+
    + +
  • +
    +

    beforeShow

    +
    +
    +
    function(input)
    +
    +
    +
    +

    Can be a function that takes an input field and current datepicker instance and returns an options object to update the datepicker with. It is called just before the datepicker is displayed.

    +
    +
    +

    Code examples

    +
    + +
    + Supply a callback function to handle the beforeShow event as an init option. +
    +
    +
    $('.selector').datepicker({
    +   beforeShow: function(input) { ... }
    +});
    +
    + +
    +
    +
  • + + +
  • +
    +

    beforeShowDay

    +
    +
    +
    function(date)
    +
    +
    +
    +

    The function takes a date as a parameter and must return an array with [0] equal to true/false indicating whether or not this date is selectable, [1] equal to a CSS class name(s) or '' for the default presentation and [2] an optional popup tooltip for this date. It is called for each day in the datepicker before is it displayed.

    +
    +
    +

    Code examples

    +
    + +
    + Supply a callback function to handle the beforeShowDay event as an init option. +
    +
    +
    $('.selector').datepicker({
    +   beforeShowDay: function(date) { ... }
    +});
    +
    + +
    +
    +
  • + + +
  • +
    +

    onChangeMonthYear

    +
    +
    +
    function(year, month, inst)
    +
    +
    +
    +

    Allows you to define your own event when the datepicker moves to a new month and/or year. The function receives the selected year, month (1-12), and the datepicker instance as parameters. this refers to the associated input field.

    +
    +
    +

    Code examples

    +
    + +
    + Supply a callback function to handle the onChangeMonthYear event as an init option. +
    +
    +
    $('.selector').datepicker({
    +   onChangeMonthYear: function(year, month, inst) { ... }
    +});
    +
    + +
    +
    +
  • + + +
  • +
    +

    onClose

    +
    +
    +
    function(dateText, inst)
    +
    +
    +
    +

    Allows you to define your own event when the datepicker is closed, whether or not a date is selected. The function receives the selected date as text and the datepicker instance as parameters. this refers to the associated input field.

    +
    +
    +

    Code examples

    +
    + +
    + Supply a callback function to handle the onClose event as an init option. +
    +
    +
    $('.selector').datepicker({
    +   onClose: function(dateText, inst) { ... }
    +});
    +
    + +
    +
    +
  • + + +
  • +
    +

    onSelect

    +
    +
    +
    function(dateText, inst)
    +
    +
    +
    +

    Allows you to define your own event when the datepicker is selected. The function receives the selected date as text and the datepicker instance as parameters. this refers to the associated input field.

    +
    +
    +

    Code examples

    +
    + +
    + Supply a callback function to handle the onSelect event as an init option. +
    +
    +
    $('.selector').datepicker({
    +   onSelect: function(dateText, inst) { ... }
    +});
    +
    + +
    +
    +
  • + +
+
+
+

Methods

+
    + +
  • +
    +

    destroy

    +
    +
    Signature:
    +
    .datepicker( 'destroy' + + + + + + + +)
    +
    +
    +
    +

    Remove the datepicker functionality completely. This will return the element back to its pre-init state.

    +
    +
  • + + +
  • +
    +

    disable

    +
    +
    Signature:
    +
    .datepicker( 'disable' + + + + + + + +)
    +
    +
    +
    +

    Disable the datepicker.

    +
    +
  • + + +
  • +
    +

    enable

    +
    +
    Signature:
    +
    .datepicker( 'enable' + + + + + + + +)
    +
    +
    +
    +

    Enable the datepicker.

    +
    +
  • + + +
  • +
    +

    option

    +
    +
    Signature:
    +
    .datepicker( 'option' + +, optionName + +, [value] + + + +)
    +
    +
    +
    +

    Get or set any datepicker option. If no value is specified, will act as a getter.

    +
    +
  • + + +
  • +
    +

    dialog

    +
    +
    Signature:
    +
    .datepicker( 'dialog' + +, dateText + +, [onSelect] + +, [settings] + +, [pos] )
    +
    +
    +
    +

    Open a datepicker in a "dialog" box. +

    dateText: the initial date for the date picker. +

    onSelect: A callback function when a date is selected. The function receives the date text and date picker instance as parameters. +

    settings: The new settings for the date picker. +

    pos: The position of the top/left of the dialog as [x, y] or a MouseEvent that contains the coordinates. If not specified the dialog is centered on the screen.

    +
    +
  • + + +
  • +
    +

    isDisabled

    +
    +
    Signature:
    +
    .datepicker( 'isDisabled' + + + + + + + +)
    +
    +
    +
    +

    Determine whether a date picker has been disabled.

    +
    +
  • + + +
  • +
    +

    hide

    +
    +
    Signature:
    +
    .datepicker( 'hide' + +, [speed] + + + + + +)
    +
    +
    +
    +

    Close a previously opened date picker. +

    speed: The speed at which to close the date picker.

    +
    +
  • + + +
  • +
    +

    show

    +
    +
    Signature:
    +
    .datepicker( 'show' + + + + + + + +)
    +
    +
    +
    +

    Call up a previously attached date picker.

    +
    +
  • + + +
  • +
    +

    getDate

    +
    +
    Signature:
    +
    .datepicker( 'getDate' + + + + + + + +)
    +
    +
    +
    +

    Returns the current date for the datepicker.

    +
    +
  • + + +
  • +
    +

    setDate

    +
    +
    Signature:
    +
    .datepicker( 'setDate' + +, date + + + + + +)
    +
    +
    +
    +

    Sets the current date for the datepicker. The new date may also be a number of days from today (e.g. +7) or a string of values and periods ('y' for years, 'm' for months, 'w' for weeks, 'd' for days, e.g. '+1m +7d'), or null for today.

    +
    +
  • + +
+
+
+

Theming

+

The jQuery UI Datepicker plugin uses the jQuery UI CSS Framework to style its look and feel, including colors and background textures. We recommend using the ThemeRoller tool to create and download custom themes that are easy to build and maintain. +

+

If a deeper level of customization is needed, there are widget-specific classes referenced within the ui.datepicker.css stylesheet that can be modified. These classes are highlighed in bold below. +

+ +

Sample markup with jQuery UI CSS Framework classes

+ <div id="ui-datepicker-div" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible">
+   <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all">
+      <a class="ui-datepicker-prev ui-corner-all">title="Prev"><span class="ui-icon ui-icon-circle-triangle-w">Prev</span></a>
+      <a class="ui-datepicker-next ui-corner-all" title="Next"><span class="ui-icon ui-icon-circle-triangle-e">Next</span></a>
+      <div class="ui-datepicker-title">
+         <span class="ui-datepicker-month">January</span><span class="ui-datepicker-year">2009</span>
+      </div>
+   </div>
+   <table class="ui-datepicker-calendar">
+      <thead>
+      <tr>
+         <th class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
+         ...
+      </tr>
+      </thead>
+      <tbody><tr>
+         <td class="ui-datepicker-week-end ui-datepicker-other-month "> 1 </td>
+         ...
+      </tr>
+      </tbody>
+   </table>
+   <div class="ui-datepicker-buttonpane ui-widget-content">
+      <button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all">Today</button>
+      <button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all">Done</button>
+   </div>
+</div>
+

+ + Note: This is a sample of markup generated by the datepicker plugin, not markup you should use to create a datepicker. The only markup needed for that is <input type="text" /> or <div></div>. + +

+ +
+
+ +

+ + diff --git a/jquery/development-bundle/external/bgiframe/ChangeLog.txt b/jquery/development-bundle/external/bgiframe/ChangeLog.txt new file mode 100644 index 0000000..ccebcbf --- /dev/null +++ b/jquery/development-bundle/external/bgiframe/ChangeLog.txt @@ -0,0 +1,20 @@ +== New and Noteworthy == + +== 2.1.1 == + +* Removed $.browser.version for jQuery < 1.1.3 + +== 2.1 == + +* Updated to work with jQuery 1.1.3 +* Added $.browser.version for jQuery < 1.1.3 +* Optimized duplication check by using child selector and using .length test + +== 2.0 == + +* Added ability change settings like width, height, src and more. + +== 1.0 == + +* Only adds iframe once per an element +* Works with SSL enabled pages \ No newline at end of file diff --git a/jquery/development-bundle/external/bgiframe/META.json b/jquery/development-bundle/external/bgiframe/META.json new file mode 100644 index 0000000..5be79cc --- /dev/null +++ b/jquery/development-bundle/external/bgiframe/META.json @@ -0,0 +1,32 @@ +{ + "name": "jQuery-bgiframe", + "version": 2.1, + "author": [ + "Brandon Aaron " + ], + "abstract": "jQuery plugin for fixing z-index issues in IE6", + "license": "mit, gpl", + "distribution_type": "plugin", + "requires": { + "jQuery": ">=1.0.3" + }, + "provides": { + "jQuery.bgiframe": { + "version": 2.1, + "file": "jquery.bgiframe.js" + } + }, + "keywords": [ + "iframe", + "hack", + "zIndex", + "z-index", + "ie6" + ], + "stability": "Official", + "meta-spec": { + "version": 1.3, + "url": "http://module-build.sourceforge.net/META-spec-v1.3.html" + }, + "generated_by": "Brandon Aaron" +} diff --git a/jquery/development-bundle/external/bgiframe/docs/index.html b/jquery/development-bundle/external/bgiframe/docs/index.html new file mode 100644 index 0000000..1776b4d --- /dev/null +++ b/jquery/development-bundle/external/bgiframe/docs/index.html @@ -0,0 +1,113 @@ + + + + + bgiframe 2.1.1 docs + + + + + +
+
+

bgiframe 2.1.1

+ +
+
What does it do?
+
+

Have you ever experienced the select form element z-index issue in Internet Explorer 6? Most likely you have if you've implemented some sort of drop down menu navigation that shows up over a select form element.

+

The background iframe (bgiframe) plugin provides a very small, quick and easy way to fix that problem so you don't have to worry about it. No matter the size, borders or position the bgiframe plugin can fix it.

+
+ +
When should I use it?
+
+

The bgiframe plugin should be used when you are trying to show elements above a select form control in Internet Explorer 6.

+
+ +
How do I use it?
+
+

The usage is simple. Just call bgiframe on a jQuery collection of elements.

+

$('.fix-z-index').bgiframe();

+

The plugin tries its best to handle most situations but sometimes some configuration is necessary. For example if your borders are defined in a unit other than pixels, you will need to manually set the top and left properties to the negative width of the border. Here are the options/settings available to configure the output.

+
+
top
+
+

The iframe must be offset to the top by the width of the top border. This should be a negative number representing the border-top-width. If a number is is used here, pixels will be assumed. Otherwise, be sure to specify a unit. An expression could also be used. By default the value is "auto" which will use an expression to get the border-top-width if it is in pixels.

+

$('.fix-z-index').bgiframe({ top: '-1em' });

+
+
left
+
+

The iframe must be offset to the left by the width of the left border. This should be a negative number representing the border-left-width. If a number is used here, pixels will be assumed. Otherwise, be sure to specify a unit. An expression could also be used. By default the value is "auto" which will use an expression to get the border-left-width if it is in pixels.

+

$('.fix-z-index').bgiframe({ left: '-1em' });

+
+
width
+
+

This is the width of the iframe. If a number is used here, pixels will be assume. Otherwise, be sure to specify a unit. An expression could also be used. By default the value is "auto" which will use an expression to get the offsetWidth.

+

$('.fix-z-index').bgiframe({ width: 100 });

+
+
height
+
+

This is the height of the iframe. If a number is used here, pixels will be assume. Otherwise, be sure to specify a unit. An expression could also be used. By default the value is "auto" which will use an expression to get the offsetHeight.

+

$('.fix-z-index').bgiframe({ height: 100 });

+
+
opacity
+
+

This is a boolean representing whether or not to use opacity. If set to true, the opacity of 0 is applied. If set to false, the opacity filter is not applied. Default: true.

+

$('.fix-z-index').bgiframe({ opacity: false });

+
+
src
+
+

This setting is provided so that one could change the src of the iframe to whatever they need. Default: "javascript:false;"

+

$('.fix-z-index').bgiframe({ src: '#' });

+
+
+
+ +
How does it work?
+
+

The bgiframe plugin works by prepending an iframe to the element. The iframe is given a class of bgiframe and positioned below all the other children of the element. In the default configuration it automatically adjusts to the width and height of the element (including the borders) and the opacity is set to 0. The element needs to have position (relative or absolute) and should have a background (color or image).

+

Check out the test page to see the plugin in action.

+
+ +
Where can I get it?
+
+
    +
  • 2.1 zip from the bgiframe project page.
  • +
  • Latest SVN: http://jqueryjs.googlecode.com/svn/trunk/plugins/bgiframe/
  • +
  • Tagged Versions in SVN: Latest SVN: http://jqueryjs.googlecode.com/svn/tags/plugins/bgiframe/
  • +
+
+ +
Suggestions? Bugs? Patches?
+
+

Feel free to make any suggestions, bug reports or add any patches via the project page.

+
+
+

The bgiframe plugin is authored by Brandon Aaron (http://brandonaaron.net/)

+
+
+ + \ No newline at end of file diff --git a/jquery/development-bundle/external/bgiframe/jquery.bgiframe.js b/jquery/development-bundle/external/bgiframe/jquery.bgiframe.js new file mode 100644 index 0000000..3a01f6e --- /dev/null +++ b/jquery/development-bundle/external/bgiframe/jquery.bgiframe.js @@ -0,0 +1,100 @@ +/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net) + * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) + * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. + * + * $LastChangedDate: 2007-07-21 18:44:59 -0500 (Sat, 21 Jul 2007) $ + * $Rev: 2446 $ + * + * Version 2.1.1 + */ + +(function($){ + +/** + * The bgiframe is chainable and applies the iframe hack to get + * around zIndex issues in IE6. It will only apply itself in IE6 + * and adds a class to the iframe called 'bgiframe'. The iframe + * is appeneded as the first child of the matched element(s) + * with a tabIndex and zIndex of -1. + * + * By default the plugin will take borders, sized with pixel units, + * into account. If a different unit is used for the border's width, + * then you will need to use the top and left settings as explained below. + * + * NOTICE: This plugin has been reported to cause perfromance problems + * when used on elements that change properties (like width, height and + * opacity) a lot in IE6. Most of these problems have been caused by + * the expressions used to calculate the elements width, height and + * borders. Some have reported it is due to the opacity filter. All + * these settings can be changed if needed as explained below. + * + * @example $('div').bgiframe(); + * @before

Paragraph

+ * @result
' : ''); + inst._keyEvent = false; + return html; + }, + + /* Generate the month and year header. */ + _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, + selectedDate, secondary, monthNames, monthNamesShort) { + minDate = (inst.rangeStart && minDate && selectedDate < minDate ? selectedDate : minDate); + var changeMonth = this._get(inst, 'changeMonth'); + var changeYear = this._get(inst, 'changeYear'); + var showMonthAfterYear = this._get(inst, 'showMonthAfterYear'); + var html = '
'; + var monthHtml = ''; + // month selection + if (secondary || !changeMonth) + monthHtml += '' + monthNames[drawMonth] + ' '; + else { + var inMinYear = (minDate && minDate.getFullYear() == drawYear); + var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear); + monthHtml += ''; + } + if (!showMonthAfterYear) + html += monthHtml + ((secondary || changeMonth || changeYear) && (!(changeMonth && changeYear)) ? ' ' : ''); + // year selection + if (secondary || !changeYear) + html += '' + drawYear + ''; + else { + // determine range of years to display + var years = this._get(inst, 'yearRange').split(':'); + var year = 0; + var endYear = 0; + if (years.length != 2) { + year = drawYear - 10; + endYear = drawYear + 10; + } else if (years[0].charAt(0) == '+' || years[0].charAt(0) == '-') { + year = drawYear + parseInt(years[0], 10); + endYear = drawYear + parseInt(years[1], 10); + } else { + year = parseInt(years[0], 10); + endYear = parseInt(years[1], 10); + } + year = (minDate ? Math.max(year, minDate.getFullYear()) : year); + endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); + html += ''; + } + if (showMonthAfterYear) + html += (secondary || changeMonth || changeYear ? ' ' : '') + monthHtml; + html += '
'; // Close datepicker_header + return html; + }, + + /* Adjust one of the date sub-fields. */ + _adjustInstDate: function(inst, offset, period) { + var year = inst.drawYear + (period == 'Y' ? offset : 0); + var month = inst.drawMonth + (period == 'M' ? offset : 0); + var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + + (period == 'D' ? offset : 0); + var date = this._daylightSavingAdjust(new Date(year, month, day)); + // ensure it is within the bounds set + var minDate = this._getMinMaxDate(inst, 'min', true); + var maxDate = this._getMinMaxDate(inst, 'max'); + date = (minDate && date < minDate ? minDate : date); + date = (maxDate && date > maxDate ? maxDate : date); + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + if (period == 'M' || period == 'Y') + this._notifyChange(inst); + }, + + /* Notify change of month/year. */ + _notifyChange: function(inst) { + var onChange = this._get(inst, 'onChangeMonthYear'); + if (onChange) + onChange.apply((inst.input ? inst.input[0] : null), + [inst.selectedYear, inst.selectedMonth + 1, inst]); + }, + + /* Determine the number of months to show. */ + _getNumberOfMonths: function(inst) { + var numMonths = this._get(inst, 'numberOfMonths'); + return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths)); + }, + + /* Determine the current maximum date - ensure no time components are set - may be overridden for a range. */ + _getMinMaxDate: function(inst, minMax, checkRange) { + var date = this._determineDate(this._get(inst, minMax + 'Date'), null); + return (!checkRange || !inst.rangeStart ? date : + (!date || inst.rangeStart > date ? inst.rangeStart : date)); + }, + + /* Find the number of days in a given month. */ + _getDaysInMonth: function(year, month) { + return 32 - new Date(year, month, 32).getDate(); + }, + + /* Find the day of the week of the first of a month. */ + _getFirstDayOfMonth: function(year, month) { + return new Date(year, month, 1).getDay(); + }, + + /* Determines if we should allow a "next/prev" month display change. */ + _canAdjustMonth: function(inst, offset, curYear, curMonth) { + var numMonths = this._getNumberOfMonths(inst); + var date = this._daylightSavingAdjust(new Date( + curYear, curMonth + (offset < 0 ? offset : numMonths[1]), 1)); + if (offset < 0) + date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); + return this._isInRange(inst, date); + }, + + /* Is the given date in the accepted range? */ + _isInRange: function(inst, date) { + // during range selection, use minimum of selected date and range start + var newMinDate = (!inst.rangeStart ? null : this._daylightSavingAdjust( + new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay))); + newMinDate = (newMinDate && inst.rangeStart < newMinDate ? inst.rangeStart : newMinDate); + var minDate = newMinDate || this._getMinMaxDate(inst, 'min'); + var maxDate = this._getMinMaxDate(inst, 'max'); + return ((!minDate || date >= minDate) && (!maxDate || date <= maxDate)); + }, + + /* Provide the configuration settings for formatting/parsing. */ + _getFormatConfig: function(inst) { + var shortYearCutoff = this._get(inst, 'shortYearCutoff'); + shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : + new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); + return {shortYearCutoff: shortYearCutoff, + dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'), + monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')}; + }, + + /* Format the given date for display. */ + _formatDate: function(inst, day, month, year) { + if (!day) { + inst.currentDay = inst.selectedDay; + inst.currentMonth = inst.selectedMonth; + inst.currentYear = inst.selectedYear; + } + var date = (day ? (typeof day == 'object' ? day : + this._daylightSavingAdjust(new Date(year, month, day))) : + this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); + return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst)); + } +}); + +/* jQuery extend now ignores nulls! */ +function extendRemove(target, props) { + $.extend(target, props); + for (var name in props) + if (props[name] == null || props[name] == undefined) + target[name] = props[name]; + return target; +}; + +/* Determine whether an object is an array. */ +function isArray(a) { + return (a && (($.browser.safari && typeof a == 'object' && a.length) || + (a.constructor && a.constructor.toString().match(/\Array\(\)/)))); +}; + +/* Invoke the datepicker functionality. + @param options string - a command, optionally followed by additional parameters or + Object - settings for attaching new datepicker functionality + @return jQuery object */ +$.fn.datepicker = function(options){ + + /* Initialise the date picker. */ + if (!$.datepicker.initialized) { + $(document).mousedown($.datepicker._checkExternalClick). + find('body').append($.datepicker.dpDiv); + $.datepicker.initialized = true; + } + + var otherArgs = Array.prototype.slice.call(arguments, 1); + if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate')) + return $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this[0]].concat(otherArgs)); + if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string') + return $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this[0]].concat(otherArgs)); + return this.each(function() { + typeof options == 'string' ? + $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this].concat(otherArgs)) : + $.datepicker._attachDatepicker(this, options); + }); +}; + +$.datepicker = new Datepicker(); // singleton instance +$.datepicker.initialized = false; +$.datepicker.uuid = new Date().getTime(); +$.datepicker.version = "1.7.2"; + +// Workaround for #4055 +// Add another global to avoid noConflict issues with inline event handlers +window.DP_jQuery = $; + +})(jQuery); diff --git a/jquery/development-bundle/ui/ui.core.js b/jquery/development-bundle/ui/ui.core.js new file mode 100644 index 0000000..5493e0a --- /dev/null +++ b/jquery/development-bundle/ui/ui.core.js @@ -0,0 +1,519 @@ +/* + * jQuery UI 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +;jQuery.ui || (function($) { + +var _remove = $.fn.remove, + isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9); + +//Helper functions and ui object +$.ui = { + version: "1.7.2", + + // $.ui.plugin is deprecated. Use the proxy pattern instead. + plugin: { + add: function(module, option, set) { + var proto = $.ui[module].prototype; + for(var i in set) { + proto.plugins[i] = proto.plugins[i] || []; + proto.plugins[i].push([option, set[i]]); + } + }, + call: function(instance, name, args) { + var set = instance.plugins[name]; + if(!set || !instance.element[0].parentNode) { return; } + + for (var i = 0; i < set.length; i++) { + if (instance.options[set[i][0]]) { + set[i][1].apply(instance.element, args); + } + } + } + }, + + contains: function(a, b) { + return document.compareDocumentPosition + ? a.compareDocumentPosition(b) & 16 + : a !== b && a.contains(b); + }, + + hasScroll: function(el, a) { + + //If overflow is hidden, the element might have extra content, but the user wants to hide it + if ($(el).css('overflow') == 'hidden') { return false; } + + var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop', + has = false; + + if (el[scroll] > 0) { return true; } + + // TODO: determine which cases actually cause this to happen + // if the element doesn't have the scroll set, see if it's possible to + // set the scroll + el[scroll] = 1; + has = (el[scroll] > 0); + el[scroll] = 0; + return has; + }, + + isOverAxis: function(x, reference, size) { + //Determines when x coordinate is over "b" element axis + return (x > reference) && (x < (reference + size)); + }, + + isOver: function(y, x, top, left, height, width) { + //Determines when x, y coordinates is over "b" element + return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width); + }, + + keyCode: { + BACKSPACE: 8, + CAPS_LOCK: 20, + COMMA: 188, + CONTROL: 17, + DELETE: 46, + DOWN: 40, + END: 35, + ENTER: 13, + ESCAPE: 27, + HOME: 36, + INSERT: 45, + LEFT: 37, + NUMPAD_ADD: 107, + NUMPAD_DECIMAL: 110, + NUMPAD_DIVIDE: 111, + NUMPAD_ENTER: 108, + NUMPAD_MULTIPLY: 106, + NUMPAD_SUBTRACT: 109, + PAGE_DOWN: 34, + PAGE_UP: 33, + PERIOD: 190, + RIGHT: 39, + SHIFT: 16, + SPACE: 32, + TAB: 9, + UP: 38 + } +}; + +// WAI-ARIA normalization +if (isFF2) { + var attr = $.attr, + removeAttr = $.fn.removeAttr, + ariaNS = "http://www.w3.org/2005/07/aaa", + ariaState = /^aria-/, + ariaRole = /^wairole:/; + + $.attr = function(elem, name, value) { + var set = value !== undefined; + + return (name == 'role' + ? (set + ? attr.call(this, elem, name, "wairole:" + value) + : (attr.apply(this, arguments) || "").replace(ariaRole, "")) + : (ariaState.test(name) + ? (set + ? elem.setAttributeNS(ariaNS, + name.replace(ariaState, "aaa:"), value) + : attr.call(this, elem, name.replace(ariaState, "aaa:"))) + : attr.apply(this, arguments))); + }; + + $.fn.removeAttr = function(name) { + return (ariaState.test(name) + ? this.each(function() { + this.removeAttributeNS(ariaNS, name.replace(ariaState, "")); + }) : removeAttr.call(this, name)); + }; +} + +//jQuery plugins +$.fn.extend({ + remove: function() { + // Safari has a native remove event which actually removes DOM elements, + // so we have to use triggerHandler instead of trigger (#3037). + $("*", this).add(this).each(function() { + $(this).triggerHandler("remove"); + }); + return _remove.apply(this, arguments ); + }, + + enableSelection: function() { + return this + .attr('unselectable', 'off') + .css('MozUserSelect', '') + .unbind('selectstart.ui'); + }, + + disableSelection: function() { + return this + .attr('unselectable', 'on') + .css('MozUserSelect', 'none') + .bind('selectstart.ui', function() { return false; }); + }, + + scrollParent: function() { + var scrollParent; + if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) { + scrollParent = this.parents().filter(function() { + return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1)); + }).eq(0); + } else { + scrollParent = this.parents().filter(function() { + return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1)); + }).eq(0); + } + + return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent; + } +}); + + +//Additional selectors +$.extend($.expr[':'], { + data: function(elem, i, match) { + return !!$.data(elem, match[3]); + }, + + focusable: function(element) { + var nodeName = element.nodeName.toLowerCase(), + tabIndex = $.attr(element, 'tabindex'); + return (/input|select|textarea|button|object/.test(nodeName) + ? !element.disabled + : 'a' == nodeName || 'area' == nodeName + ? element.href || !isNaN(tabIndex) + : !isNaN(tabIndex)) + // the element and all of its ancestors must be visible + // the browser may report that the area is hidden + && !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length; + }, + + tabbable: function(element) { + var tabIndex = $.attr(element, 'tabindex'); + return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable'); + } +}); + + +// $.widget is a factory to create jQuery plugins +// taking some boilerplate code out of the plugin code +function getter(namespace, plugin, method, args) { + function getMethods(type) { + var methods = $[namespace][plugin][type] || []; + return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods); + } + + var methods = getMethods('getter'); + if (args.length == 1 && typeof args[0] == 'string') { + methods = methods.concat(getMethods('getterSetter')); + } + return ($.inArray(method, methods) != -1); +} + +$.widget = function(name, prototype) { + var namespace = name.split(".")[0]; + name = name.split(".")[1]; + + // create plugin method + $.fn[name] = function(options) { + var isMethodCall = (typeof options == 'string'), + args = Array.prototype.slice.call(arguments, 1); + + // prevent calls to internal methods + if (isMethodCall && options.substring(0, 1) == '_') { + return this; + } + + // handle getter methods + if (isMethodCall && getter(namespace, name, options, args)) { + var instance = $.data(this[0], name); + return (instance ? instance[options].apply(instance, args) + : undefined); + } + + // handle initialization and non-getter methods + return this.each(function() { + var instance = $.data(this, name); + + // constructor + (!instance && !isMethodCall && + $.data(this, name, new $[namespace][name](this, options))._init()); + + // method call + (instance && isMethodCall && $.isFunction(instance[options]) && + instance[options].apply(instance, args)); + }); + }; + + // create widget constructor + $[namespace] = $[namespace] || {}; + $[namespace][name] = function(element, options) { + var self = this; + + this.namespace = namespace; + this.widgetName = name; + this.widgetEventPrefix = $[namespace][name].eventPrefix || name; + this.widgetBaseClass = namespace + '-' + name; + + this.options = $.extend({}, + $.widget.defaults, + $[namespace][name].defaults, + $.metadata && $.metadata.get(element)[name], + options); + + this.element = $(element) + .bind('setData.' + name, function(event, key, value) { + if (event.target == element) { + return self._setData(key, value); + } + }) + .bind('getData.' + name, function(event, key) { + if (event.target == element) { + return self._getData(key); + } + }) + .bind('remove', function() { + return self.destroy(); + }); + }; + + // add widget prototype + $[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype); + + // TODO: merge getter and getterSetter properties from widget prototype + // and plugin prototype + $[namespace][name].getterSetter = 'option'; +}; + +$.widget.prototype = { + _init: function() {}, + destroy: function() { + this.element.removeData(this.widgetName) + .removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled') + .removeAttr('aria-disabled'); + }, + + option: function(key, value) { + var options = key, + self = this; + + if (typeof key == "string") { + if (value === undefined) { + return this._getData(key); + } + options = {}; + options[key] = value; + } + + $.each(options, function(key, value) { + self._setData(key, value); + }); + }, + _getData: function(key) { + return this.options[key]; + }, + _setData: function(key, value) { + this.options[key] = value; + + if (key == 'disabled') { + this.element + [value ? 'addClass' : 'removeClass']( + this.widgetBaseClass + '-disabled' + ' ' + + this.namespace + '-state-disabled') + .attr("aria-disabled", value); + } + }, + + enable: function() { + this._setData('disabled', false); + }, + disable: function() { + this._setData('disabled', true); + }, + + _trigger: function(type, event, data) { + var callback = this.options[type], + eventName = (type == this.widgetEventPrefix + ? type : this.widgetEventPrefix + type); + + event = $.Event(event); + event.type = eventName; + + // copy original event properties over to the new event + // this would happen if we could call $.event.fix instead of $.Event + // but we don't have a way to force an event to be fixed multiple times + if (event.originalEvent) { + for (var i = $.event.props.length, prop; i;) { + prop = $.event.props[--i]; + event[prop] = event.originalEvent[prop]; + } + } + + this.element.trigger(event, data); + + return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false + || event.isDefaultPrevented()); + } +}; + +$.widget.defaults = { + disabled: false +}; + + +/** Mouse Interaction Plugin **/ + +$.ui.mouse = { + _mouseInit: function() { + var self = this; + + this.element + .bind('mousedown.'+this.widgetName, function(event) { + return self._mouseDown(event); + }) + .bind('click.'+this.widgetName, function(event) { + if(self._preventClickEvent) { + self._preventClickEvent = false; + event.stopImmediatePropagation(); + return false; + } + }); + + // Prevent text selection in IE + if ($.browser.msie) { + this._mouseUnselectable = this.element.attr('unselectable'); + this.element.attr('unselectable', 'on'); + } + + this.started = false; + }, + + // TODO: make sure destroying one instance of mouse doesn't mess with + // other instances of mouse + _mouseDestroy: function() { + this.element.unbind('.'+this.widgetName); + + // Restore text selection in IE + ($.browser.msie + && this.element.attr('unselectable', this._mouseUnselectable)); + }, + + _mouseDown: function(event) { + // don't let more than one widget handle mouseStart + // TODO: figure out why we have to use originalEvent + event.originalEvent = event.originalEvent || {}; + if (event.originalEvent.mouseHandled) { return; } + + // we may have missed mouseup (out of window) + (this._mouseStarted && this._mouseUp(event)); + + this._mouseDownEvent = event; + + var self = this, + btnIsLeft = (event.which == 1), + elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false); + if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { + return true; + } + + this.mouseDelayMet = !this.options.delay; + if (!this.mouseDelayMet) { + this._mouseDelayTimer = setTimeout(function() { + self.mouseDelayMet = true; + }, this.options.delay); + } + + if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { + this._mouseStarted = (this._mouseStart(event) !== false); + if (!this._mouseStarted) { + event.preventDefault(); + return true; + } + } + + // these delegates are required to keep context + this._mouseMoveDelegate = function(event) { + return self._mouseMove(event); + }; + this._mouseUpDelegate = function(event) { + return self._mouseUp(event); + }; + $(document) + .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate) + .bind('mouseup.'+this.widgetName, this._mouseUpDelegate); + + // preventDefault() is used to prevent the selection of text here - + // however, in Safari, this causes select boxes not to be selectable + // anymore, so this fix is needed + ($.browser.safari || event.preventDefault()); + + event.originalEvent.mouseHandled = true; + return true; + }, + + _mouseMove: function(event) { + // IE mouseup check - mouseup happened when mouse was out of window + if ($.browser.msie && !event.button) { + return this._mouseUp(event); + } + + if (this._mouseStarted) { + this._mouseDrag(event); + return event.preventDefault(); + } + + if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { + this._mouseStarted = + (this._mouseStart(this._mouseDownEvent, event) !== false); + (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); + } + + return !this._mouseStarted; + }, + + _mouseUp: function(event) { + $(document) + .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate) + .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate); + + if (this._mouseStarted) { + this._mouseStarted = false; + this._preventClickEvent = (event.target == this._mouseDownEvent.target); + this._mouseStop(event); + } + + return false; + }, + + _mouseDistanceMet: function(event) { + return (Math.max( + Math.abs(this._mouseDownEvent.pageX - event.pageX), + Math.abs(this._mouseDownEvent.pageY - event.pageY) + ) >= this.options.distance + ); + }, + + _mouseDelayMet: function(event) { + return this.mouseDelayMet; + }, + + // These are placeholder methods, to be overriden by extending plugin + _mouseStart: function(event) {}, + _mouseDrag: function(event) {}, + _mouseStop: function(event) {}, + _mouseCapture: function(event) { return true; } +}; + +$.ui.mouse.defaults = { + cancel: null, + distance: 1, + delay: 0 +}; + +})(jQuery); diff --git a/jquery/development-bundle/ui/ui.datepicker.js b/jquery/development-bundle/ui/ui.datepicker.js new file mode 100644 index 0000000..0ce166e --- /dev/null +++ b/jquery/development-bundle/ui/ui.datepicker.js @@ -0,0 +1,1636 @@ +/* + * jQuery UI Datepicker 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Datepicker + * + * Depends: + * ui.core.js + */ + +(function($) { // hide the namespace + +$.extend($.ui, { datepicker: { version: "1.7.2" } }); + +var PROP_NAME = 'datepicker'; + +/* Date picker manager. + Use the singleton instance of this class, $.datepicker, to interact with the date picker. + Settings for (groups of) date pickers are maintained in an instance object, + allowing multiple different settings on the same page. */ + +function Datepicker() { + this.debug = false; // Change this to true to start debugging + this._curInst = null; // The current instance in use + this._keyEvent = false; // If the last event was a key event + this._disabledInputs = []; // List of date picker inputs that have been disabled + this._datepickerShowing = false; // True if the popup picker is showing , false if not + this._inDialog = false; // True if showing within a "dialog", false if not + this._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division + this._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class + this._appendClass = 'ui-datepicker-append'; // The name of the append marker class + this._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class + this._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class + this._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class + this._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class + this._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class + this._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class + this.regional = []; // Available regional settings, indexed by language code + this.regional[''] = { // Default regional settings + closeText: 'Done', // Display text for close link + prevText: 'Prev', // Display text for previous month link + nextText: 'Next', // Display text for next month link + currentText: 'Today', // Display text for current month link + monthNames: ['January','February','March','April','May','June', + 'July','August','September','October','November','December'], // Names of months for drop-down and formatting + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting + dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday + dateFormat: 'mm/dd/yy', // See format options on parseDate + firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ... + isRTL: false // True if right-to-left language, false if left-to-right + }; + this._defaults = { // Global defaults for all the date picker instances + showOn: 'focus', // 'focus' for popup on focus, + // 'button' for trigger button, or 'both' for either + showAnim: 'show', // Name of jQuery animation for popup + showOptions: {}, // Options for enhanced animations + defaultDate: null, // Used when field is blank: actual date, + // +/-number for offset from today, null for today + appendText: '', // Display text following the input box, e.g. showing the format + buttonText: '...', // Text for trigger button + buttonImage: '', // URL for trigger button image + buttonImageOnly: false, // True if the image appears alone, false if it appears on a button + hideIfNoPrevNext: false, // True to hide next/previous month links + // if not applicable, false to just disable them + navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links + gotoCurrent: false, // True if today link goes back to current selection instead + changeMonth: false, // True if month can be selected directly, false if only prev/next + changeYear: false, // True if year can be selected directly, false if only prev/next + showMonthAfterYear: false, // True if the year select precedes month, false for month then year + yearRange: '-10:+10', // Range of years to display in drop-down, + // either relative to current year (-nn:+nn) or absolute (nnnn:nnnn) + showOtherMonths: false, // True to show dates in other months, false to leave blank + calculateWeek: this.iso8601Week, // How to calculate the week of the year, + // takes a Date and returns the number of the week for it + shortYearCutoff: '+10', // Short year values < this are in the current century, + // > this are in the previous century, + // string value starting with '+' for current year + value + minDate: null, // The earliest selectable date, or null for no limit + maxDate: null, // The latest selectable date, or null for no limit + duration: 'normal', // Duration of display/closure + beforeShowDay: null, // Function that takes a date and returns an array with + // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '', + // [2] = cell title (optional), e.g. $.datepicker.noWeekends + beforeShow: null, // Function that takes an input field and + // returns a set of custom settings for the date picker + onSelect: null, // Define a callback function when a date is selected + onChangeMonthYear: null, // Define a callback function when the month or year is changed + onClose: null, // Define a callback function when the datepicker is closed + numberOfMonths: 1, // Number of months to show at a time + showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0) + stepMonths: 1, // Number of months to step back/forward + stepBigMonths: 12, // Number of months to step back/forward for the big links + altField: '', // Selector for an alternate field to store selected dates into + altFormat: '', // The date format to use for the alternate field + constrainInput: true, // The input is constrained by the current date format + showButtonPanel: false // True to show button panel, false to not show it + }; + $.extend(this._defaults, this.regional['']); + this.dpDiv = $('
'); +} + +$.extend(Datepicker.prototype, { + /* Class name added to elements to indicate already configured with a date picker. */ + markerClassName: 'hasDatepicker', + + /* Debug logging (if enabled). */ + log: function () { + if (this.debug) + console.log.apply('', arguments); + }, + + /* Override the default settings for all instances of the date picker. + @param settings object - the new settings to use as defaults (anonymous object) + @return the manager object */ + setDefaults: function(settings) { + extendRemove(this._defaults, settings || {}); + return this; + }, + + /* Attach the date picker to a jQuery selection. + @param target element - the target input field or division or span + @param settings object - the new settings to use for this date picker instance (anonymous) */ + _attachDatepicker: function(target, settings) { + // check for settings on the control itself - in namespace 'date:' + var inlineSettings = null; + for (var attrName in this._defaults) { + var attrValue = target.getAttribute('date:' + attrName); + if (attrValue) { + inlineSettings = inlineSettings || {}; + try { + inlineSettings[attrName] = eval(attrValue); + } catch (err) { + inlineSettings[attrName] = attrValue; + } + } + } + var nodeName = target.nodeName.toLowerCase(); + var inline = (nodeName == 'div' || nodeName == 'span'); + if (!target.id) + target.id = 'dp' + (++this.uuid); + var inst = this._newInst($(target), inline); + inst.settings = $.extend({}, settings || {}, inlineSettings || {}); + if (nodeName == 'input') { + this._connectDatepicker(target, inst); + } else if (inline) { + this._inlineDatepicker(target, inst); + } + }, + + /* Create a new instance object. */ + _newInst: function(target, inline) { + var id = target[0].id.replace(/([:\[\]\.])/g, '\\\\$1'); // escape jQuery meta chars + return {id: id, input: target, // associated target + selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection + drawMonth: 0, drawYear: 0, // month being drawn + inline: inline, // is datepicker inline or not + dpDiv: (!inline ? this.dpDiv : // presentation div + $('
'))}; + }, + + /* Attach the date picker to an input field. */ + _connectDatepicker: function(target, inst) { + var input = $(target); + inst.append = $([]); + inst.trigger = $([]); + if (input.hasClass(this.markerClassName)) + return; + var appendText = this._get(inst, 'appendText'); + var isRTL = this._get(inst, 'isRTL'); + if (appendText) { + inst.append = $('' + appendText + ''); + input[isRTL ? 'before' : 'after'](inst.append); + } + var showOn = this._get(inst, 'showOn'); + if (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field + input.focus(this._showDatepicker); + if (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked + var buttonText = this._get(inst, 'buttonText'); + var buttonImage = this._get(inst, 'buttonImage'); + inst.trigger = $(this._get(inst, 'buttonImageOnly') ? + $('').addClass(this._triggerClass). + attr({ src: buttonImage, alt: buttonText, title: buttonText }) : + $('').addClass(this._triggerClass). + html(buttonImage == '' ? buttonText : $('').attr( + { src:buttonImage, alt:buttonText, title:buttonText }))); + input[isRTL ? 'before' : 'after'](inst.trigger); + inst.trigger.click(function() { + if ($.datepicker._datepickerShowing && $.datepicker._lastInput == target) + $.datepicker._hideDatepicker(); + else + $.datepicker._showDatepicker(target); + return false; + }); + } + input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress). + bind("setData.datepicker", function(event, key, value) { + inst.settings[key] = value; + }).bind("getData.datepicker", function(event, key) { + return this._get(inst, key); + }); + $.data(target, PROP_NAME, inst); + }, + + /* Attach an inline date picker to a div. */ + _inlineDatepicker: function(target, inst) { + var divSpan = $(target); + if (divSpan.hasClass(this.markerClassName)) + return; + divSpan.addClass(this.markerClassName).append(inst.dpDiv). + bind("setData.datepicker", function(event, key, value){ + inst.settings[key] = value; + }).bind("getData.datepicker", function(event, key){ + return this._get(inst, key); + }); + $.data(target, PROP_NAME, inst); + this._setDate(inst, this._getDefaultDate(inst)); + this._updateDatepicker(inst); + this._updateAlternate(inst); + }, + + /* Pop-up the date picker in a "dialog" box. + @param input element - ignored + @param dateText string - the initial date to display (in the current format) + @param onSelect function - the function(dateText) to call when a date is selected + @param settings object - update the dialog date picker instance's settings (anonymous object) + @param pos int[2] - coordinates for the dialog's position within the screen or + event - with x/y coordinates or + leave empty for default (screen centre) + @return the manager object */ + _dialogDatepicker: function(input, dateText, onSelect, settings, pos) { + var inst = this._dialogInst; // internal instance + if (!inst) { + var id = 'dp' + (++this.uuid); + this._dialogInput = $(''); + this._dialogInput.keydown(this._doKeyDown); + $('body').append(this._dialogInput); + inst = this._dialogInst = this._newInst(this._dialogInput, false); + inst.settings = {}; + $.data(this._dialogInput[0], PROP_NAME, inst); + } + extendRemove(inst.settings, settings || {}); + this._dialogInput.val(dateText); + + this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null); + if (!this._pos) { + var browserWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; + var browserHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; + var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; + var scrollY = document.documentElement.scrollTop || document.body.scrollTop; + this._pos = // should use actual width/height below + [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY]; + } + + // move input on screen for focus, but hidden behind dialog + this._dialogInput.css('left', this._pos[0] + 'px').css('top', this._pos[1] + 'px'); + inst.settings.onSelect = onSelect; + this._inDialog = true; + this.dpDiv.addClass(this._dialogClass); + this._showDatepicker(this._dialogInput[0]); + if ($.blockUI) + $.blockUI(this.dpDiv); + $.data(this._dialogInput[0], PROP_NAME, inst); + return this; + }, + + /* Detach a datepicker from its control. + @param target element - the target input field or division or span */ + _destroyDatepicker: function(target) { + var $target = $(target); + var inst = $.data(target, PROP_NAME); + if (!$target.hasClass(this.markerClassName)) { + return; + } + var nodeName = target.nodeName.toLowerCase(); + $.removeData(target, PROP_NAME); + if (nodeName == 'input') { + inst.append.remove(); + inst.trigger.remove(); + $target.removeClass(this.markerClassName). + unbind('focus', this._showDatepicker). + unbind('keydown', this._doKeyDown). + unbind('keypress', this._doKeyPress); + } else if (nodeName == 'div' || nodeName == 'span') + $target.removeClass(this.markerClassName).empty(); + }, + + /* Enable the date picker to a jQuery selection. + @param target element - the target input field or division or span */ + _enableDatepicker: function(target) { + var $target = $(target); + var inst = $.data(target, PROP_NAME); + if (!$target.hasClass(this.markerClassName)) { + return; + } + var nodeName = target.nodeName.toLowerCase(); + if (nodeName == 'input') { + target.disabled = false; + inst.trigger.filter('button'). + each(function() { this.disabled = false; }).end(). + filter('img').css({opacity: '1.0', cursor: ''}); + } + else if (nodeName == 'div' || nodeName == 'span') { + var inline = $target.children('.' + this._inlineClass); + inline.children().removeClass('ui-state-disabled'); + } + this._disabledInputs = $.map(this._disabledInputs, + function(value) { return (value == target ? null : value); }); // delete entry + }, + + /* Disable the date picker to a jQuery selection. + @param target element - the target input field or division or span */ + _disableDatepicker: function(target) { + var $target = $(target); + var inst = $.data(target, PROP_NAME); + if (!$target.hasClass(this.markerClassName)) { + return; + } + var nodeName = target.nodeName.toLowerCase(); + if (nodeName == 'input') { + target.disabled = true; + inst.trigger.filter('button'). + each(function() { this.disabled = true; }).end(). + filter('img').css({opacity: '0.5', cursor: 'default'}); + } + else if (nodeName == 'div' || nodeName == 'span') { + var inline = $target.children('.' + this._inlineClass); + inline.children().addClass('ui-state-disabled'); + } + this._disabledInputs = $.map(this._disabledInputs, + function(value) { return (value == target ? null : value); }); // delete entry + this._disabledInputs[this._disabledInputs.length] = target; + }, + + /* Is the first field in a jQuery collection disabled as a datepicker? + @param target element - the target input field or division or span + @return boolean - true if disabled, false if enabled */ + _isDisabledDatepicker: function(target) { + if (!target) { + return false; + } + for (var i = 0; i < this._disabledInputs.length; i++) { + if (this._disabledInputs[i] == target) + return true; + } + return false; + }, + + /* Retrieve the instance data for the target control. + @param target element - the target input field or division or span + @return object - the associated instance data + @throws error if a jQuery problem getting data */ + _getInst: function(target) { + try { + return $.data(target, PROP_NAME); + } + catch (err) { + throw 'Missing instance data for this datepicker'; + } + }, + + /* Update or retrieve the settings for a date picker attached to an input field or division. + @param target element - the target input field or division or span + @param name object - the new settings to update or + string - the name of the setting to change or retrieve, + when retrieving also 'all' for all instance settings or + 'defaults' for all global defaults + @param value any - the new value for the setting + (omit if above is an object or to retrieve a value) */ + _optionDatepicker: function(target, name, value) { + var inst = this._getInst(target); + if (arguments.length == 2 && typeof name == 'string') { + return (name == 'defaults' ? $.extend({}, $.datepicker._defaults) : + (inst ? (name == 'all' ? $.extend({}, inst.settings) : + this._get(inst, name)) : null)); + } + var settings = name || {}; + if (typeof name == 'string') { + settings = {}; + settings[name] = value; + } + if (inst) { + if (this._curInst == inst) { + this._hideDatepicker(null); + } + var date = this._getDateDatepicker(target); + extendRemove(inst.settings, settings); + this._setDateDatepicker(target, date); + this._updateDatepicker(inst); + } + }, + + // change method deprecated + _changeDatepicker: function(target, name, value) { + this._optionDatepicker(target, name, value); + }, + + /* Redraw the date picker attached to an input field or division. + @param target element - the target input field or division or span */ + _refreshDatepicker: function(target) { + var inst = this._getInst(target); + if (inst) { + this._updateDatepicker(inst); + } + }, + + /* Set the dates for a jQuery selection. + @param target element - the target input field or division or span + @param date Date - the new date + @param endDate Date - the new end date for a range (optional) */ + _setDateDatepicker: function(target, date, endDate) { + var inst = this._getInst(target); + if (inst) { + this._setDate(inst, date, endDate); + this._updateDatepicker(inst); + this._updateAlternate(inst); + } + }, + + /* Get the date(s) for the first entry in a jQuery selection. + @param target element - the target input field or division or span + @return Date - the current date or + Date[2] - the current dates for a range */ + _getDateDatepicker: function(target) { + var inst = this._getInst(target); + if (inst && !inst.inline) + this._setDateFromField(inst); + return (inst ? this._getDate(inst) : null); + }, + + /* Handle keystrokes. */ + _doKeyDown: function(event) { + var inst = $.datepicker._getInst(event.target); + var handled = true; + var isRTL = inst.dpDiv.is('.ui-datepicker-rtl'); + inst._keyEvent = true; + if ($.datepicker._datepickerShowing) + switch (event.keyCode) { + case 9: $.datepicker._hideDatepicker(null, ''); + break; // hide on tab out + case 13: var sel = $('td.' + $.datepicker._dayOverClass + + ', td.' + $.datepicker._currentClass, inst.dpDiv); + if (sel[0]) + $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); + else + $.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration')); + return false; // don't submit the form + break; // select the value on enter + case 27: $.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration')); + break; // hide on escape + case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ? + -$.datepicker._get(inst, 'stepBigMonths') : + -$.datepicker._get(inst, 'stepMonths')), 'M'); + break; // previous month/year on page up/+ ctrl + case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ? + +$.datepicker._get(inst, 'stepBigMonths') : + +$.datepicker._get(inst, 'stepMonths')), 'M'); + break; // next month/year on page down/+ ctrl + case 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target); + handled = event.ctrlKey || event.metaKey; + break; // clear on ctrl or command +end + case 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target); + handled = event.ctrlKey || event.metaKey; + break; // current on ctrl or command +home + case 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D'); + handled = event.ctrlKey || event.metaKey; + // -1 day on ctrl or command +left + if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ? + -$.datepicker._get(inst, 'stepBigMonths') : + -$.datepicker._get(inst, 'stepMonths')), 'M'); + // next month/year on alt +left on Mac + break; + case 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D'); + handled = event.ctrlKey || event.metaKey; + break; // -1 week on ctrl or command +up + case 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D'); + handled = event.ctrlKey || event.metaKey; + // +1 day on ctrl or command +right + if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ? + +$.datepicker._get(inst, 'stepBigMonths') : + +$.datepicker._get(inst, 'stepMonths')), 'M'); + // next month/year on alt +right + break; + case 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D'); + handled = event.ctrlKey || event.metaKey; + break; // +1 week on ctrl or command +down + default: handled = false; + } + else if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home + $.datepicker._showDatepicker(this); + else { + handled = false; + } + if (handled) { + event.preventDefault(); + event.stopPropagation(); + } + }, + + /* Filter entered characters - based on date format. */ + _doKeyPress: function(event) { + var inst = $.datepicker._getInst(event.target); + if ($.datepicker._get(inst, 'constrainInput')) { + var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')); + var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode); + return event.ctrlKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1); + } + }, + + /* Pop-up the date picker for a given input field. + @param input element - the input field attached to the date picker or + event - if triggered by focus */ + _showDatepicker: function(input) { + input = input.target || input; + if (input.nodeName.toLowerCase() != 'input') // find from button/image trigger + input = $('input', input.parentNode)[0]; + if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here + return; + var inst = $.datepicker._getInst(input); + var beforeShow = $.datepicker._get(inst, 'beforeShow'); + extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]) : {})); + $.datepicker._hideDatepicker(null, ''); + $.datepicker._lastInput = input; + $.datepicker._setDateFromField(inst); + if ($.datepicker._inDialog) // hide cursor + input.value = ''; + if (!$.datepicker._pos) { // position below input + $.datepicker._pos = $.datepicker._findPos(input); + $.datepicker._pos[1] += input.offsetHeight; // add the height + } + var isFixed = false; + $(input).parents().each(function() { + isFixed |= $(this).css('position') == 'fixed'; + return !isFixed; + }); + if (isFixed && $.browser.opera) { // correction for Opera when fixed and scrolled + $.datepicker._pos[0] -= document.documentElement.scrollLeft; + $.datepicker._pos[1] -= document.documentElement.scrollTop; + } + var offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]}; + $.datepicker._pos = null; + inst.rangeStart = null; + // determine sizing offscreen + inst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'}); + $.datepicker._updateDatepicker(inst); + // fix width for dynamic number of date pickers + // and adjust position before showing + offset = $.datepicker._checkOffset(inst, offset, isFixed); + inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ? + 'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none', + left: offset.left + 'px', top: offset.top + 'px'}); + if (!inst.inline) { + var showAnim = $.datepicker._get(inst, 'showAnim') || 'show'; + var duration = $.datepicker._get(inst, 'duration'); + var postProcess = function() { + $.datepicker._datepickerShowing = true; + if ($.browser.msie && parseInt($.browser.version,10) < 7) // fix IE < 7 select problems + $('iframe.ui-datepicker-cover').css({width: inst.dpDiv.width() + 4, + height: inst.dpDiv.height() + 4}); + }; + if ($.effects && $.effects[showAnim]) + inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); + else + inst.dpDiv[showAnim](duration, postProcess); + if (duration == '') + postProcess(); + if (inst.input[0].type != 'hidden') + inst.input[0].focus(); + $.datepicker._curInst = inst; + } + }, + + /* Generate the date picker content. */ + _updateDatepicker: function(inst) { + var dims = {width: inst.dpDiv.width() + 4, + height: inst.dpDiv.height() + 4}; + var self = this; + inst.dpDiv.empty().append(this._generateHTML(inst)) + .find('iframe.ui-datepicker-cover'). + css({width: dims.width, height: dims.height}) + .end() + .find('button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a') + .bind('mouseout', function(){ + $(this).removeClass('ui-state-hover'); + if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover'); + if(this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover'); + }) + .bind('mouseover', function(){ + if (!self._isDisabledDatepicker( inst.inline ? inst.dpDiv.parent()[0] : inst.input[0])) { + $(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover'); + $(this).addClass('ui-state-hover'); + if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover'); + if(this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover'); + } + }) + .end() + .find('.' + this._dayOverClass + ' a') + .trigger('mouseover') + .end(); + var numMonths = this._getNumberOfMonths(inst); + var cols = numMonths[1]; + var width = 17; + if (cols > 1) { + inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em'); + } else { + inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width(''); + } + inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') + + 'Class']('ui-datepicker-multi'); + inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') + + 'Class']('ui-datepicker-rtl'); + if (inst.input && inst.input[0].type != 'hidden' && inst == $.datepicker._curInst) + $(inst.input[0]).focus(); + }, + + /* Check positioning to remain on screen. */ + _checkOffset: function(inst, offset, isFixed) { + var dpWidth = inst.dpDiv.outerWidth(); + var dpHeight = inst.dpDiv.outerHeight(); + var inputWidth = inst.input ? inst.input.outerWidth() : 0; + var inputHeight = inst.input ? inst.input.outerHeight() : 0; + var viewWidth = (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) + $(document).scrollLeft(); + var viewHeight = (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight) + $(document).scrollTop(); + + offset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0); + offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0; + offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; + + // now check if datepicker is showing outside window viewport - move to a better place if so. + offset.left -= (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? Math.abs(offset.left + dpWidth - viewWidth) : 0; + offset.top -= (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? Math.abs(offset.top + dpHeight + inputHeight*2 - viewHeight) : 0; + + return offset; + }, + + /* Find an object's position on the screen. */ + _findPos: function(obj) { + while (obj && (obj.type == 'hidden' || obj.nodeType != 1)) { + obj = obj.nextSibling; + } + var position = $(obj).offset(); + return [position.left, position.top]; + }, + + /* Hide the date picker from view. + @param input element - the input field attached to the date picker + @param duration string - the duration over which to close the date picker */ + _hideDatepicker: function(input, duration) { + var inst = this._curInst; + if (!inst || (input && inst != $.data(input, PROP_NAME))) + return; + if (inst.stayOpen) + this._selectDate('#' + inst.id, this._formatDate(inst, + inst.currentDay, inst.currentMonth, inst.currentYear)); + inst.stayOpen = false; + if (this._datepickerShowing) { + duration = (duration != null ? duration : this._get(inst, 'duration')); + var showAnim = this._get(inst, 'showAnim'); + var postProcess = function() { + $.datepicker._tidyDialog(inst); + }; + if (duration != '' && $.effects && $.effects[showAnim]) + inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), + duration, postProcess); + else + inst.dpDiv[(duration == '' ? 'hide' : (showAnim == 'slideDown' ? 'slideUp' : + (showAnim == 'fadeIn' ? 'fadeOut' : 'hide')))](duration, postProcess); + if (duration == '') + this._tidyDialog(inst); + var onClose = this._get(inst, 'onClose'); + if (onClose) + onClose.apply((inst.input ? inst.input[0] : null), + [(inst.input ? inst.input.val() : ''), inst]); // trigger custom callback + this._datepickerShowing = false; + this._lastInput = null; + if (this._inDialog) { + this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' }); + if ($.blockUI) { + $.unblockUI(); + $('body').append(this.dpDiv); + } + } + this._inDialog = false; + } + this._curInst = null; + }, + + /* Tidy up after a dialog display. */ + _tidyDialog: function(inst) { + inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar'); + }, + + /* Close date picker if clicked elsewhere. */ + _checkExternalClick: function(event) { + if (!$.datepicker._curInst) + return; + var $target = $(event.target); + if (($target.parents('#' + $.datepicker._mainDivId).length == 0) && + !$target.hasClass($.datepicker.markerClassName) && + !$target.hasClass($.datepicker._triggerClass) && + $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI)) + $.datepicker._hideDatepicker(null, ''); + }, + + /* Adjust one of the date sub-fields. */ + _adjustDate: function(id, offset, period) { + var target = $(id); + var inst = this._getInst(target[0]); + if (this._isDisabledDatepicker(target[0])) { + return; + } + this._adjustInstDate(inst, offset + + (period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning + period); + this._updateDatepicker(inst); + }, + + /* Action for current link. */ + _gotoToday: function(id) { + var target = $(id); + var inst = this._getInst(target[0]); + if (this._get(inst, 'gotoCurrent') && inst.currentDay) { + inst.selectedDay = inst.currentDay; + inst.drawMonth = inst.selectedMonth = inst.currentMonth; + inst.drawYear = inst.selectedYear = inst.currentYear; + } + else { + var date = new Date(); + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + } + this._notifyChange(inst); + this._adjustDate(target); + }, + + /* Action for selecting a new month/year. */ + _selectMonthYear: function(id, select, period) { + var target = $(id); + var inst = this._getInst(target[0]); + inst._selectingMonthYear = false; + inst['selected' + (period == 'M' ? 'Month' : 'Year')] = + inst['draw' + (period == 'M' ? 'Month' : 'Year')] = + parseInt(select.options[select.selectedIndex].value,10); + this._notifyChange(inst); + this._adjustDate(target); + }, + + /* Restore input focus after not changing month/year. */ + _clickMonthYear: function(id) { + var target = $(id); + var inst = this._getInst(target[0]); + if (inst.input && inst._selectingMonthYear && !$.browser.msie) + inst.input[0].focus(); + inst._selectingMonthYear = !inst._selectingMonthYear; + }, + + /* Action for selecting a day. */ + _selectDay: function(id, month, year, td) { + var target = $(id); + if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) { + return; + } + var inst = this._getInst(target[0]); + inst.selectedDay = inst.currentDay = $('a', td).html(); + inst.selectedMonth = inst.currentMonth = month; + inst.selectedYear = inst.currentYear = year; + if (inst.stayOpen) { + inst.endDay = inst.endMonth = inst.endYear = null; + } + this._selectDate(id, this._formatDate(inst, + inst.currentDay, inst.currentMonth, inst.currentYear)); + if (inst.stayOpen) { + inst.rangeStart = this._daylightSavingAdjust( + new Date(inst.currentYear, inst.currentMonth, inst.currentDay)); + this._updateDatepicker(inst); + } + }, + + /* Erase the input field and hide the date picker. */ + _clearDate: function(id) { + var target = $(id); + var inst = this._getInst(target[0]); + inst.stayOpen = false; + inst.endDay = inst.endMonth = inst.endYear = inst.rangeStart = null; + this._selectDate(target, ''); + }, + + /* Update the input field with the selected date. */ + _selectDate: function(id, dateStr) { + var target = $(id); + var inst = this._getInst(target[0]); + dateStr = (dateStr != null ? dateStr : this._formatDate(inst)); + if (inst.input) + inst.input.val(dateStr); + this._updateAlternate(inst); + var onSelect = this._get(inst, 'onSelect'); + if (onSelect) + onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback + else if (inst.input) + inst.input.trigger('change'); // fire the change event + if (inst.inline) + this._updateDatepicker(inst); + else if (!inst.stayOpen) { + this._hideDatepicker(null, this._get(inst, 'duration')); + this._lastInput = inst.input[0]; + if (typeof(inst.input[0]) != 'object') + inst.input[0].focus(); // restore focus + this._lastInput = null; + } + }, + + /* Update any alternate field to synchronise with the main field. */ + _updateAlternate: function(inst) { + var altField = this._get(inst, 'altField'); + if (altField) { // update alternate field too + var altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat'); + var date = this._getDate(inst); + dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)); + $(altField).each(function() { $(this).val(dateStr); }); + } + }, + + /* Set as beforeShowDay function to prevent selection of weekends. + @param date Date - the date to customise + @return [boolean, string] - is this date selectable?, what is its CSS class? */ + noWeekends: function(date) { + var day = date.getDay(); + return [(day > 0 && day < 6), '']; + }, + + /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition. + @param date Date - the date to get the week for + @return number - the number of the week within the year that contains this date */ + iso8601Week: function(date) { + var checkDate = new Date(date.getFullYear(), date.getMonth(), date.getDate()); + var firstMon = new Date(checkDate.getFullYear(), 1 - 1, 4); // First week always contains 4 Jan + var firstDay = firstMon.getDay() || 7; // Day of week: Mon = 1, ..., Sun = 7 + firstMon.setDate(firstMon.getDate() + 1 - firstDay); // Preceding Monday + if (firstDay < 4 && checkDate < firstMon) { // Adjust first three days in year if necessary + checkDate.setDate(checkDate.getDate() - 3); // Generate for previous year + return $.datepicker.iso8601Week(checkDate); + } else if (checkDate > new Date(checkDate.getFullYear(), 12 - 1, 28)) { // Check last three days in year + firstDay = new Date(checkDate.getFullYear() + 1, 1 - 1, 4).getDay() || 7; + if (firstDay > 4 && (checkDate.getDay() || 7) < firstDay - 3) { // Adjust if necessary + return 1; + } + } + return Math.floor(((checkDate - firstMon) / 86400000) / 7) + 1; // Weeks to given date + }, + + /* Parse a string value into a date object. + See formatDate below for the possible formats. + + @param format string - the expected format of the date + @param value string - the date in the above format + @param settings Object - attributes include: + shortYearCutoff number - the cutoff year for determining the century (optional) + dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) + dayNames string[7] - names of the days from Sunday (optional) + monthNamesShort string[12] - abbreviated names of the months (optional) + monthNames string[12] - names of the months (optional) + @return Date - the extracted date value or null if value is blank */ + parseDate: function (format, value, settings) { + if (format == null || value == null) + throw 'Invalid arguments'; + value = (typeof value == 'object' ? value.toString() : value + ''); + if (value == '') + return null; + var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff; + var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; + var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; + var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; + var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; + var year = -1; + var month = -1; + var day = -1; + var doy = -1; + var literal = false; + // Check whether a format character is doubled + var lookAhead = function(match) { + var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); + if (matches) + iFormat++; + return matches; + }; + // Extract a number from the string value + var getNumber = function(match) { + lookAhead(match); + var origSize = (match == '@' ? 14 : (match == 'y' ? 4 : (match == 'o' ? 3 : 2))); + var size = origSize; + var num = 0; + while (size > 0 && iValue < value.length && + value.charAt(iValue) >= '0' && value.charAt(iValue) <= '9') { + num = num * 10 + parseInt(value.charAt(iValue++),10); + size--; + } + if (size == origSize) + throw 'Missing number at position ' + iValue; + return num; + }; + // Extract a name from the string value and convert to an index + var getName = function(match, shortNames, longNames) { + var names = (lookAhead(match) ? longNames : shortNames); + var size = 0; + for (var j = 0; j < names.length; j++) + size = Math.max(size, names[j].length); + var name = ''; + var iInit = iValue; + while (size > 0 && iValue < value.length) { + name += value.charAt(iValue++); + for (var i = 0; i < names.length; i++) + if (name == names[i]) + return i + 1; + size--; + } + throw 'Unknown name at position ' + iInit; + }; + // Confirm that a literal character matches the string value + var checkLiteral = function() { + if (value.charAt(iValue) != format.charAt(iFormat)) + throw 'Unexpected literal at position ' + iValue; + iValue++; + }; + var iValue = 0; + for (var iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) + if (format.charAt(iFormat) == "'" && !lookAhead("'")) + literal = false; + else + checkLiteral(); + else + switch (format.charAt(iFormat)) { + case 'd': + day = getNumber('d'); + break; + case 'D': + getName('D', dayNamesShort, dayNames); + break; + case 'o': + doy = getNumber('o'); + break; + case 'm': + month = getNumber('m'); + break; + case 'M': + month = getName('M', monthNamesShort, monthNames); + break; + case 'y': + year = getNumber('y'); + break; + case '@': + var date = new Date(getNumber('@')); + year = date.getFullYear(); + month = date.getMonth() + 1; + day = date.getDate(); + break; + case "'": + if (lookAhead("'")) + checkLiteral(); + else + literal = true; + break; + default: + checkLiteral(); + } + } + if (year == -1) + year = new Date().getFullYear(); + else if (year < 100) + year += new Date().getFullYear() - new Date().getFullYear() % 100 + + (year <= shortYearCutoff ? 0 : -100); + if (doy > -1) { + month = 1; + day = doy; + do { + var dim = this._getDaysInMonth(year, month - 1); + if (day <= dim) + break; + month++; + day -= dim; + } while (true); + } + var date = this._daylightSavingAdjust(new Date(year, month - 1, day)); + if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) + throw 'Invalid date'; // E.g. 31/02/* + return date; + }, + + /* Standard date formats. */ + ATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601) + COOKIE: 'D, dd M yy', + ISO_8601: 'yy-mm-dd', + RFC_822: 'D, d M y', + RFC_850: 'DD, dd-M-y', + RFC_1036: 'D, d M y', + RFC_1123: 'D, d M yy', + RFC_2822: 'D, d M yy', + RSS: 'D, d M y', // RFC 822 + TIMESTAMP: '@', + W3C: 'yy-mm-dd', // ISO 8601 + + /* Format a date object into a string value. + The format can be combinations of the following: + d - day of month (no leading zero) + dd - day of month (two digit) + o - day of year (no leading zeros) + oo - day of year (three digit) + D - day name short + DD - day name long + m - month of year (no leading zero) + mm - month of year (two digit) + M - month name short + MM - month name long + y - year (two digit) + yy - year (four digit) + @ - Unix timestamp (ms since 01/01/1970) + '...' - literal text + '' - single quote + + @param format string - the desired format of the date + @param date Date - the date value to format + @param settings Object - attributes include: + dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) + dayNames string[7] - names of the days from Sunday (optional) + monthNamesShort string[12] - abbreviated names of the months (optional) + monthNames string[12] - names of the months (optional) + @return string - the date in the above format */ + formatDate: function (format, date, settings) { + if (!date) + return ''; + var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; + var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; + var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; + var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; + // Check whether a format character is doubled + var lookAhead = function(match) { + var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); + if (matches) + iFormat++; + return matches; + }; + // Format a number, with leading zero if necessary + var formatNumber = function(match, value, len) { + var num = '' + value; + if (lookAhead(match)) + while (num.length < len) + num = '0' + num; + return num; + }; + // Format a name, short or long as requested + var formatName = function(match, value, shortNames, longNames) { + return (lookAhead(match) ? longNames[value] : shortNames[value]); + }; + var output = ''; + var literal = false; + if (date) + for (var iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) + if (format.charAt(iFormat) == "'" && !lookAhead("'")) + literal = false; + else + output += format.charAt(iFormat); + else + switch (format.charAt(iFormat)) { + case 'd': + output += formatNumber('d', date.getDate(), 2); + break; + case 'D': + output += formatName('D', date.getDay(), dayNamesShort, dayNames); + break; + case 'o': + var doy = date.getDate(); + for (var m = date.getMonth() - 1; m >= 0; m--) + doy += this._getDaysInMonth(date.getFullYear(), m); + output += formatNumber('o', doy, 3); + break; + case 'm': + output += formatNumber('m', date.getMonth() + 1, 2); + break; + case 'M': + output += formatName('M', date.getMonth(), monthNamesShort, monthNames); + break; + case 'y': + output += (lookAhead('y') ? date.getFullYear() : + (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100); + break; + case '@': + output += date.getTime(); + break; + case "'": + if (lookAhead("'")) + output += "'"; + else + literal = true; + break; + default: + output += format.charAt(iFormat); + } + } + return output; + }, + + /* Extract all possible characters from the date format. */ + _possibleChars: function (format) { + var chars = ''; + var literal = false; + for (var iFormat = 0; iFormat < format.length; iFormat++) + if (literal) + if (format.charAt(iFormat) == "'" && !lookAhead("'")) + literal = false; + else + chars += format.charAt(iFormat); + else + switch (format.charAt(iFormat)) { + case 'd': case 'm': case 'y': case '@': + chars += '0123456789'; + break; + case 'D': case 'M': + return null; // Accept anything + case "'": + if (lookAhead("'")) + chars += "'"; + else + literal = true; + break; + default: + chars += format.charAt(iFormat); + } + return chars; + }, + + /* Get a setting value, defaulting if necessary. */ + _get: function(inst, name) { + return inst.settings[name] !== undefined ? + inst.settings[name] : this._defaults[name]; + }, + + /* Parse existing date and initialise date picker. */ + _setDateFromField: function(inst) { + var dateFormat = this._get(inst, 'dateFormat'); + var dates = inst.input ? inst.input.val() : null; + inst.endDay = inst.endMonth = inst.endYear = null; + var date = defaultDate = this._getDefaultDate(inst); + var settings = this._getFormatConfig(inst); + try { + date = this.parseDate(dateFormat, dates, settings) || defaultDate; + } catch (event) { + this.log(event); + date = defaultDate; + } + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + inst.currentDay = (dates ? date.getDate() : 0); + inst.currentMonth = (dates ? date.getMonth() : 0); + inst.currentYear = (dates ? date.getFullYear() : 0); + this._adjustInstDate(inst); + }, + + /* Retrieve the default date shown on opening. */ + _getDefaultDate: function(inst) { + var date = this._determineDate(this._get(inst, 'defaultDate'), new Date()); + var minDate = this._getMinMaxDate(inst, 'min', true); + var maxDate = this._getMinMaxDate(inst, 'max'); + date = (minDate && date < minDate ? minDate : date); + date = (maxDate && date > maxDate ? maxDate : date); + return date; + }, + + /* A date may be specified as an exact value or a relative one. */ + _determineDate: function(date, defaultDate) { + var offsetNumeric = function(offset) { + var date = new Date(); + date.setDate(date.getDate() + offset); + return date; + }; + var offsetString = function(offset, getDaysInMonth) { + var date = new Date(); + var year = date.getFullYear(); + var month = date.getMonth(); + var day = date.getDate(); + var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g; + var matches = pattern.exec(offset); + while (matches) { + switch (matches[2] || 'd') { + case 'd' : case 'D' : + day += parseInt(matches[1],10); break; + case 'w' : case 'W' : + day += parseInt(matches[1],10) * 7; break; + case 'm' : case 'M' : + month += parseInt(matches[1],10); + day = Math.min(day, getDaysInMonth(year, month)); + break; + case 'y': case 'Y' : + year += parseInt(matches[1],10); + day = Math.min(day, getDaysInMonth(year, month)); + break; + } + matches = pattern.exec(offset); + } + return new Date(year, month, day); + }; + date = (date == null ? defaultDate : + (typeof date == 'string' ? offsetString(date, this._getDaysInMonth) : + (typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : date))); + date = (date && date.toString() == 'Invalid Date' ? defaultDate : date); + if (date) { + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + date.setMilliseconds(0); + } + return this._daylightSavingAdjust(date); + }, + + /* Handle switch to/from daylight saving. + Hours may be non-zero on daylight saving cut-over: + > 12 when midnight changeover, but then cannot generate + midnight datetime, so jump to 1AM, otherwise reset. + @param date (Date) the date to check + @return (Date) the corrected date */ + _daylightSavingAdjust: function(date) { + if (!date) return null; + date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); + return date; + }, + + /* Set the date(s) directly. */ + _setDate: function(inst, date, endDate) { + var clear = !(date); + var origMonth = inst.selectedMonth; + var origYear = inst.selectedYear; + date = this._determineDate(date, new Date()); + inst.selectedDay = inst.currentDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = inst.currentMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = inst.currentYear = date.getFullYear(); + if (origMonth != inst.selectedMonth || origYear != inst.selectedYear) + this._notifyChange(inst); + this._adjustInstDate(inst); + if (inst.input) { + inst.input.val(clear ? '' : this._formatDate(inst)); + } + }, + + /* Retrieve the date(s) directly. */ + _getDate: function(inst) { + var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null : + this._daylightSavingAdjust(new Date( + inst.currentYear, inst.currentMonth, inst.currentDay))); + return startDate; + }, + + /* Generate the HTML for the current state of the date picker. */ + _generateHTML: function(inst) { + var today = new Date(); + today = this._daylightSavingAdjust( + new Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time + var isRTL = this._get(inst, 'isRTL'); + var showButtonPanel = this._get(inst, 'showButtonPanel'); + var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext'); + var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat'); + var numMonths = this._getNumberOfMonths(inst); + var showCurrentAtPos = this._get(inst, 'showCurrentAtPos'); + var stepMonths = this._get(inst, 'stepMonths'); + var stepBigMonths = this._get(inst, 'stepBigMonths'); + var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1); + var currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : + new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); + var minDate = this._getMinMaxDate(inst, 'min', true); + var maxDate = this._getMinMaxDate(inst, 'max'); + var drawMonth = inst.drawMonth - showCurrentAtPos; + var drawYear = inst.drawYear; + if (drawMonth < 0) { + drawMonth += 12; + drawYear--; + } + if (maxDate) { + var maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), + maxDate.getMonth() - numMonths[1] + 1, maxDate.getDate())); + maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw); + while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) { + drawMonth--; + if (drawMonth < 0) { + drawMonth = 11; + drawYear--; + } + } + } + inst.drawMonth = drawMonth; + inst.drawYear = drawYear; + var prevText = this._get(inst, 'prevText'); + prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText, + this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), + this._getFormatConfig(inst))); + var prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? + '' + prevText + '' : + (hideIfNoPrevNext ? '' : '' + prevText + '')); + var nextText = this._get(inst, 'nextText'); + nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText, + this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), + this._getFormatConfig(inst))); + var next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? + '' + nextText + '' : + (hideIfNoPrevNext ? '' : '' + nextText + '')); + var currentText = this._get(inst, 'currentText'); + var gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today); + currentText = (!navigationAsDateFormat ? currentText : + this.formatDate(currentText, gotoDate, this._getFormatConfig(inst))); + var controls = (!inst.inline ? '' : ''); + var buttonPanel = (showButtonPanel) ? '
' + (isRTL ? controls : '') + + (this._isInRange(inst, gotoDate) ? '' : '') + (isRTL ? '' : controls) + '
' : ''; + var firstDay = parseInt(this._get(inst, 'firstDay'),10); + firstDay = (isNaN(firstDay) ? 0 : firstDay); + var dayNames = this._get(inst, 'dayNames'); + var dayNamesShort = this._get(inst, 'dayNamesShort'); + var dayNamesMin = this._get(inst, 'dayNamesMin'); + var monthNames = this._get(inst, 'monthNames'); + var monthNamesShort = this._get(inst, 'monthNamesShort'); + var beforeShowDay = this._get(inst, 'beforeShowDay'); + var showOtherMonths = this._get(inst, 'showOtherMonths'); + var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week; + var endDate = inst.endDay ? this._daylightSavingAdjust( + new Date(inst.endYear, inst.endMonth, inst.endDay)) : currentDate; + var defaultDate = this._getDefaultDate(inst); + var html = ''; + for (var row = 0; row < numMonths[0]; row++) { + var group = ''; + for (var col = 0; col < numMonths[1]; col++) { + var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); + var cornerClass = ' ui-corner-all'; + var calender = ''; + if (isMultiMonth) { + calender += '
'; + } + calender += '
' + + (/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') + + (/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') + + this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, + selectedDate, row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers + '
' + + ''; + var thead = ''; + for (var dow = 0; dow < 7; dow++) { // days of the week + var day = (dow + firstDay) % 7; + thead += '= 5 ? ' class="ui-datepicker-week-end"' : '') + '>' + + '' + dayNamesMin[day] + ''; + } + calender += thead + ''; + var daysInMonth = this._getDaysInMonth(drawYear, drawMonth); + if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth) + inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); + var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; + var numRows = (isMultiMonth ? 6 : Math.ceil((leadDays + daysInMonth) / 7)); // calculate the number of rows to generate + var printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); + for (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows + calender += ''; + var tbody = ''; + for (var dow = 0; dow < 7; dow++) { // create date picker days + var daySettings = (beforeShowDay ? + beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']); + var otherMonth = (printDate.getMonth() != drawMonth); + var unselectable = otherMonth || !daySettings[0] || + (minDate && printDate < minDate) || (maxDate && printDate > maxDate); + tbody += ''; // display for this month + printDate.setDate(printDate.getDate() + 1); + printDate = this._daylightSavingAdjust(printDate); + } + calender += tbody + ''; + } + drawMonth++; + if (drawMonth > 11) { + drawMonth = 0; + drawYear++; + } + calender += '
' + // actions + (otherMonth ? (showOtherMonths ? printDate.getDate() : ' ') : // display for other months + (unselectable ? '' + printDate.getDate() + '' : '' + printDate.getDate() + '')) + '
' + (isMultiMonth ? '
' + + ((numMonths[0] > 0 && col == numMonths[1]-1) ? '
' : '') : ''); + group += calender; + } + html += group; + } + html += buttonPanel + ($.browser.msie && parseInt($.browser.version,10) < 7 && !inst.inline ? + '' : ''); + inst._keyEvent = false; + return html; + }, + + /* Generate the month and year header. */ + _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, + selectedDate, secondary, monthNames, monthNamesShort) { + minDate = (inst.rangeStart && minDate && selectedDate < minDate ? selectedDate : minDate); + var changeMonth = this._get(inst, 'changeMonth'); + var changeYear = this._get(inst, 'changeYear'); + var showMonthAfterYear = this._get(inst, 'showMonthAfterYear'); + var html = '
'; + var monthHtml = ''; + // month selection + if (secondary || !changeMonth) + monthHtml += '' + monthNames[drawMonth] + ' '; + else { + var inMinYear = (minDate && minDate.getFullYear() == drawYear); + var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear); + monthHtml += ''; + } + if (!showMonthAfterYear) + html += monthHtml + ((secondary || changeMonth || changeYear) && (!(changeMonth && changeYear)) ? ' ' : ''); + // year selection + if (secondary || !changeYear) + html += '' + drawYear + ''; + else { + // determine range of years to display + var years = this._get(inst, 'yearRange').split(':'); + var year = 0; + var endYear = 0; + if (years.length != 2) { + year = drawYear - 10; + endYear = drawYear + 10; + } else if (years[0].charAt(0) == '+' || years[0].charAt(0) == '-') { + year = drawYear + parseInt(years[0], 10); + endYear = drawYear + parseInt(years[1], 10); + } else { + year = parseInt(years[0], 10); + endYear = parseInt(years[1], 10); + } + year = (minDate ? Math.max(year, minDate.getFullYear()) : year); + endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); + html += ''; + } + if (showMonthAfterYear) + html += (secondary || changeMonth || changeYear ? ' ' : '') + monthHtml; + html += '
'; // Close datepicker_header + return html; + }, + + /* Adjust one of the date sub-fields. */ + _adjustInstDate: function(inst, offset, period) { + var year = inst.drawYear + (period == 'Y' ? offset : 0); + var month = inst.drawMonth + (period == 'M' ? offset : 0); + var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + + (period == 'D' ? offset : 0); + var date = this._daylightSavingAdjust(new Date(year, month, day)); + // ensure it is within the bounds set + var minDate = this._getMinMaxDate(inst, 'min', true); + var maxDate = this._getMinMaxDate(inst, 'max'); + date = (minDate && date < minDate ? minDate : date); + date = (maxDate && date > maxDate ? maxDate : date); + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + if (period == 'M' || period == 'Y') + this._notifyChange(inst); + }, + + /* Notify change of month/year. */ + _notifyChange: function(inst) { + var onChange = this._get(inst, 'onChangeMonthYear'); + if (onChange) + onChange.apply((inst.input ? inst.input[0] : null), + [inst.selectedYear, inst.selectedMonth + 1, inst]); + }, + + /* Determine the number of months to show. */ + _getNumberOfMonths: function(inst) { + var numMonths = this._get(inst, 'numberOfMonths'); + return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths)); + }, + + /* Determine the current maximum date - ensure no time components are set - may be overridden for a range. */ + _getMinMaxDate: function(inst, minMax, checkRange) { + var date = this._determineDate(this._get(inst, minMax + 'Date'), null); + return (!checkRange || !inst.rangeStart ? date : + (!date || inst.rangeStart > date ? inst.rangeStart : date)); + }, + + /* Find the number of days in a given month. */ + _getDaysInMonth: function(year, month) { + return 32 - new Date(year, month, 32).getDate(); + }, + + /* Find the day of the week of the first of a month. */ + _getFirstDayOfMonth: function(year, month) { + return new Date(year, month, 1).getDay(); + }, + + /* Determines if we should allow a "next/prev" month display change. */ + _canAdjustMonth: function(inst, offset, curYear, curMonth) { + var numMonths = this._getNumberOfMonths(inst); + var date = this._daylightSavingAdjust(new Date( + curYear, curMonth + (offset < 0 ? offset : numMonths[1]), 1)); + if (offset < 0) + date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); + return this._isInRange(inst, date); + }, + + /* Is the given date in the accepted range? */ + _isInRange: function(inst, date) { + // during range selection, use minimum of selected date and range start + var newMinDate = (!inst.rangeStart ? null : this._daylightSavingAdjust( + new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay))); + newMinDate = (newMinDate && inst.rangeStart < newMinDate ? inst.rangeStart : newMinDate); + var minDate = newMinDate || this._getMinMaxDate(inst, 'min'); + var maxDate = this._getMinMaxDate(inst, 'max'); + return ((!minDate || date >= minDate) && (!maxDate || date <= maxDate)); + }, + + /* Provide the configuration settings for formatting/parsing. */ + _getFormatConfig: function(inst) { + var shortYearCutoff = this._get(inst, 'shortYearCutoff'); + shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : + new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); + return {shortYearCutoff: shortYearCutoff, + dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'), + monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')}; + }, + + /* Format the given date for display. */ + _formatDate: function(inst, day, month, year) { + if (!day) { + inst.currentDay = inst.selectedDay; + inst.currentMonth = inst.selectedMonth; + inst.currentYear = inst.selectedYear; + } + var date = (day ? (typeof day == 'object' ? day : + this._daylightSavingAdjust(new Date(year, month, day))) : + this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); + return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst)); + } +}); + +/* jQuery extend now ignores nulls! */ +function extendRemove(target, props) { + $.extend(target, props); + for (var name in props) + if (props[name] == null || props[name] == undefined) + target[name] = props[name]; + return target; +}; + +/* Determine whether an object is an array. */ +function isArray(a) { + return (a && (($.browser.safari && typeof a == 'object' && a.length) || + (a.constructor && a.constructor.toString().match(/\Array\(\)/)))); +}; + +/* Invoke the datepicker functionality. + @param options string - a command, optionally followed by additional parameters or + Object - settings for attaching new datepicker functionality + @return jQuery object */ +$.fn.datepicker = function(options){ + + /* Initialise the date picker. */ + if (!$.datepicker.initialized) { + $(document).mousedown($.datepicker._checkExternalClick). + find('body').append($.datepicker.dpDiv); + $.datepicker.initialized = true; + } + + var otherArgs = Array.prototype.slice.call(arguments, 1); + if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate')) + return $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this[0]].concat(otherArgs)); + if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string') + return $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this[0]].concat(otherArgs)); + return this.each(function() { + typeof options == 'string' ? + $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this].concat(otherArgs)) : + $.datepicker._attachDatepicker(this, options); + }); +}; + +$.datepicker = new Datepicker(); // singleton instance +$.datepicker.initialized = false; +$.datepicker.uuid = new Date().getTime(); +$.datepicker.version = "1.7.2"; + +// Workaround for #4055 +// Add another global to avoid noConflict issues with inline event handlers +window.DP_jQuery = $; + +})(jQuery); diff --git a/jquery/development-bundle/version.txt b/jquery/development-bundle/version.txt new file mode 100644 index 0000000..0a182f2 --- /dev/null +++ b/jquery/development-bundle/version.txt @@ -0,0 +1 @@ +1.7.2 \ No newline at end of file diff --git a/jquery/index.html b/jquery/index.html new file mode 100644 index 0000000..7e28473 --- /dev/null +++ b/jquery/index.html @@ -0,0 +1,266 @@ + + + + + jQuery UI Example Page + + + + + + + +

Welcome to jQuery UI!

+

This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.7.2.custom.min.js), and css/ui-lightness/jquery-ui-1.7.2.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

+

You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment. If you need jQuery UI components that work with an earlier version of jQuery, you can choose an older version in the jQuery UI download builder.

+ +

YOUR COMPONENTS:

+ + + +

Framework Icons (content color preview)

+
    + +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
+ + + +

Datepicker

+
+ + +

Highlight / Error

+
+
+

+ Hey! Sample ui-state-highlight style.

+
+
+
+
+
+

+ Alert: Sample ui-state-error style.

+
+
+ + + + + diff --git a/jquery/jquery-1.3.2.js b/jquery/jquery-1.3.2.js new file mode 100644 index 0000000..9263574 --- /dev/null +++ b/jquery/jquery-1.3.2.js @@ -0,0 +1,4376 @@ +/*! + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){ + +var + // Will speed up references to window, and allows munging its name. + window = this, + // Will speed up references to undefined, and allows munging its name. + undefined, + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + // Map over the $ in case of overwrite + _$ = window.$, + + jQuery = window.jQuery = window.$ = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context ); + }, + + // A simple way to check for HTML strings or ID strings + // (both of which we optimize for) + quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/, + // Is it a simple selector + isSimple = /^.[^:#\[\.,]*$/; + +jQuery.fn = jQuery.prototype = { + init: function( selector, context ) { + // Make sure that a selection was provided + selector = selector || document; + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this[0] = selector; + this.length = 1; + this.context = selector; + return this; + } + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + var match = quickExpr.exec( selector ); + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) + selector = jQuery.clean( [ match[1] ], context ); + + // HANDLE: $("#id") + else { + var elem = document.getElementById( match[3] ); + + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem && elem.id != match[3] ) + return jQuery().find( selector ); + + // Otherwise, we inject the element directly into the jQuery object + var ret = jQuery( elem || [] ); + ret.context = document; + ret.selector = selector; + return ret; + } + + // HANDLE: $(expr, [context]) + // (which is just equivalent to: $(content).find(expr) + } else + return jQuery( context ).find( selector ); + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) + return jQuery( document ).ready( selector ); + + // Make sure that old selector state is passed along + if ( selector.selector && selector.context ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return this.setArray(jQuery.isArray( selector ) ? + selector : + jQuery.makeArray(selector)); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.3.2", + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num === undefined ? + + // Return a 'clean' array + Array.prototype.slice.call( this ) : + + // Return just the object + this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = jQuery( elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) + ret.selector = this.selector + (this.selector ? " " : "") + selector; + else if ( name ) + ret.selector = this.selector + "." + name + "(" + selector + ")"; + + // Return the newly-formed element set + return ret; + }, + + // Force the current matched set of elements to become + // the specified array of elements (destroying the stack in the process) + // You should use pushStack() in order to do this, but maintain the stack + setArray: function( elems ) { + // Resetting the length to 0, then using the native Array push + // is a super-fast way to populate an object with array-like properties + this.length = 0; + Array.prototype.push.apply( this, elems ); + + return this; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem && elem.jquery ? elem[0] : elem + , this ); + }, + + attr: function( name, value, type ) { + var options = name; + + // Look for the case where we're accessing a style value + if ( typeof name === "string" ) + if ( value === undefined ) + return this[0] && jQuery[ type || "attr" ]( this[0], name ); + + else { + options = {}; + options[ name ] = value; + } + + // Check to see if we're setting style values + return this.each(function(i){ + // Set all the styles + for ( name in options ) + jQuery.attr( + type ? + this.style : + this, + name, jQuery.prop( this, options[ name ], type, i, name ) + ); + }); + }, + + css: function( key, value ) { + // ignore negative width and height values + if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) + value = undefined; + return this.attr( key, value, "curCSS" ); + }, + + text: function( text ) { + if ( typeof text !== "object" && text != null ) + return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); + + var ret = ""; + + jQuery.each( text || this, function(){ + jQuery.each( this.childNodes, function(){ + if ( this.nodeType != 8 ) + ret += this.nodeType != 1 ? + this.nodeValue : + jQuery.fn.text( [ this ] ); + }); + }); + + return ret; + }, + + wrapAll: function( html ) { + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).clone(); + + if ( this[0].parentNode ) + wrap.insertBefore( this[0] ); + + wrap.map(function(){ + var elem = this; + + while ( elem.firstChild ) + elem = elem.firstChild; + + return elem; + }).append(this); + } + + return this; + }, + + wrapInner: function( html ) { + return this.each(function(){ + jQuery( this ).contents().wrapAll( html ); + }); + }, + + wrap: function( html ) { + return this.each(function(){ + jQuery( this ).wrapAll( html ); + }); + }, + + append: function() { + return this.domManip(arguments, true, function(elem){ + if (this.nodeType == 1) + this.appendChild( elem ); + }); + }, + + prepend: function() { + return this.domManip(arguments, true, function(elem){ + if (this.nodeType == 1) + this.insertBefore( elem, this.firstChild ); + }); + }, + + before: function() { + return this.domManip(arguments, false, function(elem){ + this.parentNode.insertBefore( elem, this ); + }); + }, + + after: function() { + return this.domManip(arguments, false, function(elem){ + this.parentNode.insertBefore( elem, this.nextSibling ); + }); + }, + + end: function() { + return this.prevObject || jQuery( [] ); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: [].push, + sort: [].sort, + splice: [].splice, + + find: function( selector ) { + if ( this.length === 1 ) { + var ret = this.pushStack( [], "find", selector ); + ret.length = 0; + jQuery.find( selector, this[0], ret ); + return ret; + } else { + return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){ + return jQuery.find( selector, elem ); + })), "find", selector ); + } + }, + + clone: function( events ) { + // Do the clone + var ret = this.map(function(){ + if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) { + // IE copies events bound via attachEvent when + // using cloneNode. Calling detachEvent on the + // clone will also remove the events from the orignal + // In order to get around this, we use innerHTML. + // Unfortunately, this means some modifications to + // attributes in IE that are actually only stored + // as properties will not be copied (such as the + // the name attribute on an input). + var html = this.outerHTML; + if ( !html ) { + var div = this.ownerDocument.createElement("div"); + div.appendChild( this.cloneNode(true) ); + html = div.innerHTML; + } + + return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0]; + } else + return this.cloneNode(true); + }); + + // Copy the events from the original to the clone + if ( events === true ) { + var orig = this.find("*").andSelf(), i = 0; + + ret.find("*").andSelf().each(function(){ + if ( this.nodeName !== orig[i].nodeName ) + return; + + var events = jQuery.data( orig[i], "events" ); + + for ( var type in events ) { + for ( var handler in events[ type ] ) { + jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data ); + } + } + + i++; + }); + } + + // Return the cloned set + return ret; + }, + + filter: function( selector ) { + return this.pushStack( + jQuery.isFunction( selector ) && + jQuery.grep(this, function(elem, i){ + return selector.call( elem, i ); + }) || + + jQuery.multiFilter( selector, jQuery.grep(this, function(elem){ + return elem.nodeType === 1; + }) ), "filter", selector ); + }, + + closest: function( selector ) { + var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null, + closer = 0; + + return this.map(function(){ + var cur = this; + while ( cur && cur.ownerDocument ) { + if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) { + jQuery.data(cur, "closest", closer); + return cur; + } + cur = cur.parentNode; + closer++; + } + }); + }, + + not: function( selector ) { + if ( typeof selector === "string" ) + // test special case where just one selector is passed in + if ( isSimple.test( selector ) ) + return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector ); + else + selector = jQuery.multiFilter( selector, this ); + + var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; + return this.filter(function() { + return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; + }); + }, + + add: function( selector ) { + return this.pushStack( jQuery.unique( jQuery.merge( + this.get(), + typeof selector === "string" ? + jQuery( selector ) : + jQuery.makeArray( selector ) + ))); + }, + + is: function( selector ) { + return !!selector && jQuery.multiFilter( selector, this ).length > 0; + }, + + hasClass: function( selector ) { + return !!selector && this.is( "." + selector ); + }, + + val: function( value ) { + if ( value === undefined ) { + var elem = this[0]; + + if ( elem ) { + if( jQuery.nodeName( elem, 'option' ) ) + return (elem.attributes.value || {}).specified ? elem.value : elem.text; + + // We need to handle select boxes special + if ( jQuery.nodeName( elem, "select" ) ) { + var index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type == "select-one"; + + // Nothing was selected + if ( index < 0 ) + return null; + + // Loop through all the selected options + for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { + var option = options[ i ]; + + if ( option.selected ) { + // Get the specifc value for the option + value = jQuery(option).val(); + + // We don't need an array for one selects + if ( one ) + return value; + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + } + + // Everything else, we just grab the value + return (elem.value || "").replace(/\r/g, ""); + + } + + return undefined; + } + + if ( typeof value === "number" ) + value += ''; + + return this.each(function(){ + if ( this.nodeType != 1 ) + return; + + if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) ) + this.checked = (jQuery.inArray(this.value, value) >= 0 || + jQuery.inArray(this.name, value) >= 0); + + else if ( jQuery.nodeName( this, "select" ) ) { + var values = jQuery.makeArray(value); + + jQuery( "option", this ).each(function(){ + this.selected = (jQuery.inArray( this.value, values ) >= 0 || + jQuery.inArray( this.text, values ) >= 0); + }); + + if ( !values.length ) + this.selectedIndex = -1; + + } else + this.value = value; + }); + }, + + html: function( value ) { + return value === undefined ? + (this[0] ? + this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") : + null) : + this.empty().append( value ); + }, + + replaceWith: function( value ) { + return this.after( value ).remove(); + }, + + eq: function( i ) { + return this.slice( i, +i + 1 ); + }, + + slice: function() { + return this.pushStack( Array.prototype.slice.apply( this, arguments ), + "slice", Array.prototype.slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function(elem, i){ + return callback.call( elem, i, elem ); + })); + }, + + andSelf: function() { + return this.add( this.prevObject ); + }, + + domManip: function( args, table, callback ) { + if ( this[0] ) { + var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(), + scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ), + first = fragment.firstChild; + + if ( first ) + for ( var i = 0, l = this.length; i < l; i++ ) + callback.call( root(this[i], first), this.length > 1 || i > 0 ? + fragment.cloneNode(true) : fragment ); + + if ( scripts ) + jQuery.each( scripts, evalScript ); + } + + return this; + + function root( elem, cur ) { + return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ? + (elem.getElementsByTagName("tbody")[0] || + elem.appendChild(elem.ownerDocument.createElement("tbody"))) : + elem; + } + } +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +function evalScript( i, elem ) { + if ( elem.src ) + jQuery.ajax({ + url: elem.src, + async: false, + dataType: "script" + }); + + else + jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); + + if ( elem.parentNode ) + elem.parentNode.removeChild( elem ); +} + +function now(){ + return +new Date; +} + +jQuery.extend = jQuery.fn.extend = function() { + // copy reference to target object + var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) + target = {}; + + // extend jQuery itself if only one argument is passed + if ( length == i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) + // Extend the base object + for ( var name in options ) { + var src = target[ name ], copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) + continue; + + // Recurse if we're merging object values + if ( deep && copy && typeof copy === "object" && !copy.nodeType ) + target[ name ] = jQuery.extend( deep, + // Never move original objects, clone them + src || ( copy.length != null ? [ ] : { } ) + , copy ); + + // Don't bring in undefined values + else if ( copy !== undefined ) + target[ name ] = copy; + + } + + // Return the modified object + return target; +}; + +// exclude the following css properties to add px +var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i, + // cache defaultView + defaultView = document.defaultView || {}, + toString = Object.prototype.toString; + +jQuery.extend({ + noConflict: function( deep ) { + window.$ = _$; + + if ( deep ) + window.jQuery = _jQuery; + + return jQuery; + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return toString.call(obj) === "[object Function]"; + }, + + isArray: function( obj ) { + return toString.call(obj) === "[object Array]"; + }, + + // check if an element is in a (or is an) XML document + isXMLDoc: function( elem ) { + return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || + !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument ); + }, + + // Evalulates a script in a global context + globalEval: function( data ) { + if ( data && /\S/.test(data) ) { + // Inspired by code by Andrea Giammarchi + // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html + var head = document.getElementsByTagName("head")[0] || document.documentElement, + script = document.createElement("script"); + + script.type = "text/javascript"; + if ( jQuery.support.scriptEval ) + script.appendChild( document.createTextNode( data ) ); + else + script.text = data; + + // Use insertBefore instead of appendChild to circumvent an IE6 bug. + // This arises when a base node is used (#2709). + head.insertBefore( script, head.firstChild ); + head.removeChild( script ); + } + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, length = object.length; + + if ( args ) { + if ( length === undefined ) { + for ( name in object ) + if ( callback.apply( object[ name ], args ) === false ) + break; + } else + for ( ; i < length; ) + if ( callback.apply( object[ i++ ], args ) === false ) + break; + + // A special, fast, case for the most common use of each + } else { + if ( length === undefined ) { + for ( name in object ) + if ( callback.call( object[ name ], name, object[ name ] ) === false ) + break; + } else + for ( var value = object[0]; + i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} + } + + return object; + }, + + prop: function( elem, value, type, i, name ) { + // Handle executable functions + if ( jQuery.isFunction( value ) ) + value = value.call( elem, i ); + + // Handle passing in a number to a CSS property + return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ? + value + "px" : + value; + }, + + className: { + // internal only, use addClass("class") + add: function( elem, classNames ) { + jQuery.each((classNames || "").split(/\s+/), function(i, className){ + if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) + elem.className += (elem.className ? " " : "") + className; + }); + }, + + // internal only, use removeClass("class") + remove: function( elem, classNames ) { + if (elem.nodeType == 1) + elem.className = classNames !== undefined ? + jQuery.grep(elem.className.split(/\s+/), function(className){ + return !jQuery.className.has( classNames, className ); + }).join(" ") : + ""; + }, + + // internal only, use hasClass("class") + has: function( elem, className ) { + return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; + } + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback ) { + var old = {}; + // Remember the old values, and insert the new ones + for ( var name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + callback.call( elem ); + + // Revert the old values + for ( var name in options ) + elem.style[ name ] = old[ name ]; + }, + + css: function( elem, name, force, extra ) { + if ( name == "width" || name == "height" ) { + var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; + + function getWH() { + val = name == "width" ? elem.offsetWidth : elem.offsetHeight; + + if ( extra === "border" ) + return; + + jQuery.each( which, function() { + if ( !extra ) + val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; + if ( extra === "margin" ) + val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0; + else + val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; + }); + } + + if ( elem.offsetWidth !== 0 ) + getWH(); + else + jQuery.swap( elem, props, getWH ); + + return Math.max(0, Math.round(val)); + } + + return jQuery.curCSS( elem, name, force ); + }, + + curCSS: function( elem, name, force ) { + var ret, style = elem.style; + + // We need to handle opacity special in IE + if ( name == "opacity" && !jQuery.support.opacity ) { + ret = jQuery.attr( style, "opacity" ); + + return ret == "" ? + "1" : + ret; + } + + // Make sure we're using the right name for getting the float value + if ( name.match( /float/i ) ) + name = styleFloat; + + if ( !force && style && style[ name ] ) + ret = style[ name ]; + + else if ( defaultView.getComputedStyle ) { + + // Only "float" is needed here + if ( name.match( /float/i ) ) + name = "float"; + + name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); + + var computedStyle = defaultView.getComputedStyle( elem, null ); + + if ( computedStyle ) + ret = computedStyle.getPropertyValue( name ); + + // We should always get a number back from opacity + if ( name == "opacity" && ret == "" ) + ret = "1"; + + } else if ( elem.currentStyle ) { + var camelCase = name.replace(/\-(\w)/g, function(all, letter){ + return letter.toUpperCase(); + }); + + ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { + // Remember the original values + var left = style.left, rsLeft = elem.runtimeStyle.left; + + // Put in the new values to get a computed value out + elem.runtimeStyle.left = elem.currentStyle.left; + style.left = ret || 0; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + elem.runtimeStyle.left = rsLeft; + } + } + + return ret; + }, + + clean: function( elems, context, fragment ) { + context = context || document; + + // !context.createElement fails in IE with an error but returns typeof 'object' + if ( typeof context.createElement === "undefined" ) + context = context.ownerDocument || context[0] && context[0].ownerDocument || document; + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) { + var match = /^<(\w+)\s*\/?>$/.exec(elems[0]); + if ( match ) + return [ context.createElement( match[1] ) ]; + } + + var ret = [], scripts = [], div = context.createElement("div"); + + jQuery.each(elems, function(i, elem){ + if ( typeof elem === "number" ) + elem += ''; + + if ( !elem ) + return; + + // Convert html string into DOM nodes + if ( typeof elem === "string" ) { + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ + return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? + all : + front + ">"; + }); + + // Trim whitespace, otherwise indexOf won't work as expected + var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase(); + + var wrap = + // option or optgroup + !tags.indexOf("", "" ] || + + !tags.indexOf("", "" ] || + + tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && + [ 1, "", "
" ] || + + !tags.indexOf("", "" ] || + + // matched above + (!tags.indexOf("", "" ] || + + !tags.indexOf("", "" ] || + + // IE can't serialize and "; + } else { + var s = document.createElement("script"); + s.src = host + jsfiles[i]; + var h = document.getElementsByTagName("head").length ? + document.getElementsByTagName("head")[0] : + document.body; + h.appendChild(s); + } + } + if (docWrite) { + document.write(allScriptTags.join("")); + } + } +})(); + +/** + * Constant: VERSION_NUMBER + */ +OpenLayers.VERSION_NUMBER="OpenLayers 2.8 -- $Revision: 9492 $"; diff --git a/openlayers/apidoc_config/Data/ClassHierarchy.nd b/openlayers/apidoc_config/Data/ClassHierarchy.nd new file mode 100644 index 0000000000000000000000000000000000000000..aafb3786497ed1526a0c1469601464db20f6871c GIT binary patch literal 22329 zcmb_kS#ujl4yG+$q8&SV$q&fWz9{23dn9{Hv?MDQZAE0PBwJgl5!sd|p*Y;(ke2f6 zw}A$Frir1dFqF$rcHu)eZlE!2Kl($%{dwGY8(pV2CK_jp@%2qI$)k63Gdqp%Ot#p2 z`Q3lhFJUPnZ z8#C!o)8zz@e4qnIl&Ay(oSMPG+fEUU_E9p;P1b0yzWU|GFE5bWp^h7=)B!~fr{Zc( z58c6XnkR#Jj-39b%s%8`lpUb zAhaqDPA#3&^eP$0(>l^3g%ASpShL;Jcy@)rO4|iG3D<*v{?8X5vM>INpx@{O0@Trm zOp2n@PiJ|SP8+*JD+qI%%$&n1eS%OT4dn}nT?~fDCa0?MWcDFNPA57`rBE)gBwue;-LrUR{~DL8 zl{E*O6=Q7F^=!J0PNskx7J_SD-8wcgB@m^-mYq976v?bGfI&YfIhD!WtEa!Q-egwK ztq#lK4Xxq0t~HdAq%BYcYmUrqUdO&&`~qr;UBs1MKb=l(Xh|s1ywY992bKaxa`RT* z!g>iWqbw-cq!B=JDD)HNvu*SfB1xW|>v%Sq+HR-&#@t<|apt-!rLVqrAQ58#pD=!Q z&dvXpX5nl=S!57t#ogijZU2SElNZn_eksc&uMxyN(b@n;caea&fQ<@Zp0#6gOYM<5A!UceqCu&Uj6sn z<;i|-@h_KkvkKp%1S7dM_kWFV8@+S0n5VM|H>%3%17JvKZ^9jrKCy0Bv zJb9JHS5#vnCuI_5ag|_zTbM>#XzmFAXPs3c;XTJkA-!8Vi`_y<7D67o7!{tF~dRUzRT^54DEBEipa2sYKK#|Iz z7BR`UXd9A>a+Koj^P}X}Ou%1G&B{#O|<4TIE&|Vj_S%XltTz(+{345 z+e(aS+s*6>lnP$#Iy)SDmCr2fHkMqXx7@o(cYij%PBY5v$|A@;iZBB32&3%|*Cc<` znXe_22QIp`=lEO!Q|nR!S56~*%eID9!Phd0b8~gqXrV))^(qC$5D_9s9^QOE8KldF zIZGFI5J|nL()HPf10boIwwr6?W&Wbo4ot-Fxy0^%c6DY)9`ynWU%-RN!@Hsfg4M$o zI#1rMOtwnQN4DFVB}fTI9-eafc(K?2d5c_*^b);!GA6rGiU#NaE)3l~Kz?tBBWc$7 zPWGn5OF)Ry! zsNljz+2~<$hNg*kQ93K*L6% zFv)v!7zNPMlp{wT8>~S|4KY{nd1cw{c*u)*mv_CxEAt_?`(U-k2JHOUJ1`J%+>qa3 znWVhsrW_rR)GSIVm4+oC@6y=^x|?~NB?~HUwVZJED=I*w7^xqA#@+0}^74|_43x`z zVOQ*MBtN!<&(|JPK@>c^s=0g;zRnV$JOQQ5C$C4NvvP1!%GRaM5(scwi?Libp>HW4 zD414Wps@U*f!Et|V5-?Q2SAczQF8Ux#t(H2Bi-C@QBYxKo(vFwOq}CI=y9Xmk9__<;0X<0b@OJJt z(jKOjWGkv#3*~+OnweQFRKN!U@@C%Fo*ho?Ab56F-VRpw4s3KGQUyX15T=b#b+fINGLrPC=F8OjjM@*xP|64ptr{Va>` z>If%jL_^T_LAsnxTt85IvgRT{-Z|ohdgns#>xR7&;dl~c&#)0knix6fx>%pgb?!f z)U3AM_h@x)U;ds=;&WBWS1rCIq?MLxhIZGl@0U311qF*> zCk}9@H6giu189ttLPA2R&r-i~aPaO&6uA*fdp+Vb|Dg-Z$m41wM?j zL-jhgLyqMDq@w9!PwoF7pA5hK+BUrIakEx4S4NS%{B7)m$NA7jH>D@gZ5#k_2%Wd^ zwHkvB_A&|U1||Th^aGfcNICdYuubae9E2&9j&WIW;R(pqKc3y`AGT zm;CAtyDYWDCOd4|%|YWjM`csxA~BM0R*ZalD>O5xtC`>}58poE0AV;ICtj@fhKE}? zG15!n`4ZPY$W4+DcjfF{bL1TWNsgRF4_9`X7p9A7+_iGGhuFxa99)$K?X02*tzlf? zl|;Ypsx)Y~(HK>3yK*VFOUgK@^_dz~(H=uuR{QPp=8^)M^0~%0eSjJUXm)kJ1-I?W zkh$Iq$m92H0ROf09i&nN1+}yuzC*{>7=AxZo1EP*-4Mb(a-y=XOPX>aOgT6W3cQGs zsxC&qD>9thZg#8R6(Izv7YbNrw%6a^B48oCyn)YDJseJ5TpJo&C~H-os1zuY7n=cg znvnLDCgxLcUrLF;-Jfl-{$eWDo+!Nf0i)8fUDT@_FBb2~t^U$BSs1sKPGP+Pf1oEq z1SxT!jyg6oz&Nc=a^P_sK}ase($3EC{V}poCI`QM?n$4js78 zrF~}PZ;T{74=mxR%JI^Mg;MV}@asG@sKmo7gCcuQfg+7Ve24WMKghBVe*=?Wr}TL9 z5T+7VTwLbAiTQ(vT4g?x%Ucz}?I|r_7QY{+tb=`wD+5W6UT2^34+-!R8){DZi4bdU z9SitY*Js7&hx|^gG#1Wo_FH;rUFdN*WVY6=b1kT>_SZUfxKkKL3hjYUDOWUDUlO+M zg3NZ|soIKvimy|*2T;q3kzCpo`AG9POI**OELbQlSnADogT+vJ?4opaHX9th^GB

T6U$%^@LtgZZ^oZIR+?SPUmNser-|apx}1&SB{TSSW{6Y?P6E)B+gE zEszs1QL39%K|eMT8Y(BL=J(6k+0w(LDt~5P6s&hI rmIZ_W6&&~#{n@#>T2AAv{2QOjewn+!5J~d%*2)hr^{mxW19s#8x}hp@ literal 0 HcmV?d00001 diff --git a/openlayers/apidoc_config/Data/ConfigFileInfo.nd b/openlayers/apidoc_config/Data/ConfigFileInfo.nd new file mode 100644 index 0000000000000000000000000000000000000000..a69ba09362c36f548f664b1b7c4bb9d23d2db39a GIT binary patch literal 26 ScmZQ$)L>v>@Up*?j*bCfg9$7E literal 0 HcmV?d00001 diff --git a/openlayers/apidoc_config/Data/FileInfo.nd b/openlayers/apidoc_config/Data/FileInfo.nd new file mode 100644 index 0000000..921bb44 --- /dev/null +++ b/openlayers/apidoc_config/Data/FileInfo.nd @@ -0,0 +1,222 @@ +1.4 +JavaScript +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/da-DK.js 1231482438 1 OpenLayers.Lang["da-DK"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/WMS/Untiled.js 1236258462 1 OpenLayers.Layer.WMS.Untiled +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFSCapabilities/v1.js 1239053566 1 OpenLayers.Format.WFSCapabilities.v1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/SphericalMercator.js 1202500315 1 OpenLayers.Layer.SphericalMercator +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Popup/AnchoredBubble.js 1220027300 1 OpenLayers.Popup.AnchoredBubble +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/de.js 1203360599 1 OpenLayers.Lang["de"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/LonLat.js 1236811532 1 OpenLayers.LonLat +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Ajax.js 1236258462 1 /home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Ajax.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Map.js 1243000997 1 OpenLayers.Map +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer.js 1239400797 1 OpenLayers.Layer +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Strategy/Cluster.js 1237829668 1 OpenLayers.Strategy.Cluster +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Point.js 1239379526 1 OpenLayers.Geometry.Point +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/ca.js 1227279272 1 OpenLayers.Lang["ca"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Panel.js 1238537130 1 OpenLayers.Control.Panel +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/MouseToolbar.js 1236061815 1 OpenLayers.Control.MouseToolbar +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Popup/Framed.js 1237391257 1 OpenLayers.Popup.Framed +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GML/v2.js 1221232573 1 OpenLayers.Format.GML.v2 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Text.js 1237754112 1 OpenLayers.Layer.Text +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/ArcGIS93Rest.js 1235858002 1 OpenLayers.Layer.ArcGIS93Rest +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Pan.js 1236888274 1 OpenLayers.Control.Pan +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/MapGuide.js 1236752381 1 OpenLayers.Layer.MapGuide +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/zh-TW.js 1215469770 1 OpenLayers.Lang["zh-TW"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/FixedZoomLevels.js 1225371131 1 OpenLayers.Layer.FixedZoomLevels +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/ArcXML.js 1245073235 1 OpenLayers.Format.ArcXML +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/it.js 1212768670 1 OpenLayers.Lang["it"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes.js 1245073235 1 OpenLayers Base Types +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Popup/FramedCloud.js 1235829991 1 OpenLayers.Popup.FramedCloud +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/RegularPolygon.js 1239550575 1 OpenLayers.Handler.RegularPolygon +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Feature.js 1207620268 1 OpenLayers.Feature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Marker.js 1239117699 1 OpenLayers.Marker +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/OSM.js 1207759928 1 OpenLayers.Format.OSM +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/KaMapCache.js 1236888274 1 OpenLayers.Layer.KaMapCache +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/MultiMap.js 1207759928 1 OpenLayers.Layer.MultiMap +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSCapabilities/v1_1_0.js 1239044120 1 OpenLayers.Format.WMSCapabilities/v1_1_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Filter/FeatureId.js 1237306092 1 OpenLayers.Filter.FeatureId +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/zh-CN.js 1217517092 1 OpenLayers.Lang["zh-CN"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/MousePosition.js 1236061815 1 OpenLayers.Control.MousePosition +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Strategy/Paging.js 1223538488 1 OpenLayers.Strategy.Paging +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ZoomIn.js 1236888274 1 OpenLayers.Control.ZoomIn +/home/crschmidt/OpenLayers-2.8/lib/Firebug/readme.txt 1181603869 0 /home/crschmidt/OpenLayers-2.8/lib/Firebug/readme.txt +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Point.js 1239550575 1 OpenLayers.Handler.Point +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Renderer.js 1239379526 1 OpenLayers.Renderer +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Filter/Spatial.js 1237306092 1 OpenLayers.Filter.Spatial +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSDescribeLayer/v1_1.js 1238511962 1 OpenLayers.Format.WMSDescribeLayer.v1_1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/KaMap.js 1212698260 1 OpenLayers.Layer.KaMap +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Keyboard.js 1217526316 1 OpenLayers.handler.Keyboard +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Icon.js 1239117699 1 OpenLayers.Icon +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GML/v3.js 1238786269 1 OpenLayers.Format.GML.v3 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GeoJSON.js 1238790395 1 OpenLayers.Format.GeoJSON +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFSCapabilities/v1_1_0.js 1239053566 1 OpenLayers.Format.WFSCapabilities/v1_1_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/VirtualEarth.js 1220547476 1 OpenLayers.Layer.VirtualEarth +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/nl.js 1217389531 1 OpenLayers.Lang["nl"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/MapServer.js 1212698260 1 OpenLayers.Layer.MapServer +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Console.js 1221694764 1 OpenLayers.Console +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Rule.js 1237306092 1 OpenLayers.Rule +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/WMS.js 1236867551 1 OpenLayers.Layer.WMS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/HTTPRequest.js 1217479465 1 OpenLayers.Layer.HTTPRequest +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/MultiPoint.js 1226436506 1 OpenLayers.Geometry.MultiPoint +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GML.js 1238786269 1 OpenLayers.Format.GML +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/es.js 1225385919 1 OpenLayers.Lang["es"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Request/XMLHttpRequest.js 1213041098 1 OpenLayers.Request.XMLHttpRequest +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ScaleLine.js 1236260818 1 OpenLayers.Control.ScaleLine +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Size.js 1202500315 1 OpenLayers.Size +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/SingleFile.js 1199175295 0 /home/crschmidt/OpenLayers-2.8/lib/OpenLayers/SingleFile.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFST.js 1236876507 1 OpenLayers.Format.WFST.DEFAULTS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/XYZ.js 1239221480 1 OpenLayers.Layer.XYZ +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFST/v1_1_0.js 1235948656 1 OpenLayers.Format.WFST.v1_1_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/WFS.js 1237731918 1 OpenLayers.Layer.WFS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Filter/Comparison.js 1237306092 1 OpenLayers.Filter.Comparison +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/en.js 1220595811 1 OpenLayers.Lang["en"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/pt-BR.js 1212698884 1 OpenLayers.Lang["pt-BR"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Strategy/Fixed.js 1238602823 1 OpenLayers.Strategy.Fixed +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/SelectFeature.js 1243957830 1 OpenLayers.Control.SelectFeature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFSDescribeFeatureType.js 1238517568 1 OpenLayers.Format.WFSDescribeFeatureType +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Boxes.js 1199175295 1 OpenLayers.Layer.Boxes +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format.js 1236258462 1 OpenLayers.Format +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/Filter/v1.js 1235945957 1 OpenLayers.Format.Filter.v1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Yahoo.js 1234872339 1 OpenLayers.Layer.Yahoo +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/HTTP.js 1239213175 1 OpenLayers.Protocol.HTTP +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/Filter/v1_0_0.js 1235886021 1 OpenLayers.Format.Filter.v1_0_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSCapabilities.js 1239044120 1 OpenLayers.Format.WMSCapabilities +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Strategy/Save.js 1239303787 1 OpenLayers.Strategy.Save +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GML/Base.js 1238786269 1 OpenLayers.Format.GML.Base +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Collection.js 1239379526 1 OpenLayers.Geometry.Collection +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Feature/Vector.js 1239654636 1 OpenLayers.Feature.Vector +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFSCapabilities.js 1239055985 1 OpenLayers.Format.WFSCapabilities +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/WFS.js 1237187156 1 OpenLayers.Protocol.WFS.DEFAULTS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/DrawFeature.js 1239550575 1 OpenLayers.Control.DrawFeature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Tile/WFS.js 1214058213 1 OpenLayers.Tile.WFS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/PanPanel.js 1238537130 1 OpenLayers.Control.PanPanel +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/MapServer/Untiled.js 1236259403 1 OpenLayers.Layer.MapServer.Untiled +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/fr.js 1214582913 1 OpenLayers.Lang["fr"] +/home/crschmidt/OpenLayers-2.8/lib/Rico/Color.js 1201963564 0 /home/crschmidt/OpenLayers-2.8/lib/Rico/Color.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Button.js 1236061815 1 OpenLayers.Control.Button +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Feature/WFS.js 1199175295 1 OpenLayers.Feature.WFS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GeoRSS.js 1237050338 1 OpenLayers.Format.GeoRSS +/home/crschmidt/OpenLayers-2.8/lib/Gears/gears_init.js 1221231425 0 /home/crschmidt/OpenLayers-2.8/lib/Gears/gears_init.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSCapabilities/v1_1.js 1239044120 1 OpenLayers.Format.WMSCapabilities.v1_1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Curve.js 1239232344 1 OpenLayers.Geometry.Curve +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Strategy.js 1221672601 1 OpenLayers.Strategy +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Renderer/SVG.js 1243000997 1 OpenLayers.Renderer.SVG +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Scale.js 1236061815 1 OpenLayers.Control.Scale +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/ArcXML/Features.js 1239236148 1 OpenLayers.Format.ArcXML.Features +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/MultiPolygon.js 1226436506 1 OpenLayers.Geometry.MultiPolygon +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/en-CA.js 1203110148 1 OpenLayers.Lang["en-CA"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/NavToolbar.js 1226405535 1 OpenLayers.Control.NavToolbar +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/NavigationHistory.js 1237888337 1 OpenLayers.Control.NavigationHistory +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMC/v1_0_0.js 1202500315 1 OpenLayers.Format.WMC.v1_0_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/JSON.js 1238803096 1 OpenLayers.Format.JSON +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/LinearRing.js 1239379526 1 OpenLayers.Geometry.LinearRing +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/TMS.js 1243000997 1 OpenLayers.Layer.TMS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Google.js 1243957830 1 OpenLayers.Layer.Google +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Vector/RootContainer.js 1238593433 1 OpenLayers.Layer.Vector.RootContainer +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/LineString.js 1236799496 1 OpenLayers.Geometry.LineString +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Grid.js 1236259403 1 OpenLayers.Layer.Grid +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Popup/Anchored.js 1237484007 1 OpenLayers.Popup.Anchored +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Split.js 1236724597 1 OpenLayers.Control.Split +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSDescribeLayer.js 1238511962 1 OpenLayers.Format.WMSDescribeLayer +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler.js 1217479465 1 OpenLayers.Handler +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Navigation.js 1239314621 1 OpenLayers.Control.Navigation +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/PanZoomBar.js 1237666406 1 OpenLayers.Control.PanZoomBar +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/GML.js 1237050406 1 OpenLayers.Layer.GML +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/XML.js 1238786269 1 OpenLayers.Format.XML +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Projection.js 1233316780 1 OpenLayers.Projection +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Snapping.js 1239550721 1 OpenLayers.Control.Snapping +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Permalink.js 1236061815 1 OpenLayers.Control.Permalink +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Bounds.js 1237088662 1 OpenLayers.Bounds +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMC.js 1235921567 1 OpenLayers.Format.WMC +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control.js 1239314393 1 OpenLayers.Control +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Strategy/BBOX.js 1237398134 1 OpenLayers.Strategy.BBOX +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFS.js 1236657899 1 OpenLayers.Format.WFS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Class.js 1237472952 1 /home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Class.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/StyleMap.js 1236360034 1 OpenLayers.StyleMap +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/TileCache.js 1243000997 1 OpenLayers.Layer.TileCache +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMC/v1_1_0.js 1202500315 1 OpenLayers.Format.WMC.v1_1_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Marker/Box.js 1199175295 1 OpenLayers.Marker.Box +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Element.js 1219970805 1 OpenLayers.Element +/home/crschmidt/OpenLayers-2.8/lib/Firebug/license.txt 1181603869 0 /home/crschmidt/OpenLayers-2.8/lib/Firebug/license.txt +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/GetFeature.js 1239314393 1 OpenLayers.Control.GetFeature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WKT.js 1217479465 1 OpenLayers.Format.WKT +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/MouseWheel.js 1217479465 1 OpenLayers.Handler.MouseWheel +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Rectangle.js 1204815750 1 OpenLayers.Geometry.Rectangle +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Renderer/Elements.js 1240092036 1 OpenLayers.ElementsIndexer +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/cs-CZ.js 1206036960 1 OpenLayers.Lang["cs-CZ"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Surface.js 1207759928 0 /home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Surface.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Image.js 1235923670 1 OpenLayers.Layer.Image +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/SLD/v1.js 1239629713 1 OpenLayers.Format.SLD.v1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Drag.js 1239314393 1 OpenLayers.Handler.Drag +/home/crschmidt/OpenLayers-2.8/lib/Rico/Corner.js 1201963564 0 /home/crschmidt/OpenLayers-2.8/lib/Rico/Corner.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/DragPan.js 1236061815 1 OpenLayers.Control.DragPan +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/WFS/v1_0_0.js 1234915663 1 OpenLayers.Protocol.WFS.v1_0_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFSCapabilities/v1_0_0.js 1239053566 1 OpenLayers.Format.WFSCapabilities/v1_0_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/PanZoom.js 1237926471 1 OpenLayers.Control.PanZoom +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/WFS/v1_1_0.js 1234915663 1 OpenLayers.Protocol.WFS.v1_1_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ZoomOut.js 1236888274 1 OpenLayers.Control.ZoomOut +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/MouseDefaults.js 1236061815 1 OpenLayers.Control.MouseDefaults +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Pixel.js 1236258462 1 OpenLayers.Pixel +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/KML.js 1238786269 1 OpenLayers.Format.KML +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/SQL/Gears.js 1237187156 1 OpenLayers.Protocol.SQL.Gears +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Hover.js 1228939469 1 OpenLayers.Handler.Hover +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Tile/Image.js 1241301243 1 OpenLayers.Tile.Image +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Util.js 1243467983 1 Util +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Polygon.js 1239232344 1 OpenLayers.Geometry.Polygon +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Feature.js 1239018375 1 OpenLayers.Handler.Feature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/nb.js 1243000997 1 OpenLayers.Lang["nb"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/SQL.js 1221235615 1 OpenLayers.Protocol.SQL +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/WorldWind.js 1212698260 1 OpenLayers.Layer.WorldWind +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry.js 1239379526 1 OpenLayers.Geometry +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Vector.js 1239550575 1 OpenLayers.Layer.Vector +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Tween.js 1236258462 1 OpenLayers.Tween +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSGetFeatureInfo.js 1245073235 1 OpenLayers.Format.WMSGetFeatureInfo +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GPX.js 1229870638 1 OpenLayers.Format.GPX +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Style.js 1245073235 1 OpenLayers.Style +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/Text.js 1239693775 1 OpenLayers.Format.Text +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/PointTrack.js 1236259403 1 OpenLayers.Layer.PointTrack +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/LayerSwitcher.js 1236061815 1 OpenLayers.Control.LayerSwitcher +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/DragFeature.js 1239314393 1 OpenLayers.Control.DragFeature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/WFS/v1.js 1235992402 1 OpenLayers.Protocol.WFS.v1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers.js 1245698994 1 OpenLayers +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/ArcIMS.js 1243467983 1 OpenLayers.Layer.ArcIMS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Attribution.js 1236061815 1 OpenLayers.Control.Attribution +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/EditingToolbar.js 1236061815 1 OpenLayers.Control.EditingToolbar +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/GeoRSS.js 1217479465 1 OpenLayers.Layer.GeoRSS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFST/v1_0_0.js 1235948656 1 OpenLayers.Format.WFST.v1_0_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSCapabilities/v1_1_1.js 1239711203 1 OpenLayers.Format.WMSCapabilities/v1_1_1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/OverviewMap.js 1236061815 1 OpenLayers.Control.OverviewMap +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Tile.js 1236258462 1 OpenLayers.Tile +/home/crschmidt/OpenLayers-2.8/lib/Firebug/firebugx.js 1202500315 0 /home/crschmidt/OpenLayers-2.8/lib/Firebug/firebugx.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/WMSGetFeatureInfo.js 1239986117 1 OpenLayers.Control.WMSGetFeatureInfo +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Renderer/Canvas.js 1239629713 1 OpenLayers.Renderer.Canvas +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Click.js 1238722498 1 OpenLayers.Handler.Click +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ModifyFeature.js 1238535371 1 OpenLayers.Control.ModifyFeature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/KeyboardDefaults.js 1236061815 1 OpenLayers.Control.KeyboardDefaults +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ArgParser.js 1236061815 1 OpenLayers.Control.ArgParser +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/EventPane.js 1205260337 1 OpenLayers.Layer.EventPane +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang.js 1236258462 1 OpenLayers.Lang +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ZoomBox.js 1236657001 1 OpenLayers.Control.ZoomBox +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFST/v1.js 1235857501 1 OpenLayers.Format.WFST.v1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/SLD.js 1238143155 1 OpenLayers.Format.SLD +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Events.js 1243000997 1 OpenLayers.Event +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Measure.js 1239379740 1 OpenLayers.Control.Measure +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Popup.js 1243000997 1 OpenLayers.Popup +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Markers.js 1239117699 1 OpenLayers.Layer.Markers +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMC/v1.js 1235921567 1 OpenLayers.Format.WMC.v1 +/home/crschmidt/OpenLayers-2.8/lib/Firebug/firebug.js 1202500315 0 /home/crschmidt/OpenLayers-2.8/lib/Firebug/firebug.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/Filter/v1_1_0.js 1235886021 1 OpenLayers.Format.Filter.v1_1_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol.js 1237187156 1 OpenLayers.Protocol +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/sv-SE.js 1236888274 1 OpenLayers.Lang["sv-SE"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ZoomToMaxExtent.js 1236061815 1 OpenLayers.Control.ZoomToMaxExtent +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Renderer/VML.js 1245073235 1 OpenLayers.Renderer.VML +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ZoomPanel.js 1238536781 1 OpenLayers.Control.ZoomPanel +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Path.js 1239550575 1 OpenLayers.Handler.Path +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/Filter.js 1235747730 1 OpenLayers.Format.Filter +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Filter/Logical.js 1237306092 1 OpenLayers.Filter.Logical +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/SLD/v1_0_0.js 1226436661 1 OpenLayers.Format.SLD.v1_0_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Box.js 1239314393 1 OpenLayers.Handler.Box +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Request.js 1238668521 1 OpenLayers.Request +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Filter.js 1237306092 1 OpenLayers.Filter +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/MultiLineString.js 1236637147 1 OpenLayers.Geometry.MultiLineString +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Polygon.js 1239550575 1 OpenLayers.Handler.Polygon diff --git a/openlayers/apidoc_config/Data/ImageFileInfo.nd b/openlayers/apidoc_config/Data/ImageFileInfo.nd new file mode 100644 index 0000000000000000000000000000000000000000..4a45d85e97b9de62e2ecfbeed90e31262fbb04eb GIT binary patch literal 198 zcmZQ$)L;MtbN!6`+*JMKqT=L?+{}~`egA^gJfFnM)S_ZtBRvcKoXjMBx6Go{q|$W# u%)GRG&*c0(y@I@Sx7-`D3=9?|=uRyv$}d9IZbgFj^2DON%)E3|0~i2^9YbRP literal 0 HcmV?d00001 diff --git a/openlayers/apidoc_config/Data/ImageReferenceTable.nd b/openlayers/apidoc_config/Data/ImageReferenceTable.nd new file mode 100644 index 0000000000000000000000000000000000000000..99286208239775ab7a10e6e1e5b811b6190cbd2d GIT binary patch literal 234 zcmZQ$)L;Mt6a9?*+*JMKqT=L?+{}~`egA^gJfFnM)S_ZtBRvcKoXjL7A$_onK7(RO zW^#6FiGs4Rk-0)zevv|Meo?AIW*(54n^=;WpQi^h8wec9G2T1TH?hDuF*zeuFRPfr LhHN81x`6-yM2$=# literal 0 HcmV?d00001 diff --git a/openlayers/apidoc_config/Data/IndexInfo.nd b/openlayers/apidoc_config/Data/IndexInfo.nd new file mode 100644 index 0000000000000000000000000000000000000000..ae691f11fa1c23d043eadce19bf1621f2f718c4a GIT binary patch literal 267 zcmZ9GK?;O03`G+doq`wf9)fP?3PrjQN-Akwc>Ad}#o%AGN%Q*idmN$Yy95gCBLKei zJb;@IT4hUQC@qyL9Sl>VEPSkz*nnzl>^}1r!}SBN1S(rYH$|Uw8@2mJ6m)f)Cn?jq Yq8ef~z58;4`*GR>%V`3&$Qlgs4^W>Kr~m)} literal 0 HcmV?d00001 diff --git a/openlayers/apidoc_config/Data/PreviousMenuState.nd b/openlayers/apidoc_config/Data/PreviousMenuState.nd new file mode 100644 index 0000000000000000000000000000000000000000..af33e4f365ce67bef6d4e78b2aff8d55260ecbfd GIT binary patch literal 16660 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 aLq-NI0_sxoll2n|GJ#Yv1B*w9uMYr41RX{I literal 0 HcmV?d00001 diff --git a/openlayers/apidoc_config/Data/SymbolTable.nd b/openlayers/apidoc_config/Data/SymbolTable.nd new file mode 100644 index 0000000000000000000000000000000000000000..6b0c090a06a5eda85f5e463f6b53dd0d0e6e0d6e GIT binary patch literal 385093 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�Ca9vWJ!ga5&VdS;VDTZ2Q*?)J90EnYtk z4bRmY)B73$P#)R0X~aQ=BdWvH963ewGWXQLhr%LWHbPO*LT$X3Vht=wsB4)M35`_1OR zfDf>799u9G!izkfb7%u`Uw*wr@x*N$h1V0m``h2h$~wc#4?pmlQsr}=2gW$6nCPn+ zP;p7b2EaFG_tH!N0tDciZzA`E#9O)U^pXE`^Ua^@nn6j;n;wsPZ(hFzlf__*&8wup znrVCKu{NQqU_i!f3l1ejS_>WAQe@&yC(ME)?R)Q^vZxM^SZK5@DotANd!_ukEgU^( zyLxM}K8UP6hG)5V94Y~Rb&lN?%9I|&Xg!f|??a`R_a?!$X?a0An`ncqa#1jQP}{BL zUw#vXt9pfRTYgdj`on5Y)Vf6iq3^P&l!-{n^o9qD;Q4gCh-KwFJ(jFe zeM>(U_HxY*fzyJa1;^P3%PaS8f3|w--rW^Ee<1*;doQzk0Qra}#No4g+8x*P@H$&D zqT}IBfRSu@NM#2Vhz{Yy{vPFA`1)cF@eRnPu!%byG$!;qBr7I8Y>7MH#3vjR_34hz zBhl1kYNNy>Ije1KHOthP4d>?Io#2{9?mAHs#y7$7u!5?S#(D_-vt zbP{oMD3jfVi{GwR?+x%!jyNGVg#I50+B#ZYo0fNQ3W${2iWEutEojiHMOlRlgo{U` zmEuO`TMM?&Tq%o&PJX`pUDK#fk4$b9BDQv?;{j z+~237^NK7M2~4~CThN*Y;BBGSPQpVmSE4u8AJd;i7=tJHbLUBCMdJS!YLC`M5s@KD zPfR;C0HlBt0yhWRm5ofN=j}Lk>Y8^X$hV@)3H0r_5v6t7s$@fd8GmYi8$;f+t{3gh z&QR`Pma00bJ@YA2h0&xl1KJLqug5E@4DR#hHw?H>5x+t|#oOP3vI|qum<9U%CKZ9W+KXa|{FV$;QEqyflNw$B5c{it49slAHw6qA^41dp}J|=Ur>mE%y zC-pia0~*rwI8ROOWmqIRRV$0F@C~(7_Zf5??Bi2H3Q$;Mmer5JEPM=#^CH40C@+mD zp!fo7-`Qp9Hk}HcKd8yHNU|w!UnHY}mFre~#m~QE`@LT??81Tp*RIRIsBH8l2G#;VzWx=X$r#1GyJgS!K+y zP1wr_hm-Zg3mF5NM%KkP?Po`>XS< zx{e!pu;{}jnO(Pzffkc4yAHByA5YONUpFvjD~V-^&dr}ZO&QYd1H5&AWu34mhkXs~WwZ|p-%ayl z#aXP*E`JW9<)hUv?=KUhX^gSs#Tzv9p@U{L#0NIBqHqCl7I@N__Ri^S13lt0TYBo= z{F(G=!r~eoGk{TM&<76hxi2Y*$SgmVKwlDwrb8f_x%ps5-e%97z8u7`Pgp*am4kKw@LDutAw;0VboBCqE8RIg&mkL_Rc&n~u* za?R?~Z6d&_b(HJ$by#4b>+EkKz4%+UVsxm1%(N>^H^QafUuQ;&XI6b`bSv-6MjzD6RLN8@S)c3JJtL~Tur#Ye-{w3Dg1gn!L} z9GsL(XwLt{8nvajVx?zi_6An(1zA3VqO?7Shf3sJ{is6Wi^Vh?k)XEdIv!+Pd`9d2#*=+D~s(4qjK*9`vp_YncjeR z9XO(F?kOq|n|lmyJXvttek|(+S@0>icJ;exvK#&mkoh{A(Xm)fTlnc9zm8NLG6uBd zU6w=%nZ#ox6DKUZsZJ|{pR!KJFfTj3<;p~cp5tPE|lpq9r;32?cks( zzmZt1t{F)J+eV?a6s*g|7G_eltG92se&TF5g=l{bVeFQ5(ZAF>mGFcNO9H?h&1?-} zQC0hcVi!}l6&HyIxn>7EQ)U_hlJ>AVJft(?4d1)ba?uvbaGc2G{g{j&I%(vJch`HH zOx4McQvL7t<}5%)X`rNz#NqApUquVXw~6)JRU4S4glcSPqhL;wQD<~Rh$oL2yl?A@ z`4Zbuh`5@Q>+AV~T}XFGv5%8@9?qe|Noa_C1WovsTPxZZreE9DCEJ%ibpIY=aRebq z%MyWbnh;r%!I)#1F^nk-#@(Adp%u^7In546`KUq_=+p=d(QuTiz+a_HM~`8OIbv0` z9>~a2ud@TKrq75r4;2EJ>L`aZ`S9frbd8ifm6ABFTx(qbIPj!1zTgXK9XfK!{cox% zU0Kzs#liYEa^f3@n*=7Q@C94zAR8SBC9$UxJ}su8tw5$Q`*5EZ&D7a@i))ZOK-duh z%@vOFbNrRyUMWL8SmEMZF{>-jZ{BRUiMVDpRI|$O^26XUoEKN5MA{vL>eLPfYxGds zj&od?ATm5BSx^o}WLd8Scy3W(vrwT8zr`+|poXbf`5OlTu&8A8?flsGu z#+uSgc`|piI2C9I>mK}kH@ve(fu;?D7!%k~%v5KdxGIT3Y*yj<_7Kj3u8?TXD@l(a zrC>_uL0?LUP7z2*(ziy-i0Rq3Crxcin}Xs-_U^A292wV((Ib*>w^_czD~tX{^BFif zY?y<_GoDnpBzNo1bYSZ8r~c0`2q)x%G&+zzEx9RhQtG%MC*XS_^ubOScI8)hsD|zF zhOQV+{5-TzyZT2;hKm3Nz?Vi^=u{0#H@ceeQJ=Dxj*<%1qk`^2-fo{mj~v7c@-z!l zd+68#E3@5OL-(TAa1SlskgSyi#|9=1XeAGpg9oFi&j!;3SZgRVSydxq&(NEfi7W8_ zHi#$>Hd>gY3A!T~G^y%v3hKmlj@BT$S?D~fKcj!0$Yi|=@g$1Fc=Y;)99ibO=*1Jv zGh#z55G+WyA{xbKAS4hP zbrRJZtoQfOf>eqM;GWQOng^djEA9}TemETUHy)y^bCu1TC`7;YiTrAOTQSA$SN@y& zaTC(+MyI4@H|o`U)_(nT$418DbvN|<1l6cvfY{o6LgntiZCV7NuypL#ABK%ZFwRCeIyTx&bbJ@ za&@0$1m|SQRqz`TIt#n;us}g9s9Qd*I8DXWXMx65wt!S+?&-XC`EOSDirK@9kzQ$Z zZ^1UFr-PvgZ0*>Ab?hNQorU^d$j`u@5a_uIE%qXTp_R#S_aS!^@2t@8GLI%KnZLkH zcc+q_Xzs&FcL-2sICrmvQrVlmG4P4~1Q7JwQ}esVfy~q;xjR|BoWXylG_OY)&q7P% z57MkX2{{9w?~T3Pny-s}OrJxD^1<1I{{q4TL;&qe;hNDs>$KdDE!5r5WjG)f$ECtN zk)OgNY7oYP6_|(JN|o_(Vw~0Vz@OijH5}k7-mCQt$JB!g&*uw&ig(^W*OCsVr^tCP z`htBc8}6_XXTG5}_ShX3{&i*_?a&@$Dfc-{8(8m>BYNc3+&}Xii@We3O`nJB&C39CBMw@5{Cql zvi1wY{T14Dv0Mu^@$&h6?GUxhZ+vmFwecn3vh;{$(P&gBUKmK_VQKKAYs0m)3%CPCXvddn;GBm4?ZG)5i%l)M!9JjIfjIu(>usUvTjT&WmyoGHsA^Q z*-P#!m#`TAU$<|qbPoJU+E?d*pSmVH)Jfmr9{4oRyNT#G&%F!(+xqtDf=bWrb_S~i zXb%fSza%?Fc za@XvPXGnH%p;N6Ab2(1|eX@q?h2{%8=oq1Vc|i}qZc9dchbq$>jxeCT)e&kCIcA{2 ztpW<;)@r@~zN>n~EHaeaviy|a{`zYfx5Fx2R2TO893ebwV_)US1o9QM}`Rj19Q zmdoM<+uC?V(V^ZWNbQ_|xiuNMjBI?Q#idZ#<~mjB0d{V|RIOd?o6q`9G0vtgLrn=@ zcDCPj2d5*-YLmU6q_+rW0kHd%BRbYT$SHUQ0IQd8-C4Y`{Al@$)#baaWM}kKnEliJ z3v0?AMu+)#e(KChkNy0a0ooSJ4WtpjLxxJ~o7j;WpNMtmblXhs+|9p$Dd#tCt^EGO z2W$?Kn4Chf)BBE>J4ozw#7wMl^pj#H7UyK~LYX>o4UOq`%P&%UH%&-}g~Id|493I@ zI|@Q_Fn&MwOGolfa%8(&HVf!xSw{6LG=b)z@yCH-CI6CPl1LkN`5X9 zEUDRp-kL?X7F=87h96XgM%1AVF0R)04{~8i99LEK&O;KFTf?pOkM&1>V6yaY$PT^T zPsY6{Jo$Q|^!aNI&S{)?q+oE;>MTz5ZE$Eg$59Hm-i%MSXsNYU*K zQ4Vh9Uf2?n-_aEd?g8iqgj4MfwF>MaK9&HNgL(M1y2u>lGQyg>LuGlmz4d=9M@YK} zX2;~DHGxX>d|_h{w?=wQQi=0#fCcSOohy-7)-{Z1q7``yac|%Z*@=UilTgBr>3c*m z&1-JONU680ADKdT!OY5o6}+sCZuTDBn8(!1D@-E!L60G(OLdih39kEAY-{uHikpy_ zkLi1HW#;#!S#(ac^+(E+I>R#Zzdhd_pZ_}?%0g-6-!6dU1X1vK^@VFV zY()4`@X2rzur2F|FSb5gz5csacYrs-97>jdHAfg8%qvv$yFKNQlXHDo1QFplR%eOa;slhC#aSN>!b(y2h~Xui9VB- z-G!w1#jiWhT@lxn)~_l#yh7Kl3OH0jZ$_Iub{2q9mPR({R9oU(TuGe_uyn zk0D#_>Zeyx)XfkZ8j(vuvJCc~iIJuUtWdI?h^O0=x{;nrcc=?F{dmxY%d(ml-0GK0U|M)j2|L0 z#!)YnSnsE%GWK>@Gt$LSz%ZYCYwhX-Y4{N4KRDH_f2D`60}P3wx_*@@Yuo!MK~d^g z3eP9K>)O=B>7{-bATH+3rmFlnPgZrD8<04h@#n>XlbzN~b7w}>N=eVAJueD(Kr@4~ z1Ccfi?5Y&kwH<#MGJ4Gom=|?b9p_N3G)lcwhTa9~Pga&eTXF(spm?P%e2d^D9&)?Xn`8X*Ofn2dFKvTMx{i44~;u8 z+ZAg^Cl7tZDaN3S4EAxWQkR3tR}N2tN|#6=%rO*;mm6d6pd>AkP7VhvR3O;%=H6r6 z4k>1R-TcNVJ>Rx4#fL*)N|M%jZKZV(NZDr70ShY!#}EK&{TOQnk6?o)ZDb+1mpDNf|O z+cv64_O_h&?wogRSuLKl{J#DckFmVG?hfUPrc4M|aGu@YPZJCzxflnHlQoYe~?lkHjVt^OGsEV97L8)P5Xrz*NAkaYyOems=e%&VD^?eyPdUOAN}5e zR3y=Qp$c~|I$QD}OXpQ@4bk!}OSe}?y{#=F5I4+M)v_)FVER^ck!a5lT@#}QJ6H^e z7LnI==k{K?Py#bZu#oWLyx!;W0=Z|>Z8dpS@h z5&B=Y-(P(wL3$yEB0;+RwLF{!8NbNl^wm*kLna)6nzw}c9Ozq3GY~74Dd4`?T6v1W za=*)V6e)D@bd?1*ilDJKJbTeX;1H#6_O=kNB0bJGm^xA$oWV)oKm>I)_EW-n4aS_!iktGsDP_}_~e89 z@`W+QeQRxk`vgybisnQQ#(S*|fWKoGahabJiz`X=4Sxu#Z(b1OV>p-lJB|GE3aVe4luEih2#OyNj;8Yd6TfUE@6gv>^p#`_ zdl7fEN5^#?KVcJM(1nw4e7@8*F{}(5prd=}niS?mMPsM8`LnQIxX;!+1lnC?sy4yz zA1DM6a6i;LaZMZ32ci{4VrCe_j7)u+Jvi>)`a;@o6oM5#=yAO2IBWh*sNlU0@NIMW zOnM49Zi4n>(cv6&n)&8N2>-=Q?nur~B~p8~eDIsgmoJl@0U5=`e2xw|JI(`vy0-b- z$a3TvSgGWwLieT20V%A@(7KTC)PBiqR1#|jC;d=8k1_-O?(FtU&|K1=aB3o|k5}ey zvfW5E2a73QQDMMuL5i#*XCzXV8ANKXm;=tv4p}z@{j9y@3gu4@<$^Aip3S$Sb;IFA z*ie5vVZsx84tgXnwEyuR3AhLKQ7ANer#9y)z1O1}0VC#4CyOu*eiZSS&J&TGtW%{MuM6(wzWRZckyar8PDv3v|iw zKWe~X(Pi|4o9Y}k8?8dI+yIY~E4-P{nkl|Q%=dr?_ok-i)w7|=Q8-}!?X!5d6w|Sd-jl<42a)D`;Tu474i5Y_jfL!Dh@L_l((LUN z(uGySV8OWMXh2@mFu+~k^*MTn@ddoS-UJ<9n7HuTP8A^bqcA+so2e=2{O~!K3U70M zXQ)@7(%D|TGcPLJzoYk~(tzFH#%Vv}G_mt_-xtHmcINygsAn?MpHVAZ0qjY{Jsg`; zF3jTKh>41X`ComL(rY6I7O!GN+o_LJ%5C*} z-Qn)u?gg?_QI$+!Jr!jGM5fYP$4N25(-&$v7unWiwn9MuI+u<_l~6&uy83{P)YqdF zn_vh^WWaNVn_C9-ak8bb@=R%XrcLNSV>Hk*Vy&DDcRNRKsCe6 zU8?mtnkbnin-Ccqslo3!N!DcN7&}-W$vEWh3J!{4n>oLi-kNPjh?>%muev7)AjxlIFU;Gfhx9KjMnft27`Jq^Q-d3~MqZ#DYCi ziLn1D18D6H_}76eHFf(2Kvps_wljJFpR#&Ed~7$%6%TV57)zHFlj3Fd7xDVhqlwph z5urX(nSgs1Wx$d8!h9x!HTiHLi;6*LrOuT<)ufI%cH@1|e8!^`Cc&IVz-kMmN~Y>F zJKy5?RObL--5T@9`tPGao8C>=jCQOSu7u;A-cZ;a8UnHmeEgHH7*Rm}uT}pqu{4jW%o0A<=E_R_)Vb=FScMDAxM^SUEU@0;~>|F08_v791#`~x%@NH&J zh0?26nT$;d}E9#Uz_b3v9#b=>PZq%u?{K<3)j|1{f` zw#6>VVl_^6{)3tBb^1edv=`AmkYh$cMS7?tWlzVf9aGmll>l-trd*VF0bA|_B-CIMyh$Il4@sr}>))aWw z3)P(D%mSRc?m7xqufZAHSR4y!{x(Ygx&vX`9Zk8!uWA;LY!uBtkStNT?dt2RxD(Jo z%^9F!2e7YSYlMVoPpDBcyIaosdbfv67TqwUt-zJmU$Y0amVZjY4^qh^WlzJ44 zs)YyH8Qj$N5bx{hVMEj^|`p~ zBW1cqXw6bczG*HJ)JM6d)ky@(6o`pzii(NT-5mj=flYLJU@oP*?rVIH-@muAid!#a zp+@Ds!Gn8~YlXcgfR97puHIPD0%d-U^YHh3An4BA-)w3}0v>Vp!61!mOnIp%RK55BU9>1>P@ZwV*36BnziUF;%A?;!GM$ zo$TyQhUgLlAt?+R-H}yMR%83g>`Y+}e2yu*tD2#&HoE3JjU47#FVAH*&QgBIFwse@!Cq`iedPi|^)Bn}Iw zllCGys^#3S)Fi+OA%nGg`O;;vq4-bygH_P7N*36NT{+AAgkZ5(Ne?`%Re3L3F4A*$ z)GvaWI$7UtSBp3B4s$eEi%8vXQLv#uruRT6NEzSjY-fU|?e%_+Rw_jJ03NB(-BZPY z{pP!k58{X6AmUrc!-2?2-!vhnyU&oP+;HvpQ{@TRY`@>7^OfnY!Vb%}%t6u@a1bKB z4nAYIVeCjlPy{tW*_QmmV-GItCu}uIWEfzVn^hIM)myihAKhHOb>k*2YeS)f@ifl; zpMv?n@|%xXcG$rvD`^?l+V1wYwkNImy@9a4q(b>=4_>Ap{nt)kllH+rp{fM8SLj)? zAT{5p&DjyKs@j^!*S?q;@#+sO(q%`#)L5Aa)DUc6aj)kVMsQ9z{*XZP5%QAbbMqg0 zAz1`)`)sE#^UgKB1>>a08|P?@T37HL?SO0lOy`e06_`vvitEqJ?$U&!<<7w4l>{ze#l;#F!)w;B)K)>$IHA z_L*P0y|}XS=8g48s!nb znyEhQC#FCcuzs3GpmqZOVjEcAlNu_Xr?Cux!{k3 z89-A+Qr9(!h!4P}EO}THrbHcD3NweMQ&{Kg%I8A(SKF%PO>5O6Cw12%mGnh8K-mVa zWiP%kep6IAn!e^?xAdasJ{`NaawqF_+{}T-I;pg!C&*dPV^B}9BS(R%{4cXj2ZE3q zt0AAxG#L2SY=u}BC%ulm=+62&N-!YI z=4)^TTwp$TbRzMLil~b1tQX9rc*>{Z{x5kT`w^H+sE!BBuJ)ZQd_I5??(G?*O?vB^ zYemkcglM7K`ebj^Zz)Le$Mf5h$?nGs3(~r7OIsWujla;@?Tr_<;O~z4pO1Xu)%Ik^ z_xEq|r+=#V60Kw9XG%SW0scBdFAJ3LEUaUsY^y8V5#;+4m+hCdliV!b_ zZ(@w^=`QQ-C}D0Y;W<08J;uD>)!`QVSQNA64E>o-Y{xNAC<(*h07y3AIe$$a7u4#m zKgQ93e%@hWjGMe7ppDKAu%aLQ86^wp5$DV7VrT>)5I+9XZIE`rcX71eJ}~X6U2s|@ zErI{8oc}^+R%K+WHr|eSbyU26^UO{;hmet5ApmP&13Q+9oao1^pnYOCpYtMr%qU&`g$}Ku$iUu4TZvP z)ymfNyt_uP#sS9RVztiQDeQqzJn>?V!o#z?S@vY&;zspz|r#Ad7=9Almn^930Wn4e`379vo`GG)f7^& zeO0JkKn@Meg2B@tEDh1)hKybSnQT`J-x9v>Q!-iE{%(LGT8@%#xAYdq8DfdVfih*Q zIT-+gTP%Eww!nh?y}U)sBmH?1{*(+rfTa^YE>12S3zvrWZm^q|O>TzPQTrdTGckSG z%=`4O{!D08m8-!*55vjCLRc^r$n?;85705*iV4c*?0Ke}4;X&ozM@+uZ0U|;?7D~> z!A@=FgF}H#0W?f|cz24pjjRa_y4a=Nvsu=S zw6QKF#{wa~^>}|bWYp*s^aZwO*cfHg^2Svsj*=4UU+0HWyDHD0<&A(fs8wR(nj;e- zC1cWwA>}F}$Rv3WenmE+Hm>G%c4_qu-yVv4BXc2N} zy@%Na#j%L)uVtM5@qQa|w{*8yR*yF29ySN2W&w? z;-dAbwTRg8kKKBg>cu%}d73bd3T>p)=@!!FromfEx7H4mKyQijazw~mdO0VKXGG1T zdEWZtv{huG3$5=nEcP7^tdYx4^~O%?Hl%0PE80sz(V|Bi-nvq0B8B?|(HA@t`6P2b z=ClJq@)`;QE+1_#$Xe-!q~%$zPuY5>ai6mFj;wF)O+Lh6364s?Gng7;Fr(!!$Isey zp4hMTA{zgo*mHEJ0&B2w_GMM>nYY`Zh58V=-)?JOWIv`lGO5V+a1j&$(Fmij#$ zuoGh>{sn+5EE+SPOqSuBj&ZkE5On<=Tw6(mtn;E%;F$MNkCDB1R)%$6N40>|-4!OR z%{9eJ`CWBGLI=J5)^Pd|9q(c?ACmqc3u)Qi)9wYRbK~~GEhFsAG^ciQmQtPp)Hj~P z7*Pl%&^o(*@V1#)r%qnN1PDd5QFMZd7_d@@b>zIEI-ji_tkt|j(9xzq8+7V$3NYa} zf#<@#@(4RAio7qTpHoXzp8&90=fe2G5dK-CN#DxqoPFbu|4mArX>i>wBP=o|yTSM3 zBKkt-nbqTV50`*p$@GUBzoh0jGhLLa->SF54Mi4k9j#w8bs+YsI(}mW$T3p_h2~W) z9T!SfdU`>xDp_=V20;sY()Kr&8E6+?mSa~xdIcf+EQ@NvM~MPZ~}Y@y|ByZY-J z&gaqkiFMwFwVj=@ONl3)n7~5+N4F|-qGu^fcX;P+?R2)fP?eGz!*&&_B)z6AA}YzB z*f(^=Xs@7ers+I6jC2xz#?%b%q!4~ctwnk>Y`Mc#L*M}9gpCjQ;nYn<>Hr>db?Vyk z^~KL_udb9UG&?uelbYEC18lOAA_G=WPKJwwZ*Z|fpD=hpb+9T5J7wMIg|w@-!O(&j z(PZ?yo5&<7fO@fo?%~_`Cy>D(Il=?J|ue`|2uJQS|f8GN~j;bUTs`)mmdeG2f z9CPs)XdrJj?ny89eMx4aD>N(suz)cpO!e`uVHP9>KuleWhNkn!Mo2@Vxb8B@k$s0{ zbrDyKgkF4E<%ic-6tJc`%J5)wLtl~-VjafF?@|@%-dUQZBSrC!_1I??M_8JL7Eg7+ z?3~=&(-%pk@DtC&TE#nrnz$z=ZER1nhv9jQDCN%Rt>9)``ZeKAupQHf^xoE~6=XGc z;l)&^_{N_gJS{&_=5N_rsZx2}7ET`K%|&-PiF~PM1Tap|j~({YH1OZcalaUqpE`Bm zuN9B=T3Z{UBfzc2KHfaLN}xzibd>Ve6s29;gApTAMG$ssUDt}m4M|H2IlV_7H}8%^ zoZ250GcU|vPaAq?F;1p$-Em;{QsKVqcom=bfF}({llvSkdw7L*X~yC~U|RDm$f@;A*`9I>z^kV2uE<9JF87k+Er_D1Kp9^D$?ro&7UZL2i4;!s^kldOR_Ha1rZ#+ctcg7$r1km(V`^C~L*PE|% zG;b{aJAA^V&SiZsT|PMPeYB&Ds`#eb7U;0IW1k`xd$s+VaI zVUp0+i#yt$ApwwLlN4b95_<`Uq6ieg5(_8{sz8d};RwGt?1y=om-!L%FcI@G5Ay@& zf6aGJ=E=;Hd9$kW)-Aamc34E^&Gqanj4{}0VM!Ec>r+jM;$8c4E_R`g&0L1b9yux( zCkVGZqR@8~XX4zJX#WCuATfI!DO0^|RirO>?(E({`Nf9eGHycNG0P#Q-^tINg!pN9 z^nA<_p-@&_WIlPFxJto`-s_-{d6d%6d0`Y@^1I>i1Xtw)e6ZnpJ*8BHF_|}@GCs5i zb;1WjG~^tE;cLURz1ZfWhjTVYC}AhISu<4Y)3FEQ(Zn5|Jfi=?MKm%1_#_&q&E3qe z5?sr0K+7hg&+-GjzKWqRe<{wCqj?CLB4O|Y6W#%#7CB!Sa?@H!$uo?|EZ_BhEaBy@1lA+B6rEQjU2uqg1{kX23fLN zO%w`j8sR}mv>lwW-DbQYDafc9<}!8FsxAW~HeoQtDuwx;^tpzQ+Lq>jecu`%MQ?@^ z>iB|SnWMw?9ax$m;c)L^bH5=%;3$Lf$u%_M*VPYSuU{gd1}8&aG$9906S@r72T@tH zn*jkmAChQZDCcY%m3+g_6kV&GHrP|L83CSzeVdNAOVy*YG7--LP?`0bYHzURqHgE0h7|r*iSrz2pG~Iy@Oye(dLUl~*2r{;s ztO8CIfUp`1xejG*Ta!0U%{cQI*m~h@3D)|~CIKA&>mLKFlv&}QVW^_ogzhbkDN8!x z^r$}uqYGfvWqy#@>m7ziAckzjv*kbr5<3P?f83{}Bm!zQz3Pvt_I(U2cE?pzN+$xE zMHkZ%;8A|1#$e+?w3e3y^5v69EDVSIgz0v>@?~a~0ESP7v}~4!bCKeA`lCILPNgS< zr5VuKObSSxhJO>y9Bhm{hwIf(Io$(bM+jx|^63Ze>M}eJ?w zZray|8Bx)cBqCbm;p);Cup|@IKYGnsEonBmP@2f`q!9x^!4)#edQV{YlR+8HO zuV7N(VjRP>J49H|xUnf`qZi^;8R%eg5_6WaO_@671ww%E=A zd9cQ?`^9pmMHtt$GZZu9---nkYbocNXxyhb5;DIh2_GM zxU8<4;4(@i!$mi<-rKqOmIJBj=U$Pf^w2SufPbAb->5r|&AgD{HvX0EBDXIqyNnR` z_oC(wtiOEuVeQyNb25?aRJ`o7)^w*YxwCHc3O{$RK)y^kRB&JxAYN;+5u7PZ@ z9V&13VMObqS^?Ct?=Cl(#sLaL-a?DNMuYFTS-s&qkz?w8DUpoXjwdB2`#JIBs@16P zcF(mFq%fR-q%io*MM1}OOdB1^*IdvoZ}p5~#FgcoX5skYui(muJ&-)#EaeLu?7*Ue zpajHJ0%NE{A}PH#x>=Zc6yR*C$p%J?LIaTNxZvcm+DaF9sX`Z+FR=Frm2DB3$JIws z0*0&m9`w%-s8o9RGv!*Hpav_dl@5B{7b6`RDcH@1GE??n3cc;WJ|mJ;XnnE9jPK3z(r!g>4`Sd~O#;ZO$v7@y+&UMuPdfmOt7+a$Hb2mnD?x$E0 z0>J>!3=aoR(1J+dnb&omHQ-$9)wf}vG*ty0zl!LIgW*V5eCs*lub^x`A3uREfUP!^ zpOVt6;g$cwvjG$mK*1t(=^euRgLtch@de_npoH`&b6Tz$skW?zXgp;5($$MI7zujT zlhDw>p zMu7xaM+rfodW~Samy8z3wq)|}+<1n>#-5bieoxvZidcog&fbwj`;w(HX6JMC3l5dET`g@mW6L3MBJ&4 zAw7BD)nc?-Q^)(>IZ_%nR*D$c%9HVsGDR4k#_dq?kwH4vssoK)~${s`|2?g(xIaCr_#0Yo-F9pOCB18?X+H%&ZE0k~Gv& z^*wcPrl-)WJKbZvywcUuUyEfuN4m}QbjnB_`>RMDqg_x>Kc@JR2rY1S>FGl%=-bRf zi*IQgj$CYPaurl!*Yy6hJPE{PQ>6cXis}is9&+`BeKsg)ZQT_ll-$aQqZg{{mR{P5 z@w`u`^yr1_obQ)Ux?fwttI!@3vUK*PGdu>Cg5NJNFjUh&%W$c>3<9c*ExwQ>Gc)BA zh=f>C6$3M!qJ#e{e=HM@CiEomF3As?xFiE4>h(^?d?4jTO&(s5{!erj>cIxm{zWda z)K+}>5+EGu4ECn1%Y{PhAAzYXzS-2OPaB+Oz4~CcH@-NB1)TP8&q8)NSh-0h6(8+0^aUJ{gErc`XWmj0r6Hr{ z&zUAmJjUI9?1=x&24|S8ph>_`M5TB5vTgDT>64~53Y(IQnsTFeJ83a)QCcE$RN9Oo zBPLMK{5LMY(AH?wjJn7iLTZ?t&8wzM1rIVDn4c3%q-@?M17Gfsq>NCbU7BfPM)aw- zRis4*ka9(_$m9#4&{aIdLC+fLP(J6FWea*2yhj8i;v`=??;S%3?vdnOD8iZ|9-0FE zSf=y$hbm=|%D8FQO^%aUuii(QM_!Z-2Br&_DF(_$JBW0qr=lh|A`N-NR-n=sg1A-Z zj9Z35JSTQA1XTi{QT6pk?;JoQWLU|K{ASCqYwpCWf=7 zg$JrPxhd9O|9Go^Oo<%r1jL$FTXxpqJ`uW((wWrY>Z3<}>dZ?hZsXY@N#U1MG@m#? z966{n>MT)-G2G|TVAvf;cXt^E!NUQtf9+xK^|N93d|vOdm+UTQlQ&byJt;c-DhdOxf9X z0F^8T_qO#pw57rcaa=v!!G~q6XCwxaXM(F@oqbKRqN$xR0k;(CZf5bYIOWasnrJh(qrmi* zd^VI`LsNMOK)t}F@8vaZ8eF4in?Gl@Z2H;h*ry$B3Jg@Xd1n{B-Bzo#%AxleQ68Et zvjd^dJT&=^I0wNf`+heZ)%T2&Il+8TwLYd+4wxf1;L3AKoCPOcg!}K8p1>M6A@N5O z+Doglya94)Jb?bE3q;pM7W_M3bt!GS(6dcnF<%t5YGUe=ZWumas**&B%d(R*dgi?6{X6I+Y8>A55NGIq2KxlL zNKK`G(6|G%u7gM9h@@ruKM0Uyi-qGK77Q0H50^WttRM&vQHK2c7V_l!6rA|!{^LjR zrD`S~f^x{h!@ti5+7bJ{cmyiT^ot>kI4^Aa6t+)sJ0N9r{8znaXc2vIz_pXn1k$*Q zEyMz4Um^(a(6tnK-~8~tjV~rE8+QRDUjaTP6w~ZA5I`9OfxLxI0Z5Y&oX%fw@b`*R ze%A!&Ith`XIuZjNPkC3AkS()iNIMX3;A`OqRoGWyYd$L*ZN$^^4kz0Wtj&5tm4f*Q zySI>%IPUCPK_LV$o!t2PX6JR*m}N`FzZ*_t(-`Kpb~rr!%Xso&bLdd(>-rHXg%D|s zbU|^PKOn(@nhe)Be%lrJ2+vcK7fXBed~&U_6|B6a{4dcu4j_`sXv$W$kPsk@WO^mOudVvpOg+^8_uPI9b~eZUR7r zPnh%xqVF&JBgC+EOjs6AWFxdF>)U|AZ~#_~1X+4#f{SkFIc&7&VDm489}vrj7HBo_ zSKxvKEs)^#`Nb&vE-Wuwy%E}sKI<8i=~DG+)4*mmk)r=kcPV6n5?d&GS&f4u%M^Z$ z{tVDP>9Gtp#E~z~a8>jzcozzW@#&v#?&(AMM?LI4yEq1lwh@$aohMU|`gF>p+L|Bc zotnRq@#4kYuaNrr;5+Yn%;^(8ZPbVWniv$?>cyn!r2$6^^s`y1GOozGRJB!vS7hjV zeNB7>Z$EzU*_Xe2^5pTCkG8+qZjeP~p^QEI!x&n1Jg4Zzi`S0=kM^};(EM7N5z>T#j&Fc zDum>FtUjYV38i)iwXi+j>W6Wnb7YQb&kp0lke-rkXUs3wNb6k6#_~e>C|o_=siN%p zmR`>0X2H<7b~8oIv&kr@3%sQg>ZK$!}K6k$g?of5@z`1&m~U4X9Z)z3+A zV^t8+k7Rz41w#VifW8zlPc{$GG6BNumeKIYh#&K9+Tq8Ca+DEvN8unHS-=`-L1b6} zgsBA)`{$$E+V(lEv zQ9azT&`AE_TZ7^7#l;yBU5>8)eD?uvzR+H2>0^?_UR9_2sCY}#Hf%%SW-KR~cd*1= z*6mNesS61P@gaBbWm(Jn`28 zgy+htm7>EF)@}+3kZ|Y?G8g(*in%RVX1(&T3&mb%)HSk?@H~^G11G4eB2tCYz7VH)yc%3*pYEXW)3JG)mRuInb^dZ0kFd+jAyhb z4kKa-Ma*jvGj;d}qhIx=46;&HGt8^8(ErGJ3TS3>7061GTaDN;kPD%L(-(lA|}IC4vX`?+3F6z&^qv>(#$*Qa@lKvahH?AQg?W z_Hfz=JbtJ;LZlc2Mngo@*h*sbu}Ohd;t)we{1bTuY~H<5a!AxYH%eg5WsvHiVX z&vk&31~=5rOc9^LNOsG@Y_FRsjm#X+R{~~`quUToV)@cZUbQK^-`naPIN^&f5C0-D z^^Iy}lX4TPHz2(gr(Ssb1W!Wfx=d~lMASreusHx=m0yh3X&BENfd9YQ6yB^)p24@q zvuOXGbu9AlHiZY}ovepWD7QHQK{Z_>;IkI}m?$X-YvfC{bZ83a4y+GvjZTJW+)NY{ z)`;@=eAgI2`z;}rui7j;uFJdoDN_`^HoI79w6zlIB(m50!h=15AGel zW#;s6fR3_%e~&$BOuU_lD_%POtMS{IPpuC}Ty`0;B6Y)<3Y`%)J#NJ_JDvjWM$47s_AEwLr)V>2+H3{Z$;7(eGH1#Vao?fxgu<}gTH4F zE!H*hZq{aRK-~l(SaT+7g_w*F#lHO)*%eJ zW^*)#g3Q2YkPJ$#CJ|kMcr-}zUs2aDip?-CG+$~~qtyz_pvcpCXbQ^^>Z1U><$hA6|@1=~+^zeqF{}tSk`pp0{(ycmIE! zK)J_?I{fx`K+)d(zqQsT ze>d8isI>JU8+)j)Z9dukYRS@c{g0h6%L&Q{KKC;j96p5*{RRLhIGPZE{GHVL;u^`=g5knBzz9yAUf_2914+ zw%OsIdkBsNyThN)Um<1~qTErpKe&K((Z*#NCdc|Nxp>62NYy!QVLh^bfm_If#rP;j zC$WDPF}^Tf3DA0$!{M3l;(VbA2&!oTpp@Dm_|5c~|Nhzeuf&NJ-5 z*2+X7Tof|W(C&l{ato{+pA5LZQZs3z#vkxK=MTV-9p~?h9I^J&jIFs?Q8dO3F)uqs z^<%nw1Q@_3$>AFVvO?2E!Ou-q(%?ktq7XVPM8s%dBSN1t?HG`|F_{&iHAeqZoW^CP zGfB0G+yg&Q4p)u^H#I-^_rB=xH<37D8egpTP<(eVm+h4&()jpoGpm zOVz_Nk;OoZ$)ng%tJ1-vr_kkB&#_0A4S16bR3{gMai5|RZMX{qS)6I)Y!tgb4@wwSO>vFqXXc?wp?+3AcwqZfu+PV4O zoq0rW%YvoN4WMo`za?AjV+nXSNLfr840zVGr&_OHA-LRJGa5~-uG|X>FBHl$5#5?1 zB}ho6jvp;l=*)fiaLU}8KI&qb8j4q|rWPmUl0t+1jtxTEplLKf|Io}CT)DM;1{(Bj z5Ha8ol2pK8M10`y$aKyI)4q>Lia>ptT$>e3SAkovFj|D>aQ(ZT4YO8&Z=w8d#ESU2 zs`qSK+JjU6_a2-G2Ovy%jK(6qXp8U%1{t7RHvNqRwgK^XIB`!Y@W8s&_-~z&U4Nph z#}o^`JUSoQn25rt+rZI71ezfy*!15zL5M<*j$k;D);(T(8ofp>my=kcbQ=8C`@OL> zm&Qb|Q0ON{OBJjAgqqT6&lJL#PAR+ayt=ga#eKz_qo1xlx^s8?(U*4~J-AOsjY3qH zWj3%1UmvqJXg_o)D@J_K{TM#Hb~nuG7Eq|JCOhFf3yJj0v=xTIDnisu#Hj)O|+ijrBA6Bj|;L@#p6QB;}!X#WRxDLpphJJ}|m788ca* zHHKS^fp+9(iCC0~idQiuKH}!n%Tyx@_+A?PVglR!L@~|um3e7_Uv{`asIv;n^06?x zV*1moH!r++BH;U2lKW!hBo6!Ft~5sPWQMJ`V^@R=c=GKV{ zqt3|~f<~P^y$=3;WJ~)v@PU&XSgvu8S*gEBz%+dgIcj` zjB-;5?Df4f=nmxDc#I3_!gE!<1Nr$CN*B356sM~iYMacg0qsZ8G6Crw5MaT6xL$4E zw-xW`PxuR|9@{&6_ka1x#~=OdCR9L9|3LT<#g)*HZqbfxKYGt3nkvu*3ju5|NyYYD zrB)++j~Zy6cE}S7i4=+~XL3gybRyj~sgzH?+9*n;A;}MBoCJb43135Cp>pX`@uvWw zBs734F=rqXYoX!9fLl#MgSIINNs*A7=t>KvWvh{zKpTCTnn^?&M#v(fpNe(5ShtAT zgWiZ|NDwcPug(?8w8AOTFjY9BIJHh@+3?HI1x362&=}%LrIQaj{)5h~TlhhO9F7sC z6T3S-A}e9E(4HeWtY1(|K*n%%4H?Uy?SHxd+nw#baz;ybBU&T$P=2V}8~t+!T#4L$ z&~8xy5FxoH6U>;GNjx9veL4MnjkP9|sacqyLuf~8F>TH1K;M!10-C&D?V%d{2=OOG zyL7VzQq7%8eqhrAxw;+2bbkbxH{lN`c3(23rSCney z4-7^^+J##pI5%^a^=f^WM-a3cUc=El1ea8fhs8tQTuyvg{`KCI&#F~ptSBdOmfFxH z{8S>ELXPe`85V6~TE#ZV@8hg?xf(SbU}{E+#_*NURkGyt|Nm8`4>;5Z1EpN^fLM z?EDDav=;wr8AbpS!RJwjJxEs7x2GmWJB|hbN846(RT_<2@8I({4!*F2@0~+f4XBCb zcKbrc$`0czA_^#SyzoxU>p&{kbm`l6!T>$FVm7Y=%EZJ5)X6#yT&tP^8L#yNIAuvgFGfx%6^0p6*qryWbK7u(Lh$dX-Oh}&f2pi$bMRj6O zQYfN_yq8;?!VllMru-87jWQOb#ZwANp@Lu_Ke}E!o4Vdxe*02n9Tb8Z!Z9CUBMFB_ z&^{tj*2y;pJhePoXel%xVE~=B?Zrw_g5TPDvcLD`4uZuVe75;1uB53h92hBn;0RIY z=O1-$+#!?lh`YVpT5s!9!0He^#SnA}LB9>Kavb_SKd*W%>T=$HT*m54ZE8+U&d42`o8Ah-KQc0HU?6zG>RPyWEU^R zR_{iF1u@8`!i%3)qwP=PH3Enrvz3uc)~o+yM3_KUk%k!vDiKL0!eFP2)&#f)%(vCR zRtMy@jQBfSupONbsn(>+j?8V^Iz=MMy^y#=Ue#`qP=x=uScH#Bc>p($DcptA#^!($ zKM5m{AnH&2--%jx0R^H061U-1!Dciy3-%Vs<5xuDnFpBtd>YU721J_Rct27ce1XbF z5`~TT^SncA$gw;X>gw@t#X^D=;XMb7^kH2I1jc4*Ms2^)6wq4bSIG_W`3~TvkpIta zlNTm#g1Vq3npP6@_>EY&nTJVOpvC;lv^-(!`?zgBmyq*7uZ#!i81(EwNg>t&bn@CZ zPxWJECP{v53=5RE`Y~Na1PkAHL5d+9Jbu){XpJG>7rVA?+RKir@7%q!`SAYklg~ff z`trfnmwTVzyZ7KXc&P=XdL+$8Y)Uc)`Zx5w%Gs! zTUU=O;7UMlL{eD9u5|Q!an&Ourzaurvb9K$wufIsVBh@<6jzSz+=Ui-v$#w~fZ<8K z#v6~rXj<|Xd|cE_1i5erFNm-;bL`YKEcubwp0;hn5?bknRr_k1luVMiu6n5-n_P_0 zmD4Q#EYd7M2S_Z6p;@|FUmXv@x7av_tv1eTH0{Nh@HnyXJwJ6I>8@8FJEBRYw9bZu z*T)dqMX=>ieQ4HH5ds3xGj0YQ5mTEscg>{Dar4V+t&0NbwlYg00S(jTYCCCu;Gx4T z+2LU*%XSCX2;<7LwO>~KH7N$}{9)Gn@z{&q2DA?NG+1=i} zv%kGXzRizrf5MS)Vzf1S9~Tq-`1S`eCa&1Th2hZ=vShK>LN4dRbT;Y|7tE|aE{YNt zPIn}42O&>icW!m^4JCNW8X?a9JuAEM@3xzSej=_Av4-F+!^IlcuJL3><_d@m6^Ho# zebbtaY>J+!aC3x1jh_x`qLQIX9I_x$MPnM*mQZy=Yf$&5qLP-1n~+)V>OvGpMEuy| z&$l15==s4a$D^I7Xl=CfIc!C0bVl0TvYvLDVE2{oGn0c?XgF{*G>vutbDlB)ET4Gy zKkv|Lz;m#wV?;F^OPsrL-^f4-r#V9c77WG^^q8%I;XWT8c1|c&8nz#p!c9w5&=T4O z#paBMQ2n`g2Zhj&U~?b?01N``x1*SfF0%McFg~@k7$6&oYRFLlr9p6cu8AFg36dt;y7;M z1-0*v%%Ku>R;)z(yd0N5^y7elyY|7bx14sK+~4fj4>aYvYy(-VOZT@ax~|ZUX}{)M zam4Gpm?{7-p!pFsMf{6BM2XR67#J`{fGf8A)N=F)|5{<@9tm@_Q`HbwLXM}edQ4;5 zsivu+oj+EzlhaLHeIDS45s0;D zhRct8-4T*Ps<*A*##iGgggYy!ZP*DJ?gB2fB{?*m&n-iS)D1uB=`HIiRB^GUE}fOj_hA2We^wlR{A#caTLB$%4cSl4ef(v85#4y3fb}Vyog`QUSfWSTN6D^FA z;Tae)T!M@yYL*P}s+qi5S3FH<`}e7a)5cR2HS3sRURjD_G*}@eBM2H{s{pBnMO77`syWr0{MJV- zkokE$9HWwt?|{v%2lyIou?CdTqf!=@tl-gLZerJ}c}~`F4OD2Gy4RA}__T5#HOxmr zVsN2!2zthf$p#Eg$ehGn8VY}u%ML~&maT2HUKOSXXEErDK4LujgZ}t6IBGi>3o5in&I2#KUfvu)<3$eb8sM1wD3^%qGAeWGeVq1e+hhw?Q35UDwG2v*C>1waj(F*N~jkPEqjS z7{AZ+cCvEUaCP(NEI+58EhpC$LI^XGHa9D2+M^Ow3*{E;LAUk1Klt*4Net0DMk8z} z6c)q_s@JM#K_Z?vO1JjfvT$$TlUiVPVY|L)ThuEVn5fc<6W97xIYxPnwD?w>N2Z_fizF6{Q@-F}`Km>{p@b!6_~cFri1%1U7C)&G5Zj#LC&=SElm3nD6^uCNYf%`hEcY6Yf-5#KYp@>x(W@9Z*~R-I3n{lxAp%$K;Hy%6PRoXeQ~Jp{kS`N zA(!I*sSj-bYz}iX>S>R99|tekTGfZ4Q)Y_)swdRHnt366lZ^=8Xw0Io}oCXM99bEO8enVACPoyd|XsF7~Lp0y{dnk=!f2u)q29Z z?Gd#vv_-HWW11^-Fu)|LZx_Gvba*~Ed`hwZ(b|Ou2D7%CO)sqlujK~-ws^V1aA%rg z;u?3p>V92;jk?}lg$vO4>UE=FVWS{H`$H$4$7_DTfW2#XljP-1yDV_TG5WpkT>3w7tg*##ti)i}tLpS_KS42*$N8 zAheri4$d(`MjdKW8X$$Uj`FkCtG@-7VjR?qW64Mh3o4Ju6KFoU-9gcSkO@*!hFB7> z{<{0JyN5=_XJb9clDfvqu%6A?HG}mueRJ%(oz4?_a(fslj+otq9mhd~4Kc>l?9|J< z)35B&TUOci-M}k6kRqnb`7I=36TMDr(G;M_dOxdBe97~(YUK8CKl<6;dIaOc?|(RY zd24U`hyR4F6h_I>=NtSr_MoSBN6lY`$ZEFTMWJ$Kzqb7@q6;uGNoATUdK9Q1m9~*6 zE|1`3Al()`xfO3>%U_Fq-zqF$R;<$rkRY)uxd^e{Uph5 zT$G`IEe%jIpxCkJqn?aBfTi^*ofu5*GJW+)1yZ)t%TEg6cz4e7OQtYtAv;h;*q$`ZG{Vw-XJ4EicOUGbm|!c}OS zu0@Zf>KaP)?!pI02Cx~np!&)cV}@<;O0d)PsJ6 zVt734-r9QDn8Wbb3B{O!mii&=(U>=8R$qdHL{-%#j~%QG0#qA%A2hD9rV*^Aw4{UZPLat3M^5Q58OPy`S z@!H#+DsB49P!XJXk%pI{rb%AMK6>^>A|bgL8H_Q*<$5iVl0J$M~=p}RRBK{uttDilfuU?J`51$+U4%>c%ZtJ+i^LLH;7JrSKTB_dG zrrHo{^piL>x!6(S?biCt0uob|!K?JHzyIOsGd^#jn})vKIDLl0X3i5pf!?1xu?-0? z&b$;wP@=%24LEhmD;CiPWW;5%A3eEfkXRw2oSh)Kh2_ZtrBG&spFCiW-6#v!e4VWA zy{6eGko9do@VuNMgXJa&feSwdJDEJ#`!oyFaxDM0fe$a?*kIps^zv3UuBNhbktVog zWU-mVZpKuJ)Zm%1)kXUh2o0hJi`_H=qhW}k-ivfE3|>bMuyE3n2s;~6tUNgB9ybny z<&S|9`aZ3qx+Z-HLvma@Qo8OHV@8-Sm~O*p1eZuk5AHnLK`>}8QGThq{A6eU!4srM z2aD+kc6kfM+{dRZL^BHL25agAIw|>*X`EeX26SNECD)gp+N*!w=N0Tj@6-=ostN;2 zU~gxuMX~`?X3&Cgu(IB!8dXeOs0`tTz_~t>%@+(7*1xk7*-$=Ts+Or2W*(M=WR|Dk zaIi^omondF2*X@?FF2OI&tzn=CSVD+T`Ad$16gGN%I>FrcuV#o{i1HEU^9Bed~d!o zAhkYxbba-1{k6SQM46BiqS#(57%em4`j;w-g5E@9`ok}}gNq5aIeB}w{1@YreRtFI zSf6Zm)uAOhS}!l@7|ZPK4PI9d^F+)fIu;AlLdv9@&urpZu%G%577?MQ;krh6(N|-c zep{?uukMtX;3o9)Zp1Rm`w>Yi&muV30x z=I4>X53XQre2V~m>MRi zcVj_yA;vMoU&)U{#^@|I*e%GoVu98$h>X#C23jl_(MI%`zJ2dW%pTqkF$!5RVmMzT z>2sh&`gt9ti6WBfN4*1@62=gLIyB3Yjpj+VHM#VU+f)IgvZGQI5!pC=&Ty-Am-QDpWxqH)F4L2~pq zOczQ07=j)N;AgiZU)1%)hGz)3)LI*C<7mM&;EXmYAK0Lqu9}A z7+Wv}uA|;678I`y?q$N*H(q|!9HFT)@ka?lms6JODBk5`FCUn!&cc8e5r*TL639u# zvf3AIYz@$;dB!DTx@`d7<#A1P8spAn19y3rbU!3P+^cQm*vjXR`zO zaGhcTsO`Tg0Tc?mGAqkp!$32(m=g;zmKhR`kO>LXS0)ys;^n;{;Ig6g%w8$TBBCF% z(9q_3%Ad)<%5GN3%6n1GSzD|CY^LB zM@>?MdE5+Ipnpv2zbnhxR7~bq6I2&NlsIG*cA*CuaN0&xqxY$@?WNDX~ zq2JwygfQbIfr-j|1a~vj_~LLS7fAx1>ybl4i(rCbsKJ&d4J%ePtg>lyd4Qgy?#l^I z4{xkk-lKuV0>3ju(B~;w6f>K5NFCcBKJI?)YASqMmOmmqCz>d~x2vCZU-pl=Q)~z+ z`dOS*@D?{e*ywF%p7cHd0-pE#YK>TFVrt34+gE{iGMrh3Q?s_Q)(Ahh7BifB`)Z6glRdydjI9)Jo zu}JLA{I)z@gaR`&FWJf^bUp&=H}i^{K1=!dwPsL(NYk)jhbBE1YK#4AtM`XP z7%+ftzD^jGV+H}%>;3u>-q(w}C`5YUnSKs_>*bv%U<|?9`eE95YJHm7iL7Mr3>urI zP6zW`w=E%8Y;=&D=E8E=fIj~uABQG_fw_n}P}(K{#SibSKVk9z=#}l3LpX?bEhDbn zIX^}xLR7^D2o_RVxfnMEE=M0Zxtx^|clQY3GuoHP(&9KN*S<{0?G0zMix!ZBC#IkL zp5&7tbfNKGx#))kkY@IXN*LUzF&_1(UxdDwS(Pz6u5C}DNFH3uKl>80$%RyNn8LHn z&&A;AokCQoBDwZr>Uq#@{OSi?EUyX0R0~iW{6a5j6S#smuKm4OHjo4_B;zBY^$z?* zdFtndzff5zR@j^Z;>+764{SlUSUAz`fs2`h^;`7M#~0nfcK3YzJbil;u9Uwet5dh> z9M(@Qp4I>s>WNZIf|{OucGR;W*JtBfcXt{43N3M5!H2(29wC54Z+zGL6hpO3Y%8Wg z*7Tf9SF<3ReFZ14s+{~{Y!PWe7iC0c$k71(UhbjE#c-DN_clWUH8`S55-MAV_)tM6 zD$IoP^qyzKgKLRMEHdr-+CRibTlBSmm?L9XwqK&qH-%?}*QDXqg3}_R7ab%{ht;;i zX`nqn=itQYOD?*q@C>Jy%pE6p7sIceL7H_YfZ%2p0X?`EjZR+ODYjmSij$Dbso|@_ zQi_d<9&a=2FA#`?)s+YaT04t6W++l8^L;+QE-8P?G?&m-d3L6vRi(p)Ijd+(|GyEo5}LCKXOY3 z0FA!x^k~BX6a7aagRdVcf~mLCw^K>52E1kf2DHs<^EDj)BLe5JfAm`HQrVs4KA0n9 zCs;RumQric(RpLL!O=NZ*N;*dK+vk=Bts1-Mk4z-9=KbMq)3cLdUsY9UR*+fX`(pw z+-6wQ@ID*HqCsG)DCQ)^;);hB*Akeww^^WstZ`Lml>Y~9C=6aP78LnD!GIaXK^rbx zeDh{?4uMUsp%nG!H5qDYrA_e2KEdV3-SZb{ z44JJseD%-FKeKn%3W^cx>oLG;Gg$lEYC<8UQ5yvKHlYrX}OLTCMy$?4c z@!l2pl@fDg8n~_B$kDs}rbIRridf8R>;&FtskcxACVGIOHN`oSRNpp%0R`;YGYh1& z5_G5;j7)v$=|iRQPZ-r$@PD|UJHIMaki7b=d1~x%B(Z9rWo+!VuNJBWywZ|_tLO0;1XPmzC8OzyoZK{xw_7Tc3Q#tV0nF8 z(YUvEhr=<^o-Vq+QOw1|GWKSG#RNBOsJRkI_P(W+&5QGic{$?AtgfnFDos0d`bm=K zauhtcF#TR`1O?x|6586>t`H=_Z#&F<{geDCzFrPDG%-=OWy=0@&U|k7L#( z3t65+4l_Z59kaQ%+6nWjy@CQiPcXEY^_zQefo;h>Oov9H-wWj`7B1?vqT1W@Rcf1M zH*t+yTt-AfBs`~bB~M@?3aQ3SNxgjjX$-g)<=ceptiUQq9c!c?TN z8z4`SJVNTQ)zBkG_Br(WnIi}F%64bPgv*C4?w~7kni`j$Si_u+?{BMZQ#3h~)oL~o zuN^PBzExwo2uMNQ&&4hiTUJt^RRn&{Sq@gzq)?5TM{hS-%>Zz{3s+5bd8a#m9+KqD zxF9O0P;?M=%<6N=R@_n1mo>i;HL9r#$8>(xCoB@7+OAZl!OW*{2XLWx>xZmvc28e+ zsmfE~dq}qThM6FteF1lwfdTn!ra8oWKS{Ei+4#Xi$Y%ohPmrk;6#Bd(=BUo47R=31U%|d? zajGG+wiK+XWk8(%u*MK|Ts8n3GcQb#n8e@0Bc)AW^5IBiP47iW*^%aoS)bh3;ST9kzhx$I|}j z!RcY|>-<{tFhhOijvi4dq~M7sjA|+yV}%6meM!me+J4CDPWRX}nl2PbU7c1lLAndE z=Y%()DYExov8BlsB;AAh&4qbd{6w@;pNeinLxBgSkiG%i(FxfaMSRYwmup(%_bY>O)el9;G8 zZJDp9pq|T}Cb;zIyb?xpm8-ZvecnUwv|{Z?Y_@)mlxo=)>e-!$qx15k;V~J{u#3Wo z3|orEevciPa!s2MJs){FZI?kvTwLxlmD$am_;P9D4w0pLhGCo3Q82?f z@~o6H{sQExXBlj+CXwA}b%hZ&!YWK&Ag0LgW+nz^(v1w)DitC*Y?_RE`@*VL$HQZ) z5#m|8!E46r$wh1L(@IgcMDm+$6>X&JMfd z2{73Dn)+6Yh|`s)!}G!6)BY(1+ZCGC4P|l@B<~+66ElRHcvS&AX+_`A&^Sex7e8zp zyk9RYP@YAD*5RRWec51Ai?ldD$1w+`MPIYoZt7#8;4=uOOICkO`> zhX%m%{#EY)_Vv>QD`u{SVD-Cp`wKV5$#!j(nk);4bdf#*c1{@SMfvuXEKXD!RTGtd zr|cAChXv3CHar0^X`#VAM5rvz3KNB1%q+xBK{4#fF2n-JUeoLrEFoQid$dQv)W0f| zBn-RakFf!bpR$2zYqv+F_3b)%j8yFUQKDHkwWekAif6Jr*+*y`TMLKDfh46)ib)fX zLlvg9HrFG39CGsZPPYsmUqgo*QH*xJ;$<{rjh3DnQM{&Sgc^E0A%4@QqH%Y{JYURx zP+X)=-f|;cH+hG5BvO$>_K^7+yoWwXGV&e%1fH$Oz47zmArXf{0_|cLWfRHvLhhX1 znIq6`x8KshF=LGH+jmY6o)6D^hj%ZYJ%bT#sVcNUne00~OL8&p%+qhhMxGVZEfKG% zK?UW*X>hP4X-4nf+$x8Dih|R>wbvU!MDvxe8uolw(6A$BcN=eu`=>fI8tJ`!KCaI7`*{4*R3CLHG5Oi}46`HXcu} z`9CjrkFK9Zt~?!geASwU3I#d~#nw8sRK3f~ZS_V6=lwI%gz_tky!9@8{pN#bJ+s+j ztBg01sfiN2v{xIvy}m4W8O03W3mF>h?MQlpsNC( z_5HQyVfV}@)Go3|_rta1T>K`EVMT&)1dfIhO??reC_Zry5?&z-<)t?K3<-evvtJDg zSj=!$wl-<8XyNXNYnvwfaq`y8SqyJ)9|DC=kN1be!82r|6+1x$lk_~v&iqZyZhUU- zlIo3CVki*1Rq$-}ALv@4#i0$t3ylMx;t_C5HAo!nLxaA1-K)O(3LdOs3vE9~@>mvk zbSOu5TeYK$w`FiG3jENw<2ho^!Rl^k5mj{cW`w@vwqkz|BK#YAoWmMT8XmkS6-kOC zlrlpN$l#SU5c|Q4XjHbm`Fv6;tDqVf%E?*xyg!2YS!{){QPh5l1bxJ-9bAIGG5aX( zR9>l_S`|f~whyC}7mJk!Rj6rnasxA|!);>iVej>`VfXwn z1WSEwm!B`Bs;b7-$?jH9G=e6r0MEjx3}J-9B>9`M9>pwxxGP+Y>#@}7b=Yg%N9!su)KsvxUbX!I7CX4KJ^-3%p%-n??aklxDQhpRt?xG{008<|GJ?#53WIYAcuMi}I=X3#%Daa2;26dgmwILI0F$iWC~u z$xjf^}OJgfvB;&1TVN84ta_kg)9OWk3tm zOC!O|q3yw)?D_qW<-IPta1?trTrmauJfYzMdCm#oeu&jLn=9LF0l*%#MD3oK z;?O51kgAcSZc_EoVxl4XW7wlcLuD-I=wB^D&f%QCcHSEe2i&b!d8gZ5N5gyajCqg~ z<4D!ogX^t0p)9WKp50RRi()g2$lOUSc)i6Yw-s9Xiltt;^9>b4pf@$U8P&1hMO3p` zs@6^*w)D^bgEA&Gmbjzlfk#Aus2OjuVO99L>gk(E9Ns`+as#saiU$^xc9#cF-MUYMsW$i$zg8xRL@egiV19oO92p$OFZ6$KX7_D;KJXC_U#(3&k^ zATwkcnzwUKta2?}t<9V!jUzQt?3%KG(4SqLRf`Jc(2I!?%hdtMzE(1_SoBCL2I#Gb zY(2F)kcIThk>Fw@q~MD8qv|)xXw!O-fJ$)^vypic6rGa9ys|fb%@I96D+_|;&yvMp zg6WPX$UDK^{-SI>f2Xz2%enShAhR$qe?mSq?}KxMtSIBL-q3>^C4 zdrEna#Tu@YR@@wTZGBXGtuu$CSQgO8AXA&UV^BYDF?Gac?+g`V<|s#EzfW$!q�n zDceOBDA5GMn|AULAW?{wui99wL&+Q)*+|ADTT5@${9K$dTHAEi!?d%-=T9%7TP?`T zUa#8nqBz6HZ}nn&q{ol2a2c}J7lcM%kCMYIxU zr)#Lci(NL_fauE8@8ZfH>bdnO7r)#b>(ptPB7sML|Fz_OKEp>y7C9D~uG;Hd5un+x!R;w>IR5SI(6=>owBu`E!_V-}<`VY9VjVaYq z2%lDt$+WDQ*@I&Gh3Y3=)`S&oxr98{*vyp zi>`%lY4mK)_%`Bqq6-(9M|>E;(`Y2|%ENp;IrrYB(xV5at{W5v@8i=KriYr=&CQxgoPUhg!(xWR4uN8)^5O% z2u=@9y2lgLESgf0xkl_G%QSM9>ResTX{kS_)6f?pmQ9X+D$n1v+9Jpfz@Tf1yjreAg zmb_q4XI0eKA!MyMGp42ls76A+i!i+4o%7xaT(*B&jkm43k$pe=`=3HE+0%#n;P1^U z2jW`*?^5;clm02WKekNzYvSC>0Po_Bss%QTHoL_yRZIO)#ELMa#X4zv=9q!h{JKK*-e!N@nB4`Hj%ACXBk6w(N@JZeP)ZY(yJoB1!J&nKeu(MdgGfa zy{u0j(A}WKWcC95aK|i)d4W@0a)kzF4dZD48T8#aM$DzmkoO;=eP-xlyFB?F+4g)h z?5KSU$P^0LVwv#hl0_H;y27_J;q1}C;)pZ*y-DRwL^zRxvRD#{xW#5L<2iD*AR|dh z!r>~W(GxwbJ`RJ&dPi%ak5iVU>JYv~k>)@(w-OCl7;AKXvEW7Y+HJNexORFm7zl&~ zD>g3-O%XLzT5>P}q{XDxrYNJ)%hUF0_~l0~z+bB$ZU!Mwo+6I2ZZBq9Z)uvG;)wKO zGk)wgX0tqBA*pM#d+?kbSB2@Dh8npE5^^|OZq1@%E)k{uqSrgy>W;f1_UI=QTTol^ zgkmZRuwUbn8{o5#aq*?L6mC6?k}am1PB!W-c%`K^^WD%)(+hpwleZr|C;)5A6jLq``ZsJBclVZ)Utjw=?8?J^s* zN)y=s+gb&ETV#Pq2`O}A&JddfyZP`fcy*-2uJ9eFaigaj0lI_+?9wg~1p@Bh& z94rEDbeEk{v`$k>d4aTO-7*D|f>u2)qm|+rj%whsx|Cdur(QWwbt4vGNY&2}i1R)x zFAq2M!<$EI`ZbelO6429bAL%eBWgTdp?WJ+J(vVrsfQPzy%aE;NkhHTUFc^QfSOSM zsW8+abgdL$k~7<>_d=|7cRW7tKf4&CjCgP*(L=?Qu{dzePO#yuB6@-4&&T~i^(`bJ z>~zn&C%tj+92w!1_ZI9ak`|?Gbg{IUD+)bxq?XOKKN#KG{9WUqR{k1rsxLz5+Kk0g z9&(sgGY=8IO_#T~zIw#%$MUytgVjz4jf2%r)8fT)_>`yzP*9Jo=_iZf1NyZr2SkA> zWGsZ2l^X_+4d`1VMdM-DxO+4fOf}nia$oG~5t5P6bw{^@XVE8iBQ6tBhP4}~F0@;O zR2>tfplS$g6=O<0e6XapOn&V0omfhK|M8;@njqPUJM7G57%3>*D=~$PMJ~qAk?cqi zDZU&1NNyA&S8*%Ns0hAI;G+g8^~x4++E1oSsFq$=PP}S*sN&GgLVeBW>A5XPX3;{{ zU;g#plh3evAtA7UNFQTun4Pz_A8qe%hlEE{hc*;N*a^;Jbze>B z)Bb2YJb#U27B*}S0K9+91`0b>df{nod1ha28*_2_hp1rxADBh!-Zp@?=01#y{^$P# DRd%ZB literal 0 HcmV?d00001 diff --git a/openlayers/apidoc_config/Languages.txt b/openlayers/apidoc_config/Languages.txt new file mode 100644 index 0000000..be96913 --- /dev/null +++ b/openlayers/apidoc_config/Languages.txt @@ -0,0 +1,113 @@ +Format: 1.4 + +# This is the Natural Docs languages file for this project. If you change +# anything here, it will apply to THIS PROJECT ONLY. If you'd like to change +# something for all your projects, edit the Languages.txt in Natural Docs' +# Config directory instead. + + +# You can prevent certain file extensions from being scanned like this: +# Ignore Extensions: [extension] [extension] ... + + +#------------------------------------------------------------------------------- +# SYNTAX: +# +# Unlike other Natural Docs configuration files, in this file all comments +# MUST be alone on a line. Some languages deal with the # character, so you +# cannot put comments on the same line as content. +# +# Also, all lists are separated with spaces, not commas, again because some +# languages may need to use them. +# +# Language: [name] +# Alter Language: [name] +# Defines a new language or alters an existing one. Its name can use any +# characters. If any of the properties below have an add/replace form, you +# must use that when using Alter Language. +# +# The language Shebang Script is special. It's entry is only used for +# extensions, and files with those extensions have their shebang (#!) lines +# read to determine the real language of the file. Extensionless files are +# always treated this way. +# +# The language Text File is also special. It's treated as one big comment +# so you can put Natural Docs content in them without special symbols. Also, +# if you don't specify a package separator, ignored prefixes, or enum value +# behavior, it will copy those settings from the language that is used most +# in the source tree. +# +# Extensions: [extension] [extension] ... +# [Add/Replace] Extensions: [extension] [extension] ... +# Defines the file extensions of the language's source files. You can +# redefine extensions found in the main languages file. You can use * to +# mean any undefined extension. +# +# Shebang Strings: [string] [string] ... +# [Add/Replace] Shebang Strings: [string] [string] ... +# Defines a list of strings that can appear in the shebang (#!) line to +# designate that it's part of the language. You can redefine strings found +# in the main languages file. +# +# Ignore Prefixes in Index: [prefix] [prefix] ... +# [Add/Replace] Ignored Prefixes in Index: [prefix] [prefix] ... +# +# Ignore [Topic Type] Prefixes in Index: [prefix] [prefix] ... +# [Add/Replace] Ignored [Topic Type] Prefixes in Index: [prefix] [prefix] ... +# Specifies prefixes that should be ignored when sorting symbols in an +# index. Can be specified in general or for a specific topic type. +# +#------------------------------------------------------------------------------ +# For basic language support only: +# +# Line Comments: [symbol] [symbol] ... +# Defines a space-separated list of symbols that are used for line comments, +# if any. +# +# Block Comments: [opening sym] [closing sym] [opening sym] [closing sym] ... +# Defines a space-separated list of symbol pairs that are used for block +# comments, if any. +# +# Package Separator: [symbol] +# Defines the default package separator symbol. The default is a dot. +# +# [Topic Type] Prototype Enders: [symbol] [symbol] ... +# When defined, Natural Docs will attempt to get a prototype from the code +# immediately following the topic type. It stops when it reaches one of +# these symbols. Use \n for line breaks. +# +# Line Extender: [symbol] +# Defines the symbol that allows a prototype to span multiple lines if +# normally a line break would end it. +# +# Enum Values: [global|under type|under parent] +# Defines how enum values are referenced. The default is global. +# global - Values are always global, referenced as 'value'. +# under type - Values are under the enum type, referenced as +# 'package.enum.value'. +# under parent - Values are under the enum's parent, referenced as +# 'package.value'. +# +# Perl Package: [perl package] +# Specifies the Perl package used to fine-tune the language behavior in ways +# too complex to do in this file. +# +#------------------------------------------------------------------------------ +# For full language support only: +# +# Full Language Support: [perl package] +# Specifies the Perl package that has the parsing routines necessary for full +# language support. +# +#------------------------------------------------------------------------------- + +# The following languages are defined in the main file, if you'd like to alter +# them: +# +# Text File, Shebang Script, C/C++, C#, Java, JavaScript, Perl, Python, +# PHP, SQL, Visual Basic, Pascal, Assembly, Ada, Tcl, Ruby, Makefile, +# ActionScript, ColdFusion, R, Fortran + +# If you add a language that you think would be useful to other developers +# and should be included in Natural Docs by default, please e-mail it to +# languages [at] naturaldocs [dot] org. diff --git a/openlayers/apidoc_config/Menu.txt b/openlayers/apidoc_config/Menu.txt new file mode 100644 index 0000000..9a9ad7b --- /dev/null +++ b/openlayers/apidoc_config/Menu.txt @@ -0,0 +1,400 @@ +Format: 1.4 + + +Title: OpenLayers +SubTitle: JavaScript Mapping Library + +# You can add a footer to your documentation like this: +# Footer: [text] +# If you want to add a copyright notice, this would be the place to do it. + +# You can add a timestamp to your documentation like one of these: +# Timestamp: Generated on month day, year +# Timestamp: Updated mm/dd/yyyy +# Timestamp: Last updated mon day +# +# m - One or two digit month. January is "1" +# mm - Always two digit month. January is "01" +# mon - Short month word. January is "Jan" +# month - Long month word. January is "January" +# d - One or two digit day. 1 is "1" +# dd - Always two digit day. 1 is "01" +# day - Day with letter extension. 1 is "1st" +# yy - Two digit year. 2006 is "06" +# yyyy - Four digit year. 2006 is "2006" +# year - Four digit year. 2006 is "2006" + + +# -------------------------------------------------------------------------- +# +# Cut and paste the lines below to change the order in which your files +# appear on the menu. Don't worry about adding or removing files, Natural +# Docs will take care of that. +# +# You can further organize the menu by grouping the entries. Add a +# "Group: [name] {" line to start a group, and add a "}" to end it. +# +# You can add text and web links to the menu by adding "Text: [text]" and +# "Link: [name] ([URL])" lines, respectively. +# +# The formatting and comments are auto-generated, so don't worry about +# neatness when editing the file. Natural Docs will clean it up the next +# time it is run. When working with groups, just deal with the braces and +# forget about the indentation and comments. +# +# -------------------------------------------------------------------------- + + +Group: OpenLayers { + + File: OpenLayers (no auto-title, OpenLayers.js) + File: Ajax (no auto-title, OpenLayers/Ajax.js) + + Group: BaseTypes { + + File: Base Types (no auto-title, OpenLayers/BaseTypes.js) + File: Bounds (no auto-title, OpenLayers/BaseTypes/Bounds.js) + File: Class (no auto-title, OpenLayers/BaseTypes/Class.js) + File: Element (no auto-title, OpenLayers/BaseTypes/Element.js) + File: LonLat (no auto-title, OpenLayers/BaseTypes/LonLat.js) + File: Pixel (no auto-title, OpenLayers/BaseTypes/Pixel.js) + File: Size (no auto-title, OpenLayers/BaseTypes/Size.js) + } # Group: BaseTypes + + File: Console (no auto-title, OpenLayers/Console.js) + + Group: Control { + + File: Control (no auto-title, OpenLayers/Control.js) + + Group: Control { + + File: ArgParser (no auto-title, OpenLayers/Control/ArgParser.js) + File: Attribution (no auto-title, OpenLayers/Control/Attribution.js) + File: Button (no auto-title, OpenLayers/Control/Button.js) + File: DragFeature (no auto-title, OpenLayers/Control/DragFeature.js) + File: DragPan (no auto-title, OpenLayers/Control/DragPan.js) + File: DrawFeature (no auto-title, OpenLayers/Control/DrawFeature.js) + File: EditingToolbar (no auto-title, OpenLayers/Control/EditingToolbar.js) + File: GetFeature (no auto-title, OpenLayers/Control/GetFeature.js) + File: KeyboardDefaults (no auto-title, OpenLayers/Control/KeyboardDefaults.js) + File: LayerSwitcher (no auto-title, OpenLayers/Control/LayerSwitcher.js) + File: Measure (no auto-title, OpenLayers/Control/Measure.js) + File: ModifyFeature (no auto-title, OpenLayers/Control/ModifyFeature.js) + File: MouseDefaults (no auto-title, OpenLayers/Control/MouseDefaults.js) + File: MousePosition (no auto-title, OpenLayers/Control/MousePosition.js) + File: MouseToolbar (no auto-title, OpenLayers/Control/MouseToolbar.js) + File: Navigation (no auto-title, OpenLayers/Control/Navigation.js) + File: NavigationHistory (no auto-title, OpenLayers/Control/NavigationHistory.js) + File: NavToolbar (no auto-title, OpenLayers/Control/NavToolbar.js) + File: OverviewMap (no auto-title, OpenLayers/Control/OverviewMap.js) + File: Pan (no auto-title, OpenLayers/Control/Pan.js) + File: Panel (no auto-title, OpenLayers/Control/Panel.js) + File: PanPanel (no auto-title, OpenLayers/Control/PanPanel.js) + File: PanZoom (no auto-title, OpenLayers/Control/PanZoom.js) + File: PanZoomBar (no auto-title, OpenLayers/Control/PanZoomBar.js) + File: Permalink (no auto-title, OpenLayers/Control/Permalink.js) + File: Scale (no auto-title, OpenLayers/Control/Scale.js) + File: ScaleLine (no auto-title, OpenLayers/Control/ScaleLine.js) + File: SelectFeature (no auto-title, OpenLayers/Control/SelectFeature.js) + File: Snapping (no auto-title, OpenLayers/Control/Snapping.js) + File: Split (no auto-title, OpenLayers/Control/Split.js) + File: WMSGetFeatureInfo (OpenLayers/Control/WMSGetFeatureInfo.js) + File: ZoomBox (no auto-title, OpenLayers/Control/ZoomBox.js) + File: ZoomIn (no auto-title, OpenLayers/Control/ZoomIn.js) + File: ZoomOut (no auto-title, OpenLayers/Control/ZoomOut.js) + File: ZoomPanel (no auto-title, OpenLayers/Control/ZoomPanel.js) + File: ZoomToMaxExtent (no auto-title, OpenLayers/Control/ZoomToMaxExtent.js) + } # Group: Control + + } # Group: Control + + File: Events (no auto-title, OpenLayers/Events.js) + + Group: Feature { + + File: Feature (no auto-title, OpenLayers/Feature.js) + File: Vector (no auto-title, OpenLayers/Feature/Vector.js) + File: WFS (no auto-title, OpenLayers/Feature/WFS.js) + } # Group: Feature + + Group: Filter { + + File: Filter (no auto-title, OpenLayers/Filter.js) + File: Comparison (no auto-title, OpenLayers/Filter/Comparison.js) + File: FeatureId (no auto-title, OpenLayers/Filter/FeatureId.js) + File: Logical (no auto-title, OpenLayers/Filter/Logical.js) + File: Spatial (no auto-title, OpenLayers/Filter/Spatial.js) + } # Group: Filter + + Group: Format { + + File: Format (no auto-title, OpenLayers/Format.js) + + Group: Filter { + + File: Filter (no auto-title, OpenLayers/Format/Filter.js) + File: v1 (no auto-title, OpenLayers/Format/Filter/v1.js) + File: v1_0_0 (no auto-title, OpenLayers/Format/Filter/v1_0_0.js) + File: v1_1_0 (OpenLayers/Format/Filter/v1_1_0.js) + } # Group: Filter + + Group: GML { + + File: GML (no auto-title, OpenLayers/Format/GML.js) + File: Base (no auto-title, OpenLayers/Format/GML/Base.js) + File: v2 (no auto-title, OpenLayers/Format/GML/v2.js) + File: v3 (no auto-title, OpenLayers/Format/GML/v3.js) + } # Group: GML + + Group: SLD { + + File: SLD (no auto-title, OpenLayers/Format/SLD.js) + File: v1 (no auto-title, OpenLayers/Format/SLD/v1.js) + File: v1_0_0 (no auto-title, OpenLayers/Format/SLD/v1_0_0.js) + } # Group: SLD + + Group: WMC { + + File: WMC (no auto-title, OpenLayers/Format/WMC.js) + File: v1 (no auto-title, OpenLayers/Format/WMC/v1.js) + File: v1_0_0 (no auto-title, OpenLayers/Format/WMC/v1_0_0.js) + File: v1_1_0 (no auto-title, OpenLayers/Format/WMC/v1_1_0.js) + } # Group: WMC + + Group: Format { + + File: ArcXML (OpenLayers/Format/ArcXML.js) + File: ArcXML.Features (OpenLayers/Format/ArcXML/Features.js) + File: GeoJSON (no auto-title, OpenLayers/Format/GeoJSON.js) + File: GeoRSS (no auto-title, OpenLayers/Format/GeoRSS.js) + File: GPX (no auto-title, OpenLayers/Format/GPX.js) + File: JSON (no auto-title, OpenLayers/Format/JSON.js) + File: KML (no auto-title, OpenLayers/Format/KML.js) + File: OSM (no auto-title, OpenLayers/Format/OSM.js) + File: Text (no auto-title, OpenLayers/Format/Text.js) + File: WFS (no auto-title, OpenLayers/Format/WFS.js) + File: WFSCapabilities (OpenLayers/Format/WFSCapabilities.js) + + Group: WFSCapabilities { + + File: WFSCapabilities.v1 (OpenLayers/Format/WFSCapabilities/v1.js) + File: WFSCapabilities/v1_0_0 (OpenLayers/Format/WFSCapabilities/v1_0_0.js) + File: WFSCapabilities/v1_1_0 (OpenLayers/Format/WFSCapabilities/v1_1_0.js) + } # Group: WFSCapabilities + + File: WFSDescribeFeatureType (OpenLayers/Format/WFSDescribeFeatureType.js) + + Group: WFST { + + File: WFST (no auto-title, OpenLayers/Format/WFST.js) + File: v1 (OpenLayers/Format/WFST/v1.js) + File: v1_0_0 (OpenLayers/Format/WFST/v1_0_0.js) + File: v1_1_0 (OpenLayers/Format/WFST/v1_1_0.js) + } # Group: WFST + + File: WKT (no auto-title, OpenLayers/Format/WKT.js) + File: WMSCapabilities (OpenLayers/Format/WMSCapabilities.js) + + Group: WMSCapabilities { + + File: WMSCapabilities.v1_1 (OpenLayers/Format/WMSCapabilities/v1_1.js) + File: WMSCapabilities/v1_1_0 (OpenLayers/Format/WMSCapabilities/v1_1_0.js) + File: WMSCapabilities/v1_1_1 (OpenLayers/Format/WMSCapabilities/v1_1_1.js) + } # Group: WMSCapabilities + + File: WMSDescribeLayer (OpenLayers/Format/WMSDescribeLayer.js) + File: WMSDescribeLayer.v1_1 (OpenLayers/Format/WMSDescribeLayer/v1_1.js) + File: WMSGetFeatureInfo (OpenLayers/Format/WMSGetFeatureInfo.js) + File: XML (no auto-title, OpenLayers/Format/XML.js) + } # Group: Format + + } # Group: Format + + Group: Geometry { + + File: Geometry (no auto-title, OpenLayers/Geometry.js) + File: Collection (no auto-title, OpenLayers/Geometry/Collection.js) + File: Curve (no auto-title, OpenLayers/Geometry/Curve.js) + File: LinearRing (no auto-title, OpenLayers/Geometry/LinearRing.js) + File: LineString (no auto-title, OpenLayers/Geometry/LineString.js) + File: MultiLineString (no auto-title, OpenLayers/Geometry/MultiLineString.js) + File: MultiPoint (no auto-title, OpenLayers/Geometry/MultiPoint.js) + File: MultiPolygon (no auto-title, OpenLayers/Geometry/MultiPolygon.js) + File: Point (no auto-title, OpenLayers/Geometry/Point.js) + File: Polygon (no auto-title, OpenLayers/Geometry/Polygon.js) + File: Rectangle (no auto-title, OpenLayers/Geometry/Rectangle.js) + } # Group: Geometry + + Group: Handler { + + File: Handler (no auto-title, OpenLayers/Handler.js) + File: Box (no auto-title, OpenLayers/Handler/Box.js) + File: Click (no auto-title, OpenLayers/Handler/Click.js) + File: Drag (no auto-title, OpenLayers/Handler/Drag.js) + File: Feature (no auto-title, OpenLayers/Handler/Feature.js) + File: Hover (no auto-title, OpenLayers/Handler/Hover.js) + File: Keyboard (no auto-title, OpenLayers/Handler/Keyboard.js) + File: MouseWheel (no auto-title, OpenLayers/Handler/MouseWheel.js) + File: Path (no auto-title, OpenLayers/Handler/Path.js) + File: Point (no auto-title, OpenLayers/Handler/Point.js) + File: Polygon (no auto-title, OpenLayers/Handler/Polygon.js) + File: RegularPolygon (no auto-title, OpenLayers/Handler/RegularPolygon.js) + } # Group: Handler + + File: Icon (no auto-title, OpenLayers/Icon.js) + + Group: Lang { + + File: Lang (no auto-title, OpenLayers/Lang.js) + File: ca (no auto-title, OpenLayers/Lang/ca.js) + File: cs-CZ (no auto-title, OpenLayers/Lang/cs-CZ.js) + File: da-DK (no auto-title, OpenLayers/Lang/da-DK.js) + File: de (no auto-title, OpenLayers/Lang/de.js) + File: en (no auto-title, OpenLayers/Lang/en.js) + File: en-CA (no auto-title, OpenLayers/Lang/en-CA.js) + File: es (no auto-title, OpenLayers/Lang/es.js) + File: fr (no auto-title, OpenLayers/Lang/fr.js) + File: it (no auto-title, OpenLayers/Lang/it.js) + File: nb (no auto-title, OpenLayers/Lang/nb.js) + File: nl (no auto-title, OpenLayers/Lang/nl.js) + File: pt-BR (no auto-title, OpenLayers/Lang/pt-BR.js) + File: sv-SE (no auto-title, OpenLayers/Lang/sv-SE.js) + File: zh-CN (no auto-title, OpenLayers/Lang/zh-CN.js) + File: zh-TW (no auto-title, OpenLayers/Lang/zh-TW.js) + } # Group: Lang + + Group: Layer { + + File: Layer (no auto-title, OpenLayers/Layer.js) + + Group: Layer { + + File: ArcGIS93Rest (no auto-title, OpenLayers/Layer/ArcGIS93Rest.js) + File: Boxes (no auto-title, OpenLayers/Layer/Boxes.js) + File: EventPane (no auto-title, OpenLayers/Layer/EventPane.js) + File: FixedZoomLevels (no auto-title, OpenLayers/Layer/FixedZoomLevels.js) + File: GeoRSS (no auto-title, OpenLayers/Layer/GeoRSS.js) + File: GML (no auto-title, OpenLayers/Layer/GML.js) + File: Google (no auto-title, OpenLayers/Layer/Google.js) + File: Grid (no auto-title, OpenLayers/Layer/Grid.js) + File: HTTPRequest (no auto-title, OpenLayers/Layer/HTTPRequest.js) + File: Image (no auto-title, OpenLayers/Layer/Image.js) + File: KaMap (no auto-title, OpenLayers/Layer/KaMap.js) + File: KaMapCache (no auto-title, OpenLayers/Layer/KaMapCache.js) + File: MapGuide (no auto-title, OpenLayers/Layer/MapGuide.js) + File: MapServer (no auto-title, OpenLayers/Layer/MapServer.js) + File: MapServer.Untiled (no auto-title, OpenLayers/Layer/MapServer/Untiled.js) + File: Markers (no auto-title, OpenLayers/Layer/Markers.js) + File: MultiMap (no auto-title, OpenLayers/Layer/MultiMap.js) + File: PointTrack (no auto-title, OpenLayers/Layer/PointTrack.js) + File: SphericalMercator (no auto-title, OpenLayers/Layer/SphericalMercator.js) + File: Text (no auto-title, OpenLayers/Layer/Text.js) + File: TileCache (no auto-title, OpenLayers/Layer/TileCache.js) + File: TMS (no auto-title, OpenLayers/Layer/TMS.js) + File: Vector (no auto-title, OpenLayers/Layer/Vector.js) + File: Vector.RootContainer (OpenLayers/Layer/Vector/RootContainer.js) + File: VirtualEarth (no auto-title, OpenLayers/Layer/VirtualEarth.js) + File: WFS (no auto-title, OpenLayers/Layer/WFS.js) + File: WMS (no auto-title, OpenLayers/Layer/WMS.js) + File: WMS.Untiled (no auto-title, OpenLayers/Layer/WMS/Untiled.js) + File: WorldWind (no auto-title, OpenLayers/Layer/WorldWind.js) + File: Yahoo (no auto-title, OpenLayers/Layer/Yahoo.js) + File: ArcIMS (OpenLayers/Layer/ArcIMS.js) + File: XYZ (OpenLayers/Layer/XYZ.js) + } # Group: Layer + + } # Group: Layer + + File: Map (no auto-title, OpenLayers/Map.js) + + Group: Marker { + + File: Marker (no auto-title, OpenLayers/Marker.js) + File: Box (no auto-title, OpenLayers/Marker/Box.js) + } # Group: Marker + + Group: Popup { + + File: Popup (no auto-title, OpenLayers/Popup.js) + File: Anchored (no auto-title, OpenLayers/Popup/Anchored.js) + File: AnchoredBubble (no auto-title, OpenLayers/Popup/AnchoredBubble.js) + File: Framed (no auto-title, OpenLayers/Popup/Framed.js) + File: FramedCloud (no auto-title, OpenLayers/Popup/FramedCloud.js) + } # Group: Popup + + File: Projection (no auto-title, OpenLayers/Projection.js) + + Group: Protocol { + + File: Protocol (no auto-title, OpenLayers/Protocol.js) + File: HTTP (no auto-title, OpenLayers/Protocol/HTTP.js) + + Group: SQL { + + File: SQL (no auto-title, OpenLayers/Protocol/SQL.js) + File: Gears (no auto-title, OpenLayers/Protocol/SQL/Gears.js) + } # Group: SQL + + Group: WFS { + + File: WFS (no auto-title, OpenLayers/Protocol/WFS.js) + File: v1 (OpenLayers/Protocol/WFS/v1.js) + File: v1_0_0 (OpenLayers/Protocol/WFS/v1_0_0.js) + File: v1_1_0 (OpenLayers/Protocol/WFS/v1_1_0.js) + } # Group: WFS + + } # Group: Protocol + + Group: Renderer { + + File: Renderer (no auto-title, OpenLayers/Renderer.js) + File: Canvas (no auto-title, OpenLayers/Renderer/Canvas.js) + File: Elements (no auto-title, OpenLayers/Renderer/Elements.js) + File: SVG (no auto-title, OpenLayers/Renderer/SVG.js) + File: VML (no auto-title, OpenLayers/Renderer/VML.js) + } # Group: Renderer + + Group: Request { + + File: Request (no auto-title, OpenLayers/Request.js) + File: XMLHttpRequest (no auto-title, OpenLayers/Request/XMLHttpRequest.js) + } # Group: Request + + File: Rule (no auto-title, OpenLayers/Rule.js) + + Group: Strategy { + + File: Strategy (no auto-title, OpenLayers/Strategy.js) + File: BBOX (no auto-title, OpenLayers/Strategy/BBOX.js) + File: Cluster (no auto-title, OpenLayers/Strategy/Cluster.js) + File: Fixed (no auto-title, OpenLayers/Strategy/Fixed.js) + File: Paging (no auto-title, OpenLayers/Strategy/Paging.js) + File: Save (OpenLayers/Strategy/Save.js) + } # Group: Strategy + + File: Style (no auto-title, OpenLayers/Style.js) + File: StyleMap (no auto-title, OpenLayers/StyleMap.js) + + Group: Tile { + + File: Tile (no auto-title, OpenLayers/Tile.js) + File: Image (no auto-title, OpenLayers/Tile/Image.js) + File: WFS (no auto-title, OpenLayers/Tile/WFS.js) + } # Group: Tile + + File: Tween (no auto-title, OpenLayers/Tween.js) + File: Util (no auto-title, OpenLayers/Util.js) + } # Group: OpenLayers + +Group: Index { + + Index: Everything + Class Index: Classes + Constant Index: Constants + Function Index: Functions + Property Index: Properties + File Index: Files + Constructor Index: Constructor + } # Group: Index + diff --git a/openlayers/apidoc_config/OL.css b/openlayers/apidoc_config/OL.css new file mode 100644 index 0000000..a397119 --- /dev/null +++ b/openlayers/apidoc_config/OL.css @@ -0,0 +1,20 @@ +p { + text-indent: 0; margin-bottom: 1em; +} + +.MGroup { + font-variant: normal; + margin: 0.4em 0 0em 10px +} + +.MTitle { + font-variant: normal; +} + +.CGroup .CTitle { + font-variant: normal; +} + +.SGroup .SEntry { + font-variant: normal; +} \ No newline at end of file diff --git a/openlayers/apidoc_config/Topics.txt b/openlayers/apidoc_config/Topics.txt new file mode 100644 index 0000000..37ef505 --- /dev/null +++ b/openlayers/apidoc_config/Topics.txt @@ -0,0 +1,105 @@ +Format: 1.4 + +# This is the Natural Docs topics file for this project. If you change anything +# here, it will apply to THIS PROJECT ONLY. If you'd like to change something +# for all your projects, edit the Topics.txt in Natural Docs' Config directory +# instead. + + +Ignore Keywords: + function, functions + func, funcs + procedure, procedures + proc, procs + routine, routines + subroutine, subroutines + sub, subs + method, methods + callback, callbacks + property, properties + prop, props + + +#------------------------------------------------------------------------------- +# SYNTAX: +# +# Topic Type: [name] +# Alter Topic Type: [name] +# Creates a new topic type or alters one from the main file. Each type gets +# its own index and behavior settings. Its name can have letters, numbers, +# spaces, and these charaters: - / . ' +# +# Plural: [name] +# Sets the plural name of the topic type, if different. +# +# Keywords: +# [keyword] +# [keyword], [plural keyword] +# ... +# Defines or adds to the list of keywords for the topic type. They may only +# contain letters, numbers, and spaces and are not case sensitive. Plural +# keywords are used for list topics. You can redefine keywords found in the +# main topics file. +# +# Index: [yes|no] +# Whether the topics get their own index. Defaults to yes. Everything is +# included in the general index regardless of this setting. +# +# Scope: [normal|start|end|always global] +# How the topics affects scope. Defaults to normal. +# normal - Topics stay within the current scope. +# start - Topics start a new scope for all the topics beneath it, +# like class topics. +# end - Topics reset the scope back to global for all the topics +# beneath it. +# always global - Topics are defined as global, but do not change the scope +# for any other topics. +# +# Class Hierarchy: [yes|no] +# Whether the topics are part of the class hierarchy. Defaults to no. +# +# Page Title If First: [yes|no] +# Whether the topic's title becomes the page title if it's the first one in +# a file. Defaults to no. +# +# Break Lists: [yes|no] +# Whether list topics should be broken into individual topics in the output. +# Defaults to no. +# +# Can Group With: [type], [type], ... +# Defines a list of topic types that this one can possibly be grouped with. +# Defaults to none. +#------------------------------------------------------------------------------- + +# The following topics are defined in the main file, if you'd like to alter +# their behavior or add keywords: +# +# Generic, Class, Interface, Section, File, Group, Function, Variable, +# Property, Type, Constant, Enumeration, Event, Delegate, Macro, +# Database, Database Table, Database View, Database Index, Database +# Cursor, Database Trigger, Cookie, Build Target + +# If you add something that you think would be useful to other developers +# and should be included in Natural Docs by default, please e-mail it to +# topics [at] naturaldocs [dot] org. + + +Topic Type: Constructor + + Class Hierarchy: Yes + Keywords: + constructor + initialize + + +Alter Topic Type: Function + + Add Keywords: + apimethod + apifunction + + +Alter Topic Type: Property + + Add Keywords: + apiproperty diff --git a/openlayers/art/arrows.svg b/openlayers/art/arrows.svg new file mode 100644 index 0000000..d40712d --- /dev/null +++ b/openlayers/art/arrows.svg @@ -0,0 +1,127 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + − + + + + diff --git a/openlayers/art/layer-switcher-maximize.svg b/openlayers/art/layer-switcher-maximize.svg new file mode 100644 index 0000000..6b9f0d3 --- /dev/null +++ b/openlayers/art/layer-switcher-maximize.svg @@ -0,0 +1,128 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/openlayers/art/layer-switcher-minimize.svg b/openlayers/art/layer-switcher-minimize.svg new file mode 100644 index 0000000..70fcb8c --- /dev/null +++ b/openlayers/art/layer-switcher-minimize.svg @@ -0,0 +1,142 @@ + + + + + + + + + image/svg+xml + + + + + + + + + - + + + + + + diff --git a/openlayers/art/marker.svg b/openlayers/art/marker.svg new file mode 100644 index 0000000..9f0d8dc --- /dev/null +++ b/openlayers/art/marker.svg @@ -0,0 +1,25 @@ + + + + +]> + + + + + + + + + + + + + + + + + diff --git a/openlayers/art/measuring-stick-off.svg b/openlayers/art/measuring-stick-off.svg new file mode 100644 index 0000000..2e47a2f --- /dev/null +++ b/openlayers/art/measuring-stick-off.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + diff --git a/openlayers/art/measuring-stick-on.svg b/openlayers/art/measuring-stick-on.svg new file mode 100644 index 0000000..ca0c18c --- /dev/null +++ b/openlayers/art/measuring-stick-on.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + diff --git a/openlayers/art/panning-hand-off.svg b/openlayers/art/panning-hand-off.svg new file mode 100644 index 0000000..bf2e40b --- /dev/null +++ b/openlayers/art/panning-hand-off.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + diff --git a/openlayers/art/panning-hand-on.svg b/openlayers/art/panning-hand-on.svg new file mode 100644 index 0000000..139ce97 --- /dev/null +++ b/openlayers/art/panning-hand-on.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + diff --git a/openlayers/art/slider.svg b/openlayers/art/slider.svg new file mode 100644 index 0000000..9fa435d --- /dev/null +++ b/openlayers/art/slider.svg @@ -0,0 +1,71 @@ + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/openlayers/art/zoom-world.svg b/openlayers/art/zoom-world.svg new file mode 100644 index 0000000..749e7c7 --- /dev/null +++ b/openlayers/art/zoom-world.svg @@ -0,0 +1,193 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/openlayers/art/zoombar.svg b/openlayers/art/zoombar.svg new file mode 100644 index 0000000..a88ff36 --- /dev/null +++ b/openlayers/art/zoombar.svg @@ -0,0 +1,73 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/openlayers/build/OpenLayers.js b/openlayers/build/OpenLayers.js new file mode 100644 index 0000000..709a39b --- /dev/null +++ b/openlayers/build/OpenLayers.js @@ -0,0 +1,1093 @@ +/* + + OpenLayers.js -- OpenLayers Map Viewer Library + + Copyright 2005-2008 MetaCarta, Inc., released under the Clear BSD license. + Please see http://svn.openlayers.org/trunk/openlayers/license.txt + for the full text of the license. + + Includes compressed code under the following licenses: + + (For uncompressed versions of the code used please see the + OpenLayers SVN repository: ) + +*/ + +/* Contains portions of Prototype.js: + * + * Prototype JavaScript framework, version 1.4.0 + * (c) 2005 Sam Stephenson + * + * Prototype is freely distributable under the terms of an MIT-style license. + * For details, see the Prototype web site: http://prototype.conio.net/ + * + *--------------------------------------------------------------------------*/ + +/** +* +* Contains portions of Rico +* +* Copyright 2005 Sabre Airline Solutions +* +* Licensed under the Apache License, Version 2.0 (the "License"); you +* may not use this file except in compliance with the License. You +* may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +* implied. See the License for the specific language governing +* permissions and limitations under the License. +* +**/ + +/** + * Contains XMLHttpRequest.js + * Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + */ + +/** + * Contains portions of Gears + * + * Copyright 2007, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Google Inc. nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Sets up google.gears.*, which is *the only* supported way to access Gears. + * + * Circumvent this file at your own risk! + * + * In the future, Gears may automatically define google.gears.* without this + * file. Gears may use these objects to transparently fix bugs and compatibility + * issues. Applications that use the code below will continue to work seamlessly + * when that happens. + */ +var OpenLayers={singleFile:true};(function(){var singleFile=(typeof OpenLayers=="object"&&OpenLayers.singleFile);window.OpenLayers={_scriptName:(!singleFile)?"lib/OpenLayers.js":"OpenLayers.js",_getScriptLocation:function(){var scriptLocation="";var isOL=new RegExp("(^|(.*?\\/))("+OpenLayers._scriptName+")(\\?|$)");var scripts=document.getElementsByTagName('script');for(var i=0,len=scripts.length;i";}else{var s=document.createElement("script");s.src=host+jsfiles[i];var h=document.getElementsByTagName("head").length?document.getElementsByTagName("head")[0]:document.body;h.appendChild(s);}} +if(docWrite){document.write(allScriptTags.join(""));}}})();OpenLayers.VERSION_NUMBER="OpenLayers 2.8 -- $Revision: 9492 $";OpenLayers.String={startsWith:function(str,sub){return(str.indexOf(sub)==0);},contains:function(str,sub){return(str.indexOf(sub)!=-1);},trim:function(str){return str.replace(/^\s\s*/,'').replace(/\s\s*$/,'');},camelize:function(str){var oStringList=str.split('-');var camelizedString=oStringList[0];for(var i=1,len=oStringList.length;i0){fig=parseFloat(num.toPrecision(sig));} +return fig;},format:function(num,dec,tsep,dsep){dec=(typeof dec!="undefined")?dec:0;tsep=(typeof tsep!="undefined")?tsep:OpenLayers.Number.thousandsSeparator;dsep=(typeof dsep!="undefined")?dsep:OpenLayers.Number.decimalSeparator;if(dec!=null){num=parseFloat(num.toFixed(dec));} +var parts=num.toString().split(".");if(parts.length==1&&dec==null){dec=0;} +var integer=parts[0];if(tsep){var thousands=/(-?[0-9]+)([0-9]{3})/;while(thousands.test(integer)){integer=integer.replace(thousands,"$1"+tsep+"$2");}} +var str;if(dec==0){str=integer;}else{var rem=parts.length>1?parts[1]:"0";if(dec!=null){rem=rem+new Array(dec-rem.length+1).join("0");} +str=integer+dsep+rem;} +return str;}};if(!Number.prototype.limitSigDigs){Number.prototype.limitSigDigs=function(sig){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.Number.limitSigDigs'}));return OpenLayers.Number.limitSigDigs(this,sig);};} +OpenLayers.Function={bind:function(func,object){var args=Array.prototype.slice.apply(arguments,[2]);return function(){var newArgs=args.concat(Array.prototype.slice.apply(arguments,[0]));return func.apply(object,newArgs);};},bindAsEventListener:function(func,object){return function(event){return func.call(object,event||window.event);};}};if(!Function.prototype.bind){Function.prototype.bind=function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.Function.bind'}));Array.prototype.unshift.apply(arguments,[this]);return OpenLayers.Function.bind.apply(null,arguments);};} +if(!Function.prototype.bindAsEventListener){Function.prototype.bindAsEventListener=function(object){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.Function.bindAsEventListener'}));return OpenLayers.Function.bindAsEventListener(this,object);};} +OpenLayers.Array={filter:function(array,callback,caller){var selected=[];if(Array.prototype.filter){selected=array.filter(callback,caller);}else{var len=array.length;if(typeof callback!="function"){throw new TypeError();} +for(var i=0;i1){initialize=arguments[i].prototype.initialize;arguments[i].prototype.initialize=function(){};extended=new arguments[i];if(initialize===undefined){delete arguments[i].prototype.initialize;}else{arguments[i].prototype.initialize=initialize;}} +parent=arguments[i].prototype;}else{parent=arguments[i];} +OpenLayers.Util.extend(extended,parent);} +Class.prototype=extended;return Class;};OpenLayers.Class.isPrototype=function(){};OpenLayers.Class.create=function(){return function(){if(arguments&&arguments[0]!=OpenLayers.Class.isPrototype){this.initialize.apply(this,arguments);}};};OpenLayers.Class.inherit=function(){var superClass=arguments[0];var proto=new superClass(OpenLayers.Class.isPrototype);for(var i=1,len=arguments.length;i=0;i--){if(array[i]==item){array.splice(i,1);}} +return array;};OpenLayers.Util.clearArray=function(array){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'array = []'}));array.length=0;};OpenLayers.Util.indexOf=function(array,obj){for(var i=0,len=array.length;i=0.0&&parseFloat(opacity)<1.0){element.style.filter='alpha(opacity='+(opacity*100)+')';element.style.opacity=opacity;}else if(parseFloat(opacity)==1.0){element.style.filter='';element.style.opacity='';}};OpenLayers.Util.createDiv=function(id,px,sz,imgURL,position,border,overflow,opacity){var dom=document.createElement('div');if(imgURL){dom.style.backgroundImage='url('+imgURL+')';} +if(!id){id=OpenLayers.Util.createUniqueID("OpenLayersDiv");} +if(!position){position="absolute";} +OpenLayers.Util.modifyDOMElement(dom,id,px,sz,position,border,overflow,opacity);return dom;};OpenLayers.Util.createImage=function(id,px,sz,imgURL,position,border,opacity,delayDisplay){var image=document.createElement("img");if(!id){id=OpenLayers.Util.createUniqueID("OpenLayersDiv");} +if(!position){position="relative";} +OpenLayers.Util.modifyDOMElement(image,id,px,sz,position,border,null,opacity);if(delayDisplay){image.style.display="none";OpenLayers.Event.observe(image,"load",OpenLayers.Function.bind(OpenLayers.Util.onImageLoad,image));OpenLayers.Event.observe(image,"error",OpenLayers.Function.bind(OpenLayers.Util.onImageLoadError,image));} +image.style.alt=id;image.galleryImg="no";if(imgURL){image.src=imgURL;} +return image;};OpenLayers.Util.setOpacity=function(element,opacity){OpenLayers.Util.modifyDOMElement(element,null,null,null,null,null,null,opacity);};OpenLayers.Util.onImageLoad=function(){if(!this.viewRequestID||(this.map&&this.viewRequestID==this.map.viewRequestID)){this.style.backgroundColor="transparent";this.style.display="";}};OpenLayers.Util.onImageLoadErrorColor="pink";OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;OpenLayers.Util.onImageLoadError=function(){this._attempts=(this._attempts)?(this._attempts+1):1;if(this._attempts<=OpenLayers.IMAGE_RELOAD_ATTEMPTS){var urls=this.urls;if(urls&&urls instanceof Array&&urls.length>1){var src=this.src.toString();var current_url,k;for(k=0;current_url=urls[k];k++){if(src.indexOf(current_url)!=-1){break;}} +var guess=Math.floor(urls.length*Math.random());var new_url=urls[guess];k=0;while(new_url==current_url&&k++<4){guess=Math.floor(urls.length*Math.random());new_url=urls[guess];} +this.src=src.replace(current_url,new_url);}else{this.src=this.src;}}else{this.style.backgroundColor=OpenLayers.Util.onImageLoadErrorColor;} +this.style.display="";};OpenLayers.Util.alphaHackNeeded=null;OpenLayers.Util.alphaHack=function(){if(OpenLayers.Util.alphaHackNeeded==null){var arVersion=navigator.appVersion.split("MSIE");var version=parseFloat(arVersion[1]);var filter=false;try{filter=!!(document.body.filters);}catch(e){} +OpenLayers.Util.alphaHackNeeded=(filter&&(version>=5.5)&&(version<7));} +return OpenLayers.Util.alphaHackNeeded;};OpenLayers.Util.modifyAlphaImageDiv=function(div,id,px,sz,imgURL,position,border,sizing,opacity){OpenLayers.Util.modifyDOMElement(div,id,px,sz,position,null,null,opacity);var img=div.childNodes[0];if(imgURL){img.src=imgURL;} +OpenLayers.Util.modifyDOMElement(img,div.id+"_innerImage",null,sz,"relative",border);if(OpenLayers.Util.alphaHack()){if(div.style.display!="none"){div.style.display="inline-block";} +if(sizing==null){sizing="scale";} +div.style.filter="progid:DXImageTransform.Microsoft"+".AlphaImageLoader(src='"+img.src+"', "+"sizingMethod='"+sizing+"')";if(parseFloat(div.style.opacity)>=0.0&&parseFloat(div.style.opacity)<1.0){div.style.filter+=" alpha(opacity="+div.style.opacity*100+")";} +img.style.filter="alpha(opacity=0)";}};OpenLayers.Util.createAlphaImageDiv=function(id,px,sz,imgURL,position,border,sizing,opacity,delayDisplay){var div=OpenLayers.Util.createDiv();var img=OpenLayers.Util.createImage(null,null,null,null,null,null,null,false);div.appendChild(img);if(delayDisplay){img.style.display="none";OpenLayers.Event.observe(img,"load",OpenLayers.Function.bind(OpenLayers.Util.onImageLoad,div));OpenLayers.Event.observe(img,"error",OpenLayers.Function.bind(OpenLayers.Util.onImageLoadError,div));} +OpenLayers.Util.modifyAlphaImageDiv(div,id,px,sz,imgURL,position,border,sizing,opacity);return div;};OpenLayers.Util.upperCaseObject=function(object){var uObject={};for(var key in object){uObject[key.toUpperCase()]=object[key];} +return uObject;};OpenLayers.Util.applyDefaults=function(to,from){to=to||{};var fromIsEvt=typeof window.Event=="function"&&from instanceof window.Event;for(var key in from){if(to[key]===undefined||(!fromIsEvt&&from.hasOwnProperty&&from.hasOwnProperty(key)&&!to.hasOwnProperty(key))){to[key]=from[key];}} +if(!fromIsEvt&&from&&from.hasOwnProperty&&from.hasOwnProperty('toString')&&!to.hasOwnProperty('toString')){to.toString=from.toString;} +return to;};OpenLayers.Util.getParameterString=function(params){var paramsArray=[];for(var key in params){var value=params[key];if((value!=null)&&(typeof value!='function')){var encodedValue;if(typeof value=='object'&&value.constructor==Array){var encodedItemArray=[];for(var itemIndex=0,len=value.length;itemIndex0)) +{if(!index){index=0;} +if(result[index].childNodes.length>1){return result.childNodes[1].nodeValue;} +else if(result[index].childNodes.length==1){return result[index].firstChild.nodeValue;}}else{return"";}};OpenLayers.Util.getXmlNodeValue=function(node){var val=null;OpenLayers.Util.Try(function(){val=node.text;if(!val){val=node.textContent;} +if(!val){val=node.firstChild.nodeValue;}},function(){val=node.textContent;});return val;};OpenLayers.Util.mouseLeft=function(evt,div){var target=(evt.relatedTarget)?evt.relatedTarget:evt.toElement;while(target!=div&&target!=null){target=target.parentNode;} +return(target!=div);};OpenLayers.Util.DEFAULT_PRECISION=14;OpenLayers.Util.toFloat=function(number,precision){if(precision==null){precision=OpenLayers.Util.DEFAULT_PRECISION;} +var number;if(precision==0){number=parseFloat(number);}else{number=parseFloat(parseFloat(number).toPrecision(precision));} +return number;};OpenLayers.Util.rad=function(x){return x*Math.PI/180;};OpenLayers.Util.distVincenty=function(p1,p2){var a=6378137,b=6356752.3142,f=1/298.257223563;var L=OpenLayers.Util.rad(p2.lon-p1.lon);var U1=Math.atan((1-f)*Math.tan(OpenLayers.Util.rad(p1.lat)));var U2=Math.atan((1-f)*Math.tan(OpenLayers.Util.rad(p2.lat)));var sinU1=Math.sin(U1),cosU1=Math.cos(U1);var sinU2=Math.sin(U2),cosU2=Math.cos(U2);var lambda=L,lambdaP=2*Math.PI;var iterLimit=20;while(Math.abs(lambda-lambdaP)>1e-12&&--iterLimit>0){var sinLambda=Math.sin(lambda),cosLambda=Math.cos(lambda);var sinSigma=Math.sqrt((cosU2*sinLambda)*(cosU2*sinLambda)+ +(cosU1*sinU2-sinU1*cosU2*cosLambda)*(cosU1*sinU2-sinU1*cosU2*cosLambda));if(sinSigma==0){return 0;} +var cosSigma=sinU1*sinU2+cosU1*cosU2*cosLambda;var sigma=Math.atan2(sinSigma,cosSigma);var alpha=Math.asin(cosU1*cosU2*sinLambda/sinSigma);var cosSqAlpha=Math.cos(alpha)*Math.cos(alpha);var cos2SigmaM=cosSigma-2*sinU1*sinU2/cosSqAlpha;var C=f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha));lambdaP=lambda;lambda=L+(1-C)*f*Math.sin(alpha)*(sigma+C*sinSigma*(cos2SigmaM+C*cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)));} +if(iterLimit==0){return NaN;} +var uSq=cosSqAlpha*(a*a-b*b)/(b*b);var A=1+uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq)));var B=uSq/1024*(256+uSq*(-128+uSq*(74-47*uSq)));var deltaSigma=B*sinSigma*(cos2SigmaM+B/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)- +B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));var s=b*A*(sigma-deltaSigma);var d=s.toFixed(3)/1000;return d;};OpenLayers.Util.getParameters=function(url){url=url||window.location.href;var paramsString="";if(OpenLayers.String.contains(url,'?')){var start=url.indexOf('?')+1;var end=OpenLayers.String.contains(url,"#")?url.indexOf('#'):url.length;paramsString=url.substring(start,end);} +var parameters={};var pairs=paramsString.split(/[&;]/);for(var i=0,len=pairs.length;i1.0)?(1.0/scale):scale;return normScale;};OpenLayers.Util.getResolutionFromScale=function(scale,units){if(units==null){units="degrees";} +var normScale=OpenLayers.Util.normalizeScale(scale);var resolution=1/(normScale*OpenLayers.INCHES_PER_UNIT[units]*OpenLayers.DOTS_PER_INCH);return resolution;};OpenLayers.Util.getScaleFromResolution=function(resolution,units){if(units==null){units="degrees";} +var scale=resolution*OpenLayers.INCHES_PER_UNIT[units]*OpenLayers.DOTS_PER_INCH;return scale;};OpenLayers.Util.safeStopPropagation=function(evt){OpenLayers.Event.stop(evt,true);};OpenLayers.Util.pagePosition=function(forElement){var valueT=0,valueL=0;var element=forElement;var child=forElement;while(element){if(element==document.body){if(OpenLayers.Element.getStyle(child,'position')=='absolute'){break;}} +valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;child=element;try{element=element.offsetParent;}catch(e){OpenLayers.Console.error(OpenLayers.i18n("pagePositionFailed",{'elemId':element.id}));break;}} +element=forElement;while(element){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;element=element.parentNode;} +return[valueL,valueT];};OpenLayers.Util.isEquivalentUrl=function(url1,url2,options){options=options||{};OpenLayers.Util.applyDefaults(options,{ignoreCase:true,ignorePort80:true,ignoreHash:true});var urlObj1=OpenLayers.Util.createUrlObject(url1,options);var urlObj2=OpenLayers.Util.createUrlObject(url2,options);for(var key in urlObj1){if(key!=="args"){if(urlObj1[key]!=urlObj2[key]){return false;}}} +for(var key in urlObj1.args){if(urlObj1.args[key]!=urlObj2.args[key]){return false;} +delete urlObj2.args[key];} +for(var key in urlObj2.args){return false;} +return true;};OpenLayers.Util.createUrlObject=function(url,options){options=options||{};if(!(/^\w+:\/\//).test(url)){var loc=window.location;var port=loc.port?":"+loc.port:"";var fullUrl=loc.protocol+"//"+loc.host.split(":").shift()+port;if(url.indexOf("/")===0){url=fullUrl+url;}else{var parts=loc.pathname.split("/");parts.pop();url=fullUrl+parts.join("/")+"/"+url;}} +if(options.ignoreCase){url=url.toLowerCase();} +var a=document.createElement('a');a.href=url;var urlObject={};urlObject.host=a.host.split(":").shift();urlObject.protocol=a.protocol;if(options.ignorePort80){urlObject.port=(a.port=="80"||a.port=="0")?"":a.port;}else{urlObject.port=(a.port==""||a.port=="0")?"80":a.port;} +urlObject.hash=(options.ignoreHash||a.hash==="#")?"":a.hash;var queryString=a.search;if(!queryString){var qMark=url.indexOf("?");queryString=(qMark!=-1)?url.substr(qMark):"";} +urlObject.args=OpenLayers.Util.getParameters(queryString);urlObject.pathname=(a.pathname.charAt(0)=="/")?a.pathname:"/"+a.pathname;return urlObject;};OpenLayers.Util.removeTail=function(url){var head=null;var qMark=url.indexOf("?");var hashMark=url.indexOf("#");if(qMark==-1){head=(hashMark!=-1)?url.substr(0,hashMark):url;}else{head=(hashMark!=-1)?url.substr(0,Math.min(qMark,hashMark)):url.substr(0,qMark);} +return head;};OpenLayers.Util.getBrowserName=function(){var browserName="";var ua=navigator.userAgent.toLowerCase();if(ua.indexOf("opera")!=-1){browserName="opera";}else if(ua.indexOf("msie")!=-1){browserName="msie";}else if(ua.indexOf("safari")!=-1){browserName="safari";}else if(ua.indexOf("mozilla")!=-1){if(ua.indexOf("firefox")!=-1){browserName="firefox";}else{browserName="mozilla";}} +return browserName;};OpenLayers.Util.getRenderedDimensions=function(contentHTML,size,options){var w,h;var container=document.createElement("div");container.style.visibility="hidden";var containerElement=(options&&options.containerElement)?options.containerElement:document.body;if(size){if(size.w){w=size.w;container.style.width=w+"px";}else if(size.h){h=size.h;container.style.height=h+"px";}} +if(options&&options.displayClass){container.className=options.displayClass;} +var content=document.createElement("div");content.innerHTML=contentHTML;content.style.overflow="visible";if(content.childNodes){for(var i=0,l=content.childNodes.length;i"+el.innerHTML+"

";},_roundTopCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=0;i=0;i--){corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));} +el.style.paddingBottom=0;el.appendChild(corner);},_createCorner:function(bgColor){var corner=document.createElement("div");corner.style.backgroundColor=(this._isTransparent()?"transparent":bgColor);return corner;},_createCornerSlice:function(color,bgColor,n,position){var slice=document.createElement("span");var inStyle=slice.style;inStyle.backgroundColor=color;inStyle.display="block";inStyle.height="1px";inStyle.overflow="hidden";inStyle.fontSize="1px";var borderColor=this._borderColor(color,bgColor);if(this.options.border&&n==0){inStyle.borderTopStyle="solid";inStyle.borderTopWidth="1px";inStyle.borderLeftWidth="0px";inStyle.borderRightWidth="0px";inStyle.borderBottomWidth="0px";inStyle.height="0px";inStyle.borderColor=borderColor;} +else if(borderColor){inStyle.borderColor=borderColor;inStyle.borderStyle="solid";inStyle.borderWidth="0px 1px";} +if(!this.options.compact&&(n==(this.options.numSlices-1))){inStyle.height="2px";} +this._setMargin(slice,n,position);this._setBorder(slice,n,position);return slice;},_setOptions:function(options){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false};OpenLayers.Util.extend(this.options,options||{});this.options.numSlices=this.options.compact?2:4;if(this._isTransparent()){this.options.blend=false;}},_whichSideTop:function(){if(this._hasString(this.options.corners,"all","top")){return"";} +if(this.options.corners.indexOf("tl")>=0&&this.options.corners.indexOf("tr")>=0){return"";} +if(this.options.corners.indexOf("tl")>=0){return"left";}else if(this.options.corners.indexOf("tr")>=0){return"right";} +return"";},_whichSideBottom:function(){if(this._hasString(this.options.corners,"all","bottom")){return"";} +if(this.options.corners.indexOf("bl")>=0&&this.options.corners.indexOf("br")>=0){return"";} +if(this.options.corners.indexOf("bl")>=0){return"left";}else if(this.options.corners.indexOf("br")>=0){return"right";} +return"";},_borderColor:function(color,bgColor){if(color=="transparent"){return bgColor;}else if(this.options.border){return this.options.border;}else if(this.options.blend){return this._blend(bgColor,color);}else{return"";}},_setMargin:function(el,n,corners){var marginSize=this._marginSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.marginLeft=marginSize+"px";el.style.marginRight="0px";} +else if(whichSide=="right"){el.style.marginRight=marginSize+"px";el.style.marginLeft="0px";} +else{el.style.marginLeft=marginSize+"px";el.style.marginRight=marginSize+"px";}},_setBorder:function(el,n,corners){var borderSize=this._borderSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth="0px";} +else if(whichSide=="right"){el.style.borderRightWidth=borderSize+"px";el.style.borderLeftWidth="0px";} +else{el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";} +if(this.options.border!=false){el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";}},_marginSize:function(n){if(this._isTransparent()){return 0;} +var marginSizes=[5,3,2,1];var blendedMarginSizes=[3,2,1,0];var compactMarginSizes=[2,1];var smBlendedMarginSizes=[1,0];if(this.options.compact&&this.options.blend){return smBlendedMarginSizes[n];}else if(this.options.compact){return compactMarginSizes[n];}else if(this.options.blend){return blendedMarginSizes[n];}else{return marginSizes[n];}},_borderSize:function(n){var transparentBorderSizes=[5,3,2,1];var blendedBorderSizes=[2,1,1,1];var compactBorderSizes=[1,0];var actualBorderSizes=[0,2,0,0];if(this.options.compact&&(this.options.blend||this._isTransparent())){return 1;}else if(this.options.compact){return compactBorderSizes[n];}else if(this.options.blend){return blendedBorderSizes[n];}else if(this.options.border){return actualBorderSizes[n];}else if(this._isTransparent()){return transparentBorderSizes[n];} +return 0;},_hasString:function(str){for(var i=1;i=0){return true;}return false;},_blend:function(c1,c2){var cc1=OpenLayers.Rico.Color.createFromHex(c1);cc1.blend(OpenLayers.Rico.Color.createFromHex(c2));return cc1;},_background:function(el){try{return OpenLayers.Rico.Color.createColorFromBackground(el).asHex();}catch(err){return"#ffffff";}},_isTransparent:function(){return this.options.color=="transparent";},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr");},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br");},_hasSingleTextChild:function(el){return el.childNodes.length==1&&el.childNodes[0].nodeType==3;}};OpenLayers.Element={visible:function(element){return OpenLayers.Util.getElement(element).style.display!='none';},toggle:function(){for(var i=0,len=arguments.length;i"+ +this.contentDiv.innerHTML+"";var containerElement=(this.map)?this.map.layerContainerDiv:document.body;var realSize=OpenLayers.Util.getRenderedDimensions(preparedHTML,null,{displayClass:this.displayClass,containerElement:containerElement});var safeSize=this.getSafeContentSize(realSize);var newSize=null;if(safeSize.equals(realSize)){newSize=realSize;}else{var fixedSize=new OpenLayers.Size();fixedSize.w=(safeSize.w(mapSize.w-this.map.paddingForPopups.right)){newTL.x=mapSize.w-this.map.paddingForPopups.right-this.size.w;} +if(origTL.y(mapSize.h-this.map.paddingForPopups.bottom)){newTL.y=mapSize.h-this.map.paddingForPopups.bottom-this.size.h;} +var dx=origTL.x-newTL.x;var dy=origTL.y-newTL.y;this.map.pan(dx,dy);},registerEvents:function(){this.events=new OpenLayers.Events(this,this.div,null,true);this.events.on({"mousedown":this.onmousedown,"mousemove":this.onmousemove,"mouseup":this.onmouseup,"click":this.onclick,"mouseout":this.onmouseout,"dblclick":this.ondblclick,scope:this});},onmousedown:function(evt){this.mousedown=true;OpenLayers.Event.stop(evt,true);},onmousemove:function(evt){if(this.mousedown){OpenLayers.Event.stop(evt,true);}},onmouseup:function(evt){if(this.mousedown){this.mousedown=false;OpenLayers.Event.stop(evt,true);}},onclick:function(evt){OpenLayers.Event.stop(evt,true);},onmouseout:function(evt){this.mousedown=false;},ondblclick:function(evt){OpenLayers.Event.stop(evt,true);},CLASS_NAME:"OpenLayers.Popup"});OpenLayers.Popup.WIDTH=200;OpenLayers.Popup.HEIGHT=200;OpenLayers.Popup.COLOR="white";OpenLayers.Popup.OPACITY=1;OpenLayers.Popup.BORDER="0px";OpenLayers.Renderer=OpenLayers.Class({container:null,root:null,extent:null,locked:false,size:null,resolution:null,map:null,initialize:function(containerID,options){this.container=OpenLayers.Util.getElement(containerID);},destroy:function(){this.container=null;this.extent=null;this.size=null;this.resolution=null;this.map=null;},supported:function(){return false;},setExtent:function(extent,resolutionChanged){this.extent=extent.clone();if(resolutionChanged){this.resolution=null;}},setSize:function(size){this.size=size.clone();this.resolution=null;},getResolution:function(){this.resolution=this.resolution||this.map.getResolution();return this.resolution;},drawFeature:function(feature,style){if(style==null){style=feature.style;} +if(feature.geometry){var bounds=feature.geometry.getBounds();if(bounds){if(!bounds.intersectsBounds(this.extent)){style={display:"none"};} +var rendered=this.drawGeometry(feature.geometry,style,feature.id);if(style.display!="none"&&style.label&&rendered!==false){this.drawText(feature.id,style,feature.geometry.getCentroid());}else{this.removeText(feature.id);} +return rendered;}}},drawGeometry:function(geometry,style,featureId){},drawText:function(featureId,style,location){},removeText:function(featureId){},clear:function(){},getFeatureIdFromEvent:function(evt){},eraseFeatures:function(features){if(!(features instanceof Array)){features=[features];} +for(var i=0,len=features.length;ithis.right)){this.right=bounds.right;} +if((this.top==null)||(bounds.top>this.top)){this.top=bounds.top;}}}},containsLonLat:function(ll,inclusive){return this.contains(ll.lon,ll.lat,inclusive);},containsPixel:function(px,inclusive){return this.contains(px.x,px.y,inclusive);},contains:function(x,y,inclusive){if(inclusive==null){inclusive=true;} +if(x==null||y==null){return false;} +x=OpenLayers.Util.toFloat(x);y=OpenLayers.Util.toFloat(y);var contains=false;if(inclusive){contains=((x>=this.left)&&(x<=this.right)&&(y>=this.bottom)&&(y<=this.top));}else{contains=((x>this.left)&&(xthis.bottom)&&(y=this.bottom)&&(bounds.bottom<=this.top))||((this.bottom>=bounds.bottom)&&(this.bottom<=bounds.top)));var inTop=(((bounds.top>=this.bottom)&&(bounds.top<=this.top))||((this.top>bounds.bottom)&&(this.top=this.left)&&(bounds.left<=this.right))||((this.left>=bounds.left)&&(this.left<=bounds.right)));var inRight=(((bounds.right>=this.left)&&(bounds.right<=this.right))||((this.right>=bounds.left)&&(this.right<=bounds.right)));intersects=((inBottom||inTop)&&(inLeft||inRight));} +return intersects;},containsBounds:function(bounds,partial,inclusive){if(partial==null){partial=false;} +if(inclusive==null){inclusive=true;} +var bottomLeft=this.contains(bounds.left,bounds.bottom,inclusive);var bottomRight=this.contains(bounds.right,bounds.bottom,inclusive);var topLeft=this.contains(bounds.left,bounds.top,inclusive);var topRight=this.contains(bounds.right,bounds.top,inclusive);return(partial)?(bottomLeft||bottomRight||topLeft||topRight):(bottomLeft&&bottomRight&&topLeft&&topRight);},determineQuadrant:function(lonlat){var quadrant="";var center=this.getCenterLonLat();quadrant+=(lonlat.lat=maxExtent.right&&newBounds.right>maxExtent.right){newBounds=newBounds.add(-maxExtent.getWidth(),0);}} +return newBounds;},CLASS_NAME:"OpenLayers.Bounds"});OpenLayers.Bounds.fromString=function(str){var bounds=str.split(",");return OpenLayers.Bounds.fromArray(bounds);};OpenLayers.Bounds.fromArray=function(bbox){return new OpenLayers.Bounds(parseFloat(bbox[0]),parseFloat(bbox[1]),parseFloat(bbox[2]),parseFloat(bbox[3]));};OpenLayers.Bounds.fromSize=function(size){return new OpenLayers.Bounds(0,size.h,size.w,0);};OpenLayers.Bounds.oppositeQuadrant=function(quadrant){var opp="";opp+=(quadrant.charAt(0)=='t')?'b':'t';opp+=(quadrant.charAt(1)=='l')?'r':'l';return opp;};OpenLayers.LonLat=OpenLayers.Class({lon:0.0,lat:0.0,initialize:function(lon,lat){this.lon=OpenLayers.Util.toFloat(lon);this.lat=OpenLayers.Util.toFloat(lat);},toString:function(){return("lon="+this.lon+",lat="+this.lat);},toShortString:function(){return(this.lon+", "+this.lat);},clone:function(){return new OpenLayers.LonLat(this.lon,this.lat);},add:function(lon,lat){if((lon==null)||(lat==null)){var msg=OpenLayers.i18n("lonlatAddError");OpenLayers.Console.error(msg);return null;} +return new OpenLayers.LonLat(this.lon+lon,this.lat+lat);},equals:function(ll){var equals=false;if(ll!=null){equals=((this.lon==ll.lon&&this.lat==ll.lat)||(isNaN(this.lon)&&isNaN(this.lat)&&isNaN(ll.lon)&&isNaN(ll.lat)));} +return equals;},transform:function(source,dest){var point=OpenLayers.Projection.transform({'x':this.lon,'y':this.lat},source,dest);this.lon=point.x;this.lat=point.y;return this;},wrapDateLine:function(maxExtent){var newLonLat=this.clone();if(maxExtent){while(newLonLat.lonmaxExtent.right){newLonLat.lon-=maxExtent.getWidth();}} +return newLonLat;},CLASS_NAME:"OpenLayers.LonLat"});OpenLayers.LonLat.fromString=function(str){var pair=str.split(",");return new OpenLayers.LonLat(parseFloat(pair[0]),parseFloat(pair[1]));};OpenLayers.Pixel=OpenLayers.Class({x:0.0,y:0.0,initialize:function(x,y){this.x=parseFloat(x);this.y=parseFloat(y);},toString:function(){return("x="+this.x+",y="+this.y);},clone:function(){return new OpenLayers.Pixel(this.x,this.y);},equals:function(px){var equals=false;if(px!=null){equals=((this.x==px.x&&this.y==px.y)||(isNaN(this.x)&&isNaN(this.y)&&isNaN(px.x)&&isNaN(px.y)));} +return equals;},add:function(x,y){if((x==null)||(y==null)){var msg=OpenLayers.i18n("pixelAddError");OpenLayers.Console.error(msg);return null;} +return new OpenLayers.Pixel(this.x+x,this.y+y);},offset:function(px){var newPx=this.clone();if(px){newPx=this.add(px.x,px.y);} +return newPx;},CLASS_NAME:"OpenLayers.Pixel"});OpenLayers.Control=OpenLayers.Class({id:null,map:null,div:null,type:null,allowSelection:false,displayClass:"",title:"",active:null,handler:null,eventListeners:null,events:null,EVENT_TYPES:["activate","deactivate"],initialize:function(options){this.displayClass=this.CLASS_NAME.replace("OpenLayers.","ol").replace(/\./g,"");OpenLayers.Util.extend(this,options);this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);} +if(this.id==null){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");}},destroy:function(){if(this.events){if(this.eventListeners){this.events.un(this.eventListeners);} +this.events.destroy();this.events=null;} +this.eventListeners=null;if(this.handler){this.handler.destroy();this.handler=null;} +if(this.handlers){for(var key in this.handlers){if(this.handlers.hasOwnProperty(key)&&typeof this.handlers[key].destroy=="function"){this.handlers[key].destroy();}} +this.handlers=null;} +if(this.map){this.map.removeControl(this);this.map=null;}},setMap:function(map){this.map=map;if(this.handler){this.handler.setMap(map);}},draw:function(px){if(this.div==null){this.div=OpenLayers.Util.createDiv(this.id);this.div.className=this.displayClass;if(!this.allowSelection){this.div.className+=" olControlNoSelect";this.div.setAttribute("unselectable","on",0);this.div.onselectstart=function(){return(false);};} +if(this.title!=""){this.div.title=this.title;}} +if(px!=null){this.position=px.clone();} +this.moveTo(this.position);return this.div;},moveTo:function(px){if((px!=null)&&(this.div!=null)){this.div.style.left=px.x+"px";this.div.style.top=px.y+"px";}},activate:function(){if(this.active){return false;} +if(this.handler){this.handler.activate();} +this.active=true;if(this.map){OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");} +this.events.triggerEvent("activate");return true;},deactivate:function(){if(this.active){if(this.handler){this.handler.deactivate();} +this.active=false;if(this.map){OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");} +this.events.triggerEvent("deactivate");return true;} +return false;},CLASS_NAME:"OpenLayers.Control"});OpenLayers.Control.TYPE_BUTTON=1;OpenLayers.Control.TYPE_TOGGLE=2;OpenLayers.Control.TYPE_TOOL=3;OpenLayers.Lang={code:null,defaultCode:"en",getCode:function(){if(!OpenLayers.Lang.code){OpenLayers.Lang.setCode();} +return OpenLayers.Lang.code;},setCode:function(code){var lang;if(!code){code=(OpenLayers.Util.getBrowserName()=="msie")?navigator.userLanguage:navigator.language;} +var parts=code.split('-');parts[0]=parts[0].toLowerCase();if(typeof OpenLayers.Lang[parts[0]]=="object"){lang=parts[0];} +if(parts[1]){var testLang=parts[0]+'-'+parts[1].toUpperCase();if(typeof OpenLayers.Lang[testLang]=="object"){lang=testLang;}} +if(!lang){OpenLayers.Console.warn('Failed to find OpenLayers.Lang.'+parts.join("-")+' dictionary, falling back to default language');lang=OpenLayers.Lang.defaultCode;} +OpenLayers.Lang.code=lang;},translate:function(key,context){var dictionary=OpenLayers.Lang[OpenLayers.Lang.getCode()];var message=dictionary[key];if(!message){message=key;} +if(context){message=OpenLayers.String.format(message,context);} +return message;}};OpenLayers.i18n=OpenLayers.Lang.translate;OpenLayers.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,keepInMap:true,anchor:null,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){var newArguments=[id,lonlat,contentSize,contentHTML,closeBox,closeBoxCallback];OpenLayers.Popup.prototype.initialize.apply(this,newArguments);this.anchor=(anchor!=null)?anchor:{size:new OpenLayers.Size(0,0),offset:new OpenLayers.Pixel(0,0)};},destroy:function(){this.anchor=null;this.relativePosition=null;OpenLayers.Popup.prototype.destroy.apply(this,arguments);},show:function(){this.updatePosition();OpenLayers.Popup.prototype.show.apply(this,arguments);},moveTo:function(px){var oldRelativePosition=this.relativePosition;this.relativePosition=this.calculateRelativePosition(px);var newPx=this.calculateNewPx(px);var newArguments=new Array(newPx);OpenLayers.Popup.prototype.moveTo.apply(this,newArguments);if(this.relativePosition!=oldRelativePosition){this.updateRelativePosition();}},setSize:function(contentSize){OpenLayers.Popup.prototype.setSize.apply(this,arguments);if((this.lonlat)&&(this.map)){var px=this.map.getLayerPxFromLonLat(this.lonlat);this.moveTo(px);}},calculateRelativePosition:function(px){var lonlat=this.map.getLonLatFromLayerPx(px);var extent=this.map.getExtent();var quadrant=extent.determineQuadrant(lonlat);return OpenLayers.Bounds.oppositeQuadrant(quadrant);},updateRelativePosition:function(){},calculateNewPx:function(px){var newPx=px.offset(this.anchor.offset);var size=this.size||this.contentSize;var top=(this.relativePosition.charAt(0)=='t');newPx.y+=(top)?-size.h:this.anchor.size.h;var left=(this.relativePosition.charAt(1)=='l');newPx.x+=(left)?-size.w:this.anchor.size.w;return newPx;},CLASS_NAME:"OpenLayers.Popup.Anchored"});OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{canvas:null,features:null,geometryMap:null,initialize:function(containerID){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.root=document.createElement("canvas");this.container.appendChild(this.root);this.canvas=this.root.getContext("2d");this.features={};this.geometryMap={};},eraseGeometry:function(geometry){this.eraseFeatures(this.features[this.geometryMap[geometry.id]][0]);},supported:function(){var canvas=document.createElement("canvas");return!!canvas.getContext;},setExtent:function(extent){this.extent=extent.clone();this.resolution=null;this.redraw();},setSize:function(size){this.size=size.clone();this.root.style.width=size.w+"px";this.root.style.height=size.h+"px";this.root.width=size.w;this.root.height=size.h;this.resolution=null;},drawFeature:function(feature,style){if(style==null){style=feature.style;} +style=OpenLayers.Util.extend({'fillColor':'#000000','strokeColor':'#000000','strokeWidth':2,'fillOpacity':1,'strokeOpacity':1},style);this.features[feature.id]=[feature,style];if(feature.geometry){this.geometryMap[feature.geometry.id]=feature.id;} +this.redraw();},drawGeometry:function(geometry,style){var className=geometry.CLASS_NAME;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0;i1){middle=parseInt((leftIndex+rightIndex)/2);var placement=this.compare(this,newNode,OpenLayers.Util.getElement(this.order[middle]));if(placement>0){leftIndex=middle;}else{rightIndex=middle;}} +this.order.splice(rightIndex,0,nodeId);this.indices[nodeId]=this.getZIndex(newNode);return this.getNextElement(rightIndex);},remove:function(node){var nodeId=node.id;var arrayIndex=OpenLayers.Util.indexOf(this.order,nodeId);if(arrayIndex>=0){this.order.splice(arrayIndex,1);delete this.indices[nodeId];if(this.order.length>0){var lastId=this.order[this.order.length-1];this.maxZIndex=this.indices[lastId];}else{this.maxZIndex=0;}}},clear:function(){this.order=[];this.indices={};this.maxZIndex=0;},exists:function(node){return(this.indices[node.id]!=null);},getZIndex:function(node){return node._style.graphicZIndex;},determineZIndex:function(node){var zIndex=node._style.graphicZIndex;if(zIndex==null){zIndex=this.maxZIndex;node._style.graphicZIndex=zIndex;}else if(zIndex>this.maxZIndex){this.maxZIndex=zIndex;}},getNextElement:function(index){var nextIndex=index+1;if(nextIndex0){this.vectorRoot.removeChild(this.vectorRoot.firstChild);}} +if(this.textRoot){while(this.textRoot.childNodes.length>0){this.textRoot.removeChild(this.textRoot.firstChild);}} +if(this.indexer){this.indexer.clear();}},getNodeType:function(geometry,style){},drawGeometry:function(geometry,style,featureId){var className=geometry.CLASS_NAME;var rendered=true;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0,len=geometry.components.length;ithis.duration){if(this.callbacks&&this.callbacks.done){this.callbacks.done.call(this,this.finish);this.playing=false;} +window.clearInterval(this.interval);this.interval=null;}},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(t,b,c,d){return c*t/d+b;},easeOut:function(t,b,c,d){return c*t/d+b;},easeInOut:function(t,b,c,d){return c*t/d+b;},CLASS_NAME:"OpenLayers.Easing.Linear"};OpenLayers.Easing.Expo={easeIn:function(t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOut:function(t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOut:function(t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},CLASS_NAME:"OpenLayers.Easing.Expo"};OpenLayers.Easing.Quad={easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOut:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var i=0,len=this.map.controls.length;i=0;--i){this._removeButton(this.buttons[i]);}},doubleClick:function(evt){OpenLayers.Event.stop(evt);return false;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} +switch(this.action){case"panup":this.map.pan(0,-this.getSlideFactor("h"));break;case"pandown":this.map.pan(0,this.getSlideFactor("h"));break;case"panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case"panright":this.map.pan(this.getSlideFactor("w"),0);break;case"zoomin":this.map.zoomIn();break;case"zoomout":this.map.zoomOut();break;case"zoomworld":this.map.zoomToMaxExtent();break;} +OpenLayers.Event.stop(evt);},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Event={observers:false,KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(event){return event.target||event.srcElement;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},isRightClick:function(event){return(((event.which)&&(event.which==3))||((event.button)&&(event.button==2)));},stop:function(event,allowDefault){if(!allowDefault){if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}} +if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}},findElement:function(event,tagName){var element=OpenLayers.Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase()))){element=element.parentNode;} +return element;},observe:function(elementParam,name,observer,useCapture){var element=OpenLayers.Util.getElement(elementParam);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent)){name='keydown';} +if(!this.observers){this.observers={};} +if(!element._eventCacheID){var idPrefix="eventCacheID_";if(element.id){idPrefix=element.id+"_"+idPrefix;} +element._eventCacheID=OpenLayers.Util.createUniqueID(idPrefix);} +var cacheID=element._eventCacheID;if(!this.observers[cacheID]){this.observers[cacheID]=[];} +this.observers[cacheID].push({'element':element,'name':name,'observer':observer,'useCapture':useCapture});if(element.addEventListener){element.addEventListener(name,observer,useCapture);}else if(element.attachEvent){element.attachEvent('on'+name,observer);}},stopObservingElement:function(elementParam){var element=OpenLayers.Util.getElement(elementParam);var cacheID=element._eventCacheID;this._removeElementObservers(OpenLayers.Event.observers[cacheID]);},_removeElementObservers:function(elementObservers){if(elementObservers){for(var i=elementObservers.length-1;i>=0;i--){var entry=elementObservers[i];var args=new Array(entry.element,entry.name,entry.observer,entry.useCapture);var removed=OpenLayers.Event.stopObserving.apply(this,args);}}},stopObserving:function(elementParam,name,observer,useCapture){useCapture=useCapture||false;var element=OpenLayers.Util.getElement(elementParam);var cacheID=element._eventCacheID;if(name=='keypress'){if(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.detachEvent){name='keydown';}} +var foundEntry=false;var elementObservers=OpenLayers.Event.observers[cacheID];if(elementObservers){var i=0;while(!foundEntry&&i
"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.

"+"Most likely, this is because the Google Maps library "+"script was either not included, or does not contain the "+"correct API key for your site.

"+"Developers: For help getting this working correctly, "+"
click here",'getLayerWarning':"The ${layerType} Layer was unable to load correctly.

"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.

"+"Most likely, this is because the ${layerLib} library "+"script was not correctly included.

"+"Developers: For help getting this working correctly, "+"click here",'scale':"Scale = 1 : ${scaleDenom}",'layerAlreadyAdded':"You tried to add the layer: ${layerName} to the map, but it has already been added",'reprojectDeprecated':"You are using the 'reproject' option "+"on the ${layerName} layer. This option is deprecated: "+"its use was designed to support displaying data over commercial "+"basemaps, but that functionality should now be achieved by using "+"Spherical Mercator support. More information is available from "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"This method has been deprecated and will be removed in 3.0. "+"Please use ${newMethod} instead.",'boundsAddError':"You must pass both x and y values to the add function.",'lonlatAddError':"You must pass both lon and lat values to the add function.",'pixelAddError':"You must pass both x and y values to the add function.",'unsupportedGeometryType':"Unsupported geometry type: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition failed: element with id ${elemId} may be misplaced.",'end':'','filterEvaluateNotImplemented':"evaluate is not implemented for this filter type."};OpenLayers.Popup.AnchoredBubble=OpenLayers.Class(OpenLayers.Popup.Anchored,{rounded:false,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){this.padding=new OpenLayers.Bounds(0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE,0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE);OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);},draw:function(px){OpenLayers.Popup.Anchored.prototype.draw.apply(this,arguments);this.setContentHTML();this.setBackgroundColor();this.setOpacity();return this.div;},updateRelativePosition:function(){this.setRicoCorners();},setSize:function(contentSize){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.setRicoCorners();},setBackgroundColor:function(color){if(color!=undefined){this.backgroundColor=color;} +if(this.div!=null){if(this.contentDiv!=null){this.div.style.background="transparent";OpenLayers.Rico.Corner.changeColor(this.groupDiv,this.backgroundColor);}}},setOpacity:function(opacity){OpenLayers.Popup.Anchored.prototype.setOpacity.call(this,opacity);if(this.div!=null){if(this.groupDiv!=null){OpenLayers.Rico.Corner.changeOpacity(this.groupDiv,this.opacity);}}},setBorder:function(border){this.border=0;},setRicoCorners:function(){var corners=this.getCornersToRound(this.relativePosition);var options={corners:corners,color:this.backgroundColor,bgColor:"transparent",blend:false};if(!this.rounded){OpenLayers.Rico.Corner.round(this.div,options);this.rounded=true;}else{OpenLayers.Rico.Corner.reRound(this.groupDiv,options);this.setBackgroundColor();this.setOpacity();}},getCornersToRound:function(){var corners=['tl','tr','bl','br'];var corner=OpenLayers.Bounds.oppositeQuadrant(this.relativePosition);OpenLayers.Util.removeItem(corners,corner);return corners.join(" ");},CLASS_NAME:"OpenLayers.Popup.AnchoredBubble"});OpenLayers.Popup.AnchoredBubble.CORNER_SIZE=5;OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,initialize:function(projCode,options){OpenLayers.Util.extend(this,options);this.projCode=projCode;if(window.Proj4js){this.proj=new Proj4js.Proj(projCode);}},getCode:function(){return this.proj?this.proj.srsCode:this.projCode;},getUnits:function(){return this.proj?this.proj.units:null;},toString:function(){return this.getCode();},equals:function(projection){if(projection&&projection.getCode){return this.getCode()==projection.getCode();}else{return false;}},destroy:function(){delete this.proj;delete this.projCode;},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};OpenLayers.Projection.addTransform=function(from,to,method){if(!OpenLayers.Projection.transforms[from]){OpenLayers.Projection.transforms[from]={};} +OpenLayers.Projection.transforms[from][to]=method;};OpenLayers.Projection.transform=function(point,source,dest){if(source.proj&&dest.proj){point=Proj4js.transform(source.proj,dest.proj,point);}else if(source&&dest&&OpenLayers.Projection.transforms[source.getCode()]&&OpenLayers.Projection.transforms[source.getCode()][dest.getCode()]){OpenLayers.Projection.transforms[source.getCode()][dest.getCode()](point);} +return point;};OpenLayers.Renderer.SVG=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",MAX_PIXEL:15000,translationParameters:null,symbolSize:{},isGecko:null,initialize:function(containerID){if(!this.supported()){return;} +OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);this.translationParameters={x:0,y:0};this.isGecko=(navigator.userAgent.toLowerCase().indexOf("gecko/")!=-1);},destroy:function(){OpenLayers.Renderer.Elements.prototype.destroy.apply(this,arguments);},supported:function(){var svgFeature="http://www.w3.org/TR/SVG11/feature#";return(document.implementation&&(document.implementation.hasFeature("org.w3c.svg","1.0")||document.implementation.hasFeature(svgFeature+"SVG","1.1")||document.implementation.hasFeature(svgFeature+"BasicStructure","1.1")));},inValidRange:function(x,y,xyOnly){var left=x+(xyOnly?0:this.translationParameters.x);var top=y+(xyOnly?0:this.translationParameters.y);return(left>=-this.MAX_PIXEL&&left<=this.MAX_PIXEL&&top>=-this.MAX_PIXEL&&top<=this.MAX_PIXEL);},setExtent:function(extent,resolutionChanged){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();var left=-extent.left/resolution;var top=extent.top/resolution;if(resolutionChanged){this.left=left;this.top=top;var extentString="0 0 "+this.size.w+" "+this.size.h;this.rendererRoot.setAttributeNS(null,"viewBox",extentString);this.translate(0,0);return true;}else{var inRange=this.translate(left-this.left,top-this.top);if(!inRange){this.setExtent(extent,true);} +return inRange;}},translate:function(x,y){if(!this.inValidRange(x,y,true)){return false;}else{var transformString="";if(x||y){transformString="translate("+x+","+y+")";} +this.root.setAttributeNS(null,"transform",transformString);this.translationParameters={x:x,y:y};return true;}},setSize:function(size){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.setAttributeNS(null,"width",this.size.w);this.rendererRoot.setAttributeNS(null,"height",this.size.h);},getNodeType:function(geometry,style){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":if(style.externalGraphic){nodeType="image";}else if(this.isComplexSymbol(style.graphicName)){nodeType="use";}else{nodeType="circle";} +break;case"OpenLayers.Geometry.Rectangle":nodeType="rect";break;case"OpenLayers.Geometry.LineString":nodeType="polyline";break;case"OpenLayers.Geometry.LinearRing":nodeType="polygon";break;case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="path";break;default:break;} +return nodeType;},setStyle:function(node,style,options){style=style||node._style;options=options||node._options;var r=parseFloat(node.getAttributeNS(null,"r"));var widthFactor=1;var pos;if(node._geometryClass=="OpenLayers.Geometry.Point"&&r){node.style.visibility="";if(style.graphic===false){node.style.visibility="hidden";}else if(style.externalGraphic){pos=this.getPosition(node);if(style.graphicTitle){node.setAttributeNS(null,"title",style.graphicTitle);} +if(style.graphicWidth&&style.graphicHeight){node.setAttributeNS(null,"preserveAspectRatio","none");} +var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);var opacity=style.graphicOpacity||style.fillOpacity;node.setAttributeNS(null,"x",(pos.x+xOffset).toFixed());node.setAttributeNS(null,"y",(pos.y+yOffset).toFixed());node.setAttributeNS(null,"width",width);node.setAttributeNS(null,"height",height);node.setAttributeNS(this.xlinkns,"href",style.externalGraphic);node.setAttributeNS(null,"style","opacity: "+opacity);}else if(this.isComplexSymbol(style.graphicName)){var offset=style.pointRadius*3;var size=offset*2;var id=this.importSymbol(style.graphicName);var href="#"+id;pos=this.getPosition(node);widthFactor=this.symbolSize[id]/size;var parent=node.parentNode;var nextSibling=node.nextSibling;if(parent){parent.removeChild(node);} +node.setAttributeNS(this.xlinkns,"href",href);node.setAttributeNS(null,"width",size);node.setAttributeNS(null,"height",size);node.setAttributeNS(null,"x",pos.x-offset);node.setAttributeNS(null,"y",pos.y-offset);if(nextSibling){parent.insertBefore(node,nextSibling);}else if(parent){parent.appendChild(node);}}else{node.setAttributeNS(null,"r",style.pointRadius);} +if(typeof style.rotation!="undefined"&&pos){var rotation=OpenLayers.String.format("rotate(${0} ${1} ${2})",[style.rotation,pos.x,pos.y]);node.setAttributeNS(null,"transform",rotation);}} +if(options.isFilled){node.setAttributeNS(null,"fill",style.fillColor);node.setAttributeNS(null,"fill-opacity",style.fillOpacity);}else{node.setAttributeNS(null,"fill","none");} +if(options.isStroked){node.setAttributeNS(null,"stroke",style.strokeColor);node.setAttributeNS(null,"stroke-opacity",style.strokeOpacity);node.setAttributeNS(null,"stroke-width",style.strokeWidth*widthFactor);node.setAttributeNS(null,"stroke-linecap",style.strokeLinecap);node.setAttributeNS(null,"stroke-linejoin","round");node.setAttributeNS(null,"stroke-dasharray",this.dashStyle(style,widthFactor));}else{node.setAttributeNS(null,"stroke","none");} +if(style.pointerEvents){node.setAttributeNS(null,"pointer-events",style.pointerEvents);} +if(style.cursor!=null){node.setAttributeNS(null,"cursor",style.cursor);} +return node;},dashStyle:function(style,widthFactor){var w=style.strokeWidth*widthFactor;switch(style.strokeDashstyle){case'solid':return'none';case'dot':return[1,4*w].join();case'dash':return[4*w,4*w].join();case'dashdot':return[4*w,4*w,1,4*w].join();case'longdash':return[8*w,4*w].join();case'longdashdot':return[8*w,4*w,1,4*w].join();default:return style.strokeDashstyle.replace(/ /g,",");}},createNode:function(type,id){var node=document.createElementNS(this.xmlns,type);if(id){node.setAttributeNS(null,"id",id);} +return node;},nodeTypeCompare:function(node,type){return(type==node.nodeName);},createRenderRoot:function(){return this.nodeFactory(this.container.id+"_svgRoot","svg");},createRoot:function(suffix){return this.nodeFactory(this.container.id+suffix,"g");},createDefs:function(){var defs=this.nodeFactory(this.container.id+"_defs","defs");this.rendererRoot.appendChild(defs);return defs;},drawPoint:function(node,geometry){return this.drawCircle(node,geometry,1);},drawCircle:function(node,geometry,radius){var resolution=this.getResolution();var x=(geometry.x/resolution+this.left);var y=(this.top-geometry.y/resolution);if(this.inValidRange(x,y)){node.setAttributeNS(null,"cx",x);node.setAttributeNS(null,"cy",y);node.setAttributeNS(null,"r",radius);return node;}else{return false;}},drawLineString:function(node,geometry){var componentsResult=this.getComponentsString(geometry.components);if(componentsResult.path){node.setAttributeNS(null,"points",componentsResult.path);return(componentsResult.complete?node:null);}else{return false;}},drawLinearRing:function(node,geometry){var componentsResult=this.getComponentsString(geometry.components);if(componentsResult.path){node.setAttributeNS(null,"points",componentsResult.path);return(componentsResult.complete?node:null);}else{return false;}},drawPolygon:function(node,geometry){var d="";var draw=true;var complete=true;var linearRingResult,path;for(var j=0,len=geometry.components.length;j0){if(this.getShortString(components[i-1])){strings.push(this.clipLine(components[i],components[i-1]));}} +if(imaxX){k=(y2-y1)/(x2-x1);x2=x2<0?-maxX:maxX;y2=y1+(x2-x1)*k;} +if(y2<-maxY||y2>maxY){k=(x2-x1)/(y2-y1);y2=y2<0?-maxY:maxY;x2=x1+(y2-y1)*k;} +return x2+","+y2;},getShortString:function(point){var resolution=this.getResolution();var x=(point.x/resolution+this.left);var y=(this.top-point.y/resolution);if(this.inValidRange(x,y)){return x+","+y;}else{return false;}},getPosition:function(node){return({x:parseFloat(node.getAttributeNS(null,"cx")),y:parseFloat(node.getAttributeNS(null,"cy"))});},importSymbol:function(graphicName){if(!this.defs){this.defs=this.createDefs();} +var id=this.container.id+"-"+graphicName;if(document.getElementById(id)!=null){return id;} +var symbol=OpenLayers.Renderer.symbol[graphicName];if(!symbol){throw new Error(graphicName+' is not a valid symbol name');return;} +var symbolNode=this.nodeFactory(id,"symbol");var node=this.nodeFactory(null,"polygon");symbolNode.appendChild(node);var symbolExtent=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);var points="";var x,y;for(var i=0;i=2*parts[1]){return"longdash";} +return(parts[0]==1||parts[1]==1)?"dot":"dash";}else if(parts.length==4){return(1*parts[0]>=2*parts[1])?"longdashdot":"dashdot";} +return"solid";}},createNode:function(type,id){var node=document.createElement(type);if(id){node.id=id;} +node.unselectable='on';node.onselectstart=function(){return(false);};return node;},nodeTypeCompare:function(node,type){var subType=type;var splitIndex=subType.indexOf(":");if(splitIndex!=-1){subType=subType.substr(splitIndex+1);} +var nodeName=node.nodeName;splitIndex=nodeName.indexOf(":");if(splitIndex!=-1){nodeName=nodeName.substr(splitIndex+1);} +return(subType==nodeName);},createRenderRoot:function(){return this.nodeFactory(this.container.id+"_vmlRoot","div");},createRoot:function(suffix){return this.nodeFactory(this.container.id+suffix,"olv:group");},drawPoint:function(node,geometry){return this.drawCircle(node,geometry,1);},drawCircle:function(node,geometry,radius){if(!isNaN(geometry.x)&&!isNaN(geometry.y)){var resolution=this.getResolution();node.style.left=((geometry.x/resolution-this.offset.x).toFixed()-radius)+"px";node.style.top=((geometry.y/resolution-this.offset.y).toFixed()-radius)+"px";var diameter=radius*2;node.style.width=diameter+"px";node.style.height=diameter+"px";return node;} +return false;},drawLineString:function(node,geometry){return this.drawLine(node,geometry,false);},drawLinearRing:function(node,geometry){return this.drawLine(node,geometry,true);},drawLine:function(node,geometry,closeLine){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var numComponents=geometry.components.length;var parts=new Array(numComponents);var comp,x,y;for(var i=0;i0){symbolExtent.bottom=symbolExtent.bottom-diff;symbolExtent.top=symbolExtent.top+diff;}else{symbolExtent.left=symbolExtent.left-diff;symbolExtent.right=symbolExtent.right+diff;} +cache={path:path,size:symbolExtent.getWidth(),left:symbolExtent.left,bottom:symbolExtent.bottom};this.symbolCache[id]=cache;return cache;},CLASS_NAME:"OpenLayers.Renderer.VML"});OpenLayers.Renderer.VML.LABEL_SHIFT={"l":0,"c":.5,"r":1,"t":0,"m":.5,"b":1};OpenLayers.Tile=OpenLayers.Class({EVENT_TYPES:["loadstart","loadend","reload","unload"],events:null,id:null,layer:null,url:null,bounds:null,size:null,position:null,isLoading:false,initialize:function(layer,position,bounds,url,size){this.layer=layer;this.position=position.clone();this.bounds=bounds.clone();this.url=url;this.size=size.clone();this.id=OpenLayers.Util.createUniqueID("Tile_");this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);},unload:function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("unload");}},destroy:function(){this.layer=null;this.bounds=null;this.size=null;this.position=null;this.events.destroy();this.events=null;},clone:function(obj){if(obj==null){obj=new OpenLayers.Tile(this.layer,this.position,this.bounds,this.url,this.size);} +OpenLayers.Util.applyDefaults(obj,this);return obj;},draw:function(){var maxExtent=this.layer.maxExtent;var withinMaxExtent=(maxExtent&&this.bounds.intersectsBounds(maxExtent,false));this.shouldDraw=(withinMaxExtent||this.layer.displayOutsideMaxExtent);this.clear();return this.shouldDraw;},moveTo:function(bounds,position,redraw){if(redraw==null){redraw=true;} +this.bounds=bounds.clone();this.position=position.clone();if(redraw){this.draw();}},clear:function(){},getBoundsFromBaseLayer:function(position){var msg=OpenLayers.i18n('reprojectDeprecated',{'layerName':this.layer.name});OpenLayers.Console.warn(msg);var topLeft=this.layer.map.getLonLatFromLayerPx(position);var bottomRightPx=position.clone();bottomRightPx.x+=this.size.w;bottomRightPx.y+=this.size.h;var bottomRight=this.layer.map.getLonLatFromLayerPx(bottomRightPx);if(topLeft.lon>bottomRight.lon){if(topLeft.lon<0){topLeft.lon=-180-(topLeft.lon+180);}else{bottomRight.lon=180+bottomRight.lon+180;}} +var bounds=new OpenLayers.Bounds(topLeft.lon,bottomRight.lat,bottomRight.lon,topLeft.lat);return bounds;},showTile:function(){if(this.shouldDraw){this.show();}},show:function(){},hide:function(){},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Control.Permalink=OpenLayers.Class(OpenLayers.Control,{argParserClass:OpenLayers.Control.ArgParser,element:null,base:'',displayProjection:null,initialize:function(element,base,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.element=OpenLayers.Util.getElement(element);this.base=base||document.location.href;},destroy:function(){if(this.element.parentNode==this.div){this.div.removeChild(this.element);} +this.element=null;this.map.events.unregister('moveend',this,this.updateLink);OpenLayers.Control.prototype.destroy.apply(this,arguments);},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var i=0,len=this.map.controls.length;i0){text=text.substring(index);} +var node=OpenLayers.Util.Try(OpenLayers.Function.bind((function(){var xmldom;if(window.ActiveXObject&&!this.xmldom){xmldom=new ActiveXObject("Microsoft.XMLDOM");}else{xmldom=this.xmldom;} +xmldom.loadXML(text);return xmldom;}),this),function(){return new DOMParser().parseFromString(text,'text/xml');},function(){var req=new XMLHttpRequest();req.open("GET","data:"+"text/xml"+";charset=utf-8,"+encodeURIComponent(text),false);if(req.overrideMimeType){req.overrideMimeType("text/xml");} +req.send(null);return req.responseXML;});if(this.keepData){this.data=node;} +return node;},write:function(node){var data;if(this.xmldom){data=node.xml;}else{var serializer=new XMLSerializer();if(node.nodeType==1){var doc=document.implementation.createDocument("","",null);if(doc.importNode){node=doc.importNode(node,true);} +doc.appendChild(node);data=serializer.serializeToString(doc);}else{data=serializer.serializeToString(node);}} +return data;},createElementNS:function(uri,name){var element;if(this.xmldom){if(typeof uri=="string"){element=this.xmldom.createNode(1,name,uri);}else{element=this.xmldom.createNode(1,name,"");}}else{element=document.createElementNS(uri,name);} +return element;},createTextNode:function(text){var node;if(this.xmldom){node=this.xmldom.createTextNode(text);}else{node=document.createTextNode(text);} +return node;},getElementsByTagNameNS:function(node,uri,name){var elements=[];if(node.getElementsByTagNameNS){elements=node.getElementsByTagNameNS(uri,name);}else{var allNodes=node.getElementsByTagName("*");var potentialNode,fullName;for(var i=0,len=allNodes.length;i0){prefix=name.substring(0,split);local=name.substring(split+1);}else{if(parent){prefix=this.namespaceAlias[parent.namespaceURI];}else{prefix=this.defaultPrefix;} +local=name;} +var child=this.writers[prefix][local].apply(this,[obj]);if(parent){parent.appendChild(child);} +return child;},getChildEl:function(node,name,uri){return node&&this.getThisOrNextEl(node.firstChild,name,uri);},getNextEl:function(node,name,uri){return node&&this.getThisOrNextEl(node.nextSibling,name,uri);},getThisOrNextEl:function(node,name,uri){outer:for(var sibling=node;sibling;sibling=sibling.nextSibling){switch(sibling.nodeType){case 1:if((!name||name===(sibling.localName||sibling.nodeName.split(":").pop()))&&(!uri||uri===sibling.namespaceURI)){break outer;} +sibling=null;break outer;case 3:if(/^\s*$/.test(sibling.nodeValue)){break;} +case 4:case 6:case 12:case 10:case 11:sibling=null;break outer;}} +return sibling||null;},lookupNamespaceURI:function(node,prefix){var uri=null;if(node){if(node.lookupNamespaceURI){uri=node.lookupNamespaceURI(prefix);}else{outer:switch(node.nodeType){case 1:if(node.namespaceURI!==null&&node.prefix===prefix){uri=node.namespaceURI;break outer;} +var len=node.attributes.length;if(len){var attr;for(var i=0;i=0;--i){this.controls[i].destroy();} +this.controls=null;} +if(this.layers!=null){for(var i=this.layers.length-1;i>=0;--i){this.layers[i].destroy(false);} +this.layers=null;} +if(this.viewPortDiv){this.div.removeChild(this.viewPortDiv);} +this.viewPortDiv=null;if(this.eventListeners){this.events.un(this.eventListeners);this.eventListeners=null;} +this.events.destroy();this.events=null;},setOptions:function(options){OpenLayers.Util.extend(this,options);},getTileSize:function(){return this.tileSize;},getBy:function(array,property,match){var test=(typeof match.test=="function");var found=OpenLayers.Array.filter(this[array],function(item){return item[property]==match||(test&&match.test(item[property]));});return found;},getLayersBy:function(property,match){return this.getBy("layers",property,match);},getLayersByName:function(match){return this.getLayersBy("name",match);},getLayersByClass:function(match){return this.getLayersBy("CLASS_NAME",match);},getControlsBy:function(property,match){return this.getBy("controls",property,match);},getControlsByClass:function(match){return this.getControlsBy("CLASS_NAME",match);},getLayer:function(id){var foundLayer=null;for(var i=0,len=this.layers.length;ithis.layers.length){idx=this.layers.length;} +if(base!=idx){this.layers.splice(base,1);this.layers.splice(idx,0,layer);for(var i=0,len=this.layers.length;i=0;--i){this.removePopup(this.popups[i]);}} +popup.map=this;this.popups.push(popup);var popupDiv=popup.draw();if(popupDiv){popupDiv.style.zIndex=this.Z_INDEX_BASE['Popup']+ +this.popups.length;this.layerContainerDiv.appendChild(popupDiv);}},removePopup:function(popup){OpenLayers.Util.removeItem(this.popups,popup);if(popup.div){try{this.layerContainerDiv.removeChild(popup.div);} +catch(e){}} +popup.map=null;},getSize:function(){var size=null;if(this.size!=null){size=this.size.clone();} +return size;},updateSize:function(){this.events.clearMouseCache();var newSize=this.getCurrentSize();var oldSize=this.getSize();if(oldSize==null){this.size=oldSize=newSize;} +if(!newSize.equals(oldSize)){this.size=newSize;for(var i=0,len=this.layers.length;ithis.restrictedExtent.getWidth()){lonlat=new OpenLayers.LonLat(maxCenter.lon,lonlat.lat);}else if(extent.leftthis.restrictedExtent.right){lonlat=lonlat.add(this.restrictedExtent.right- +extent.right,0);} +if(extent.getHeight()>this.restrictedExtent.getHeight()){lonlat=new OpenLayers.LonLat(lonlat.lon,maxCenter.lat);}else if(extent.bottomthis.restrictedExtent.top){lonlat=lonlat.add(0,this.restrictedExtent.top- +extent.top);}}} +var zoomChanged=forceZoomChange||((this.isValidZoomLevel(zoom))&&(zoom!=this.getZoom()));var centerChanged=(this.isValidLonLat(lonlat))&&(!lonlat.equals(this.center));if(zoomChanged||centerChanged||!dragging){if(!this.dragging&&!noEvent){this.events.triggerEvent("movestart");} +if(centerChanged){if((!zoomChanged)&&(this.center)){this.centerLayerContainer(lonlat);} +this.center=lonlat.clone();} +if((zoomChanged)||(this.layerContainerOrigin==null)){this.layerContainerOrigin=this.center.clone();this.layerContainerDiv.style.left="0px";this.layerContainerDiv.style.top="0px";} +if(zoomChanged){this.zoom=zoom;this.resolution=this.getResolutionForZoom(zoom);this.viewRequestID++;} +var bounds=this.getExtent();if(this.baseLayer.visibility){this.baseLayer.moveTo(bounds,zoomChanged,dragging);if(dragging){this.baseLayer.events.triggerEvent("move");}else{this.baseLayer.events.triggerEvent("moveend",{"zoomChanged":zoomChanged});}} +bounds=this.baseLayer.getExtent();for(var i=0,len=this.layers.length;i=0)&&(zoomLevel0){var separator=(url.indexOf('?')>-1)?'&':'?';url+=separator+paramString;}} +if(config.proxy&&(url.indexOf("http")==0)){url=config.proxy+encodeURIComponent(url);} +request.open(config.method,url,config.async,config.user,config.password);for(var header in config.headers){request.setRequestHeader(header,config.headers[header]);} +var complete=(config.scope)?OpenLayers.Function.bind(config.callback,config.scope):config.callback;var success;if(config.success){success=(config.scope)?OpenLayers.Function.bind(config.success,config.scope):config.success;} +var failure;if(config.failure){failure=(config.scope)?OpenLayers.Function.bind(config.failure,config.scope):config.failure;} +var events=this.events;request.onreadystatechange=function(){if(request.readyState==OpenLayers.Request.XMLHttpRequest.DONE){var proceed=events.triggerEvent("complete",{request:request,config:config,requestUrl:url});if(proceed!==false){complete(request);if(!request.status||(request.status>=200&&request.status<300)){events.triggerEvent("success",{request:request,config:config,requestUrl:url});if(success){success(request);}} +if(request.status&&(request.status<200||request.status>=300)){events.triggerEvent("failure",{request:request,config:config,requestUrl:url});if(failure){failure(request);}}}}};if(config.async===false){request.send(config.data);}else{window.setTimeout(function(){request.send(config.data);},0);} +return request;},GET:function(config){config=OpenLayers.Util.extend(config,{method:"GET"});return OpenLayers.Request.issue(config);},POST:function(config){config=OpenLayers.Util.extend(config,{method:"POST"});config.headers=config.headers?config.headers:{};if(!("CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(config.headers))){config.headers["Content-Type"]="application/xml";} +return OpenLayers.Request.issue(config);},PUT:function(config){config=OpenLayers.Util.extend(config,{method:"PUT"});config.headers=config.headers?config.headers:{};if(!("CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(config.headers))){config.headers["Content-Type"]="application/xml";} +return OpenLayers.Request.issue(config);},DELETE:function(config){config=OpenLayers.Util.extend(config,{method:"DELETE"});return OpenLayers.Request.issue(config);},HEAD:function(config){config=OpenLayers.Util.extend(config,{method:"HEAD"});return OpenLayers.Request.issue(config);},OPTIONS:function(config){config=OpenLayers.Util.extend(config,{method:"OPTIONS"});return OpenLayers.Request.issue(config);}};OpenLayers.Tile.Image=OpenLayers.Class(OpenLayers.Tile,{url:null,imgDiv:null,frame:null,layerAlphaHack:null,isBackBuffer:false,lastRatio:1,isFirstDraw:true,backBufferTile:null,initialize:function(layer,position,bounds,url,size){OpenLayers.Tile.prototype.initialize.apply(this,arguments);this.url=url;this.frame=document.createElement('div');this.frame.style.overflow='hidden';this.frame.style.position='absolute';this.layerAlphaHack=this.layer.alpha&&OpenLayers.Util.alphaHack();},destroy:function(){if(this.imgDiv!=null){if(this.layerAlphaHack){OpenLayers.Event.stopObservingElement(this.imgDiv.childNodes[0].id);} +OpenLayers.Event.stopObservingElement(this.imgDiv.id);if(this.imgDiv.parentNode==this.frame){this.frame.removeChild(this.imgDiv);this.imgDiv.map=null;} +this.imgDiv.urls=null;this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";} +this.imgDiv=null;if((this.frame!=null)&&(this.frame.parentNode==this.layer.div)){this.layer.div.removeChild(this.frame);} +this.frame=null;if(this.backBufferTile){this.backBufferTile.destroy();this.backBufferTile=null;} +this.layer.events.unregister("loadend",this,this.resetBackBuffer);OpenLayers.Tile.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Tile.Image(this.layer,this.position,this.bounds,this.url,this.size);} +obj=OpenLayers.Tile.prototype.clone.apply(this,[obj]);obj.imgDiv=null;return obj;},draw:function(){if(this.layer!=this.layer.map.baseLayer&&this.layer.reproject){this.bounds=this.getBoundsFromBaseLayer(this.position);} +var drawTile=OpenLayers.Tile.prototype.draw.apply(this,arguments);if(OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1){if(drawTile){if(!this.backBufferTile){this.backBufferTile=this.clone();this.backBufferTile.hide();this.backBufferTile.isBackBuffer=true;this.events.register('loadend',this,this.resetBackBuffer);this.layer.events.register("loadend",this,this.resetBackBuffer);} +this.startTransition();}else{if(this.backBufferTile){this.backBufferTile.clear();}}}else{if(drawTile&&this.isFirstDraw){this.events.register('loadend',this,this.showTile);this.isFirstDraw=false;}} +if(!drawTile){return false;} +if(this.isLoading){this.events.triggerEvent("reload");}else{this.isLoading=true;this.events.triggerEvent("loadstart");} +return this.renderTile();},resetBackBuffer:function(){this.showTile();if(this.backBufferTile&&(this.isFirstDraw||!this.layer.numLoadingTiles)){this.isFirstDraw=false;var maxExtent=this.layer.maxExtent;var withinMaxExtent=(maxExtent&&this.bounds.intersectsBounds(maxExtent,false));if(withinMaxExtent){this.backBufferTile.position=this.position;this.backBufferTile.bounds=this.bounds;this.backBufferTile.size=this.size;this.backBufferTile.imageSize=this.layer.imageSize||this.size;this.backBufferTile.imageOffset=this.layer.imageOffset;this.backBufferTile.resolution=this.layer.getResolution();this.backBufferTile.renderTile();} +this.backBufferTile.hide();}},renderTile:function(){if(this.imgDiv==null){this.initImgDiv();} +this.imgDiv.viewRequestID=this.layer.map.viewRequestID;if(this.layer.async){this.layer.getURLasync(this.bounds,this,"url",this.positionImage);}else{if(this.layer.url instanceof Array){this.imgDiv.urls=this.layer.url.slice();} +this.url=this.layer.getURL(this.bounds);this.positionImage();} +return true;},positionImage:function(){if(this.layer==null) +return;OpenLayers.Util.modifyDOMElement(this.frame,null,this.position,this.size);var imageSize=this.layer.getImageSize();if(this.layerAlphaHack){OpenLayers.Util.modifyAlphaImageDiv(this.imgDiv,null,null,imageSize,this.url);}else{OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,imageSize);this.imgDiv.src=this.url;}},clear:function(){if(this.imgDiv){this.hide();if(OpenLayers.Tile.Image.useBlankTile){this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";}}},initImgDiv:function(){var offset=this.layer.imageOffset;var size=this.layer.getImageSize();if(this.layerAlphaHack){this.imgDiv=OpenLayers.Util.createAlphaImageDiv(null,offset,size,null,"relative",null,null,null,true);}else{this.imgDiv=OpenLayers.Util.createImage(null,offset,size,null,"relative",null,null,true);} +this.imgDiv.className='olTileImage';this.frame.style.zIndex=this.isBackBuffer?0:1;this.frame.appendChild(this.imgDiv);this.layer.div.appendChild(this.frame);if(this.layer.opacity!=null){OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,null,null,null,null,this.layer.opacity);} +this.imgDiv.map=this.layer.map;var onload=function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("loadend");}};if(this.layerAlphaHack){OpenLayers.Event.observe(this.imgDiv.childNodes[0],'load',OpenLayers.Function.bind(onload,this));}else{OpenLayers.Event.observe(this.imgDiv,'load',OpenLayers.Function.bind(onload,this));} +var onerror=function(){if(this.imgDiv._attempts>OpenLayers.IMAGE_RELOAD_ATTEMPTS){onload.call(this);}};OpenLayers.Event.observe(this.imgDiv,"error",OpenLayers.Function.bind(onerror,this));},checkImgURL:function(){if(this.layer){var loaded=this.layerAlphaHack?this.imgDiv.firstChild.src:this.imgDiv.src;if(!OpenLayers.Util.isEquivalentUrl(loaded,this.url)){this.hide();}}},startTransition:function(){if(!this.backBufferTile||!this.backBufferTile.imgDiv){return;} +var ratio=1;if(this.backBufferTile.resolution){ratio=this.backBufferTile.resolution/this.layer.getResolution();} +if(ratio!=this.lastRatio){if(this.layer.transitionEffect=='resize'){var upperLeft=new OpenLayers.LonLat(this.backBufferTile.bounds.left,this.backBufferTile.bounds.top);var size=new OpenLayers.Size(this.backBufferTile.size.w*ratio,this.backBufferTile.size.h*ratio);var px=this.layer.map.getLayerPxFromLonLat(upperLeft);OpenLayers.Util.modifyDOMElement(this.backBufferTile.frame,null,px,size);var imageSize=this.backBufferTile.imageSize;imageSize=new OpenLayers.Size(imageSize.w*ratio,imageSize.h*ratio);var imageOffset=this.backBufferTile.imageOffset;if(imageOffset){imageOffset=new OpenLayers.Pixel(imageOffset.x*ratio,imageOffset.y*ratio);} +OpenLayers.Util.modifyDOMElement(this.backBufferTile.imgDiv,null,imageOffset,imageSize);this.backBufferTile.show();}}else{if(this.layer.singleTile){this.backBufferTile.show();}else{this.backBufferTile.hide();}} +this.lastRatio=ratio;},show:function(){this.frame.style.display='';if(OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1){if(navigator.userAgent.toLowerCase().indexOf("gecko")!=-1){this.frame.scrollLeft=this.frame.scrollLeft;}}},hide:function(){this.frame.style.display='none';},CLASS_NAME:"OpenLayers.Tile.Image"});OpenLayers.Tile.Image.useBlankTile=(OpenLayers.Util.getBrowserName()=="safari"||OpenLayers.Util.getBrowserName()=="opera");OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:OpenLayers.Popup.AnchoredBubble,popup:null,initialize:function(layer,lonlat,data){this.layer=layer;this.lonlat=lonlat;this.data=(data!=null)?data:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){if((this.layer!=null)&&(this.layer.map!=null)){if(this.popup!=null){this.layer.map.removePopup(this.popup);}} +this.layer=null;this.id=null;this.lonlat=null;this.data=null;if(this.marker!=null){this.destroyMarker(this.marker);this.marker=null;} +if(this.popup!=null){this.destroyPopup(this.popup);this.popup=null;}},onScreen:function(){var onScreen=false;if((this.layer!=null)&&(this.layer.map!=null)){var screenBounds=this.layer.map.getExtent();onScreen=screenBounds.containsLonLat(this.lonlat);} +return onScreen;},createMarker:function(){if(this.lonlat!=null){this.marker=new OpenLayers.Marker(this.lonlat,this.data.icon);} +return this.marker;},destroyMarker:function(){this.marker.destroy();},createPopup:function(closeBox){if(this.lonlat!=null){var id=this.id+"_popup";var anchor=(this.marker)?this.marker.icon:null;if(!this.popup){this.popup=new this.popupClass(id,this.lonlat,this.data.popupSize,this.data.popupContentHTML,anchor,closeBox);} +if(this.data.overflow!=null){this.popup.contentDiv.style.overflow=this.data.overflow;} +this.popup.feature=this;} +return this.popup;},destroyPopup:function(){if(this.popup){this.popup.feature=null;this.popup.destroy();this.popup=null;}},CLASS_NAME:"OpenLayers.Feature"});OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:true,'double':false,pixelTolerance:0,stopSingle:false,stopDouble:false,timerId:null,down:null,rightclickTimerId:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);if(this.pixelTolerance!=null){this.mousedown=function(evt){this.down=evt.xy;return true;};}},mousedown:null,mouseup:function(evt){var propagate=true;if(this.checkModifiers(evt)&&this.control.handleRightClicks&&OpenLayers.Event.isRightClick(evt)){propagate=this.rightclick(evt);} +return propagate;},rightclick:function(evt){if(this.passesTolerance(evt)){if(this.rightclickTimerId!=null){this.clearTimer();this.callback('dblrightclick',[evt]);return!this.stopDouble;}else{var clickEvent=this['double']?OpenLayers.Util.extend({},evt):this.callback('rightclick',[evt]);var delayedRightCall=OpenLayers.Function.bind(this.delayedRightCall,this,clickEvent);this.rightclickTimerId=window.setTimeout(delayedRightCall,this.delay);}} +return!this.stopSingle;},delayedRightCall:function(evt){this.rightclickTimerId=null;if(evt){this.callback('rightclick',[evt]);} +return!this.stopSingle;},dblclick:function(evt){if(this.passesTolerance(evt)){if(this["double"]){this.callback('dblclick',[evt]);} +this.clearTimer();} +return!this.stopDouble;},click:function(evt){if(this.passesTolerance(evt)){if(this.timerId!=null){this.clearTimer();}else{var clickEvent=this.single?OpenLayers.Util.extend({},evt):null;this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,clickEvent),this.delay);}} +return!this.stopSingle;},passesTolerance:function(evt){var passes=true;if(this.pixelTolerance!=null&&this.down){var dpx=Math.sqrt(Math.pow(this.down.x-evt.xy.x,2)+ +Math.pow(this.down.y-evt.xy.y,2));if(dpx>this.pixelTolerance){passes=false;}} +return passes;},clearTimer:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;} +if(this.rightclickTimerId!=null){window.clearTimeout(this.rightclickTimerId);this.rightclickTimerId=null;}},delayedCall:function(evt){this.timerId=null;if(evt){this.callback('click',[evt]);}},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.clearTimer();this.down=null;deactivated=true;} +return deactivated;},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:true,dragging:false,last:null,start:null,oldOnselectstart:null,interval:0,timeoutId:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},down:function(evt){},move:function(evt){},up:function(evt){},out:function(evt){},mousedown:function(evt){var propagate=true;this.dragging=false;if(this.checkModifiers(evt)&&OpenLayers.Event.isLeftClick(evt)){this.started=true;this.start=evt.xy;this.last=evt.xy;OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown");this.down(evt);this.callback("down",[evt.xy]);OpenLayers.Event.stop(evt);if(!this.oldOnselectstart){this.oldOnselectstart=(document.onselectstart)?document.onselectstart:function(){return true;};document.onselectstart=function(){return false;};} +propagate=!this.stopDown;}else{this.started=false;this.start=null;this.last=null;} +return propagate;},mousemove:function(evt){if(this.started&&!this.timeoutId&&(evt.xy.x!=this.last.x||evt.xy.y!=this.last.y)){if(this.interval>0){this.timeoutId=setTimeout(OpenLayers.Function.bind(this.removeTimeout,this),this.interval);} +this.dragging=true;this.move(evt);this.callback("move",[evt.xy]);if(!this.oldOnselectstart){this.oldOnselectstart=document.onselectstart;document.onselectstart=function(){return false;};} +this.last=this.evt.xy;} +return true;},removeTimeout:function(){this.timeoutId=null;},mouseup:function(evt){if(this.started){var dragged=(this.start!=this.last);this.started=false;this.dragging=false;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.up(evt);this.callback("up",[evt.xy]);if(dragged){this.callback("done",[evt.xy]);} +document.onselectstart=this.oldOnselectstart;} +return true;},mouseout:function(evt){if(this.started&&OpenLayers.Util.mouseLeft(evt,this.map.div)){var dragged=(this.start!=this.last);this.started=false;this.dragging=false;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.out(evt);this.callback("out",[]);if(dragged){this.callback("done",[evt.xy]);} +if(document.onselectstart){document.onselectstart=this.oldOnselectstart;}} +return true;},click:function(evt){return(this.start==this.last);},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragging=false;activated=true;} +return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.started=false;this.dragging=false;this.start=null;this.last=null;deactivated=true;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");} +return deactivated;},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{EVENTMAP:{'click':{'in':'click','out':'clickout'},'mousemove':{'in':'over','out':'out'},'dblclick':{'in':'dblclick','out':null},'mousedown':{'in':null,'out':null},'mouseup':{'in':null,'out':null}},feature:null,lastFeature:null,down:null,up:null,clickTolerance:4,geometryTypes:null,stopClick:true,stopDown:true,stopUp:false,initialize:function(control,layer,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.layer=layer;},mousedown:function(evt){this.down=evt.xy;return this.handle(evt)?!this.stopDown:true;},mouseup:function(evt){this.up=evt.xy;return this.handle(evt)?!this.stopUp:true;},click:function(evt){return this.handle(evt)?!this.stopClick:true;},mousemove:function(evt){if(!this.callbacks['over']&&!this.callbacks['out']){return true;} +this.handle(evt);return true;},dblclick:function(evt){return!this.handle(evt);},geometryTypeMatches:function(feature){return this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)>-1;},handle:function(evt){if(this.feature&&!this.feature.layer){this.feature=null;} +var type=evt.type;var handled=false;var previouslyIn=!!(this.feature);var click=(type=="click"||type=="dblclick");this.feature=this.layer.getFeatureFromEvent(evt);if(this.feature&&!this.feature.layer){this.feature=null;} +if(this.lastFeature&&!this.lastFeature.layer){this.lastFeature=null;} +if(this.feature){var inNew=(this.feature!=this.lastFeature);if(this.geometryTypeMatches(this.feature)){if(previouslyIn&&inNew){if(this.lastFeature){this.triggerCallback(type,'out',[this.lastFeature]);} +this.triggerCallback(type,'in',[this.feature]);}else if(!previouslyIn||click){this.triggerCallback(type,'in',[this.feature]);} +this.lastFeature=this.feature;handled=true;}else{if(this.lastFeature&&(previouslyIn&&inNew||click)){this.triggerCallback(type,'out',[this.lastFeature]);} +this.feature=null;}}else{if(this.lastFeature&&(previouslyIn||click)){this.triggerCallback(type,'out',[this.lastFeature]);}} +return handled;},triggerCallback:function(type,mode,args){var key=this.EVENTMAP[type][mode];if(key){if(type=='click'&&this.up&&this.down){var dpx=Math.sqrt(Math.pow(this.up.x-this.down.x,2)+ +Math.pow(this.up.y-this.down.y,2));if(dpx<=this.clickTolerance){this.callback(key,args);}}else{this.callback(key,args);}}},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.moveLayerToTop();this.map.events.on({"removelayer":this.handleMapEvents,"changelayer":this.handleMapEvents,scope:this});activated=true;} +return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.moveLayerBack();this.feature=null;this.lastFeature=null;this.down=null;this.up=null;this.map.events.un({"removelayer":this.handleMapEvents,"changelayer":this.handleMapEvents,scope:this});deactivated=true;} +return deactivated;},handleMapEvents:function(evt){if(!evt.property||evt.property=="order"){this.moveLayerToTop();}},moveLayerToTop:function(){var index=Math.max(this.map.Z_INDEX_BASE['Feature']-1,this.layer.getZIndex())+1;this.layer.setZIndex(index);},moveLayerBack:function(){var index=this.layer.getZIndex()-1;if(index>=this.map.Z_INDEX_BASE['Feature']){this.layer.setZIndex(index);}else{this.map.setLayerZIndex(this.layer,this.map.getLayerIndex(this.layer));}},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Handler.MouseWheel=OpenLayers.Class(OpenLayers.Handler,{wheelListener:null,mousePosition:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.wheelListener=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this);},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.wheelListener=null;},onWheelEvent:function(e){if(!this.map||!this.checkModifiers(e)){return;} +var overScrollableDiv=false;var overLayerDiv=false;var overMapDiv=false;var elem=OpenLayers.Event.element(e);while((elem!=null)&&!overMapDiv&&!overScrollableDiv){if(!overScrollableDiv){try{if(elem.currentStyle){overflow=elem.currentStyle["overflow"];}else{var style=document.defaultView.getComputedStyle(elem,null);var overflow=style.getPropertyValue("overflow");} +overScrollableDiv=(overflow&&(overflow=="auto")||(overflow=="scroll"));}catch(err){}} +if(!overLayerDiv){for(var i=0,len=this.map.layers.length;i=this.minResolution)&&(resolution<=this.maxResolution));}} +return inRange;},setIsBaseLayer:function(isBaseLayer){if(isBaseLayer!=this.isBaseLayer){this.isBaseLayer=isBaseLayer;if(this.map!=null){this.map.events.triggerEvent("changebaselayer",{layer:this});}}},initResolutions:function(){var props=new Array('projection','units','scales','resolutions','maxScale','minScale','maxResolution','minResolution','minExtent','maxExtent','numZoomLevels','maxZoomLevel');var notScaleProps=['projection','units'];var useInRange=false;var confProps={};for(var i=0,len=props.length;i1){base=Math.pow((confProps.maxResolution/confProps.minResolution),(1/(confProps.numZoomLevels-1)));} +for(var i=0;i=resolution){highRes=res;lowZoom=i;} +if(res<=resolution){lowRes=res;highZoom=i;break;}} +var dRes=highRes-lowRes;if(dRes>0){zoom=lowZoom+((highRes-resolution)/dRes);}else{zoom=lowZoom;}}else{var diff;var minDiff=Number.POSITIVE_INFINITY;for(var i=0,len=this.resolutions.length;iminDiff){break;} +minDiff=diff;}else{if(this.resolutions[i]cXMLHttpRequest.UNSENT) +this._aborted=true;this._object.abort();fCleanTransport(this);};cXMLHttpRequest.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders();};cXMLHttpRequest.prototype.getResponseHeader=function(sName){return this._object.getResponseHeader(sName);};cXMLHttpRequest.prototype.setRequestHeader=function(sName,sValue){if(!this._headers) +this._headers={};this._headers[sName]=sValue;return this._object.setRequestHeader(sName,sValue);};cXMLHttpRequest.prototype.toString=function(){return'['+"object"+' '+"XMLHttpRequest"+']';};cXMLHttpRequest.toString=function(){return'['+"XMLHttpRequest"+']';};function fReadyStateChange(oRequest){if(oRequest.onreadystatechange) +oRequest.onreadystatechange.apply(oRequest);if(cXMLHttpRequest.onreadystatechange) +cXMLHttpRequest.onreadystatechange.apply(oRequest);};function fGetDocument(oRequest){var oDocument=oRequest.responseXML;if(bIE&&oDocument&&!oDocument.documentElement&&oRequest.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/)){oDocument=new ActiveXObject('Microsoft.XMLDOM');oDocument.loadXML(oRequest.responseText);} +if(oDocument) +if((bIE&&oDocument.parseError!=0)||(oDocument.documentElement&&oDocument.documentElement.tagName=="parsererror")) +return null;return oDocument;};function fSynchronizeValues(oRequest){try{oRequest.responseText=oRequest._object.responseText;}catch(e){} +try{oRequest.responseXML=fGetDocument(oRequest._object);}catch(e){} +try{oRequest.status=oRequest._object.status;}catch(e){} +try{oRequest.statusText=oRequest._object.statusText;}catch(e){}};function fCleanTransport(oRequest){oRequest._object.onreadystatechange=new window.Function;delete oRequest._headers;};if(!window.Function.prototype.apply){window.Function.prototype.apply=function(oRequest,oArguments){if(!oArguments) +oArguments=[];oRequest.__func=this;oRequest.__func(oArguments[0],oArguments[1],oArguments[2],oArguments[3],oArguments[4]);delete oRequest.__func;};};OpenLayers.Request.XMLHttpRequest=cXMLHttpRequest;})();OpenLayers.Control.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:false,interval:25,draw:function(){this.handler=new OpenLayers.Handler.Drag(this,{"move":this.panMap,"done":this.panMapDone},{interval:this.interval});},panMap:function(xy){this.panned=true;this.map.pan(this.handler.last.x-xy.x,this.handler.last.y-xy.y,{dragging:this.handler.dragging,animate:false});},panMapDone:function(xy){if(this.panned){this.panMap(xy);this.panned=false;}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.State={UNKNOWN:'Unknown',INSERT:'Insert',UPDATE:'Update',DELETE:'Delete'};OpenLayers.Feature.Vector=OpenLayers.Class(OpenLayers.Feature,{fid:null,geometry:null,attributes:null,bounds:null,state:null,style:null,renderIntent:"default",initialize:function(geometry,attributes,style){OpenLayers.Feature.prototype.initialize.apply(this,[null,null,attributes]);this.lonlat=null;this.geometry=geometry?geometry:null;this.state=null;this.attributes={};if(attributes){this.attributes=OpenLayers.Util.extend(this.attributes,attributes);} +this.style=style?style:null;},destroy:function(){if(this.layer){this.layer.removeFeatures(this);this.layer=null;} +this.geometry=null;OpenLayers.Feature.prototype.destroy.apply(this,arguments);},clone:function(){return new OpenLayers.Feature.Vector(this.geometry?this.geometry.clone():null,this.attributes,this.style);},onScreen:function(boundsOnly){var onScreen=false;if(this.layer&&this.layer.map){var screenBounds=this.layer.map.getExtent();if(boundsOnly){var featureBounds=this.geometry.getBounds();onScreen=screenBounds.intersectsBounds(featureBounds);}else{var screenPoly=screenBounds.toGeometry();onScreen=screenPoly.intersects(this.geometry);}} +return onScreen;},createMarker:function(){return null;},destroyMarker:function(){},createPopup:function(){return null;},atPoint:function(lonlat,toleranceLon,toleranceLat){var atPoint=false;if(this.geometry){atPoint=this.geometry.atPoint(lonlat,toleranceLon,toleranceLat);} +return atPoint;},destroyPopup:function(){},move:function(location){if(!this.layer||!this.geometry.move){return;} +var pixel;if(location.CLASS_NAME=="OpenLayers.LonLat"){pixel=this.layer.getViewPortPxFromLonLat(location);}else{pixel=location;} +var lastPixel=this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat());var res=this.layer.map.getResolution();this.geometry.move(res*(pixel.x-lastPixel.x),res*(lastPixel.y-pixel.y));this.layer.drawFeature(this);return lastPixel;},toState:function(state){if(state==OpenLayers.State.UPDATE){switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=state;break;case OpenLayers.State.UPDATE:case OpenLayers.State.INSERT:break;}}else if(state==OpenLayers.State.INSERT){switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=state;break;}}else if(state==OpenLayers.State.DELETE){switch(this.state){case OpenLayers.State.INSERT:break;case OpenLayers.State.DELETE:break;case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=state;break;}}else if(state==OpenLayers.State.UNKNOWN){this.state=state;}},CLASS_NAME:"OpenLayers.Feature.Vector"});OpenLayers.Feature.Vector.style={'default':{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'select':{fillColor:"blue",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer"},'temporary':{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'delete':{display:"none"}};OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:'olHandlerBoxZoomBox',boxCharacteristics:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);var callbacks={"down":this.startBox,"move":this.moveBox,"out":this.removeBox,"up":this.endBox};this.dragHandler=new OpenLayers.Handler.Drag(this,callbacks,{keyMask:this.keyMask});},setMap:function(map){OpenLayers.Handler.prototype.setMap.apply(this,arguments);if(this.dragHandler){this.dragHandler.setMap(map);}},startBox:function(xy){this.zoomBox=OpenLayers.Util.createDiv('zoomBox',this.dragHandler.start);this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.viewPortDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.viewPortDiv,"olDrawBox");},moveBox:function(xy){var startX=this.dragHandler.start.x;var startY=this.dragHandler.start.y;var deltaX=Math.abs(startX-xy.x);var deltaY=Math.abs(startY-xy.y);this.zoomBox.style.width=Math.max(1,deltaX)+"px";this.zoomBox.style.height=Math.max(1,deltaY)+"px";this.zoomBox.style.left=xy.xstartX){this.zoomBox.style.width=Math.max(1,deltaX-box.xOffset)+"px";} +if(xy.y>startY){this.zoomBox.style.height=Math.max(1,deltaY-box.yOffset)+"px";}}},endBox:function(end){var result;if(Math.abs(this.dragHandler.start.x-end.x)>5||Math.abs(this.dragHandler.start.y-end.y)>5){var start=this.dragHandler.start;var top=Math.min(start.y,end.y);var bottom=Math.max(start.y,end.y);var left=Math.min(start.x,end.x);var right=Math.max(start.x,end.x);result=new OpenLayers.Bounds(left,bottom,right,top);}else{result=this.dragHandler.start.clone();} +this.removeBox();this.callback("done",[result]);},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.zoomBox=null;this.boxCharacteristics=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDrawBox");},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragHandler.activate();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.dragHandler.deactivate();return true;}else{return false;}},getBoxCharacteristics:function(){if(!this.boxCharacteristics){var xOffset=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width"))+parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width"))+1;var yOffset=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-top-width"))+parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"))+1;var newBoxModel=OpenLayers.Util.getBrowserName()=="msie"?document.compatMode!="BackCompat":true;this.boxCharacteristics={xOffset:xOffset,yOffset:yOffset,newBoxModel:newBoxModel};} +return this.boxCharacteristics;},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Layer.HTTPRequest=OpenLayers.Class(OpenLayers.Layer,{URL_HASH_FACTOR:(Math.sqrt(5)-1)/2,url:null,params:null,reproject:false,initialize:function(name,url,params,options){var newArguments=arguments;newArguments=[name,options];OpenLayers.Layer.prototype.initialize.apply(this,newArguments);this.url=url;this.params=OpenLayers.Util.extend({},params);},destroy:function(){this.url=null;this.params=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.HTTPRequest(this.name,this.url,this.params,this.options);} +obj=OpenLayers.Layer.prototype.clone.apply(this,[obj]);return obj;},setUrl:function(newUrl){this.url=newUrl;},mergeNewParams:function(newParams){this.params=OpenLayers.Util.extend(this.params,newParams);return this.redraw();},redraw:function(force){if(force){return this.mergeNewParams({"_olSalt":Math.random()});}else{return OpenLayers.Layer.prototype.redraw.apply(this,[]);}},selectUrl:function(paramString,urls){var product=1;for(var i=0,len=paramString.length;i0){var feature=this.features.shift();feature.destroy();}},CLASS_NAME:"OpenLayers.Tile.WFS"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:false,alwaysZoom:false,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask});},zoomBox:function(position){if(position instanceof OpenLayers.Bounds){if(!this.out){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));var bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);}else{var pixWidth=Math.abs(position.right-position.left);var pixHeight=Math.abs(position.top-position.bottom);var zoomFactor=Math.min((this.map.size.h/pixHeight),(this.map.size.w/pixWidth));var extent=this.map.getExtent();var center=this.map.getLonLatFromPixel(position.getCenterPixel());var xmin=center.lon-(extent.getWidth()/2)*zoomFactor;var xmax=center.lon+(extent.getWidth()/2)*zoomFactor;var ymin=center.lat-(extent.getHeight()/2)*zoomFactor;var ymax=center.lat+(extent.getHeight()/2)*zoomFactor;var bounds=new OpenLayers.Bounds(xmin,ymin,xmax,ymax);} +var lastZoom=this.map.getZoom();this.map.zoomToExtent(bounds);if(lastZoom==this.map.getZoom()&&this.alwaysZoom==true){this.map.zoomTo(lastZoom+(this.out?-1:1));}}else{if(!this.out){this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()+1);}else{this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()-1);}}},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(options){this.regExes={'typeStr':/^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,'spaces':/\s+/,'parenComma':/\)\s*,\s*\(/,'doubleParenComma':/\)\s*\)\s*,\s*\(\s*\(/,'trimParens':/^\s*\(?(.*?)\)?\s*$/};OpenLayers.Format.prototype.initialize.apply(this,[options]);},read:function(wkt){var features,type,str;var matches=this.regExes.typeStr.exec(wkt);if(matches){type=matches[1].toLowerCase();str=matches[2];if(this.parse[type]){features=this.parse[type].apply(this,[str]);} +if(this.internalProjection&&this.externalProjection){if(features&&features.CLASS_NAME=="OpenLayers.Feature.Vector"){features.geometry.transform(this.externalProjection,this.internalProjection);}else if(features&&type!="geometrycollection"&&typeof features=="object"){for(var i=0,len=features.length;i0){pieces.push(',');} +geometry=collection[i].geometry;type=geometry.CLASS_NAME.split('.')[2].toLowerCase();if(!this.extract[type]){return null;} +if(this.internalProjection&&this.externalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);} +data=this.extract[type].apply(this,[geometry]);pieces.push(type.toUpperCase()+'('+data+')');} +if(isCollection){pieces.push(')');} +return pieces.join('');},extract:{'point':function(point){return point.x+' '+point.y;},'multipoint':function(multipoint){var array=[];for(var i=0,len=multipoint.components.length;i=bounds.bottom-tilelat*this.buffer)||rowidx=0)&&(testCell=0)){tile=this.grid[testRow][testCell];} +if((tile!=null)&&(!tile.queued)){tileQueue.unshift(tile);tile.queued=true;directionsTried=0;iRow=testRow;iCell=testCell;}else{direction=(direction+1)%4;directionsTried++;}} +for(var i=0,len=tileQueue.length;i-this.tileSize.w*(buffer-1)){this.shiftColumn(true);}else if(tlViewPort.x<-this.tileSize.w*buffer){this.shiftColumn(false);}else if(tlViewPort.y>-this.tileSize.h*(buffer-1)){this.shiftRow(true);}else if(tlViewPort.y<-this.tileSize.h*buffer){this.shiftRow(false);}else{break;}};},shiftRow:function(prepend){var modelRowIndex=(prepend)?0:(this.grid.length-1);var grid=this.grid;var modelRow=grid[modelRowIndex];var resolution=this.map.getResolution();var deltaY=(prepend)?-this.tileSize.h:this.tileSize.h;var deltaLat=resolution*-deltaY;var row=(prepend)?grid.pop():grid.shift();for(var i=0,len=modelRow.length;irows){var row=this.grid.pop();for(var i=0,l=row.length;icolumns){for(var i=0,l=this.grid.length;i0){appliedRules=true;for(var i=0,len=elseRules.length;i0&&appliedRules==false){style.display="none";} +return style;},applySymbolizer:function(rule,style,feature){var symbolizerPrefix=feature.geometry?this.getSymbolizerPrefix(feature.geometry):OpenLayers.Style.SYMBOLIZER_PREFIXES[0];var symbolizer=rule.symbolizer[symbolizerPrefix]||rule.symbolizer;if(this.defaultsPerSymbolizer===true){var defaults=this.defaultStyle;OpenLayers.Util.applyDefaults(symbolizer,{pointRadius:defaults.pointRadius});if(symbolizer.stroke===true||symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{strokeWidth:defaults.strokeWidth,strokeColor:defaults.strokeColor,strokeOpacity:defaults.strokeOpacity,strokeDashstyle:defaults.strokeDashstyle,strokeLinecap:defaults.strokeLinecap});} +if(symbolizer.fill===true||symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{fillColor:defaults.fillColor,fillOpacity:defaults.fillOpacity});} +if(symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{pointRadius:this.defaultStyle.pointRadius,externalGraphic:this.defaultStyle.externalGraphic,graphicName:this.defaultStyle.graphicName,graphicOpacity:this.defaultStyle.graphicOpacity,graphicWidth:this.defaultStyle.graphicWidth,graphicHeight:this.defaultStyle.graphicHeight,graphicXOffset:this.defaultStyle.graphicXOffset,graphicYOffset:this.defaultStyle.graphicYOffset});}} +return this.createLiterals(OpenLayers.Util.extend(style,symbolizer),feature);},createLiterals:function(style,feature){var context=this.context||feature.attributes||feature.data;for(var i in this.propertyStyles){style[i]=OpenLayers.Style.createLiteral(style[i],context,feature);} +return style;},findPropertyStyles:function(){var propertyStyles={};var style=this.defaultStyle;this.addPropertyStyles(propertyStyles,style);var rules=this.rules;var symbolizer,value;for(var i=0,len=rules.length;i=0&&along1<=1&&along2>=0&&along2<=1){if(!point){intersection=true;}else{var x=seg1.x1+(along1*x12_11);var y=seg1.y1+(along1*y12_11);intersection=new OpenLayers.Geometry.Point(x,y);}}} +if(tolerance){var dist;if(intersection){if(point){var segs=[seg1,seg2];var seg,x,y;outer:for(var i=0;i<2;++i){seg=segs[i];for(var j=1;j<3;++j){x=seg["x"+j];y=seg["y"+j];dist=Math.sqrt(Math.pow(x-intersection.x,2)+ +Math.pow(y-intersection.y,2));if(dist=1.0){x=x2;y=y2;}else{x=x1+along*dx;y=y1+along*dy;} +return{distance:Math.sqrt(Math.pow(x-x0,2)+Math.pow(y-y0,2)),x:x,y:y};};OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,sphericalMercator:false,initialize:function(name,url,options){if(options&&options.sphericalMercator||this.sphericalMercator){options=OpenLayers.Util.extend({maxExtent:new OpenLayers.Bounds(-128*156543.0339,-128*156543.0339,128*156543.0339,128*156543.0339),maxResolution:156543.0339,numZoomLevels:19,units:"m",projection:"EPSG:900913"},options);} +url=url||this.url;name=name||this.name;var newArguments=[name,url,{},options];OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.XYZ(this.name,this.url,this.options);} +obj=OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this,[obj]);if(this.tileSize!=null){obj.tileSize=this.tileSize.clone();} +obj.grid=[];return obj;},getURL:function(bounds){var res=this.map.getResolution();var x=Math.round((bounds.left-this.maxExtent.left)/(res*this.tileSize.w));var y=Math.round((this.maxExtent.top-bounds.top)/(res*this.tileSize.h));var z=this.map.getZoom();var limit=Math.pow(2,z);var url=this.url;var s=''+x+y+z;if(url instanceof Array) +{url=this.selectUrl(s,url);} +var path=OpenLayers.String.format(url,{'x':x,'y':y,'z':z});return path;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.bottom);}},CLASS_NAME:"OpenLayers.Layer.XYZ"});OpenLayers.Layer.OSM=OpenLayers.Class(OpenLayers.Layer.XYZ,{name:"OpenStreetMap",attribution:"Data CC-By-SA by OpenStreetMap",sphericalMercator:true,url:'http://tile.openstreetmap.org/${z}/${x}/${y}.png',CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.StyleMap=OpenLayers.Class({styles:null,extendDefault:true,initialize:function(style,options){this.styles={"default":new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),"select":new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]),"temporary":new OpenLayers.Style(OpenLayers.Feature.Vector.style["temporary"]),"delete":new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"])};if(style instanceof OpenLayers.Style){this.styles["default"]=style;this.styles["select"]=style;this.styles["temporary"]=style;this.styles["delete"]=style;}else if(typeof style=="object"){for(var key in style){if(style[key]instanceof OpenLayers.Style){this.styles[key]=style[key];}else if(typeof style[key]=="object"){this.styles[key]=new OpenLayers.Style(style[key]);}else{this.styles["default"]=new OpenLayers.Style(style);this.styles["select"]=new OpenLayers.Style(style);this.styles["temporary"]=new OpenLayers.Style(style);this.styles["delete"]=new OpenLayers.Style(style);break;}}} +OpenLayers.Util.extend(this,options);},destroy:function(){for(var key in this.styles){this.styles[key].destroy();} +this.styles=null;},createSymbolizer:function(feature,intent){if(!feature){feature=new OpenLayers.Feature.Vector();} +if(!this.styles[intent]){intent="default";} +feature.renderIntent=intent;var defaultSymbolizer={};if(this.extendDefault&&intent!="default"){defaultSymbolizer=this.styles["default"].createSymbolizer(feature);} +return OpenLayers.Util.extend(defaultSymbolizer,this.styles[intent].createSymbolizer(feature));},addUniqueValueRules:function(renderIntent,property,symbolizers,context){var rules=[];for(var value in symbolizers){rules.push(new OpenLayers.Rule({symbolizer:symbolizers[value],context:context,filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:property,value:value})}));} +this.styles[renderIntent].addRules(rules);},CLASS_NAME:"OpenLayers.StyleMap"});OpenLayers.Geometry.Collection=OpenLayers.Class(OpenLayers.Geometry,{components:null,componentTypes:null,initialize:function(components){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.components=[];if(components!=null){this.addComponents(components);}},destroy:function(){this.components.length=0;this.components=null;},clone:function(){var geometry=eval("new "+this.CLASS_NAME+"()");for(var i=0,len=this.components.length;i0){this.setBounds(this.components[0].getBounds());for(var i=1,len=this.components.length;i-1)){if(index!=null&&(index=0;--i){this.removeComponent(components[i]);}},removeComponent:function(component){OpenLayers.Util.removeItem(this.components,component);this.clearBounds();},getLength:function(){var length=0.0;for(var i=0,len=this.components.length;i=0;i--){if(i!=0&&features[i-1].geometry){this.renderer.locked=true;}else{this.renderer.locked=false;} +var feature=features[i];delete this.unrenderedFeatures[feature.id];if(notify){this.events.triggerEvent("beforefeatureremoved",{feature:feature});} +this.features=OpenLayers.Util.removeItem(this.features,feature);feature.layer=null;if(feature.geometry){this.renderer.eraseFeatures(feature);} +if(OpenLayers.Util.indexOf(this.selectedFeatures,feature)!=-1){OpenLayers.Util.removeItem(this.selectedFeatures,feature);} +if(notify){this.events.triggerEvent("featureremoved",{feature:feature});}} +if(notify){this.events.triggerEvent("featuresremoved",{features:features});}},destroyFeatures:function(features,options){var all=(features==undefined);if(all){features=this.features;} +if(features){this.removeFeatures(features,options);for(var i=features.length-1;i>=0;i--){features[i].destroy();}}},drawFeature:function(feature,style){if(!this.drawn){return} +if(typeof style!="object"){if(!style&&feature.state===OpenLayers.State.DELETE){style="delete";} +var renderIntent=style||feature.renderIntent;style=feature.style||this.style;if(!style){style=this.styleMap.createSymbolizer(feature,renderIntent);}} +if(!this.renderer.drawFeature(feature,style)){this.unrenderedFeatures[feature.id]=feature;}else{delete this.unrenderedFeatures[feature.id];};},eraseFeatures:function(features){this.renderer.eraseFeatures(features);},getFeatureFromEvent:function(evt){if(!this.renderer){OpenLayers.Console.error(OpenLayers.i18n("getFeatureError"));return null;} +var featureId=this.renderer.getFeatureIdFromEvent(evt);return this.getFeatureById(featureId);},getFeatureById:function(featureId){var feature=null;for(var i=0,len=this.features.length;i0)){maxExtent=new OpenLayers.Bounds();for(var i=0,len=this.features.length;i=0;--i){feature=layer.selectedFeatures[i];if(!options||options.except!=feature){this.unselect(feature);}}}},clickFeature:function(feature){if(!this.hover){var selected=(OpenLayers.Util.indexOf(feature.layer.selectedFeatures,feature)>-1);if(selected){if(this.toggleSelect()){this.unselect(feature);}else if(!this.multipleSelect()){this.unselectAll({except:feature});}}else{if(!this.multipleSelect()){this.unselectAll({except:feature});} +this.select(feature);}}},multipleSelect:function(){return this.multiple||(this.handlers.feature.evt&&this.handlers.feature.evt[this.multipleKey]);},toggleSelect:function(){return this.toggle||(this.handlers.feature.evt&&this.handlers.feature.evt[this.toggleKey]);},clickoutFeature:function(feature){if(!this.hover&&this.clickout){this.unselectAll();}},overFeature:function(feature){var layer=feature.layer;if(this.hover){if(this.highlightOnly){this.highlight(feature);}else if(OpenLayers.Util.indexOf(layer.selectedFeatures,feature)==-1){this.select(feature);}}},outFeature:function(feature){if(this.hover){if(this.highlightOnly){if(feature._lastHighlighter==this.id){if(feature._prevHighlighter&&feature._prevHighlighter!=this.id){delete feature._lastHighlighter;var control=this.map.getControl(feature._prevHighlighter);if(control){control.highlight(feature);}}else{this.unhighlight(feature);}}}else{this.unselect(feature);}}},highlight:function(feature){var layer=feature.layer;var cont=this.events.triggerEvent("beforefeaturehighlighted",{feature:feature});if(cont!==false){feature._prevHighlighter=feature._lastHighlighter;feature._lastHighlighter=this.id;var style=this.selectStyle||this.renderIntent;layer.drawFeature(feature,style);this.events.triggerEvent("featurehighlighted",{feature:feature});}},unhighlight:function(feature){var layer=feature.layer;feature._lastHighlighter=feature._prevHighlighter;delete feature._prevHighlighter;layer.drawFeature(feature,feature.style||feature.layer.style||"default");this.events.triggerEvent("featureunhighlighted",{feature:feature});},select:function(feature){var cont=this.onBeforeSelect.call(this.scope,feature);var layer=feature.layer;if(cont!==false){cont=layer.events.triggerEvent("beforefeatureselected",{feature:feature});if(cont!==false){layer.selectedFeatures.push(feature);this.highlight(feature);layer.events.triggerEvent("featureselected",{feature:feature});this.onSelect.call(this.scope,feature);}}},unselect:function(feature){var layer=feature.layer;this.unhighlight(feature);OpenLayers.Util.removeItem(layer.selectedFeatures,feature);layer.events.triggerEvent("featureunselected",{feature:feature});this.onUnselect.call(this.scope,feature);},selectBox:function(position){if(position instanceof OpenLayers.Bounds){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));var bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);if(!this.multipleSelect()){this.unselectAll();} +var prevMultiple=this.multiple;this.multiple=true;var layers=this.layers||[this.layer];var layer;for(var l=0;l-1){if(bounds.toGeometry().intersects(feature.geometry)){if(OpenLayers.Util.indexOf(layer.selectedFeatures,feature)==-1){this.select(feature);}}}}} +this.multiple=prevMultiple;}},setMap:function(map){this.handlers.feature.setMap(map);if(this.box){this.handlers.box.setMap(map);} +OpenLayers.Control.prototype.setMap.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Geometry.Curve=OpenLayers.Class(OpenLayers.Geometry.MultiPoint,{componentTypes:["OpenLayers.Geometry.Point"],initialize:function(points){OpenLayers.Geometry.MultiPoint.prototype.initialize.apply(this,arguments);},getLength:function(){var length=0.0;if(this.components&&(this.components.length>1)){for(var i=1,len=this.components.length;i1)){var p1,p2;for(var i=1,len=geom.components.length;i2)){OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);}},intersects:function(geometry){var intersect=false;var type=geometry.CLASS_NAME;if(type=="OpenLayers.Geometry.LineString"||type=="OpenLayers.Geometry.LinearRing"||type=="OpenLayers.Geometry.Point"){var segs1=this.getSortedSegments();var segs2;if(type=="OpenLayers.Geometry.Point"){segs2=[{x1:geometry.x,y1:geometry.y,x2:geometry.x,y2:geometry.y}];}else{segs2=geometry.getSortedSegments();} +var seg1,seg1x1,seg1x2,seg1y1,seg1y2,seg2,seg2y1,seg2y2;outer:for(var i=0,len=segs1.length;iseg1x2){break;} +if(seg2.x2Math.max(seg1y1,seg1y2)){continue;} +if(Math.max(seg2y1,seg2y2)0){var xDir=seg.x10){lines.unshift(j,1);Array.prototype.splice.apply(targetParts,lines);j+=lines.length-2;} +if(mutual){for(var k=0,len=splits.points.length;k0&&points.length>0){points.push(vert2.clone());sourceParts.push(new OpenLayers.Geometry.LineString(points));}}else{results=target.splitWith(this,options);} +if(targetParts&&targetParts.length>1){targetSplit=true;}else{targetParts=[];} +if(sourceParts&&sourceParts.length>1){sourceSplit=true;}else{sourceParts=[];} +if(targetSplit||sourceSplit){if(mutual){results=[sourceParts,targetParts];}else{results=targetParts;}} +return results;},splitWith:function(geometry,options){return geometry.split(this,options);},getVertices:function(nodes){var vertices;if(nodes===true){vertices=[this.components[0],this.components[this.components.length-1]];}else if(nodes===false){vertices=this.components.slice(1,this.components.length-1);}else{vertices=this.components.slice();} +return vertices;},distanceTo:function(geometry,options){var edge=!(options&&options.edge===false);var details=edge&&options&&options.details;var result,best={};var min=Number.POSITIVE_INFINITY;if(geometry instanceof OpenLayers.Geometry.Point){var segs=this.getSortedSegments();var x=geometry.x;var y=geometry.y;var seg;for(var i=0,len=segs.length;ix&&((y>seg.y1&&yseg.y2))){break;}}} +if(details){best={distance:best.distance,x0:best.x,y0:best.y,x1:x,y1:y};}else{best=best.distance;}}else if(geometry instanceof OpenLayers.Geometry.LineString){var segs0=this.getSortedSegments();var segs1=geometry.getSortedSegments();var seg0,seg1,intersection,x0,y0;var len1=segs1.length;var interOptions={point:true};outer:for(var i=0,len=segs0.length;i4){this.components.pop();OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);var firstPoint=this.components[0];OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[firstPoint]);}},move:function(x,y){for(var i=0,len=this.components.length;i2)){var sumX=0.0;var sumY=0.0;for(var i=0;i2)){var sum=0.0;for(var i=0,len=this.components.length;i2){var p1,p2;for(var i=0;i=x1&&px<=x2)||x1>=x2&&(px<=x1&&px>=x2)){crosses=-1;break;}} +continue;} +cx=approx(getX(py,x1,y1,x2,y2),digs);if(cx==px){if(y1=y1&&py<=y2)||y1>y2&&(py<=y1&&py>=y2)){crosses=-1;break;}} +if(cx<=px){continue;} +if(x1!=x2&&(cxMath.max(x1,x2))){continue;} +if(y1=y1&&pyy2&&(py=y2)){++crosses;}} +var contained=(crosses==-1)?1:!!(crosses&1);return contained;},intersects:function(geometry){var intersect=false;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){intersect=this.containsPoint(geometry);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LineString"){intersect=geometry.intersects(this);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LinearRing"){intersect=OpenLayers.Geometry.LineString.prototype.intersects.apply(this,[geometry]);}else{for(var i=0,len=geometry.components.length;i0)){area+=Math.abs(this.components[0].getArea());for(var i=1,len=this.components.length;i0)){area+=Math.abs(this.components[0].getGeodesicArea(projection));for(var i=1,len=this.components.length;i0){contained=this.components[0].containsPoint(point);if(contained!==1){if(contained&&numRings>1){var hole;for(var i=1;i=this.maxDepth){return false;} +var newOptions=OpenLayers.Util.extend({},options);newOptions.depth++;for(var i=0,len=nodes.length;i0){var parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}}else{OpenLayers.Console.error(OpenLayers.i18n("unsupportedGeometryType",{'geomType':type}));} +break;}} +var attributes;if(this.extractAttributes){attributes=this.parseAttributes(node);} +var feature=new OpenLayers.Feature.Vector(geometry,attributes);var fid=node.getAttribute("id")||node.getAttribute("name");if(fid!=null){feature.fid=fid;} +return feature;},getStyle:function(styleUrl,options){var styleBaseUrl=OpenLayers.Util.removeTail(styleUrl);var newOptions=OpenLayers.Util.extend({},options);newOptions.depth++;newOptions.styleBaseUrl=styleBaseUrl;if(!this.styles[styleUrl]&&!OpenLayers.String.startsWith(styleUrl,"#")&&newOptions.depth<=this.maxDepth&&!this.fetched[styleBaseUrl]){var data=this.fetchLink(styleBaseUrl);if(data){this.parseData(data,newOptions);}} +var style=OpenLayers.Util.extend({},this.styles[styleUrl]);return style;},parseGeometry:{point:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var coords=[];if(nodeList.length>0){var coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.removeSpace,"");coords=coordString.split(",");} +var point=null;if(coords.length>1){if(coords.length==2){coords[2]=null;} +point=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{throw"Bad coordinate string: "+coordString;} +return point;},linestring:function(node,ring){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var line=null;if(nodeList.length>0){var coordString=this.getChildValue(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coordString=coordString.replace(this.regExes.trimComma,",");var pointList=coordString.split(this.regExes.splitSpace);var numPoints=pointList.length;var points=new Array(numPoints);var coords,numCoords;for(var i=0;i1){if(coords.length==2){coords[2]=null;} +points[i]=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{throw"Bad LineString point coordinates: "+ +pointList[i];}} +if(numPoints){if(ring){line=new OpenLayers.Geometry.LinearRing(points);}else{line=new OpenLayers.Geometry.LineString(points);}}else{throw"Bad LineString coordinates: "+coordString;}} +return line;},polygon:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"LinearRing");var numRings=nodeList.length;var components=new Array(numRings);if(numRings>0){var ring;for(var i=0,len=nodeList.length;i 1: + configFilename = sys.argv[1] + extension = configFilename[-4:] + + if extension != ".cfg": + configFilename = sys.argv[1] + ".cfg" + +if len(sys.argv) > 2: + outputFilename = sys.argv[2] + +print "Merging libraries." +merged = mergejs.run(sourceDirectory, None, configFilename) +if have_compressor == "jsmin": + print "Compressing using jsmin." + minimized = jsmin.jsmin(merged) +elif have_compressor == "minimize": + print "Compressing using minimize." + minimized = minimize.minimize(merged) +else: # fallback + print "Not compressing." + minimized = merged +print "Adding license file." +minimized = file("license.txt").read() + minimized + +print "Writing to %s." % outputFilename +file(outputFilename, "w").write(minimized) + +print "Done." diff --git a/openlayers/build/buildUncompressed.py b/openlayers/build/buildUncompressed.py new file mode 100755 index 0000000..fd38aa7 --- /dev/null +++ b/openlayers/build/buildUncompressed.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python + +import sys +sys.path.append("../tools") + +import jsmin, mergejs + +sourceDirectory = "../lib" +configFilename = "full.cfg" +outputFilename = "OpenLayers.js" + +if len(sys.argv) > 1: + configFilename = sys.argv[1] + ".cfg" +if len(sys.argv) > 2: + outputFilename = sys.argv[2] + +print "Merging libraries." +merged = mergejs.run(sourceDirectory, None, configFilename) +print "Adding license file." +merged = file("license.txt").read() + merged + +print "Writing to %s." % outputFilename +file(outputFilename, "w").write(merged) + +print "Done." diff --git a/openlayers/build/full.cfg b/openlayers/build/full.cfg new file mode 100644 index 0000000..2e4df52 --- /dev/null +++ b/openlayers/build/full.cfg @@ -0,0 +1,32 @@ +# This is the full build with all files: this includes the vector-related files +# like Renderers and Formats. + +[first] +OpenLayers/SingleFile.js +OpenLayers.js +OpenLayers/BaseTypes.js +OpenLayers/BaseTypes/Class.js +OpenLayers/Util.js +Rico/Corner.js + +[last] + +[include] + +[exclude] +Firebug/firebug.js +Firebug/firebugx.js +OpenLayers/Lang/ca.js +OpenLayers/Lang/cs-CZ.js +OpenLayers/Lang/da-DK.js +OpenLayers/Lang/de.js +OpenLayers/Lang/en-CA.js +OpenLayers/Lang/es.js +OpenLayers/Lang/fr.js +OpenLayers/Lang/it.js +OpenLayers/Lang/nb.js +OpenLayers/Lang/nl.js +OpenLayers/Lang/pt-BR.js +OpenLayers/Lang/sv-SE.js +OpenLayers/Lang/zh-TW.js +OpenLayers/Lang/zh-CN.js diff --git a/openlayers/build/library.cfg b/openlayers/build/library.cfg new file mode 100644 index 0000000..a4fcf95 --- /dev/null +++ b/openlayers/build/library.cfg @@ -0,0 +1,68 @@ +# This file includes the OpenLayers code to create a build for everything that +# does not require vector support. build.py uses this profile if no other one +# is specified. + +[first] +OpenLayers/SingleFile.js +OpenLayers.js +OpenLayers/BaseTypes.js +OpenLayers/BaseTypes/Class.js +OpenLayers/Util.js +Rico/Corner.js + +[last] + +[include] + +[exclude] +Firebug/firebug.js +Firebug/firebugx.js +OpenLayers/Format/GeoRSS.js +OpenLayers/Format/GML.js +OpenLayers/Format/WKT.js +OpenLayers/Format/KML.js +OpenLayers/Format/WFS.js +OpenLayers/Format.js +OpenLayers/Handler/Path.js +OpenLayers/Handler/Point.js +OpenLayers/Handler/Polygon.js +OpenLayers/Handler/Select.js +OpenLayers/Geometry/Collection.js +OpenLayers/Geometry/Curve.js +OpenLayers/Geometry/LinearRing.js +OpenLayers/Geometry/LineString.js +OpenLayers/Geometry/MultiLineString.js +OpenLayers/Geometry/MultiPoint.js +OpenLayers/Geometry/MultiPolygon.js +OpenLayers/Geometry/Point.js +OpenLayers/Geometry/Polygon.js +OpenLayers/Geometry/Rectangle.js +OpenLayers/Geometry/Surface.js +OpenLayers/Geometry.js +OpenLayers/Layer/GML.js +OpenLayers/Layer/Vector.js +OpenLayers/Control/DrawFeature.js +OpenLayers/Control/EditingToolbar.js +OpenLayers/Control/SelectFeature.js +OpenLayers/Feature/Vector.js +OpenLayers/Renderer +OpenLayers/Renderer/Elements.js +OpenLayers/Renderer/SVG.js +OpenLayers/Renderer/VML.js +OpenLayers/Renderer.js +OpenLayers/Lang/ca.js +OpenLayers/Lang/cs-CZ.js +OpenLayers/Lang/da-DK.js +OpenLayers/Lang/de.js +OpenLayers/Lang/en-CA.js +OpenLayers/Lang/es.js +OpenLayers/Lang/fr.js +OpenLayers/Lang/it.js +OpenLayers/Lang/nb.js +OpenLayers/Lang/nl.js +OpenLayers/Lang/pt-BR.js +OpenLayers/Lang/sv-SE.js +OpenLayers/Lang/zh-TW.js +OpenLayers/Lang/zh-CN.js + + diff --git a/openlayers/build/license.txt b/openlayers/build/license.txt new file mode 100644 index 0000000..b74e2a7 --- /dev/null +++ b/openlayers/build/license.txt @@ -0,0 +1,92 @@ +/* + + OpenLayers.js -- OpenLayers Map Viewer Library + + Copyright 2005-2008 MetaCarta, Inc., released under the Clear BSD license. + Please see http://svn.openlayers.org/trunk/openlayers/license.txt + for the full text of the license. + + Includes compressed code under the following licenses: + + (For uncompressed versions of the code used please see the + OpenLayers SVN repository: ) + +*/ + +/* Contains portions of Prototype.js: + * + * Prototype JavaScript framework, version 1.4.0 + * (c) 2005 Sam Stephenson + * + * Prototype is freely distributable under the terms of an MIT-style license. + * For details, see the Prototype web site: http://prototype.conio.net/ + * + *--------------------------------------------------------------------------*/ + +/** +* +* Contains portions of Rico +* +* Copyright 2005 Sabre Airline Solutions +* +* Licensed under the Apache License, Version 2.0 (the "License"); you +* may not use this file except in compliance with the License. You +* may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +* implied. See the License for the specific language governing +* permissions and limitations under the License. +* +**/ + +/** + * Contains XMLHttpRequest.js + * Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + */ + +/** + * Contains portions of Gears + * + * Copyright 2007, Google Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Google Inc. nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Sets up google.gears.*, which is *the only* supported way to access Gears. + * + * Circumvent this file at your own risk! + * + * In the future, Gears may automatically define google.gears.* without this + * file. Gears may use these objects to transparently fix bugs and compatibility + * issues. Applications that use the code below will continue to work seamlessly + * when that happens. + */ diff --git a/openlayers/build/lite.cfg b/openlayers/build/lite.cfg new file mode 100644 index 0000000..48454dc --- /dev/null +++ b/openlayers/build/lite.cfg @@ -0,0 +1,22 @@ +# This file includes a small subset of OpenLayers code, designed to be +# integrated into another application. It includes only the Layer types +# neccesary to create tiled or untiled WMS, and does not include any Controls. +# This is the result of what was at the time called "Webmap.js" at the FOSS4G +# Web Mapping BOF. + +[first] +OpenLayers/SingleFile.js +OpenLayers.js +OpenLayers/BaseTypes.js +OpenLayers/BaseTypes/Class.js +OpenLayers/Util.js + +[last] + +[include] +OpenLayers/Map.js +OpenLayers/Layer/WMS.js + +[exclude] + + diff --git a/openlayers/doc/apidocs/files/OpenLayers-js.html b/openlayers/doc/apidocs/files/OpenLayers-js.html new file mode 100644 index 0000000..2acb034 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers-js.html @@ -0,0 +1,43 @@ + + +OpenLayers + + + + + + + + + +

OpenLayers

The OpenLayers object provides a namespace for all things OpenLayers

Summary
OpenLayersThe OpenLayers object provides a namespace for all things OpenLayers
Constants
VERSION_NUMBER
+ +

Constants

+ +

VERSION_NUMBER

+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Ajax-js.html b/openlayers/doc/apidocs/files/OpenLayers/Ajax-js.html new file mode 100644 index 0000000..3085a18 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Ajax-js.html @@ -0,0 +1,65 @@ + + +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Ajax.js - OpenLayers + + + + + + + + + +
+ +

Functions

+ +

loadURL

OpenLayers.loadURL = function(uri,
params,
caller,
onComplete,
onFailure)

Background load a document.  For more flexibility in using XMLHttpRequest, see the OpenLayers.Request methods.

Parameters

uri{String} URI of source doc
params{String} or {Object} GET params.  Either a string in the form “?hello=world&foo=bar” (do not forget the leading question mark) or an object in the form {‘hello’: ‘world’, ‘foo’: ‘bar}
caller{Object} object which gets callbacks
onComplete{Function} Optional callback for success.  The callback will be called with this set to caller and will receive the request object as an argument.  Note that if you do not specify an onComplete function, <OpenLayers.nullHandler> will be called (which pops up a user friendly error message dialog).
onFailure{Function} Optional callback for failure.  In the event of a failure, the callback will be called with this set to caller and will receive the request object as an argument.  Note that if you do not specify an onComplete function, <OpenLayers.nullHandler> will be called (which pops up a user friendly error message dialog).

Returns

{OpenLayers.Request.XMLHttpRequest} The request object.  To abort loading, call request.abort().

+ +

OpenLayers.Ajax

+ +

OpenLayers.Ajax.Responders

{Object}

+ +

OpenLayers.Ajax.Base

+ +

Constructor

+ +

OpenLayers.Ajax.Base

Parameters

options{Object}
+ +

OpenLayers.Ajax.Request

Deprecated.  Use OpenLayers.Request method instead.

Inherit

+ +

Constructor

+ +

OpenLayers.Ajax.Request

Parameters

url{String}
options{Object}
+ +

OpenLayers.Ajax.Response

+ +

Constructor

+ +

OpenLayers.Ajax.Response

Parameters

request{Object}
+ +
+ + + + + + + + + + +
OpenLayers.loadURL = function(uri,
params,
caller,
onComplete,
onFailure)
Background load a document.
The OpenLayers.Request namespace contains convenience methods for working with XMLHttpRequests.
Standard-compliant (W3C) cross-browser implementation of the XMLHttpRequest object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/BaseTypes-js.html b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes-js.html new file mode 100644 index 0000000..2ae73f5 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes-js.html @@ -0,0 +1,96 @@ + + +OpenLayers Base Types - OpenLayers + + + + + + + + + +

OpenLayers Base Types

OpenLayers custom string, number and function functions are described here.

Summary
OpenLayers Base TypesOpenLayers custom string, number and function functions are described here.
OpenLayers.StringContains convenience functions for string manipulation.
Functions
startsWithTest whether a string starts with another string.
containsTest whether a string contains another string.
trimRemoves leading and trailing whitespace characters from a string.
camelizeCamel-case a hyphenated string.
formatGiven a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
OpenLayers.String.isNumericDetermine whether a string contains only a numeric value.
numericIfConverts a string that appears to be a numeric value into a number.
String.startsWithDeprecated.
String.containsDeprecated.
String.trimDeprecated.
String.camelizeDeprecated.
OpenLayers.NumberContains convenience functions for manipulating numbers.
Functions
limitSigDigsLimit the number of significant digits on a float.
formatFormats a number for output.
Number.limitSigDigsDeprecated.
OpenLayers.FunctionContains convenience functions for function manipulation.
Functions
bindBind a function to an object.
bindAsEventListenerBind a function to an object, and configure it to receive the event object as first parameter when called.
Function.bindDeprecated.
Function.bindAsEventListenerDeprecated.
OpenLayers.ArrayContains convenience functions for array manipulation.
Functions
filterFilter an array.
+ +

OpenLayers.String

Contains convenience functions for string manipulation.

Summary
Functions
startsWithTest whether a string starts with another string.
containsTest whether a string contains another string.
trimRemoves leading and trailing whitespace characters from a string.
camelizeCamel-case a hyphenated string.
formatGiven a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
OpenLayers.String.isNumericDetermine whether a string contains only a numeric value.
numericIfConverts a string that appears to be a numeric value into a number.
String.startsWithDeprecated.
String.containsDeprecated.
String.trimDeprecated.
String.camelizeDeprecated.
+ +

Functions

+ +

startsWith

startsWith: function(str,
sub)

Test whether a string starts with another string.

Parameters

str{String} The string to test.
sub{Sring} The substring to look for.

Returns

{Boolean} The first string starts with the second.

+ +

contains

contains: function(str,
sub)

Test whether a string contains another string.

Parameters

str{String} The string to test.
sub{String} The substring to look for.

Returns

{Boolean} The first string contains the second.

+ +

trim

trim: function(str)

Removes leading and trailing whitespace characters from a string.

Parameters

str{String} The (potentially) space padded string.  This string is not modified.

Returns

{String} A trimmed version of the string with all leading and trailing spaces removed.

+ +

camelize

camelize: function(str)

Camel-case a hyphenated string.  Ex.  “chicken-head” becomes “chickenHead”, and “-chicken-head” becomes “ChickenHead”.

Parameters

str{String} The string to be camelized.  The original is not modified.

Returns

{String} The string, camelized

+ +

format

format: function(template,
context,
args)

Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.  Represent a literal “${“ by doubling it, e.g.  “${${“.

Parameters

template{String} A string with tokens to be replaced.  A template has the form “literal ${token}” where the token will be replaced by the value of context[“token”].
context{Object} An optional object with properties corresponding to the tokens in the format string.  If no context is sent, the window object will be used.
args{Array} Optional arguments to pass to any functions found in the context.  If a context property is a function, the token will be replaced by the return from the function called with these arguments.

Returns

{String} A string with tokens replaced from the context object.

+ +

OpenLayers.String.isNumeric

Determine whether a string contains only a numeric value.

Examples

OpenLayers.String.isNumeric("6.02e23") // true
+OpenLayers.String.isNumeric("12 dozen") // false
+OpenLayers.String.isNumeric("4") // true
+OpenLayers.String.isNumeric(" 4 ") // false

Returns

{Boolean} String contains only a number.

+ +

numericIf

numericIf: function(value)

Converts a string that appears to be a numeric value into a number.

Returns {Number|String} a Number if the passed value is a number, a String otherwise.

+ +

String.startsWith

Deprecated.  Whether or not a string starts with another string.

Parameters

sStart{Sring} The string we’re testing for.

Returns

{Boolean} Whether or not this string starts with the string passed in.

+ +

String.contains

Deprecated.  Whether or not a string contains another string.

Parameters

str{String} The string that we’re testing for.

Returns

{Boolean} Whether or not this string contains with the string passed in.

+ +

String.trim

Deprecated.  Removes leading and trailing whitespace characters from a string.

Returns

{String} A trimmed version of the stringall leading and trailing spaces removed
+ +

String.camelize

Deprecated.  Camel-case a hyphenated string.  Ex.  “chicken-head” becomes “chickenHead”, and “-chicken-head” becomes “ChickenHead”.

Returns

{String} The string, camelized

+ +

OpenLayers.Number

Contains convenience functions for manipulating numbers.

Summary
Functions
limitSigDigsLimit the number of significant digits on a float.
formatFormats a number for output.
Number.limitSigDigsDeprecated.
+ +

Functions

+ +

limitSigDigs

limitSigDigs: function(num,
sig)

Limit the number of significant digits on a float.

Parameters

num{Float}
sig{Integer}

Returns

{Float} The number, rounded to the specified number of significant digits.

+ +

format

format: function(num,
dec,
tsep,
dsep)

Formats a number for output.

Parameters

num{Float}
dec{Integer} Number of decimal places to round to.  Defaults to 0.  Set to null to leave decimal places unchanged.
tsep{String} Thousands separator.  Default is “,”.
dsep{String} Decimal separator.  Default is “.”.

Returns

{String} A string representing the formatted number.

+ +

Number.limitSigDigs

Deprecated.  Limit the number of significant digits on an integer.  Does not work with floats!

Parameters

sig{Integer}

Returns

{Integer} The number, rounded to the specified number of significant digits.  If null, 0, or negative value passed in, returns 0

+ +

OpenLayers.Function

Contains convenience functions for function manipulation.

Summary
Functions
bindBind a function to an object.
bindAsEventListenerBind a function to an object, and configure it to receive the event object as first parameter when called.
Function.bindDeprecated.
Function.bindAsEventListenerDeprecated.
+ +

Functions

+ +

bind

bind: function(func,
object)

Bind a function to an object.  Method to easily create closures with ‘this’ altered.

Parameters

func{Function} Input function.
object{Object} The object to bind to the input function (as this).

Returns

{Function} A closure with ‘this’ set to the passed in object.

+ +

bindAsEventListener

bindAsEventListener: function(func,
object)

Bind a function to an object, and configure it to receive the event object as first parameter when called.

Parameters

func{Function} Input function to serve as an event listener.
object{Object} A reference to this.

Returns

{Function}

+ +

Function.bind

Deprecated.  Bind a function to an object.  Method to easily create closures with ‘this’ altered.

Parameters

object{Object} the this parameter

Returns

{Function} A closure with ‘this’ altered to the first argument.

+ +

Function.bindAsEventListener

Deprecated.  Bind a function to an object, and configure it to receive the event object as first parameter when called.

Parameters

object{Object} A reference to this.

Returns

{Function}

+ +

OpenLayers.Array

Contains convenience functions for array manipulation.

Summary
Functions
filterFilter an array.
+ +

Functions

+ +

filter

filter: function(array,
callback,
caller)

Filter an array.  Provides the functionality of the Array.prototype.filter extension to the ECMA-262 standard.  Where available, Array.prototype.filter will be used.

Based on well known example from http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:filter

Parameters

array{Array} The array to be filtered.  This array is not mutated.  Elements added to this array by the callback will not be visited.
callback{Function} A function that is called for each element in the array.  If this function returns true, the element will be included in the return.  The function will be called with three arguments: the element in the array, the index of that element, and the array itself.  If the optional caller parameter is specified the callback will be called with this set to caller.
caller{Object} Optional object to be set as this when the callback is called.

Returns

{Array} An array of elements from the passed in array for which the callback returns true.

+ +
+ + + + + + + + + + +
startsWith: function(str,
sub)
Test whether a string starts with another string.
contains: function(str,
sub)
Test whether a string contains another string.
trim: function(str)
Removes leading and trailing whitespace characters from a string.
camelize: function(str)
Camel-case a hyphenated string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
numericIf: function(value)
Converts a string that appears to be a numeric value into a number.
limitSigDigs: function(num,
sig)
Limit the number of significant digits on a float.
format: function(num,
dec,
tsep,
dsep)
Formats a number for output.
bind: function(func,
object)
Bind a function to an object.
bindAsEventListener: function(func,
object)
Bind a function to an object, and configure it to receive the event object as first parameter when called.
filter: function(array,
callback,
caller)
Filter an array.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Bounds-js.html b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Bounds-js.html new file mode 100644 index 0000000..5eefce7 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Bounds-js.html @@ -0,0 +1,92 @@ + + +OpenLayers.Bounds - OpenLayers + + + + + + + + + +

OpenLayers.Bounds

Instances of this class represent bounding boxes.  Data stored as left, bottom, right, top floats.  All values are initialized to null, however, you should make sure you set them before using the bounds for anything.

Possible use case

bounds = new OpenLayers.Bounds();
+bounds.extend(new OpenLayers.LonLat(4,5));
+bounds.extend(new OpenLayers.LonLat(5,6));
+bounds.toBBOX(); // returns 4,5,5,6
Summary
OpenLayers.BoundsInstances of this class represent bounding boxes.
Constructor
OpenLayers.BoundsConstruct a new bounds object.
Functions
toString{String} String representation of bounds object.
toArray{Array} array of left, bottom, right, top
toBBOX
toGeometryCreate a new polygon geometry based on this bounds.
getWidth{Float} The width of the bounds
getHeight{Float} The height of the bounds (top minus bottom).
getSize{OpenLayers.Size} The size of the box.
getCenterPixel{OpenLayers.Pixel} The center of the bounds in pixel space.
getCenterLonLat{OpenLayers.LonLat} The center of the bounds in map space.
add
extendExtend the bounds to include the point, lonlat, or bounds specified.
containsLonLat
containsPixel
contains
intersectsBoundsDetermine whether the target bounds intersects this bounds.
containsBoundsDetermine whether the target bounds is contained within this bounds.
determineQuadrant
transformTransform the Bounds object from source to dest.
wrapDateLine
fromStringAlternative constructor that builds a new OpenLayers.Bounds from a parameter string
fromArrayAlternative constructor that builds a new OpenLayers.Bounds from an array
fromSizeAlternative constructor that builds a new OpenLayers.Bounds from a size
+ +

Constructor

+ +

OpenLayers.Bounds

Construct a new bounds object.

Parameters

left{Number} The left bounds of the box.  Note that for width calculations, this is assumed to be less than the right value.
bottom{Number} The bottom bounds of the box.  Note that for height calculations, this is assumed to be more than the top value.
right{Number} The right bounds.
top{Number} The top bounds.
+ +

Functions

+ +

toString

toString:function()

Returns

{String} String representation of bounds object.  (ex.<i>”left-bottom=(5,42) right-top=(10,45)”</i>)

+ +

toArray

toArray: function()

Returns

{Array} array of left, bottom, right, top

+ +

toBBOX

toBBOX:function(decimal)

Parameters

decimal{Integer} How many significant digits in the bbox coords?  Default is 6

Returns

{String} Simple String representation of bounds object.  (ex.  <i>”5,42,10,45”</i>)

+ +

toGeometry

toGeometry: function()

Create a new polygon geometry based on this bounds.

Returns

{OpenLayers.Geometry.Polygon} A new polygon with the coordinates of this bounds.

+ +

getWidth

getWidth:function()

Returns

{Float} The width of the bounds

+ +

getHeight

getHeight:function()

Returns

{Float} The height of the bounds (top minus bottom).

+ +

getSize

getSize:function()

Returns

{OpenLayers.Size} The size of the box.

+ +

getCenterPixel

getCenterPixel:function()

Returns

{OpenLayers.Pixel} The center of the bounds in pixel space.

+ +

getCenterLonLat

getCenterLonLat:function()

Returns

{OpenLayers.LonLat} The center of the bounds in map space.

+ +

add

add:function(x,
y)

Parameters

x{Float}
y{Float}

Returns

{OpenLayers.Bounds} A new bounds whose coordinates are the same as this, but shifted by the passed-in x and y values.

+ +

extend

extend:function(object)

Extend the bounds to include the point, lonlat, or bounds specified.  Note, this function assumes that left < right and bottom < top.

Parameters

object{Object} Can be LonLat, Point, or Bounds
+ +

containsLonLat

containsLonLat:function(ll,
inclusive)

Parameters

ll{OpenLayers.LonLat}
inclusive{Boolean} Whether or not to include the border.  Default is true.

Returns

{Boolean} The passed-in lonlat is within this bounds.

+ +

containsPixel

containsPixel:function(px,
inclusive)

Parameters

px{OpenLayers.Pixel}
inclusive{Boolean} Whether or not to include the border.  Default is true.

Returns

{Boolean} The passed-in pixel is within this bounds.

+ +

contains

contains:function(x,
y,
inclusive)

Parameters

x{Float}
y{Float}
inclusive{Boolean} Whether or not to include the border.  Default is true.

Returns

{Boolean} Whether or not the passed-in coordinates are within this bounds.

+ +

intersectsBounds

intersectsBounds:function(bounds,
inclusive)

Determine whether the target bounds intersects this bounds.  Bounds are considered intersecting if any of their edges intersect or if one bounds contains the other.

Parameters

bounds{OpenLayers.Bounds} The target bounds.
inclusive{Boolean} Treat coincident borders as intersecting.  Default is true.  If false, bounds that do not overlap but only touch at the border will not be considered as intersecting.

Returns

{Boolean} The passed-in bounds object intersects this bounds.

+ +

containsBounds

containsBounds:function(bounds,
partial,
inclusive)

Determine whether the target bounds is contained within this bounds.

bounds{OpenLayers.Bounds} The target bounds.
partial{Boolean} If any of the target corners is within this bounds consider the bounds contained.  Default is false.  If true, the entire target bounds must be contained within this bounds.
inclusive{Boolean} Treat shared edges as contained.  Default is true.

Returns

{Boolean} The passed-in bounds object is contained within this bounds.

+ +

determineQuadrant

determineQuadrant: function(lonlat)

Parameters

lonlat{OpenLayers.LonLat}

Returns

{String} The quadrant (“br” “tr” “tl” “bl”) of the bounds in which the coordinate lies.

+ +

transform

transform: function(source,
dest)

Transform the Bounds object from source to dest.

Parameters

source{OpenLayers.Projection} Source projection.
dest{OpenLayers.Projection} Destination projection.

Returns

{OpenLayers.Bounds} Itself, for use in chaining operations.

+ +

wrapDateLine

wrapDateLine: function(maxExtent,
options)

Parameters

maxExtent{OpenLayers.Bounds}
options{Object} Some possible options are:
leftTolerance{float} Allow for a margin of error with the ‘left’ value of this bound.  Default is 0.
rightTolerance{float} Allow for a margin of error with the ‘right’ value of this bound.  Default is 0.

Returns

{OpenLayers.Bounds} A copy of this bounds, but wrapped around the “dateline” (as specified by the borders of maxExtent).  Note that this function only returns a different bounds value if this bounds is entirely outside of the maxExtent.  If this bounds straddles the dateline (is part in/part out of maxExtent), the returned bounds will be merely a copy of this one.

+ +

fromString

OpenLayers.Bounds.fromString = function(str)

Alternative constructor that builds a new OpenLayers.Bounds from a parameter string

Parameters

str{String}Comma-separated bounds string.  (ex.  <i>”5,42,10,45”</i>)

Returns

{OpenLayers.Bounds} New bounds object built from the passed-in String.

+ +

fromArray

OpenLayers.Bounds.fromArray = function(bbox)

Alternative constructor that builds a new OpenLayers.Bounds from an array

Parameters

bbox{Array(Float)} Array of bounds values (ex.  <i>[5,42,10,45]</i>)

Returns

{OpenLayers.Bounds} New bounds object built from the passed-in Array.

+ +

fromSize

OpenLayers.Bounds.fromSize = function(size)

Alternative constructor that builds a new OpenLayers.Bounds from a size

Parameters

size{OpenLayers.Size}

Returns

{OpenLayers.Bounds} New bounds object built from the passed-in size.

+ +
+ + + + + + + + + + +
toString:function()
{String} String representation of bounds object.
toArray: function()
{Array} array of left, bottom, right, top
toBBOX:function(decimal)
toGeometry: function()
Create a new polygon geometry based on this bounds.
getWidth:function()
{Float} The width of the bounds
getHeight:function()
{Float} The height of the bounds (top minus bottom).
getSize:function()
{OpenLayers.Size} The size of the box.
Instances of this class represent a width/height pair
getCenterPixel:function()
{OpenLayers.Pixel} The center of the bounds in pixel space.
This class represents a screen coordinate, in x and y coordinates
getCenterLonLat:function()
{OpenLayers.LonLat} The center of the bounds in map space.
This class represents a longitude and latitude pair
add:function(x,
y)
extend:function(object)
Extend the bounds to include the point, lonlat, or bounds specified.
containsLonLat:function(ll,
inclusive)
containsPixel:function(px,
inclusive)
contains:function(x,
y,
inclusive)
intersectsBounds:function(bounds,
inclusive)
Determine whether the target bounds intersects this bounds.
containsBounds:function(bounds,
partial,
inclusive)
Determine whether the target bounds is contained within this bounds.
determineQuadrant: function(lonlat)
transform: function(source,
dest)
Transform the Bounds object from source to dest.
wrapDateLine: function(maxExtent,
options)
OpenLayers.Bounds.fromString = function(str)
Alternative constructor that builds a new OpenLayers.Bounds from a parameter string
OpenLayers.Bounds.fromArray = function(bbox)
Alternative constructor that builds a new OpenLayers.Bounds from an array
OpenLayers.Bounds.fromSize = function(size)
Alternative constructor that builds a new OpenLayers.Bounds from a size
Polygon is a collection of Geometry.LinearRings.
Construct a new bounds object.
Class for coordinate transforms between coordinate systems.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Class-js.html b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Class-js.html new file mode 100644 index 0000000..c950a76 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Class-js.html @@ -0,0 +1,49 @@ + + +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Class.js - OpenLayers + + + + + + + + + +

Class.js

Summary
Class.js
Constructor
OpenLayers.ClassBase class used to construct all other classes.
Functions
OpenLayers.createDeprecated.
inheritDeprecated.
+ +

Constructor

+ +

OpenLayers.Class

Base class used to construct all other classes.  Includes support for multiple inheritance.

This constructor is new in OpenLayers 2.5.  At OpenLayers 3.0, the old syntax for creating classes and dealing with inheritance will be removed.

To create a new OpenLayers-style class, use the following syntax

var MyClass = OpenLayers.Class(prototype);

To create a new OpenLayers-style class with multiple inheritance, use the following syntax:

var MyClass = OpenLayers.Class(Class1, Class2, prototype);

Note that instanceof reflection will only reveil Class1 as superclass.  Class2 ff are mixins.

+ +

Functions

+ +

OpenLayers.create

Deprecated.  Old method to create an OpenLayers style class.  Use the OpenLayers.Class constructor instead.

Returns

An OpenLayers class

+ +

inherit

OpenLayers.Class.inherit = function ()

Deprecated.  Old method to inherit from one or more OpenLayers style classes.  Use the OpenLayers.Class constructor instead.

Parameters

classOne or more classes can be provided as arguments

Returns

An object prototype

+ +
+ + + + + + + + + + +
OpenLayers.Class.inherit = function ()
Deprecated.
Base class used to construct all other classes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Element-js.html b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Element-js.html new file mode 100644 index 0000000..ba4e29e --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Element-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Element - OpenLayers + + + + + + + + + +

OpenLayers.Element

Summary
OpenLayers.Element
Functions
visible
toggleToggle the visibility of element(s) passed in
hideHide element(s) passed in
showShow element(s) passed in
removeRemove the specified element from the DOM.
getHeight
getDimensions
getStyle
+ +

Functions

+ +

visible

visible: function(element)

Parameters

element{DOMElement}

Returns

{Boolean} Is the element visible?

+ +

toggle

toggle: function()

Toggle the visibility of element(s) passed in

Parameters

element{DOMElement} Actually user can pass any number of elements
+ +

hide

hide: function()

Hide element(s) passed in

Parameters

element{DOMElement} Actually user can pass any number of elements
+ +

show

show: function()

Show element(s) passed in

Parameters

element{DOMElement} Actually user can pass any number of elements
+ +

remove

remove: function(element)

Remove the specified element from the DOM.

Parameters

element{DOMElement}
+ +

getHeight

getHeight: function(element)

Parameters

element{DOMElement}

Returns

{Integer} The offset height of the element passed in

+ +

getDimensions

getDimensions: function(element)

Parameters

element{DOMElement}

Returns

{Object} Object with ‘width’ and ‘height’ properties which are the dimensions of the element passed in.

+ +

getStyle

getStyle: function(element,
style)

Parameters

element{DOMElement}
style{?}

Returns

{?}

+ +
+ + + + + + + + + + +
visible: function(element)
toggle: function()
Toggle the visibility of element(s) passed in
hide: function()
Hide element(s) passed in
show: function()
Show element(s) passed in
remove: function(element)
Remove the specified element from the DOM.
getHeight: function(element)
getDimensions: function(element)
getStyle: function(element,
style)
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/LonLat-js.html b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/LonLat-js.html new file mode 100644 index 0000000..8d35f50 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/LonLat-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.LonLat - OpenLayers + + + + + + + + + +

OpenLayers.LonLat

This class represents a longitude and latitude pair

Summary
OpenLayers.LonLatThis class represents a longitude and latitude pair
Properties
lon{Float} The x-axis coodinate in map units
lat{Float} The y-axis coordinate in map units
Constructor
OpenLayers.LonLatCreate a new map location.
Functions
toShortString{String} Shortened String representation of OpenLayers.LonLat object.
clone{OpenLayers.LonLat} New OpenLayers.LonLat object with the same lon and lat values
add
equals
transformTransform the LonLat object from source to dest.
wrapDateLine
+ +

Properties

+ +

lon

{Float} The x-axis coodinate in map units

+ +

lat

{Float} The y-axis coordinate in map units

+ +

Constructor

+ +

OpenLayers.LonLat

Create a new map location.

Parameters

lon{Number} The x-axis coordinate in map units.  If your map is in a geographic projection, this will be the Longitude.  Otherwise, it will be the x coordinate of the map location in your map units.
lat{Number} The y-axis coordinate in map units.  If your map is in a geographic projection, this will be the Latitude.  Otherwise, it will be the y coordinate of the map location in your map units.
+ +

Functions

+ +

toShortString

toShortString:function()

Returns

{String} Shortened String representation of OpenLayers.LonLat object.  (ex.  <i>”5, 42”</i>)

+ +

clone

clone:function()

Returns

{OpenLayers.LonLat} New OpenLayers.LonLat object with the same lon and lat values

+ +

add

add:function(lon,
lat)

Parameters

lon{Float}
lat{Float}

Returns

{OpenLayers.LonLat} A new OpenLayers.LonLat object with the lon and lat passed-in added to this’s.

+ +

equals

equals:function(ll)

Parameters

ll{OpenLayers.LonLat}

Returns

{Boolean} Boolean value indicating whether the passed-in OpenLayers.LonLat object has the same lon and lat components as this.  Note: if ll passed in is null, returns false

+ +

transform

transform: function(source,
dest)

Transform the LonLat object from source to dest.  This transformation is in place: if you want a new lonlat, use .clone() first.

Parameters

source{OpenLayers.Projection} Source projection.
dest{OpenLayers.Projection} Destination projection.

Returns

{OpenLayers.LonLat} Itself, for use in chaining operations.

+ +

wrapDateLine

wrapDateLine: function(maxExtent)

Parameters

maxExtent{OpenLayers.Bounds}

Returns

{OpenLayers.LonLat} A copy of this lonlat, but wrapped around the “dateline” (as specified by the borders of maxExtent)

+ +
+ + + + + + + + + + +
toShortString:function()
{String} Shortened String representation of OpenLayers.LonLat object.
clone:function()
{OpenLayers.LonLat} New OpenLayers.LonLat object with the same lon and lat values
Create a new map location.
add:function(lon,
lat)
equals:function(ll)
transform: function(source,
dest)
Transform the LonLat object from source to dest.
wrapDateLine: function(maxExtent)
Class for coordinate transforms between coordinate systems.
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Pixel-js.html b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Pixel-js.html new file mode 100644 index 0000000..03d3ca5 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Pixel-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Pixel - OpenLayers + + + + + + + + + +

OpenLayers.Pixel

This class represents a screen coordinate, in x and y coordinates

Summary
OpenLayers.PixelThis class represents a screen coordinate, in x and y coordinates
Properties
x{Number} The x coordinate
y{Number} The y coordinate
Constructor
OpenLayers.PixelCreate a new OpenLayers.Pixel instance
Functions
cloneReturn a clone of this pixel object
equalsDetermine whether one pixel is equivalent to another
add
offsetParameters px - {OpenLayers.Pixel}
+ +

Properties

+ +

x

{Number} The x coordinate

+ +

y

{Number} The y coordinate

+ +

Constructor

+ +

OpenLayers.Pixel

Create a new OpenLayers.Pixel instance

Parameters

x{Number} The x coordinate
y{Number} The y coordinate

Returns

An instance of OpenLayers.Pixel

+ +

Functions

+ +

clone

clone:function()

Return a clone of this pixel object

Returns

{OpenLayers.Pixel} A clone pixel

+ +

equals

equals:function(px)

Determine whether one pixel is equivalent to another

Parameters

px{OpenLayers.Pixel}

Returns

{Boolean} The point passed in as parameter is equal to this.  Note that if px passed in is null, returns false.

+ +

add

add:function(x,
y)

Parameters

x{Integer}
y{Integer}

Returns

{OpenLayers.Pixel} A new Pixel with this pixel’s x&y augmented by the values passed in.

+ +

offset

offset:function(px)

Parameters px - {OpenLayers.Pixel}

Returns

{OpenLayers.Pixel} A new Pixel with this pixel’s x&y augmented by the x&y values of the pixel passed in.

+ +
+ + + + + + + + + + +
clone:function()
Return a clone of this pixel object
equals:function(px)
Determine whether one pixel is equivalent to another
add:function(x,
y)
offset:function(px)
Parameters px - {OpenLayers.Pixel}
Create a new OpenLayers.Pixel instance
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Size-js.html b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Size-js.html new file mode 100644 index 0000000..3d6a1e9 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/BaseTypes/Size-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Size - OpenLayers + + + + + + + + + +

OpenLayers.Size

Instances of this class represent a width/height pair

Summary
OpenLayers.SizeInstances of this class represent a width/height pair
Properties
w{Number} width
h{Number} height
Constructor
OpenLayers.SizeCreate an instance of OpenLayers.Size
Functions
cloneCreate a clone of this size object
equalsDetermine where this size is equal to another
+ +

Properties

+ +

w

{Number} width

+ +

h

{Number} height

+ +

Constructor

+ +

OpenLayers.Size

Create an instance of OpenLayers.Size

Parameters

w{Number} width
h{Number} height
+ +

Functions

+ +

clone

clone:function()

Create a clone of this size object

Returns

{OpenLayers.Size} A new OpenLayers.Size object with the same w and h values

+ +

equals

equals:function(sz)

Determine where this size is equal to another

Parameters

sz{OpenLayers.Size}

Returns

{Boolean} The passed in size has the same h and w properties as this one.  Note that if sz passed in is null, returns false.

+ +
+ + + + + + + + + + +
clone:function()
Create a clone of this size object
equals:function(sz)
Determine where this size is equal to another
Create an instance of OpenLayers.Size
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Console-js.html b/openlayers/doc/apidocs/files/OpenLayers/Console-js.html new file mode 100644 index 0000000..93b0e41 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Console-js.html @@ -0,0 +1,75 @@ + + +OpenLayers.Console - OpenLayers + + + + + + + + + +

OpenLayers.Console

The OpenLayers.Console namespace is used for debugging and error logging.  If the Firebug Lite (../Firebug/firebug.js) is included before this script, calls to OpenLayers.Console methods will get redirected to window.console.  This makes use of the Firebug extension where available and allows for cross-browser debugging Firebug style.

Note

Note that behavior will differ with the Firebug extention and Firebug Lite.  Most notably, the Firebug Lite console does not currently allow for hyperlinks to code or for clicking on object to explore their properties.

Summary
OpenLayers.ConsoleThe OpenLayers.Console namespace is used for debugging and error logging.
Functions
logLog an object in the console.
debugWrites a message to the console, including a hyperlink to the line where it was called.
infoWrites a message to the console with the visual “info” icon and color coding and a hyperlink to the line where it was called.
warnWrites a message to the console with the visual “warning” icon and color coding and a hyperlink to the line where it was called.
errorWrites a message to the console with the visual “error” icon and color coding and a hyperlink to the line where it was called.
userErrorA single interface for showing error messages to the user.
assertTests that an expression is true.
dirPrints an interactive listing of all properties of the object.
dirxmlPrints the XML source tree of an HTML or XML element.
tracePrints an interactive stack trace of JavaScript execution at the point where it is called.
groupWrites a message to the console and opens a nested block to indent all future messages sent to the console.
groupEndCloses the most recently opened block created by a call to OpenLayers.Console.group
timeCreates a new timer under the given name.
timeEndStops a timer created by a call to OpenLayers.Console.time(name) and writes the time elapsed.
profileTurns on the JavaScript profiler.
profileEndTurns off the JavaScript profiler and prints its report.
countWrites the number of times that the line of code where count was called was executed.
+ +

Functions

+ +

log

log: function()

Log an object in the console.  The Firebug Lite console logs string representation of objects.  Given multiple arguments, they will be cast to strings and logged with a space delimiter.  If the first argument is a string with printf-like formatting, subsequent arguments will be used in string substitution.  Any additional arguments (beyond the number substituted in a format string) will be appended in a space- delimited line.

Parameters

object{Object}
+ +

debug

debug: function()

Writes a message to the console, including a hyperlink to the line where it was called.

May be called with multiple arguments as with OpenLayers.Console.log().

Parameters

object{Object}
+ +

info

info: function()

Writes a message to the console with the visual “info” icon and color coding and a hyperlink to the line where it was called.

May be called with multiple arguments as with OpenLayers.Console.log().

Parameters

object{Object}
+ +

warn

warn: function()

Writes a message to the console with the visual “warning” icon and color coding and a hyperlink to the line where it was called.

May be called with multiple arguments as with OpenLayers.Console.log().

Parameters

object{Object}
+ +

error

error: function()

Writes a message to the console with the visual “error” icon and color coding and a hyperlink to the line where it was called.

May be called with multiple arguments as with OpenLayers.Console.log().

Parameters

object{Object}
+ +

userError

userError: function(error)

A single interface for showing error messages to the user.  The default behavior is a Javascript alert, though this can be overridden by reassigning OpenLayers.Console.userError to a different function.

Expects a single error message

Parameters

object{Object}
+ +

assert

assert: function()

Tests that an expression is true.  If not, it will write a message to the console and throw an exception.

May be called with multiple arguments as with OpenLayers.Console.log().

Parameters

object{Object}
+ +

dir

dir: function()

Prints an interactive listing of all properties of the object.  This looks identical to the view that you would see in the DOM tab.

Parameters

object{Object}
+ +

dirxml

dirxml: function()

Prints the XML source tree of an HTML or XML element.  This looks identical to the view that you would see in the HTML tab.  You can click on any node to inspect it in the HTML tab.

Parameters

object{Object}
+ +

trace

trace: function()

Prints an interactive stack trace of JavaScript execution at the point where it is called.  The stack trace details the functions on the stack, as well as the values that were passed as arguments to each function.  You can click each function to take you to its source in the Script tab, and click each argument value to inspect it in the DOM or HTML tabs.

+ +

group

group: function()

Writes a message to the console and opens a nested block to indent all future messages sent to the console.  Call OpenLayers.Console.groupEnd() to close the block.

May be called with multiple arguments as with OpenLayers.Console.log().

Parameters

object{Object}
+ +

groupEnd

groupEnd: function()

Closes the most recently opened block created by a call to OpenLayers.Console.group

+ +

time

time: function()

Creates a new timer under the given name.  Call OpenLayers.Console.timeEnd(name) with the same name to stop the timer and print the time elapsed.

Parameters

name{String}
+ +

timeEnd

timeEnd: function()

Stops a timer created by a call to OpenLayers.Console.time(name) and writes the time elapsed.

Parameters

name{String}
+ +

profile

profile: function()

Turns on the JavaScript profiler.  The optional argument title would contain the text to be printed in the header of the profile report.

This function is not currently implemented in Firebug Lite.

Parameters

title{String} Optional title for the profiler
+ +

profileEnd

profileEnd: function()

Turns off the JavaScript profiler and prints its report.

This function is not currently implemented in Firebug Lite.

+ +

count

count: function()

Writes the number of times that the line of code where count was called was executed.  The optional argument title will print a message in addition to the number of the count.

This function is not currently implemented in Firebug Lite.

Parameters

title{String} Optional title to be printed with count
+ +
+ + + + + + + + + + +
log: function()
Log an object in the console.
debug: function()
Writes a message to the console, including a hyperlink to the line where it was called.
info: function()
Writes a message to the console with the visual “info” icon and color coding and a hyperlink to the line where it was called.
warn: function()
Writes a message to the console with the visual “warning” icon and color coding and a hyperlink to the line where it was called.
error: function()
Writes a message to the console with the visual “error” icon and color coding and a hyperlink to the line where it was called.
userError: function(error)
A single interface for showing error messages to the user.
assert: function()
Tests that an expression is true.
dir: function()
Prints an interactive listing of all properties of the object.
dirxml: function()
Prints the XML source tree of an HTML or XML element.
trace: function()
Prints an interactive stack trace of JavaScript execution at the point where it is called.
group: function()
Writes a message to the console and opens a nested block to indent all future messages sent to the console.
groupEnd: function()
Closes the most recently opened block created by a call to OpenLayers.Console.group
time: function()
Creates a new timer under the given name.
timeEnd: function()
Stops a timer created by a call to OpenLayers.Console.time(name) and writes the time elapsed.
profile: function()
Turns on the JavaScript profiler.
profileEnd: function()
Turns off the JavaScript profiler and prints its report.
count: function()
Writes the number of times that the line of code where count was called was executed.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control-js.html new file mode 100644 index 0000000..8ce42ee --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control-js.html @@ -0,0 +1,75 @@ + + +OpenLayers.Control - OpenLayers + + + + + + + + + +

OpenLayers.Control

Controls affect the display or behavior of the map.  They allow everything from panning and zooming to displaying a scale indicator.  Controls by default are added to the map they are contained within however it is possible to add a control to an external div by passing the div in the options parameter.

Example

The following example shows how to add many of the common controls to a map.

var map = new OpenLayers.Map('map', { controls: [] });
+
+map.addControl(new OpenLayers.Control.PanZoomBar());
+map.addControl(new OpenLayers.Control.MouseToolbar());
+map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
+map.addControl(new OpenLayers.Control.Permalink());
+map.addControl(new OpenLayers.Control.Permalink('permalink'));
+map.addControl(new OpenLayers.Control.MousePosition());
+map.addControl(new OpenLayers.Control.OverviewMap());
+map.addControl(new OpenLayers.Control.KeyboardDefaults());

The next code fragment is a quick example of how to intercept shift-mouse click to display the extent of the bounding box dragged out by the user.  Usually controls are not created in exactly this manner.  See the source for a more complete example:

var control = new OpenLayers.Control();
+OpenLayers.Util.extend(control, {
+    draw: function () {
+        // this Handler.Box will intercept the shift-mousedown
+        // before Control.MouseDefault gets to see it
+        this.box = new OpenLayers.Handler.Box( control,
+            {"done": this.notice},
+            {keyMask: OpenLayers.Handler.MOD_SHIFT});
+        this.box.activate();
+    },
+
+    notice: function (bounds) {
+        OpenLayers.Console.userError(bounds);
+    }
+});
+map.addControl(control);
Summary
OpenLayers.ControlControls affect the display or behavior of the map.
Properties
eventListeners{Object} If set as an option at construction, the eventListeners object will be registered with <OpenLayers.Events.on>.
Constants
EVENT_TYPES{Array(String)} Supported application event types.
Constructor
OpenLayers.ControlCreate an OpenLayers Control.
+ +

Properties

+ +

eventListeners

{Object} If set as an option at construction, the eventListeners object will be registered with <OpenLayers.Events.on>.  Object structure must be a listeners object as shown in the example for the events.on method.

+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

control.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

All event objects have at least the following properties

object{Object} A reference to control.events.object (a reference to the control).
element{DOMElement} A reference to control.events.element (which will be null unless documented otherwise).

Supported map event types

activateTriggered when activated.
deactivateTriggered when deactivated.
+ +

Constructor

+ +

OpenLayers.Control

Create an OpenLayers Control.  The options passed as a parameter directly extend the control.  For example passing the following:

var control = new OpenLayers.Control({div: myDiv});

Overrides the default div attribute value of null.

Parameters

options{Object}
+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/ArgParser-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/ArgParser-js.html new file mode 100644 index 0000000..f117877 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/ArgParser-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Control.ArgParser - OpenLayers + + + + + + + + + +

OpenLayers.Control.ArgParser

The ArgParser control adds location bar querystring parsing functionality to an OpenLayers Map.  When added to a Map control, on a page load/refresh, the Map will automatically take the href string and parse it for lon, lat, zoom, and layers information.

Inherits from

Summary
OpenLayers.Control.ArgParserThe ArgParser control adds location bar querystring parsing functionality to an OpenLayers Map.
Properties
displayProjection{OpenLayers.Projection} Requires proj4js support.
Constructor
OpenLayers.Control.ArgParser
+ +

Properties

+ +

displayProjection

{OpenLayers.Projection} Requires proj4js support.  Projection used when reading the coordinates from the URL.  This will

reproject the map coordinates from the URL into the map’s projection.

If you are using this functionality, be aware that any permalink which is added to the map will determine the coordinate type which is read from the URL, which means you should not add permalinks with different displayProjections to the same map.

+ +

Constructor

+ +

OpenLayers.Control.ArgParser

Parameters

options{Object}
+ +
+ + + + + + + + + + +
Class for coordinate transforms between coordinate systems.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/Attribution-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/Attribution-js.html new file mode 100644 index 0000000..d4e86db --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/Attribution-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Control.Attribution - OpenLayers + + + + + + + + + +

OpenLayers.Control.Attribution

The attribution control adds attribution from layers to the map display.  It uses ‘attribution’ property of each layer.

Inherits from

Summary
OpenLayers.Control.AttributionThe attribution control adds attribution from layers to the map display.
Properties
seperator{String} String used to seperate layers.
Constructor
OpenLayers.Control.Attribution
+ +

Properties

+ +

seperator

{String} String used to seperate layers.

+ +

Constructor

+ +

OpenLayers.Control.Attribution

Parameters

options{Object} Options for control.
+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/Button-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/Button-js.html new file mode 100644 index 0000000..670293f --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/Button-js.html @@ -0,0 +1,42 @@ + + +OpenLayers.Control.Button - OpenLayers + + + + + + + + + +

OpenLayers.Control.Button

The Button control is a very simple push-button, for use with OpenLayers.Control.Panel.  When clicked, the function trigger() is executed.

Inherits from

Use

var button = new OpenLayers.Control.Button({
+    displayClass: "MyButton", trigger: myFunction
+});
+panel.addControls([button]);

Will create a button with CSS class MyButtonItemInactive, that will call the function MyFunction() when clicked.

+ +
+ + + + + + + + + + +
The Panel control is a container for other controls.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/DragFeature-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/DragFeature-js.html new file mode 100644 index 0000000..7a36e54 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/DragFeature-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Control.DragFeature - OpenLayers + + + + + + + + + +

OpenLayers.Control.DragFeature

The DragFeature control moves a feature with a drag of the mouse.  Create a new control with the OpenLayers.Control.DragFeature constructor.

Inherits From

Summary
OpenLayers.Control.DragFeatureThe DragFeature control moves a feature with a drag of the mouse.
Properties
geometryTypes{Array(String)} To restrict dragging to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
onStart{Function} Define this function if you want to know when a drag starts.
onDrag{Function} Define this function if you want to know about each move of a feature.
onComplete{Function} Define this function if you want to know when a feature is done dragging.
Constructor
OpenLayers.Control.DragFeatureCreate a new control to drag features.
Functions
destroyTake care of things that are not handled in superclass
activateActivate the control and the feature handler.
deactivateDeactivate the control and all handlers.
+ +

Properties

+ +

geometryTypes

{Array(String)} To restrict dragging to a limited set of geometry types, send a list of strings corresponding to the geometry class names.

+ +

onStart

{Function} Define this function if you want to know when a drag starts.  The function should expect to receive two arguments: the feature that is about to be dragged and the pixel location of the mouse.

Parameters

feature{OpenLayers.Feature.Vector} The feature that is about to be dragged.
pixel{OpenLayers.Pixel} The pixel location of the mouse.
+ +

onDrag

{Function} Define this function if you want to know about each move of a feature.  The function should expect to receive two arguments: the feature that is being dragged and the pixel location of the mouse.

Parameters

feature{OpenLayers.Feature.Vector} The feature that was dragged.
pixel{OpenLayers.Pixel} The pixel location of the mouse.
+ +

onComplete

{Function} Define this function if you want to know when a feature is done dragging.  The function should expect to receive two arguments: the feature that is being dragged and the pixel location of the mouse.

Parameters

feature{OpenLayers.Feature.Vector} The feature that was dragged.
pixel{OpenLayers.Pixel} The pixel location of the mouse.
+ +

Constructor

+ +

OpenLayers.Control.DragFeature

Create a new control to drag features.

Parameters

layer{OpenLayers.Layer.Vector} The layer containing features to be dragged.
options{Object} Optional object whose properties will be set on the control.
+ +

Functions

+ +

destroy

destroy: function()

Take care of things that are not handled in superclass

+ +

activate

activate: function()

Activate the control and the feature handler.

Returns

{Boolean} Successfully activated the control and feature handler.

+ +

deactivate

deactivate: function()

Deactivate the control and all handlers.

Returns

{Boolean} Successfully deactivated the control.

+ +
+ + + + + + + + + + +
destroy: function()
Take care of things that are not handled in superclass
activate: function()
Activate the control and the feature handler.
deactivate: function()
Deactivate the control and all handlers.
Create a new control to drag features.
Controls affect the display or behavior of the map.
Vector features use the OpenLayers.Geometry classes as geometry description.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/DragPan-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/DragPan-js.html new file mode 100644 index 0000000..16e3f57 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/DragPan-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Control.DragPan - OpenLayers + + + + + + + + + +

OpenLayers.Control.DragPan

The DragPan control pans the map with a drag of the mouse.

Inherits from

+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/DrawFeature-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/DrawFeature-js.html new file mode 100644 index 0000000..5f11241 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/DrawFeature-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Control.DrawFeature - OpenLayers + + + + + + + + + +

OpenLayers.Control.DrawFeature

The DrawFeature control draws point, line or polygon features on a vector layer when active.

Inherits from

Summary
OpenLayers.Control.DrawFeatureThe DrawFeature control draws point, line or polygon features on a vector layer when active.
Constants
EVENT_TYPES
Properties
featureAdded{Function} Called after each feature is added
handlerOptions{Object} Used to set non-default properties on the control’s handler
Constructor
OpenLayers.Control.DrawFeature
+ +

Constants

+ +

EVENT_TYPES

Supported event types

featureaddedTriggered when a feature is added
+ +

Properties

+ +

featureAdded

{Function} Called after each feature is added

+ +

handlerOptions

{Object} Used to set non-default properties on the control’s handler

+ +

Constructor

+ +

OpenLayers.Control.DrawFeature

Parameters

layer{OpenLayers.Layer.Vector}
handler{OpenLayers.Handler}
options{Object}
+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Base class to construct a higher-level handler for event sequences.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/EditingToolbar-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/EditingToolbar-js.html new file mode 100644 index 0000000..17c8da8 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/EditingToolbar-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Control.EditingToolbar - OpenLayers + + + + + + + + + +

OpenLayers.Control.EditingToolbar

The EditingToolbar is a panel of 4 controls to draw polygons, lines, points, or to navigate the map by panning.  By default it appears in the upper right corner of the map.

Inherits from

Summary
OpenLayers.Control.EditingToolbarThe EditingToolbar is a panel of 4 controls to draw polygons, lines, points, or to navigate the map by panning.
Constructor
OpenLayers.Control.EditingToolbarCreate an editing toolbar for a given layer.
+ +

Constructor

+ +

OpenLayers.Control.EditingToolbar

Create an editing toolbar for a given layer.

Parameters

layer{OpenLayers.Layer.Vector}
options{Object}
+ +
+ + + + + + + + + + +
The Panel control is a container for other controls.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/GetFeature-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/GetFeature-js.html new file mode 100644 index 0000000..be2646c --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/GetFeature-js.html @@ -0,0 +1,73 @@ + + +OpenLayers.Control.GetFeature - OpenLayers + + + + + + + + + +

OpenLayers.Control.GetFeature

Gets vector features for locations underneath the mouse cursor.  Can be configured to act on click, hover or dragged boxes.  Uses an OpenLayers.Protocol that supports spatial filters (BBOX) to retrieve features from a server and fires events that notify applications of the selected features.

Inherits from

Summary
OpenLayers.Control.GetFeatureGets vector features for locations underneath the mouse cursor.
Properties
protocol{OpenLayers.Protocol} Required.
multipleKey{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the multiple property to true.
toggleKey{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the toggle property to true.
multiple{Boolean} Allow selection of multiple geometries.
click{Boolean} Use a click handler for selecting/unselecting features.
clickout{Boolean} Unselect features when clicking outside any feature.
toggle{Boolean} Unselect a selected feature on click.
clickTolerance{Integer} Tolerance for the BBOX query in pixels.
hover{Boolean} Send feature requests on mouse moves.
box{Boolean} Allow feature selection by drawing a box.
maxFeatures{Integer} Maximum number of features to return from a query, if supported by the protocol.
handlerOptions{Object} Additional options for the handlers used by this control.
Constants
EVENT_TYPES
Constructor
OpenLayers.Control.GetFeatureCreate a new control for fetching remote features.
+ +

Properties

+ +

protocol

{OpenLayers.Protocol} Required.  The protocol used for fetching features.

+ +

multipleKey

{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the multiple property to true.  Default is null.

+ +

toggleKey

{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the toggle property to true.  Default is null.

+ +

multiple

{Boolean} Allow selection of multiple geometries.  Default is false.

+ +

click

{Boolean} Use a click handler for selecting/unselecting features.  Default is true.

+ +

clickout

{Boolean} Unselect features when clicking outside any feature.  Applies only if click is true.  Default is true.

+ +

toggle

{Boolean} Unselect a selected feature on click.  Applies only if click is true.  Default is false.

+ +

clickTolerance

{Integer} Tolerance for the BBOX query in pixels.  This has the same effect as the tolerance parameter on WMS GetFeatureInfo requests.  Will be ignored for box selections.  Applies only if click is true.  Default is 5.

+ +

hover

{Boolean} Send feature requests on mouse moves.  Default is false.

+ +

box

{Boolean} Allow feature selection by drawing a box.

+ +

maxFeatures

{Integer} Maximum number of features to return from a query, if supported by the protocol.  Default is 10.

+ +

handlerOptions

{Object} Additional options for the handlers used by this control.  This is a hash with the keys “click”, “box” and “hover”.

+ +

Constants

+ +

EVENT_TYPES

Supported event types

beforefeatureselectedTriggered when click is true before a feature is selected.  The event object has a feature property with the feature about to select
featureselectedTriggered when click is true and a feature is selected.  The event object has a feature property with the selected feature
featureunselectedTriggered when click is true and a feature is unselected.  The event object has a feature property with the unselected feature
clickoutTriggered when when click is true and no feature was selected.
hoverfeatureTriggered when hover is true and the mouse has stopped over a feature
outfeatureTriggered when hover is true and the mouse moves moved away from a hover-selected feature
+ +

Constructor

+ +

OpenLayers.Control.GetFeature

Create a new control for fetching remote features.

Parameters

options{Object} A configuration object which at least has to contain a protocol property
+ +
+ + + + + + + + + + +
Abstract vector layer protocol class.
{Boolean} Allow selection of multiple geometries.
{Boolean} Unselect a selected feature on click.
{OpenLayers.Protocol} Required.
Controls affect the display or behavior of the map.
{Boolean} Use a click handler for selecting/unselecting features.
{Boolean} Send feature requests on mouse moves.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/KeyboardDefaults-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/KeyboardDefaults-js.html new file mode 100644 index 0000000..6ba287e --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/KeyboardDefaults-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Control.KeyboardDefaults - OpenLayers + + + + + + + + + +

OpenLayers.Control.KeyboardDefaults

The KeyboardDefaults control adds panning and zooming functions, controlled with the keyboard.  By default arrow keys pan, +/- keys zoom & Page Up/Page Down/Home/End scroll by three quarters of a page.

This control has no visible appearance.

Inherits from

Summary
OpenLayers.Control.KeyboardDefaultsThe KeyboardDefaults control adds panning and zooming functions, controlled with the keyboard.
Properties
slideFactorPixels to slide by.
Constructor
OpenLayers.Control.KeyboardDefaults
Functions
destroy
+ +

Properties

+ +

slideFactor

Pixels to slide by.

+ +

Constructor

+ +

OpenLayers.Control.KeyboardDefaults

+ +

Functions

+ +

destroy

destroy: function()
+ +
+ + + + + + + + + + +
destroy: function()
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/LayerSwitcher-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/LayerSwitcher-js.html new file mode 100644 index 0000000..9f3b90c --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/LayerSwitcher-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Control.LayerSwitcher - OpenLayers + + + + + + + + + +

OpenLayers.Control.LayerSwitcher

The LayerSwitcher control displays a table of contents for the map.  This allows the user interface to switch between BaseLasyers and to show or hide Overlays.  By default the switcher is shown minimized on the right edge of the map, the user may expand it by clicking on the handle.

To create the LayerSwitcher outside of the map, pass the Id of a html div as the first argument to the constructor.

Inherits from

Summary
OpenLayers.Control.LayerSwitcherThe LayerSwitcher control displays a table of contents for the map.
Properties
ascending{Boolean}
Constructor
OpenLayers.Control.LayerSwitcher
Functions
destroy
+ +

Properties

+ +

ascending

{Boolean}

+ +

Constructor

+ +

OpenLayers.Control.LayerSwitcher

Parameters

options{Object}
+ +

Functions

+ +

destroy

destroy: function()
+ +
+ + + + + + + + + + +
destroy: function()
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/Measure-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/Measure-js.html new file mode 100644 index 0000000..038f7e8 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/Measure-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Control.Measure - OpenLayers + + + + + + + + + +

OpenLayers.Control.Measure

Allows for drawing of features for measurements.

Inherits from

Summary
OpenLayers.Control.MeasureAllows for drawing of features for measurements.
Constants
EVENT_TYPES{Array(String)} Supported application event types.
Properties
handlerOptions{Object} Used to set non-default properties on the control’s handler
persist{Boolean} Keep the temporary measurement sketch drawn after the measurement is complete.
Constructor
OpenLayers.Control.Measure
Functions
cancelStop the control from measuring.
+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

control.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

Supported control event types (in addition to those from OpenLayers.Control)

measureTriggered when a measurement sketch is complete.  Listeners will receive an event with measure, units, order, and geometry properties.
measurepartialTriggered when a new point is added to the measurement sketch.  Listeners receive an event with measure, units, order, and geometry.
+ +

Properties

+ +

handlerOptions

{Object} Used to set non-default properties on the control’s handler

+ +

persist

{Boolean} Keep the temporary measurement sketch drawn after the measurement is complete.  The geometry will persist until a new measurement is started, the control is deactivated, or cancel is called.

+ +

Constructor

+ +

OpenLayers.Control.Measure

Parameters

handler{OpenLayers.Handler}
options{Object}
+ +

Functions

+ +

cancel

cancel: function()

Stop the control from measuring.  If persist is true, the temporary sketch will be erased.

+ +
+ + + + + + + + + + +
cancel: function()
Stop the control from measuring.
Controls affect the display or behavior of the map.
Base class to construct a higher-level handler for event sequences.
{Boolean} Keep the temporary measurement sketch drawn after the measurement is complete.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/ModifyFeature-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/ModifyFeature-js.html new file mode 100644 index 0000000..6ea852e --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/ModifyFeature-js.html @@ -0,0 +1,82 @@ + + +OpenLayers.Control.ModifyFeature - OpenLayers + + + + + + + + + +

OpenLayers.Control.ModifyFeature

Control to modify features.  When activated, a click renders the vertices of a feature - these vertices can then be dragged.  By default, the delete key will delete the vertex under the mouse.  New features are added by dragging “virtual vertices” between vertices.  Create a new control with the OpenLayers.Control.ModifyFeature constructor.

Inherits From

Summary
OpenLayers.Control.ModifyFeatureControl to modify features.
Properties
geometryTypes{Array(String)} To restrict modification to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
clickout{Boolean} Unselect features when clicking outside any feature.
toggle{Boolean} Unselect a selected feature on click.
deleteCodes{Array(Integer)} Keycodes for deleting verticies.
virtualStyle{Object} A symbolizer to be used for virtual vertices.
mode{Integer} Bitfields specifying the modification mode.
onModificationStart{Function} Deprecated.
onModification{Function} Deprecated.
onModificationEnd{Function} Deprecated.
Constructor
OpenLayers.Control.ModifyFeatureCreate a new modify feature control.
Functions
destroyTake care of things that are not handled in superclass.
activateActivate the control.
deactivateDeactivate the control.
Constants
RESHAPE{Integer} Constant used to make the control work in reshape mode
RESIZE{Integer} Constant used to make the control work in resize mode
ROTATE{Integer} Constant used to make the control work in rotate mode
DRAG{Integer} Constant used to make the control work in drag mode
+ +

Properties

+ +

geometryTypes

{Array(String)} To restrict modification to a limited set of geometry types, send a list of strings corresponding to the geometry class names.

+ +

clickout

{Boolean} Unselect features when clicking outside any feature.  Default is true.

+ +

toggle

{Boolean} Unselect a selected feature on click.  Default is true.

+ +

deleteCodes

{Array(Integer)} Keycodes for deleting verticies.  Set to null to disable vertex deltion by keypress.  If non-null, keypresses with codes in this array will delete vertices under the mouse.  Default is 46 and 68, the ‘delete’ and lowercase ‘d’ keys.

+ +

virtualStyle

{Object} A symbolizer to be used for virtual vertices.

+ +

mode

{Integer} Bitfields specifying the modification mode.  Defaults to OpenLayers.Control.ModifyFeature.RESHAPE.  To set the mode to a combination of options, use the | operator. or example, to allow the control to both resize and rotate features, use the following syntax

control.mode = OpenLayers.Control.ModifyFeature.RESIZE |
+               OpenLayers.Control.ModifyFeature.ROTATE;
+ +

onModificationStart

{Function} Deprecated.  Register for “beforefeaturemodified” instead.  The “beforefeaturemodified” event is triggered on the layer before any modification begins.

Optional function to be called when a feature is selected to be modified.  The function should expect to be called with a feature.  This could be used for example to allow to lock the feature on server-side.

+ +

onModification

{Function} Deprecated.  Register for “featuremodified” instead.  The “featuremodified” event is triggered on the layer with each feature modification.

Optional function to be called when a feature has been modified.  The function should expect to be called with a feature.

+ +

onModificationEnd

{Function} Deprecated.  Register for “afterfeaturemodified” instead.  The “afterfeaturemodified” event is triggered on the layer after a feature has been modified.

Optional function to be called when a feature is finished being modified.  The function should expect to be called with a feature.

+ +

Constructor

+ +

OpenLayers.Control.ModifyFeature

Create a new modify feature control.

Parameters

layer{OpenLayers.Layer.Vector} Layer that contains features that will be modified.
options{Object} Optional object whose properties will be set on the control.
+ +

Functions

+ +

destroy

destroy: function()

Take care of things that are not handled in superclass.

+ +

activate

activate: function()

Activate the control.

Returns

{Boolean} Successfully activated the control.

+ +

deactivate

deactivate: function()

Deactivate the control.

Returns

{Boolean} Successfully deactivated the control.

+ +

Constants

+ +

RESHAPE

{Integer} Constant used to make the control work in reshape mode

+ +

RESIZE

{Integer} Constant used to make the control work in resize mode

+ +

ROTATE

{Integer} Constant used to make the control work in rotate mode

+ +

DRAG

{Integer} Constant used to make the control work in drag mode

+ +
+ + + + + + + + + + +
destroy: function()
Take care of things that are not handled in superclass.
activate: function()
Activate the control.
deactivate: function()
Deactivate the control.
Create a new modify feature control.
Controls affect the display or behavior of the map.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/MouseDefaults-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/MouseDefaults-js.html new file mode 100644 index 0000000..9372975 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/MouseDefaults-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Control.MouseDefaults - OpenLayers + + + + + + + + + +

OpenLayers.Control.MouseDefaults

This class is DEPRECATED in 2.4 and will be removed by 3.0.  If you need this functionality, use OpenLayers.Control.Navigation instead!!!

This class is DEPRECATED in 2.4 and will be removed by 3.0.  If you need this functionality, use Control.Navigation instead!!!

Inherits from

Summary
+ +

Constructor

+ +

OpenLayers.Control.MouseDefaults

+ +

Functions

+ +

destroy

destroy: function()
+ +
+ + + + + + + + + + +
destroy: function()
The navigation control handles map browsing with mouse events (dragging, double-clicking, and scrolling the wheel).
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/MousePosition-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/MousePosition-js.html new file mode 100644 index 0000000..43e3bb1 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/MousePosition-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Control.MousePosition - OpenLayers + + + + + + + + + +

OpenLayers.Control.MousePosition

The MousePosition control displays geographic coordinates of the mouse pointer, as it is moved about the map.

Inherits from

Summary
OpenLayers.Control.MousePositionThe MousePosition control displays geographic coordinates of the mouse pointer, as it is moved about the map.
Properties
prefix{String}
separator{String}
suffix{String}
numDigits{Integer}
granularity{Integer}
displayProjection{OpenLayers.Projection} The projection in which the mouse position is displayed
Constructor
OpenLayers.Control.MousePosition
+ +

Properties

+ +

prefix

{String}

+ +

separator

{String}

+ +

suffix

{String}

+ +

numDigits

{Integer}

+ +

granularity

{Integer}

+ +

displayProjection

{OpenLayers.Projection} The projection in which the mouse position is displayed

+ +

Constructor

+ +

OpenLayers.Control.MousePosition

Parameters

options{Object} Options for control.
+ +
+ + + + + + + + + + +
Class for coordinate transforms between coordinate systems.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/MouseToolbar-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/MouseToolbar-js.html new file mode 100644 index 0000000..be75599 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/MouseToolbar-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Control.MouseToolbar - OpenLayers + + + + + + + + + +

OpenLayers.Control.MouseToolbar

This class is DEPRECATED in 2.4 and will be removed by 3.0.  If you need this functionality, use OpenLayers.Control.NavToolbar instead!!!

Summary
OpenLayers.Control.MouseToolbarThis class is DEPRECATED in 2.4 and will be removed by 3.0.
Properties
direction{String} ‘vertical’ or ‘horizontal’
Constructor
OpenLayers.Control.MouseToolbar
Functions
destroy
+ +

Properties

+ +

direction

{String} ‘vertical’ or ‘horizontal’

+ +

Constructor

+ +

OpenLayers.Control.MouseToolbar

Parameters

position{OpenLayers.Pixel}
direction{String}
+ +

Functions

+ +

destroy

destroy: function()
+ +
+ + + + + + + + + + +
destroy: function()
This Toolbar is an alternative to the Navigation control that displays the state of the control, and provides a UI for changing state to use the zoomBox via a Panel control.
This class represents a screen coordinate, in x and y coordinates
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/NavToolbar-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/NavToolbar-js.html new file mode 100644 index 0000000..69fa984 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/NavToolbar-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Control.NavToolbar - OpenLayers + + + + + + + + + +

OpenLayers.Control.NavToolbar

This Toolbar is an alternative to the Navigation control that displays the state of the control, and provides a UI for changing state to use the zoomBox via a Panel control.

If you wish to change the properties of the Navigation control used in the NavToolbar, see: http://trac.openlayers.org/wiki/Toolbars#SubclassingNavToolbar

Inherits from

Summary
OpenLayers.Control.NavToolbarThis Toolbar is an alternative to the Navigation control that displays the state of the control, and provides a UI for changing state to use the zoomBox via a Panel control.
Constructor
OpenLayers.Control.NavToolbarAdd our two mousedefaults controls.
+ +

Constructor

+ +

OpenLayers.Control.NavToolbar

Add our two mousedefaults controls.

Parameters

options{Object} An optional object whose properties will be used to extend the control.
+ +
+ + + + + + + + + + +
The Panel control is a container for other controls.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/Navigation-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/Navigation-js.html new file mode 100644 index 0000000..8f0dba9 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/Navigation-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Control.Navigation - OpenLayers + + + + + + + + + +

OpenLayers.Control.Navigation

The navigation control handles map browsing with mouse events (dragging, double-clicking, and scrolling the wheel).  Create a new navigation control with the OpenLayers.Control.Navigation control.

Note that this control is added to the map by default (if no controls array is sent in the options object to the OpenLayers.Map constructor).

Inherits

Summary
OpenLayers.Control.NavigationThe navigation control handles map browsing with mouse events (dragging, double-clicking, and scrolling the wheel).
Properties
zoomWheelEnabled{Boolean} Whether the mousewheel should zoom the map
handleRightClicks{Boolean} Whether or not to handle right clicks.
zoomBoxKeyMask{Integer} OpenLayers.Handler key code of the key, which has to be pressed, while drawing the zoom box with the mouse on the screen.
Constructor
OpenLayers.Control.NavigationCreate a new navigation control
+ +

Properties

+ +

zoomWheelEnabled

{Boolean} Whether the mousewheel should zoom the map

+ +

handleRightClicks

{Boolean} Whether or not to handle right clicks.  Default is false.

+ +

zoomBoxKeyMask

{Integer} OpenLayers.Handler key code of the key, which has to be pressed, while drawing the zoom box with the mouse on the screen.  You should probably set handleRightClicks to true if you use this with MOD_CTRL, to disable the context menu for machines which use CTRL-Click as a right click.  Default: <OpenLayers.Handler.MOD_SHIFT

+ +

Constructor

+ +

OpenLayers.Control.Navigation

Create a new navigation control

Parameters

options{Object} An optional object whose properties will be set on the control
+ +
+ + + + + + + + + + +
Base class to construct a higher-level handler for event sequences.
Create a new navigation control
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/NavigationHistory-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/NavigationHistory-js.html new file mode 100644 index 0000000..86b189f --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/NavigationHistory-js.html @@ -0,0 +1,67 @@ + + +OpenLayers.Control.NavigationHistory - OpenLayers + + + + + + + + + +

OpenLayers.Control.NavigationHistory

A navigation history control.  This is a meta-control, that creates two dependent controls: previous and next.  Call the trigger method on the previous and next controls to restore previous and next history states.  The previous and next controls will become active when there are available states to restore and will become deactive when there are no states to restore.

Inherits from

Summary
OpenLayers.Control.NavigationHistoryA navigation history control.
Properties
previous{OpenLayers.Control} A button type control whose trigger method restores the previous state managed by this control.
previousOptions{Object} Set this property on the options argument of the constructor to set optional properties on the previous control.
next{OpenLayers.Control} A button type control whose trigger method restores the next state managed by this control.
nextOptions{Object} Set this property on the options argument of the constructor to set optional properties on the next control.
limit{Integer} Optional limit on the number of history items to retain.
Constructor
OpenLayers.Control.NavigationHistory
Functions
destroyDestroy the control.
nextTriggerRestore the next state.
clearClear history.
activateActivate the control.
deactivateDeactivate the control.
+ +

Properties

+ +

previous

{OpenLayers.Control} A button type control whose trigger method restores the previous state managed by this control.

+ +

previousOptions

{Object} Set this property on the options argument of the constructor to set optional properties on the previous control.

+ +

next

{OpenLayers.Control} A button type control whose trigger method restores the next state managed by this control.

+ +

nextOptions

{Object} Set this property on the options argument of the constructor to set optional properties on the next control.

+ +

limit

{Integer} Optional limit on the number of history items to retain.  If null, there is no limit.  Default is 50.

+ +

Constructor

+ +

OpenLayers.Control.NavigationHistory

Parameters

options{Object} An optional object whose properties will be used to extend the control.
+ +

Functions

+ +

destroy

destroy: function()

Destroy the control.

+ +

nextTrigger

nextTrigger: function()

Restore the next state.  If no items are in the next history stack, this has no effect.  The next history stack is populated as states are restored from the previous history stack.

Returns

{Object} Item representing state that was restored.  Undefined if no items are in the next history stack.

+ +

clear

clear: function()

Clear history.

+ +

activate

activate: function()

Activate the control.  This registers any listeners.

Returns

{Boolean} Control successfully activated.

+ +

deactivate

deactivate: function()

Deactivate the control.  This unregisters any listeners.

Returns

{Boolean} Control successfully deactivated.

+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
{OpenLayers.Control} A button type control whose trigger method restores the previous state managed by this control.
{OpenLayers.Control} A button type control whose trigger method restores the next state managed by this control.
destroy: function()
Destroy the control.
nextTrigger: function()
Restore the next state.
clear: function()
Clear history.
activate: function()
Activate the control.
deactivate: function()
Deactivate the control.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/OverviewMap-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/OverviewMap-js.html new file mode 100644 index 0000000..e38d165 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/OverviewMap-js.html @@ -0,0 +1,73 @@ + + +OpenLayers.Control.OverviewMap - OpenLayers + + + + + + + + + +

OpenLayers.Control.OverviewMap

The OverMap control creates a small overview map, useful to display the extent of a zoomed map and your main map and provide additional navigation options to the User.  By default the overview map is drawn in the lower right corner of the main map.  Create a new overview map with the OpenLayers.Control.OverviewMap constructor.

Inerits from

Summary
OpenLayers.Control.OverviewMapThe OverMap control creates a small overview map, useful to display the extent of a zoomed map and your main map and provide additional navigation options to the User.
Properties
ovmap{OpenLayers.Map} A reference to the overview map itself.
size{OpenLayers.Size} The overvew map size in pixels.
layers{Array(OpenLayers.Layer)} Ordered list of layers in the overview map.
minRectSize{Integer} The minimum width or height (in pixels) of the extent rectangle on the overview map.
minRectDisplayClass{String} Replacement style class name for the extent rectangle when minRectSize is reached.
minRatio{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther out on the overview map.
maxRatio{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther in on the overview map.
mapOptions{Object} An object containing any non-default properties to be sent to the overview map’s map constructor.
autoPan{Boolean} Always pan the overview map, so the extent marker remains in the center.
Constructor
OpenLayers.Control.OverviewMapCreate a new overview map
Functions
destroyDeconstruct the control
+ +

Properties

+ +

ovmap

{OpenLayers.Map} A reference to the overview map itself.

+ +

size

{OpenLayers.Size} The overvew map size in pixels.  Note that this is the size of the map itself - the element that contains the map (default class name olControlOverviewMapElement) may have padding or other style attributes added via CSS.

+ +

layers

{Array(OpenLayers.Layer)} Ordered list of layers in the overview map.  If none are sent at construction, the base layer for the main map is used.

+ +

minRectSize

{Integer} The minimum width or height (in pixels) of the extent rectangle on the overview map.  When the extent rectangle reaches this size, it will be replaced depending on the value of the minRectDisplayClass property.  Default is 15 pixels.

+ +

minRectDisplayClass

{String} Replacement style class name for the extent rectangle when minRectSize is reached.  This string will be suffixed on to the displayClass.  Default is “RectReplacement”.

Example CSS declaration

.olControlOverviewMapRectReplacement {
+    overflow: hidden;
+    cursor: move;
+    background-image: url("img/overview_replacement.gif");
+    background-repeat: no-repeat;
+    background-position: center;
+}
+ +

minRatio

{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther out on the overview map.

+ +

maxRatio

{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther in on the overview map.

+ +

mapOptions

{Object} An object containing any non-default properties to be sent to the overview map’s map constructor.  These should include any non-default options that the main map was constructed with.

+ +

autoPan

{Boolean} Always pan the overview map, so the extent marker remains in the center.  Default is false.  If true, when you drag the extent marker, the overview map will update itself so the marker returns to the center.

+ +

Constructor

+ +

OpenLayers.Control.OverviewMap

Create a new overview map

Parameters

object{Object} Properties of this object will be set on the overview map object.  Note, to set options on the map object contained in this control, set mapOptions as one of the options properties.
+ +

Functions

+ +

destroy

destroy: function()

Deconstruct the control

+ +
+ + + + + + + + + + +
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Instances of this class represent a width/height pair
{Integer} The minimum width or height (in pixels) of the extent rectangle on the overview map.
destroy: function()
Deconstruct the control
Create a new overview map
Controls affect the display or behavior of the map.
{String} Replacement style class name for the extent rectangle when minRectSize is reached.
{Object} An object containing any non-default properties to be sent to the overview map’s map constructor.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/Pan-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/Pan-js.html new file mode 100644 index 0000000..f8b9ba0 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/Pan-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Control.Pan - OpenLayers + + + + + + + + + +

OpenLayers.Control.Pan

The Pan control is a single button to pan the map in one direction.  For a more complete control see OpenLayers.Control.PanPanel.

Inherits from

Summary
OpenLayers.Control.PanThe Pan control is a single button to pan the map in one direction.
Properties
slideFactor{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
Constructor
OpenLayers.Control.PanControl which handles the panning (in any of the cardinal directions) of the map by a set px distance.
+ +

Properties

+ +

slideFactor

{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.

+ +

Constructor

+ +

OpenLayers.Control.Pan

Control which handles the panning (in any of the cardinal directions) of the map by a set px distance.

Parameters

direction{String} The direction this button should pan.
options{Object} An optional object whose properties will be used to extend the control.
+ +
+ + + + + + + + + + +
The PanPanel is visible control for panning the map North, South, East or West in small steps.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/PanPanel-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/PanPanel-js.html new file mode 100644 index 0000000..54f58b6 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/PanPanel-js.html @@ -0,0 +1,45 @@ + + +OpenLayers.Control.PanPanel - OpenLayers + + + + + + + + + +

OpenLayers.Control.PanPanel

The PanPanel is visible control for panning the map North, South, East or West in small steps.  By default it is drawn in the top left corner of the map.

Note

If you wish to use this class with the default images and you want it to look nice in ie6, you should add the following, conditionally added css stylesheet to your HTML file:

<!--[if lte IE 6]>
+  <link rel="stylesheet" href="../theme/default/ie6-style.css" type="text/css" />
+<![endif]-->

Inherits from

Summary
OpenLayers.Control.PanPanelThe PanPanel is visible control for panning the map North, South, East or West in small steps.
Constructor
OpenLayers.Control.PanPanelAdd the four directional pan buttons.
+ +

Constructor

+ +

OpenLayers.Control.PanPanel

Add the four directional pan buttons.

Parameters

options{Object} An optional object whose properties will be used to extend the control.
+ +
+ + + + + + + + + + +
The Panel control is a container for other controls.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/PanZoom-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/PanZoom-js.html new file mode 100644 index 0000000..c03f56e --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/PanZoom-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Control.PanZoom - OpenLayers + + + + + + + + + +

OpenLayers.Control.PanZoom

The PanZoom is a visible control, composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomPanel.  By default it is drawn in the upper left corner of the map.

Inherits from

Summary
OpenLayers.Control.PanZoomThe PanZoom is a visible control, composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomPanel.
Properties
slideFactor{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
slideRatio{Number} The fraction of map width/height by which we’ll pan the map on clicking the arrow buttons.
Constructor
OpenLayers.Control.PanZoom
Functions
destroy
Constants
X{Integer}
Y{Integer}
+ +

Properties

+ +

slideFactor

{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.  If you want to pan by some ratio of the map dimensions, use slideRatio instead.

+ +

slideRatio

{Number} The fraction of map width/height by which we’ll pan the map on clicking the arrow buttons.  Default is null.  If set, will override slideFactor.  E.g. if slideRatio is .5, then the Pan Up button will pan up half the map height.

+ +

Constructor

+ +

OpenLayers.Control.PanZoom

Parameters

options{Object}
+ +

Functions

+ +

destroy

destroy: function()
+ +

Constants

+ +

X

{Integer}

+ +

Y

{Integer}

+ +
+ + + + + + + + + + +
The PanPanel is visible control for panning the map North, South, East or West in small steps.
The ZoomPanel control is a compact collecton of 3 zoom controls: a OpenLayers.Control.ZoomIn, a OpenLayers.Control.ZoomToMaxExtent, and a OpenLayers.Control.ZoomOut.
destroy: function()
Controls affect the display or behavior of the map.
{Number} The fraction of map width/height by which we’ll pan the map on clicking the arrow buttons.
{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/PanZoomBar-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/PanZoomBar-js.html new file mode 100644 index 0000000..fcfe767 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/PanZoomBar-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Control.PanZoomBar - OpenLayers + + + + + + + + + +

OpenLayers.Control.PanZoomBar

The PanZoomBar is a visible control composed of a OpenLayers.Control.PanPanel and a <OpenLayers.Control.ZoomBar>.  By default it is displayed in the upper left corner of the map as 4 directional arrows above a vertical slider.

Inherits from

+ +

Properties

+ +

zoomStopWidth

+ +

zoomStopHeight

+ +

zoomWorldIcon

{Boolean}

+ +

Constructor

+ +

OpenLayers.Control.PanZoomBar

+ +

Functions

+ +

destroy

destroy: function()
+ +
+ + + + + + + + + + +
The PanPanel is visible control for panning the map North, South, East or West in small steps.
destroy: function()
The PanZoom is a visible control, composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomPanel.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/Panel-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/Panel-js.html new file mode 100644 index 0000000..c7f2a83 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/Panel-js.html @@ -0,0 +1,65 @@ + + +OpenLayers.Control.Panel - OpenLayers + + + + + + + + + +

OpenLayers.Control.Panel

The Panel control is a container for other controls.  With it toolbars may be composed.

Inherits from

Summary
OpenLayers.Control.PanelThe Panel control is a container for other controls.
Properties
defaultControl{OpenLayers.Control} The control which is activated when the control is activated (turned on), which also happens at instantiation.
Constructor
OpenLayers.Control.PanelCreate a new control panel.
Functions
destroy
activate
deactivate
activateControl
addControlsTo build a toolbar, you add a set of controls to it.
getControlsByGet a list of controls with properties matching the given criteria.
getControlsByNameGet a list of contorls with names matching the given name.
getControlsByClassGet a list of controls of a given type (CLASS_NAME).
+ +

Properties

+ +

defaultControl

{OpenLayers.Control} The control which is activated when the control is activated (turned on), which also happens at instantiation.

+ +

Constructor

+ +

OpenLayers.Control.Panel

Create a new control panel.

Parameters

options{Object} An optional object whose properties will be used to extend the control.
+ +

Functions

+ +

destroy

destroy: function()
+ +

activate

activate: function()
+ +

deactivate

deactivate: function()
+ +

activateControl

activateControl: function (control)

Parameters

control{OpenLayers.Control}
+ +

addControls

addControls: function(controls)

To build a toolbar, you add a set of controls to it. addControls lets you add a single control or a list of controls to the Control Panel.

Parameters

controls{OpenLayers.Control}
+ +

getControlsBy

getControlsBy: function(property,
match)

Get a list of controls with properties matching the given criteria.

Parameter

property{String} A control property to be matched.
match{String | Object} A string to match.  Can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if match.test(control[property]) evaluates to true, the control will be included in the array returned.  If no controls are found, an empty array is returned.

Returns

{Array(OpenLayers.Control)} A list of controls matching the given criteria.  An empty array is returned if no matches are found.

+ +

getControlsByName

getControlsByName: function(match)

Get a list of contorls with names matching the given name.

Parameter

match{String | Object} A control name.  The name can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if name.test(control.name) evaluates to true, the control will be included in the list of controls returned.  If no controls are found, an empty array is returned.

Returns

{Array(OpenLayers.Control)} A list of controls matching the given name.  An empty array is returned if no matches are found.

+ +

getControlsByClass

getControlsByClass: function(match)

Get a list of controls of a given type (CLASS_NAME).

Parameter

match{String | Object} A control class name.  The type can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if type.test(control.CLASS_NAME) evaluates to true, the control will be included in the list of controls returned.  If no controls are found, an empty array is returned.

Returns

{Array(OpenLayers.Control)} A list of controls matching the given type.  An empty array is returned if no matches are found.

+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
destroy: function()
activate: function()
deactivate: function()
activateControl: function (control)
addControls: function(controls)
To build a toolbar, you add a set of controls to it.
getControlsBy: function(property,
match)
Get a list of controls with properties matching the given criteria.
getControlsByName: function(match)
Get a list of contorls with names matching the given name.
getControlsByClass: function(match)
Get a list of controls of a given type (CLASS_NAME).
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/Permalink-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/Permalink-js.html new file mode 100644 index 0000000..c0cc818 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/Permalink-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Control.Permalink - OpenLayers + + + + + + + + + +

OpenLayers.Control.Permalink

The Permalink control is hyperlink that will return the user to the current map view.  By default it is drawn in the lower right corner of the map.  The href is updated as the map is zoomed, panned and whilst layers are switched.  ` Inherits from:

Summary
OpenLayers.Control.PermalinkThe Permalink control is hyperlink that will return the user to the current map view.
Properties
argParserClass{Class} The ArgParser control class (not instance) to use with this control.
base{String}
displayProjection{OpenLayers.Projection} Requires proj4js support.
Constructor
OpenLayers.Control.Permalink
Functions
destroy
createParamsCreates the parameters that need to be encoded into the permalink url.
+ +

Properties

+ +

argParserClass

{Class} The ArgParser control class (not instance) to use with this control.

+ +

base

{String}

+ +

displayProjection

{OpenLayers.Projection} Requires proj4js support.  Projection used when creating the coordinates in the link.  This will reproject the map coordinates into display coordinates.  If you are using this functionality, the permalink which is last added to the map will determine the coordinate type which is read from the URL, which means you should not add permalinks with different displayProjections to the same map.

+ +

Constructor

+ +

OpenLayers.Control.Permalink

Parameters

element{DOMElement}
base{String}
options{Object} options to the control.
+ +

Functions

+ +

destroy

destroy: function()
+ +

createParams

createParams: function(center,
zoom,
layers)

Creates the parameters that need to be encoded into the permalink url.

Parameters

center{OpenLayers.LonLat} center to encode in the permalink.  Defaults to the current map center.
zoom{Integer} zoom level to encode in the permalink.  Defaults to the current map zoom level.
layers{Array(OpenLayers.Layer)} layers to encode in the permalink.  Defaults to the current map layers.

Returns

{Object} Hash of parameters that will be url-encoded into the permalink.

+ +
+ + + + + + + + + + +
Class for coordinate transforms between coordinate systems.
destroy: function()
createParams: function(center,
zoom,
layers)
Creates the parameters that need to be encoded into the permalink url.
Controls affect the display or behavior of the map.
This class represents a longitude and latitude pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/Scale-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/Scale-js.html new file mode 100644 index 0000000..2f30129 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/Scale-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Control.Scale - OpenLayers + + + + + + + + + +

OpenLayers.Control.Scale

The Scale control displays the current map scale as a ratio (e.g.  Scale = 1:1M).  By default it is displayed in the lower right corner of the map.

Inherits from

Summary
OpenLayers.Control.ScaleThe Scale control displays the current map scale as a ratio (e.g.
Constructor
OpenLayers.Control.Scale
+ +

Constructor

+ +

OpenLayers.Control.Scale

Parameters

element{DOMElement}
options{Object}
+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/ScaleLine-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/ScaleLine-js.html new file mode 100644 index 0000000..83cfe21 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/ScaleLine-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Control.ScaleLine - OpenLayers + + + + + + + + + +

OpenLayers.Control.ScaleLine

The ScaleLine displays a small line indicator representing the current map scale on the map.  By default it is drawn in the lower left corner of the map.

Inherits from

Is a very close copy of

Summary
OpenLayers.Control.ScaleLineThe ScaleLine displays a small line indicator representing the current map scale on the map.
Constructor
OpenLayers.Control.ScaleLineCreate a new scale line control.
+ +

Constructor

+ +

OpenLayers.Control.ScaleLine

Create a new scale line control.

Parameters

options{Object} An optional object whose properties will be used to extend the control.
+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
The Scale control displays the current map scale as a ratio (e.g.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/SelectFeature-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/SelectFeature-js.html new file mode 100644 index 0000000..1813212 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/SelectFeature-js.html @@ -0,0 +1,71 @@ + + +OpenLayers.Control.SelectFeature - OpenLayers + + + + + + + + + +

OpenLayers.Control.SelectFeature

The SelectFeature control selects vector features from a given layer on click or hover.

Inherits from

Summary
OpenLayers.Control.SelectFeatureThe SelectFeature control selects vector features from a given layer on click or hover.
Constants
EVENT_TYPES
Properties
multiple{Boolean} Allow selection of multiple geometries.
clickout{Boolean} Unselect features when clicking outside any feature.
toggle{Boolean} Unselect a selected feature on click.
hover{Boolean} Select on mouse over and deselect on mouse out.
highlightOnly{Boolean} If true do not actually select features (i.e.
box{Boolean} Allow feature selection by drawing a box.
onSelect{Function} Optional function to be called when a feature is selected.
onUnselect{Function} Optional function to be called when a feature is unselected.
geometryTypes{Array(String)} To restrict selecting to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
callbacks{Object} The functions that are sent to the handlers.feature for callback
selectStyle{Object} Hash of styles
Constructor
OpenLayers.Control.SelectFeatureCreate a new control for selecting features.
+ +

Constants

+ +

EVENT_TYPES

Supported event types

  • beforefeaturehighlighted Triggered before a feature is highlighted
  • featurehighlighted Triggered when a feature is highlighted
  • featureunhighlighted Triggered when a feature is unhighlighted
+ +

Properties

+ +

multiple

{Boolean} Allow selection of multiple geometries.  Default is false.

+ +

clickout

{Boolean} Unselect features when clicking outside any feature.  Default is true.

+ +

toggle

{Boolean} Unselect a selected feature on click.  Default is false.  Only has meaning if hover is false.

+ +

hover

{Boolean} Select on mouse over and deselect on mouse out.  If true, this ignores clicks and only listens to mouse moves.

+ +

highlightOnly

{Boolean} If true do not actually select features (i.e. place them in the layer’s selected features array), just highlight them.  This property has no effect if hover is false.  Defaults to false.

+ +

box

{Boolean} Allow feature selection by drawing a box.

+ +

onSelect

{Function} Optional function to be called when a feature is selected.  The function should expect to be called with a feature.

+ +

onUnselect

{Function} Optional function to be called when a feature is unselected.  The function should expect to be called with a feature.

+ +

geometryTypes

{Array(String)} To restrict selecting to a limited set of geometry types, send a list of strings corresponding to the geometry class names.

+ +

callbacks

{Object} The functions that are sent to the handlers.feature for callback

+ +

selectStyle

{Object} Hash of styles

+ +

Constructor

+ +

OpenLayers.Control.SelectFeature

Create a new control for selecting features.

Parameters

layers{OpenLayers.Layer.Vector}, or an array of vector layers.  The layer(s) this control will select features from.
options{Object}
+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/Snapping-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/Snapping-js.html new file mode 100644 index 0000000..1e541d8 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/Snapping-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Control.Snapping - OpenLayers + + + + + + + + + +

OpenLayers.Control.Snapping

Acts as a snapping agent while editing vector features.

Inherits from

Summary
OpenLayers.Control.SnappingActs as a snapping agent while editing vector features.
Constants
EVENT_TYPES{Array(String)} Supported application event types.
DEFAULTSDefault target properties.
Constructor
OpenLayers.Control.SnappingCreates a new snapping control.
Functions
setLayerSet the editable layer.
activateActivate the control.
deactivateDeactivate the control.
+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

control.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

Supported control event types (in addition to those from OpenLayers.Control)

beforesnapTriggered before a snap occurs.  Listeners receive an event object with point, x, y, distance, layer, and snapType properties.  The point property will be original point geometry considered for snapping.  The x and y properties represent coordinates the point will receive.  The distance is the distance of the snap.  The layer is the target layer.  The snapType property will be one of “node”, “vertex”, or “edge”.  Return false to stop snapping from occurring.
snapTriggered when a snap occurs.  Listeners receive an event with point, snapType, layer, and distance properties.  The point will be the location snapped to.  The snapType will be one of “node”, “vertex”, or “edge”.  The layer will be the target layer.  The distance will be the distance of the snap in map units.
unsnapTriggered when a vertex is unsnapped.  Listeners receive an event with a point property.
+ +

DEFAULTS

Default target properties.

+ +

Constructor

+ +

OpenLayers.Control.Snapping

Creates a new snapping control.  A control is constructed with an editable layer and a set of configuration objects for target layers.  While the control is active, dragging vertices while drawing new features or modifying existing features on the editable layer will engage snapping to features on the target layers.  Whether a vertex snaps to a feature on a target layer depends on the target layer configuration.

Parameters

options{Object} An object containing all configuration properties for the control.

Valid options

layer{OpenLayers.Layer.Vector} The editable layer.  Features from this layer that are digitized or modified may have vertices snapped to features from any of the target layers.
targets{Array(Object | OpenLayers.Layer.Vector)} A list of objects for configuring target layers.  See valid properties of the target objects below.  If the items in the targets list are vector layers (instead of configuration objects), the defaults from the <defaults> property will apply.  The editable layer itself may be a target
layerallowing newly created or edited features to be snapped to existing features from the same layer.  If no targets are provided the layer given in the constructor (as <layer>) will become the initial target.
defaults{Object} An object with default properties to be applied to all target objects.
greedy{Boolean} Snap to closest feature in first target layer that applies.  Default is true.  If false, all features in all target layers will be checked and the closest feature in all target layers will be chosen.  The greedy property determines if the order of the target layers is significant.  By default, the order of the target layers is significant where layers earlier in the target layer list have precedence over layers later in the list.  Within a single layer, the closest feature is always chosen for snapping.  This property only determines whether the search for a closer feature continues after an eligible feature is found in a target layer.

Valid target properties

layer{OpenLayers.Layer.Vector} A target layer.  Features from this layer will be eligible to act as snapping target for the editable layer.
tolerance{Float} The distance (in pixels) at which snapping may occur.  Default is 10.
node{Boolean} Snap to nodes (first or last point in a geometry) in target layer.  Default is true.
nodeTolerance{Float} Optional distance at which snapping may occur for nodes specifically.  If none is provided, <tolerance> will be used.
vertex{Boolean} Snap to vertices in target layer.  Default is true.
vertexTolerance{Float} Optional distance at which snapping may occur for vertices specifically.  If none is provided, <tolerance> will be used.
edge{Boolean} Snap to edges in target layer.  Default is true.
edgeTolerance{Float} Optional distance at which snapping may occur for edges specifically.  If none is provided, <tolerance> will be used.
filter{OpenLayers.Filter} Optional filter to evaluate to determine if feature is eligible for snapping.  If filter evaluates to true for a target feature a vertex may be snapped to the feature.
+ +

Functions

+ +

setLayer

setLayer: function(layer)

Set the editable layer.  Call the setLayer method if the editable layer changes and the same control should be used on a new editable layer.  If the control is already active, it will be active after the new layer is set.

Parameters

layer{OpenLayers.Layer.Vector} The new editable layer.
+ +

activate

activate: function()

Activate the control.  Activating the control registers listeners for editing related events so that during feature creation and modification, moving vertices will trigger snapping.

+ +

deactivate

deactivate: function()

Deactivate the control.  Deactivating the control unregisters listeners so feature editing may proceed without engaging the snapping agent.

+ +
+ + + + + + + + + + +
setLayer: function(layer)
Set the editable layer.
activate: function()
Activate the control.
deactivate: function()
Deactivate the control.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/Split-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/Split-js.html new file mode 100644 index 0000000..a07abb2 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/Split-js.html @@ -0,0 +1,71 @@ + + +OpenLayers.Control.Split - OpenLayers + + + + + + + + + +

OpenLayers.Control.Split

Acts as a split feature agent while editing vector features.

Inherits from

Summary
OpenLayers.Control.SplitActs as a split feature agent while editing vector features.
Constants
EVENT_TYPES{Array(String)} Supported application event types.
Properties
layer{OpenLayers.Layer.Vector} The target layer with features to be split.
tolerance{Number} Distance between the calculated intersection and a vertex on the source geometry below which the existing vertex will be used for the split.
edge{Boolean} Allow splits given intersection of edges only.
deferDelete{Boolean} Instead of removing features from the layer, set feature states of split features to DELETE.
mutual{Boolean} If source and target layers are the same, split source features and target features where they intersect.
targetFilter{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
sourceFilter{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
Constructor
OpenLayers.Control.SplitCreates a new split control.
Functions
setSourceSet the source layer for edits layer.
activateActivate the control.
deactivateDeactivate the control.
+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

control.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

Supported control event types (in addition to those from OpenLayers.Control)

beforesplitTriggered before a split occurs.  Listeners receive an event object with source and target properties.
splitTriggered when a split occurs.  Listeners receive an event with an original property and a features property.  The original is a reference to the target feature that the sketch or modified feature intersects.  The features property is a list of all features that result from this single split.  This event is triggered before the resulting features are added to the layer (while the layer still has a reference to the original).
aftersplitTriggered after all splits resulting from a single sketch or feature modification have occurred.  The original features have been destroyed and features that result from the split have already been added to the layer.  Listeners receive an event with a source and features property.  The source references the sketch or modified feature used as a splitter.  The features property is a list of all resulting features.
+ +

Properties

+ +

layer

{OpenLayers.Layer.Vector} The target layer with features to be split.  Set at construction or after construction with <setLayer>.

+ +

tolerance

{Number} Distance between the calculated intersection and a vertex on the source geometry below which the existing vertex will be used for the split.  Default is null.

+ +

edge

{Boolean} Allow splits given intersection of edges only.  Default is true.  If false, a vertex on the source must be within the tolerance distance of the calculated intersection for a split to occur.

+ +

deferDelete

{Boolean} Instead of removing features from the layer, set feature states of split features to DELETE.  This assumes a save strategy or other component is in charge of removing features from the layer.  Default is false.  If false, split features will be immediately deleted from the layer.

+ +

mutual

{Boolean} If source and target layers are the same, split source features and target features where they intersect.  Default is true.  If false, only target features will be split.

+ +

targetFilter

{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.

+ +

sourceFilter

{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.

+ +

Constructor

+ +

OpenLayers.Control.Split

Creates a new split control.  A control is constructed with a target layer and an optional source layer.  While the control is active, creating new features or modifying existing features on the source layer will result in splitting any eligible features on the target layer.  If no source layer is provided, a temporary sketch layer will be created to create lines for splitting features on the target.

Parameters

options{Object} An object containing all configuration properties for the control.

Valid options

layer{OpenLayers.Layer.Vector} The target layer.  Features from this layer will be split by new or modified features on the source layer or temporary sketch layer.
source{OpenLayers.Layer.Vector} Optional source layer.  If provided newly created features or modified features will be used to split features on the target layer.  If not provided, a temporary sketch layer will be created for drawing lines.
tolerance{Number} Optional value for the distance between a source vertex and the calculated intersection below which the split will occur at the vertex.
edge{Boolean} Allow splits given intersection of edges only.  Default is true.  If false, a vertex on the source must be within the tolerance distance of the calculated intersection for a split to occur.
mutual{Boolean} If source and target are the same, split source features and target features where they intersect.  Default is true.  If false, only target features will be split.
targetFilter{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
sourceFilter{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
+ +

Functions

+ +

setSource

setSource: function(layer)

Set the source layer for edits layer.

Parameters

layer{OpenLayers.Layer.Vector} The new source layer layer.  If null, a temporary sketch layer will be created.
+ +

activate

activate: function()

Activate the control.  Activating the control registers listeners for editing related events so that during feature creation and modification, features in the target will be considered for splitting.

+ +

deactivate

deactivate: function()

Deactivate the control.  Deactivating the control unregisters listeners so feature editing may proceed without engaging the split agent.

+ +
+ + + + + + + + + + +
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
setSource: function(layer)
Set the source layer for edits layer.
activate: function()
Activate the control.
deactivate: function()
Deactivate the control.
Controls affect the display or behavior of the map.
{Number} Distance between the calculated intersection and a vertex on the source geometry below which the existing vertex will be used for the split.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/WMSGetFeatureInfo-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/WMSGetFeatureInfo-js.html new file mode 100644 index 0000000..f9eedb9 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/WMSGetFeatureInfo-js.html @@ -0,0 +1,58 @@ + + +OpenLayers.Control.WMSGetFeatureInfo - OpenLayers + + + + + + + + + +

OpenLayers.Control.WMSGetFeatureInfo

The WMSGetFeatureInfo control uses a WMS query to get information about a point on the map.  The information may be in a display-friendly format such as HTML, or a machine-friendly format such as GML, depending on the server’s capabilities and the client’s configuration.  This control handles click or hover events, attempts to parse the results using an OpenLayers.Format, and fires a ‘getfeatureinfo’ event with the click position, the raw body of the response, and an array of features if it successfully read the response.

Inherits from

Summary
OpenLayers.Control.WMSGetFeatureInfoThe WMSGetFeatureInfo control uses a WMS query to get information about a point on the map.
Properties
hover{Boolean} Send GetFeatureInfo requests when mouse stops moving.
maxFeatures{Integer} Maximum number of features to return from a WMS query.
handlerOptions{Object} Additional options for the handlers used by this control, e.g.
Constants
EVENT_TYPES
Constructor
<OpenLayers.Control.WMSGetFeatureInfo>
+ +

Properties

+ +

hover

{Boolean} Send GetFeatureInfo requests when mouse stops moving.  Default is false.

+ +

maxFeatures

{Integer} Maximum number of features to return from a WMS query.  This sets the feature_count parameter on WMS GetFeatureInfo requests.

+ +

handlerOptions

{Object} Additional options for the handlers used by this control, e.g.

{
+    "click": {delay: 100},
+    "hover": {delay: 300}
+}
+ +

Constants

+ +

EVENT_TYPES

Supported event types (in addition to those from OpenLayers.Control)

getfeatureinfoTriggered when a GetFeatureInfo response is received.  The event object has a text property with the body of the response (String), a features property with an array of the parsed features, an xy property with the position of the mouse click or hover event that triggered the request, and a request property with the request itself.
+ +

Constructor

+ +

<OpenLayers.Control.WMSGetFeatureInfo>

Parameters

options{Object}
+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomBox-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomBox-js.html new file mode 100644 index 0000000..96e6174 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomBox-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Control.ZoomBox - OpenLayers + + + + + + + + + +

OpenLayers.Control.ZoomBox

The ZoomBox control enables zooming directly to a given extent, by drawing a box on the map.  The box is drawn by holding down shift, whilst dragging the mouse.

Inherits from

+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomIn-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomIn-js.html new file mode 100644 index 0000000..5810283 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomIn-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Control.ZoomIn - OpenLayers + + + + + + + + + +

OpenLayers.Control.ZoomIn

The ZoomIn control is a button to increase the zoom level of a map.

Inherits from

+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomOut-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomOut-js.html new file mode 100644 index 0000000..1114077 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomOut-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Control.ZoomOut - OpenLayers + + + + + + + + + +

OpenLayers.Control.ZoomOut

The ZoomOut control is a button to decrease the zoom level of a map.

Inherits from

+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomPanel-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomPanel-js.html new file mode 100644 index 0000000..d64b297 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomPanel-js.html @@ -0,0 +1,45 @@ + + +OpenLayers.Control.ZoomPanel - OpenLayers + + + + + + + + + +

OpenLayers.Control.ZoomPanel

The ZoomPanel control is a compact collecton of 3 zoom controls: a OpenLayers.Control.ZoomIn, a OpenLayers.Control.ZoomToMaxExtent, and a OpenLayers.Control.ZoomOut.  By default it is drawn in the upper left corner of the map.

Note

If you wish to use this class with the default images and you want it to look nice in ie6, you should add the following, conditionally added css stylesheet to your HTML file:

<!--[if lte IE 6]>
+  <link rel="stylesheet" href="../theme/default/ie6-style.css" type="text/css" />
+<![endif]-->

Inherits from

Summary
OpenLayers.Control.ZoomPanelThe ZoomPanel control is a compact collecton of 3 zoom controls: a OpenLayers.Control.ZoomIn, a OpenLayers.Control.ZoomToMaxExtent, and a OpenLayers.Control.ZoomOut.
Constructor
OpenLayers.Control.ZoomPanelAdd the three zooming controls.
+ +

Constructor

+ +

OpenLayers.Control.ZoomPanel

Add the three zooming controls.

Parameters

options{Object} An optional object whose properties will be used to extend the control.
+ +
+ + + + + + + + + + +
The ZoomIn control is a button to increase the zoom level of a map.
The ZoomToMaxExtent control is a button that zooms out to the maximum extent of the map.
The ZoomOut control is a button to decrease the zoom level of a map.
The Panel control is a container for other controls.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomToMaxExtent-js.html b/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomToMaxExtent-js.html new file mode 100644 index 0000000..5d076e8 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Control/ZoomToMaxExtent-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Control.ZoomToMaxExtent - OpenLayers + + + + + + + + + +

OpenLayers.Control.ZoomToMaxExtent

The ZoomToMaxExtent control is a button that zooms out to the maximum extent of the map.  It is designed to be used with a OpenLayers.Control.Panel.

Inherits from

+ +
+ + + + + + + + + + +
The Panel control is a container for other controls.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Events-js.html b/openlayers/doc/apidocs/files/OpenLayers/Events-js.html new file mode 100644 index 0000000..b6debc7 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Events-js.html @@ -0,0 +1,91 @@ + + +OpenLayers.Event - OpenLayers + + + + + + + + + +

OpenLayers.Event

Utility functions for event handling.

Summary
OpenLayers.EventUtility functions for event handling.
Constants
KEY_BACKSPACE{int}
KEY_TAB{int}
KEY_RETURN{int}
KEY_ESC{int}
KEY_LEFT{int}
KEY_UP{int}
KEY_RIGHT{int}
KEY_DOWN{int}
KEY_DELETE{int}
OpenLayers.Events
Constants
BROWSER_EVENTS{Array(String)} supported events
Properties
fallThrough{Boolean}
includeXY{Boolean} Should the .xy property automatically be created for browser mouse events? 
Constructor
OpenLayers.EventsConstruct an OpenLayers.Events object.
Functions
destroy
addEventTypeAdd a new event type to this events object.
registerRegister an event on the events object.
registerPrioritySame as register() but adds the new listener to the front of the events queue instead of to the end.
unregister
triggerEventTrigger a specified registered event.
clearMouseCacheClear cached data about the mouse position.
+ +

Constants

+ +

KEY_BACKSPACE

{int}

+ +

KEY_TAB

{int}

+ +

KEY_RETURN

{int}

+ +

KEY_ESC

{int}

+ +

KEY_LEFT

{int}

+ +

KEY_UP

{int}

+ +

KEY_RIGHT

{int}

+ +

KEY_DOWN

{int}

+ +

KEY_DELETE

{int}

+ +

OpenLayers.Events

Summary
Constants
BROWSER_EVENTS{Array(String)} supported events
Properties
fallThrough{Boolean}
includeXY{Boolean} Should the .xy property automatically be created for browser mouse events? 
Constructor
OpenLayers.EventsConstruct an OpenLayers.Events object.
Functions
destroy
addEventTypeAdd a new event type to this events object.
registerRegister an event on the events object.
registerPrioritySame as register() but adds the new listener to the front of the events queue instead of to the end.
unregister
triggerEventTrigger a specified registered event.
clearMouseCacheClear cached data about the mouse position.
+ +

Constants

+ +

BROWSER_EVENTS

{Array(String)} supported events

+ +

Properties

+ +

fallThrough

{Boolean}

+ +

includeXY

{Boolean} Should the .xy property automatically be created for browser mouse events?  In general, this should be false.  If it is true, then mouse events will automatically generate a ‘.xy’ property on the event object that is passed.  (Prior to OpenLayers 2.7, this was true by default.)  Otherwise, you can call the getMousePosition on the relevant events handler on the object available via the ‘evt.object’ property of the evt object.  So, for most events, you can call: function named(evt) { this.xy = this.object.events.getMousePosition(evt) }

This option typically defaults to false for performance reasons

when creating an events object whose primary purpose is to manage relatively positioned mouse events within a div, it may make sense to set it to true.

This option is also used to control whether the events object caches offsets.  If this is false, it will not: the reason for this is that it is only expected to be called many times if the includeXY property is set to true.  If you set this to true, you are expected to clear the offset cache manually (using this.clearMouseCache()) if: the border of the element changes the location of the element in the page changes

+ +

Constructor

+ +

OpenLayers.Events

Construct an OpenLayers.Events object.

Parameters

object{Object} The js object to which this Events object is being
added element{DOMElement} A dom element to respond to browser events
eventTypes{Array(String)} Array of custom application events
fallThrough{Boolean} Allow events to fall through after these have been handled?
options{Object} Options for the events object.
+ +

Functions

+ +

destroy

destroy: function ()
+ +

addEventType

addEventType: function(eventName)

Add a new event type to this events object.  If the event type has already been added, do nothing.

Parameters

eventName{String}
+ +

register

register: function (type,
obj,
func)

Register an event on the events object.

When the event is triggered, the ‘func’ function will be called, in the context of ‘obj’.  Imagine we were to register an event, specifying an OpenLayers.Bounds Object as ‘obj’.  When the event is triggered, the context in the callback function will be our Bounds object.  This means that within our callback function, we can access the properties and methods of the Bounds object through the “this” variable.  So our callback could execute something like:

leftStr = "Left: " + this.left;

or

centerStr = "Center: " + this.getCenterLonLat();

Parameters

type{String} Name of the event to register
obj{Object} The object to bind the context to for the callback#.  If no object is specified, default is the Events’s ‘object’ property.
func{Function} The callback function.  If no callback is specified, this function does nothing.
+ +

registerPriority

registerPriority: function (type,
obj,
func)

Same as register() but adds the new listener to the front of the events queue instead of to the end.

TODO: get rid of this in 3.0Decide whether listeners should be called in the order they were registered or in reverse order.

Parameters

type{String} Name of the event to register
obj{Object} The object to bind the context to for the callback#.  If no object is specified, default is the Events’s ‘object’ property.
func{Function} The callback function.  If no callback is specified, this function does nothing.
+ +

unregister

unregister: function (type,
obj,
func)

Parameters

type{String}
obj{Object} If none specified, defaults to this.object
func{Function}
+ +

triggerEvent

triggerEvent: function (type,
evt)

Trigger a specified registered event.

Parameters

type{String}
evt{Event}

Returns

{Boolean} The last listener return.  If a listener returns false, the chain of listeners will stop getting called.

+ +

clearMouseCache

clearMouseCache: function()

Clear cached data about the mouse position.  This should be called any time the element that events are registered on changes position within the page.

+ +
+ + + + + + + + + + +
destroy: function ()
addEventType: function(eventName)
Add a new event type to this events object.
register: function (type,
obj,
func)
Register an event on the events object.
registerPriority: function (type,
obj,
func)
Same as register() but adds the new listener to the front of the events queue instead of to the end.
unregister: function (type,
obj,
func)
triggerEvent: function (type,
evt)
Trigger a specified registered event.
clearMouseCache: function()
Clear cached data about the mouse position.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Feature-js.html b/openlayers/doc/apidocs/files/OpenLayers/Feature-js.html new file mode 100644 index 0000000..080792b --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Feature-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Feature - OpenLayers + + + + + + + + + +

OpenLayers.Feature

Features are combinations of geography and attributes.  The OpenLayers.Feature class specifically combines a marker and a lonlat.

Summary
OpenLayers.FeatureFeatures are combinations of geography and attributes.
Properties
popupClass{OpenLayers.Class} The class which will be used to instantiate a new Popup.
Constructor
OpenLayers.FeatureConstructor for features.
+ +

Properties

+ +

popupClass

{OpenLayers.Class} The class which will be used to instantiate a new Popup.  Default is OpenLayers.Popup.AnchoredBubble.

+ +

Constructor

+ +

OpenLayers.Feature

Constructor for features.

Parameters

layer{OpenLayers.Layer}
lonlat{OpenLayers.LonLat}
data{Object}

Returns

{OpenLayers.Feature}

+ +
+ + + + + + + + + + +
Base class used to construct all other classes.
This class represents a longitude and latitude pair
Constructor for features.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Feature/Vector-js.html b/openlayers/doc/apidocs/files/OpenLayers/Feature/Vector-js.html new file mode 100644 index 0000000..27ce01e --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Feature/Vector-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Feature.Vector - OpenLayers + + + + + + + + + +

OpenLayers.Feature.Vector

Vector features use the OpenLayers.Geometry classes as geometry description.  They have an ‘attributes’ property, which is the data object, and a ‘style’ property, the default values of which are defined in the OpenLayers.Feature.Vector.style objects.

Inherits from

Summary
OpenLayers.Feature.VectorVector features use the OpenLayers.Geometry classes as geometry description.
Properties
geometry{OpenLayers.Geometry}
attributes{Object} This object holds arbitrary properties that describe the feature.
style{Object}
Constructor
OpenLayers.Feature.VectorCreate a vector feature.
Constants
OpenLayers.Feature.Vector.styleOpenLayers features can have a number of style attributes.
+ +

Properties

+ + + +

attributes

{Object} This object holds arbitrary properties that describe the feature.

+ +

style

{Object}

+ +

Constructor

+ +

OpenLayers.Feature.Vector

Create a vector feature.

Parameters

geometry{OpenLayers.Geometry} The geometry that this feature represents.
attributes{Object} An optional object that will be mapped to the attributes property.
style{Object} An optional style object.
+ +

Constants

+ +

OpenLayers.Feature.Vector.style

OpenLayers features can have a number of style attributes.  The ‘default’ style will typically be used if no other style is specified.  These styles correspond for the most part, to the styling properties defined by the SVG standard.  Information on fill properties: http://www.w3.org/TR/SVG/painting.html#FillProperties Information on stroke properties: http://www.w3.org/TR/SVG/painting.html#StrokeProperties

Symbolizer properties

fill{Boolean} Set to false if no fill is desired.
fillColor{String} Hex fill color.  Default is “#ee9900”.
fillOpacity{Number} Fill opacity (0-1).  Default is 0.4
stroke{Boolean} Set to false if no stroke is desired.
strokeColor{String} Hex stroke color.  Default is “#ee9900”.
strokeOpacity{Number} Stroke opacity (0-1).  Default is 1.
strokeWidth{Number} Pixel stroke width.  Default is 1.
strokeLinecap{String} Stroke cap type.  Default is “round”.  [butt | round | square]
strokeDashstyle{String} Stroke dash style.  Default is “solid”.  [dot | dash | dashdot | longdash | longdashdot | solid]
graphic{Boolean} Set to false if no graphic is desired.
pointRadius{Number} Pixel point radius.  Default is 6.
pointerEvents{String} Default is “visiblePainted”.
cursor{String} Default is “”.
externalGraphic{String} Url to an external graphic that will be used for rendering points.
graphicWidth{Number} Pixel width for sizing an external graphic.
graphicHeight{Number} Pixel height for sizing an external graphic.
graphicOpacity{Number} Opacity (0-1) for an external graphic.
graphicXOffset{Number} Pixel offset along the positive x axis for displacing an external graphic.
graphicYOffset{Number} Pixel offset along the positive y axis for displacing an external graphic.
graphicZIndex{Number} The integer z-index value to use in rendering.
graphicName{String} Named graphic to use when rendering points.  Supported values include “circle” (default), “square”, “star”, “x”, “cross”, “triangle”.
graphicTitle{String} Tooltip for an external graphic.  Only supported in Firefox and Internet Explorer.
backgroundGraphic{String} Url to a graphic to be used as the background under an externalGraphic.
backgroundGraphicZIndex{Number} The integer z-index value to use in rendering the background graphic.
backgroundXOffset{Number} The x offset (in pixels) for the background graphic.
backgroundYOffset{Number} The y offset (in pixels) for the background graphic.
backgroundHeight{Number} The height of the background graphic.  If not provided, the graphicHeight will be used.
backgroundWidth{Number} The width of the background width.  If not provided, the graphicWidth will be used.
label{String} The text for an optional label.  For browsers that use the canvas renderer, this requires either fillText or mozDrawText to be available.
labelAlign{String} Label alignment.  This specifies the insertion point relative to the text.  It is a string composed of two characters.  The first character is for the horizontal alignment, the second for the vertical alignment.  Valid values for horizontal alignment: “l”=left, “c”=center, “r”=right.  Valid values for vertical alignment: “t”=top, “m”=middle, “b”=bottom.  Example values: “lt”, “cm”, “rb”.  The canvas renderer does not support vertical alignment, it will always use “b”.
fontColor{String} The font color for the label, to be provided like CSS.
fontFamily{String} The font family for the label, to be provided like in CSS.
fontSize{String} The font size for the label, to be provided like in CSS.
fontWeight{String} The font weight for the label, to be provided like in CSS.
display{String} Symbolizers will have no effect if display is set to “none”.  All other values have no effect.
+ +
+ + + + + + + + + + +
A Geometry is a description of a geographic object.
OpenLayers features can have a number of style attributes.
Features are combinations of geography and attributes.
{Object} This object holds arbitrary properties that describe the feature.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Feature/WFS-js.html b/openlayers/doc/apidocs/files/OpenLayers/Feature/WFS-js.html new file mode 100644 index 0000000..5cbb6f5 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Feature/WFS-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Feature.WFS - OpenLayers + + + + + + + + + +

OpenLayers.Feature.WFS

WFS handling class, for use as a featureClass on the WFS layer for handling ‘point’ WFS types.  Good for subclassing when creating a custom WFS like XML application.

Inherits from

Summary
OpenLayers.Feature.WFSWFS handling class, for use as a featureClass on the WFS layer for handling ‘point’ WFS types.
Constructor
OpenLayers.Feature.WFSCreate a WFS feature.
+ +

Constructor

+ +

OpenLayers.Feature.WFS

Create a WFS feature.

Parameters

layer{OpenLayers.Layer}
xmlNode{XMLNode}
+ +
+ + + + + + + + + + +
Features are combinations of geography and attributes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Filter-js.html b/openlayers/doc/apidocs/files/OpenLayers/Filter-js.html new file mode 100644 index 0000000..2865e0c --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Filter-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Filter - OpenLayers + + + + + + + + + +

OpenLayers.Filter

This class represents an OGC Filter.

Summary
OpenLayers.FilterThis class represents an OGC Filter.
Constructor
OpenLayers.FilterThis is an abstract class.
Functions
destroyRemove reference to anything added.
evaluateEvaluates this filter in a specific context.
cloneClones this filter.
+ +

Constructor

+ +

OpenLayers.Filter

This is an abstract class.  Create an instance of a filter subclass.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Returns

{OpenLayers.Filter}

+ +

Functions

+ +

destroy

destroy: function()

Remove reference to anything added.

+ +

evaluate

evaluate: function(context)

Evaluates this filter in a specific context.  Should be implemented by subclasses.

Parameters

context{Object} Context to use in evaluating the filter.

Returns

{Boolean} The filter applies.

+ +

clone

clone: function()

Clones this filter.  Should be implementted by subclasses.

Returns

{OpenLayers.Filter} Clone of this filter.

+ +
+ + + + + + + + + + +
destroy: function()
Remove reference to anything added.
evaluate: function(context)
Evaluates this filter in a specific context.
clone: function()
Clones this filter.
This is an abstract class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Filter/Comparison-js.html b/openlayers/doc/apidocs/files/OpenLayers/Filter/Comparison-js.html new file mode 100644 index 0000000..cc7dc89 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Filter/Comparison-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Filter.Comparison - OpenLayers + + + + + + + + + +

OpenLayers.Filter.Comparison

This class represents a comparison filter.

Inherits from

Summary
OpenLayers.Filter.ComparisonThis class represents a comparison filter.
Properties
type{String} type: type of the comparison.
property{String} name of the context property to compare
value{Number} or {String} comparison value for binary comparisons.
lowerBoundary{Number} or {String} lower boundary for between comparisons.
upperBoundary{Number} or {String} upper boundary for between comparisons.
Constructor
OpenLayers.Filter.ComparisonCreates a comparison rule.
Functions
evaluateEvaluates this filter in a specific context.
value2regexConverts the value of this rule into a regular expression string, according to the wildcard characters specified.
cloneClones this filter.
+ +

Properties

+ +

type

{String} type: type of the comparison.  This is one of

  • OpenLayers.Filter.Comparison.EQUAL_TO = “==”;
  • OpenLayers.Filter.Comparison.NOT_EQUAL_TO = “!=”;
  • OpenLayers.Filter.Comparison.LESS_THAN = “<”;
  • OpenLayers.Filter.Comparison.GREATER_THAN = “>”;
  • OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO = “<=”;
  • OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO = “>=”;
  • OpenLayers.Filter.Comparison.BETWEEN = “..”;
  • OpenLayers.Filter.Comparison.LIKE = “~”;
+ +

property

{String} name of the context property to compare

+ +

value

{Number} or {String} comparison value for binary comparisons.  In the case of a String, this can be a combination of text and propertyNames in the form “literal ${propertyName}”

+ +

lowerBoundary

{Number} or {String} lower boundary for between comparisons.  In the case of a String, this can be a combination of text and propertyNames in the form “literal ${propertyName}”

+ +

upperBoundary

{Number} or {String} upper boundary for between comparisons.  In the case of a String, this can be a combination of text and propertyNames in the form “literal ${propertyName}”

+ +

Constructor

+ +

OpenLayers.Filter.Comparison

Creates a comparison rule.

Parameters

options{Object} An optional object with properties to set on the rule

Returns

{OpenLayers.Filter.Comparison}

+ +

Functions

+ +

evaluate

evaluate: function(context)

Evaluates this filter in a specific context.  Should be implemented by subclasses.

Parameters

context{Object} Context to use in evaluating the filter.

Returns

{Boolean} The filter applies.

+ +

value2regex

value2regex: function(wildCard,
singleChar,
escapeChar)

Converts the value of this rule into a regular expression string, according to the wildcard characters specified.  This method has to be called after instantiation of this class, if the value is not a regular expression already.

Parameters

wildCard{<Char>} wildcard character in the above value, default is “*”
singleChar{<Char>) single-character wildcard in the above value default is “.”
escape{<Char>) escape character in the above value, default is “!”

Returns

{String} regular expression string

+ +

clone

clone: function()

Clones this filter.

Returns

{OpenLayers.Filter.Comparison} Clone of this filter.

+ +
+ + + + + + + + + + +
evaluate: function(context)
Evaluates this filter in a specific context.
value2regex: function(wildCard,
singleChar,
escapeChar)
Converts the value of this rule into a regular expression string, according to the wildcard characters specified.
clone: function()
Clones this filter.
This class represents an OGC Filter.
Creates a comparison rule.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Filter/FeatureId-js.html b/openlayers/doc/apidocs/files/OpenLayers/Filter/FeatureId-js.html new file mode 100644 index 0000000..fa79ccd --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Filter/FeatureId-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Filter.FeatureId - OpenLayers + + + + + + + + + +

OpenLayers.Filter.FeatureId

This class represents a ogc:FeatureId Filter, as being used for rule-based SLD styling

Inherits from

Summary
OpenLayers.Filter.FeatureIdThis class represents a ogc:FeatureId Filter, as being used for rule-based SLD styling
Properties
fids{Array(String)} Feature Ids to evaluate this rule against.
Constructor
OpenLayers.Filter.FeatureIdCreates an ogc:FeatureId rule.
Functions
evaluateevaluates this rule for a specific feature
cloneClones this filter.
+ +

Properties

+ +

fids

{Array(String)} Feature Ids to evaluate this rule against.  To be passed To be passed inside the params object.

+ +

Constructor

+ +

OpenLayers.Filter.FeatureId

Creates an ogc:FeatureId rule.

Parameters

options{Object} An optional object with properties to set on the rule

Returns

{OpenLayers.Filter.FeatureId}

+ +

Functions

+ +

evaluate

evaluate: function(feature)

evaluates this rule for a specific feature

Parameters

feature{OpenLayers.Feature} feature to apply the rule to.  For vector features, the check is run against the fid, for plain features against the id.

Returns

{Boolean} true if the rule applies, false if it does not

+ +

clone

clone: function()

Clones this filter.

Returns

{OpenLayers.Filter.FeatureId} Clone of this filter.

+ +
+ + + + + + + + + + +
evaluate: function(feature)
evaluates this rule for a specific feature
clone: function()
Clones this filter.
This class represents an OGC Filter.
Creates an ogc:FeatureId rule.
Features are combinations of geography and attributes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Filter/Logical-js.html b/openlayers/doc/apidocs/files/OpenLayers/Filter/Logical-js.html new file mode 100644 index 0000000..9bb95ad --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Filter/Logical-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Filter.Logical - OpenLayers + + + + + + + + + +

OpenLayers.Filter.Logical

This class represents ogc:And, ogc:Or and ogc:Not rules.

Inherits from

Summary
OpenLayers.Filter.LogicalThis class represents ogc:And, ogc:Or and ogc:Not rules.
Properties
filters{Array(OpenLayers.Filter)} Child filters for this filter.
type
Constructor
OpenLayers.Filter.LogicalCreates a logical filter (And, Or, Not).
Functions
destroyRemove reference to child filters.
evaluateEvaluates this filter in a specific context.
cloneClones this filter.
+ +

Properties

+ +

filters

{Array(OpenLayers.Filter)} Child filters for this filter.

+ +

type

{String} type of logical operator.  Available types are

  • OpenLayers.Filter.Logical.AND = “&&”;
  • OpenLayers.Filter.Logical.OR = “||”;
  • OpenLayers.Filter.Logical.NOT = “!”;
+ +

Constructor

+ +

OpenLayers.Filter.Logical

Creates a logical filter (And, Or, Not).

Parameters

options{Object} An optional object with properties to set on the filter.

Returns

{OpenLayers.Filter.Logical}

+ +

Functions

+ +

destroy

destroy: function()

Remove reference to child filters.

+ +

evaluate

evaluate: function(context)

Evaluates this filter in a specific context.  Should be implemented by subclasses.

Parameters

context{Object} Context to use in evaluating the filter.

Returns

{Boolean} The filter applies.

+ +

clone

clone: function()

Clones this filter.

Returns

{OpenLayers.Filter.Logical} Clone of this filter.

+ +
+ + + + + + + + + + +
This class represents an OGC Filter.
destroy: function()
Remove reference to child filters.
evaluate: function(context)
Evaluates this filter in a specific context.
clone: function()
Clones this filter.
Creates a logical filter (And, Or, Not).
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Filter/Spatial-js.html b/openlayers/doc/apidocs/files/OpenLayers/Filter/Spatial-js.html new file mode 100644 index 0000000..a920501 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Filter/Spatial-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Filter.Spatial - OpenLayers + + + + + + + + + +

OpenLayers.Filter.Spatial

This class represents a spatial filter.  Currently implemented: BBOX, DWithin and Intersects

Inherits from

Summary
OpenLayers.Filter.SpatialThis class represents a spatial filter.
Properties
type{String} Type of spatial filter.
property{String} Name of the context property to compare.
value{OpenLayers.Bounds || OpenLayers.Geometry} The bounds or geometry to be used by the filter.
distance{Number} The distance to use in a DWithin spatial filter.
distanceUnits{String} The units to use for the distance, e.g.
Constructor
OpenLayers.Filter.SpatialCreates a spatial filter.
Functions
cloneClones this filter.
+ +

Properties

+ +

type

{String} Type of spatial filter.

The type should be one of

  • OpenLayers.Filter.Spatial.BBOX
  • OpenLayers.Filter.Spatial.INTERSECTS
  • OpenLayers.Filter.Spatial.DWITHIN
  • OpenLayers.Filter.Spatial.WITHIN
  • OpenLayers.Filter.Spatial.CONTAINS
+ +

property

{String} Name of the context property to compare.

+ +

value

{OpenLayers.Bounds || OpenLayers.Geometry} The bounds or geometry to be used by the filter.  Use bounds for BBOX filters and geometry for INTERSECTS or DWITHIN filters.

+ +

distance

{Number} The distance to use in a DWithin spatial filter.

+ +

distanceUnits

{String} The units to use for the distance, e.g.  ‘m’.

+ +

Constructor

+ +

OpenLayers.Filter.Spatial

Creates a spatial filter.

Parameters

options{Object} An optional object with properties to set on the filter.

Returns

{OpenLayers.Filter.Spatial}

+ +

Functions

+ +

clone

clone: function()

Clones this filter.

Returns

{OpenLayers.Filter.Spatial} Clone of this filter.

+ +
+ + + + + + + + + + +
Instances of this class represent bounding boxes.
A Geometry is a description of a geographic object.
clone: function()
Clones this filter.
This class represents an OGC Filter.
Creates a spatial filter.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format-js.html new file mode 100644 index 0000000..04498c2 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Format - OpenLayers + + + + + + + + + +

OpenLayers.Format

Base class for format reading/writing a variety of formats.  Subclasses of OpenLayers.Format are expected to have read and write methods.

Summary
OpenLayers.FormatBase class for format reading/writing a variety of formats.
Properties
externalProjection{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.
internalProjection{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.
data{Object} When keepData is true, this is the parsed string sent to <read>.
keepData{Object} Maintain a reference (data) to the most recently read data.
Constructor
OpenLayers.FormatInstances of this class are not useful.
Functions
destroyClean up.
+ +

Properties

+ +

externalProjection

{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.  The externalProjection is the projection used by the content which is passed into read or which comes out of write.  In order to reproject, a projection transformation function for the specified projections must be available.  This support may be provided via proj4js or via a custom transformation function.  See {OpenLayers.Projection.addTransform} for more information on custom transformations.

+ +

internalProjection

{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.  The internalProjection is the projection used by the geometries which are returned by read or which are passed into write.  In order to reproject, a projection transformation function for the specified projections must be available.  This support may be provided via proj4js or via a custom transformation function.  See {OpenLayers.Projection.addTransform} for more information on custom transformations.

+ +

data

{Object} When keepData is true, this is the parsed string sent to <read>.

+ +

keepData

{Object} Maintain a reference (data) to the most recently read data.  Default is false.

+ +

Constructor

+ +

OpenLayers.Format

Instances of this class are not useful.  See one of the subclasses.

Parameters

options{Object} An optional object with properties to set on the format

Valid options

keepData{Boolean} If true, upon <read>, the data property will be set to the parsed object (e.g. the json or xml object).

Returns

An instance of OpenLayers.Format

+ +

Functions

+ +

destroy

destroy: function()

Clean up.

+ +
+ + + + + + + + + + +
Class for coordinate transforms between coordinate systems.
{Object} Maintain a reference (data) to the most recently read data.
{Object} When keepData is true, this is the parsed string sent to read.
destroy: function()
Clean up.
OpenLayers.Projection.addTransform = function(from,
to,
method)
Set a custom transform method between two projections.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/ArcXML-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/ArcXML-js.html new file mode 100644 index 0000000..0d0564c --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/ArcXML-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Format.ArcXML - OpenLayers + + + + + + + + + +

OpenLayers.Format.ArcXML

Read/Wite ArcXML.  Create a new instance with the OpenLayers.Format.ArcXML constructor.

Inherits from

Summary
OpenLayers.Format.ArcXMLRead/Wite ArcXML.
Constructor
OpenLayers.Format.ArcXMLCreate a new parser/writer for ArcXML.
Functions
iserrorCheck to see if the response from the server was an error.
readRead data from a string, and return an response.
writeGenerate an ArcXml document string for sending to an ArcIMS server.
+ +

Constructor

+ +

OpenLayers.Format.ArcXML

Create a new parser/writer for ArcXML.  Create an instance of this class to begin authoring a request to an ArcIMS service.  This is used primarily by the ArcIMS layer, but could be used to do other wild stuff, like geocoding.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

iserror

iserror: function(data)

Check to see if the response from the server was an error.

Parameters

data{String} or {DOMElement} data to read/parse.  If nothing is supplied, the current response is examined.

Returns

{Boolean} true if the response was an error.

+ +

read

read: function(data)

Read data from a string, and return an response.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{OpenLayers.Format.ArcXML.Response} An ArcXML response.  Note that this response data may change in the future.

+ +

write

write: function(request)

Generate an ArcXml document string for sending to an ArcIMS server.

Returns

{String} A string representing the ArcXML document request.

+ +
+ + + + + + + + + + +
iserror: function(data)
Check to see if the response from the server was an error.
read: function(data)
Read data from a string, and return an response.
write: function(request)
Generate an ArcXml document string for sending to an ArcIMS server.
Create a new parser/writer for ArcXML.
Base class for format reading/writing a variety of formats.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/ArcXML/Features-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/ArcXML/Features-js.html new file mode 100644 index 0000000..c444c07 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/ArcXML/Features-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.ArcXML.Features - OpenLayers + + + + + + + + + +

OpenLayers.Format.ArcXML.Features

Read/Wite ArcXML features.  Create a new instance with the OpenLayers.Format.ArcXML.Features constructor.

Inherits from

Summary
OpenLayers.Format.ArcXML.FeaturesRead/Wite ArcXML features.
Constructor
OpenLayers.Format.ArcXML.FeaturesCreate a new parser/writer for ArcXML Features.
Functions
readRead data from a string of ArcXML, and return a set of OpenLayers features.
+ +

Constructor

+ +

OpenLayers.Format.ArcXML.Features

Create a new parser/writer for ArcXML Features.  Create an instance of this class to get a set of features from an ArcXML response.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read data from a string of ArcXML, and return a set of OpenLayers features.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array(OpenLayers.Feature.Vector)} A collection of features.

+ +
+ + + + + + + + + + +
read: function(data)
Read data from a string of ArcXML, and return a set of OpenLayers features.
Create a new parser/writer for ArcXML Features.
Read and write XML.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/Filter-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/Filter-js.html new file mode 100644 index 0000000..ca66ef4 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/Filter-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Format.Filter - OpenLayers + + + + + + + + + +

OpenLayers.Format.Filter

Read/Wite ogc:Filter.  Create a new instance with the OpenLayers.Format.Filter constructor.

Inherits from

Summary
OpenLayers.Format.FilterRead/Wite ogc:Filter.
Properties
defaultVersion{String} Version number to assume if none found.
version{String} Specify a version string if one is known.
Constructor
OpenLayers.Format.FilterCreate a new parser for Filter.
Functions
writeWrite an ogc:Filter given a filter object.
readRead and Filter doc and return an object representing the Filter.
+ +

Properties

+ +

defaultVersion

{String} Version number to assume if none found.  Default is “1.0.0”.

+ +

version

{String} Specify a version string if one is known.

+ +

Constructor

+ +

OpenLayers.Format.Filter

Create a new parser for Filter.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

write

write: function(filter,
options)

Write an ogc:Filter given a filter object.

Parameters

filter{OpenLayers.Filter} An filter.
options{Object} Optional configuration object.

Returns

{Elment} An ogc:Filter element node.

+ +

read

read: function(data)

Read and Filter doc and return an object representing the Filter.

Parameters

data{String | DOMElement} Data to read.

Returns

{OpenLayers.Filter} A filter object.

+ +
+ + + + + + + + + + +
write: function(filter,
options)
Write an ogc:Filter given a filter object.
read: function(data)
Read and Filter doc and return an object representing the Filter.
Create a new parser for Filter.
Read and write XML.
This class represents an OGC Filter.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/Filter/v1-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/Filter/v1-js.html new file mode 100644 index 0000000..d6aa5d2 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/Filter/v1-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Format.Filter.v1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.Filter.v1

Superclass for Filter version 1 parsers.

Inherits from

Summary
OpenLayers.Format.Filter.v1Superclass for Filter version 1 parsers.
Constructor
OpenLayers.Format.Filter.v1Instances of this class are not created directly.
+ +

Constructor

+ +

OpenLayers.Format.Filter.v1

Instances of this class are not created directly.  Use the OpenLayers.Format.Filter constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Read and write XML.
Read/Wite ogc:Filter.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/Filter/v1_0_0-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/Filter/v1_0_0-js.html new file mode 100644 index 0000000..780d714 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/Filter/v1_0_0-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.Filter.v1_0_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.Filter.v1_0_0

Write ogc:Filter version 1.0.0.

Inherits from

Summary
OpenLayers.Format.Filter.v1_0_0Write ogc:Filter version 1.0.0.
Constants
VERSION{String} 1.0.0
Constructor
OpenLayers.Format.Filter.v1_0_0Instances of this class are not created directly.
+ +

Constants

+ +

VERSION

{String} 1.0.0

+ +

Constructor

+ +

OpenLayers.Format.Filter.v1_0_0

Instances of this class are not created directly.  Use the OpenLayers.Format.Filter constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Parses GML version 2.
Superclass for Filter version 1 parsers.
Read/Wite ogc:Filter.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/Filter/v1_1_0-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/Filter/v1_1_0-js.html new file mode 100644 index 0000000..4693e60 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/Filter/v1_1_0-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.Filter.v1_1_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.Filter.v1_1_0

Write ogc:Filter version 1.1.0.

Differences from the v1.0.0 parser

  • uses GML v3 instead of GML v2
  • reads matchCase attribute on ogc:PropertyIsEqual and ogc:PropertyIsNotEqualelements.
  • writes matchCase attribute from comparison filters of type EQUAL_TO and type NOT_EQUAL_TO.

Inherits from

Summary
OpenLayers.Format.Filter.v1_1_0Write ogc:Filter version 1.1.0.
Constants
VERSION{String} 1.1.0
Constructor
OpenLayers.Format.Filter.v1_1_0Instances of this class are not created directly.
+ +

Constants

+ +

VERSION

{String} 1.1.0

+ +

Constructor

+ +

OpenLayers.Format.Filter.v1_1_0

Instances of this class are not created directly.  Use the OpenLayers.Format.Filter constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Superclass for Filter version 1 parsers.
Read/Wite ogc:Filter.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/GML-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/GML-js.html new file mode 100644 index 0000000..201aef9 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/GML-js.html @@ -0,0 +1,71 @@ + + +OpenLayers.Format.GML - OpenLayers + + + + + + + + + +

OpenLayers.Format.GML

Read/Wite GML.  Create a new instance with the OpenLayers.Format.GML constructor.  Supports the GML simple features profile.

Inherits from

Summary
OpenLayers.Format.GMLRead/Wite GML.
Properties
featureNS{String} Namespace used for feature attributes.
featurePrefix{String} Namespace alias (or prefix) for feature nodes.
featureName{String} Element name for features.
layerName{String} Name of data layer.
geometryName{String} Name of geometry element.
collectionName{String} Name of featureCollection element.
gmlns{String} GML Namespace.
extractAttributes{Boolean} Extract attributes from GML.
xy{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
Constructor
OpenLayers.Format.GMLCreate a new parser for GML.
Functions
readRead data from a string, and return a list of features.
writeGenerate a GML document string given a list of features.
buildGeometryNode
+ +

Properties

+ +

featureNS

{String} Namespace used for feature attributes.  Default is “http://mapserver.gis.umn.edu/mapserver”.

+ +

featurePrefix

{String} Namespace alias (or prefix) for feature nodes.  Default is “feature”.

+ +

featureName

{String} Element name for features.  Default is “featureMember”.

+ +

layerName

{String} Name of data layer.  Default is “features”.

+ +

geometryName

{String} Name of geometry element.  Defaults to “geometry”.

+ +

collectionName

{String} Name of featureCollection element.

+ +

gmlns

{String} GML Namespace.

+ +

extractAttributes

{Boolean} Extract attributes from GML.

+ +

xy

{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.

+ +

Constructor

+ +

OpenLayers.Format.GML

Create a new parser for GML.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read data from a string, and return a list of features.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array(OpenLayers.Feature.Vector)} An array of features.

+ +

write

write: function(features)

Generate a GML document string given a list of features.

Parameters

features{Array(OpenLayers.Feature.Vector)} List of features to serialize into a string.

Returns

{String} A string representing the GML document.

+ +

buildGeometryNode

buildGeometryNode: function(geometry)
+ +
+ + + + + + + + + + +
read: function(data)
Read data from a string, and return a list of features.
write: function(features)
Generate a GML document string given a list of features.
buildGeometryNode: function(geometry)
Create a new parser for GML.
Base class for format reading/writing a variety of formats.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/GML/Base-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/GML/Base-js.html new file mode 100644 index 0000000..5cdcf38 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/GML/Base-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Format.GML.Base - OpenLayers + + + + + + + + + +

OpenLayers.Format.GML.Base

Superclass for GML parsers.

Inherits from

Summary
OpenLayers.Format.GML.BaseSuperclass for GML parsers.
Properties
featureType{Array(String) or String} The local (without prefix) feature typeName(s).
featureNS{String} The feature namespace.
geometry{String} Name of geometry element.
extractAttributes{Boolean} Extract attributes from GML.
srsName{String} URI for spatial reference system.
xy{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
Constructor
OpenLayers.Format.GML.BaseInstances of this class are not created directly.
+ +

Properties

+ +

featureType

{Array(String) or String} The local (without prefix) feature typeName(s).

+ +

featureNS

{String} The feature namespace.  Must be set in the options at construction.

+ +

geometry

{String} Name of geometry element.  Defaults to “geometry”.

+ +

extractAttributes

{Boolean} Extract attributes from GML.  Default is true.

+ +

srsName

{String} URI for spatial reference system.  This is optional for single part geometries and mandatory for collections and multis.  If set, the srsName attribute will be written for all geometries.  Default is null.

+ +

xy

{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.

+ +

Constructor

+ +

OpenLayers.Format.GML.Base

Instances of this class are not created directly.  Use the OpenLayers.Format.GML.v2 or OpenLayers.Format.GML.v3 constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.

Valid options properties

featureType{Array(String) or String} Local (without prefix) feature typeName(s) (required).
featureNS{String} Feature namespace (required).
geometryName{String} Geometry element name.
+ +
+ + + + + + + + + + +
Read and write XML.
Parses GML version 2.
Parses GML version 3.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/GML/v2-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/GML/v2-js.html new file mode 100644 index 0000000..fb4bd17 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/GML/v2-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Format.GML.v2 - OpenLayers + + + + + + + + + +

OpenLayers.Format.GML.v2

Parses GML version 2.

Inherits from

Summary
OpenLayers.Format.GML.v2Parses GML version 2.
Constructor
OpenLayers.Format.GML.v2Create a parser for GML v2.
+ +

Constructor

+ +

OpenLayers.Format.GML.v2

Create a parser for GML v2.

Parameters

options{Object} An optional object whose properties will be set on this instance.

Valid options properties

featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (required).
geometryName{String} Geometry element name.
+ +
+ + + + + + + + + + +
Superclass for GML parsers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/GML/v3-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/GML/v3-js.html new file mode 100644 index 0000000..21330a2 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/GML/v3-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Format.GML.v3 - OpenLayers + + + + + + + + + +

OpenLayers.Format.GML.v3

Parses GML version 3.

Inherits from

Summary
OpenLayers.Format.GML.v3Parses GML version 3.
Constructor
OpenLayers.Format.GML.v3Create a parser for GML v3.
+ +

Constructor

+ +

OpenLayers.Format.GML.v3

Create a parser for GML v3.

Parameters

options{Object} An optional object whose properties will be set on this instance.

Valid options properties

featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (required).
geometryName{String} Geometry element name.
+ +
+ + + + + + + + + + +
Superclass for GML parsers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/GPX-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/GPX-js.html new file mode 100644 index 0000000..cc3f752 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/GPX-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Format.GPX - OpenLayers + + + + + + + + + +

OpenLayers.Format.GPX

Read/write GPX parser.  Create a new instance with the OpenLayers.Format.GPX constructor.

Inherits from

Summary
OpenLayers.Format.GPXRead/write GPX parser.
Properties
extractWaypoints{Boolean} Extract waypoints from GPX.
extractTracks{Boolean} Extract tracks from GPX.
extractRoutes{Boolean} Extract routes from GPX.
extractAttributes{Boolean} Extract feature attributes from GPX.
Constructor
OpenLayers.Format.GPXCreate a new parser for GPX.
Functions
readReturn a list of features from a GPX doc
+ +

Properties

+ +

extractWaypoints

{Boolean} Extract waypoints from GPX.  (default: true)

+ +

extractTracks

{Boolean} Extract tracks from GPX.  (default: true)

+ +

extractRoutes

{Boolean} Extract routes from GPX.  (default: true)

+ +

extractAttributes

{Boolean} Extract feature attributes from GPX.  (default: true) NOTE: Attributes as part of extensions to the GPX standard may not be extracted.

+ +

Constructor

+ +

OpenLayers.Format.GPX

Create a new parser for GPX.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(doc)

Return a list of features from a GPX doc

Parameters

doc{Element}

Returns

An Array of OpenLayers.Feature.Vectors

+ +
+ + + + + + + + + + +
read: function(doc)
Return a list of features from a GPX doc
Create a new parser for GPX.
Read and write XML.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/GeoJSON-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/GeoJSON-js.html new file mode 100644 index 0000000..c6b8fa6 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/GeoJSON-js.html @@ -0,0 +1,49 @@ + + +OpenLayers.Format.GeoJSON - OpenLayers + + + + + + + + + +

OpenLayers.Format.GeoJSON

Read and write GeoJSON.  Create a new parser with the OpenLayers.Format.GeoJSON constructor.

Inherits from

Summary
OpenLayers.Format.GeoJSONRead and write GeoJSON.
Constructor
OpenLayers.Format.GeoJSONCreate a new parser for GeoJSON.
Functions
readDeserialize a GeoJSON string.
writeSerialize a feature, geometry, array of features into a GeoJSON string.
+ +

Constructor

+ +

OpenLayers.Format.GeoJSON

Create a new parser for GeoJSON.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(json,
type,
filter)

Deserialize a GeoJSON string.

Parameters

json{String} A GeoJSON string
type{String} Optional string that determines the structure of the output.  Supported values are “Geometry”, “Feature”, and “FeatureCollection”.  If absent or null, a default of “FeatureCollection” is assumed.
filter{Function} A function which will be called for every key and value at every level of the final result.  Each value will be replaced by the result of the filter function.  This can be used to reform generic objects into instances of classes, or to transform date strings into Date objects.

Returns

{Object} The return depends on the value of the type argument.  If type is “FeatureCollection” (the default), the return will be an array of OpenLayers.Feature.Vector.  If type is “Geometry”, the input json must represent a single geometry, and the return will be an OpenLayers.Geometry.  If type is “Feature”, the input json must represent a single feature, and the return will be an OpenLayers.Feature.Vector.

+ +

write

write: function(obj,
pretty)

Serialize a feature, geometry, array of features into a GeoJSON string.

Parameters

obj{Object} An OpenLayers.Feature.Vector, OpenLayers.Geometry, or an array of features.
pretty{Boolean} Structure the output with newlines and indentation.  Default is false.

Returns

{String} The GeoJSON string representation of the input geometry, features, or array of features.

+ +
+ + + + + + + + + + +
read: function(json,
type,
filter)
Deserialize a GeoJSON string.
write: function(obj,
pretty)
Serialize a feature, geometry, array of features into a GeoJSON string.
Create a new parser for GeoJSON.
A parser to read/write JSON safely.
Vector features use the OpenLayers.Geometry classes as geometry description.
A Geometry is a description of a geographic object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/GeoRSS-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/GeoRSS-js.html new file mode 100644 index 0000000..6a90fba --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/GeoRSS-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Format.GeoRSS - OpenLayers + + + + + + + + + +

OpenLayers.Format.GeoRSS

Read/write GeoRSS parser.  Create a new instance with the OpenLayers.Format.GeoRSS constructor.

Inherits from

Summary
OpenLayers.Format.GeoRSSRead/write GeoRSS parser.
Properties
rssns{String} RSS namespace to use.
featurens{String} Feature Attributes namespace.
georssns{String} GeoRSS namespace to use.
geons{String} W3C Geo namespace to use.
featureTitle{String} Default title for features.
featureDescription{String} Default description for features.
xy{Boolean} Order of the GML coordinate: true:(x,y) or false:(y,x) For GeoRSS the default is (y,x), therefore: false
Constructor
OpenLayers.Format.GeoRSSCreate a new parser for GeoRSS.
Functions
writeAccept Feature Collection, and return a string.
+ +

Properties

+ +

rssns

{String} RSS namespace to use.  Defaults to “http://backend.userland.com/rss2

+ +

featurens

{String} Feature Attributes namespace.  Defaults to “http://mapserver.gis.umn.edu/mapserver

+ +

georssns

{String} GeoRSS namespace to use.  Defaults to “http://www.georss.org/georss

+ +

geons

{String} W3C Geo namespace to use.  Defaults to “http://www.w3.org/2003/01/geo/wgs84_pos#

+ +

featureTitle

{String} Default title for features.  Defaults to “Untitled”

+ +

featureDescription

{String} Default description for features.  Defaults to “No Description”

+ +

xy

{Boolean} Order of the GML coordinate: true:(x,y) or false:(y,x) For GeoRSS the default is (y,x), therefore: false

+ +

Constructor

+ +

OpenLayers.Format.GeoRSS

Create a new parser for GeoRSS.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

write

write: function(features)

Accept Feature Collection, and return a string.

Parameters

features{Array(OpenLayers.Feature.Vector)} List of features to serialize into a string.
+ +
+ + + + + + + + + + +
write: function(features)
Accept Feature Collection, and return a string.
Create a new parser for GeoRSS.
Read and write XML.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/JSON-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/JSON-js.html new file mode 100644 index 0000000..f2574fe --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/JSON-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Format.JSON - OpenLayers + + + + + + + + + +

OpenLayers.Format.JSON

A parser to read/write JSON safely.  Create a new instance with the OpenLayers.Format.JSON constructor.

Inherits from

Summary
OpenLayers.Format.JSONA parser to read/write JSON safely.
Properties
indent{String} For “pretty” printing, the indent string will be used once for each indentation level.
space{String} For “pretty” printing, the space string will be used after the “:” separating a name/value pair.
newline{String} For “pretty” printing, the newline string will be used at the end of each name/value pair or array item.
Constructor
OpenLayers.Format.JSONCreate a new parser for JSON.
Functions
readDeserialize a json string.
writeSerialize an object into a JSON string.
+ +

Properties

+ +

indent

{String} For “pretty” printing, the indent string will be used once for each indentation level.

+ +

space

{String} For “pretty” printing, the space string will be used after the “:” separating a name/value pair.

+ +

newline

{String} For “pretty” printing, the newline string will be used at the end of each name/value pair or array item.

+ +

Constructor

+ +

OpenLayers.Format.JSON

Create a new parser for JSON.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(json,
filter)

Deserialize a json string.

Parameters

json{String} A JSON string
filter{Function} A function which will be called for every key and value at every level of the final result.  Each value will be replaced by the result of the filter function.  This can be used to reform generic objects into instances of classes, or to transform date strings into Date objects.

Returns

{Object} An object, array, string, or number .

+ +

write

write: function(value,
pretty)

Serialize an object into a JSON string.

Parameters

value{String} The object, array, string, number, boolean or date to be serialized.
pretty{Boolean} Structure the output with newlines and indentation.  Default is false.

Returns

{String} The JSON string representation of the input value.

+ +
+ + + + + + + + + + +
read: function(json,
filter)
Deserialize a json string.
write: function(value,
pretty)
Serialize an object into a JSON string.
Create a new parser for JSON.
Base class for format reading/writing a variety of formats.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/KML-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/KML-js.html new file mode 100644 index 0000000..c90e5e2 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/KML-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Format.KML - OpenLayers + + + + + + + + + +

OpenLayers.Format.KML

Read/Wite KML.  Create a new instance with the OpenLayers.Format.KML constructor.

Inherits from

Summary
OpenLayers.Format.KMLRead/Wite KML.
Properties
kmlns{String} KML Namespace to use.
placemarksDesc{String} Name of the placemarks.
foldersName{String} Name of the folders.
foldersDesc{String} Description of the folders.
extractAttributes{Boolean} Extract attributes from KML.
maxDepth{Integer} Maximum depth for recursive loading external KML URLs Defaults to 0: do no external fetching
Constructor
OpenLayers.Format.KMLCreate a new parser for KML.
Functions
readRead data from a string, and return a list of features.
writeAccept Feature Collection, and return a string.
+ +

Properties

+ +

kmlns

{String} KML Namespace to use.  Defaults to 2.0 namespace.

+ +

placemarksDesc

{String} Name of the placemarks.  Default is “No description available.”

+ +

foldersName

{String} Name of the folders.  Default is “OpenLayers export.”

+ +

foldersDesc

{String} Description of the folders.  Default is “Exported on [date].”

+ +

extractAttributes

{Boolean} Extract attributes from KML.  Default is true.  Extracting styleUrls requires this to be set to true

+ +

maxDepth

{Integer} Maximum depth for recursive loading external KML URLs Defaults to 0: do no external fetching

+ +

Constructor

+ +

OpenLayers.Format.KML

Create a new parser for KML.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read data from a string, and return a list of features.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array(OpenLayers.Feature.Vector)} List of features.

+ +

write

write: function(features)

Accept Feature Collection, and return a string.

Parameters

features{Array(OpenLayers.Feature.Vector} An array of features.

Returns

{String} A KML string.

+ +
+ + + + + + + + + + +
read: function(data)
Read data from a string, and return a list of features.
write: function(features)
Accept Feature Collection, and return a string.
Create a new parser for KML.
Read and write XML.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/OSM-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/OSM-js.html new file mode 100644 index 0000000..757b413 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/OSM-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Format.OSM - OpenLayers + + + + + + + + + +

OpenLayers.Format.OSM

OSM parser.  Create a new instance with the OpenLayers.Format.OSM constructor.

Inherits from

Summary
OpenLayers.Format.OSMOSM parser.
Properties
checkTags{Boolean} Should tags be checked to determine whether something should be treated as a seperate node.
areaTags{Array} List of tags indicating that something is an area.
Constructor
OpenLayers.Format.OSMCreate a new parser for OSM.
Functions
writeTakes a list of features, returns a serialized OSM format file for use in tools like JOSM.
+ +

Properties

+ +

checkTags

{Boolean} Should tags be checked to determine whether something should be treated as a seperate node.  Will slow down parsing.  Default is false.

+ +

areaTags

{Array} List of tags indicating that something is an area.  Must be set when creating the format.  Will only be used if checkTags is true.

+ +

Constructor

+ +

OpenLayers.Format.OSM

Create a new parser for OSM.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

write

write: function(features)

Takes a list of features, returns a serialized OSM format file for use in tools like JOSM.

Parameters

features{Array(OpenLayers.Feature.Vector)}
+ +
+ + + + + + + + + + +
write: function(features)
Takes a list of features, returns a serialized OSM format file for use in tools like JOSM.
Create a new parser for OSM.
Read and write XML.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/SLD-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/SLD-js.html new file mode 100644 index 0000000..0a16894 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/SLD-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Format.SLD - OpenLayers + + + + + + + + + +

OpenLayers.Format.SLD

Read/Wite SLD.  Create a new instance with the OpenLayers.Format.SLD constructor.

Inherits from

Summary
OpenLayers.Format.SLDRead/Wite SLD.
Properties
defaultVersion{String} Version number to assume if none found.
version{String} Specify a version string if one is known.
namedLayersAsArray{Boolean} Generate a namedLayers array.
Constructor
OpenLayers.Format.SLDCreate a new parser for SLD.
Functions
writeWrite a SLD document given a list of styles.
readRead and SLD doc and return an object representing the SLD.
+ +

Properties

+ +

defaultVersion

{String} Version number to assume if none found.  Default is “1.0.0”.

+ +

version

{String} Specify a version string if one is known.

+ +

namedLayersAsArray

{Boolean} Generate a namedLayers array.  If false, the namedLayers property value will be an object keyed by layer name.  Default is false.

+ +

Constructor

+ +

OpenLayers.Format.SLD

Create a new parser for SLD.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

write

write: function(sld,
options)

Write a SLD document given a list of styles.

Parameters

sld{Object} An object representing the SLD.
options{Object} Optional configuration object.

Returns

{String} An SLD document string.

+ +

read

read: function(data,
options)

Read and SLD doc and return an object representing the SLD.

Parameters

data{String | DOMElement} Data to read.
options{Object} Options for the reader.

Returns

{Object} An object representing the SLD.

+ +
+ + + + + + + + + + +
write: function(sld,
options)
Write a SLD document given a list of styles.
read: function(data,
options)
Read and SLD doc and return an object representing the SLD.
Create a new parser for SLD.
Read and write XML.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/SLD/v1-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/SLD/v1-js.html new file mode 100644 index 0000000..535caea --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/SLD/v1-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.SLD.v1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.SLD.v1

Superclass for SLD version 1 parsers.

Inherits from

Summary
OpenLayers.Format.SLD.v1Superclass for SLD version 1 parsers.
Properties
defaultSymbolizer.{Object} A symbolizer with the SLD defaults.
Constructor
OpenLayers.Format.SLD.v1Instances of this class are not created directly.
+ +

Properties

+ +

defaultSymbolizer.

{Object} A symbolizer with the SLD defaults.

+ +

Constructor

+ +

OpenLayers.Format.SLD.v1

Instances of this class are not created directly.  Use the OpenLayers.Format.SLD constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Write ogc:Filter version 1.0.0.
Read/Wite SLD.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/SLD/v1_0_0-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/SLD/v1_0_0-js.html new file mode 100644 index 0000000..e79c661 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/SLD/v1_0_0-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.SLD.v1_0_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.SLD.v1_0_0

Write SLD version 1.0.0.

Inherits from

Summary
OpenLayers.Format.SLD.v1_0_0Write SLD version 1.0.0.
Constants
VERSION{String} 1.0.0
Constructor
OpenLayers.Format.SLD.v1_0_0Instances of this class are not created directly.
+ +

Constants

+ +

VERSION

{String} 1.0.0

+ +

Constructor

+ +

OpenLayers.Format.SLD.v1_0_0

Instances of this class are not created directly.  Use the OpenLayers.Format.SLD constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Superclass for SLD version 1 parsers.
Read/Wite SLD.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/Text-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/Text-js.html new file mode 100644 index 0000000..f7b8e90 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/Text-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Format.Text - OpenLayers + + + + + + + + + +

OpenLayers.Format.Text

Read Text format.  Create a new instance with the OpenLayers.Format.Text constructor.  This reads text which is formatted like CSV text, using tabs as the seperator by default.  It provides parsing of data originally used in the MapViewerService, described on the wiki.  This Format is used by the OpenLayers.Layer.Text class.

Inherits from

Summary
OpenLayers.Format.TextRead Text format.
Properties
defaultStyledefaultStyle allows one to control the default styling of the features.
extractStylesset to true to extract styles from the TSV files, using information from the image or icon, iconSize and iconOffset fields.
Constructor
OpenLayers.Format.TextCreate a new parser for TSV Text.
Functions
readReturn a list of features from a Tab Seperated Values text string.
+ +

Properties

+ +

defaultStyle

defaultStyle allows one to control the default styling of the features.  It should be a symbolizer hash.  By default, this is set to match the Layer.Text behavior, which is to use the default OpenLayers Icon.

+ +

extractStyles

set to true to extract styles from the TSV files, using information from the image or icon, iconSize and iconOffset fields.  This will result in features with a symbolizer (style) property set, using the default symbolizer specified in defaultStyle.  Set to false if you wish to use a styleMap or OpenLayers.Style options to style your layer instead.

+ +

Constructor

+ +

OpenLayers.Format.Text

Create a new parser for TSV Text.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(text)

Return a list of features from a Tab Seperated Values text string.

Parameters

data{String}

Returns

An Array of OpenLayers.Feature.Vectors

+ +
+ + + + + + + + + + +
read: function(text)
Return a list of features from a Tab Seperated Values text string.
Create a new parser for TSV Text.
This layer creates markers given data in a text file.
Base class for format reading/writing a variety of formats.
defaultStyle allows one to control the default styling of the features.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WFS-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WFS-js.html new file mode 100644 index 0000000..e0d3671 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WFS-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Format.WFS - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFS

Read/Write WFS.

Inherits from

Summary
OpenLayers.Format.WFSRead/Write WFS.
Properties
wfsns
Constructor
OpenLayers.Format.WFSCreate a WFS-T formatter.
Functions
destroyRemove ciruclar ref to layer
+ +

Properties

+ +

wfsns

+ +

Constructor

+ +

OpenLayers.Format.WFS

Create a WFS-T formatter.  This requires a layer: that layer should have two properties: geometry_column and typename.  The parser for this format is subclassed entirely from GML: There is a writer only, which uses most of the code from the GML layer, and wraps it in transactional elements.

Parameters

options{Object}
layer{OpenLayers.Layer}
+ +

Functions

+ +

destroy

destroy: function()

Remove ciruclar ref to layer

+ +
+ + + + + + + + + + +
destroy: function()
Remove ciruclar ref to layer
Read/Wite GML.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities-js.html new file mode 100644 index 0000000..3ca5420 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Format.WFSCapabilities - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFSCapabilities

Read WFS Capabilities.

Inherits from

Summary
OpenLayers.Format.WFSCapabilitiesRead WFS Capabilities.
Properties
defaultVersion{String} Version number to assume if none found.
version{String} Specify a version string if one is known.
Constructor
OpenLayers.Format.WFSCapabilitiesCreate a new parser for WFS capabilities.
Functions
readRead capabilities data from a string, and return a list of layers.
+ +

Properties

+ +

defaultVersion

{String} Version number to assume if none found.  Default is “1.1.0”.

+ +

version

{String} Specify a version string if one is known.

+ +

Constructor

+ +

OpenLayers.Format.WFSCapabilities

Create a new parser for WFS capabilities.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read capabilities data from a string, and return a list of layers.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array} List of named layers.

+ +
+ + + + + + + + + + +
read: function(data)
Read capabilities data from a string, and return a list of layers.
Read and write XML.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities/v1-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities/v1-js.html new file mode 100644 index 0000000..7313a9d --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities/v1-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.WFSCapabilities.v1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFSCapabilities.v1

Abstract class not to be instantiated directly.

Inherits from

Summary
OpenLayers.Format.WFSCapabilities.v1Abstract class not to be instantiated directly.
Constructor
OpenLayers.Format.WFSCapabilities.v1_1Create an instance of one of the subclasses.
Functions
readRead capabilities data from a string, and return a list of layers.
+ +

Constructor

+ +

OpenLayers.Format.WFSCapabilities.v1_1

Create an instance of one of the subclasses.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read capabilities data from a string, and return a list of layers.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array} List of named layers.

+ +
+ + + + + + + + + + +
read: function(data)
Read capabilities data from a string, and return a list of layers.
Read and write XML.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities/v1_0_0-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities/v1_0_0-js.html new file mode 100644 index 0000000..6090cda --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities/v1_0_0-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Format.WFSCapabilities/v1_0_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFSCapabilities/v1_0_0

Read WMS Capabilities version 1.0.0.

Inherits from

Summary
OpenLayers.Format.WFSCapabilities/v1_0_0Read WMS Capabilities version 1.0.0.
Constructor
OpenLayers.Format.WFSCapabilities.v1_0_0Create a new parser for WFS capabilities version 1.0.0.
+ +

Constructor

+ +

OpenLayers.Format.WFSCapabilities.v1_0_0

Create a new parser for WFS capabilities version 1.0.0.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Read WFS Capabilities.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities/v1_1_0-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities/v1_1_0-js.html new file mode 100644 index 0000000..1ecf50b --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WFSCapabilities/v1_1_0-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Format.WFSCapabilities/v1_1_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFSCapabilities/v1_1_0

Read WFS Capabilities version 1.1.0.

Inherits from

Summary
OpenLayers.Format.WFSCapabilities/v1_1_0Read WFS Capabilities version 1.1.0.
Constructor
OpenLayers.Format.WFSCapabilities.v1_1_0Create a new parser for WFS capabilities version 1.1.0.
+ +

Constructor

+ +

OpenLayers.Format.WFSCapabilities.v1_1_0

Create a new parser for WFS capabilities version 1.1.0.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Read WFS Capabilities.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WFSDescribeFeatureType-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WFSDescribeFeatureType-js.html new file mode 100644 index 0000000..5d40fbc --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WFSDescribeFeatureType-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Format.WFSDescribeFeatureType - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFSDescribeFeatureType

Create a new parser for WFS DescribeFeatureType responses.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WFST-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WFST-js.html new file mode 100644 index 0000000..f3b359e --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WFST-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Format.WFST.DEFAULTS - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFST.DEFAULTS

{Object} Default properties for the WFST format.

+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WFST/v1-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WFST/v1-js.html new file mode 100644 index 0000000..53906b5 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WFST/v1-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Format.WFST.v1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFST.v1

Superclass for WFST parsers.

Inherits from

Summary
OpenLayers.Format.WFST.v1Superclass for WFST parsers.
Properties
srsName{String} URI for spatial reference system.
extractAttributes{Boolean} Extract attributes from GML.
xy{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
Constructor
OpenLayers.Format.WFST.v1Instances of this class are not created directly.
+ +

Properties

+ +

srsName

{String} URI for spatial reference system.

+ +

extractAttributes

{Boolean} Extract attributes from GML.  Default is true.

+ +

xy

{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.

+ +

Constructor

+ +

OpenLayers.Format.WFST.v1

Instances of this class are not created directly.  Use the OpenLayers.Format.WFST.v1_0_0 or OpenLayers.Format.WFST.v1_1_0 constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Read and write XML.
A format for creating WFS v1.0.0 transactions.
A format for creating WFS v1.1.0 transactions.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WFST/v1_0_0-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WFST/v1_0_0-js.html new file mode 100644 index 0000000..9e05551 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WFST/v1_0_0-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Format.WFST.v1_0_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFST.v1_0_0

A format for creating WFS v1.0.0 transactions.  Create a new instance with the OpenLayers.Format.WFST.v1_0_0 constructor.

Inherits from

Summary
OpenLayers.Format.WFST.v1_0_0A format for creating WFS v1.0.0 transactions.
Constructor
OpenLayers.Format.WFST.v1_0_0A class for parsing and generating WFS v1.0.0 transactions.
+ +

Constructor

+ +

OpenLayers.Format.WFST.v1_0_0

A class for parsing and generating WFS v1.0.0 transactions.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Valid options properties

featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (optional).
featurePrefix{String} Feature namespace alias (optional - only used if featureNS is provided).  Default is ‘feature’.
geometryName{String} Name of geometry attribute.  Default is ‘the_geom’.
+ +
+ + + + + + + + + + +
A class for parsing and generating WFS v1.0.0 transactions.
Write ogc:Filter version 1.0.0.
Superclass for WFST parsers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WFST/v1_1_0-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WFST/v1_1_0-js.html new file mode 100644 index 0000000..ae013a3 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WFST/v1_1_0-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Format.WFST.v1_1_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFST.v1_1_0

A format for creating WFS v1.1.0 transactions.  Create a new instance with the OpenLayers.Format.WFST.v1_1_0 constructor.

Inherits from

Summary
OpenLayers.Format.WFST.v1_1_0A format for creating WFS v1.1.0 transactions.
Constructor
OpenLayers.Format.WFST.v1_1_0A class for parsing and generating WFS v1.1.0 transactions.
+ +

Constructor

+ +

OpenLayers.Format.WFST.v1_1_0

A class for parsing and generating WFS v1.1.0 transactions.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Valid options properties

featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (optional).
featurePrefix{String} Feature namespace alias (optional - only used if featureNS is provided).  Default is ‘feature’.
geometryName{String} Name of geometry attribute.  Default is ‘the_geom’.
+ +
+ + + + + + + + + + +
A class for parsing and generating WFS v1.1.0 transactions.
Write ogc:Filter version 1.1.0.
Superclass for WFST parsers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WKT-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WKT-js.html new file mode 100644 index 0000000..88556bb --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WKT-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Format.WKT - OpenLayers + + + + + + + + + +

OpenLayers.Format.WKT

Class for reading and writing Well-Known Text.  Create a new instance with the OpenLayers.Format.WKT constructor.

Inherits from

Summary
OpenLayers.Format.WKTClass for reading and writing Well-Known Text.
Constructor
OpenLayers.Format.WKTCreate a new parser for WKT
+ +

Constructor

+ +

OpenLayers.Format.WKT

Create a new parser for WKT

Parameters

options{Object} An optional object whose properties will be set on this instance

Returns

{OpenLayers.Format.WKT} A new WKT parser.

+ +
+ + + + + + + + + + +
Create a new parser for WKT
Base class for format reading/writing a variety of formats.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WMC-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WMC-js.html new file mode 100644 index 0000000..cf51c18 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WMC-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Format.WMC - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMC

Read and write Web Map Context documents.

Inherits from

Summary
OpenLayers.Format.WMCRead and write Web Map Context documents.
Properties
defaultVersion{String} Version number to assume if none found.
version{String} Specify a version string if one is known.
Constructor
OpenLayers.Format.WMCCreate a new parser for WMC docs.
Functions
readRead WMC data from a string, and return an object with map properties and a list of layers.
writeWrite a WMC document given a map.
+ +

Properties

+ +

defaultVersion

{String} Version number to assume if none found.  Default is “1.1.0”.

+ +

version

{String} Specify a version string if one is known.

+ +

Constructor

+ +

OpenLayers.Format.WMC

Create a new parser for WMC docs.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data,
options)

Read WMC data from a string, and return an object with map properties and a list of layers.

Parameters

data{String} or {DOMElement} data to read/parse.
options{Object} The options object must contain a map property.  If the map property is a string, it must be the id of a dom element where the new map will be placed.  If the map property is an OpenLayers.Map, the layers from the context document will be added to the map.

Returns

{OpenLayers.Map} A map based on the context.

+ +

write

write: function(obj,
options)

Write a WMC document given a map.

Parameters

obj{OpenLayers.Map | Object} A map or context object.
options{Object} Optional configuration object.

Returns

{String} A WMC document string.

+ +
+ + + + + + + + + + +
read: function(data,
options)
Read WMC data from a string, and return an object with map properties and a list of layers.
write: function(obj,
options)
Write a WMC document given a map.
Read and write XML.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WMC/v1-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WMC/v1-js.html new file mode 100644 index 0000000..4540987 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WMC/v1-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Format.WMC.v1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMC.v1

Superclass for WMC version 1 parsers.

Inherits from

Summary
OpenLayers.Format.WMC.v1Superclass for WMC version 1 parsers.
Constructor
OpenLayers.Format.WMC.v1Instances of this class are not created directly.
+ +

Constructor

+ +

OpenLayers.Format.WMC.v1

Instances of this class are not created directly.  Use the OpenLayers.Format.WMC constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Read and write XML.
Read and write Web Map Context documents.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WMC/v1_0_0-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WMC/v1_0_0-js.html new file mode 100644 index 0000000..be07bfe --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WMC/v1_0_0-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.WMC.v1_0_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMC.v1_0_0

Read and write WMC version 1.0.0.

Inherits from

Summary
OpenLayers.Format.WMC.v1_0_0Read and write WMC version 1.0.0.
Constants
VERSION{String} 1.0.0
Constructor
OpenLayers.Format.WMC.v1_0_0Instances of this class are not created directly.
+ +

Constants

+ +

VERSION

{String} 1.0.0

+ +

Constructor

+ +

OpenLayers.Format.WMC.v1_0_0

Instances of this class are not created directly.  Use the OpenLayers.Format.WMC constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Superclass for WMC version 1 parsers.
Read and write Web Map Context documents.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WMC/v1_1_0-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WMC/v1_1_0-js.html new file mode 100644 index 0000000..f1232cd --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WMC/v1_1_0-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.WMC.v1_1_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMC.v1_1_0

Read and write WMC version 1.1.0.

Differences between 1.1.0 and 1.0.0

  • 1.1.0 Layers have optional sld:MinScaleDenominator and sld:MaxScaleDenominator

Inherits from

Summary
OpenLayers.Format.WMC.v1_1_0Read and write WMC version 1.1.0.
Constants
VERSION{String} 1.1.0
Constructor
OpenLayers.Format.WMC.v1_1_0Instances of this class are not created directly.
+ +

Constants

+ +

VERSION

{String} 1.1.0

+ +

Constructor

+ +

OpenLayers.Format.WMC.v1_1_0

Instances of this class are not created directly.  Use the OpenLayers.Format.WMC constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Superclass for WMC version 1 parsers.
Read and write Web Map Context documents.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities-js.html new file mode 100644 index 0000000..b9f11e7 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Format.WMSCapabilities - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSCapabilities

Read WMS Capabilities.

Inherits from

Summary
OpenLayers.Format.WMSCapabilitiesRead WMS Capabilities.
Properties
defaultVersion{String} Version number to assume if none found.
version{String} Specify a version string if one is known.
Constructor
OpenLayers.Format.WMSCapabilitiesCreate a new parser for WMS capabilities.
Functions
readRead capabilities data from a string, and return a list of layers.
+ +

Properties

+ +

defaultVersion

{String} Version number to assume if none found.  Default is “1.1.1”.

+ +

version

{String} Specify a version string if one is known.

+ +

Constructor

+ +

OpenLayers.Format.WMSCapabilities

Create a new parser for WMS capabilities.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read capabilities data from a string, and return a list of layers.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array} List of named layers.

+ +
+ + + + + + + + + + +
read: function(data)
Read capabilities data from a string, and return a list of layers.
Base class for format reading/writing a variety of formats.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities/v1_1-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities/v1_1-js.html new file mode 100644 index 0000000..61c9000 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities/v1_1-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.WMSCapabilities.v1_1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSCapabilities.v1_1

Abstract class not to be instantiated directly.

Inherits from

Summary
OpenLayers.Format.WMSCapabilities.v1_1Abstract class not to be instantiated directly.
Constructor
OpenLayers.Format.WMSCapabilities.v1_1Create an instance of one of the subclasses.
Functions
readRead capabilities data from a string, and return a list of layers.
+ +

Constructor

+ +

OpenLayers.Format.WMSCapabilities.v1_1

Create an instance of one of the subclasses.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read capabilities data from a string, and return a list of layers.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array} List of named layers.

+ +
+ + + + + + + + + + +
read: function(data)
Read capabilities data from a string, and return a list of layers.
Read and write XML.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities/v1_1_0-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities/v1_1_0-js.html new file mode 100644 index 0000000..15e3715 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities/v1_1_0-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Format.WMSCapabilities/v1_1_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSCapabilities/v1_1_0

Read WMS Capabilities version 1.1.0.

Inherits from

Summary
OpenLayers.Format.WMSCapabilities/v1_1_0Read WMS Capabilities version 1.1.0.
Constructor
OpenLayers.Format.WMSCapabilities.v1_1_0Create a new parser for WMS capabilities version 1.1.0.
+ +

Constructor

+ +

OpenLayers.Format.WMSCapabilities.v1_1_0

Create a new parser for WMS capabilities version 1.1.0.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Abstract class not to be instantiated directly.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities/v1_1_1-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities/v1_1_1-js.html new file mode 100644 index 0000000..b6a96f7 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSCapabilities/v1_1_1-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Format.WMSCapabilities/v1_1_1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSCapabilities/v1_1_1

Read WMS Capabilities version 1.1.1.

Inherits from

Summary
OpenLayers.Format.WMSCapabilities/v1_1_1Read WMS Capabilities version 1.1.1.
Constructor
OpenLayers.Format.WMSCapabilities.v1_1_1Create a new parser for WMS capabilities version 1.1.1.
+ +

Constructor

+ +

OpenLayers.Format.WMSCapabilities.v1_1_1

Create a new parser for WMS capabilities version 1.1.1.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Abstract class not to be instantiated directly.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WMSDescribeLayer-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSDescribeLayer-js.html new file mode 100644 index 0000000..820b4a6 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSDescribeLayer-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Format.WMSDescribeLayer - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSDescribeLayer

Read SLD WMS DescribeLayer response DescribeLayer is meant to couple WMS to WFS and WCS

Inherits from

Summary
OpenLayers.Format.WMSDescribeLayerRead SLD WMS DescribeLayer response DescribeLayer is meant to couple WMS to WFS and WCS
Properties
defaultVersion{String} Version number to assume if none found.
version{String} Specify a version string if one is known.
Constructor
OpenLayers.Format.WMSDescribeLayerCreate a new parser for WMS DescribeLayer responses.
Functions
readRead DescribeLayer data from a string, and return the response.
+ +

Properties

+ +

defaultVersion

{String} Version number to assume if none found.  Default is “1.1.1”.

+ +

version

{String} Specify a version string if one is known.

+ +

Constructor

+ +

OpenLayers.Format.WMSDescribeLayer

Create a new parser for WMS DescribeLayer responses.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read DescribeLayer data from a string, and return the response.  The OGC currently defines 2 formats which are allowed for output, so we need to parse these 2 types

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array} Array of {<LayerDescription>} objects which have:

  • {String} owsType: WFS/WCS
  • {String} owsURL: the online resource
  • {String} typeName: the name of the typename on the service
+ +
+ + + + + + + + + + +
read: function(data)
Read DescribeLayer data from a string, and return the response.
Read and write XML.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WMSDescribeLayer/v1_1-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSDescribeLayer/v1_1-js.html new file mode 100644 index 0000000..135d2c0 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSDescribeLayer/v1_1-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.WMSDescribeLayer.v1_1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSDescribeLayer.v1_1

Read SLD WMS DescribeLayer response for WMS 1.1.X WMS 1.1.X is tightly coupled to SLD 1.0.0

Example DescribeLayer request

http://demo.opengeo.org/geoserver/wms?request=DescribeLayer&version=1.1.1&layers=topp:states

Inherits from

Summary
OpenLayers.Format.WMSDescribeLayer.v1_1Read SLD WMS DescribeLayer response for WMS 1.1.X WMS 1.1.X is tightly coupled to SLD 1.0.0
Constructor
OpenLayers.Format.WMSDescribeLayerCreate a new parser for WMS DescribeLayer responses.
Functions
readRead DescribeLayer data from a string, and return the response.
+ +

Constructor

+ +

OpenLayers.Format.WMSDescribeLayer

Create a new parser for WMS DescribeLayer responses.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read DescribeLayer data from a string, and return the response.  The OGC defines 2 formats which are allowed for output, so we need to parse these 2 types for version 1.1.X

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array} Array of {<LayerDescription>} objects which have:

  • {String} owsType: WFS/WCS
  • {String} owsURL: the online resource
  • {String} typeName: the name of the typename on the service
+ +
+ + + + + + + + + + +
read: function(data)
Read DescribeLayer data from a string, and return the response.
Create a new parser for WMS DescribeLayer responses.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/WMSGetFeatureInfo-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSGetFeatureInfo-js.html new file mode 100644 index 0000000..53214b5 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/WMSGetFeatureInfo-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Format.WMSGetFeatureInfo - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSGetFeatureInfo

Class to read GetFeatureInfo responses from Web Mapping Services

Inherits from

Summary
OpenLayers.Format.WMSGetFeatureInfoClass to read GetFeatureInfo responses from Web Mapping Services
Properties
layerIdentifier{String} All xml nodes containing this search criteria will populate an internal array of layer nodes.
featureIdentifier{String} All xml nodes containing this search criteria will populate an internal array of feature nodes for each layer node found.
Constructor
OpenLayers.Format.WMSGetFeatureInfoCreate a new parser for WMS GetFeatureInfo responses
Functions
readRead WMS GetFeatureInfo data from a string, and return an array of features
+ +

Properties

+ +

layerIdentifier

{String} All xml nodes containing this search criteria will populate an internal array of layer nodes.

+ +

featureIdentifier

{String} All xml nodes containing this search criteria will populate an internal array of feature nodes for each layer node found.

+ +

Constructor

+ +

OpenLayers.Format.WMSGetFeatureInfo

Create a new parser for WMS GetFeatureInfo responses

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read WMS GetFeatureInfo data from a string, and return an array of features

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array(OpenLayers.Feature.Vector)} An array of features.

+ +
+ + + + + + + + + + +
read: function(data)
Read WMS GetFeatureInfo data from a string, and return an array of features
Read and write XML.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Format/XML-js.html b/openlayers/doc/apidocs/files/OpenLayers/Format/XML-js.html new file mode 100644 index 0000000..7435b08 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Format/XML-js.html @@ -0,0 +1,79 @@ + + +OpenLayers.Format.XML - OpenLayers + + + + + + + + + +

OpenLayers.Format.XML

Read and write XML.  For cross-browser XML generation, use methods on an instance of the XML format class instead of on <code>document<end>.  The DOM creation and traversing methods exposed here all mimic the W3C XML DOM methods.  Create a new parser with the OpenLayers.Format.XML constructor.

Inherits from

Summary
OpenLayers.Format.XMLRead and write XML.
Constructor
OpenLayers.Format.XMLConstruct an XML parser.
Functions
destroyClean up.
writeSerialize a DOM node into a XML string.
createElementNSCreate a new element with namespace.
createTextNodeCreate a text node.
getElementsByTagNameNSGet a list of elements on a node given the namespace URI and local name.
getAttributeNodeNSGet an attribute node given the namespace URI and local name.
getAttributeNSGet an attribute value given the namespace URI and local name.
getChildValueGet the textual value of the node if it exists, or return an optional default string.
concatChildValuesDeprecated.
isSimpleContentTest if the given node has only simple content (i.e.
contentTypeDetermine the content type for a given node.
hasAttributeNSDetermine whether a node has a particular attribute matching the given name and namespace.
setAttributeNSAdds a new attribute or changes the value of an attribute with the given namespace and name.
getChildElGet the first child element.
getNextElGet the next sibling element.
lookupNamespaceURITakes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
OpenLayers.Format.XML.lookupNamespaceURITakes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
+ +

Constructor

+ +

OpenLayers.Format.XML

Construct an XML parser.  The parser is used to read and write XML.  Reading XML from a string returns a DOM element.  Writing XML from a DOM element returns a string.

Parameters

options{Object} Optional object whose properties will be set on the object.
+ +

Functions

+ +

destroy

destroy: function()

Clean up.

+ +

write

write: function(node)

Serialize a DOM node into a XML string.

Parameters

node{DOMElement} A DOM node.

Returns

{String} The XML string representation of the input node.

+ +

createElementNS

createElementNS: function(uri,
name)

Create a new element with namespace.  This node can be appended to another node with the standard node.appendChild method.  For cross-browser support, this method must be used instead of document.createElementNS.

Parameters

uri{String} Namespace URI for the element.
name{String} The qualified name of the element (prefix:localname).

Returns

{Element} A DOM element with namespace.

+ +

createTextNode

createTextNode: function(text)

Create a text node.  This node can be appended to another node with the standard node.appendChild method.  For cross-browser support, this method must be used instead of document.createTextNode.

Parameters

text{String} The text of the node.

Returns

{DOMElement} A DOM text node.

+ +

getElementsByTagNameNS

getElementsByTagNameNS: function(node,
uri,
name)

Get a list of elements on a node given the namespace URI and local name.  To return all nodes in a given namespace, use ‘*’ for the name argument.  To return all nodes of a given (local) name, regardless of namespace, use ‘*’ for the uri argument.

Parameters

node{Element} Node on which to search for other nodes.
uri{String} Namespace URI.
name{String} Local name of the tag (without the prefix).

Returns

{NodeList} A node list or array of elements.

+ +

getAttributeNodeNS

getAttributeNodeNS: function(node,
uri,
name)

Get an attribute node given the namespace URI and local name.

Parameters

node{Element} Node on which to search for attribute nodes.
uri{String} Namespace URI.
name{String} Local name of the attribute (without the prefix).

Returns

{DOMElement} An attribute node or null if none found.

+ +

getAttributeNS

getAttributeNS: function(node,
uri,
name)

Get an attribute value given the namespace URI and local name.

Parameters

node{Element} Node on which to search for an attribute.
uri{String} Namespace URI.
name{String} Local name of the attribute (without the prefix).

Returns

{String} An attribute value or and empty string if none found.

+ +

getChildValue

getChildValue: function(node,
def)

Get the textual value of the node if it exists, or return an optional default string.  Returns an empty string if no first child exists and no default value is supplied.

Parameters

node{DOMElement} The element used to look for a first child value.
def{String} Optional string to return in the event that no first child value exists.

Returns

{String} The value of the first child of the given node.

+ +

concatChildValues

concatChildValues: function(node,
def)

Deprecated.  Use getChildValue instead.

Concatenate the value of all child nodes if any exist, or return an optional default string.  Returns an empty string if no children exist and no default value is supplied.  Not optimized for large numbers of child nodes.

Parameters

node{DOMElement} The element used to look for child values.
def{String} Optional string to return in the event that no child exist.

Returns

{String} The concatenated value of all child nodes of the given node.

+ +

isSimpleContent

isSimpleContent: function(node)

Test if the given node has only simple content (i.e. no child element nodes).

Parameters

node{DOMElement} An element node.

Returns

{Boolean} The node has no child element nodes (nodes of type 1).

+ +

contentType

contentType: function(node)

Determine the content type for a given node.

Parameters

node{DOMElement}

Returns

{Integer} One of OpenLayers.Format.XML.CONTENT_TYPE.{EMPTY,SIMPLE,COMPLEX,MIXED} if the node has no, simple, complex, or mixed content.

+ +

hasAttributeNS

hasAttributeNS: function(node,
uri,
name)

Determine whether a node has a particular attribute matching the given name and namespace.

Parameters

node{Element} Node on which to search for an attribute.
uri{String} Namespace URI.
name{String} Local name of the attribute (without the prefix).

Returns

{Boolean} The node has an attribute matching the name and namespace.

+ +

setAttributeNS

setAttributeNS: function(node,
uri,
name,
value)

Adds a new attribute or changes the value of an attribute with the given namespace and name.

Parameters

node{Element} Element node on which to set the attribute.
uri{String} Namespace URI for the attribute.
name{String} Qualified name (prefix:localname) for the attribute.
value{String} Attribute value.
+ +

getChildEl

getChildEl: function(node,
name,
uri)

Get the first child element.  Optionally only return the first child if it matches the given name and namespace URI.

Parameters

node{DOMElement} The parent node.
name{String} Optional node name (local) to search for.
uri{String} Optional namespace URI to search for.

Returns

{DOMElement} The first child.  Returns null if no element is found, if something significant besides an element is found, or if the element found does not match the optional name and uri.

+ +

getNextEl

getNextEl: function(node,
name,
uri)

Get the next sibling element.  Optionally get the first sibling only if it matches the given local name and namespace URI.

Parameters

node{DOMElement} The node.
name{String} Optional local name of the sibling to search for.
uri{String} Optional namespace URI of the sibling to search for.

Returns

{DOMElement} The next sibling element.  Returns null if no element is found, something significant besides an element is found, or the found element does not match the optional name and uri.

+ +

lookupNamespaceURI

lookupNamespaceURI: function(node,
prefix)

Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).  Supplying null for the prefix will return the default namespace.

For browsers that support it, this calls the native lookupNamesapceURI function.  In other browsers, this is an implementation of http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI.

For browsers that don’t support the attribute.ownerElement property, this method cannot be called on attribute nodes.

Parameters

node{DOMElement} The node from which to start looking.
prefix{String} The prefix to lookup or null to lookup the default namespace.

Returns

{String} The namespace URI for the given prefix.  Returns null if the prefix cannot be found or the node is the wrong type.

+ +

OpenLayers.Format.XML.lookupNamespaceURI

Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).  Supplying null for the prefix will return the default namespace.

For browsers that support it, this calls the native lookupNamesapceURI function.  In other browsers, this is an implementation of http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI.

For browsers that don’t support the attribute.ownerElement property, this method cannot be called on attribute nodes.

Parameters

node{DOMElement} The node from which to start looking.
prefix{String} The prefix to lookup or null to lookup the default namespace.

Returns

{String} The namespace URI for the given prefix.  Returns null if the prefix cannot be found or the node is the wrong type.

+ +
+ + + + + + + + + + +
destroy: function()
Clean up.
write: function(node)
Serialize a DOM node into a XML string.
createElementNS: function(uri,
name)
Create a new element with namespace.
createTextNode: function(text)
Create a text node.
getElementsByTagNameNS: function(node,
uri,
name)
Get a list of elements on a node given the namespace URI and local name.
getAttributeNodeNS: function(node,
uri,
name)
Get an attribute node given the namespace URI and local name.
getAttributeNS: function(node,
uri,
name)
Get an attribute value given the namespace URI and local name.
getChildValue: function(node,
def)
Get the textual value of the node if it exists, or return an optional default string.
concatChildValues: function(node,
def)
Deprecated.
isSimpleContent: function(node)
Test if the given node has only simple content (i.e.
contentType: function(node)
Determine the content type for a given node.
hasAttributeNS: function(node,
uri,
name)
Determine whether a node has a particular attribute matching the given name and namespace.
setAttributeNS: function(node,
uri,
name,
value)
Adds a new attribute or changes the value of an attribute with the given namespace and name.
getChildEl: function(node,
name,
uri)
Get the first child element.
getNextEl: function(node,
name,
uri)
Get the next sibling element.
lookupNamespaceURI: function(node,
prefix)
Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
Construct an XML parser.
Base class for format reading/writing a variety of formats.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Geometry-js.html b/openlayers/doc/apidocs/files/OpenLayers/Geometry-js.html new file mode 100644 index 0000000..31a48f8 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Geometry-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Geometry - OpenLayers + + + + + + + + + +

OpenLayers.Geometry

A Geometry is a description of a geographic object.  Create an instance of this class with the OpenLayers.Geometry constructor.  This is a base class, typical geometry types are described by subclasses of this class.

Summary
OpenLayers.GeometryA Geometry is a description of a geographic object.
Constructor
OpenLayers.GeometryCreates a geometry object.
Functions
cloneCreate a clone of this geometry.
getBoundsGet the bounds for this Geometry.
calculateBoundsRecalculate the bounds for the geometry.
distanceToCalculate the closest distance between two geometries (on the x-y plane).
getVerticesReturn a list of all points in this geometry.
getCentroidCalculate the centroid of this geometry.
+ +

Constructor

+ +

OpenLayers.Geometry

Creates a geometry object.

+ +

Functions

+ +

clone

clone: function()

Create a clone of this geometry.  Does not set any non-standard properties of the cloned geometry.

Returns

{OpenLayers.Geometry} An exact clone of this geometry.

+ +

getBounds

getBounds: function()

Get the bounds for this Geometry.  If bounds is not set, it is calculated again, this makes queries faster.

Returns

{OpenLayers.Bounds}

+ +

calculateBounds

calculateBounds: function()

Recalculate the bounds for the geometry.

+ +

distanceTo

distanceTo: function(geometry,
options)

Calculate the closest distance between two geometries (on the x-y plane).

Parameters

geometry{OpenLayers.Geometry} The target geometry.
options{Object} Optional properties for configuring the distance calculation.

Valid options depend on the specific geometry type.

Returns

{Number | Object} The distance between this geometry and the target.  If details is true, the return will be an object with distance, x0, y0, x1, and x2 properties.  The x0 and y0 properties represent the coordinates of the closest point on this geometry.  The x1 and y1 properties represent the coordinates of the closest point on the target geometry.

+ +

getVertices

getVertices: function(nodes)

Return a list of all points in this geometry.

Parameters

nodes{Boolean} For lines, only return vertices that are endpoints.  If false, for lines, only vertices that are not endpoints will be returned.  If not provided, all vertices will be returned.

Returns

{Array} A list of all vertices in the geometry.

+ +

getCentroid

getCentroid: function()

Calculate the centroid of this geometry.  This method is defined in subclasses.

Returns

{OpenLayers.Geometry.Point} The centroid of the collection

+ +
+ + + + + + + + + + +
clone: function()
Create a clone of this geometry.
getBounds: function()
Get the bounds for this Geometry.
calculateBounds: function()
Recalculate the bounds for the geometry.
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
getVertices: function(nodes)
Return a list of all points in this geometry.
getCentroid: function()
Calculate the centroid of this geometry.
Creates a geometry object.
Instances of this class represent bounding boxes.
Point geometry class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Geometry/Collection-js.html b/openlayers/doc/apidocs/files/OpenLayers/Geometry/Collection-js.html new file mode 100644 index 0000000..79e498d --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Geometry/Collection-js.html @@ -0,0 +1,85 @@ + + +OpenLayers.Geometry.Collection - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.Collection

A Collection is exactly what it sounds like: A collection of different Geometries.  These are stored in the local parameter components (which can be passed as a parameter to the constructor).

As new geometries are added to the collection, they are NOT cloned.  When removing geometries, they need to be specified by reference (ie you have to pass in the exact geometry to be removed).

The getArea and getLength functions here merely iterate through the components, summing their respective areas and lengths.

Create a new instance with the OpenLayers.Geometry.Collection constructor.

Inerhits from

Summary
OpenLayers.Geometry.CollectionA Collection is exactly what it sounds like: A collection of different Geometries.
Properties
components{Array(OpenLayers.Geometry)} The component parts of this geometry
Constructor
OpenLayers.Geometry.CollectionCreates a Geometry Collection -- a list of geoms.
Functions
destroyDestroy this geometry.
cloneClone this geometry.
calculateBoundsRecalculate the bounds by iterating through the components and calling calling extendBounds() on each item.
addComponentsAdd components to this geometry.
removeComponentsRemove components from this geometry.
getLengthCalculate the length of this geometry
getAreaCalculate the area of this geometry.
getGeodesicAreaCalculate the approximate area of the polygon were it projected onto the earth.
getCentroid{OpenLayers.Geometry.Point} The centroid of the collection
getGeodesicLengthCalculate the approximate length of the geometry were it projected onto the earth.
moveMoves a geometry by the given displacement along positive x and y axes.
rotateRotate a geometry around some origin
resizeResize a geometry relative to some origin.
distanceToCalculate the closest distance between two geometries (on the x-y plane).
equalsDetermine whether another geometry is equivalent to this one.
transformReproject the components geometry from source to dest.
intersectsDetermine if the input geometry intersects this one.
getVerticesReturn a list of all points in this geometry.
+ +

Properties

+ +

components

{Array(OpenLayers.Geometry)} The component parts of this geometry

+ +

Constructor

+ +

OpenLayers.Geometry.Collection

Creates a Geometry Collection -- a list of geoms.

Parameters

components{Array(OpenLayers.Geometry)} Optional array of geometries
+ +

Functions

+ +

destroy

destroy: function ()

Destroy this geometry.

+ +

clone

clone: function()

Clone this geometry.

Returns

{OpenLayers.Geometry.Collection} An exact clone of this collection

+ +

calculateBounds

calculateBounds: function()

Recalculate the bounds by iterating through the components and calling calling extendBounds() on each item.

+ +

addComponents

addComponents: function(components)

Add components to this geometry.

Parameters

components{Array(OpenLayers.Geometry)} An array of geometries to add
+ +

removeComponents

removeComponents: function(components)

Remove components from this geometry.

Parameters

components{Array(OpenLayers.Geometry)} The components to be removed
+ +

getLength

getLength: function()

Calculate the length of this geometry

Returns

{Float} The length of the geometry

+ +

getArea

getArea: function()

Calculate the area of this geometry.  Note how this function is overridden in OpenLayers.Geometry.Polygon.

Returns

{Float} The area of the collection by summing its parts

+ +

getGeodesicArea

getGeodesicArea: function(projection)

Calculate the approximate area of the polygon were it projected onto the earth.

Parameters

projection{OpenLayers.Projection} The spatial reference system for the geometry coordinates.  If not provided, Geographic/WGS84 is assumed.

Reference

Robert.  G. Chamberlain and William H.  Duquette, “Some Algorithms for Polygons on a Sphere”, JPL Publication 07-03, Jet Propulsion Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409

Returns

{float} The approximate geodesic area of the geometry in square meters.

+ +

getCentroid

getCentroid: function()

Returns

{OpenLayers.Geometry.Point} The centroid of the collection

+ +

getGeodesicLength

getGeodesicLength: function(projection)

Calculate the approximate length of the geometry were it projected onto the earth.

projection{OpenLayers.Projection} The spatial reference system for the geometry coordinates.  If not provided, Geographic/WGS84 is assumed.

Returns

{Float} The appoximate geodesic length of the geometry in meters.

+ +

move

move: function(x,
y)

Moves a geometry by the given displacement along positive x and y axes.  This modifies the position of the geometry and clears the cached bounds.

Parameters

x{Float} Distance to move geometry in positive x direction.
y{Float} Distance to move geometry in positive y direction.
+ +

rotate

rotate: function(angle,
origin)

Rotate a geometry around some origin

Parameters

angle{Float} Rotation angle in degrees (measured counterclockwise from the positive x-axis)
origin{OpenLayers.Geometry.Point} Center point for the rotation
+ +

resize

resize: function(scale,
origin,
ratio)

Resize a geometry relative to some origin.  Use this method to apply a uniform scaling to a geometry.

Parameters

scale{Float} Factor by which to scale the geometry.  A scale of 2 doubles the size of the geometry in each dimension (lines, for example, will be twice as long, and polygons will have four times the area).
origin{OpenLayers.Geometry.Point} Point of origin for resizing
ratio{Float} Optional x:y ratio for resizing.  Default ratio is 1.

Returns

{OpenLayers.Geometry}The current geometry.
+ +

distanceTo

distanceTo: function(geometry,
options)

Calculate the closest distance between two geometries (on the x-y plane).

Parameters

geometry{OpenLayers.Geometry} The target geometry.
options{Object} Optional properties for configuring the distance calculation.

Valid options

details{Boolean} Return details from the distance calculation.  Default is false.
edge{Boolean} Calculate the distance from this geometry to the nearest edge of the target geometry.  Default is true.  If true, calling distanceTo from a geometry that is wholly contained within the target will result in a non-zero distance.  If false, whenever geometries intersect, calling distanceTo will return 0.  If false, details cannot be returned.

Returns

{Number | Object} The distance between this geometry and the target.  If details is true, the return will be an object with distance, x0, y0, x1, and y1 properties.  The x0 and y0 properties represent the coordinates of the closest point on this geometry.  The x1 and y1 properties represent the coordinates of the closest point on the target geometry.

+ +

equals

equals: function(geometry)

Determine whether another geometry is equivalent to this one.  Geometries are considered equivalent if all components have the same coordinates.

Parameters

geom{OpenLayers.Geometry} The geometry to test.

Returns

{Boolean} The supplied geometry is equivalent to this geometry.

+ +

transform

transform: function(source,
dest)

Reproject the components geometry from source to dest.

Parameters

source{OpenLayers.Projection}
dest{OpenLayers.Projection}

Returns

{OpenLayers.Geometry}

+ +

intersects

intersects: function(geometry)

Determine if the input geometry intersects this one.

Parameters

geometry{OpenLayers.Geometry} Any type of geometry.

Returns

{Boolean} The input geometry intersects this one.

+ +

getVertices

getVertices: function(nodes)

Return a list of all points in this geometry.

Parameters

nodes{Boolean} For lines, only return vertices that are endpoints.  If false, for lines, only vertices that are not endpoints will be returned.  If not provided, all vertices will be returned.

Returns

{Array} A list of all vertices in the geometry.

+ +
+ + + + + + + + + + +
A Geometry is a description of a geographic object.
destroy: function ()
Destroy this geometry.
clone: function()
Clone this geometry.
calculateBounds: function()
Recalculate the bounds by iterating through the components and calling calling extendBounds() on each item.
addComponents: function(components)
Add components to this geometry.
removeComponents: function(components)
Remove components from this geometry.
getLength: function()
Calculate the length of this geometry
getArea: function()
Calculate the area of this geometry.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
Point geometry class.
getGeodesicLength: function(projection)
Calculate the approximate length of the geometry were it projected onto the earth.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
rotate: function(angle,
origin)
Rotate a geometry around some origin
resize: function(scale,
origin,
ratio)
Resize a geometry relative to some origin.
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
equals: function(geometry)
Determine whether another geometry is equivalent to this one.
transform: function(source,
dest)
Reproject the components geometry from source to dest.
intersects: function(geometry)
Determine if the input geometry intersects this one.
getVertices: function(nodes)
Return a list of all points in this geometry.
{Array(OpenLayers.Geometry)} The component parts of this geometry
Creates a Geometry Collection -- a list of geoms.
Polygon is a collection of Geometry.LinearRings.
Class for coordinate transforms between coordinate systems.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Geometry/Curve-js.html b/openlayers/doc/apidocs/files/OpenLayers/Geometry/Curve-js.html new file mode 100644 index 0000000..ac63c2f --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Geometry/Curve-js.html @@ -0,0 +1,49 @@ + + +OpenLayers.Geometry.Curve - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.Curve

A Curve is a MultiPoint, whose points are assumed to be connected.  To this end, we provide a “getLength()” function, which iterates through the points, summing the distances between them.

Inherits

Summary
OpenLayers.Geometry.CurveA Curve is a MultiPoint, whose points are assumed to be connected.
Constructor
OpenLayers.Geometry.Curve
Functions
getLength{Float} The length of the curve
getGeodesicLengthCalculate the approximate length of the geometry were it projected onto the earth.
+ +

Constructor

+ +

OpenLayers.Geometry.Curve

Parameters

point{Array(OpenLayers.Geometry.Point)}
+ +

Functions

+ +

getLength

getLength: function()

Returns

{Float} The length of the curve

+ +

getGeodesicLength

getGeodesicLength: function(projection)

Calculate the approximate length of the geometry were it projected onto the earth.

projection{OpenLayers.Projection} The spatial reference system for the geometry coordinates.  If not provided, Geographic/WGS84 is assumed.

Returns

{Float} The appoximate geodesic length of the geometry in meters.

+ +
+ + + + + + + + + + +
getLength: function()
{Float} The length of the curve
getGeodesicLength: function(projection)
Calculate the approximate length of the geometry were it projected onto the earth.
MultiPoint is a collection of Points.
Point geometry class.
Class for coordinate transforms between coordinate systems.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Geometry/LineString-js.html b/openlayers/doc/apidocs/files/OpenLayers/Geometry/LineString-js.html new file mode 100644 index 0000000..ce520d0 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Geometry/LineString-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Geometry.LineString - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.LineString

A LineString is a Curve which, once two points have been added to it, can never be less than two points long.

Inherits from

Summary
OpenLayers.Geometry.LineStringA LineString is a Curve which, once two points have been added to it, can never be less than two points long.
Constructor
OpenLayers.Geometry.LineStringCreate a new LineString geometry
Functions
removeComponentOnly allows removal of a point if there are three or more points in the linestring.
intersectsTest for instersection between two geometries.
getVerticesReturn a list of all points in this geometry.
distanceToCalculate the closest distance between two geometries (on the x-y plane).
+ +

Constructor

+ +

OpenLayers.Geometry.LineString

Create a new LineString geometry

Parameters

points{Array(OpenLayers.Geometry.Point)} An array of points used to generate the linestring
+ +

Functions

+ +

removeComponent

removeComponent: function(point)

Only allows removal of a point if there are three or more points in the linestring.  (otherwise the result would be just a single point)

Parameters

point{OpenLayers.Geometry.Point} The point to be removed
+ +

intersects

intersects: function(geometry)

Test for instersection between two geometries.  This is a cheapo implementation of the Bently-Ottmann algorigithm.  It doesn’t really keep track of a sweep line data structure.  It is closer to the brute force method, except that segments are sorted and potential intersections are only calculated when bounding boxes intersect.

Parameters

geometry{OpenLayers.Geometry}

Returns

{Boolean} The input geometry intersects this geometry.

+ +

getVertices

getVertices: function(nodes)

Return a list of all points in this geometry.

Parameters

nodes{Boolean} For lines, only return vertices that are endpoints.  If false, for lines, only vertices that are not endpoints will be returned.  If not provided, all vertices will be returned.

Returns

{Array} A list of all vertices in the geometry.

+ +

distanceTo

distanceTo: function(geometry,
options)

Calculate the closest distance between two geometries (on the x-y plane).

Parameters

geometry{OpenLayers.Geometry} The target geometry.
options{Object} Optional properties for configuring the distance calculation.

Valid options

details{Boolean} Return details from the distance calculation.  Default is false.
edge{Boolean} Calculate the distance from this geometry to the nearest edge of the target geometry.  Default is true.  If true, calling distanceTo from a geometry that is wholly contained within the target will result in a non-zero distance.  If false, whenever geometries intersect, calling distanceTo will return 0.  If false, details cannot be returned.

Returns

{Number | Object} The distance between this geometry and the target.  If details is true, the return will be an object with distance, x0, y0, x1, and x2 properties.  The x0 and y0 properties represent the coordinates of the closest point on this geometry.  The x1 and y1 properties represent the coordinates of the closest point on the target geometry.

+ +
+ + + + + + + + + + +
removeComponent: function(point)
Only allows removal of a point if there are three or more points in the linestring.
intersects: function(geometry)
Test for instersection between two geometries.
getVertices: function(nodes)
Return a list of all points in this geometry.
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
A Curve is a MultiPoint, whose points are assumed to be connected.
Point geometry class.
A Geometry is a description of a geographic object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Geometry/LinearRing-js.html b/openlayers/doc/apidocs/files/OpenLayers/Geometry/LinearRing-js.html new file mode 100644 index 0000000..935160c --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Geometry/LinearRing-js.html @@ -0,0 +1,67 @@ + + +OpenLayers.Geometry.LinearRing - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.LinearRing

A Linear Ring is a special LineString which is closed.  It closes itself automatically on every addPoint/removePoint by adding a copy of the first point as the last point.

Also, as it is the first in the line family to close itself, a getArea() function is defined to calculate the enclosed area of the linearRing

Inherits

Summary
OpenLayers.Geometry.LinearRingA Linear Ring is a special LineString which is closed.
Constructor
OpenLayers.Geometry.LinearRingLinear rings are constructed with an array of points.
Functions
addComponentAdds a point to geometry components.
removeComponentRemoves a point from geometry components.
moveMoves a geometry by the given displacement along positive x and y axes.
rotateRotate a geometry around some origin
resizeResize a geometry relative to some origin.
transformReproject the components geometry from source to dest.
getCentroid{OpenLayers.Geometry.Point} The centroid of the collection
getArea
getGeodesicAreaCalculate the approximate area of the polygon were it projected onto the earth.
intersectsDetermine if the input geometry intersects this one.
getVerticesReturn a list of all points in this geometry.
+ +

Constructor

+ +

OpenLayers.Geometry.LinearRing

Linear rings are constructed with an array of points.  This array can represent a closed or open ring.  If the ring is open (the last point does not equal the first point), the constructor will close the ring.  If the ring is already closed (the last point does equal the first point), it will be left closed.

Parameters

points{Array(OpenLayers.Geometry.Point)} points
+ +

Functions

+ +

addComponent

addComponent: function(point,
index)

Adds a point to geometry components.  If the point is to be added to the end of the components array and it is the same as the last point already in that array, the duplicate point is not added.  This has the effect of closing the ring if it is not already closed, and doing the right thing if it is already closed.  This behavior can be overridden by calling the method with a non-null index as the second argument.

Parameter

point{OpenLayers.Geometry.Point}
index{Integer} Index into the array to insert the component

Returns

{Boolean} Was the Point successfully added?

+ +

removeComponent

removeComponent: function(point)

Removes a point from geometry components.

Parameters

point{OpenLayers.Geometry.Point}
+ +

move

move: function(x,
y)

Moves a geometry by the given displacement along positive x and y axes.  This modifies the position of the geometry and clears the cached bounds.

Parameters

x{Float} Distance to move geometry in positive x direction.
y{Float} Distance to move geometry in positive y direction.
+ +

rotate

rotate: function(angle,
origin)

Rotate a geometry around some origin

Parameters

angle{Float} Rotation angle in degrees (measured counterclockwise from the positive x-axis)
origin{OpenLayers.Geometry.Point} Center point for the rotation
+ +

resize

resize: function(scale,
origin,
ratio)

Resize a geometry relative to some origin.  Use this method to apply a uniform scaling to a geometry.

Parameters

scale{Float} Factor by which to scale the geometry.  A scale of 2 doubles the size of the geometry in each dimension (lines, for example, will be twice as long, and polygons will have four times the area).
origin{OpenLayers.Geometry.Point} Point of origin for resizing
ratio{Float} Optional x:y ratio for resizing.  Default ratio is 1.

Returns

{OpenLayers.Geometry}The current geometry.
+ +

transform

transform: function(source,
dest)

Reproject the components geometry from source to dest.

Parameters

source{OpenLayers.Projection}
dest{OpenLayers.Projection}

Returns

{OpenLayers.Geometry}

+ +

getCentroid

getCentroid: function()

Returns

{OpenLayers.Geometry.Point} The centroid of the collection

+ +

getArea

getArea: function()
NoteThe area is positive if the ring is oriented CW, otherwise it will be negative.

Returns

{Float} The signed area for a ring.

+ +

getGeodesicArea

getGeodesicArea: function(projection)

Calculate the approximate area of the polygon were it projected onto the earth.  Note that this area will be positive if ring is oriented clockwise, otherwise it will be negative.

Parameters

projection{OpenLayers.Projection} The spatial reference system for the geometry coordinates.  If not provided, Geographic/WGS84 is assumed.

Reference

Robert.  G. Chamberlain and William H.  Duquette, “Some Algorithms for Polygons on a Sphere”, JPL Publication 07-03, Jet Propulsion Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409

Returns

{float} The approximate signed geodesic area of the polygon in square meters.

+ +

intersects

intersects: function(geometry)

Determine if the input geometry intersects this one.

Parameters

geometry{OpenLayers.Geometry} Any type of geometry.

Returns

{Boolean} The input geometry intersects this one.

+ +

getVertices

getVertices: function(nodes)

Return a list of all points in this geometry.

Parameters

nodes{Boolean} For lines, only return vertices that are endpoints.  If false, for lines, only vertices that are not endpoints will be returned.  If not provided, all vertices will be returned.

Returns

{Array} A list of all vertices in the geometry.

+ +
+ + + + + + + + + + +
addComponent: function(point,
index)
Adds a point to geometry components.
removeComponent: function(point)
Removes a point from geometry components.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
rotate: function(angle,
origin)
Rotate a geometry around some origin
resize: function(scale,
origin,
ratio)
Resize a geometry relative to some origin.
transform: function(source,
dest)
Reproject the components geometry from source to dest.
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
Point geometry class.
getArea: function()
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
intersects: function(geometry)
Determine if the input geometry intersects this one.
getVertices: function(nodes)
Return a list of all points in this geometry.
A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
Class for coordinate transforms between coordinate systems.
A Geometry is a description of a geographic object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Geometry/MultiLineString-js.html b/openlayers/doc/apidocs/files/OpenLayers/Geometry/MultiLineString-js.html new file mode 100644 index 0000000..2673f40 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Geometry/MultiLineString-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Geometry.MultiLineString - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.MultiLineString

A MultiLineString is a geometry with multiple OpenLayers.Geometry.LineString components.

Inherits from

Summary
OpenLayers.Geometry.MultiLineStringA MultiLineString is a geometry with multiple OpenLayers.Geometry.LineString components.
Constructor
OpenLayers.Geometry.MultiLineStringConstructor for a MultiLineString Geometry.
+ +

Constructor

+ +

OpenLayers.Geometry.MultiLineString

Constructor for a MultiLineString Geometry.

Parameters

components{Array(OpenLayers.Geometry.LineString)}
+ +
+ + + + + + + + + + +
A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
A Collection is exactly what it sounds like: A collection of different Geometries.
A Geometry is a description of a geographic object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Geometry/MultiPoint-js.html b/openlayers/doc/apidocs/files/OpenLayers/Geometry/MultiPoint-js.html new file mode 100644 index 0000000..913240b --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Geometry/MultiPoint-js.html @@ -0,0 +1,49 @@ + + +OpenLayers.Geometry.MultiPoint - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.MultiPoint

MultiPoint is a collection of Points.  Create a new instance with the OpenLayers.Geometry.MultiPoint constructor.

Inherits from

Summary
OpenLayers.Geometry.MultiPointMultiPoint is a collection of Points.
Constructor
OpenLayers.Geometry.MultiPointCreate a new MultiPoint Geometry
Functions
addPointWrapper for <OpenLayers.Geometry.Collection.addComponent>
removePointWrapper for <OpenLayers.Geometry.Collection.removeComponent>
+ +

Constructor

+ +

OpenLayers.Geometry.MultiPoint

Create a new MultiPoint Geometry

Parameters

components{Array(OpenLayers.Geometry.Point)}

Returns

{OpenLayers.Geometry.MultiPoint}

+ +

Functions

+ +

addPoint

addPoint: function(point,
index)

Wrapper for <OpenLayers.Geometry.Collection.addComponent>

Parameters

point{OpenLayers.Geometry.Point} Point to be added
index{Integer} Optional index
+ +

removePoint

removePoint: function(point)

Wrapper for <OpenLayers.Geometry.Collection.removeComponent>

Parameters

point{OpenLayers.Geometry.Point} Point to be removed
+ +
+ + + + + + + + + + +
addPoint: function(point,
index)
Wrapper for OpenLayers.Geometry.Collection.addComponent
removePoint: function(point)
Wrapper for OpenLayers.Geometry.Collection.removeComponent
Create a new MultiPoint Geometry
A Collection is exactly what it sounds like: A collection of different Geometries.
A Geometry is a description of a geographic object.
Point geometry class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Geometry/MultiPolygon-js.html b/openlayers/doc/apidocs/files/OpenLayers/Geometry/MultiPolygon-js.html new file mode 100644 index 0000000..1e6a9cf --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Geometry/MultiPolygon-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Geometry.MultiPolygon - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.MultiPolygon

MultiPolygon is a geometry with multiple OpenLayers.Geometry.Polygon components.  Create a new instance with the OpenLayers.Geometry.MultiPolygon constructor.

Inherits from

Summary
OpenLayers.Geometry.MultiPolygonMultiPolygon is a geometry with multiple OpenLayers.Geometry.Polygon components.
Constructor
OpenLayers.Geometry.MultiPolygonCreate a new MultiPolygon geometry
+ +

Constructor

+ +

OpenLayers.Geometry.MultiPolygon

Create a new MultiPolygon geometry

Parameters

components{Array(OpenLayers.Geometry.Polygon)} An array of polygons used to generate the MultiPolygon
+ +
+ + + + + + + + + + +
Polygon is a collection of Geometry.LinearRings.
Create a new MultiPolygon geometry
A Collection is exactly what it sounds like: A collection of different Geometries.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Geometry/Point-js.html b/openlayers/doc/apidocs/files/OpenLayers/Geometry/Point-js.html new file mode 100644 index 0000000..4ab98a5 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Geometry/Point-js.html @@ -0,0 +1,71 @@ + + +OpenLayers.Geometry.Point - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.Point

Point geometry class.

Inherits from

Summary
OpenLayers.Geometry.PointPoint geometry class.
Properties
x{float}
y{float}
Constructor
OpenLayers.Geometry.PointConstruct a point geometry.
Functions
clone{OpenLayers.Geometry.Point} An exact clone of this OpenLayers.Geometry.Point
distanceToCalculate the closest distance between two geometries (on the x-y plane).
equalsDetermine whether another geometry is equivalent to this one.
moveMoves a geometry by the given displacement along positive x and y axes.
rotateRotate a point around another.
getCentroid{OpenLayers.Geometry.Point} The centroid of the collection
resizeResize a point relative to some origin.
intersectsDetermine if the input geometry intersects this one.
transformTranslate the x,y properties of the point from source to dest.
getVerticesReturn a list of all points in this geometry.
+ +

Properties

+ +

x

{float}

+ +

y

{float}

+ +

Constructor

+ +

OpenLayers.Geometry.Point

Construct a point geometry.

Parameters

x{float}
y{float}
+ +

Functions

+ +

clone

clone: function(obj)

Returns

{OpenLayers.Geometry.Point} An exact clone of this OpenLayers.Geometry.Point

+ +

distanceTo

distanceTo: function(geometry,
options)

Calculate the closest distance between two geometries (on the x-y plane).

Parameters

geometry{OpenLayers.Geometry} The target geometry.
options{Object} Optional properties for configuring the distance calculation.

Valid options

details{Boolean} Return details from the distance calculation.  Default is false.
edge{Boolean} Calculate the distance from this geometry to the nearest edge of the target geometry.  Default is true.  If true, calling distanceTo from a geometry that is wholly contained within the target will result in a non-zero distance.  If false, whenever geometries intersect, calling distanceTo will return 0.  If false, details cannot be returned.

Returns

{Number | Object} The distance between this geometry and the target.  If details is true, the return will be an object with distance, x0, y0, x1, and x2 properties.  The x0 and y0 properties represent the coordinates of the closest point on this geometry.  The x1 and y1 properties represent the coordinates of the closest point on the target geometry.

+ +

equals

equals: function(geom)

Determine whether another geometry is equivalent to this one.  Geometries are considered equivalent if all components have the same coordinates.

Parameters

geom{OpenLayers.Geometry.Point} The geometry to test.

Returns

{Boolean} The supplied geometry is equivalent to this geometry.

+ +

move

move: function(x,
y)

Moves a geometry by the given displacement along positive x and y axes.  This modifies the position of the geometry and clears the cached bounds.

Parameters

x{Float} Distance to move geometry in positive x direction.
y{Float} Distance to move geometry in positive y direction.
+ +

rotate

rotate: function(angle,
origin)

Rotate a point around another.

Parameters

angle{Float} Rotation angle in degrees (measured counterclockwise from the positive x-axis)
origin{OpenLayers.Geometry.Point} Center point for the rotation
+ +

getCentroid

getCentroid: function()

Returns

{OpenLayers.Geometry.Point} The centroid of the collection

+ +

resize

resize: function(scale,
origin,
ratio)

Resize a point relative to some origin.  For points, this has the effect of scaling a vector (from the origin to the point).  This method is more useful on geometry collection subclasses.

Parameters

scale{Float} Ratio of the new distance from the origin to the old distance from the origin.  A scale of 2 doubles the distance between the point and origin.
origin{OpenLayers.Geometry.Point} Point of origin for resizing
ratio{Float} Optional x:y ratio for resizing.  Default ratio is 1.

Returns

{OpenLayers.Geometry}The current geometry.
+ +

intersects

intersects: function(geometry)

Determine if the input geometry intersects this one.

Parameters

geometry{OpenLayers.Geometry} Any type of geometry.

Returns

{Boolean} The input geometry intersects this one.

+ +

transform

transform: function(source,
dest)

Translate the x,y properties of the point from source to dest.

Parameters

source{OpenLayers.Projection}
dest{OpenLayers.Projection}

Returns

{OpenLayers.Geometry}

+ +

getVertices

getVertices: function(nodes)

Return a list of all points in this geometry.

Parameters

nodes{Boolean} For lines, only return vertices that are endpoints.  If false, for lines, only vertices that are not endpoints will be returned.  If not provided, all vertices will be returned.

Returns

{Array} A list of all vertices in the geometry.

+ +
+ + + + + + + + + + +
clone: function(obj)
{OpenLayers.Geometry.Point} An exact clone of this OpenLayers.Geometry.Point
Construct a point geometry.
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
equals: function(geom)
Determine whether another geometry is equivalent to this one.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
rotate: function(angle,
origin)
Rotate a point around another.
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
resize: function(scale,
origin,
ratio)
Resize a point relative to some origin.
intersects: function(geometry)
Determine if the input geometry intersects this one.
transform: function(source,
dest)
Translate the x,y properties of the point from source to dest.
getVertices: function(nodes)
Return a list of all points in this geometry.
A Geometry is a description of a geographic object.
Class for coordinate transforms between coordinate systems.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Geometry/Polygon-js.html b/openlayers/doc/apidocs/files/OpenLayers/Geometry/Polygon-js.html new file mode 100644 index 0000000..d44a922 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Geometry/Polygon-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Geometry.Polygon - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.Polygon

Polygon is a collection of Geometry.LinearRings.

Inherits from

Summary
OpenLayers.Geometry.PolygonPolygon is a collection of Geometry.LinearRings.
Constructor
OpenLayers.Geometry.PolygonConstructor for a Polygon geometry.
Functions
getAreaCalculated by subtracting the areas of the internal holes from the area of the outer hole.
getGeodesicAreaCalculate the approximate area of the polygon were it projected onto the earth.
intersectsDetermine if the input geometry intersects this one.
distanceToCalculate the closest distance between two geometries (on the x-y plane).
createRegularPolygonCreate a regular polygon around a radius.
+ +

Constructor

+ +

OpenLayers.Geometry.Polygon

Constructor for a Polygon geometry.  The first ring (this.component[0])is the outer bounds of the polygon and all subsequent rings (this.component[1-n]) are internal holes.

Parameters

components{Array(OpenLayers.Geometry.LinearRing)}
+ +

Functions

+ +

getArea

getArea: function()

Calculated by subtracting the areas of the internal holes from the area of the outer hole.

Returns

{float} The area of the geometry

+ +

getGeodesicArea

getGeodesicArea: function(projection)

Calculate the approximate area of the polygon were it projected onto the earth.

Parameters

projection{OpenLayers.Projection} The spatial reference system for the geometry coordinates.  If not provided, Geographic/WGS84 is assumed.

Reference

Robert.  G. Chamberlain and William H.  Duquette, “Some Algorithms for Polygons on a Sphere”, JPL Publication 07-03, Jet Propulsion Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409

Returns

{float} The approximate geodesic area of the polygon in square meters.

+ +

intersects

intersects: function(geometry)

Determine if the input geometry intersects this one.

Parameters

geometry{OpenLayers.Geometry} Any type of geometry.

Returns

{Boolean} The input geometry intersects this one.

+ +

distanceTo

distanceTo: function(geometry,
options)

Calculate the closest distance between two geometries (on the x-y plane).

Parameters

geometry{OpenLayers.Geometry} The target geometry.
options{Object} Optional properties for configuring the distance calculation.

Valid options

details{Boolean} Return details from the distance calculation.  Default is false.
edge{Boolean} Calculate the distance from this geometry to the nearest edge of the target geometry.  Default is true.  If true, calling distanceTo from a geometry that is wholly contained within the target will result in a non-zero distance.  If false, whenever geometries intersect, calling distanceTo will return 0.  If false, details cannot be returned.

Returns

{Number | Object} The distance between this geometry and the target.  If details is true, the return will be an object with distance, x0, y0, x1, and y1 properties.  The x0 and y0 properties represent the coordinates of the closest point on this geometry.  The x1 and y1 properties represent the coordinates of the closest point on the target geometry.

+ +

createRegularPolygon

OpenLayers.Geometry.Polygon.createRegularPolygon = function(origin,
radius,
sides,
rotation)

Create a regular polygon around a radius.  Useful for creating circles and the like.

Parameters

origin{OpenLayers.Geometry.Point} center of polygon.
radius{Float} distance to vertex, in map units.
sides{Integer} Number of sides.  20 approximates a circle.
rotation{Float} original angle of rotation, in degrees.
+ +
+ + + + + + + + + + +
getArea: function()
Calculated by subtracting the areas of the internal holes from the area of the outer hole.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
intersects: function(geometry)
Determine if the input geometry intersects this one.
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
OpenLayers.Geometry.Polygon.createRegularPolygon = function(origin,
radius,
sides,
rotation)
Create a regular polygon around a radius.
A Collection is exactly what it sounds like: A collection of different Geometries.
A Geometry is a description of a geographic object.
A Linear Ring is a special LineString which is closed.
Class for coordinate transforms between coordinate systems.
Point geometry class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Geometry/Rectangle-js.html b/openlayers/doc/apidocs/files/OpenLayers/Geometry/Rectangle-js.html new file mode 100644 index 0000000..b2a51e8 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Geometry/Rectangle-js.html @@ -0,0 +1,49 @@ + + +OpenLayers.Geometry.Rectangle - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.Rectangle

This class is not supported, and probably isn’t what you’re looking for.  Instead, most users probably want something like:

var poly = new OpenLayers.Bounds(0,0,10,10).toGeometry();

This will create a rectangular Polygon geometry.

Inherits

Summary
OpenLayers.Geometry.RectangleThis class is not supported, and probably isn’t what you’re looking for.
Constructor
OpenLayers.Geometry.Rectangle
Functions
getLength{Float} The length of the geometry
getArea{Float} The area of the geometry
+ +

Constructor

+ +

OpenLayers.Geometry.Rectangle

Parameters

points{Array(OpenLayers.Geometry.Point}
+ +

Functions

+ +

getLength

getLength: function()

Returns

{Float} The length of the geometry

+ +

getArea

getArea: function()

Returns

{Float} The area of the geometry

+ +
+ + + + + + + + + + +
getLength: function()
{Float} The length of the geometry
getArea: function()
{Float} The area of the geometry
A Geometry is a description of a geographic object.
Point geometry class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Handler-js.html b/openlayers/doc/apidocs/files/OpenLayers/Handler-js.html new file mode 100644 index 0000000..509191c --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Handler-js.html @@ -0,0 +1,70 @@ + + +OpenLayers.Handler - OpenLayers + + + + + + + + + +

OpenLayers.Handler

Base class to construct a higher-level handler for event sequences.  All handlers have activate and deactivate methods.  In addition, they have methods named like browser events.  When a handler is activated, any additional methods named like a browser event is registered as a listener for the corresponding event.  When a handler is deactivated, those same methods are unregistered as event listeners.

Handlers also typically have a callbacks object with keys named like the abstracted events or event sequences that they are in charge of handling.  The controls that wrap handlers define the methods that correspond to these abstract events - so instead of listening for individual browser events, they only listen for the abstract events defined by the handler.

Handlers are created by controls, which ultimately have the responsibility of making changes to the the state of the application.  Handlers themselves may make temporary changes, but in general are expected to return the application in the same state that they found it.

Summary
OpenLayers.HandlerBase class to construct a higher-level handler for event sequences.
Properties
control{OpenLayers.Control}.
keyMask{Integer} Use bitwise operators and one or more of the OpenLayers.Handler constants to construct a keyMask.
Constructor
OpenLayers.HandlerConstruct a handler.
Functions
activateTurn on the handler.
deactivateTurn off the handler.
Constants
OpenLayers.Handler.MOD_NONEIf set as the keyMask, <checkModifiers> returns false if any key is down.
OpenLayers.Handler.MOD_SHIFTIf set as the keyMask, <checkModifiers> returns false if Shift is down.
OpenLayers.Handler.MOD_CTRLIf set as the keyMask, <checkModifiers> returns false if Ctrl is down.
OpenLayers.Handler.MOD_ALTIf set as the keyMask, <checkModifiers> returns false if Alt is down.
+ +

Properties

+ +

control

{OpenLayers.Control}.  The control that initialized this handler.  The control is assumed to have a valid map property - that map is used in the handler’s own setMap method.

+ +

keyMask

{Integer} Use bitwise operators and one or more of the OpenLayers.Handler constants to construct a keyMask.  The keyMask is used by <checkModifiers>.  If the keyMask matches the combination of keys down on an event, checkModifiers returns true.

Example

// handler only responds if the Shift key is down
+handler.keyMask = OpenLayers.Handler.MOD_SHIFT;
+
+// handler only responds if Ctrl-Shift is down
+handler.keyMask = OpenLayers.Handler.MOD_SHIFT |
+                  OpenLayers.Handler.MOD_CTRL;
+ +

Constructor

+ +

OpenLayers.Handler

Construct a handler.

Parameters

control{OpenLayers.Control} The control that initialized this handler.  The control is assumed to have a valid map property; that map is used in the handler’s own setMap method.
callbacks{Object} An object whose properties correspond to abstracted events or sequences of browser events.  The values for these properties are functions defined by the control that get called by the handler.
options{Object} An optional object whose properties will be set on the handler.
+ +

Functions

+ +

activate

activate: function()

Turn on the handler.  Returns false if the handler was already active.

Returns

{Boolean} The handler was activated.

+ +

deactivate

deactivate: function()

Turn off the handler.  Returns false if the handler was already inactive.

Returns

{Boolean} The handler was deactivated.

+ +

Constants

+ +

OpenLayers.Handler.MOD_NONE

If set as the keyMask, <checkModifiers> returns false if any key is down.

+ +

OpenLayers.Handler.MOD_SHIFT

If set as the keyMask, <checkModifiers> returns false if Shift is down.

+ +

OpenLayers.Handler.MOD_CTRL

If set as the keyMask, <checkModifiers> returns false if Ctrl is down.

+ +

OpenLayers.Handler.MOD_ALT

If set as the keyMask, <checkModifiers> returns false if Alt is down.

+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
activate: function()
Turn on the handler.
deactivate: function()
Turn off the handler.
{Integer} Use bitwise operators and one or more of the OpenLayers.Handler constants to construct a keyMask.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Handler/Box-js.html b/openlayers/doc/apidocs/files/OpenLayers/Handler/Box-js.html new file mode 100644 index 0000000..72b640d --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Handler/Box-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Handler.Box - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Box

Handler for dragging a rectangle across the map.  Box is displayed on mouse down, moves on mouse move, and is finished on mouse up.

Inherits from

Summary
OpenLayers.Handler.BoxHandler for dragging a rectangle across the map.
Properties
boxDivClassName{String} The CSS class to use for drawing the box.
Constructor
OpenLayers.Handler.Box
+ +

Properties

+ +

boxDivClassName

{String} The CSS class to use for drawing the box.  Default is olHandlerBoxZoomBox

+ +

Constructor

+ +

OpenLayers.Handler.Box

Parameters

control{OpenLayers.Control}
callbacks{Object} An object containing a single function to be called when the drag operation is finished.  The callback should expect to recieve a single argument, the point geometry.
options{Object}
+ +
+ + + + + + + + + + +
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Handler/Click-js.html b/openlayers/doc/apidocs/files/OpenLayers/Handler/Click-js.html new file mode 100644 index 0000000..e2b3791 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Handler/Click-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Handler.Click - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Click

A handler for mouse clicks.  The intention of this handler is to give controls more flexibility with handling clicks.  Browsers trigger click events twice for a double-click.  In addition, the mousedown, mousemove, mouseup sequence fires a click event.  With this handler, controls can decide whether to ignore clicks associated with a double click.  By setting a pixelTolerance, controls can also ignore clicks that include a drag.  Create a new instance with the OpenLayers.Handler.Click constructor.

Inherits from

Summary
OpenLayers.Handler.ClickA handler for mouse clicks.
Properties
delay{Number} Number of milliseconds between clicks before the event is considered a double-click.
single{Boolean} Handle single clicks.
double{Boolean} Handle double-clicks.
pixelTolerance{Number} Maximum number of pixels between mouseup and mousedown for an event to be considered a click.
stopSingle{Boolean} Stop other listeners from being notified of clicks.
stopDouble{Boolean} Stop other listeners from being notified of double-clicks.
Constructor
OpenLayers.Handler.ClickCreate a new click handler.
Functions
deactivateDeactivate the handler.
+ +

Properties

+ +

delay

{Number} Number of milliseconds between clicks before the event is considered a double-click.

+ +

single

{Boolean} Handle single clicks.  Default is true.  If false, clicks will not be reported.  If true, single-clicks will be reported.

+ +

double

{Boolean} Handle double-clicks.  Default is false.

+ +

pixelTolerance

{Number} Maximum number of pixels between mouseup and mousedown for an event to be considered a click.  Default is 0.  If set to an integer value, clicks with a drag greater than the value will be ignored.  This property can only be set when the handler is constructed.

+ +

stopSingle

{Boolean} Stop other listeners from being notified of clicks.  Default is false.  If true, any click listeners registered before this one will not be notified of any click event (associated with double or single clicks).

+ +

stopDouble

{Boolean} Stop other listeners from being notified of double-clicks.  Default is false.  If true, any click listeners registered before this one will not be notified of any double-click events.

The one caveat with stopDouble is that given a map with two click handlers, one with stopDouble true and the other with stopSingle true, the stopSingle handler should be activated last to get uniform cross-browser performance.  Since IE triggers one click with a dblclick and FF triggers two, if a stopSingle handler is activated first, all it gets in IE is a single click when the second handler stops propagation on the dblclick.

+ +

Constructor

+ +

OpenLayers.Handler.Click

Create a new click handler.

Parameters

control{OpenLayers.Control} The control that is making use of this handler.  If a handler is being used without a control, the handler’s setMap method must be overridden to deal properly with the map.
callbacks{Object} An object with keys corresponding to callbacks that will be called by the handler.  The callbacks should expect to recieve a single argument, the click event.  Callbacks for ‘click’ and ‘dblclick’ are supported.
options{Object} Optional object whose properties will be set on the handler.
+ +

Functions

+ +

deactivate

deactivate: function()

Deactivate the handler.

Returns

{Boolean} The handler was successfully deactivated.

+ +
+ + + + + + + + + + +
deactivate: function()
Deactivate the handler.
{Number} Maximum number of pixels between mouseup and mousedown for an event to be considered a click.
Create a new click handler.
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Handler/Drag-js.html b/openlayers/doc/apidocs/files/OpenLayers/Handler/Drag-js.html new file mode 100644 index 0000000..4c7508e --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Handler/Drag-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Handler.Drag - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Drag

The drag handler is used to deal with sequences of browser events related to dragging.  The handler is used by controls that want to know when a drag sequence begins, when a drag is happening, and when it has finished.

Controls that use the drag handler typically construct it with callbacks for ‘down’, ‘move’, and ‘done’.  Callbacks for these keys are called when the drag begins, with each move, and when the drag is done.  In addition, controls can have callbacks keyed to ‘up’ and ‘out’ if they care to differentiate between the types of events that correspond with the end of a drag sequence.  If no drag actually occurs (no mouse move) the ‘down’ and ‘up’ callbacks will be called, but not the ‘done’ callback.

Create a new drag handler with the OpenLayers.Handler.Drag constructor.

Inherits from

Summary
OpenLayers.Handler.DragThe drag handler is used to deal with sequences of browser events related to dragging.
Constructor
OpenLayers.Handler.DragReturns OpenLayers.Handler.Drag
+ +

Constructor

+ +

OpenLayers.Handler.Drag

Returns OpenLayers.Handler.Drag

Parameters

control{OpenLayers.Control} The control that is making use of this handler.  If a handler is being used without a control, the handlers setMap method must be overridden to deal properly with the map.
callbacks{Object} An object containing a single function to be called when the drag operation is finished.  The callback should expect to recieve a single argument, the pixel location of the event.  Callbacks for ‘move’ and ‘done’ are supported.  You can also speficy callbacks for ‘down’, ‘up’, and ‘out’ to respond to those events.
options{Object}
+ +
+ + + + + + + + + + +
Returns OpenLayers.Handler.Drag
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Handler/Feature-js.html b/openlayers/doc/apidocs/files/OpenLayers/Handler/Feature-js.html new file mode 100644 index 0000000..c394d45 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Handler/Feature-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Handler.Feature - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Feature

Handler to respond to mouse events related to a drawn feature.  Callbacks with the following keys will be notified of the following events associated with features: click, clickout, over, out, and dblclick.

This handler stops event propagation for mousedown and mouseup if those browser events target features that can be selected.

Summary
OpenLayers.Handler.FeatureHandler to respond to mouse events related to a drawn feature.
Constructor
OpenLayers.Handler.Feature
+ +

Constructor

+ +

OpenLayers.Handler.Feature

Parameters

control{OpenLayers.Control}
layer{OpenLayers.Layer.Vector}
callbacks{Object} An object with a ‘over’ property whos value is a function to be called when the mouse is over a feature.  The callback should expect to recieve a single argument, the feature.
options{Object}
+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Handler/Hover-js.html b/openlayers/doc/apidocs/files/OpenLayers/Handler/Hover-js.html new file mode 100644 index 0000000..4505d06 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Handler/Hover-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Handler.Hover - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Hover

The hover handler is to be used to emulate mouseovers on objects on the map that aren’t DOM elements.  For example one can use this handler to send WMS/GetFeatureInfo requests as the user moves the mouve over the map.

Inherits from

Summary
OpenLayers.Handler.HoverThe hover handler is to be used to emulate mouseovers on objects on the map that aren’t DOM elements.
Properties
delay
pixelTolerance
stopMove
Constructor
OpenLayers.Handler.HoverConstruct a hover handler.
Functions
deactivateDeactivate the handler.
+ +

Properties

+ +

delay

{Integer}Number of milliseconds between mousemoves before the event is considered a hover.  Default is 500.
+ +

pixelTolerance

{Integer}Maximum number of pixels between mousemoves for an event to be considered a hover.  Default is null.
+ +

stopMove

{Boolean}Stop other listeners from being notified on mousemoves.  Default is false.
+ +

Constructor

+ +

OpenLayers.Handler.Hover

Construct a hover handler.

Parameters

control{OpenLayers.Control} The control that initialized this handler.  The control is assumed to have a valid map property; that map is used in the handler’s own setMap method.
callbacks{Object} An object with keys corresponding to callbacks that will be called by the handler.  The callbacks should expect to receive a single argument, the event.  Callbacks for ‘move’, the mouse is moving, and ‘pause’, the mouse is pausing, are supported.
options{Object} An optional object whose properties will be set on the handler.
+ +

Functions

+ +

deactivate

deactivate: function()

Deactivate the handler.

Returns

{Boolean} The handler was successfully deactivated.

+ +
+ + + + + + + + + + +
deactivate: function()
Deactivate the handler.
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Handler/Keyboard-js.html b/openlayers/doc/apidocs/files/OpenLayers/Handler/Keyboard-js.html new file mode 100644 index 0000000..d788601 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Handler/Keyboard-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.handler.Keyboard - OpenLayers + + + + + + + + + +

OpenLayers.handler.Keyboard

A handler for keyboard events.  Create a new instance with the OpenLayers.Handler.Keyboard constructor.

Inherits from

Summary
OpenLayers.handler.KeyboardA handler for keyboard events.
Constants
KEY_EVENTSkeydown, keypress, keyup
Constructor
OpenLayers.Handler.KeyboardReturns a new keyboard handler.
+ +

Constants

+ +

KEY_EVENTS

keydown, keypress, keyup

+ +

Constructor

+ +

OpenLayers.Handler.Keyboard

Returns a new keyboard handler.

Parameters

control{OpenLayers.Control} The control that is making use of this handler.  If a handler is being used without a control, the handlers setMap method must be overridden to deal properly with the map.
callbacks{Object} An object containing a single function to be called when the drag operation is finished.  The callback should expect to recieve a single argument, the pixel location of the event.  Callbacks for ‘keydown’, ‘keypress’, and ‘keyup’ are supported.
options{Object} Optional object whose properties will be set on the handler.
+ +
+ + + + + + + + + + +
Returns a new keyboard handler.
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Handler/MouseWheel-js.html b/openlayers/doc/apidocs/files/OpenLayers/Handler/MouseWheel-js.html new file mode 100644 index 0000000..0f05d3f --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Handler/MouseWheel-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Handler.MouseWheel - OpenLayers + + + + + + + + + +

OpenLayers.Handler.MouseWheel

Handler for wheel up/down events.

Inherits from

+ +

Constructor

+ +

OpenLayers.Handler.MouseWheel

Parameters

control{OpenLayers.Control}
callbacks{Object} An object containing a single function to be called when the drag operation is finished.  The callback should expect to recieve a single argument, the point geometry.
options{Object}
+ +
+ + + + + + + + + + +
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Handler/Path-js.html b/openlayers/doc/apidocs/files/OpenLayers/Handler/Path-js.html new file mode 100644 index 0000000..d066228 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Handler/Path-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Handler.Path - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Path

Handler to draw a path on the map.  Path is displayed on mouse down, moves on mouse move, and is finished on mouse up.

Inherits from

Summary
OpenLayers.Handler.PathHandler to draw a path on the map.
Constructor
OpenLayers.Handler.PathCreate a new path hander
+ +

Constructor

+ +

OpenLayers.Handler.Path

Create a new path hander

Parameters

control{OpenLayers.Control} The control that owns this handler
callbacks{Object} An object with a properties whose values are functions.  Various callbacks described below.
options{Object} An optional object with properties to be set on the handler

Named callbacks

createCalled when a sketch is first created.  Callback called with the creation point geometry and sketch feature.
modifyCalled with each move of a vertex with the vertex (point) geometry and the sketch feature.
pointCalled as each point is added.  Receives the new point geometry.
doneCalled when the point drawing is finished.  The callback will recieve a single argument, the linestring geometry.
cancelCalled when the handler is deactivated while drawing.  The cancel callback will receive a geometry.
+ +
+ + + + + + + + + + +
Handler to draw a point on the map.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Handler/Point-js.html b/openlayers/doc/apidocs/files/OpenLayers/Handler/Point-js.html new file mode 100644 index 0000000..c4fa7d2 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Handler/Point-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Handler.Point - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Point

Handler to draw a point on the map.  Point is displayed on mouse down, moves on mouse move, and is finished on mouse up.  The handler triggers callbacks for ‘done’, ‘cancel’, and ‘modify’.  The modify callback is called with each change in the sketch and will receive the latest point drawn.  Create a new instance with the OpenLayers.Handler.Point constructor.

Inherits from

Summary
OpenLayers.Handler.PointHandler to draw a point on the map.
Properties
persist{Boolean} Leave the feature rendered until destroyFeature is called.
Constructor
OpenLayers.Handler.PointCreate a new point handler.
Functions
activateturn on the handler
deactivateturn off the handler
cancelFinish the geometry and call the “cancel” callback.
+ +

Properties

+ +

persist

{Boolean} Leave the feature rendered until destroyFeature is called.  Default is false.  If set to true, the feature remains rendered until destroyFeature is called, typically by deactivating the handler or starting another drawing.

+ +

Constructor

+ +

OpenLayers.Handler.Point

Create a new point handler.

Parameters

control{OpenLayers.Control} The control that owns this handler
callbacks{Object} An object with a properties whose values are functions.  Various callbacks described below.
options{Object} An optional object with properties to be set on the handler

Named callbacks

createCalled when a sketch is first created.  Callback called with the creation point geometry and sketch feature.
modifyCalled with each move of a vertex with the vertex (point) geometry and the sketch feature.
doneCalled when the point drawing is finished.  The callback will recieve a single argument, the point geometry.
cancelCalled when the handler is deactivated while drawing.  The cancel callback will receive a geometry.
+ +

Functions

+ +

activate

activate: function()

turn on the handler

+ +

deactivate

deactivate: function()

turn off the handler

+ +

cancel

cancel: function()

Finish the geometry and call the “cancel” callback.

+ +
+ + + + + + + + + + +
activate: function()
turn on the handler
deactivate: function()
turn off the handler
cancel: function()
Finish the geometry and call the “cancel” callback.
Create a new point handler.
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Handler/Polygon-js.html b/openlayers/doc/apidocs/files/OpenLayers/Handler/Polygon-js.html new file mode 100644 index 0000000..54089e5 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Handler/Polygon-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Handler.Polygon - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Polygon

Handler to draw a polygon on the map.  Polygon is displayed on mouse down, moves on mouse move, and is finished on mouse up.

Inherits from

Summary
OpenLayers.Handler.PolygonHandler to draw a polygon on the map.
Constructor
OpenLayers.Handler.PolygonCreate a Polygon Handler.
+ +

Constructor

+ +

OpenLayers.Handler.Polygon

Create a Polygon Handler.

Parameters

control{OpenLayers.Control} The control that owns this handler
callbacks{Object} An object with a properties whose values are functions.  Various callbacks described below.
options{Object} An optional object with properties to be set on the handler

Named callbacks

createCalled when a sketch is first created.  Callback called with the creation point geometry and sketch feature.
modifyCalled with each move of a vertex with the vertex (point) geometry and the sketch feature.
pointCalled as each point is added.  Receives the new point geometry.
doneCalled when the point drawing is finished.  The callback will recieve a single argument, the polygon geometry.
cancelCalled when the handler is deactivated while drawing.  The cancel callback will receive a geometry.
+ +
+ + + + + + + + + + +
Handler to draw a path on the map.
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Handler/RegularPolygon-js.html b/openlayers/doc/apidocs/files/OpenLayers/Handler/RegularPolygon-js.html new file mode 100644 index 0000000..6f3f439 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Handler/RegularPolygon-js.html @@ -0,0 +1,69 @@ + + +OpenLayers.Handler.RegularPolygon - OpenLayers + + + + + + + + + +

OpenLayers.Handler.RegularPolygon

Handler to draw a regular polygon on the map.  Polygon is displayed on mouse down, moves or is modified on mouse move, and is finished on mouse up.  The handler triggers callbacks for ‘done’ and ‘cancel’.  Create a new instance with the OpenLayers.Handler.RegularPolygon constructor.

Inherits from

Summary
OpenLayers.Handler.RegularPolygonHandler to draw a regular polygon on the map.
Properties
sides{Integer} Number of sides for the regular polygon.
radius{Float} Optional radius in map units of the regular polygon.
snapAngle{Float} If set to a non-zero value, the handler will snap the polygon rotation to multiples of the snapAngle.
snapToggle{String} If set, snapToggle is checked on mouse events and will set the snap mode to the opposite of what it currently is.
persist{Boolean} Leave the feature rendered until clear is called.
irregular{Boolean} Draw an irregular polygon instead of a regular polygon.
Constructor
OpenLayers.Handler.RegularPolygonCreate a new regular polygon handler.
Functions
setOptions
activateTurn on the handler.
deactivateTurn off the handler.
cancelFinish the geometry and call the “cancel” callback.
clearClear any rendered features on the temporary layer.
+ +

Properties

+ +

sides

{Integer} Number of sides for the regular polygon.  Needs to be greater than 2.  Defaults to 4.

+ +

radius

{Float} Optional radius in map units of the regular polygon.  If this is set to some non-zero value, a polygon with a fixed radius will be drawn and dragged with mose movements.  If this property is not set, dragging changes the radius of the polygon.  Set to null by default.

+ +

snapAngle

{Float} If set to a non-zero value, the handler will snap the polygon rotation to multiples of the snapAngle.  Value is an angle measured in degrees counterclockwise from the positive x-axis.

+ +

snapToggle

{String} If set, snapToggle is checked on mouse events and will set the snap mode to the opposite of what it currently is.  To disallow toggling between snap and non-snap mode, set freehandToggle to null.  Acceptable toggle values are ‘shiftKey’, ‘ctrlKey’, and ‘altKey’.  Snap mode is only possible if this.snapAngle is set to a non-zero value.

+ +

persist

{Boolean} Leave the feature rendered until clear is called.  Default is false.  If set to true, the feature remains rendered until clear is called, typically by deactivating the handler or starting another drawing.

+ +

irregular

{Boolean} Draw an irregular polygon instead of a regular polygon.  Default is false.  If true, the initial mouse down will represent one corner of the polygon bounds and with each mouse movement, the polygon will be stretched so the opposite corner of its bounds follows the mouse position.  This property takes precedence over the radius property.  If set to true, the radius property will be ignored.

+ +

Constructor

+ +

OpenLayers.Handler.RegularPolygon

Create a new regular polygon handler.

Parameters

control{OpenLayers.Control} The control that owns this handler
callbacks{Object} An object with a properties whose values are functions.  Various callbacks described below.
options{Object} An object with properties to be set on the handler.  If the options.sides property is not specified, the number of sides will default to 4.

Named callbacks

createCalled when a sketch is first created.  Callback called with the creation point geometry and sketch feature.
doneCalled when the sketch drawing is finished.  The callback will recieve a single argument, the sketch geometry.
cancelCalled when the handler is deactivated while drawing.  The cancel callback will receive a geometry.
+ +

Functions

+ +

setOptions

setOptions: function (newOptions)

Parameters

newOptions{Object}
+ +

activate

activate: function()

Turn on the handler.

Return

{Boolean} The handler was successfully activated

+ +

deactivate

deactivate: function()

Turn off the handler.

Return

{Boolean} The handler was successfully deactivated

+ +

cancel

cancel: function()

Finish the geometry and call the “cancel” callback.

+ +

clear

clear: function()

Clear any rendered features on the temporary layer.  This is called when the handler is deactivated, canceled, or done (unless persist is true).

+ +
+ + + + + + + + + + +
setOptions: function (newOptions)
activate: function()
Turn on the handler.
deactivate: function()
Turn off the handler.
cancel: function()
Finish the geometry and call the “cancel” callback.
clear: function()
Clear any rendered features on the temporary layer.
Create a new regular polygon handler.
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Icon-js.html b/openlayers/doc/apidocs/files/OpenLayers/Icon-js.html new file mode 100644 index 0000000..d60ee43 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Icon-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Icon - OpenLayers + + + + + + + + + +

OpenLayers.Icon

The icon represents a graphical icon on the screen.  Typically used in conjunction with a OpenLayers.Marker to represent markers on a screen.

An icon has a url, size and position.  It also contains an offset which allows the center point to be represented correctly.  This can be provided either as a fixed offset or a function provided to calculate the desired offset.

Summary
OpenLayers.IconThe icon represents a graphical icon on the screen.
Constructor
OpenLayers.IconCreates an icon, which is an image tag in a div.
Functions
isDrawn{Boolean} Whether or not the icon is drawn.
+ +

Constructor

+ +

OpenLayers.Icon

Creates an icon, which is an image tag in a div.

url{String}
size{OpenLayers.Size}
offset{OpenLayers.Pixel}
calculateOffset{Function}
+ +

Functions

+ +

isDrawn

isDrawn: function()

Returns

{Boolean} Whether or not the icon is drawn.

+ +
+ + + + + + + + + + +
isDrawn: function()
{Boolean} Whether or not the icon is drawn.
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
Instances of this class represent a width/height pair
This class represents a screen coordinate, in x and y coordinates
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang-js.html new file mode 100644 index 0000000..682b16b --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Lang - OpenLayers + + + + + + + + + +

OpenLayers.Lang

Internationalization namespace.  Contains dictionaries in various languages and methods to set and get the current language.

Summary
OpenLayers.LangInternationalization namespace.
Properties
defaultCode{String} Default language to use when a specific language can’t be found.
Functions
getCodeGet the current language code.
setCodeSet the language code for string translation.
translateLooks up a key from a dictionary based on the current language string.
OpenLayers.i18nAlias for OpenLayers.Lang.translate.
+ +

Properties

+ +

defaultCode

{String} Default language to use when a specific language can’t be found.  Default is “en”.

+ +

Functions

+ +

getCode

getCode: function()

Get the current language code.

Returns

The current language code.

+ +

setCode

setCode: function(code)

Set the language code for string translation.  This code is used by the OpenLayers.Lang.translate method.

Parameters- code - {String} These codes follow the IETF recommendations at http://www.ietf.org/rfc/rfc3066.txt.  If no value is set, the browser’s language setting will be tested.  If no OpenLayers.Lang dictionary exists for the code, the <OpenLayers.String.defaultLang> will be used.

+ +

translate

translate: function(key,
context)

Looks up a key from a dictionary based on the current language string.  The value of getCode will be used to determine the appropriate dictionary.  Dictionaries are stored in OpenLayers.Lang.

Parameters

key{String} The key for an i18n string value in the dictionary.
context{Object} Optional context to be used with OpenLayers.String.format.

Returns

{String} A internationalized string.

+ +

OpenLayers.i18n

Alias for OpenLayers.Lang.translate.  Looks up a key from a dictionary based on the current language string.  The value of OpenLayers.Lang.getCode will be used to determine the appropriate dictionary.  Dictionaries are stored in OpenLayers.Lang.

Parameters

key{String} The key for an i18n string value in the dictionary.
context{Object} Optional context to be used with OpenLayers.String.format.

Returns

{String} A internationalized string.

+ +
+ + + + + + + + + + +
getCode: function()
Get the current language code.
setCode: function(code)
Set the language code for string translation.
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
Internationalization namespace.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/ca-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/ca-js.html new file mode 100644 index 0000000..d2af063 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/ca-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“ca”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“ca”]

Dictionary for Catalan, UTF8 encoding.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/cs-CZ-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/cs-CZ-js.html new file mode 100644 index 0000000..1c76706 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/cs-CZ-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“cs-CZ”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“cs-CZ”]

Dictionary for Czech.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/da-DK-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/da-DK-js.html new file mode 100644 index 0000000..b860f71 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/da-DK-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“da-DK”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“da-DK”]

Dictionary for Danish.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/de-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/de-js.html new file mode 100644 index 0000000..16c0b57 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/de-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“de”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“de”]

Dictionary for German.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/en-CA-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/en-CA-js.html new file mode 100644 index 0000000..7e0ab61 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/en-CA-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“en-CA”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“en-CA”]

Dictionary for English-CA.  This dictionary inherits from the standard English dictionary.  Override only those entries with language specific to the CA region.

Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/en-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/en-js.html new file mode 100644 index 0000000..8c65c27 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/en-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“en”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“en”]

Dictionary for English.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/es-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/es-js.html new file mode 100644 index 0000000..8c6d7af --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/es-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“es”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“es”]

Dictionary for Spanish, UTF8 encoding.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/fr-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/fr-js.html new file mode 100644 index 0000000..3751ab8 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/fr-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“fr”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“fr”]

Dictionary for French.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/it-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/it-js.html new file mode 100644 index 0000000..405d239 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/it-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“it”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“it”]

Dictionary for Italian.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/nb-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/nb-js.html new file mode 100644 index 0000000..0ef2dfa --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/nb-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“nb”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“nb”]

Dictionary for norwegian bokmål (Norway).  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/nl-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/nl-js.html new file mode 100644 index 0000000..642bdc3 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/nl-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“nl”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“nl”]

Dictionary for Dutch.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/pt-BR-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/pt-BR-js.html new file mode 100644 index 0000000..f87e835 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/pt-BR-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“pt-BR”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“pt-BR”]

Dictionary for Brazilian Portuguese.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/sv-SE-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/sv-SE-js.html new file mode 100644 index 0000000..eab2ef4 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/sv-SE-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“sv-SE”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“sv-SE”]

Dictionary for swedish (Sweden).  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/zh-CN-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/zh-CN-js.html new file mode 100644 index 0000000..816f50b --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/zh-CN-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“zh-CN”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“zh-CN”]

Dictionary for Simplified Chinese.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Lang/zh-TW-js.html b/openlayers/doc/apidocs/files/OpenLayers/Lang/zh-TW-js.html new file mode 100644 index 0000000..263a851 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Lang/zh-TW-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“zh-TW”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“zh-TW”]

Dictionary for Traditional Chinese.  (Used Mainly in Taiwan) Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer-js.html new file mode 100644 index 0000000..1bab042 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer-js.html @@ -0,0 +1,145 @@ + + +OpenLayers.Layer - OpenLayers + + + + + + + + + +

OpenLayers.Layer

Summary
OpenLayers.Layer
Properties
id{String}
name{String}
div{DOMElement}
alwaysInRange{Boolean} If a layer’s display should not be scale-based, this should be set to true.
Constants
EVENT_TYPES{Array(String)} Supported application event types.
Properties
events{OpenLayers.Events}
map{OpenLayers.Map} This variable is set when the layer is added to the map, via the accessor function setMap().
isBaseLayer{Boolean} Whether or not the layer is a base layer.
displayInLayerSwitcher{Boolean} Display the layer’s name in the layer switcher.
visibility{Boolean} The layer should be displayed in the map.
attribution{String} Attribution string, displayed when an OpenLayers.Control.Attribution has been added to the map.
eventListeners{Object} If set as an option at construction, the eventListeners object will be registered with <OpenLayers.Events.on>.
gutter{Integer} Determines the width (in pixels) of the gutter around image tiles to ignore.
projection{OpenLayers.Projection} or {String} Set in the layer options to override the default projection string this layer - also set maxExtent, maxResolution, and units if appropriate.
units{String} The layer map units.
scales{Array} An array of map scales in descending order.
resolutions{Array} A list of map resolutions (map units per pixel) in descending order.
maxExtent{OpenLayers.Bounds} The center of these bounds will not stray outside of the viewport extent during panning.
minExtent{OpenLayers.Bounds}
maxResolution{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
minResolution{Float}
numZoomLevels{Integer}
minScale{Float}
maxScale{Float}
displayOutsideMaxExtent{Boolean} Request map tiles that are completely outside of the max extent for this layer.
wrapDateLine{Boolean} #487 for more info.
transitionEffect{String} The transition effect to use when the map is panned or zoomed.
Constructor
OpenLayers.Layer
Functions
setNameSets the new layer name for this layer.
addOptions
onMapResizeThis function can be implemented by subclasses
redrawRedraws the layer.
removeMapJust as setMap() allows each layer the possibility to take a personalized action on being added to the map, removeMap() allows each layer to take a personalized action on being removed from it.
getImageSize{OpenLayers.Size} The size that the image should be, taking into account gutters.
setTileSizeSet the tile size based on the map size.
getVisibility{Boolean} The layer should be displayed (if in range).
setVisibilitySet the visibility flag for the layer and hide/show & redraw accordingly.
displayHide or show the Layer
calculateInRange{Boolean} The layer is displayable at the current map’s current resolution.
setIsBaseLayer
getResolution{Float} The currently selected resolution of the map, taken from the resolutions array, indexed by current zoom level.
getExtent{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getZoomForExtent
getResolutionForZoom
getZoomForResolution
getLonLatFromViewPortPx
getViewPortPxFromLonLatReturns a pixel location given a map location.
setOpacitySets the opacity for the entire layer (all images)
+ +

Properties

+ +

id

{String}

+ +

name

{String}

+ +

div

{DOMElement}

+ +

alwaysInRange

{Boolean} If a layer’s display should not be scale-based, this should be set to true.  This will cause the layer, as an overlay, to always be ‘active’, by always returning true from the calculateInRange() function.

If not explicitly specified for a layer, its value will be determined on startup in initResolutions() based on whether or not any scale-specific properties have been set as options on the layer.  If no scale-specific options have been set on the layer, we assume that it should always be in range.

See #987 for more info.

+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

layer.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

All event objects have at least the following properties

object{Object} A reference to layer.events.object.
element{DOMElement} A reference to layer.events.element.

Supported map event types

loadstartTriggered when layer loading starts.
loadendTriggered when layer loading ends.
loadcancelTriggered when layer loading is canceled.
visibilitychangedTriggered when layer visibility is changed.
moveTriggered when layer moves (triggered with every mousemove during a drag).
moveendTriggered when layer is done moving, object passed as argument has a zoomChanged boolean property which tells that the zoom has changed.
+ +

Properties

+ + + +

map

{OpenLayers.Map} This variable is set when the layer is added to the map, via the accessor function setMap().

+ +

isBaseLayer

{Boolean} Whether or not the layer is a base layer.  This should be set individually by all subclasses.  Default is false

+ +

displayInLayerSwitcher

{Boolean} Display the layer’s name in the layer switcher.  Default is true.

+ +

visibility

{Boolean} The layer should be displayed in the map.  Default is true.

+ +

attribution

{String} Attribution string, displayed when an OpenLayers.Control.Attribution has been added to the map.

+ +

eventListeners

{Object} If set as an option at construction, the eventListeners object will be registered with <OpenLayers.Events.on>.  Object structure must be a listeners object as shown in the example for the events.on method.

+ +

gutter

{Integer} Determines the width (in pixels) of the gutter around image tiles to ignore.  By setting this property to a non-zero value, images will be requested that are wider and taller than the tile size by a value of 2 x gutter.  This allows artifacts of rendering at tile edges to be ignored.  Set a gutter value that is equal to half the size of the widest symbol that needs to be displayed.  Defaults to zero.  Non-tiled layers always have zero gutter.

+ +

projection

{OpenLayers.Projection} or {String} Set in the layer options to override the default projection string this layer - also set maxExtent, maxResolution, and units if appropriate.  Can be either a string or an OpenLayers.Projection object when created -- will be converted to an object when setMap is called if a string is passed.

+ +

units

{String} The layer map units.  Defaults to ‘degrees’.  Possible values are ‘degrees’ (or ‘dd’), ‘m’, ‘ft’, ‘km’, ‘mi’, ‘inches’.

+ +

scales

{Array} An array of map scales in descending order.  The values in the array correspond to the map scale denominator.  Note that these values only make sense if the display (monitor) resolution of the client is correctly guessed by whomever is configuring the application.  In addition, the units property must also be set.  Use resolutions instead wherever possible.

+ +

resolutions

{Array} A list of map resolutions (map units per pixel) in descending order.  If this is not set in the layer constructor, it will be set based on other resolution related properties (maxExtent, maxResolution, maxScale, etc.).

+ +

maxExtent

{OpenLayers.Bounds} The center of these bounds will not stray outside of the viewport extent during panning.  In addition, if displayOutsideMaxExtent is set to false, data will not be requested that falls completely outside of these bounds.

+ + + +

maxResolution

{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.  Specify a different value in the layer options if you are not using a geographic projection and displaying the whole world.

+ +

minResolution

{Float}

+ +

numZoomLevels

{Integer}

+ +

minScale

{Float}

+ +

maxScale

{Float}

+ +

displayOutsideMaxExtent

{Boolean} Request map tiles that are completely outside of the max extent for this layer.  Defaults to false.

+ +

wrapDateLine

{Boolean} #487 for more info.

+ +

transitionEffect

{String} The transition effect to use when the map is panned or zoomed.

There are currently two supported values

  • null No transition effect (the default).
  • resize Existing tiles are resized on zoom to provide a visual effect of the zoom having taken place immediately.  As the new tiles become available, they are drawn over top of the resized tiles.
+ +

Constructor

+ +

OpenLayers.Layer

Parameters

name{String} The layer name
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

setName

setName: function(newName)

Sets the new layer name for this layer.  Can trigger a changelayer event on the map.

Parameters

newName{String} The new name.
+ +

addOptions

addOptions: function (newOptions)

Parameters

newOptions{Object}
+ +

onMapResize

onMapResize: function()

This function can be implemented by subclasses

+ +

redraw

redraw: function()

Redraws the layer.  Returns true if the layer was redrawn, false if not.

Returns

{Boolean} The layer was redrawn.

+ +

removeMap

removeMap: function(map)

Just as setMap() allows each layer the possibility to take a personalized action on being added to the map, removeMap() allows each layer to take a personalized action on being removed from it.  For now, this will be mostly unused, except for the EventPane layer, which needs this hook so that it can remove the special invisible pane.

Parameters

map{OpenLayers.Map}
+ +

getImageSize

getImageSize: function()

Returns

{OpenLayers.Size} The size that the image should be, taking into account gutters.

+ +

setTileSize

setTileSize: function(size)

Set the tile size based on the map size.  This also sets layer.imageSize and layer.imageOffset for use by Tile.Image.

Parameters

size{OpenLayers.Size}
+ +

getVisibility

getVisibility: function()

Returns

{Boolean} The layer should be displayed (if in range).

+ +

setVisibility

setVisibility: function(visibility)

Set the visibility flag for the layer and hide/show & redraw accordingly.  Fire event unless otherwise specified

Note that visibility is no longer simply whether or not the layer’s style.display is set to “block”.  Now we store a ‘visibility’ state property on the layer class, this allows us to remember whether or not we desire for a layer to be visible.  In the case where the map’s resolution is out of the layer’s range, this desire may be subverted.

Parameters

visible{Boolean} Whether or not to display the layer (if in range)
+ +

display

display: function(display)

Hide or show the Layer

Parameters

display{Boolean}
+ +

calculateInRange

calculateInRange: function()

Returns

{Boolean} The layer is displayable at the current map’s current resolution.  Note that if ‘alwaysInRange’ is true for the layer, this function will always return true.

+ +

setIsBaseLayer

setIsBaseLayer: function(isBaseLayer)

Parameters

isBaseLayer{Boolean}
+ +

getResolution

getResolution: function()

Returns

{Float} The currently selected resolution of the map, taken from the resolutions array, indexed by current zoom level.

+ +

getExtent

getExtent: function()

Returns

{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.

+ +

getZoomForExtent

getZoomForExtent: function(extent,
closest)

Parameters

bounds{OpenLayers.Bounds}
closest{Boolean} Find the zoom level that most closely fits the specified bounds.  Note that this may result in a zoom that does not exactly contain the entire extent.  Default is false.

Returns

{Integer} The index of the zoomLevel (entry in the resolutions array) for the passed-in extent.  We do this by calculating the ideal resolution for the given extent (based on the map size) and then calling getZoomForResolution(), passing along the ‘closest’ parameter.

+ +

getResolutionForZoom

getResolutionForZoom: function(zoom)

Parameter

zoom{Float}

Returns

{Float} A suitable resolution for the specified zoom.

+ +

getZoomForResolution

getZoomForResolution: function(resolution,
closest)

Parameters

resolution{Float}
closest{Boolean} Find the zoom level that corresponds to the absolute closest resolution, which may result in a zoom whose corresponding resolution is actually smaller than we would have desired (if this is being called from a getZoomForExtent() call, then this means that the returned zoom index might not actually contain the entire extent specified... but it’ll be close).  Default is false.

Returns

{Integer} The index of the zoomLevel (entry in the resolutions array) that corresponds to the best fit resolution given the passed in value and the ‘closest’ specification.

+ +

getLonLatFromViewPortPx

getLonLatFromViewPortPx: function (viewPortPx)

Parameters

viewPortPx{OpenLayers.Pixel}

Returns

{OpenLayers.LonLat} An OpenLayers.LonLat which is the passed-in view port OpenLayers.Pixel, translated into lon/lat by the layer.

+ +

getViewPortPxFromLonLat

getViewPortPxFromLonLat: function (lonlat)

Returns a pixel location given a map location.  This method will return fractional pixel values.

Parameters

lonlat{OpenLayers.LonLat}

Returns

{OpenLayers.Pixel} An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat,translated into view port pixels.

+ +

setOpacity

setOpacity: function(opacity)

Sets the opacity for the entire layer (all images)

Parameter

opacity{Float}
+ +
+ + + + + + + + + + +
Instances of OpenLayers.Map are interactive maps embedded in a web page.
The attribution control adds attribution from layers to the map display.
Class for coordinate transforms between coordinate systems.
Contains convenience functions for string manipulation.
Instances of this class represent bounding boxes.
setName: function(newName)
Sets the new layer name for this layer.
addOptions: function (newOptions)
onMapResize: function()
This function can be implemented by subclasses
redraw: function()
Redraws the layer.
removeMap: function(map)
Just as setMap() allows each layer the possibility to take a personalized action on being added to the map, removeMap() allows each layer to take a personalized action on being removed from it.
getImageSize: function()
{OpenLayers.Size} The size that the image should be, taking into account gutters.
Instances of this class represent a width/height pair
setTileSize: function(size)
Set the tile size based on the map size.
getVisibility: function()
{Boolean} The layer should be displayed (if in range).
setVisibility: function(visibility)
Set the visibility flag for the layer and hide/show & redraw accordingly.
display: function(display)
Hide or show the Layer
calculateInRange: function()
{Boolean} The layer is displayable at the current map’s current resolution.
setIsBaseLayer: function(isBaseLayer)
getResolution: function()
{Float} The currently selected resolution of the map, taken from the resolutions array, indexed by current zoom level.
getExtent: function()
{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getZoomForExtent: function(extent,
closest)
getResolutionForZoom: function(zoom)
getZoomForResolution: function(resolution,
closest)
getLonLatFromViewPortPx: function (viewPortPx)
getViewPortPxFromLonLat: function (lonlat)
Returns a pixel location given a map location.
setOpacity: function(opacity)
Sets the opacity for the entire layer (all images)
{Array} A list of map resolutions (map units per pixel) in descending order.
{Boolean} Request map tiles that are completely outside of the max extent for this layer.
This class represents a screen coordinate, in x and y coordinates
This class represents a longitude and latitude pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/ArcGIS93Rest-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/ArcGIS93Rest-js.html new file mode 100644 index 0000000..0c30e26 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/ArcGIS93Rest-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Layer.ArcGIS93Rest - OpenLayers + + + + + + + + + +

OpenLayers.Layer.ArcGIS93Rest

Instances of OpenLayers.Layer.ArcGIS93Rest are used to display data from ESRI ArcGIS Server 9.3 (and up?)  Mapping Services using the REST API.  Create a new ArcGIS93Rest layer with the OpenLayers.Layer.ArcGIS93Rest constructor.  More detail on the REST API is available at http://sampleserver1.arcgisonline.com/ArcGIS/SDK/REST/index.html ; specifically, the URL provided to this layer should be an export service URL: http://sampleserver1.arcgisonline.com/ArcGIS/SDK/REST/export.html

Inherits from

Summary
OpenLayers.Layer.ArcGIS93RestInstances of OpenLayers.Layer.ArcGIS93Rest are used to display data from ESRI ArcGIS Server 9.3 (and up?)
Constants
DEFAULT_PARAMS{Object} Hashtable of default parameter key/value pairs
Properties
isBaseLayer{Boolean} Default is true for ArcGIS93Rest layer
Constructor
OpenLayers.Layer.ArcGIS93RestCreate a new ArcGIS93Rest layer object.
Functions
mergeNewParamsCatch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
+ +

Constants

+ +

DEFAULT_PARAMS

{Object} Hashtable of default parameter key/value pairs

+ +

Properties

+ +

isBaseLayer

{Boolean} Default is true for ArcGIS93Rest layer

+ +

Constructor

+ +

OpenLayers.Layer.ArcGIS93Rest

Create a new ArcGIS93Rest layer object.

Example

var arcims = new OpenLayers.Layer.ArcGIS93Rest("MyName",
+                                   "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer",
+                                   {
+                                     layers: "0,1,2"
+                                   });

Parameters

name{String} A name for the layer
url{String} Base url for the ArcGIS server REST service
options{Object} An object with key/value pairs representing the options and option values.  Valid Options: format: {String} MIME type of desired image type. layers: {String} Comma-separated list of layers to display. srs: {String} Projection ID.
+ +

Functions

+ +

mergeNewParams

mergeNewParams:function(newParams)

Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.

Once params have been changed, the tiles will be reloaded with the new parameters.

Parameters

newParams{Object} Hashtable of new params to use
+ +
+ + + + + + + + + + +
mergeNewParams:function(newParams)
Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
Create a new ArcGIS93Rest layer object.
Base class for layers that use a lattice of tiles.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/ArcIMS-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/ArcIMS-js.html new file mode 100644 index 0000000..f707728 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/ArcIMS-js.html @@ -0,0 +1,77 @@ + + +OpenLayers.Layer.ArcIMS - OpenLayers + + + + + + + + + +

OpenLayers.Layer.ArcIMS

Instances of OpenLayers.Layer.ArcIMS are used to display data from ESRI ArcIMS Mapping Services.  Create a new ArcIMS layer with the OpenLayers.Layer.ArcIMS constructor.

Inherits from

Summary
OpenLayers.Layer.ArcIMSInstances of OpenLayers.Layer.ArcIMS are used to display data from ESRI ArcIMS Mapping Services.
Constants
DEFAULT_PARAMS{Object} Default query string parameters.
Properties
tileSize{OpenLayers.Size} Size for tiles.
featureCoordSys{String} Code for feature coordinate system.
filterCoordSys{String} Code for filter coordinate system.
layers{Array} An array of objects with layer properties.
async{Boolean} Request images asynchronously.
name{String} Layer name.
isBaseLayer{Boolean} The layer is a base layer.
Constants
DEFAULT_OPTIONS{Object} Default layers properties.
Constructor
OpenLayers.Layer.ArcIMSCreate a new ArcIMS layer object.
+ +

Constants

+ +

DEFAULT_PARAMS

{Object} Default query string parameters.

+ +

Properties

+ +

tileSize

{OpenLayers.Size} Size for tiles.  Default is 512x512.

+ +

featureCoordSys

{String} Code for feature coordinate system.  Default is “4326”.

+ +

filterCoordSys

{String} Code for filter coordinate system.  Default is “4326”.

+ +

layers

{Array} An array of objects with layer properties.

+ +

async

{Boolean} Request images asynchronously.  Default is true.

+ +

name

{String} Layer name.  Default is “ArcIMS”.

+ +

isBaseLayer

{Boolean} The layer is a base layer.  Default is true.

+ +

Constants

+ +

DEFAULT_OPTIONS

{Object} Default layers properties.

+ +

Constructor

+ +

OpenLayers.Layer.ArcIMS

Create a new ArcIMS layer object.

Example

var arcims = new OpenLayers.Layer.ArcIMS(
+    "Global Sample",
+    "http://sample.avencia.com/servlet/com.esri.esrimap.Esrimap",
+    {
+        service: "OpenLayers_Sample",
+        layers: [
+            // layers to manipulate
+            {id: "1", visible: true}
+        ]
+    }
+);

Parameters

name{String} A name for the layer
url{String} Base url for the ArcIMS server
options{Object} Optional object with properties to be set on the layer.
+ +
+ + + + + + + + + + +
Instances of this class represent a width/height pair
Create a new ArcIMS layer object.
Base class for layers that use a lattice of tiles.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/Boxes-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/Boxes-js.html new file mode 100644 index 0000000..651ddf3 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/Boxes-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Layer.Boxes - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Boxes

Draw divs as ‘boxes’ on the layer.

Inherits from

+ +

Constructor

+ +

OpenLayers.Layer.Boxes

Parameters

name{String}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

removeMarker

removeMarker: function(marker)

Parameters

marker{OpenLayers.Marker.Box}
+ +
+ + + + + + + + + + +
removeMarker: function(marker)
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/EventPane-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/EventPane-js.html new file mode 100644 index 0000000..6bf227a --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/EventPane-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Layer.EventPane - OpenLayers + + + + + + + + + +

OpenLayers.Layer.EventPane

Base class for 3rd party layers.  Create a new event pane layer with the OpenLayers.Layer.EventPane constructor.

Inherits from

Summary
OpenLayers.Layer.EventPaneBase class for 3rd party layers.
Properties
smoothDragPan{Boolean} smoothDragPan determines whether non-public/internal API methods are used for better performance while dragging EventPane layers.
isFixed{Boolean} EventPaned layers are fixed by default.
Constructor
OpenLayers.Layer.EventPaneCreate a new event pane layer
Functions
destroyDeconstruct this layer.
removeMapOn being removed from the map, we’ll like to remove the invisible ‘pane’ div that we added to it on creation.
+ +

Properties

+ +

smoothDragPan

{Boolean} smoothDragPan determines whether non-public/internal API methods are used for better performance while dragging EventPane layers.  When not in sphericalMercator mode, the smoother dragging doesn’t actually move north/south directly with the number of pixels moved, resulting in a slight offset when you drag your mouse north south with this option on.  If this visual disparity bothers you, you should turn this option off, or use spherical mercator.  Default is on.

+ +

isFixed

{Boolean} EventPaned layers are fixed by default.

+ +

Constructor

+ +

OpenLayers.Layer.EventPane

Create a new event pane layer

Parameters

name{String}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

destroy

destroy: function()

Deconstruct this layer.

+ +

removeMap

removeMap: function(map)

On being removed from the map, we’ll like to remove the invisible ‘pane’ div that we added to it on creation.

Parameters

map{OpenLayers.Map}
+ +
+ + + + + + + + + + +
destroy: function()
Deconstruct this layer.
removeMap: function(map)
On being removed from the map, we’ll like to remove the invisible ‘pane’ div that we added to it on creation.
Create a new event pane layer
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/FixedZoomLevels-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/FixedZoomLevels-js.html new file mode 100644 index 0000000..78e0911 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/FixedZoomLevels-js.html @@ -0,0 +1,49 @@ + + +OpenLayers.Layer.FixedZoomLevels - OpenLayers + + + + + + + + + +

OpenLayers.Layer.FixedZoomLevels

Some Layers will already have established zoom levels (like google or ve).  Instead of trying to determine them and populate a resolutions[] Array with those values, we will hijack the resolution functionality here.

When you subclass FixedZoomLevels

The initResolutions() call gets nullified, meaning no resolutions[] array is set up.  Which would be a big problem getResolution() in Layer, since it merely takes map.zoom and indexes into resolutions[]... but....

The getResolution() call is also overridden.  Instead of using the resolutions[] array, we simply calculate the current resolution based on the current extent and the current map size.  But how will we be able to calculate the current extent without knowing the resolution...?

The getExtent() function is also overridden.  Instead of calculating extent based on the center point and the current resolution, we instead calculate the extent by getting the lonlats at the top-left and bottom-right by using the getLonLatFromViewPortPx() translation function, taken from the pixel locations (0,0) and the size of the map.  But how will we be able to do lonlat-px translation without resolution....?

The getZoomForResolution() method is overridden.  Instead of indexing into the resolutions[] array, we call OpenLayers.Layer.getExent(), passing in the desired resolution.  With this extent, we then call getZoomForExtent()

Whenever you implement a layer using OpenLayers.Layer.FixedZoomLevels, it is your responsibility to provide the following three functions:

  • getLonLatFromViewPortPx
  • getViewPortPxFromLonLat
  • getZoomForExtent

...those three functions should generally be provided by any reasonable API that you might be working from.

Summary
OpenLayers.Layer.FixedZoomLevelsSome Layers will already have established zoom levels (like google or ve).
Constructor
OpenLayers.Layer.FixedZoomLevelsCreate a new fixed zoom levels layer.
Functions
getResolutionGet the current map resolution
getExtentCalculates using px-> lonlat translation functions on tl and br corners of viewport
+ +

Constructor

+ +

OpenLayers.Layer.FixedZoomLevels

Create a new fixed zoom levels layer.

+ +

Functions

+ +

getResolution

getResolution: function()

Get the current map resolution

Returns

{Float} Map units per Pixel

+ +

getExtent

getExtent: function ()

Calculates using px-> lonlat translation functions on tl and br corners of viewport

Returns

{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.

+ +
+ + + + + + + + + + +
getResolution: function()
Get the current map resolution
getExtent: function ()
Calculates using px-> lonlat translation functions on tl and br corners of viewport
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/GML-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/GML-js.html new file mode 100644 index 0000000..29418fb --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/GML-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Layer.GML - OpenLayers + + + + + + + + + +

OpenLayers.Layer.GML

Create a vector layer by parsing a GML file.  The GML file is passed in as a parameter.

Inherits from

Summary
OpenLayers.Layer.GMLCreate a vector layer by parsing a GML file.
Properties
format{OpenLayers.Format} The format you want the data to be parsed with.
formatOptions{Object} Hash of options which should be passed to the format when it is created.
Constructor
OpenLayers.Layer.GMLLoad and parse a single file on the web, according to the format provided via the ‘format’ option, defaulting to GML.
Functions
setVisibilitySet the visibility flag for the layer and hide/show&redraw accordingly.
+ +

Properties

+ +

format

{OpenLayers.Format} The format you want the data to be parsed with.

+ +

formatOptions

{Object} Hash of options which should be passed to the format when it is created.  Must be passed in the constructor.

+ +

Constructor

+ +

OpenLayers.Layer.GML

Load and parse a single file on the web, according to the format provided via the ‘format’ option, defaulting to GML.

Parameters

name{String}
url{String} URL of a GML file.
options{Object} Hashtable of extra options to tag onto the layer.
+ +

Functions

+ +

setVisibility

setVisibility: function(visibility,
noEvent)

Set the visibility flag for the layer and hide/show&redraw accordingly.  Fire event unless otherwise specified GML will be loaded if the layer is being made visible for the first time.

Parameters

visible{Boolean} Whether or not to display the layer (if in range)
noEvent{Boolean}
+ +
+ + + + + + + + + + +
Base class for format reading/writing a variety of formats.
setVisibility: function(visibility,
noEvent)
Set the visibility flag for the layer and hide/show&redraw accordingly.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/GeoRSS-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/GeoRSS-js.html new file mode 100644 index 0000000..3012b51 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/GeoRSS-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Layer.GeoRSS - OpenLayers + + + + + + + + + +

OpenLayers.Layer.GeoRSS

Add GeoRSS Point features to your map.

Inherits from

Summary
OpenLayers.Layer.GeoRSSAdd GeoRSS Point features to your map.
Properties
formatOptions{Object} Hash of options which should be passed to the format when it is created.
icon{OpenLayers.Icon}.
popupSize{OpenLayers.Size} This determines the size of GeoRSS popups.
useFeedTitle{Boolean} Set layer.name to the first <title> element in the feed.
Constructor
OpenLayers.Layer.GeoRSSCreate a GeoRSS Layer.
+ +

Properties

+ +

formatOptions

{Object} Hash of options which should be passed to the format when it is created.  Must be passed in the constructor.

+ +

icon

{OpenLayers.Icon}.  This determines the Icon to be used on the map for this GeoRSS layer.

+ +

popupSize

{OpenLayers.Size} This determines the size of GeoRSS popups.  If not provided, defaults to 250px by 120px.

+ +

useFeedTitle

{Boolean} Set layer.name to the first <title> element in the feed.  Default is true.

+ +

Constructor

+ +

OpenLayers.Layer.GeoRSS

Create a GeoRSS Layer.

Parameters

name{String}
location{String}
options{Object}
+ +
+ + + + + + + + + + +
The icon represents a graphical icon on the screen.
Instances of this class represent a width/height pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/Google-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/Google-js.html new file mode 100644 index 0000000..cecf1e2 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/Google-js.html @@ -0,0 +1,97 @@ + + +OpenLayers.Layer.Google - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Google

Inherits from

Summary
OpenLayers.Layer.Google
Constants
MIN_ZOOM_LEVEL{Integer} 0
MAX_ZOOM_LEVEL{Integer} 19
RESOLUTIONS{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
Properties
type{GMapType}
sphericalMercator{Boolean} Should the map act as a mercator-projected map? 
Constructor
OpenLayers.Layer.Google
Functions
setMapOverridden from EventPane because if a map type has been specified, we need to attach a listener for the first moveend -- this is how we will know that the map has been centered.
onMapResize
removeMapOn being removed from the map, also remove termsOfUse and poweredBy divs
getOLBoundsFromMapObjectBounds
getMapObjectBoundsFromOLBounds
getWarningHTML{String} String with information on why layer is broken, how to get it working.
setMapObjectCenterSet the mapObject to the specified center and zoom
dragPanMapObject
getMapObjectCenter{Object} The mapObject’s current center in Map Object format
getMapObjectZoom{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel
getMapObjectPixelFromMapObjectLonLat
getMapObjectZoomFromMapObjectBounds
getLongitudeFromMapObjectLonLat
getLatitudeFromMapObjectLonLat
getMapObjectLonLatFromLonLat
getXFromMapObjectPixel
getYFromMapObjectPixel
getMapObjectPixelFromXY
+ +

Constants

+ +

MIN_ZOOM_LEVEL

{Integer} 0

+ +

MAX_ZOOM_LEVEL

{Integer} 19

+ +

RESOLUTIONS

{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection

+ +

Properties

+ +

type

{GMapType}

+ +

sphericalMercator

{Boolean} Should the map act as a mercator-projected map?  This will cause all interactions with the map to be in the actual map projection, which allows support for vector drawing, overlaying other maps, etc.

+ +

Constructor

+ +

OpenLayers.Layer.Google

Parameters

name{String} A name for the layer.
options{Object} An optional object whose properties will be set on the layer.
+ +

Functions

+ +

setMap

setMap: function(map)

Overridden from EventPane because if a map type has been specified, we need to attach a listener for the first moveend -- this is how we will know that the map has been centered.  Only once the map has been centered is it safe to change the gmap object’s map type.

Parameters

map{OpenLayers.Map}
+ +

onMapResize

onMapResize: function()

Parameters

evt{Event}
+ +

removeMap

removeMap: function(map)

On being removed from the map, also remove termsOfUse and poweredBy divs

Parameters

map{OpenLayers.Map}
+ +

getOLBoundsFromMapObjectBounds

getOLBoundsFromMapObjectBounds: function(moBounds)

Parameters

moBounds{Object}

Returns

{OpenLayers.Bounds} An OpenLayers.Bounds, translated from the passed-in MapObject Bounds.  Returns null if null value is passed in.

+ +

getMapObjectBoundsFromOLBounds

getMapObjectBoundsFromOLBounds: function(olBounds)

Parameters

olBounds{OpenLayers.Bounds}

Returns

{Object} A MapObject Bounds, translated from olBounds Returns null if null value is passed in

+ +

getWarningHTML

getWarningHTML:function()

Returns

{String} String with information on why layer is broken, how to get it working.

+ +

setMapObjectCenter

setMapObjectCenter: function(center,
zoom)

Set the mapObject to the specified center and zoom

Parameters

center{Object} MapObject LonLat format
zoom{int} MapObject zoom format
+ +

dragPanMapObject

dragPanMapObject: function(dX,
dY)

Parameters

dX{Integer}
dY{Integer}
+ +

getMapObjectCenter

getMapObjectCenter: function()

Returns

{Object} The mapObject’s current center in Map Object format

+ +

getMapObjectZoom

getMapObjectZoom: function()

Returns

{Integer} The mapObject’s current zoom, in Map Object format

+ +

getMapObjectLonLatFromMapObjectPixel

getMapObjectLonLatFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Object} MapObject LonLat translated from MapObject Pixel

+ +

getMapObjectPixelFromMapObjectLonLat

getMapObjectPixelFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Object} MapObject Pixel transtlated from MapObject LonLat

+ +

getMapObjectZoomFromMapObjectBounds

getMapObjectZoomFromMapObjectBounds: function(moBounds)

Parameters

moBounds{Object} MapObject Bounds format

Returns

{Object} MapObject Zoom for specified MapObject Bounds

+ +

getLongitudeFromMapObjectLonLat

getLongitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Longitude of the given MapObject LonLat

+ +

getLatitudeFromMapObjectLonLat

getLatitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Latitude of the given MapObject LonLat

+ +

getMapObjectLonLatFromLonLat

getMapObjectLonLatFromLonLat: function(lon,
lat)

Parameters

lon{Float}
lat{Float}

Returns

{Object} MapObject LonLat built from lon and lat params

+ +

getXFromMapObjectPixel

getXFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} X value of the MapObject Pixel

+ +

getYFromMapObjectPixel

getYFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} Y value of the MapObject Pixel

+ +

getMapObjectPixelFromXY

getMapObjectPixelFromXY: function(x,
y)

Parameters

x{Integer}
y{Integer}

Returns

{Object} MapObject Pixel from x and y parameters

+ +
+ + + + + + + + + + +
setMap: function(map)
Overridden from EventPane because if a map type has been specified, we need to attach a listener for the first moveend -- this is how we will know that the map has been centered.
onMapResize: function()
removeMap: function(map)
On being removed from the map, also remove termsOfUse and poweredBy divs
getOLBoundsFromMapObjectBounds: function(moBounds)
getMapObjectBoundsFromOLBounds: function(olBounds)
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
dragPanMapObject: function(dX,
dY)
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectZoomFromMapObjectBounds: function(moBounds)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getXFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromXY: function(x,
y)
A mixin for layers that wraps up the pieces neccesary to have a coordinate conversion for working with commercial APIs which use a spherical mercator projection.
Base class for 3rd party layers.
Some Layers will already have established zoom levels (like google or ve).
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/Grid-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/Grid-js.html new file mode 100644 index 0000000..5951988 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/Grid-js.html @@ -0,0 +1,69 @@ + + +OpenLayers.Layer.Grid - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Grid

Base class for layers that use a lattice of tiles.  Create a new grid layer with the OpenLayers.Layer.Grid constructor.

Inherits from

Summary
OpenLayers.Layer.GridBase class for layers that use a lattice of tiles.
Properties
tileSize{OpenLayers.Size}
singleTile{Boolean} Moves the layer into single-tile mode, meaning that one tile will be loaded.
ratio{Float} Used only when in single-tile mode, this specifies the ratio of the size of the single tile to the size of the map.
buffer{Integer} Used only when in gridded mode, this specifies the number of extra rows and colums of tiles on each side which will surround the minimum grid tiles to cover the map.
numLoadingTiles{Integer} How many tiles are still loading?
Constructor
OpenLayers.Layer.GridCreate a new grid layer
Functions
destroyDeconstruct the layer and clear the grid.
cloneCreate a clone of this layer
setTileSizeCheck if we are in singleTile mode and if so, set the size as a ratio of the map size (as specified by the layer’s ‘ratio’ property).
getTilesBoundsReturn the bounds of the tile grid.
addTileGives subclasses of Grid the opportunity to create an OpenLayer.Tile of their choosing.
getTileBoundsReturns The tile bounds for a layer given a pixel location.
+ +

Properties

+ +

tileSize

+ +

singleTile

{Boolean} Moves the layer into single-tile mode, meaning that one tile will be loaded.  The tile’s size will be determined by the ‘ratio’ property.  When the tile is dragged such that it does not cover the entire viewport, it is reloaded.

+ +

ratio

{Float} Used only when in single-tile mode, this specifies the ratio of the size of the single tile to the size of the map.

+ +

buffer

{Integer} Used only when in gridded mode, this specifies the number of extra rows and colums of tiles on each side which will surround the minimum grid tiles to cover the map.

+ +

numLoadingTiles

{Integer} How many tiles are still loading?

+ +

Constructor

+ +

OpenLayers.Layer.Grid

Create a new grid layer

Parameters

name{String}
url{String}
params{Object}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

destroy

destroy: function()

Deconstruct the layer and clear the grid.

+ +

clone

clone: function (obj)

Create a clone of this layer

Parameters

obj{Object} Is this ever used?

Returns

{OpenLayers.Layer.Grid} An exact clone of this OpenLayers.Layer.Grid

+ +

setTileSize

setTileSize: function(size)

Check if we are in singleTile mode and if so, set the size as a ratio of the map size (as specified by the layer’s ‘ratio’ property).

Parameters

size{OpenLayers.Size}
+ +

getTilesBounds

getTilesBounds: function()

Return the bounds of the tile grid.

Returns

{OpenLayers.Bounds} A Bounds object representing the bounds of all the currently loaded tiles (including those partially or not at all seen onscreen).

+ +

addTile

addTile:function(bounds,
position)

Gives subclasses of Grid the opportunity to create an OpenLayer.Tile of their choosing.  The implementer should initialize the new tile and take whatever steps necessary to display it.

Parameters bounds - {OpenLayers.Bounds} position - {OpenLayers.Pixel}

Returns

{OpenLayers.Tile} The added OpenLayers.Tile

+ +

getTileBounds

getTileBounds: function(viewPortPx)

Returns The tile bounds for a layer given a pixel location.

Parameters

viewPortPx{OpenLayers.Pixel} The location in the viewport.

Returns

{OpenLayers.Bounds} Bounds of the tile at the given pixel location.

+ +
+ + + + + + + + + + +
Instances of this class represent a width/height pair
destroy: function()
Deconstruct the layer and clear the grid.
clone: function (obj)
Create a clone of this layer
setTileSize: function(size)
Check if we are in singleTile mode and if so, set the size as a ratio of the map size (as specified by the layer’s ‘ratio’ property).
getTilesBounds: function()
Return the bounds of the tile grid.
addTile:function(bounds,
position)
Gives subclasses of Grid the opportunity to create an OpenLayer.Tile of their choosing.
getTileBounds: function(viewPortPx)
Returns The tile bounds for a layer given a pixel location.
Create a new grid layer
Instances of this class represent bounding boxes.
This class represents a screen coordinate, in x and y coordinates
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/HTTPRequest-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/HTTPRequest-js.html new file mode 100644 index 0000000..628af60 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/HTTPRequest-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Layer.HTTPRequest - OpenLayers + + + + + + + + + +

OpenLayers.Layer.HTTPRequest

Inherits from

Summary
+ +

Constants

+ +

URL_HASH_FACTOR

{Float} Used to hash URL param strings for multi-WMS server selection.  Set to the Golden Ratio per Knuth’s recommendation.

+ +

Properties

+ +

reproject

Deprecated.  See http://trac.openlayers.org/wiki/SpatialMercator for information on the replacement for this functionality.  {Boolean} Whether layer should reproject itself based on base layer locations.  This allows reprojection onto commercial layers.  Default is false: Most layers can’t reproject, but layers which can create non-square geographic pixels can, like WMS.

+ +

Constructor

+ +

OpenLayers.Layer.HTTPRequest

Parameters

name{String}
url{Array(String) or String}
params{Object}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

destroy

destroy: function()
+ +

clone

clone: function (obj)

Parameters

obj{Object}

Returns

{OpenLayers.Layer.HTTPRequest} An exact clone of this OpenLayers.Layer.HTTPRequest

+ +

setUrl

setUrl: function(newUrl)

Parameters

newUrl{String}
+ +

mergeNewParams

mergeNewParams:function(newParams)

Parameters

newParams{Object}

Returns

redrawn: {Boolean} whether the layer was actually redrawn.

+ +

redraw

redraw: function(force)

Redraws the layer.  Returns true if the layer was redrawn, false if not.

Parameters

force{Boolean} Force redraw by adding random parameter.

Returns

{Boolean} The layer was redrawn.

+ +
+ + + + + + + + + + +
destroy: function()
clone: function (obj)
setUrl: function(newUrl)
mergeNewParams:function(newParams)
redraw: function(force)
Redraws the layer.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/Image-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/Image-js.html new file mode 100644 index 0000000..6b6681a --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/Image-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Layer.Image - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Image

Instances of OpenLayers.Layer.Image are used to display data from a web accessible image as a map layer.  Create a new image layer with the OpenLayers.Layer.Image constructor.  Inherits from OpenLayers.Layer.

Summary
OpenLayers.Layer.ImageInstances of OpenLayers.Layer.Image are used to display data from a web accessible image as a map layer.
Constructor
OpenLayers.Layer.ImageCreate a new image layer
Functions
setMap
setUrl
getURLThe url we return is always the same (the image itself never changes) so we can ignore the bounds parameter (it will always be the same, anyways)
+ +

Constructor

+ +

OpenLayers.Layer.Image

Create a new image layer

Parameters

name{String} A name for the layer.
url{String} Relative or absolute path to the image
extent{OpenLayers.Bounds} The extent represented by the image
size{OpenLayers.Size} The size (in pixels) of the image
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

setMap

setMap: function(map)

Parameters

map{OpenLayers.Map}
+ +

setUrl

setUrl: function(newUrl)

Parameters

newUrl{String}
+ +

getURL

getURL: function(bounds)

The url we return is always the same (the image itself never changes) so we can ignore the bounds parameter (it will always be the same, anyways)

Parameters

bounds{OpenLayers.Bounds}
+ +
+ + + + + + + + + + +
setMap: function(map)
setUrl: function(newUrl)
getURL: function(bounds)
The url we return is always the same (the image itself never changes) so we can ignore the bounds parameter (it will always be the same, anyways)
Create a new image layer
Instances of this class represent bounding boxes.
Instances of this class represent a width/height pair
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/KaMap-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/KaMap-js.html new file mode 100644 index 0000000..36198ac --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/KaMap-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Layer.KaMap - OpenLayers + + + + + + + + + +

OpenLayers.Layer.KaMap

Inherits from

Summary
OpenLayers.Layer.KaMap
Properties
isBaseLayer{Boolean} KaMap Layer is always a base layer
units{?}
resolution{Float}
Constants
DEFAULT_PARAMS{Object} parameters set by default.
Constructor
OpenLayers.Layer.KaMap
Functions
clone
getTileBoundsReturns The tile bounds for a layer given a pixel location.
+ +

Properties

+ +

isBaseLayer

{Boolean} KaMap Layer is always a base layer

+ +

units

{?}

+ +

resolution

{Float}

+ +

Constants

+ +

DEFAULT_PARAMS

{Object} parameters set by default.  The default parameters set the format via the ‘i’ parameter to ‘jpeg’.

+ +

Constructor

+ +

OpenLayers.Layer.KaMap

Parameters

name{String}
url{String}
params{Object} Parameters to be sent to the HTTP server in the query string for the tile.  The format can be set via the ‘i’ parameter (defaults to jpg) , and the map should be set via the ‘map’ parameter.  It has been reported that ka-Map may behave inconsistently if your format parameter does not match the format parameter configured in your config.php.  (See ticket #327 for more information.)
options{Object} Additional options for the layer.  Any of the APIProperties listed on this layer, and any layer types it extends, can be overridden through the options parameter.
+ +

Functions

+ +

clone

clone: function (obj)

Parameters

obj{Object}

Returns

{<OpenLayers.Layer.Kamap>} An exact clone of this OpenLayers.Layer.KaMap

+ +

getTileBounds

getTileBounds: function(viewPortPx)

Returns The tile bounds for a layer given a pixel location.

Parameters

viewPortPx{OpenLayers.Pixel} The location in the viewport.

Returns

{OpenLayers.Bounds} Bounds of the tile at the given pixel location.

+ +
+ + + + + + + + + + +
clone: function (obj)
getTileBounds: function(viewPortPx)
Returns The tile bounds for a layer given a pixel location.
Base class for layers that use a lattice of tiles.
This class represents a screen coordinate, in x and y coordinates
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/KaMapCache-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/KaMapCache-js.html new file mode 100644 index 0000000..d70e0f0 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/KaMapCache-js.html @@ -0,0 +1,49 @@ + + +OpenLayers.Layer.KaMapCache - OpenLayers + + + + + + + + + +

OpenLayers.Layer.KaMapCache

This class is designed to talk directly to a web-accessible ka-Map cache generated by the precache2.php script.

To create a a new KaMapCache layer, you must indicate also the “i” parameter (that will be used to calculate the file extension), and another special parameter, object names “metaTileSize”, with “h” (height) and “w” (width) properties.

// Create a new kaMapCache layer. var kamap_base = new OpenLayers.Layer.KaMapCache( “Satellite”, “http://www.example.org/web/acessible/cache”, {g: “satellite”, map: “world”, i: ‘png24’, metaTileSize: {w: 5, h: 5} } );

// Create an kaMapCache overlay layer (using “isBaseLayer: false”).  // Forces the output to be a “gif”, using the “i” parameter. var kamap_overlay = new OpenLayers.Layer.KaMapCache( “Streets”, “http://www.example.org/web/acessible/cache”, {g: “streets”, map: “world”, i: “gif”, metaTileSize: {w: 5, h: 5} }, {isBaseLayer: false} );

The cache URLs must look like

var/cache/World/50000/Group_Name/def/t-440320/l20480

This means that the cache generated via tile.php will not work with this class, and should instead use the KaMap layer.

More information is available in Ticket #1518.

Inherits from

Summary
OpenLayers.Layer.KaMapCacheThis class is designed to talk directly to a web-accessible ka-Map cache generated by the precache2.php script.
Constants
IMAGE_EXTENSIONS{Object} Simple hash map to convert format to extension.
DEFAULT_FORMAT{Object} Simple hash map to convert format to extension.
Constructor
OpenLayers.Layer.KaMapCache
+ +

Constants

+ +

IMAGE_EXTENSIONS

{Object} Simple hash map to convert format to extension.

+ +

DEFAULT_FORMAT

{Object} Simple hash map to convert format to extension.

+ +

Constructor

+ +

OpenLayers.Layer.KaMapCache

Parameters

name{String}
url{String}
params{Object} Parameters to be sent to the HTTP server in the query string for the tile.  The format can be set via the ‘i’ parameter (defaults to jpg) , and the map should be set via the ‘map’ parameter.  It has been reported that ka-Map may behave inconsistently if your format parameter does not match the format parameter configured in your config.php.  (See ticket #327 for more information.)
options{Object} Additional options for the layer.  Any of the APIProperties listed on this layer, and any layer types it extends, can be overridden through the options parameter.
+ +
+ + + + + + + + + + +
Base class for layers that use a lattice of tiles.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/MapGuide-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/MapGuide-js.html new file mode 100644 index 0000000..54f0b96 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/MapGuide-js.html @@ -0,0 +1,65 @@ + + +OpenLayers.Layer.MapGuide - OpenLayers + + + + + + + + + +

OpenLayers.Layer.MapGuide

Instances of OpenLayers.Layer.MapGuide are used to display data from a MapGuide OS instance.

Inherits from

Summary
OpenLayers.Layer.MapGuideInstances of OpenLayers.Layer.MapGuide are used to display data from a MapGuide OS instance.
Properties
isBaseLayer{Boolean} Treat this layer as a base layer.
useHttpTile{Boolean} use a tile cache exposed directly via a webserver rather than the via mapguide server.
singleTile{Boolean} use tile server or request single tile image.
useOverlay{Boolean} flag to indicate if the layer should be retrieved using GETMAPIMAGE (default) or using GETDYNAMICOVERLAY requests.
useAsyncOverlay{Boolean} indicates if the MapGuide site supports the asynchronous GETDYNAMICOVERLAY requests which is available in MapGuide Enterprise 2010 and MapGuide Open Source v2.0.3 or higher.
Constants
TILE_PARAMS{Object} Hashtable of default parameter key/value pairs for tiled layer
SINGLE_TILE_PARAMS{Object} Hashtable of default parameter key/value pairs for untiled layer
OVERLAY_PARAMS{Object} Hashtable of default parameter key/value pairs for untiled layer
FOLDER_PARAMS{Object} Hashtable of parameter key/value pairs which describe the folder structure for tiles as configured in the mapguide serverconfig.ini section [TileServiceProperties]
Constructor
OpenLayers.Layer.MapGuideCreate a new Mapguide layer, either tiled or untiled.
+ +

Properties

+ +

isBaseLayer

{Boolean} Treat this layer as a base layer.  Default is true.

+ +

useHttpTile

{Boolean} use a tile cache exposed directly via a webserver rather than the via mapguide server.  This does require extra configuration on the Mapguide Server, and will only work when singleTile is false.  The url for the layer must be set to the webserver path rather than the Mapguide mapagent.  See http://trac.osgeo.org/mapguide/wiki/CodeSamples/Tiles/ServingTilesViaHttp

+ +

singleTile

{Boolean} use tile server or request single tile image.

+ +

useOverlay

{Boolean} flag to indicate if the layer should be retrieved using GETMAPIMAGE (default) or using GETDYNAMICOVERLAY requests.

+ +

useAsyncOverlay

{Boolean} indicates if the MapGuide site supports the asynchronous GETDYNAMICOVERLAY requests which is available in MapGuide Enterprise 2010 and MapGuide Open Source v2.0.3 or higher.  The newer versions of MG is called asynchronously, allows selections to be drawn separately from the map and offers styling options.

With older versions of MapGuide, set useAsyncOverlay=false.  Note that in this case a synchronous AJAX call is issued and the mapname and session parameters must be used to initialize the layer, not the mapdefinition parameter.  Also note that this will issue a synchronous AJAX request before the image request can be issued so the users browser may lock up if the MG Web tier does not respond in a timely fashion.

+ +

Constants

+ +

TILE_PARAMS

{Object} Hashtable of default parameter key/value pairs for tiled layer

+ +

SINGLE_TILE_PARAMS

{Object} Hashtable of default parameter key/value pairs for untiled layer

+ +

OVERLAY_PARAMS

{Object} Hashtable of default parameter key/value pairs for untiled layer

+ +

FOLDER_PARAMS

{Object} Hashtable of parameter key/value pairs which describe the folder structure for tiles as configured in the mapguide serverconfig.ini section [TileServiceProperties]

+ +

Constructor

+ +

OpenLayers.Layer.MapGuide

Create a new Mapguide layer, either tiled or untiled.

For tiled layers, the ‘groupName’ and ‘mapDefinition’ values must be specified as parameters in the constructor.

For untiled base layers, specify either combination of ‘mapName’ and ‘session’, or ‘mapDefinition’ and ‘locale’.

For older versions of MapGuide and overlay layers, set useAsyncOverlay to false and in this case mapName and session are required parameters for the constructor.

NOTE: MapGuide OS uses a DPI value and degrees to meters conversion factor that are different than the defaults used in OpenLayers, so these must be adjusted accordingly in your application.  See the MapGuide example for how to set these values for MGOS.

Parameters

name{String} Name of the layer displayed in the interface
url{String} Location of the MapGuide mapagent executable (e.g.  http://localhost:8008/mapguide/mapagent/mapagent.fcgi)
params{Object} hashtable of additional parameters to use.  Some parameters may require additional code on the server.  The ones that you may want to use are:
  • mapDefinition - {String} The MapGuide resource definition (e.g.  Library://Samples/Gmap/Maps/gmapTiled.MapDefinition)
  • locale - Locale setting (for untiled overlays layers only)
  • mapName - {String} Name of the map as stored in the MapGuide session.  (for untiled layers with a session parameter only)
  • session - { String} MapGuide session ID (for untiled overlays layers only)
  • basemaplayergroupname - {String} GroupName for tiled MapGuide layers only
  • format - Image format to be returned (for untiled overlay layers only)
  • showLayers - {String} A comma separated list of GUID’s for the layers to display eg: ‘cvc-xcv34,453-345-345sdf’.
  • hideLayers - {String} A comma separated list of GUID’s for the layers to hide eg: ‘cvc-xcv34,453-345-345sdf’.
  • showGroups - {String} A comma separated list of GUID’s for the groups to display eg: ‘cvc-xcv34,453-345-345sdf’.
  • hideGroups - {String} A comma separated list of GUID’s for the groups to hide eg: ‘cvc-xcv34,453-345-345sdf’
  • selectionXml - {String} A selection xml string Some server plumbing is required to read such a value.
options{Ojbect} Hashtable of extra options to tag onto the layer; will vary depending if tiled or untiled maps are being requested
+ +
+ + + + + + + + + + +
Base class for layers that use a lattice of tiles.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/MapServer-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/MapServer-js.html new file mode 100644 index 0000000..4b24bb6 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/MapServer-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Layer.MapServer - OpenLayers + + + + + + + + + +

OpenLayers.Layer.MapServer

Instances of OpenLayers.Layer.MapServer are used to display data from a MapServer CGI instance.

Inherits from

Summary
OpenLayers.Layer.MapServerInstances of OpenLayers.Layer.MapServer are used to display data from a MapServer CGI instance.
Constants
DEFAULT_PARAMS{Object} Hashtable of default parameter key/value pairs
Constructor
OpenLayers.Layer.MapServerCreate a new MapServer layer object
+ +

Constants

+ +

DEFAULT_PARAMS

{Object} Hashtable of default parameter key/value pairs

+ +

Constructor

+ +

OpenLayers.Layer.MapServer

Create a new MapServer layer object

Parameters

name{String} A name for the layer
url{String} Base url for the MapServer CGI (e.g.  http://www2.dmsolutions.ca/cgi-bin/mapserv)
params{Object} An object with key/value pairs representing the GetMap query string parameters and parameter values.
options{Ojbect} Hashtable of extra options to tag onto the layer
+ +
+ + + + + + + + + + +
Base class for layers that use a lattice of tiles.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/MapServer/Untiled-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/MapServer/Untiled-js.html new file mode 100644 index 0000000..fa46ecd --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/MapServer/Untiled-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Layer.MapServer.Untiled - OpenLayers + + + + + + + + + +

OpenLayers.Layer.MapServer.Untiled

Deprecated.  To be removed in 3.0.  Instead use OpenLayers.Layer.MapServer and pass the option ‘singleTile’ as true.

Inherits from

+ +

Properties

+ +

singleTile

{singleTile} Always true for untiled.

+ +

Constructor

+ +

OpenLayers.Layer.MapServer.Untiled

Parameters

name{String}
url{String}
params{Object}
options{Object}
+ +
+ + + + + + + + + + +
Instances of OpenLayers.Layer.MapServer are used to display data from a MapServer CGI instance.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/Markers-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/Markers-js.html new file mode 100644 index 0000000..4403b2a --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/Markers-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Layer.Markers - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Markers

Inherits from

Summary
OpenLayers.Layer.Markers
Properties
isBaseLayer{Boolean} Markers layer is never a base layer.
markers{Array(OpenLayers.Marker)} internal marker list
Constructor
OpenLayers.Layer.MarkersCreate a Markers layer.
Functions
destroy
setOpacitySets the opacity for all the markers.
addMarker
removeMarker
getDataExtentCalculates the max extent which includes all of the markers.
+ +

Properties

+ +

isBaseLayer

{Boolean} Markers layer is never a base layer.

+ +

markers

{Array(OpenLayers.Marker)} internal marker list

+ +

Constructor

+ +

OpenLayers.Layer.Markers

Create a Markers layer.

Parameters

name{String}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

destroy

destroy: function()
+ +

setOpacity

setOpacity: function(opacity)

Sets the opacity for all the markers.

Parameter

opacity{Float}
+ +

addMarker

addMarker: function(marker)

Parameters

marker{OpenLayers.Marker}
+ +

removeMarker

removeMarker: function(marker)

Parameters

marker{OpenLayers.Marker}
+ +

getDataExtent

getDataExtent: function ()

Calculates the max extent which includes all of the markers.

Returns

{OpenLayers.Bounds}

+ +
+ + + + + + + + + + +
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
destroy: function()
setOpacity: function(opacity)
Sets the opacity for all the markers.
addMarker: function(marker)
removeMarker: function(marker)
getDataExtent: function ()
Calculates the max extent which includes all of the markers.
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/MultiMap-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/MultiMap-js.html new file mode 100644 index 0000000..4a05177 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/MultiMap-js.html @@ -0,0 +1,81 @@ + + +OpenLayers.Layer.MultiMap - OpenLayers + + + + + + + + + +

OpenLayers.Layer.MultiMap

Note that MultiMap does not fully support the sphericalMercator option.  See Ticket #953 for more details.

Inherits from

Summary
OpenLayers.Layer.MultiMapNote that MultiMap does not fully support the sphericalMercator option.
Constants
MIN_ZOOM_LEVEL{Integer} 1
MAX_ZOOM_LEVEL{Integer} 17
RESOLUTIONS{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
Properties
type{?}
Constructor
OpenLayers.Layer.MultiMap
Functions
getWarningHTML{String} String with information on why layer is broken, how to get it working.
setMapObjectCenterSet the mapObject to the specified center and zoom
getMapObjectCenter{Object} The mapObject’s current center in Map Object format
getMapObjectZoom{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel
getMapObjectPixelFromMapObjectLonLat
getLongitudeFromMapObjectLonLat
getLatitudeFromMapObjectLonLat
getMapObjectLonLatFromLonLat
getXFromMapObjectPixel
getYFromMapObjectPixel
getMapObjectPixelFromXY
+ +

Constants

+ +

MIN_ZOOM_LEVEL

{Integer} 1

+ +

MAX_ZOOM_LEVEL

{Integer} 17

+ +

RESOLUTIONS

{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection

+ +

Properties

+ +

type

{?}

+ +

Constructor

+ +

OpenLayers.Layer.MultiMap

Parameters

name{String}
options{Object}
+ +

Functions

+ +

getWarningHTML

getWarningHTML:function()

Returns

{String} String with information on why layer is broken, how to get it working.

+ +

setMapObjectCenter

setMapObjectCenter: function(center,
zoom)

Set the mapObject to the specified center and zoom

Parameters

center{Object} MapObject LonLat format
zoom{int} MapObject zoom format
+ +

getMapObjectCenter

getMapObjectCenter: function()

Returns

{Object} The mapObject’s current center in Map Object format

+ +

getMapObjectZoom

getMapObjectZoom: function()

Returns

{Integer} The mapObject’s current zoom, in Map Object format

+ +

getMapObjectLonLatFromMapObjectPixel

getMapObjectLonLatFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Object} MapObject LonLat translated from MapObject Pixel

+ +

getMapObjectPixelFromMapObjectLonLat

getMapObjectPixelFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Object} MapObject Pixel transtlated from MapObject LonLat

+ +

getLongitudeFromMapObjectLonLat

getLongitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Longitude of the given MapObject LonLat

+ +

getLatitudeFromMapObjectLonLat

getLatitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Latitude of the given MapObject LonLat

+ +

getMapObjectLonLatFromLonLat

getMapObjectLonLatFromLonLat: function(lon,
lat)

Parameters

lon{Float}
lat{Float}

Returns

{Object} MapObject LonLat built from lon and lat params

+ +

getXFromMapObjectPixel

getXFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} X value of the MapObject Pixel

+ +

getYFromMapObjectPixel

getYFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} Y value of the MapObject Pixel

+ +

getMapObjectPixelFromXY

getMapObjectPixelFromXY: function(x,
y)

Parameters

x{Integer}
y{Integer}

Returns

{Object} MapObject Pixel from x and y parameters

+ +
+ + + + + + + + + + +
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getXFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromXY: function(x,
y)
Base class for 3rd party layers.
Some Layers will already have established zoom levels (like google or ve).
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/PointTrack-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/PointTrack-js.html new file mode 100644 index 0000000..4bff260 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/PointTrack-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Layer.PointTrack - OpenLayers + + + + + + + + + +

OpenLayers.Layer.PointTrack

Vector layer to display ordered point features as a line, creating one LineString feature for each pair of two points.

Inherits from

Summary
OpenLayers.Layer.PointTrackVector layer to display ordered point features as a line, creating one LineString feature for each pair of two points.
Constructor
OpenLayers.PointTrackConstructor for a new OpenLayers.PointTrack instance.
Functions
addNodesAdds point features that will be used to create lines from, using point pairs.
Constants
OpenLayers.Layer.PointTrack.dataFrom{Object} with the following keys
+ +

Constructor

+ +

OpenLayers.PointTrack

Constructor for a new OpenLayers.PointTrack instance.

Parameters

name{String} name of the layer
options{Object} Optional object with properties to tag onto the instance.
+ +

Functions

+ +

addNodes

addNodes: function(pointFeatures)

Adds point features that will be used to create lines from, using point pairs.  The first point of a pair will be the source node, the second will be the target node.

Parameters

pointFeatures{Array(OpenLayers.Feature)}
+ +

Constants

+ +

OpenLayers.Layer.PointTrack.dataFrom

{Object} with the following keys

  • SOURCE_NODE: take data/attributes from the source node of the line
  • TARGET_NODE: take data/attributes from the target node of the line
+ +
+ + + + + + + + + + +
addNodes: function(pointFeatures)
Adds point features that will be used to create lines from, using point pairs.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Features are combinations of geography and attributes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/SphericalMercator-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/SphericalMercator-js.html new file mode 100644 index 0000000..8c3d5ad --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/SphericalMercator-js.html @@ -0,0 +1,45 @@ + + +OpenLayers.Layer.SphericalMercator - OpenLayers + + + + + + + + + +

OpenLayers.Layer.SphericalMercator

A mixin for layers that wraps up the pieces neccesary to have a coordinate conversion for working with commercial APIs which use a spherical mercator projection.  Using this layer as a base layer, additional layers can be used as overlays if they are in the same projection.

A layer is given properties of this object by setting the sphericalMercator property to true.

More projection information

Proj4 Text

+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs

WKT

900913=PROJCS[“WGS84 / Simple Mercator”, GEOGCS[“WGS 84”, DATUM[“WGS_1984”, SPHEROID[“WGS_1984”, 6378137.0, 298.257223563]], PRIMEM[“Greenwich”, 0.0], UNIT[“degree”, 0.017453292519943295], AXIS[“Longitude”, EAST], AXIS[“Latitude”, NORTH]], PROJECTION[“Mercator_1SP_Google”], PARAMETER[“latitude_of_origin”, 0.0], PARAMETER[“central_meridian”, 0.0], PARAMETER[“scale_factor”, 1.0], PARAMETER[“false_easting”, 0.0], PARAMETER[“false_northing”, 0.0], UNIT[“m”, 1.0], AXIS[“x”, EAST], AXIS[“y”, NORTH], AUTHORITY[“EPSG”,”900913”]]

Summary
OpenLayers.Layer.SphericalMercatorA mixin for layers that wraps up the pieces neccesary to have a coordinate conversion for working with commercial APIs which use a spherical mercator projection.
Functions
forwardMercatorGiven a lon,lat in EPSG:4326, return a point in Spherical Mercator.
inverseMercatorGiven a x,y in Spherical Mercator, return a point in EPSG:4326.
+ +

Functions

+ +

forwardMercator

forwardMercator: function(lon,
lat)

Given a lon,lat in EPSG:4326, return a point in Spherical Mercator.

Parameters

lon{float}
lat{float}

Returns

{OpenLayers.LonLat} The coordinates transformed to Mercator.

+ +

inverseMercator

inverseMercator: function(x,
y)

Given a x,y in Spherical Mercator, return a point in EPSG:4326.

Parameters

x{float} A map x in Spherical Mercator.
y{float} A map y in Spherical Mercator.

Returns

{OpenLayers.LonLat} The coordinates transformed to EPSG:4326.

+ +
+ + + + + + + + + + +
forwardMercator: function(lon,
lat)
Given a lon,lat in EPSG:4326, return a point in Spherical Mercator.
inverseMercator: function(x,
y)
Given a x,y in Spherical Mercator, return a point in EPSG:4326.
This class represents a longitude and latitude pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/TMS-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/TMS-js.html new file mode 100644 index 0000000..19dcd46 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/TMS-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Layer.TMS - OpenLayers + + + + + + + + + +

OpenLayers.Layer.TMS

Inherits from

Summary
OpenLayers.Layer.TMS
Properties
serviceVersion{String}
isBaseLayer{Boolean}
tileOrigin{OpenLayers.Pixel}
serverResolutions{Array} A list of all resolutions available on the server.
Constructor
OpenLayers.Layer.TMS
Functions
clone
setMapWhen the layer is added to a map, then we can fetch our origin (if we don’t have one.)
+ +

Properties

+ +

serviceVersion

{String}

+ +

isBaseLayer

{Boolean}

+ +

tileOrigin

+ +

serverResolutions

{Array} A list of all resolutions available on the server.  Only set this property if the map resolutions differs from the server.

+ +

Constructor

+ +

OpenLayers.Layer.TMS

Parameters

name{String}
url{String}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

clone

clone: function (obj)

Parameters

obj{Object}

Returns

{OpenLayers.Layer.TMS} An exact clone of this OpenLayers.Layer.TMS

+ +

setMap

setMap: function(map)

When the layer is added to a map, then we can fetch our origin (if we don’t have one.)

Parameters

map{OpenLayers.Map}
+ +
+ + + + + + + + + + +
This class represents a screen coordinate, in x and y coordinates
clone: function (obj)
setMap: function(map)
When the layer is added to a map, then we can fetch our origin (if we don’t have one.)
Base class for layers that use a lattice of tiles.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/Text-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/Text-js.html new file mode 100644 index 0000000..8559935 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/Text-js.html @@ -0,0 +1,54 @@ + + +OpenLayers.Layer.Text - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Text

This layer creates markers given data in a text file.  The location property of the layer (specified as a property of the options argument in the OpenLayers.Layer.Text constructor) points to a tab delimited file with data used to create markers.

The first row of the data file should be a header line with the column names of the data.  Each column should be delimited by a tab space.  The possible columns are:

  • point lat,lon of the point where a marker is to be placed
  • lat Latitude of the point where a marker is to be placed
  • lon Longitude of the point where a marker is to be placed
  • icon or image URL of marker icon to use.
  • iconSize Size of Icon to use.
  • iconOffset Where the top-left corner of the icon is to be placed relative to the latitude and longitude of the point.
  • title The text of the ‘title’ is placed inside an ‘h2’ marker inside a popup, which opens when the marker is clicked.
  • description The text of the ‘description’ is placed below the h2 in the popup. this can be plain text or HTML.

Example text file

lat  lon title   description iconSize    iconOffset  icon
+10   20  title   description 21,25       -10,-25     http://www.openlayers.org/dev/img/marker.png

Inherits from

Summary
OpenLayers.Layer.TextThis layer creates markers given data in a text file.
Properties
location{String} URL of text file.
formatOptions{Object} Hash of options which should be passed to the format when it is created.
Constructor
OpenLayers.Layer.TextCreate a text layer.
Functions
destroy
+ +

Properties

+ +

location

{String} URL of text file.  Must be specified in the “options” argument of the constructor.  Can not be changed once passed in.

+ +

formatOptions

{Object} Hash of options which should be passed to the format when it is created.  Must be passed in the constructor.

+ +

Constructor

+ +

OpenLayers.Layer.Text

Create a text layer.

Parameters

name{String}
options{Object} Object with properties to be set on the layer.  Must include location property.
+ +

Functions

+ +

destroy

destroy: function()
+ +
+ + + + + + + + + + +
destroy: function()
{String} URL of text file.
Create a text layer.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/TileCache-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/TileCache-js.html new file mode 100644 index 0000000..fa7352f --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/TileCache-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Layer.TileCache - OpenLayers + + + + + + + + + +

OpenLayers.Layer.TileCache

A read only TileCache layer.  Used to requests tiles cached by TileCache in a web accessible cache.  This means that you have to pre-populate your cache before this layer can be used.  It is meant only to read tiles created by TileCache, and not to make calls to TileCache for tile creation.  Create a new instance with the OpenLayers.Layer.TileCache constructor.

Inherits from

Summary
OpenLayers.Layer.TileCacheA read only TileCache layer.
Properties
isBaseLayer{Boolean} Treat this layer as a base layer.
format{String} Mime type of the images returned.
serverResolutions{Array} A list of all resolutions available on the server.
Constructor
OpenLayers.Layer.TileCacheCreate a new read only TileCache layer.
Functions
clone
+ +

Properties

+ +

isBaseLayer

{Boolean} Treat this layer as a base layer.  Default is true.

+ +

format

{String} Mime type of the images returned.  Default is image/png.

+ +

serverResolutions

{Array} A list of all resolutions available on the server.  Only set this property if the map resolutions differs from the server.

+ +

Constructor

+ +

OpenLayers.Layer.TileCache

Create a new read only TileCache layer.

Parameters

name{String} Name of the layer displayed in the interface
url{String} Location of the web accessible cache (not the location of your tilecache script!)
layername{String} Layer name as defined in the TileCache configuration
options{Object} Optional object with properties to be set on the layer.  Note that you should speficy your resolutions to match your TileCache configuration.  This can be done by setting the resolutions array directly (here or on the map), by setting maxResolution and numZoomLevels, or by using scale based properties.
+ +

Functions

+ +

clone

clone: function (obj)
obj{Object}

Returns

{OpenLayers.Layer.TileCache} An exact clone of this OpenLayers.Layer.TileCache

+ +
+ + + + + + + + + + +
clone: function (obj)
Create a new read only TileCache layer.
Base class for layers that use a lattice of tiles.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/Vector-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/Vector-js.html new file mode 100644 index 0000000..6b9b00a --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/Vector-js.html @@ -0,0 +1,87 @@ + + +OpenLayers.Layer.Vector - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Vector

Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.  Create a new vector layer with the OpenLayers.Layer.Vector constructor.

Inherits from

Summary
OpenLayers.Layer.VectorInstances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Constants
EVENT_TYPES{Array(String)} Supported application event types.
Properties
isBaseLayer{Boolean} The layer is a base layer.
isFixed{Boolean} Whether the layer remains in one place while dragging the map.
isVector{Boolean} Whether the layer is a vector layer.
features{Array(OpenLayers.Feature.Vector)}
reportError{Boolean} report friendly error message when loading of renderer fails.
style{Object} Default style for the layer
rendererOptions{Object} Options for the renderer.
geometryType{String} geometryType allows you to limit the types of geometries this layer supports.
Constructor
OpenLayers.Layer.VectorCreate a new vector layer
Functions
destroyDestroy this layer
displayHide or show the Layer
addFeaturesAdd Features to the layer.
removeFeaturesRemove features from the layer.
destroyFeaturesErase and destroy features on the layer.
drawFeatureDraw (or redraw) a feature on the layer.
getFeatureByIdGiven a feature id, return the feature if it exists in the features array
onFeatureInsertmethod called after a feature is inserted.
preFeatureInsertmethod called before a feature is inserted.
getDataExtentCalculates the max extent which includes all of the features.
+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

layer.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

All event objects have at least the following properties

object{Object} A reference to layer.events.object.
element{DOMElement} A reference to layer.events.element.

Supported map event types (in addition to those from OpenLayers.Layer)

beforefeatureaddedTriggered before a feature is added.  Listeners will receive an object with a feature property referencing the feature to be added.  To stop the feature from being added, a listener should return false.
beforefeaturesaddedTriggered before an array of features is added.  Listeners will receive an object with a features property referencing the feature to be added.  To stop the features from being added, a listener should return false.
featureaddedTriggered after a feature is added.  The event object passed to listeners will have a feature property with a reference to the added feature.
featuresaddedTriggered after features are added.  The event object passed to listeners will have a features property with a reference to an array of added features.
beforefeatureremovedTriggered before a feature is removed.  Listeners will receive an object with a feature property referencing the feature to be removed.
featureremovedTriggerd after a feature is removed.  The event object passed to listeners will have a feature property with a reference to the removed feature.
featuresremovedTriggered after features are removed.  The event object passed to listeners will have a features property with a reference to an array of removed features.
featureselectedTriggered after a feature is selected.  Listeners will receive an object with a feature property referencing the selected feature.
featureunselectedTriggered after a feature is unselected.  Listeners will receive an object with a feature property referencing the unselected feature.
beforefeaturemodifiedTriggered when a feature is selected to be modified.  Listeners will receive an object with a feature property referencing the selected feature.
featuremodifiedTriggered when a feature has been modified.  Listeners will receive an object with a feature property referencing the modified feature.
afterfeaturemodifiedTriggered when a feature is finished being modified.  Listeners will receive an object with a feature property referencing the modified feature.
vertexmodifiedTriggered when a vertex within any feature geometry has been modified.  Listeners will receive an object with a feature property referencing the modified feature, a vertex property referencing the vertex modified (always a point geometry), and a pixel property referencing the pixel location of the modification.
sketchstartedTriggered when a feature sketch bound for this layer is started.  Listeners will receive an object with a feature property referencing the new sketch feature and a vertex property referencing the creation point.
sketchmodifiedTriggered when a feature sketch bound for this layer is modified.  Listeners will receive an object with a vertex property referencing the modified vertex and a feature property referencing the sketch feature.
sketchcompleteTriggered when a feature sketch bound for this layer is complete.  Listeners will receive an object with a feature property referencing the sketch feature.  By returning false, a listener can stop the sketch feature from being added to the layer.
refreshTriggered when something wants a strategy to ask the protocol for a new set of features.
+ +

Properties

+ +

isBaseLayer

{Boolean} The layer is a base layer.  Default is true.  Set this property in the layer options

+ +

isFixed

{Boolean} Whether the layer remains in one place while dragging the map.

+ +

isVector

{Boolean} Whether the layer is a vector layer.

+ +

features

+ +

reportError

{Boolean} report friendly error message when loading of renderer fails.

+ +

style

{Object} Default style for the layer

+ +

rendererOptions

{Object} Options for the renderer.  See {OpenLayers.Renderer} for supported options.

+ +

geometryType

{String} geometryType allows you to limit the types of geometries this layer supports.  This should be set to something like “OpenLayers.Geometry.Point” to limit types.

+ +

Constructor

+ +

OpenLayers.Layer.Vector

Create a new vector layer

Parameters

name{String} A name for the layer
options{Object} Optional object with non-default properties to set on the layer.

Returns

{OpenLayers.Layer.Vector} A new vector layer

+ +

Functions

+ +

destroy

destroy: function()

Destroy this layer

+ +

display

display: function(display)

Hide or show the Layer

Parameters

display{Boolean}
+ +

addFeatures

addFeatures: function(features,
options)

Add Features to the layer.

Parameters

features{Array(OpenLayers.Feature.Vector)}
options{Object}
+ +

removeFeatures

removeFeatures: function(features,
options)

Remove features from the layer.  This erases any drawn features and removes them from the layer’s control.  The beforefeatureremoved and featureremoved events will be triggered for each feature.  The featuresremoved event will be triggered after all features have been removed.  To supress event triggering, use the silent option.

Parameters

features{Array(OpenLayers.Feature.Vector)} List of features to be removed.
options{Object} Optional properties for changing behavior of the removal.

Valid options

silent{Boolean} Supress event triggering.  Default is false.
+ +

destroyFeatures

destroyFeatures: function(features,
options)

Erase and destroy features on the layer.

Parameters

features{Array(OpenLayers.Feature.Vector)} An optional array of features to destroy.  If not supplied, all features on the layer will be destroyed.
options{Object}
+ +

drawFeature

drawFeature: function(feature,
style)

Draw (or redraw) a feature on the layer.  If the optional style argument is included, this style will be used.  If no style is included, the feature’s style will be used.  If the feature doesn’t have a style, the layer’s style will be used.

This function is not designed to be used when adding features to the layer (use addFeatures instead).  It is meant to be used when the style of a feature has changed, or in some other way needs to visually updated after it has already been added to a layer.  You must add the feature to the layer for most layer-related events to happen.

Parameters

feature{OpenLayers.Feature.Vector}
style{Object} Symbolizer hash or {String} renderIntent
+ +

getFeatureById

getFeatureById: function(featureId)

Given a feature id, return the feature if it exists in the features array

Parameters

featureId{String}

Returns

{OpenLayers.Feature.Vector} A feature corresponding to the given featureId

+ +

onFeatureInsert

onFeatureInsert: function(feature)

method called after a feature is inserted.  Does nothing by default.  Override this if you need to do something on feature updates.

Paarameters

feature{OpenLayers.Feature.Vector}
+ +

preFeatureInsert

preFeatureInsert: function(feature)

method called before a feature is inserted.  Does nothing by default.  Override this if you need to do something when features are first added to the layer, but before they are drawn, such as adjust the style.

Parameters

feature{OpenLayers.Feature.Vector}
+ +

getDataExtent

getDataExtent: function ()

Calculates the max extent which includes all of the features.

Returns

{OpenLayers.Bounds}

+ +
+ + + + + + + + + + +
Vector features use the OpenLayers.Geometry classes as geometry description.
destroy: function()
Destroy this layer
display: function(display)
Hide or show the Layer
addFeatures: function(features,
options)
Add Features to the layer.
removeFeatures: function(features,
options)
Remove features from the layer.
destroyFeatures: function(features,
options)
Erase and destroy features on the layer.
drawFeature: function(feature,
style)
Draw (or redraw) a feature on the layer.
getFeatureById: function(featureId)
Given a feature id, return the feature if it exists in the features array
onFeatureInsert: function(feature)
method called after a feature is inserted.
preFeatureInsert: function(feature)
method called before a feature is inserted.
getDataExtent: function ()
Calculates the max extent which includes all of the features.
Create a new vector layer
This is the base class for all renderers.
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/Vector/RootContainer-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/Vector/RootContainer-js.html new file mode 100644 index 0000000..5bac51a --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/Vector/RootContainer-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Layer.Vector.RootContainer - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Vector.RootContainer

A special layer type to combine multiple vector layers inside a single renderer root container.  This class is not supposed to be instantiated from user space, it is a helper class for controls that require event processing for multiple vector layers.

Inherits from

Summary
OpenLayers.Layer.Vector.RootContainerA special layer type to combine multiple vector layers inside a single renderer root container.
Properties
layersLayers that are attached to this container.
Constructor
OpenLayers.Layer.Vector.RootContainerCreate a new root container for multiple vector layer.
+ +

Properties

+ +

layers

Layers that are attached to this container.  Required config option.

+ +

Constructor

+ +

OpenLayers.Layer.Vector.RootContainer

Create a new root container for multiple vector layer.  This constructor is not supposed to be used from user space, it is only to be used by controls that need feature selection across multiple vector layers.

Parameters

name{String} A name for the layer
options{Object} Optional object with non-default properties to set on the layer.

Required options properties

layers{Array(OpenLayers.Layer.Vector)} The layers managed by this container

Returns

{OpenLayers.Layer.Vector.RootContainer} A new vector layer root container

+ +
+ + + + + + + + + + +
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Create a new root container for multiple vector layer.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/VirtualEarth-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/VirtualEarth-js.html new file mode 100644 index 0000000..ed6cf43 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/VirtualEarth-js.html @@ -0,0 +1,85 @@ + + +OpenLayers.Layer.VirtualEarth - OpenLayers + + + + + + + + + +

OpenLayers.Layer.VirtualEarth

Inherits from

Summary
OpenLayers.Layer.VirtualEarth
Constants
MIN_ZOOM_LEVEL{Integer} 1
MAX_ZOOM_LEVEL{Integer} 17
RESOLUTIONS{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
Properties
type{VEMapType}
sphericalMercator{Boolean} Should the map act as a mercator-projected map? 
Constructor
OpenLayers.Layer.VirtualEarth
Functions
getWarningHTML{String} String with information on why layer is broken, how to get it working.
setMapObjectCenterSet the mapObject to the specified center and zoom
getMapObjectCenter{Object} The mapObject’s current center in Map Object format
dragPanMapObject
getMapObjectZoom{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel
getMapObjectPixelFromMapObjectLonLat
getLongitudeFromMapObjectLonLat
getLatitudeFromMapObjectLonLat
getMapObjectLonLatFromLonLat
getXFromMapObjectPixel
getYFromMapObjectPixel
getMapObjectPixelFromXY
+ +

Constants

+ +

MIN_ZOOM_LEVEL

{Integer} 1

+ +

MAX_ZOOM_LEVEL

{Integer} 17

+ +

RESOLUTIONS

{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection

+ +

Properties

+ +

type

{VEMapType}

+ +

sphericalMercator

{Boolean} Should the map act as a mercator-projected map?  This will cause all interactions with the map to be in the actual map projection, which allows support for vector drawing, overlaying other maps, etc.

+ +

Constructor

+ +

OpenLayers.Layer.VirtualEarth

Parameters

name{String}
options{Object}
+ +

Functions

+ +

getWarningHTML

getWarningHTML:function()

Returns

{String} String with information on why layer is broken, how to get it working.

+ +

setMapObjectCenter

setMapObjectCenter: function(center,
zoom)

Set the mapObject to the specified center and zoom

Parameters

center{Object} MapObject LonLat format
zoom{int} MapObject zoom format
+ +

getMapObjectCenter

getMapObjectCenter: function()

Returns

{Object} The mapObject’s current center in Map Object format

+ +

dragPanMapObject

dragPanMapObject: function(dX,
dY)

Parameters

dX{Integer}
dY{Integer}
+ +

getMapObjectZoom

getMapObjectZoom: function()

Returns

{Integer} The mapObject’s current zoom, in Map Object format

+ +

getMapObjectLonLatFromMapObjectPixel

getMapObjectLonLatFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Object} MapObject LonLat translated from MapObject Pixel

+ +

getMapObjectPixelFromMapObjectLonLat

getMapObjectPixelFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Object} MapObject Pixel transtlated from MapObject LonLat

+ +

getLongitudeFromMapObjectLonLat

getLongitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Longitude of the given MapObject LonLat

+ +

getLatitudeFromMapObjectLonLat

getLatitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Latitude of the given MapObject LonLat

+ +

getMapObjectLonLatFromLonLat

getMapObjectLonLatFromLonLat: function(lon,
lat)

Parameters

lon{Float}
lat{Float}

Returns

{Object} MapObject LonLat built from lon and lat params

+ +

getXFromMapObjectPixel

getXFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} X value of the MapObject Pixel

+ +

getYFromMapObjectPixel

getYFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} Y value of the MapObject Pixel

+ +

getMapObjectPixelFromXY

getMapObjectPixelFromXY: function(x,
y)

Parameters

x{Integer}
y{Integer}

Returns

{Object} MapObject Pixel from x and y parameters

+ +
+ + + + + + + + + + +
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
dragPanMapObject: function(dX,
dY)
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getXFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromXY: function(x,
y)
Base class for 3rd party layers.
Some Layers will already have established zoom levels (like google or ve).
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/WFS-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/WFS-js.html new file mode 100644 index 0000000..15dba76 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/WFS-js.html @@ -0,0 +1,79 @@ + + +OpenLayers.Layer.WFS - OpenLayers + + + + + + + + + +

OpenLayers.Layer.WFS

Inherits from

Summary
OpenLayers.Layer.WFS
Properties
isBaseLayer{Boolean} WFS layer is not a base layer by default.
ratio{Float} the ratio of image/tile size to map size (this is the untiled buffer)
featureClass{OpenLayers.Feature} If featureClass is defined, an old-style markers based WFS layer is created instead of a new-style vector layer.
format{OpenLayers.Format} The format you want the data to be parsed with.
formatOptions{Object} Hash of options which should be passed to the format when it is created.
encodeBBOX{Boolean} Should the BBOX commas be encoded? 
extractAttributes{Boolean} Should the WFS layer parse attributes from the retrieved GML? 
Constructor
OpenLayers.Layer.WFS
Functions
destroy
mergeNewParamsModify parameters for the layer and redraw.
clone
getFullRequestStringcombine the layer’s url with its params and these newParams.
commitWrite out the data to a WFS server.
commitReportCalled with a ‘success’ message if the commit succeeded, otherwise a failure message, and the full request text as a second parameter.
refreshRefreshes all the features of the layer
getDataExtentCalculates the max extent which includes all of the layer data.
setOpacityCall the setOpacity method of the appropriate parent class to set the opacity.
+ +

Properties

+ +

isBaseLayer

{Boolean} WFS layer is not a base layer by default.

+ +

ratio

{Float} the ratio of image/tile size to map size (this is the untiled buffer)

+ +

featureClass

{OpenLayers.Feature} If featureClass is defined, an old-style markers based WFS layer is created instead of a new-style vector layer.  If sent, this should be a subclass of OpenLayers.Feature

+ +

format

{OpenLayers.Format} The format you want the data to be parsed with.  Must be passed in the constructor.  Should be a class, not an instance.  This option can only be used if no featureClass is passed / vectorMode is false: if a featureClass is passed, then this parameter is ignored.

+ +

formatOptions

{Object} Hash of options which should be passed to the format when it is created.  Must be passed in the constructor.

+ +

encodeBBOX

{Boolean} Should the BBOX commas be encoded?  The WMS spec says ‘no’, but some services want it that way.  Default false.

+ +

extractAttributes

{Boolean} Should the WFS layer parse attributes from the retrieved GML?  Defaults to false.  If enabled, parsing is slower, but attributes are available in the attributes property of layer features.

+ +

Constructor

+ +

OpenLayers.Layer.WFS

Parameters

name{String}
url{String}
params{Object}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

destroy

destroy: function()
+ +

mergeNewParams

mergeNewParams:function(newParams)

Modify parameters for the layer and redraw.

Parameters

newParams{Object}
+ +

clone

clone: function (obj)

Parameters

obj{Object}

Returns

{OpenLayers.Layer.WFS} An exact clone of this OpenLayers.Layer.WFS

+ +

getFullRequestString

getFullRequestString:function(newParams,
altUrl)

combine the layer’s url with its params and these newParams.

Add the SRS parameter from ‘projection’ -- this is probably more eloquently done via a setProjection() method, but this works for now and always.

Parameters

newParams{Object}
altUrl{String} Use this as the url instead of the layer’s url
+ +

commit

commit: function()

Write out the data to a WFS server.

+ +

commitReport

commitReport: function(string,
response)

Called with a ‘success’ message if the commit succeeded, otherwise a failure message, and the full request text as a second parameter.  Override this function to provide custom transaction reporting.

string{String} reporting string
response{String} full XML response
+ +

refresh

refresh: function()

Refreshes all the features of the layer

+ +

getDataExtent

getDataExtent: function ()

Calculates the max extent which includes all of the layer data.

Returns

{OpenLayers.Bounds}

+ +

setOpacity

setOpacity: function (opacity)

Call the setOpacity method of the appropriate parent class to set the opacity.

Parameter

opacity{Float}
+ +
+ + + + + + + + + + +
Features are combinations of geography and attributes.
Base class for format reading/writing a variety of formats.
destroy: function()
mergeNewParams:function(newParams)
Modify parameters for the layer and redraw.
clone: function (obj)
getFullRequestString:function(newParams,
altUrl)
combine the layer’s url with its params and these newParams.
commit: function()
Write out the data to a WFS server.
commitReport: function(string,
response)
Called with a ‘success’ message if the commit succeeded, otherwise a failure message, and the full request text as a second parameter.
refresh: function()
Refreshes all the features of the layer
getDataExtent: function ()
Calculates the max extent which includes all of the layer data.
setOpacity: function (opacity)
Call the setOpacity method of the appropriate parent class to set the opacity.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/WMS-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/WMS-js.html new file mode 100644 index 0000000..091cd62 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/WMS-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Layer.WMS - OpenLayers + + + + + + + + + +

OpenLayers.Layer.WMS

Instances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.  Create a new WMS layer with the OpenLayers.Layer.WMS constructor.

Inherits from

Summary
OpenLayers.Layer.WMSInstances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.
Constants
DEFAULT_PARAMS{Object} Hashtable of default parameter key/value pairs
Properties
isBaseLayer{Boolean} Default is true for WMS layer
encodeBBOX{Boolean} Should the BBOX commas be encoded? 
noMagic{Boolean} If true, the image format will not be automagicaly switched from image/jpeg to image/png or image/gif when using TRANSPARENT=TRUE.
Constructor
OpenLayers.Layer.WMSCreate a new WMS layer object
Functions
mergeNewParamsCatch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
getFullRequestStringCombine the layer’s url with its params and these newParams.
+ +

Constants

+ +

DEFAULT_PARAMS

{Object} Hashtable of default parameter key/value pairs

+ +

Properties

+ +

isBaseLayer

{Boolean} Default is true for WMS layer

+ +

encodeBBOX

{Boolean} Should the BBOX commas be encoded?  The WMS spec says ‘no’, but some services want it that way.  Default false.

+ +

noMagic

{Boolean} If true, the image format will not be automagicaly switched from image/jpeg to image/png or image/gif when using TRANSPARENT=TRUE.  Also isBaseLayer will not changed by the constructor.  Default false.

+ +

Constructor

+ +

OpenLayers.Layer.WMS

Create a new WMS layer object

Example

var wms = new OpenLayers.Layer.WMS("NASA Global Mosaic",
+                                   "http://wms.jpl.nasa.gov/wms.cgi",
+                                   {layers: "modis,global_mosaic"});

Parameters

name{String} A name for the layer
url{String} Base url for the WMS (e.g.  http://wms.jpl.nasa.gov/wms.cgi)
params{Object} An object with key/value pairs representing the GetMap query string parameters and parameter values.
options{Ojbect} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

mergeNewParams

mergeNewParams:function(newParams)

Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.

Once params have been changed, the tiles will be reloaded with the new parameters.

Parameters

newParams{Object} Hashtable of new params to use
+ +

getFullRequestString

getFullRequestString:function(newParams,
altUrl)

Combine the layer’s url with its params and these newParams.

Add the SRS parameter from projection -- this is probably more eloquently done via a setProjection() method, but this works for now and always.

Parameters

newParams{Object}
altUrl{String} Use this as the url instead of the layer’s url

Returns

{String}

+ +
+ + + + + + + + + + +
mergeNewParams:function(newParams)
Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
getFullRequestString:function(newParams,
altUrl)
Combine the layer’s url with its params and these newParams.
Create a new WMS layer object
Base class for layers that use a lattice of tiles.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/WMS/Untiled-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/WMS/Untiled-js.html new file mode 100644 index 0000000..2d02b0f --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/WMS/Untiled-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Layer.WMS.Untiled - OpenLayers + + + + + + + + + +

OpenLayers.Layer.WMS.Untiled

Deprecated.  To be removed in 3.0.  Instead use OpenLayers.Layer.WMS and pass the option ‘singleTile’ as true.

Inherits from

+ +

Properties

+ +

singleTile

{singleTile} Always true for untiled.

+ +

Constructor

+ +

OpenLayers.Layer.WMS.Untiled

Parameters

name{String}
url{String}
params{Object}
options{Object}
+ +
+ + + + + + + + + + +
Instances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/WorldWind-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/WorldWind-js.html new file mode 100644 index 0000000..85fcb02 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/WorldWind-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Layer.WorldWind - OpenLayers + + + + + + + + + +

OpenLayers.Layer.WorldWind

Inherits from

Summary
OpenLayers.Layer.WorldWind
Properties
isBaseLayerWorldWind layer is a base layer by default.
lzdLevelZeroTileSizeDegrees
zoomLevelsNumber of zoom levels.
Constructor
OpenLayers.Layer.WorldWind
+ +

Properties

+ +

isBaseLayer

WorldWind layer is a base layer by default.

+ +

lzd

LevelZeroTileSizeDegrees

+ +

zoomLevels

Number of zoom levels.

+ +

Constructor

+ +

OpenLayers.Layer.WorldWind

Parameters

name{String} Name of Layer
url{String} Base URL
lzd{Float} Level zero tile size degrees
zoomLevels{Int} number of zoom levels
params{Object} additional parameters
options{Object} additional options
+ +
+ + + + + + + + + + +
Base class for layers that use a lattice of tiles.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/XYZ-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/XYZ-js.html new file mode 100644 index 0000000..56a67d5 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/XYZ-js.html @@ -0,0 +1,58 @@ + + +OpenLayers.Layer.XYZ - OpenLayers + + + + + + + + + +

OpenLayers.Layer.XYZ

The XYZ class is designed to make it easier for people who have tiles arranged by a standard XYZ grid.

Summary
OpenLayers.Layer.XYZThe XYZ class is designed to make it easier for people who have tiles arranged by a standard XYZ grid.
Properties
isBaseLayerDefault is true, as this is designed to be a base tile source.
sphericalMecatorWhether the tile extents should be set to the defaults for spherical mercator.
Constructor
OpenLayers.Layer.OSM
Functions
cloneCreate a clone of this layer
setMapWhen the layer is added to a map, then we can fetch our origin (if we don’t have one.)
OpenLayers.Layer.OSMA class to access OpenStreetMap tiles.
+ +

Properties

+ +

isBaseLayer

Default is true, as this is designed to be a base tile source.

+ +

sphericalMecator

Whether the tile extents should be set to the defaults for spherical mercator.  Useful for things like OpenStreetMap.  Default is false, except for the OSM subclass.

+ +

Constructor

+ +

OpenLayers.Layer.OSM

Parameters

name{String}
url{String}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

clone

clone: function (obj)

Create a clone of this layer

Parameters

obj{Object} Is this ever used?

Returns

{OpenLayers.Layer.Grid} An exact clone of this OpenLayers.Layer.Grid

+ +

setMap

setMap: function(map)

When the layer is added to a map, then we can fetch our origin (if we don’t have one.)

Parameters

map{OpenLayers.Map}
+ +

OpenLayers.Layer.OSM

A class to access OpenStreetMap tiles.  By default, uses the OpenStreetMap hosted tile.openstreetmap.org ‘Mapnik’ tileset.  If you wish to use tiles@home / osmarender layer instead, you can pass a layer like:

new OpenLayers.Layer.OSM("t@h",
+  "http://tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png");

This layer defaults to Spherical Mercator.

+ +
+ + + + + + + + + + +
clone: function (obj)
Create a clone of this layer
setMap: function(map)
When the layer is added to a map, then we can fetch our origin (if we don’t have one.)
Base class for layers that use a lattice of tiles.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Layer/Yahoo-js.html b/openlayers/doc/apidocs/files/OpenLayers/Layer/Yahoo-js.html new file mode 100644 index 0000000..86b04e8 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Layer/Yahoo-js.html @@ -0,0 +1,93 @@ + + +OpenLayers.Layer.Yahoo - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Yahoo

Inherits from

Summary
OpenLayers.Layer.Yahoo
Constants
MIN_ZOOM_LEVEL{Integer} 0
MAX_ZOOM_LEVEL{Integer} 17
RESOLUTIONS{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
Properties
type{YahooMapType}
sphericalMercator{Boolean} Should the map act as a mercator-projected map? 
Constructor
OpenLayers.Layer.Yahoo
Functions
setMapOverridden from EventPane because we need to remove this yahoo event pane which prohibits our drag and drop, and we can only do this once the map has been loaded and centered.
getWarningHTML{String} String with information on why layer is broken, how to get it working.
getOLZoomFromMapObjectZoom
getMapObjectZoomFromOLZoom
setMapObjectCenterSet the mapObject to the specified center and zoom
getMapObjectCenter{Object} The mapObject’s current center in Map Object format
dragPanMapObject
getMapObjectZoom{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel
getMapObjectPixelFromMapObjectLonLat
getLongitudeFromMapObjectLonLat
getLatitudeFromMapObjectLonLat
getMapObjectLonLatFromLonLat
getXFromMapObjectPixel
getYFromMapObjectPixel
getMapObjectPixelFromXY
getMapObjectSizeFromOLSize
+ +

Constants

+ +

MIN_ZOOM_LEVEL

{Integer} 0

+ +

MAX_ZOOM_LEVEL

{Integer} 17

+ +

RESOLUTIONS

{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection

+ +

Properties

+ +

type

{YahooMapType}

+ +

sphericalMercator

{Boolean} Should the map act as a mercator-projected map?  This will cause all interactions with the map to be in the actual map projection, which allows support for vector drawing, overlaying other maps, etc.

+ +

Constructor

+ +

OpenLayers.Layer.Yahoo

Parameters

name{String}
options{Object}
+ +

Functions

+ +

setMap

setMap: function(map)

Overridden from EventPane because we need to remove this yahoo event pane which prohibits our drag and drop, and we can only do this once the map has been loaded and centered.

Parameters

map{OpenLayers.Map}
+ +

getWarningHTML

getWarningHTML:function()

Returns

{String} String with information on why layer is broken, how to get it working.

+ +

getOLZoomFromMapObjectZoom

getOLZoomFromMapObjectZoom: function(moZoom)

Parameters

gZoom{Integer}

Returns

{Integer} An OpenLayers Zoom level, translated from the passed in gZoom Returns null if null value is passed in.

+ +

getMapObjectZoomFromOLZoom

getMapObjectZoomFromOLZoom: function(olZoom)

Parameters

olZoom{Integer}

Returns

{Integer} A MapObject level, translated from the passed in olZoom Returns null if null value is passed in

+ +

setMapObjectCenter

setMapObjectCenter: function(center,
zoom)

Set the mapObject to the specified center and zoom

Parameters

center{Object} MapObject LonLat format
zoom{int} MapObject zoom format
+ +

getMapObjectCenter

getMapObjectCenter: function()

Returns

{Object} The mapObject’s current center in Map Object format

+ +

dragPanMapObject

dragPanMapObject: function(dX,
dY)

Parameters

dX{Integer}
dY{Integer}
+ +

getMapObjectZoom

getMapObjectZoom: function()

Returns

{Integer} The mapObject’s current zoom, in Map Object format

+ +

getMapObjectLonLatFromMapObjectPixel

getMapObjectLonLatFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Object} MapObject LonLat translated from MapObject Pixel

+ +

getMapObjectPixelFromMapObjectLonLat

getMapObjectPixelFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Object} MapObject Pixel transtlated from MapObject LonLat

+ +

getLongitudeFromMapObjectLonLat

getLongitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Longitude of the given MapObject LonLat

+ +

getLatitudeFromMapObjectLonLat

getLatitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Latitude of the given MapObject LonLat

+ +

getMapObjectLonLatFromLonLat

getMapObjectLonLatFromLonLat: function(lon,
lat)

Parameters

lon{Float}
lat{Float}

Returns

{Object} MapObject LonLat built from lon and lat params

+ +

getXFromMapObjectPixel

getXFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} X value of the MapObject Pixel

+ +

getYFromMapObjectPixel

getYFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} Y value of the MapObject Pixel

+ +

getMapObjectPixelFromXY

getMapObjectPixelFromXY: function(x,
y)

Parameters

x{Integer}
y{Integer}

Returns

{Object} MapObject Pixel from x and y parameters

+ +

getMapObjectSizeFromOLSize

getMapObjectSizeFromOLSize: function(olSize)

Parameters

olSize{OpenLayers.Size}

Returns

{Object} MapObject Size from olSize parameter

+ +
+ + + + + + + + + + +
setMap: function(map)
Overridden from EventPane because we need to remove this yahoo event pane which prohibits our drag and drop, and we can only do this once the map has been loaded and centered.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getOLZoomFromMapObjectZoom: function(moZoom)
getMapObjectZoomFromOLZoom: function(olZoom)
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
dragPanMapObject: function(dX,
dY)
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getXFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectSizeFromOLSize: function(olSize)
Base class for 3rd party layers.
Some Layers will already have established zoom levels (like google or ve).
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Instances of this class represent a width/height pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Map-js.html b/openlayers/doc/apidocs/files/OpenLayers/Map-js.html new file mode 100644 index 0000000..c6c1792 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Map-js.html @@ -0,0 +1,238 @@ + + +OpenLayers.Map - OpenLayers + + + + + + + + + +

OpenLayers.Map

Instances of OpenLayers.Map are interactive maps embedded in a web page.  Create a new map with the OpenLayers.Map constructor.

On their own maps do not provide much functionality.  To extend a map it’s necessary to add controls (OpenLayers.Control) and layers (OpenLayers.Layer) to the map.

Summary
OpenLayers.MapInstances of OpenLayers.Map are interactive maps embedded in a web page.
Constants
Z_INDEX_BASE{Object} Base z-indexes for different classes of thing
EVENT_TYPES{Array(String)} Supported application event types.
Properties
events{OpenLayers.Events} An events object that handles all events on the map
allOverlays{Boolean} Allow the map to function with “overlays” only.
div{DOMElement|String} The element that contains the map (or an id for that element).
layers{Array(OpenLayers.Layer)} Ordered list of layers in the map
baseLayer{OpenLayers.Layer} The currently selected base layer.
tileSize{OpenLayers.Size} Set in the map options to override the default tile size for this map.
projection{String} Set in the map options to override the default projection string this map - also set maxExtent, maxResolution, and units if appropriate.
units{String} The map units.
resolutions{Array(Float)} A list of map resolutions (map units per pixel) in descending order.
maxResolution{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
minResolution{Float}
maxScale{Float}
minScale{Float}
maxExtent{OpenLayers.Bounds} The maximum extent for the map.
minExtent{OpenLayers.Bounds}
restrictedExtent{OpenLayers.Bounds} Limit map navigation to this extent where possible.
numZoomLevels{Integer} Number of zoom levels for the map.
theme{String} Relative path to a CSS file from which to load theme styles.
displayProjection{OpenLayers.Projection} Requires proj4js support.Projection used by several controls to display data to user.
fallThrough{Boolean} Should OpenLayers allow events on the map to fall through to other elements on the page, or should it swallow them? 
eventListeners{Object} If set as an option at construction, the eventListeners object will be registered with <OpenLayers.Events.on>.
panMethod{Function} The Easing function to be used for tweening.
Constructor
OpenLayers.MapConstructor for a new OpenLayers.Map instance.
Functions
renderRender the map to a specified container.
destroyDestroy this map
setOptionsChange the map options
getTileSizeGet the tile size for the map
getByGet a list of objects given a property and a match item.
getLayersByGet a list of layers with properties matching the given criteria.
getLayersByNameGet a list of layers with names matching the given name.
getLayersByClassGet a list of layers of a given class (CLASS_NAME).
getControlsByGet a list of controls with properties matching the given criteria.
getControlsByClassGet a list of controls of a given class (CLASS_NAME).
getLayerGet a layer based on its id
addLayer
addLayers
removeLayerRemoves a layer from the map by removing its visual element (the layer.div property), then removing it from the map’s internal list of layers, setting the layer’s map property to null.
getNumLayers{Int} The number of layers attached to the map.
getLayerIndex
setLayerIndexMove the given layer to the specified (zero-based) index in the layer list, changing its z-index in the map display.
raiseLayerChange the index of the given layer by delta.
setBaseLayerAllows user to specify one of the currently-loaded layers as the Map’s new base layer.
addControl
getControl
removeControlRemove a control from the map.
addPopup
removePopup
getSize{OpenLayers.Size} An OpenLayers.Size object that represents the size, in pixels, of the div into which OpenLayers has been loaded.
updateSizeThis function should be called by any external code which dynamically changes the size of the map div (because mozilla wont let us catch the “onresize” for an element)
getCenter{OpenLayers.LonLat}
getZoom{Integer}
panAllows user to pan by a value of screen pixels
panToAllows user to pan to a new lonlat If the new lonlat is in the current extent the map will slide smoothly
setCenterSet the map center (and optionally, the zoom level).
getProjectionThis method returns a string representing the projection.
getProjectionObjectReturns the projection obect from the baselayer.
getMaxResolution{String} The Map’s Maximum Resolution
getMaxExtent
getNumZoomLevels{Integer} The total number of zoom levels that can be displayed by the current baseLayer.
getExtent{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getResolution{Float} The current resolution of the map.
getUnits{Float} The current units of the map.
getScale{Float} The current scale denominator of the map.
getZoomForExtent
getResolutionForZoom
getZoomForResolution
zoomToZoom to a specific zoom level
zoomIn
zoomOut
zoomToExtentZoom to the passed in bounds, recenter
zoomToMaxExtentZoom to the full extent and recenter.
zoomToScaleZoom to a specified scale
getViewPortPxFromLonLat
getLonLatFromPixel
getPixelFromLonLatReturns a pixel location given a map location.
getViewPortPxFromLayerPx
getLayerPxFromViewPortPx
getLayerPxFromLonLat
Constants
TILE_WIDTH{Integer} 256 Default tile width (unless otherwise specified)
TILE_HEIGHT{Integer} 256 Default tile height (unless otherwise specified)
+ +

Constants

+ +

Z_INDEX_BASE

{Object} Base z-indexes for different classes of thing

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

map.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

All event objects have at least the following properties

  • object {Object} A reference to map.events.object.
  • element {DOMElement} A reference to map.events.element.

Browser events have the following additional properties

  • xy {OpenLayers.Pixel} The pixel location of the event (relative to the the map viewport).
  • other properties that come with browser events

Supported map event types

  • preaddlayer triggered before a layer has been added.  The event object will include a layer property that references the layer to be added.
  • addlayer triggered after a layer has been added.  The event object will include a layer property that references the added layer.
  • removelayer triggered after a layer has been removed.  The event object will include a layer property that references the removed layer.
  • changelayer triggered after a layer name change, order change, or visibility change (due to resolution thresholds).  Listeners will receive an event object with layer and property properties.  The layer property will be a reference to the changed layer.  The property property will be a key to the changed property (name, visibility, or order).
  • movestart triggered after the start of a drag, pan, or zoom
  • move triggered after each drag, pan, or zoom
  • moveend triggered after a drag, pan, or zoom completes
  • zoomend triggered after a zoom completes
  • addmarker triggered after a marker has been added
  • removemarker triggered after a marker has been removed
  • clearmarkers triggered after markers have been cleared
  • mouseover triggered after mouseover the map
  • mouseout triggered after mouseout the map
  • mousemove triggered after mousemove the map
  • dragstart Does not work.  Register for movestart instead.
  • drag Does not work.  Register for move instead.
  • dragend Does not work.  Register for moveend instead.
  • changebaselayer triggered after the base layer changes
+ +

Properties

+ +

events

{OpenLayers.Events} An events object that handles all events on the map

+ +

allOverlays

{Boolean} Allow the map to function with “overlays” only.  Defaults to false.  If true, the lowest layer in the draw order will act as the base layer.  In addition, if set to true, all layers will have isBaseLayer set to false when they are added to the map.

Note

If you set map.allOverlays to true, then you cannot use map.setBaseLayer or layer.setIsBaseLayer.  With allOverlays true, the lowest layer in the draw layer is the base layer.  So, to change the base layer, use setLayerIndex or raiseLayer to set the layer index to 0.

+ +

div

{DOMElement|String} The element that contains the map (or an id for that element).  If the OpenLayers.Map constructor is called with two arguments, this should be provided as the first argument.  Alternatively, the map constructor can be called with the options object as the only argument.  In this case (one argument), a div property may or may not be provided.  If the div property is not provided, the map can be rendered to a container later using the render method.

Note: If you calling render after map construction, do not use maxResolution auto.  Instead, divide your maxExtent by your maximum expected dimension.

+ +

layers

{Array(OpenLayers.Layer)} Ordered list of layers in the map

+ +

baseLayer

{OpenLayers.Layer} The currently selected base layer.  This determines min/max zoom level, projection, etc.

+ +

tileSize

{OpenLayers.Size} Set in the map options to override the default tile size for this map.

+ +

projection

{String} Set in the map options to override the default projection string this map - also set maxExtent, maxResolution, and units if appropriate.  Default is “EPSG:4326”.

+ +

units

{String} The map units.  Defaults to ‘degrees’.  Possible values are ‘degrees’ (or ‘dd’), ‘m’, ‘ft’, ‘km’, ‘mi’, ‘inches’.

+ +

resolutions

{Array(Float)} A list of map resolutions (map units per pixel) in descending order.  If this is not set in the layer constructor, it will be set based on other resolution related properties (maxExtent, maxResolution, maxScale, etc.).

+ +

maxResolution

{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.  Specify a different value in the map options if you are not using a geographic projection and displaying the whole world.

+ +

minResolution

{Float}

+ +

maxScale

{Float}

+ +

minScale

{Float}

+ +

maxExtent

{OpenLayers.Bounds} The maximum extent for the map.  Defaults to the whole world in decimal degrees (-180, -90, 180, 90).  Specify a different extent in the map options if you are not using a geographic projection and displaying the whole world.

+ + + +

restrictedExtent

{OpenLayers.Bounds} Limit map navigation to this extent where possible.  If a non-null restrictedExtent is set, panning will be restricted to the given bounds.  In addition, zooming to a resolution that displays more than the restricted extent will center the map on the restricted extent.  If you wish to limit the zoom level or resolution, use maxResolution.

+ +

numZoomLevels

{Integer} Number of zoom levels for the map.  Defaults to 16.  Set a different value in the map options if needed.

+ +

theme

{String} Relative path to a CSS file from which to load theme styles.  Specify null in the map options (e.g.  {theme: null}) if you want to get cascading style declarations - by putting links to stylesheets or style declarations directly in your page.

+ +

displayProjection

{OpenLayers.Projection} Requires proj4js support.Projection used by several controls to display data to user.  If this property is set, it will be set on any control which has a null displayProjection property at the time the control is added to the map.

+ +

fallThrough

{Boolean} Should OpenLayers allow events on the map to fall through to other elements on the page, or should it swallow them?  (#457) Default is to fall through.

+ +

eventListeners

{Object} If set as an option at construction, the eventListeners object will be registered with <OpenLayers.Events.on>.  Object structure must be a listeners object as shown in the example for the events.on method.

+ +

panMethod

{Function} The Easing function to be used for tweening.  Default is OpenLayers.Easing.Expo.easeOut.  Setting this to ‘null’ turns off animated panning.

+ +

Constructor

+ +

OpenLayers.Map

Constructor for a new OpenLayers.Map instance.  There are two possible ways to call the map constructor.  See the examples below.

Parameters

div{String} Id of an element in your page that will contain the map.  May be omitted if the div option is provided or if you intend to use render later.
options{Object} Optional object with properties to tag onto the map.

Examples (method one)

// create a map with default options in an element with the id "map1"
+var map = new OpenLayers.Map("map1");
+
+// create a map with non-default options in an element with id "map2"
+var options = {
+    maxExtent: new OpenLayers.Bounds(-200000, -200000, 200000, 200000),
+    maxResolution: 156543,
+    units: 'm',
+    projection: "EPSG:41001"
+};
+var map = new OpenLayers.Map("map2", options);
Examples (method twosingle argument):
// create a map with non-default options
+var map = new OpenLayers.Map({
+    div: "map_id",
+    maxExtent: new OpenLayers.Bounds(-200000, -200000, 200000, 200000),
+    maxResolution: 156543,
+    units: 'm',
+    projection: "EPSG:41001"
+});
+
+// create a map without a reference to a container - call render later
+var map = new OpenLayers.Map({
+    maxExtent: new OpenLayers.Bounds(-200000, -200000, 200000, 200000),
+    maxResolution: 156543,
+    units: 'm',
+    projection: "EPSG:41001"
+});
+ +

Functions

+ +

render

render: function(div)

Render the map to a specified container.

Parameters

div{String|DOMElement} The container that the map should be rendered to.  If different than the current container, the map viewport will be moved from the current to the new container.
+ +

destroy

destroy:function()

Destroy this map

+ +

setOptions

setOptions: function(options)

Change the map options

Parameters

options{Object} Hashtable of options to tag to the map
+ +

getTileSize

getTileSize: function()

Get the tile size for the map

Returns

{OpenLayers.Size}

+ +

getBy

getBy: function(array,
property,
match)

Get a list of objects given a property and a match item.

Parameters

array{String} A property on the map whose value is an array.
property{String} A property on each item of the given array.
match{String | Object} A string to match.  Can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if match.test(map[array][i][property]) evaluates to true, the item will be included in the array returned.  If no items are found, an empty array is returned.

Returns

{Array} An array of items where the given property matches the given criteria.

+ +

getLayersBy

getLayersBy: function(property,
match)

Get a list of layers with properties matching the given criteria.

Parameter

property{String} A layer property to be matched.
match{String | Object} A string to match.  Can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if match.test(layer[property]) evaluates to true, the layer will be included in the array returned.  If no layers are found, an empty array is returned.

Returns

{Array(OpenLayers.Layer)} A list of layers matching the given criteria.  An empty array is returned if no matches are found.

+ +

getLayersByName

getLayersByName: function(match)

Get a list of layers with names matching the given name.

Parameter

match{String | Object} A layer name.  The name can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if name.test(layer.name) evaluates to true, the layer will be included in the list of layers returned.  If no layers are found, an empty array is returned.

Returns

{Array(OpenLayers.Layer)} A list of layers matching the given name.  An empty array is returned if no matches are found.

+ +

getLayersByClass

getLayersByClass: function(match)

Get a list of layers of a given class (CLASS_NAME).

Parameter

match{String | Object} A layer class name.  The match can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if type.test(layer.CLASS_NAME) evaluates to true, the layer will be included in the list of layers returned.  If no layers are found, an empty array is returned.

Returns

{Array(OpenLayers.Layer)} A list of layers matching the given class.  An empty array is returned if no matches are found.

+ +

getControlsBy

getControlsBy: function(property,
match)

Get a list of controls with properties matching the given criteria.

Parameter

property{String} A control property to be matched.
match{String | Object} A string to match.  Can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if match.test(layer[property]) evaluates to true, the layer will be included in the array returned.  If no layers are found, an empty array is returned.

Returns

{Array(OpenLayers.Control)} A list of controls matching the given criteria.  An empty array is returned if no matches are found.

+ +

getControlsByClass

getControlsByClass: function(match)

Get a list of controls of a given class (CLASS_NAME).

Parameter

match{String | Object} A control class name.  The match can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if type.test(control.CLASS_NAME) evaluates to true, the control will be included in the list of controls returned.  If no controls are found, an empty array is returned.

Returns

{Array(OpenLayers.Control)} A list of controls matching the given class.  An empty array is returned if no matches are found.

+ +

getLayer

getLayer: function(id)

Get a layer based on its id

Parameter

id{String} A layer id

Returns

{OpenLayers.Layer} The Layer with the corresponding id from the map’s layer collection, or null if not found.

+ +

addLayer

addLayer: function (layer)

Parameters

layer{OpenLayers.Layer}
+ +

addLayers

addLayers: function (layers)

Parameters

layers{Array(OpenLayers.Layer)}
+ +

removeLayer

removeLayer: function(layer,
setNewBaseLayer)

Removes a layer from the map by removing its visual element (the layer.div property), then removing it from the map’s internal list of layers, setting the layer’s map property to null.

a “removelayer” event is triggered.

very worthy of mention is that simply removing a layer from a map will not cause the removal of any popups which may have been created by the layer. this is due to the fact that it was decided at some point that popups would not belong to layers. thus there is no way for us to know here to which layer the popup belongs.

A simple solution to this is simply to call destroy() on the layer. the default OpenLayers.Layer class’s destroy() function automatically takes care to remove itself from whatever map it has been attached to.

The correct solution is for the layer itself to register an event-handler on “removelayer” and when it is called, if it recognizes itself as the layer being removed, then it cycles through its own personal list of popups, removing them from the map.

Parameters

layer{OpenLayers.Layer}
setNewBaseLayer{Boolean} Default is true
+ +

getNumLayers

getNumLayers: function ()

Returns

{Int} The number of layers attached to the map.

+ +

getLayerIndex

getLayerIndex: function (layer)

Parameters

layer{OpenLayers.Layer}

Returns

{Integer} The current (zero-based) index of the given layer in the map’s layer stack.  Returns -1 if the layer isn’t on the map.

+ +

setLayerIndex

setLayerIndex: function (layer,
idx)

Move the given layer to the specified (zero-based) index in the layer list, changing its z-index in the map display.  Use map.getLayerIndex() to find out the current index of a layer.  Note that this cannot (or at least should not) be effectively used to raise base layers above overlays.

Parameters

layer{OpenLayers.Layer}
idx{int}
+ +

raiseLayer

raiseLayer: function (layer,
delta)

Change the index of the given layer by delta.  If delta is positive, the layer is moved up the map’s layer stack; if delta is negative, the layer is moved down.  Again, note that this cannot (or at least should not) be effectively used to raise base layers above overlays.

Paremeters

layer{OpenLayers.Layer}
delta{int}
+ +

setBaseLayer

setBaseLayer: function(newBaseLayer)

Allows user to specify one of the currently-loaded layers as the Map’s new base layer.

Parameters

newBaseLayer{OpenLayers.Layer}
+ +

addControl

addControl: function (control,
px)

Parameters

control{OpenLayers.Control}
px{OpenLayers.Pixel}
+ +

getControl

getControl: function (id)

Parameters

id{String} ID of the control to return.

Returns

{OpenLayers.Control} The control from the map’s list of controls which has a matching ‘id’.  If none found, returns null.

+ +

removeControl

removeControl: function (control)

Remove a control from the map.  Removes the control both from the map object’s internal array of controls, as well as from the map’s viewPort (assuming the control was not added outsideViewport)

Parameters

control{OpenLayers.Control} The control to remove.
+ +

addPopup

addPopup: function(popup,
exclusive)

Parameters

popup{OpenLayers.Popup}
exclusive{Boolean} If true, closes all other popups first
+ +

removePopup

removePopup: function(popup)

Parameters

popup{OpenLayers.Popup}
+ +

getSize

getSize: function ()

Returns

{OpenLayers.Size} An OpenLayers.Size object that represents the size, in pixels, of the div into which OpenLayers has been loaded.  Note - A clone() of this locally cached variable is returned, so as not to allow users to modify it.

+ +

updateSize

updateSize: function()

This function should be called by any external code which dynamically changes the size of the map div (because mozilla wont let us catch the “onresize” for an element)

+ +

getCenter

getCenter: function ()

Returns

{OpenLayers.LonLat}

+ +

getZoom

getZoom: function ()

Returns

{Integer}

+ +

pan

pan: function(dx,
dy,
options)

Allows user to pan by a value of screen pixels

Parameters

dx{Integer}
dy{Integer}
options{Object} Options to configure panning:
  • animate {Boolean} Use panTo instead of setCenter.  Default is true.
  • dragging {Boolean} Call setCenter with dragging true.  Default is false.
+ +

panTo

panTo: function(lonlat)

Allows user to pan to a new lonlat If the new lonlat is in the current extent the map will slide smoothly

Parameters

lonlat{<OpenLayers.Lonlat>}
+ +

setCenter

setCenter: function(lonlat,
zoom,
dragging,
forceZoomChange)

Set the map center (and optionally, the zoom level).

Parameters

lonlat{OpenLayers.LonLat} The new center location.
zoom{Integer} Optional zoom level.
dragging{Boolean} Specifies whether or not to trigger movestart/end events
forceZoomChange{Boolean} Specifies whether or not to trigger zoom change events (needed on baseLayer change)

TBD: reconsider forceZoomChange in 3.0

+ +

getProjection

getProjection: function()

This method returns a string representing the projection.  In the case of projection support, this will be the srsCode which is loaded -- otherwise it will simply be the string value that was passed to the projection at startup.

FIXME: In 3.0, we will remove getProjectionObject, and instead return a Projection object from this function.

Returns

{String} The Projection string from the base layer or null.

+ +

getProjectionObject

getProjectionObject: function()

Returns the projection obect from the baselayer.

Returns

{OpenLayers.Projection} The Projection of the base layer.

+ +

getMaxResolution

getMaxResolution: function()

Returns

{String} The Map’s Maximum Resolution

+ +

getMaxExtent

getMaxExtent: function (options)

Parameters

options{Object}

Allowed Options

restricted{Boolean} If true, returns restricted extent (if it is available.)

Returns

{OpenLayers.Bounds} The maxExtent property as set on the current baselayer, unless the ‘restricted’ option is set, in which case the ‘restrictedExtent’ option from the map is returned (if it is set).

+ +

getNumZoomLevels

getNumZoomLevels: function()

Returns

{Integer} The total number of zoom levels that can be displayed by the current baseLayer.

+ +

getExtent

getExtent: function ()

Returns

{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.  If no baselayer is set, returns null.

+ +

getResolution

getResolution: function ()

Returns

{Float} The current resolution of the map.  If no baselayer is set, returns null.

+ +

getUnits

getUnits: function ()

Returns

{Float} The current units of the map.  If no baselayer is set, returns null.

+ +

getScale

getScale: function ()

Returns

{Float} The current scale denominator of the map.  If no baselayer is set, returns null.

+ +

getZoomForExtent

getZoomForExtent: function (bounds,
closest)

Parameters

bounds{OpenLayers.Bounds}
closest{Boolean} Find the zoom level that most closely fits the specified bounds.  Note that this may result in a zoom that does not exactly contain the entire extent.  Default is false.

Returns

{Integer} A suitable zoom level for the specified bounds.  If no baselayer is set, returns null.

+ +

getResolutionForZoom

getResolutionForZoom: function(zoom)

Parameter

zoom{Float}

Returns

{Float} A suitable resolution for the specified zoom.  If no baselayer is set, returns null.

+ +

getZoomForResolution

getZoomForResolution: function(resolution,
closest)

Parameter

resolution{Float}
closest{Boolean} Find the zoom level that corresponds to the absolute closest resolution, which may result in a zoom whose corresponding resolution is actually smaller than we would have desired (if this is being called from a getZoomForExtent() call, then this means that the returned zoom index might not actually contain the entire extent specified... but it’ll be close).  Default is false.

Returns

{Integer} A suitable zoom level for the specified resolution.  If no baselayer is set, returns null.

+ +

zoomTo

zoomTo: function(zoom)

Zoom to a specific zoom level

Parameters

zoom{Integer}
+ +

zoomIn

zoomIn: function()

Parameters

zoom{int}
+ +

zoomOut

zoomOut: function()

Parameters

zoom{int}
+ +

zoomToExtent

zoomToExtent: function(bounds,
closest)

Zoom to the passed in bounds, recenter

Parameters

bounds{OpenLayers.Bounds}
closest{Boolean} Find the zoom level that most closely fits the specified bounds.  Note that this may result in a zoom that does not exactly contain the entire extent.  Default is false.
+ +

zoomToMaxExtent

zoomToMaxExtent: function(options)

Zoom to the full extent and recenter.

Parameters

options -

Allowed Options

restricted{Boolean} True to zoom to restricted extent if it is set.  Defaults to true.
+ +

zoomToScale

zoomToScale: function(scale,
closest)

Zoom to a specified scale

Parameters

scale{float}
closest{Boolean} Find the zoom level that most closely fits the specified scale.  Note that this may result in a zoom that does not exactly contain the entire extent.  Default is false.
+ +

getViewPortPxFromLonLat

getViewPortPxFromLonLat: function (lonlat)

Parameters

lonlat{OpenLayers.LonLat}

Returns

{OpenLayers.Pixel} An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat, translated into view port pixels by the current base layer.

+ +

getLonLatFromPixel

getLonLatFromPixel: function (px)

Parameters

px{OpenLayers.Pixel}

Returns

{OpenLayers.LonLat} An OpenLayers.LonLat corresponding to the given OpenLayers.Pixel, translated into lon/lat by the current base layer

+ +

getPixelFromLonLat

getPixelFromLonLat: function (lonlat)

Returns a pixel location given a map location.  The map location is translated to an integer pixel location (in viewport pixel coordinates) by the current base layer.

Parameters

lonlat{OpenLayers.LonLat} A map location.

Returns

{OpenLayers.Pixel} An OpenLayers.Pixel corresponding to the OpenLayers.LonLat translated into view port pixels by the current base layer.

+ +

getViewPortPxFromLayerPx

getViewPortPxFromLayerPx:function(layerPx)

Parameters

layerPx{OpenLayers.Pixel}

Returns

{OpenLayers.Pixel} Layer Pixel translated into ViewPort Pixel coordinates

+ +

getLayerPxFromViewPortPx

getLayerPxFromViewPortPx:function(viewPortPx)

Parameters

viewPortPx{OpenLayers.Pixel}

Returns

{OpenLayers.Pixel} ViewPort Pixel translated into Layer Pixel coordinates

+ +

getLayerPxFromLonLat

getLayerPxFromLonLat: function (lonlat)

Parameters

lonlat{OpenLayers.LonLat} lonlat

Returns

{OpenLayers.Pixel} An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat, translated into layer pixels by the current base layer

+ +

Constants

+ +

TILE_WIDTH

{Integer} 256 Default tile width (unless otherwise specified)

+ +

TILE_HEIGHT

{Integer} 256 Default tile height (unless otherwise specified)

+ +
+ + + + + + + + + + +
Instances of this class represent a width/height pair
Instances of this class represent bounding boxes.
Class for coordinate transforms between coordinate systems.
render: function(div)
Render the map to a specified container.
destroy:function()
Destroy this map
setOptions: function(options)
Change the map options
getTileSize: function()
Get the tile size for the map
getBy: function(array,
property,
match)
Get a list of objects given a property and a match item.
getLayersBy: function(property,
match)
Get a list of layers with properties matching the given criteria.
getLayersByName: function(match)
Get a list of layers with names matching the given name.
getLayersByClass: function(match)
Get a list of layers of a given class (CLASS_NAME).
getControlsBy: function(property,
match)
Get a list of controls with properties matching the given criteria.
getControlsByClass: function(match)
Get a list of controls of a given class (CLASS_NAME).
getLayer: function(id)
Get a layer based on its id
addLayer: function (layer)
addLayers: function (layers)
removeLayer: function(layer,
setNewBaseLayer)
Removes a layer from the map by removing its visual element (the layer.div property), then removing it from the map’s internal list of layers, setting the layer’s map property to null.
getNumLayers: function ()
{Int} The number of layers attached to the map.
getLayerIndex: function (layer)
setLayerIndex: function (layer,
idx)
Move the given layer to the specified (zero-based) index in the layer list, changing its z-index in the map display.
raiseLayer: function (layer,
delta)
Change the index of the given layer by delta.
setBaseLayer: function(newBaseLayer)
Allows user to specify one of the currently-loaded layers as the Map’s new base layer.
addControl: function (control,
px)
getControl: function (id)
removeControl: function (control)
Remove a control from the map.
addPopup: function(popup,
exclusive)
removePopup: function(popup)
getSize: function ()
{OpenLayers.Size} An OpenLayers.Size object that represents the size, in pixels, of the div into which OpenLayers has been loaded.
updateSize: function()
This function should be called by any external code which dynamically changes the size of the map div (because mozilla wont let us catch the “onresize” for an element)
getCenter: function ()
{OpenLayers.LonLat}
This class represents a longitude and latitude pair
getZoom: function ()
{Integer}
pan: function(dx,
dy,
options)
Allows user to pan by a value of screen pixels
panTo: function(lonlat)
Allows user to pan to a new lonlat If the new lonlat is in the current extent the map will slide smoothly
setCenter: function(lonlat,
zoom,
dragging,
forceZoomChange)
Set the map center (and optionally, the zoom level).
getProjection: function()
This method returns a string representing the projection.
getProjectionObject: function()
Returns the projection obect from the baselayer.
getMaxResolution: function()
{String} The Map’s Maximum Resolution
getMaxExtent: function (options)
getNumZoomLevels: function()
{Integer} The total number of zoom levels that can be displayed by the current baseLayer.
getExtent: function ()
{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getResolution: function ()
{Float} The current resolution of the map.
getUnits: function ()
{Float} The current units of the map.
getScale: function ()
{Float} The current scale denominator of the map.
getZoomForExtent: function (bounds,
closest)
getResolutionForZoom: function(zoom)
getZoomForResolution: function(resolution,
closest)
zoomTo: function(zoom)
Zoom to a specific zoom level
zoomIn: function()
zoomOut: function()
zoomToExtent: function(bounds,
closest)
Zoom to the passed in bounds, recenter
zoomToMaxExtent: function(options)
Zoom to the full extent and recenter.
zoomToScale: function(scale,
closest)
Zoom to a specified scale
getViewPortPxFromLonLat: function (lonlat)
getLonLatFromPixel: function (px)
getPixelFromLonLat: function (lonlat)
Returns a pixel location given a map location.
getViewPortPxFromLayerPx:function(layerPx)
getLayerPxFromViewPortPx:function(viewPortPx)
getLayerPxFromLonLat: function (lonlat)
Constructor for a new OpenLayers.Map instance.
Controls affect the display or behavior of the map.
This class represents a screen coordinate, in x and y coordinates
{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
{OpenLayers.Bounds} The maximum extent for the map.
{DOMElement|String} The element that contains the map (or an id for that element).
A popup is a small div that can opened and closed on the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Marker-js.html b/openlayers/doc/apidocs/files/OpenLayers/Marker-js.html new file mode 100644 index 0000000..223a019 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Marker-js.html @@ -0,0 +1,56 @@ + + +OpenLayers.Marker - OpenLayers + + + + + + + + + +

OpenLayers.Marker

Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.

Markers are generally added to a special layer called OpenLayers.Layer.Markers.

Example

var markers = new OpenLayers.Layer.Markers( "Markers" );
+map.addLayer(markers);
+
+var size = new OpenLayers.Size(10,17);
+var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
+var icon = new OpenLayers.Icon('http://boston.openguides.org/markers/AQUA.png',size,offset);
+markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0),icon));
+markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0),icon.clone()));

Note that if you pass an icon into the Marker constructor, it will take that icon and use it.  This means that you should not share icons between markers -- you use them once, but you should clone() for any additional markers using that same icon.

Summary
OpenLayers.MarkerInstances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
Constructor
OpenLayers.Marker
Functions
destroyDestroy the marker.
isDrawn{Boolean} Whether or not the marker is drawn.
+ +

Constructor

+ +

OpenLayers.Marker

Parameters

lonlat{OpenLayers.LonLat} the position of this marker
icon{OpenLayers.Icon} the icon for this marker
+ +

Functions

+ +

destroy

destroy: function()

Destroy the marker.  You must first remove the marker from any layer which it has been added to, or you will get buggy behavior.  (This can not be done within the marker since the marker does not know which layer it is attached to.)

+ +

isDrawn

isDrawn: function()

Returns

{Boolean} Whether or not the marker is drawn.

+ +
+ + + + + + + + + + +
This class represents a longitude and latitude pair
The icon represents a graphical icon on the screen.
destroy: function()
Destroy the marker.
isDrawn: function()
{Boolean} Whether or not the marker is drawn.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Marker/Box-js.html b/openlayers/doc/apidocs/files/OpenLayers/Marker/Box-js.html new file mode 100644 index 0000000..c19665f --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Marker/Box-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Marker.Box - OpenLayers + + + + + + + + + +
+ +

Constructor

+ +

OpenLayers.Marker.Box

Parameters

bounds{OpenLayers.Bounds}
borderColor{String}
borderWidth{int}
+ +
+ + + + + + + + + + +
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Popup-js.html b/openlayers/doc/apidocs/files/OpenLayers/Popup-js.html new file mode 100644 index 0000000..eb458c3 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Popup-js.html @@ -0,0 +1,69 @@ + + +OpenLayers.Popup - OpenLayers + + + + + + + + + +

OpenLayers.Popup

A popup is a small div that can opened and closed on the map.  Typically opened in response to clicking on a marker.  See OpenLayers.Marker.  Popup’s don’t require their own layer and are added the the map using the OpenLayers.Map.addPopup method.

Example

popup = new OpenLayers.Popup("chicken",
+                   new OpenLayers.LonLat(5,40),
+                   new OpenLayers.Size(200,200),
+                   "example popup",
+                   true);
+
+map.addPopup(popup);
Summary
OpenLayers.PopupA popup is a small div that can opened and closed on the map.
Properties
autoSize{Boolean} Resize the popup to auto-fit the contents.
minSize{OpenLayers.Size} Minimum size allowed for the popup’s contents.
maxSize{OpenLayers.Size} Maximum size allowed for the popup’s contents.
panMapIfOutOfView{Boolean} When drawn, pan map such that the entire popup is visible in the current viewport (if necessary).
keepInMap{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.
closeOnMove{Boolean} When map pans, close the popup.
Constructor
OpenLayers.PopupCreate a popup.
Functions
updateSizeAuto size the popup so that it precisely fits its contents (as determined by this.contentDiv.innerHTML).
getSafeContentSize
+ +

Properties

+ +

autoSize

{Boolean} Resize the popup to auto-fit the contents.  Default is false.

+ +

minSize

{OpenLayers.Size} Minimum size allowed for the popup’s contents.

+ +

maxSize

{OpenLayers.Size} Maximum size allowed for the popup’s contents.

+ +

panMapIfOutOfView

{Boolean} When drawn, pan map such that the entire popup is visible in the current viewport (if necessary).  Default is false.

+ +

keepInMap

{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.  By default, this is not set on the base class.  If you are creating popups that are near map edges and not allowing pannning, and especially if you have a popup which has a fixedRelativePosition, setting this to false may be a smart thing to do.  Subclasses may want to override this setting.

Default is false.

+ +

closeOnMove

{Boolean} When map pans, close the popup.  Default is false.

+ +

Constructor

+ +

OpenLayers.Popup

Create a popup.

Parameters

id{String} a unqiue identifier for this popup.  If null is passed an identifier will be automatically generated.
lonlat{OpenLayers.LonLat} The position on the map the popup will be shown.
contentSize{OpenLayers.Size} The size of the content.
contentHTML{String} An HTML string to display inside the popup.
closeBox{Boolean} Whether to display a close box inside the popup.
closeBoxCallback{Function} Function to be called on closeBox click.
+ +

Functions

+ +

updateSize

updateSize: function()

Auto size the popup so that it precisely fits its contents (as determined by this.contentDiv.innerHTML).  Popup size will, of course, be limited by the available space on the current map

+ +

getSafeContentSize

getSafeContentSize: function(size)

Parameters

size{OpenLayers.Size} Desired size to make the popup.

Returns

{OpenLayers.Size} A size to make the popup which is neither smaller than the specified minimum size, nor bigger than the maximum size (which is calculated relative to the size of the viewport).

+ +
+ + + + + + + + + + +
Instances of this class represent a width/height pair
updateSize: function()
Auto size the popup so that it precisely fits its contents (as determined by this.contentDiv.innerHTML).
getSafeContentSize: function(size)
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
addPopup: function(popup,
exclusive)
This class represents a longitude and latitude pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Popup/Anchored-js.html b/openlayers/doc/apidocs/files/OpenLayers/Popup/Anchored-js.html new file mode 100644 index 0000000..aa44f94 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Popup/Anchored-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Popup.Anchored - OpenLayers + + + + + + + + + +

OpenLayers.Popup.Anchored

Inherits from

Summary
OpenLayers.Popup.Anchored
Properties
keepInMap{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.
Constructor
OpenLayers.Popup.Anchored
Functions
destroy
showOverridden from Popup since user might hide popup and then show() it in a new location (meaning we might want to update the relative position on the show)
setSize
+ +

Properties

+ +

keepInMap

{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.  By default, this is set.  If you are creating popups that are near map edges and not allowing pannning, and especially if you have a popup which has a fixedRelativePosition, setting this to false may be a smart thing to do.

For anchored popups, default is true, since subclasses will usually want this functionality.

+ +

Constructor

+ +

OpenLayers.Popup.Anchored

Parameters

id{String}
lonlat{OpenLayers.LonLat}
contentSize{OpenLayers.Size}
contentHTML{String}
anchor{Object} Object which must expose a ‘size’ OpenLayers.Size and ‘offset’ OpenLayers.Pixel (generally an OpenLayers.Icon).
closeBox{Boolean}
closeBoxCallback{Function} Function to be called on closeBox click.
+ +

Functions

+ +

destroy

destroy: function()
+ +

show

show: function()

Overridden from Popup since user might hide popup and then show() it in a new location (meaning we might want to update the relative position on the show)

+ +

setSize

setSize:function(contentSize)

Parameters

contentSize{OpenLayers.Size} the new size for the popup’s contents div (in pixels).
+ +
+ + + + + + + + + + +
destroy: function()
show: function()
Overridden from Popup since user might hide popup and then show() it in a new location (meaning we might want to update the relative position on the show)
setSize:function(contentSize)
A popup is a small div that can opened and closed on the map.
This class represents a longitude and latitude pair
Instances of this class represent a width/height pair
This class represents a screen coordinate, in x and y coordinates
The icon represents a graphical icon on the screen.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Popup/AnchoredBubble-js.html b/openlayers/doc/apidocs/files/OpenLayers/Popup/AnchoredBubble-js.html new file mode 100644 index 0000000..a1a2509 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Popup/AnchoredBubble-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Popup.AnchoredBubble - OpenLayers + + + + + + + + + +
+ +

Constructor

+ +

OpenLayers.Popup.AnchoredBubble

Parameters

id{String}
lonlat{OpenLayers.LonLat}
contentSize{OpenLayers.Size}
contentHTML{String}
anchor{Object} Object to which we’ll anchor the popup.  Must expose a ‘size’ (OpenLayers.Size) and ‘offset’ (OpenLayers.Pixel) (Note that this is generally an OpenLayers.Icon).
closeBox{Boolean}
closeBoxCallback{Function} Function to be called on closeBox click.
+ +

Functions

+ +

setSize

setSize:function(contentSize)

Parameters

contentSize{OpenLayers.Size} the new size for the popup’s contents div (in pixels).
+ +

setBackgroundColor

setBackgroundColor:function(color)

Parameters

color{String}
+ +

setOpacity

setOpacity:function(opacity)

Parameters

opacity{float}
+ +

Constants

+ +

CORNER_SIZE

{Integer} 5.  Border space for the RICO corners.

+ +
+ + + + + + + + + + +
setSize:function(contentSize)
setBackgroundColor:function(color)
setOpacity:function(opacity)
This class represents a longitude and latitude pair
Instances of this class represent a width/height pair
This class represents a screen coordinate, in x and y coordinates
The icon represents a graphical icon on the screen.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Popup/Framed-js.html b/openlayers/doc/apidocs/files/OpenLayers/Popup/Framed-js.html new file mode 100644 index 0000000..84c8cd6 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Popup/Framed-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Popup.Framed - OpenLayers + + + + + + + + + +

OpenLayers.Popup.Framed

Inherits from

Summary
OpenLayers.Popup.Framed
Properties
isAlphaImage{Boolean} The image has some alpha and thus needs to use the alpha image hack.
fixedRelativePosition{Boolean} We want the framed popup to work dynamically placed relative to its anchor but also in just one fixed position.
Constructor
OpenLayers.Popup.Framed
Functions
destroy
setBackgroundColor
setBorder
setSizeOverridden here, because we need to update the blocks whenever the size of the popup has changed.
+ +

Properties

+ +

isAlphaImage

{Boolean} The image has some alpha and thus needs to use the alpha image hack.  Note that setting this to true will have no noticeable effect in FF or IE7 browsers, but will all but crush the ie6 browser.  Default is false.

+ +

fixedRelativePosition

{Boolean} We want the framed popup to work dynamically placed relative to its anchor but also in just one fixed position.  A well designed framed popup will have the pixels and logic to display itself in any of the four relative positions, but (understandably), this will not be the case for all of them.  By setting this property to ‘true’, framed popup will not recalculate for the best placement each time it’s open, but will always open the same way.  Note that if this is set to true, it is generally advisable to also set the ‘panIntoView’ property to true so that the popup can be scrolled into view (since it will often be offscreen on open) Default is false.

+ +

Constructor

+ +

OpenLayers.Popup.Framed

Parameters

id{String}
lonlat{OpenLayers.LonLat}
contentSize{OpenLayers.Size}
contentHTML{String}
anchor{Object} Object to which we’ll anchor the popup.  Must expose a ‘size’ (OpenLayers.Size) and ‘offset’ (OpenLayers.Pixel) (Note that this is generally an OpenLayers.Icon).
closeBox{Boolean}
closeBoxCallback{Function} Function to be called on closeBox click.
+ +

Functions

+ +

destroy

destroy: function()
+ +

setBackgroundColor

setBackgroundColor:function(color)
+ +

setBorder

setBorder:function()
+ +

setSize

setSize:function(contentSize)

Overridden here, because we need to update the blocks whenever the size of the popup has changed.

Parameters

contentSize{OpenLayers.Size} the new size for the popup’s contents div (in pixels).
+ +
+ + + + + + + + + + +
destroy: function()
setBackgroundColor:function(color)
setBorder:function()
setSize:function(contentSize)
Overridden here, because we need to update the blocks whenever the size of the popup has changed.
This class represents a longitude and latitude pair
Instances of this class represent a width/height pair
This class represents a screen coordinate, in x and y coordinates
The icon represents a graphical icon on the screen.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Popup/FramedCloud-js.html b/openlayers/doc/apidocs/files/OpenLayers/Popup/FramedCloud-js.html new file mode 100644 index 0000000..594f0e4 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Popup/FramedCloud-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Popup.FramedCloud - OpenLayers + + + + + + + + + +

OpenLayers.Popup.FramedCloud

Inherits from

Summary
OpenLayers.Popup.FramedCloud
Properties
autoSize{Boolean} Framed Cloud is autosizing by default.
panMapIfOutOfView{Boolean} Framed Cloud does pan into view by default.
imageSize{OpenLayers.Size}
isAlphaImage{Boolean} The FramedCloud does not use an alpha image (in honor of the good ie6 folk out there)
fixedRelativePosition{Boolean} The Framed Cloud popup works in just one fixed position.
minSize{OpenLayers.Size}
maxSize{OpenLayers.Size}
Constructor
OpenLayers.Popup.FramedCloud
Functions
destroy
+ +

Properties

+ +

autoSize

{Boolean} Framed Cloud is autosizing by default.

+ +

panMapIfOutOfView

{Boolean} Framed Cloud does pan into view by default.

+ +

imageSize

+ +

isAlphaImage

{Boolean} The FramedCloud does not use an alpha image (in honor of the good ie6 folk out there)

+ +

fixedRelativePosition

{Boolean} The Framed Cloud popup works in just one fixed position.

+ + + + + +

Constructor

+ +

OpenLayers.Popup.FramedCloud

Parameters

id{String}
lonlat{OpenLayers.LonLat}
contentSize{OpenLayers.Size}
contentHTML{String}
anchor{Object} Object to which we’ll anchor the popup.  Must expose a ‘size’ (OpenLayers.Size) and ‘offset’ (OpenLayers.Pixel) (Note that this is generally an OpenLayers.Icon).
closeBox{Boolean}
closeBoxCallback{Function} Function to be called on closeBox click.
+ +

Functions

+ +

destroy

destroy: function()
+ +
+ + + + + + + + + + +
Instances of this class represent a width/height pair
destroy: function()
This class represents a longitude and latitude pair
This class represents a screen coordinate, in x and y coordinates
The icon represents a graphical icon on the screen.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Projection-js.html b/openlayers/doc/apidocs/files/OpenLayers/Projection-js.html new file mode 100644 index 0000000..00ca3f3 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Projection-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Projection - OpenLayers + + + + + + + + + +

OpenLayers.Projection

Class for coordinate transforms between coordinate systems.  Depends on the proj4js library.  If proj4js is not available, then this is just an empty stub.

Summary
OpenLayers.ProjectionClass for coordinate transforms between coordinate systems.
Constructor
OpenLayers.ProjectionThis class offers several methods for interacting with a wrapped pro4js projection object.
Functions
getCodeGet the string SRS code.
getUnitsGet the units string for the projection -- returns null if proj4js is not available.
addTransformSet a custom transform method between two projections.
transformTransform a point coordinate from one projection to another.
+ +

Constructor

+ +

OpenLayers.Projection

This class offers several methods for interacting with a wrapped pro4js projection object.

Parameters

projCode{String} A string identifying the Well Known Identifier for the projection.
options{Object} An optional object to set additional properties on the layer.

Returns

{OpenLayers.Projection} A projection object.

+ +

Functions

+ +

getCode

getCode: function()

Get the string SRS code.

Returns

{String} The SRS code.

+ +

getUnits

getUnits: function()

Get the units string for the projection -- returns null if proj4js is not available.

Returns

{String} The units abbreviation.

+ +

addTransform

OpenLayers.Projection.addTransform = function(from,
to,
method)

Set a custom transform method between two projections.  Use this method in cases where the proj4js lib is not available or where custom projections need to be handled.

Parameters

from{String} The code for the source projection
to{String} the code for the destination projection
method{Function} A function that takes a point as an argument and transforms that point from the source to the destination projection in place.  The original point should be modified.
+ +

transform

OpenLayers.Projection.transform = function(point,
source,
dest)

Transform a point coordinate from one projection to another.  Note that the input point is transformed in place.

Parameters

point{{OpenLayers.Geometry.Point> | Object} An object with x and y properties representing coordinates in those dimensions.
sourceProj{OpenLayers.Projection} Source map coordinate system
destProj{OpenLayers.Projection} Destination map coordinate system

Returns

point{object} A transformed coordinate.  The original point is modified.
+ +
+ + + + + + + + + + +
getCode: function()
Get the string SRS code.
getUnits: function()
Get the units string for the projection -- returns null if proj4js is not available.
OpenLayers.Projection.addTransform = function(from,
to,
method)
Set a custom transform method between two projections.
OpenLayers.Projection.transform = function(point,
source,
dest)
Transform a point coordinate from one projection to another.
This class offers several methods for interacting with a wrapped pro4js projection object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Protocol-js.html b/openlayers/doc/apidocs/files/OpenLayers/Protocol-js.html new file mode 100644 index 0000000..412b901 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Protocol-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Protocol - OpenLayers + + + + + + + + + +

OpenLayers.Protocol

Abstract vector layer protocol class.  Not to be instantiated directly.  Use one of the protocol subclasses instead.

Summary
OpenLayers.ProtocolAbstract vector layer protocol class.
Constructor
OpenLayers.ProtocolAbstract class for vector protocols.
Functions
destroyClean up the protocol.
readConstruct a request for reading new features.
createConstruct a request for writing newly created features.
updateConstruct a request updating modified features.
deleteConstruct a request deleting a removed feature.
commitGo over the features and for each take action based on the feature state.
OpenLayers.Protocol.ResponseProtocols return Response objects to their users.
Constructor
OpenLayers.Protocol.Response
+ +

Constructor

+ +

OpenLayers.Protocol

Abstract class for vector protocols.  Create instances of a subclass.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

destroy

destroy: function()

Clean up the protocol.

+ +

read

read: function()

Construct a request for reading new features.

Parameters

options{Object} Optional object for configuring the request.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, the same object will be passed to the callback function passed if one exists in the options object.

+ +

create

create: function()

Construct a request for writing newly created features.

Parameters

features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, the same object will be passed to the callback function passed if one exists in the options object.

+ +

update

update: function()

Construct a request updating modified features.

Parameters

features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, the same object will be passed to the callback function passed if one exists in the options object.

+ +

delete

"delete": function()

Construct a request deleting a removed feature.

Parameters

feature{OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, the same object will be passed to the callback function passed if one exists in the options object.

+ +

commit

commit: function()

Go over the features and for each take action based on the feature state.  Possible actions are create, update and delete.

Parameters

features{Array({OpenLayers.Feature.Vector})}
options{Object} Object whose possible keys are “create”, “update”, “delete”, “callback” and “scope”, the values referenced by the first three are objects as passed to the “create”, “update”, and “delete” methods, the value referenced by the “callback” key is a function which is called when the commit operation is complete using the scope referenced by the “scope” key.

Returns

{Array({OpenLayers.Protocol.Response})} An array of OpenLayers.Protocol.Response objects.

+ +

OpenLayers.Protocol.Response

Protocols return Response objects to their users.

+ +

Constructor

+ +

OpenLayers.Protocol.Response

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +
+ + + + + + + + + + +
destroy: function()
Clean up the protocol.
read: function()
Construct a request for reading new features.
create: function()
Construct a request for writing newly created features.
update: function()
Construct a request updating modified features.
"delete": function()
Construct a request deleting a removed feature.
commit: function()
Go over the features and for each take action based on the feature state.
Protocols return Response objects to their users.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Protocol/HTTP-js.html b/openlayers/doc/apidocs/files/OpenLayers/Protocol/HTTP-js.html new file mode 100644 index 0000000..1750f6a --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Protocol/HTTP-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Protocol.HTTP - OpenLayers + + + + + + + + + +

OpenLayers.Protocol.HTTP

A basic HTTP protocol for vector layers.  Create a new instance with the OpenLayers.Protocol.HTTP constructor.

Inherits from

Summary
OpenLayers.Protocol.HTTPA basic HTTP protocol for vector layers.
Constructor
OpenLayers.Protocol.HTTPA class for giving layers generic HTTP protocol.
Functions
destroyClean up the protocol.
readConstruct a request for reading new features.
createConstruct a request for writing newly created features.
updateConstruct a request updating modified feature.
deleteConstruct a request deleting a removed feature.
commitIterate over each feature and take action based on the feature state.
abortAbort an ongoing request, the response object passed to this method must come from this HTTP protocol (as a result of a create, read, update, delete or commit operation).
+ +

Constructor

+ +

OpenLayers.Protocol.HTTP

A class for giving layers generic HTTP protocol.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Valid options include

url{String}
headers{Object}
params{Object}
format{OpenLayers.Format}
callback{Function}
scope{Object}
+ +

Functions

+ +

destroy

destroy: function()

Clean up the protocol.

+ +

read

read: function(options)

Construct a request for reading new features.

Parameters

options{Object} Optional object for configuring the request.  This object is modified and should not be reused.

Valid options

url{String} Url for the request.
params{Object} Parameters to get serialized as a query string.
headers{Object} Headers to be set on the request.
filter{<OpenLayers.Filter.BBOX>} If a bbox filter is sent, it will be serialized according to the OpenSearch Geo extension (bbox=minx,miny,maxx,maxy).  Note that a BBOX filter as the child of a logical filter will not be serialized.
readWithPOST{Boolean} If the request should be done with POST.

Returns

{OpenLayers.Protocol.Response} A response object, whose “priv” property references the HTTP request, this object is also passed to the callback function when the request completes, its “features” property is then populated with the the features received from the server.

+ +

create

create: function(features,
options)

Construct a request for writing newly created features.

Parameters

features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.  This object is modified and should not be reused.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, whose “priv” property references the HTTP request, this object is also passed to the callback function when the request completes, its “features” property is then populated with the the features received from the server.

+ +

update

update: function(feature,
options)

Construct a request updating modified feature.

Parameters

feature{OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.  This object is modified and should not be reused.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, whose “priv” property references the HTTP request, this object is also passed to the callback function when the request completes, its “features” property is then populated with the the feature received from the server.

+ +

delete

"delete": function(feature,
options)

Construct a request deleting a removed feature.

Parameters

feature{OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.  This object is modified and should not be reused.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, whose “priv” property references the HTTP request, this object is also passed to the callback function when the request completes.

+ +

commit

commit: function(features,
options)

Iterate over each feature and take action based on the feature state.  Possible actions are create, update and delete.

Parameters

features{Array({OpenLayers.Feature.Vector})}
options{Object} Optional object for setting up intermediate commit callbacks.

Valid options

create{Object} Optional object to be passed to the create method.
update{Object} Optional object to be passed to the update method.
delete{Object} Optional object to be passed to the delete method.
callback{Function} Optional function to be called when the commit is complete.
scope{Object} Optional object to be set as the scope of the callback.

Returns

{Array(OpenLayers.Protocol.Response)} An array of response objects, one per request made to the server, each object’s “priv” property references the corresponding HTTP request.

+ +

abort

abort: function(response)

Abort an ongoing request, the response object passed to this method must come from this HTTP protocol (as a result of a create, read, update, delete or commit operation).

Parameters

response{OpenLayers.Protocol.Response}
+ +
+ + + + + + + + + + +
destroy: function()
Clean up the protocol.
read: function(options)
Construct a request for reading new features.
create: function(features,
options)
Construct a request for writing newly created features.
update: function(feature,
options)
Construct a request updating modified feature.
"delete": function(feature,
options)
Construct a request deleting a removed feature.
commit: function(features,
options)
Iterate over each feature and take action based on the feature state.
abort: function(response)
Abort an ongoing request, the response object passed to this method must come from this HTTP protocol (as a result of a create, read, update, delete or commit operation).
A class for giving layers generic HTTP protocol.
Abstract vector layer protocol class.
Base class for format reading/writing a variety of formats.
Protocols return Response objects to their users.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Protocol/SQL-js.html b/openlayers/doc/apidocs/files/OpenLayers/Protocol/SQL-js.html new file mode 100644 index 0000000..0f7bb36 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Protocol/SQL-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Protocol.SQL - OpenLayers + + + + + + + + + +

OpenLayers.Protocol.SQL

Abstract SQL protocol class.  Not to be instantiated directly.  Use one of the SQL protocol subclasses instead.

Inherits from

Summary
OpenLayers.Protocol.SQLAbstract SQL protocol class.
Properties
databaseName{String}
tableNameName of the database table into which Features should be saved.
Constructor
OpenLayers.Protocol.SQL
Functions
destroyClean up the protocol.
supportedThis should be overridden by specific subclasses
+ +

Properties

+ +

databaseName

{String}

+ +

tableName

Name of the database table into which Features should be saved.

+ +

Constructor

+ +

OpenLayers.Protocol.SQL

+ +

Functions

+ +

destroy

destroy: function()

Clean up the protocol.

+ +

supported

supported: function()

This should be overridden by specific subclasses

Returns

{Boolean} Whether or not the browser supports the SQL backend

+ +
+ + + + + + + + + + +
destroy: function()
Clean up the protocol.
supported: function()
This should be overridden by specific subclasses
Abstract vector layer protocol class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Protocol/SQL/Gears-js.html b/openlayers/doc/apidocs/files/OpenLayers/Protocol/SQL/Gears-js.html new file mode 100644 index 0000000..9631edb --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Protocol/SQL/Gears-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Protocol.SQL.Gears - OpenLayers + + + + + + + + + +

OpenLayers.Protocol.SQL.Gears

This Protocol stores feature in the browser via the Gears Database module http://code.google.com/apis/gears/api_database.html.

The main advantage is that all the read, create, update and delete operations can be done offline.

Inherits from

Summary
OpenLayers.Protocol.SQL.GearsThis Protocol stores feature in the browser via the Gears Database module http://code.google.com/apis/gears/api_database.html.
Constructor
OpenLayers.Protocol.SQL.Gears
Functions
destroyClean up the protocol.
supportedDetermine whether a browser supports Gears
readRead all features from the database and return a OpenLayers.Protocol.Response instance.
createCreate new features into the database.
updateConstruct a request updating modified feature.
deleteDelete features from the database.
commitGo over the features and for each take action based on the feature state.
+ +

Constructor

+ +

OpenLayers.Protocol.SQL.Gears

+ +

Functions

+ +

destroy

destroy: function()

Clean up the protocol.

+ +

supported

supported: function()

Determine whether a browser supports Gears

Returns

{Boolean} The browser supports Gears

+ +

read

read: function(options)

Read all features from the database and return a OpenLayers.Protocol.Response instance.  If the options parameter contains a callback attribute, the function is called with the response as a parameter.

Parameters

options{Object} Optional object for configuring the request; it can have the {Boolean} property “noFeatureStateReset” which specifies if the state of features read from the Gears database must be reset to null, if “noFeatureStateReset” is undefined or false then each feature’s state is reset to null, if “noFeatureStateReset” is true the feature state is preserved.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object.

+ +

create

create: function(features,
options)

Create new features into the database.

Parameters

features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features to create in the database.
options{Object} Optional object for configuring the request.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object.

+ +

update

update: function(features,
options)

Construct a request updating modified feature.

Parameters

features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features to update in the database.
options{Object} Optional object for configuring the request.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object.

+ +

delete

"delete": function(features,
options)

Delete features from the database.

Parameters

features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.  This object is modified and should not be reused.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object.

+ +

commit

commit: function(features,
options)

Go over the features and for each take action based on the feature state.  Possible actions are create, update and delete.

Parameters

features{Array({OpenLayers.Feature.Vector})}
options{Object} Object whose possible keys are “create”, “update”, “delete”, “callback” and “scope”, the values referenced by the first three are objects as passed to the “create”, “update”, and “delete” methods, the value referenced by the “callback” key is a function which is called when the commit operation is complete using the scope referenced by the “scope” key.

Returns

{Array({OpenLayers.Protocol.Response})} An array of OpenLayers.Protocol.Response objects, one per request made to the database.

+ +
+ + + + + + + + + + +
destroy: function()
Clean up the protocol.
supported: function()
Determine whether a browser supports Gears
read: function(options)
Read all features from the database and return a OpenLayers.Protocol.Response instance.
Protocols return Response objects to their users.
create: function(features,
options)
Create new features into the database.
update: function(features,
options)
Construct a request updating modified feature.
"delete": function(features,
options)
Delete features from the database.
commit: function(features,
options)
Go over the features and for each take action based on the feature state.
Abstract SQL protocol class.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS-js.html b/openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS-js.html new file mode 100644 index 0000000..ed97764 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Protocol.WFS.DEFAULTS - OpenLayers + + + + + + + + + +

OpenLayers.Protocol.WFS.DEFAULTS

+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS/v1-js.html b/openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS/v1-js.html new file mode 100644 index 0000000..120d19f --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS/v1-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Protocol.WFS.v1 - OpenLayers + + + + + + + + + +

OpenLayers.Protocol.WFS.v1

Abstract class for for v1.0.0 and v1.1.0 protocol.

Inherits from

Summary
OpenLayers.Protocol.WFS.v1Abstract class for for v1.0.0 and v1.1.0 protocol.
Constructor
OpenLayers.Protocol.WFSA class for giving layers WFS protocol.
Functions
destroyClean up the protocol.
+ +

Constructor

+ +

OpenLayers.Protocol.WFS

A class for giving layers WFS protocol.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Valid options properties

url{String} URL to send requests to (required).
featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (required, but can be autodetected for reading if featurePrefix is provided and identical to the prefix in the server response).
featurePrefix{String} Feature namespace alias (optional - only used for writing if featureNS is provided).  Default is ‘feature’.
geometryName{String} Name of geometry attribute.  Default is ‘the_geom’.
+ +

Functions

+ +

destroy

destroy: function()

Clean up the protocol.

+ +
+ + + + + + + + + + +
destroy: function()
Clean up the protocol.
Abstract vector layer protocol class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS/v1_0_0-js.html b/openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS/v1_0_0-js.html new file mode 100644 index 0000000..e7c700f --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS/v1_0_0-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Protocol.WFS.v1_0_0 - OpenLayers + + + + + + + + + +

OpenLayers.Protocol.WFS.v1_0_0

A WFS v1.0.0 protocol for vector layers.  Create a new instance with the OpenLayers.Protocol.WFS.v1_0_0 constructor.

Inherits from

Summary
OpenLayers.Protocol.WFS.v1_0_0A WFS v1.0.0 protocol for vector layers.
Constructor
OpenLayers.Protocol.WFS.v1_0_0A class for giving layers WFS v1.0.0 protocol.
+ +

Constructor

+ +

OpenLayers.Protocol.WFS.v1_0_0

A class for giving layers WFS v1.0.0 protocol.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Valid options properties

featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (optional).
featurePrefix{String} Feature namespace alias (optional - only used if featureNS is provided).  Default is ‘feature’.
geometryName{String} Name of geometry attribute.  Default is ‘the_geom’.
+ +
+ + + + + + + + + + +
A class for giving layers WFS v1.0.0 protocol.
Abstract class for for v1.0.0 and v1.1.0 protocol.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS/v1_1_0-js.html b/openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS/v1_1_0-js.html new file mode 100644 index 0000000..3ac0c80 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Protocol/WFS/v1_1_0-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Protocol.WFS.v1_1_0 - OpenLayers + + + + + + + + + +

OpenLayers.Protocol.WFS.v1_1_0

A WFS v1.1.0 protocol for vector layers.  Create a new instance with the OpenLayers.Protocol.WFS.v1_1_0 constructor.

Differences from the v1.0.0 protocol

  • uses Filter Encoding 1.1.0 instead of 1.0.0
  • uses GML 3 instead of 2 if no format is provided

Inherits from

Summary
OpenLayers.Protocol.WFS.v1_1_0A WFS v1.1.0 protocol for vector layers.
Constructor
OpenLayers.Protocol.WFS.v1_1_0A class for giving layers WFS v1.1.0 protocol.
+ +

Constructor

+ +

OpenLayers.Protocol.WFS.v1_1_0

A class for giving layers WFS v1.1.0 protocol.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Valid options properties

featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (optional).
featurePrefix{String} Feature namespace alias (optional - only used if featureNS is provided).  Default is ‘feature’.
geometryName{String} Name of geometry attribute.  Default is ‘the_geom’.
+ +
+ + + + + + + + + + +
A class for giving layers WFS v1.1.0 protocol.
Abstract class for for v1.0.0 and v1.1.0 protocol.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Renderer-js.html b/openlayers/doc/apidocs/files/OpenLayers/Renderer-js.html new file mode 100644 index 0000000..71cd1bc --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Renderer-js.html @@ -0,0 +1,49 @@ + + +OpenLayers.Renderer - OpenLayers + + + + + + + + + +

OpenLayers.Renderer

This is the base class for all renderers.

This is based on a merger code written by Paul Spencer and Bertil Chapuis.  It is largely composed of virtual functions that are to be implemented in technology-specific subclasses, but there is some generic code too.

The functions that are implemented here merely deal with the maintenance of the size and extent variables, as well as the cached ‘resolution’ value.

A note to the user that all subclasses should use getResolution() instead of directly accessing this.resolution in order to correctly use the cacheing system.

Summary
OpenLayers.RendererThis is the base class for all renderers.
Constructor
OpenLayers.Renderer
Functions
destroy
supportedThis should be overridden by specific subclasses
+ +

Constructor

+ +

OpenLayers.Renderer

Parameters

containerID{String}
options{Object} options for this renderer.  See sublcasses for supported options.
+ +

Functions

+ +

destroy

destroy: function()
+ +

supported

supported: function()

This should be overridden by specific subclasses

Returns

{Boolean} Whether or not the browser supports the renderer class

+ +
+ + + + + + + + + + +
destroy: function()
supported: function()
This should be overridden by specific subclasses
Contains convenience functions for string manipulation.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Renderer/Canvas-js.html b/openlayers/doc/apidocs/files/OpenLayers/Renderer/Canvas-js.html new file mode 100644 index 0000000..6444112 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Renderer/Canvas-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Renderer.Canvas - OpenLayers + + + + + + + + + +

OpenLayers.Renderer.Canvas

A renderer based on the 2D ‘canvas’ drawing element.element

Inherits

Summary
OpenLayers.Renderer.CanvasA renderer based on the 2D ‘canvas’ drawing element.element
Constructor
OpenLayers.Renderer.Canvas
Functions
supported{Boolean} Whether or not the browser supports the renderer class
Constants
OpenLayers.Renderer.Canvas.LABEL_ALIGN{Object}
+ +

Constructor

+ +

OpenLayers.Renderer.Canvas

Parameters

containerID{String}
+ +

Functions

+ +

supported

supported: function()

Returns

{Boolean} Whether or not the browser supports the renderer class

+ +

Constants

+ +

OpenLayers.Renderer.Canvas.LABEL_ALIGN

{Object}

+ +
+ + + + + + + + + + +
supported: function()
{Boolean} Whether or not the browser supports the renderer class
This is the base class for all renderers.
Contains convenience functions for string manipulation.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Renderer/Elements-js.html b/openlayers/doc/apidocs/files/OpenLayers/Renderer/Elements-js.html new file mode 100644 index 0000000..76b2e63 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Renderer/Elements-js.html @@ -0,0 +1,79 @@ + + +OpenLayers.ElementsIndexer - OpenLayers + + + + + + + + + +

OpenLayers.ElementsIndexer

This class takes care of figuring out which order elements should be placed in the DOM based on given indexing methods.

Summary
OpenLayers.ElementsIndexerThis class takes care of figuring out which order elements should be placed in the DOM based on given indexing methods.
Functions
initializeCreate a new indexer with
insertInsert a new node into the indexer.
remove
clear
existsnode- {DOMElement} The node to test for existence.
getZIndexGet the z-index value for the current node from the node data itself.
getNextElementGet the next element in the order stack.
OpenLayers.ElementsIndexer.IndexingMethodsThese are the compare methods for figuring out where a new node should be placed within the indexer.
Functions
Z_ORDER_DRAWING_ORDERThis method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the newest drawn will be the front most within that z-index.
Z_ORDER_Y_ORDERThis one should really be called Z_ORDER_Y_ORDER_DRAWING_ORDER, as it best describes which ordering methods have precedence (though, the name would be too long).
OpenLayers.Renderer.ElementsThis is another virtual class in that it should never be instantiated by itself as a Renderer.
Constants
BACKGROUND_ID_SUFFIX{String}
BACKGROUND_ID_SUFFIX{String}
Constructor
OpenLayers.Renderer.Elements
Constants
OpenLayers.Renderer.symbolCoordinate arrays for well known (named) symbols.
+ +

Functions

+ +

initialize

initialize: function(yOrdering)

Create a new indexer with

Parameters

yOrdering{Boolean} Whether to use y-ordering.
+ +

insert

insert: function(newNode)

Insert a new node into the indexer.  In order to find the correct positioning for the node to be inserted, this method uses a binary search.  This makes inserting O(log(n)).

Parameters

newNode{DOMElement} The new node to be inserted.

Returns {DOMElement} the node before which we should insert our newNode, or null if newNode can just be appended.

+ +

remove

remove: function(node)

Parameters

node{DOMElement} The node to be removed.
+ +

clear

clear: function()
+ +

exists

exists: function(node)

Parameters

node- {DOMElement} The node to test for existence.

Returns

{Boolean} Whether or not the node exists in the indexer?

+ +

getZIndex

getZIndex: function(node)

Get the z-index value for the current node from the node data itself.

Parameters

node{DOMElement} The node whose z-index to get.

Returns

{Integer} The z-index value for the specified node (from the node data itself).

+ +

getNextElement

getNextElement: function(index)

Get the next element in the order stack.

Parameters

index{Integer} The index of the current node in this.order.

Returns

{DOMElement} the node following the index passed in, or null.

+ +

OpenLayers.ElementsIndexer.IndexingMethods

These are the compare methods for figuring out where a new node should be placed within the indexer.  These methods are very similar to general sorting methods in that they return -1, 0, and 1 to specify the direction in which new nodes fall in the ordering.

Summary
Functions
Z_ORDER_DRAWING_ORDERThis method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the newest drawn will be the front most within that z-index.
Z_ORDER_Y_ORDERThis one should really be called Z_ORDER_Y_ORDER_DRAWING_ORDER, as it best describes which ordering methods have precedence (though, the name would be too long).
+ +

Functions

+ +

Z_ORDER_DRAWING_ORDER

Z_ORDER_DRAWING_ORDER: function(indexer,
newNode,
nextNode)

This method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the newest drawn will be the front most within that z-index.  This is the default indexing method.

Parameters

indexer{OpenLayers.ElementsIndexer}
newNode{DOMElement}
nextNode{DOMElement}

Returns

{Integer}

+ +

Z_ORDER_Y_ORDER

Z_ORDER_Y_ORDER: function(indexer,
newNode,
nextNode)

This one should really be called Z_ORDER_Y_ORDER_DRAWING_ORDER, as it best describes which ordering methods have precedence (though, the name would be too long).  This method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the nodes with the lower y position will be “closer” than those with a higher y position.  If two nodes have the exact same y position, however, then this method will revert to using drawing order to decide placement.

Parameters

indexer{OpenLayers.ElementsIndexer}
newNode{DOMElement}
nextNode{DOMElement}

Returns

{Integer}

+ +

OpenLayers.Renderer.Elements

This is another virtual class in that it should never be instantiated by itself as a Renderer.  It exists because there is tons of shared functionality between different vector libraries which use nodes/elements as a base for rendering vectors.

The highlevel bits of code that are implemented here are the adding and removing of geometries, which is essentially the same for any element-based renderer.  The details of creating each node and drawing the paths are of course different, but the machinery is the same.

Inherits

+ +

Constants

+ +

BACKGROUND_ID_SUFFIX

{String}

+ +

BACKGROUND_ID_SUFFIX

{String}

+ +

Constructor

+ +

OpenLayers.Renderer.Elements

Parameters

containerID{String}
options{Object} options for this renderer.  Supported options are:
  • yOrdering - {Boolean} Whether to use y-ordering
  • zIndexing - {Boolean} Whether to use z-indexing.  Will be ignored if yOrdering is set to true.
+ +

Constants

+ +

OpenLayers.Renderer.symbol

Coordinate arrays for well known (named) symbols.

+ +
+ + + + + + + + + + +
initialize: function(yOrdering)
Create a new indexer with
insert: function(newNode)
Insert a new node into the indexer.
remove: function(node)
clear: function()
exists: function(node)
node- {DOMElement} The node to test for existence.
getZIndex: function(node)
Get the z-index value for the current node from the node data itself.
getNextElement: function(index)
Get the next element in the order stack.
Z_ORDER_DRAWING_ORDER: function(indexer,
newNode,
nextNode)
This method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the newest drawn will be the front most within that z-index.
Z_ORDER_Y_ORDER: function(indexer,
newNode,
nextNode)
This one should really be called Z_ORDER_Y_ORDER_DRAWING_ORDER, as it best describes which ordering methods have precedence (though, the name would be too long).
This class takes care of figuring out which order elements should be placed in the DOM based on given indexing methods.
This is the base class for all renderers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Renderer/SVG-js.html b/openlayers/doc/apidocs/files/OpenLayers/Renderer/SVG-js.html new file mode 100644 index 0000000..a984dbb --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Renderer/SVG-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Renderer.SVG - OpenLayers + + + + + + + + + +

OpenLayers.Renderer.SVG

Inherits

Summary
OpenLayers.Renderer.SVG
Constants
MAX_PIXEL{Integer} Firefox has a limitation where values larger or smaller than about 15000 in an SVG document lock the browser up.
Constructor
OpenLayers.Renderer.SVG
Functions
destroy
supported{Boolean} Whether or not the browser supports the SVG renderer
Constants
OpenLayers.Renderer.SVG.LABEL_ALIGN{Object}
OpenLayers.Renderer.SVG.LABEL_VSHIFT{Object}
+ +

Constants

+ +

MAX_PIXEL

{Integer} Firefox has a limitation where values larger or smaller than about 15000 in an SVG document lock the browser up.  This works around it.

+ +

Constructor

+ +

OpenLayers.Renderer.SVG

Parameters

containerID{String}
+ +

Functions

+ +

destroy

destroy: function()
+ +

supported

supported: function()

Returns

{Boolean} Whether or not the browser supports the SVG renderer

+ +

Constants

+ +

OpenLayers.Renderer.SVG.LABEL_ALIGN

{Object}

+ +

OpenLayers.Renderer.SVG.LABEL_VSHIFT

{Object}

+ +
+ + + + + + + + + + +
destroy: function()
supported: function()
{Boolean} Whether or not the browser supports the SVG renderer
This is another virtual class in that it should never be instantiated by itself as a Renderer.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Renderer/VML-js.html b/openlayers/doc/apidocs/files/OpenLayers/Renderer/VML-js.html new file mode 100644 index 0000000..123424f --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Renderer/VML-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Renderer.VML - OpenLayers + + + + + + + + + +

OpenLayers.Renderer.VML

Render vector features in browsers with VML capability.  Construct a new VML renderer with the OpenLayers.Renderer.VML constructor.

Note that for all calculations in this class, we use toFixed() to round a float value to an integer.  This is done because it seems that VML doesn’t support float values.

Inherits from

Summary
OpenLayers.Renderer.VMLRender vector features in browsers with VML capability.
Constructor
OpenLayers.Renderer.VMLCreate a new VML renderer.
Functions
destroyDeconstruct the renderer.
supportedDetermine whether a browser supports this renderer.
Constants
OpenLayers.Renderer.VML.LABEL_SHIFT{Object}
+ +

Constructor

+ +

OpenLayers.Renderer.VML

Create a new VML renderer.

Parameters

containerID{String} The id for the element that contains the renderer
+ +

Functions

+ +

destroy

destroy: function()

Deconstruct the renderer.

+ +

supported

supported: function()

Determine whether a browser supports this renderer.

Returns

{Boolean} The browser supports the VML renderer

+ +

Constants

+ +

OpenLayers.Renderer.VML.LABEL_SHIFT

{Object}

+ +
+ + + + + + + + + + +
destroy: function()
Deconstruct the renderer.
supported: function()
Determine whether a browser supports this renderer.
Create a new VML renderer.
This is another virtual class in that it should never be instantiated by itself as a Renderer.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Request-js.html b/openlayers/doc/apidocs/files/OpenLayers/Request-js.html new file mode 100644 index 0000000..e3b778d --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Request-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Request - OpenLayers + + + + + + + + + +

OpenLayers.Request

The OpenLayers.Request namespace contains convenience methods for working with XMLHttpRequests.  These methods work with a cross-browser W3C compliant OpenLayers.Request.XMLHttpRequest class.

Summary
OpenLayers.RequestThe OpenLayers.Request namespace contains convenience methods for working with XMLHttpRequests.
Constants
DEFAULT_CONFIG{Object} Default configuration for all requests.
Properties
events{OpenLayers.Events} An events object that handles all events on the {OpenLayers.Request} object.
Functions
issueCreate a new XMLHttpRequest object, open it, set any headers, bind a callback to done state, and send any data.
GETSend an HTTP GET request.
POSTSend a POST request.
PUTSend an HTTP PUT request.
DELETESend an HTTP DELETE request.
HEADSend an HTTP HEAD request.
OPTIONSSend an HTTP OPTIONS request.
+ +

Constants

+ +

DEFAULT_CONFIG

{Object} Default configuration for all requests.

+ +

Properties

+ +

events

{OpenLayers.Events} An events object that handles all events on the {OpenLayers.Request} object.

All event listeners will receive an event object with three properties

request{OpenLayers.Request.XMLHttpRequest} The request object.
config{Object} The config object sent to the specific request method.
requestUrl{String} The request url.

Supported event types

completeTriggered when we have a response from the request, if a listener returns false, no further response processing will take place.
successTriggered when the HTTP response has a success code (200-299).
failureTriggered when the HTTP response does not have a success code.
+ +

Functions

+ +

issue

issue: function(config)

Create a new XMLHttpRequest object, open it, set any headers, bind a callback to done state, and send any data.  It is recommended that you use one GET, POST, PUT, DELETE, OPTIONS, or HEAD.  This method is only documented to provide detail on the configuration options available to all request methods.

Parameters

config{Object} Object containing properties for configuring the request.  Allowed configuration properties are described below.  This object is modified and should not be reused.

Allowed config properties

method{String} One of GET, POST, PUT, DELETE, HEAD, or OPTIONS.  Default is GET.
url{String} URL for the request.
async{Boolean} Open an asynchronous request.  Default is true.
user{String} User for relevant authentication scheme.  Set to null to clear current user.
password{String} Password for relevant authentication scheme.  Set to null to clear current password.
proxy{String} Optional proxy.  Defaults to <OpenLayers.ProxyHost>.
params{Object} Any key:value pairs to be appended to the url as a query string.  Assumes url doesn’t already include a query string or hash.  Typically, this is only appropriate for GET requests where the query string will be appended to the url.  Parameter values that are arrays will be concatenated with a comma (note that this goes against form-encoding) as is done with <OpenLayers.Util.getParameterString>.
headers{Object} Object with header:value pairs to be set on the request.
data{String | Document} Optional data to send with the request.  Typically, this is only used with POST and PUT requests.  Make sure to provide the appropriate “Content-Type” header for your data.  For POST and PUT requests, the content type defaults to “application-xml”.  If your data is a different content type, or if you are using a different HTTP method, set the “Content-Type” header to match your data type.
callback{Function} Function to call when request is done.  To determine if the request failed, check request.status (200 indicates success).
success{Function} Optional function to call if request status is in the 200s.  This will be called in addition to callback above and would typically only be used as an alternative.
failure{Function} Optional function to call if request status is not in the 200s.  This will be called in addition to callback above and would typically only be used as an alternative.
scope{Object} If callback is a public method on some object, set the scope to that object.

Returns

{XMLHttpRequest} Request object.  To abort the request before a response is received, call abort() on the request object.

+ +

GET

GET: function(config)

Send an HTTP GET request.  Additional configuration properties are documented in the issue method, with the method property set to GET.

Parameters

config{Object} Object with properties for configuring the request.  See the issue method for documentation of allowed properties.  This object is modified and should not be reused.

Returns

{XMLHttpRequest} Request object.

+ +

POST

POST: function(config)

Send a POST request.  Additional configuration properties are documented in the issue method, with the method property set to POST and “Content-Type” header set to “application/xml”.

Parameters

config{Object} Object with properties for configuring the request.  See the issue method for documentation of allowed properties.  The default “Content-Type” header will be set to “application-xml” if none is provided.  This object is modified and should not be reused.

Returns

{XMLHttpRequest} Request object.

+ +

PUT

PUT: function(config)

Send an HTTP PUT request.  Additional configuration properties are documented in the issue method, with the method property set to PUT and “Content-Type” header set to “application/xml”.

Parameters

config{Object} Object with properties for configuring the request.  See the issue method for documentation of allowed properties.  The default “Content-Type” header will be set to “application-xml” if none is provided.  This object is modified and should not be reused.

Returns

{XMLHttpRequest} Request object.

+ +

DELETE

DELETE: function(config)

Send an HTTP DELETE request.  Additional configuration properties are documented in the issue method, with the method property set to DELETE.

Parameters

config{Object} Object with properties for configuring the request.  See the issue method for documentation of allowed properties.  This object is modified and should not be reused.

Returns

{XMLHttpRequest} Request object.

+ +

HEAD

HEAD: function(config)

Send an HTTP HEAD request.  Additional configuration properties are documented in the issue method, with the method property set to HEAD.

Parameters

config{Object} Object with properties for configuring the request.  See the issue method for documentation of allowed properties.  This object is modified and should not be reused.

Returns

{XMLHttpRequest} Request object.

+ +

OPTIONS

OPTIONS: function(config)

Send an HTTP OPTIONS request.  Additional configuration properties are documented in the issue method, with the method property set to OPTIONS.

Parameters

config{Object} Object with properties for configuring the request.  See the issue method for documentation of allowed properties.  This object is modified and should not be reused.

Returns

{XMLHttpRequest} Request object.

+ +
+ + + + + + + + + + +
The OpenLayers.Request namespace contains convenience methods for working with XMLHttpRequests.
issue: function(config)
Create a new XMLHttpRequest object, open it, set any headers, bind a callback to done state, and send any data.
GET: function(config)
Send an HTTP GET request.
POST: function(config)
Send a POST request.
PUT: function(config)
Send an HTTP PUT request.
DELETE: function(config)
Send an HTTP DELETE request.
HEAD: function(config)
Send an HTTP HEAD request.
OPTIONS: function(config)
Send an HTTP OPTIONS request.
Standard-compliant (W3C) cross-browser implementation of the XMLHttpRequest object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Request/XMLHttpRequest-js.html b/openlayers/doc/apidocs/files/OpenLayers/Request/XMLHttpRequest-js.html new file mode 100644 index 0000000..2b06a61 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Request/XMLHttpRequest-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Request.XMLHttpRequest - OpenLayers + + + + + + + + + +

OpenLayers.Request.XMLHttpRequest

Standard-compliant (W3C) cross-browser implementation of the XMLHttpRequest object.  From http://code.google.com/p/xmlhttprequest/.

+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Rule-js.html b/openlayers/doc/apidocs/files/OpenLayers/Rule-js.html new file mode 100644 index 0000000..134951a --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Rule-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Rule - OpenLayers + + + + + + + + + +

OpenLayers.Rule

This class represents an SLD Rule, as being used for rule-based SLD styling.

Summary
OpenLayers.RuleThis class represents an SLD Rule, as being used for rule-based SLD styling.
Properties
name{String} name of this rule
minScaleDenominator{Number} or {String} minimum scale at which to draw the feature.
maxScaleDenominator{Number} or {String} maximum scale at which to draw the feature.
Constructor
OpenLayers.RuleCreates a Rule.
Functions
destroynullify references to prevent circular references and memory leaks
evaluateevaluates this rule for a specific feature
cloneClones this rule.
+ +

Properties

+ +

name

{String} name of this rule

+ +

minScaleDenominator

{Number} or {String} minimum scale at which to draw the feature.  In the case of a String, this can be a combination of text and propertyNames in the form “literal ${propertyName}”

+ +

maxScaleDenominator

{Number} or {String} maximum scale at which to draw the feature.  In the case of a String, this can be a combination of text and propertyNames in the form “literal ${propertyName}”

+ +

Constructor

+ +

OpenLayers.Rule

Creates a Rule.

Parameters

options{Object} An optional object with properties to set on the rule

Returns

{OpenLayers.Rule}

+ +

Functions

+ +

destroy

destroy: function()

nullify references to prevent circular references and memory leaks

+ +

evaluate

evaluate: function(feature)

evaluates this rule for a specific feature

Parameters

feature{OpenLayers.Feature} feature to apply the rule to.

Returns

{Boolean} true if the rule applies, false if it does not.  This rule is the default rule and always returns true.

+ +

clone

clone: function()

Clones this rule.

Returns

{OpenLayers.Rule} Clone of this rule.

+ +
+ + + + + + + + + + +
destroy: function()
nullify references to prevent circular references and memory leaks
evaluate: function(feature)
evaluates this rule for a specific feature
clone: function()
Clones this rule.
Creates a Rule.
Features are combinations of geography and attributes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Strategy-js.html b/openlayers/doc/apidocs/files/OpenLayers/Strategy-js.html new file mode 100644 index 0000000..57e0dca --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Strategy-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Strategy - OpenLayers + + + + + + + + + +

OpenLayers.Strategy

Abstract vector layer strategy class.  Not to be instantiated directly.  Use one of the strategy subclasses instead.

Summary
OpenLayers.StrategyAbstract vector layer strategy class.
Constructor
OpenLayers.StrategyAbstract class for vector strategies.
Functions
destroyClean up the strategy.
+ +

Constructor

+ +

OpenLayers.Strategy

Abstract class for vector strategies.  Create instances of a subclass.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

destroy

destroy: function()

Clean up the strategy.

+ +
+ + + + + + + + + + +
destroy: function()
Clean up the strategy.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Strategy/BBOX-js.html b/openlayers/doc/apidocs/files/OpenLayers/Strategy/BBOX-js.html new file mode 100644 index 0000000..71972e5 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Strategy/BBOX-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Strategy.BBOX - OpenLayers + + + + + + + + + +

OpenLayers.Strategy.BBOX

A simple strategy that reads new features when the viewport invalidates some bounds.

Inherits from

Summary
OpenLayers.Strategy.BBOXA simple strategy that reads new features when the viewport invalidates some bounds.
Properties
ratio{Float} The ratio of the data bounds to the viewport bounds (in each dimension).
Constructor
OpenLayers.Strategy.BBOXCreate a new BBOX strategy.
+ +

Properties

+ +

ratio

{Float} The ratio of the data bounds to the viewport bounds (in each dimension).  Default is 2.

+ +

Constructor

+ +

OpenLayers.Strategy.BBOX

Create a new BBOX strategy.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +
+ + + + + + + + + + +
Abstract vector layer strategy class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Strategy/Cluster-js.html b/openlayers/doc/apidocs/files/OpenLayers/Strategy/Cluster-js.html new file mode 100644 index 0000000..e92f410 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Strategy/Cluster-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Strategy.Cluster - OpenLayers + + + + + + + + + +

OpenLayers.Strategy.Cluster

Strategy for vector feature clustering.

Inherits from

Summary
OpenLayers.Strategy.ClusterStrategy for vector feature clustering.
Properties
distance{Integer} Pixel distance between features that should be considered a single cluster.
threshold{Integer} Optional threshold below which original features will be added to the layer instead of clusters.
Constructor
OpenLayers.Strategy.ClusterCreate a new clustering strategy.
Functions
activateActivate the strategy.
deactivateDeactivate the strategy.
+ +

Properties

+ +

distance

{Integer} Pixel distance between features that should be considered a single cluster.  Default is 20 pixels.

+ +

threshold

{Integer} Optional threshold below which original features will be added to the layer instead of clusters.  For example, a threshold of 3 would mean that any time there are 2 or fewer features in a cluster, those features will be added directly to the layer instead of a cluster representing those features.  Default is null (which is equivalent to 1 - meaning that clusters may contain just one feature).

+ +

Constructor

+ +

OpenLayers.Strategy.Cluster

Create a new clustering strategy.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

activate

activate: function()

Activate the strategy.  Register any listeners, do appropriate setup.

Returns

{Boolean} The strategy was successfully activated.

+ +

deactivate

deactivate: function()

Deactivate the strategy.  Unregister any listeners, do appropriate tear-down.

Returns

{Boolean} The strategy was successfully deactivated.

+ +
+ + + + + + + + + + +
activate: function()
Activate the strategy.
deactivate: function()
Deactivate the strategy.
Abstract vector layer strategy class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Strategy/Fixed-js.html b/openlayers/doc/apidocs/files/OpenLayers/Strategy/Fixed-js.html new file mode 100644 index 0000000..7b72d89 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Strategy/Fixed-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Strategy.Fixed - OpenLayers + + + + + + + + + +

OpenLayers.Strategy.Fixed

A simple strategy that requests features once and never requests new data.

Inherits from

Summary
OpenLayers.Strategy.FixedA simple strategy that requests features once and never requests new data.
Properties
preload{Boolean} Load data before layer made visible.
Constructor
OpenLayers.Strategy.FixedCreate a new Fixed strategy.
Functions
destroyClean up the strategy.
+ +

Properties

+ +

preload

{Boolean} Load data before layer made visible.  Enabling this may result in considerable overhead if your application loads many data layers that are not visible by default.  Default is true.

+ +

Constructor

+ +

OpenLayers.Strategy.Fixed

Create a new Fixed strategy.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

destroy

destroy: function()

Clean up the strategy.

+ +
+ + + + + + + + + + +
destroy: function()
Clean up the strategy.
Abstract vector layer strategy class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Strategy/Paging-js.html b/openlayers/doc/apidocs/files/OpenLayers/Strategy/Paging-js.html new file mode 100644 index 0000000..ed78c36 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Strategy/Paging-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Strategy.Paging - OpenLayers + + + + + + + + + +

OpenLayers.Strategy.Paging

Strategy for vector feature paging

Inherits from

Summary
OpenLayers.Strategy.PagingStrategy for vector feature paging
Constructor
OpenLayers.Strategy.PagingCreate a new paging strategy.
Functions
activateActivate the strategy.
deactivateDeactivate the strategy.
pageCountGet the total count of pages given the current cache of features.
pageNumGet the zero based page number.
pageLengthGets or sets page length.
pageNextDisplay the next page of features.
pagePreviousDisplay the previous page of features.
+ +

Constructor

+ +

OpenLayers.Strategy.Paging

Create a new paging strategy.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

activate

activate: function()

Activate the strategy.  Register any listeners, do appropriate setup.

Returns

{Boolean} The strategy was successfully activated.

+ +

deactivate

deactivate: function()

Deactivate the strategy.  Unregister any listeners, do appropriate tear-down.

Returns

{Boolean} The strategy was successfully deactivated.

+ +

pageCount

pageCount: function()

Get the total count of pages given the current cache of features.

Returns

{Integer} The page count.

+ +

pageNum

pageNum: function()

Get the zero based page number.

Returns

{Integer} The current page number being displayed.

+ +

pageLength

pageLength: function(newLength)

Gets or sets page length.

Parameters

newLength: {Integer} Optional length to be set.

Returns

{Integer} The length of a page (number of features per page).

+ +

pageNext

pageNext: function(event)

Display the next page of features.

Returns

{Boolean} A new page was displayed.

+ +

pagePrevious

pagePrevious: function()

Display the previous page of features.

Returns

{Boolean} A new page was displayed.

+ +
+ + + + + + + + + + +
activate: function()
Activate the strategy.
deactivate: function()
Deactivate the strategy.
pageCount: function()
Get the total count of pages given the current cache of features.
pageNum: function()
Get the zero based page number.
pageLength: function(newLength)
Gets or sets page length.
pageNext: function(event)
Display the next page of features.
pagePrevious: function()
Display the previous page of features.
Abstract vector layer strategy class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Strategy/Save-js.html b/openlayers/doc/apidocs/files/OpenLayers/Strategy/Save-js.html new file mode 100644 index 0000000..8b265f3 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Strategy/Save-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Strategy.Save - OpenLayers + + + + + + + + + +

OpenLayers.Strategy.Save

A strategy that commits newly created or modified features.  By default the strategy waits for a call to save before persisting changes.  By configuring the strategy with the auto option, changes can be saved automatically.

Inherits from

Summary
OpenLayers.Strategy.SaveA strategy that commits newly created or modified features.
Properties
auto{Boolean | Number} Auto-save.
Constructor
OpenLayers.Strategy.SaveCreate a new Save strategy.
Functions
activateActivate the strategy.
deactivateDeactivate the strategy.
saveTell the layer protocol to commit unsaved features.
+ +

Properties

+ +

auto

{Boolean | Number} Auto-save.  Default is false.  If true, features will be saved immediately after being added to the layer and with each modification or deletion.  If auto is a number, features will be saved on an interval provided by the value (in seconds).

+ +

Constructor

+ +

OpenLayers.Strategy.Save

Create a new Save strategy.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

activate

activate: function()

Activate the strategy.  Register any listeners, do appropriate setup.

Returns

{Boolean} The strategy was successfully activated.

+ +

deactivate

deactivate: function()

Deactivate the strategy.  Unregister any listeners, do appropriate tear-down.

Returns

{Boolean} The strategy was successfully deactivated.

+ +

save

save: function(features)

Tell the layer protocol to commit unsaved features.  If the layer projection differs from the map projection, features will be transformed into the layer projection before being committed.

Parameters

features{Array} Features to be saved.  If null, then default is all features in the layer.  Features are assumed to be in the map projection.
+ +
+ + + + + + + + + + +
activate: function()
Activate the strategy.
deactivate: function()
Deactivate the strategy.
save: function(features)
Tell the layer protocol to commit unsaved features.
{Boolean | Number} Auto-save.
Abstract vector layer strategy class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Style-js.html b/openlayers/doc/apidocs/files/OpenLayers/Style-js.html new file mode 100644 index 0000000..8bf9aa7 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Style-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Style - OpenLayers + + + + + + + + + +

OpenLayers.Style

This class represents a UserStyle obtained from a SLD, containing styling rules.

Summary
OpenLayers.StyleThis class represents a UserStyle obtained from a SLD, containing styling rules.
Properties
name{String}
layerName{String} name of the layer that this style belongs to, usually according to the NamedLayer attribute of an SLD document.
isDefault{Boolean}
Constructor
OpenLayers.StyleCreates a UserStyle.
Functions
destroynullify references to prevent circular references and memory leaks
addRulesAdds rules to this style.
setDefaultStyleSets the default style for this style object.
Constants
OpenLayers.Style.SYMBOLIZER_PREFIXES{Array} prefixes of the sld symbolizers.
+ +

Properties

+ +

name

{String}

+ +

layerName

{String} name of the layer that this style belongs to, usually according to the NamedLayer attribute of an SLD document.

+ +

isDefault

{Boolean}

+ +

Constructor

+ +

OpenLayers.Style

Creates a UserStyle.

Parameters

style{Object} Optional hash of style properties that will be used as default style for this style object.  This style applies if no rules are specified.  Symbolizers defined in rules will extend this default style.
options{Object} An optional object with properties to set on the style.

Valid options

rules{Array(OpenLayers.Rule)} List of rules to be added to the style.

Return

{OpenLayers.Style}

+ +

Functions

+ +

destroy

destroy: function()

nullify references to prevent circular references and memory leaks

+ +

addRules

addRules: function(rules)

Adds rules to this style.

Parameters

rules{Array(OpenLayers.Rule)}
+ +

setDefaultStyle

setDefaultStyle: function(style)

Sets the default style for this style object.

Parameters

style{Object} Hash of style properties
+ +

Constants

+ +

OpenLayers.Style.SYMBOLIZER_PREFIXES

{Array} prefixes of the sld symbolizers.  These are the same as the main geometry types

+ +
+ + + + + + + + + + +
Contains convenience functions for string manipulation.
destroy: function()
nullify references to prevent circular references and memory leaks
addRules: function(rules)
Adds rules to this style.
setDefaultStyle: function(style)
Sets the default style for this style object.
This class represents an SLD Rule, as being used for rule-based SLD styling.
Creates a UserStyle.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/StyleMap-js.html b/openlayers/doc/apidocs/files/OpenLayers/StyleMap-js.html new file mode 100644 index 0000000..c7c5c9a --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/StyleMap-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.StyleMap - OpenLayers + + + + + + + + + +
+ +

Constructor

+ +

OpenLayers.StyleMap

Parameters

style{Object} Optional.  Either a style hash, or a style object, or a hash of style objects (style hashes) keyed by rendering intent.  If just one style hash or style object is passed, this will be used for all known render intents (default, select, temporary)
options{Object} optional hash of additional options for this instance
+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Tile-js.html b/openlayers/doc/apidocs/files/OpenLayers/Tile-js.html new file mode 100644 index 0000000..e8f8518 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Tile-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Tile - OpenLayers + + + + + + + + + +

OpenLayers.Tile

This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.  Tiles store information about themselves -- such as the URL that they are related to, and their size - but do not add themselves to the layer div automatically, for example.  Create a new tile with the OpenLayers.Tile constructor, or a subclass.

TBD 3.0remove reference to url in above paragraph
Summary
OpenLayers.TileThis is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
Constants
EVENT_TYPES{Array(String)} Supported application event types
Properties
events{OpenLayers.Events} An events object that handles all events on the tile.
bounds{OpenLayers.Bounds} null
Functions
destroyNullify references to prevent circular references and memory leaks.
+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types

+ +

Properties

+ +

events

{OpenLayers.Events} An events object that handles all events on the tile.

+ +

bounds

+ +

Functions

+ +

destroy

destroy:function()

Nullify references to prevent circular references and memory leaks.

+ +
+ + + + + + + + + + +
Instances of this class represent bounding boxes.
destroy:function()
Nullify references to prevent circular references and memory leaks.
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Tile/Image-js.html b/openlayers/doc/apidocs/files/OpenLayers/Tile/Image-js.html new file mode 100644 index 0000000..4c991ec --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Tile/Image-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Tile.Image - OpenLayers + + + + + + + + + +

OpenLayers.Tile.Image

Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.  Create a new image tile with the OpenLayers.Tile.Image constructor.

Inherits from

Summary
OpenLayers.Tile.ImageInstances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
Functions
destroynullify references to prevent circular references and memory leaks
+ +

Functions

+ +

destroy

destroy: function()

nullify references to prevent circular references and memory leaks

+ +
+ + + + + + + + + + +
destroy: function()
nullify references to prevent circular references and memory leaks
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Tile/WFS-js.html b/openlayers/doc/apidocs/files/OpenLayers/Tile/WFS-js.html new file mode 100644 index 0000000..76a24f0 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Tile/WFS-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Tile.WFS - OpenLayers + + + + + + + + + +

OpenLayers.Tile.WFS

Instances of OpenLayers.Tile.WFS are used to manage the image tiles used by various layers.  Create a new image tile with the OpenLayers.Tile.WFS constructor.

Inherits from

Summary
OpenLayers.Tile.WFSInstances of OpenLayers.Tile.WFS are used to manage the image tiles used by various layers.
Functions
destroynullify references to prevent circular references and memory leaks
+ +

Functions

+ +

destroy

destroy: function()

nullify references to prevent circular references and memory leaks

+ +
+ + + + + + + + + + +
destroy: function()
nullify references to prevent circular references and memory leaks
Instances of OpenLayers.Tile.WFS are used to manage the image tiles used by various layers.
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Tween-js.html b/openlayers/doc/apidocs/files/OpenLayers/Tween-js.html new file mode 100644 index 0000000..2b592ca --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Tween-js.html @@ -0,0 +1,73 @@ + + +OpenLayers.Tween - OpenLayers + + + + + + + + + +

OpenLayers.Tween

Summary
OpenLayers.Tween
Constants
INTERVAL{int} Interval in milliseconds between 2 steps
Properties
easing{<OpenLayers.Easing>(Function)} Easing equation used for the animation Defaultly set to OpenLayers.Easing.Expo.easeOut
begin{Object} Values to start the animation with
finish{Object} Values to finish the animation with
duration{int} duration of the tween (number of steps)
callbacks{Object} An object with start, eachStep and done properties whose values are functions to be call during the animation.
Constructor
OpenLayers.TweenCreates a Tween.
Functions
startPlays the Tween, and calls the callback method on each step
stopStops the Tween, and calls the done callback Doesn’t do anything if animation is already finished
OpenLayers.EasingEasing Equations by Robert Penner, http://www.robertpenner.com/easing/
OpenLayers.Easing.Linear
OpenLayers.Easing.Expo
OpenLayers.Easing.Quad
+ +

Constants

+ +

INTERVAL

{int} Interval in milliseconds between 2 steps

+ +

Properties

+ +

easing

{<OpenLayers.Easing>(Function)} Easing equation used for the animation Defaultly set to OpenLayers.Easing.Expo.easeOut

+ +

begin

{Object} Values to start the animation with

+ +

finish

{Object} Values to finish the animation with

+ +

duration

{int} duration of the tween (number of steps)

+ +

callbacks

{Object} An object with start, eachStep and done properties whose values are functions to be call during the animation.  They are passed the current computed value as argument.

+ +

Constructor

+ +

OpenLayers.Tween

Creates a Tween.

Parameters

easing{<OpenLayers.Easing>(Function)} easing function method to use
+ +

Functions

+ +

start

start: function(begin,
finish,
duration,
options)

Plays the Tween, and calls the callback method on each step

Parameters

begin{Object} values to start the animation with
finish{Object} values to finish the animation with
duration{int} duration of the tween (number of steps)
options{Object} hash of options (for example callbacks (start, eachStep, done))
+ +

stop

stop: function()

Stops the Tween, and calls the done callback Doesn’t do anything if animation is already finished

+ +

OpenLayers.Easing

Credits

Easing Equations by Robert Penner, http://www.robertpenner.com/easing/

+ +

OpenLayers.Easing.Linear

+ +

OpenLayers.Easing.Expo

+ +

OpenLayers.Easing.Quad

+ +
+ + + + + + + + + + +
start: function(begin,
finish,
duration,
options)
Plays the Tween, and calls the callback method on each step
stop: function()
Stops the Tween, and calls the done callback Doesn’t do anything if animation is already finished
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/files/OpenLayers/Util-js.html b/openlayers/doc/apidocs/files/OpenLayers/Util-js.html new file mode 100644 index 0000000..b5ecbc4 --- /dev/null +++ b/openlayers/doc/apidocs/files/OpenLayers/Util-js.html @@ -0,0 +1,53 @@ + + +Util - OpenLayers + + + + + + + + + +

Util

Summary
Util
Functions
extendCopy all properties of a source object to a destination object.
Constants
INCHES_PER_UNIT{Object} Constant inches per unit -- borrowed from MapServer mapscale.c derivation of nautical miles from http://en.wikipedia.org/wiki/Nautical_mile Includes the full set of units supported by CS-MAP (http://trac.osgeo.org/csmap/) and PROJ.4 (http://trac.osgeo.org/proj/) The hardcoded table is maintain in a CS-MAP source code module named CSdataU.c The hardcoded table of PROJ.4 units are in pj_units.c.
DOTS_PER_INCH{Integer} 72 (A sensible default)
Functions
getScrollbarWidthThis function has been modified by the OpenLayers from the original version, written by Matthew Eernisse and released under the Apache 2 license here:
+ +

Functions

+ +

extend

OpenLayers.Util.extend = function(destination,
source)

Copy all properties of a source object to a destination object.  Modifies the passed in destination object.  Any properties on the source object that are set to undefined will not be (re)set on the destination object.

Parameters

destination{Object} The object that will be modified
source{Object} The object with properties to be set on the destination

Returns

{Object} The destination object.

+ +

Constants

+ +

INCHES_PER_UNIT

{Object} Constant inches per unit -- borrowed from MapServer mapscale.c derivation of nautical miles from http://en.wikipedia.org/wiki/Nautical_mile Includes the full set of units supported by CS-MAP (http://trac.osgeo.org/csmap/) and PROJ.4 (http://trac.osgeo.org/proj/) The hardcoded table is maintain in a CS-MAP source code module named CSdataU.c The hardcoded table of PROJ.4 units are in pj_units.c.

+ +

DOTS_PER_INCH

{Integer} 72 (A sensible default)

+ +

Functions

+ +

getScrollbarWidth

OpenLayers.Util.getScrollbarWidth = function()

This function has been modified by the OpenLayers from the original version, written by Matthew Eernisse and released under the Apache 2 license here:

http://www.fleegix.org/articles/2006/05/30/getting-the-scrollbar-width-in-pixels

It has been modified simply to cache its value, since it is physically impossible that this code could ever run in more than one browser at once.

Returns

{Integer}

+ +
+ + + + + + + + + + +
OpenLayers.Util.extend = function(destination,
source)
Copy all properties of a source object to a destination object.
OpenLayers.Util.getScrollbarWidth = function()
This function has been modified by the OpenLayers from the original version, written by Matthew Eernisse and released under the Apache 2 license here:
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index.html b/openlayers/doc/apidocs/index.html new file mode 100644 index 0000000..acf03fb --- /dev/null +++ b/openlayers/doc/apidocs/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Classes.html b/openlayers/doc/apidocs/index/Classes.html new file mode 100644 index 0000000..9b75a2b --- /dev/null +++ b/openlayers/doc/apidocs/index/Classes.html @@ -0,0 +1,34 @@ + + +Class Index - OpenLayers + + + + + + + + + +
Class Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
O
 OpenLayers
 OpenLayers.Ajax
 OpenLayers.Ajax.Base
 OpenLayers.Ajax.Request
 OpenLayers.Ajax.Responders
 OpenLayers.Ajax.Response
 OpenLayers.Array
 OpenLayers.Bounds
 OpenLayers.Console
 OpenLayers.Control
 OpenLayers.Control.ArgParser
 OpenLayers.Control.Attribution
 OpenLayers.Control.Button
 OpenLayers.Control.DragFeature
 OpenLayers.Control.DragPan
 OpenLayers.Control.DrawFeature
 OpenLayers.Control.EditingToolbar
 OpenLayers.Control.GetFeature
 OpenLayers.Control.KeyboardDefaults
 OpenLayers.Control.LayerSwitcher
 OpenLayers.Control.Measure
 OpenLayers.Control.ModifyFeature
 OpenLayers.Control.MouseDefaults
 OpenLayers.Control.MousePosition
 OpenLayers.Control.MouseToolbar
 OpenLayers.Control.Navigation
 OpenLayers.Control.NavigationHistory
 OpenLayers.Control.NavToolbar
 OpenLayers.Control.OverviewMap
 OpenLayers.Control.Pan
 OpenLayers.Control.Panel
 OpenLayers.Control.PanPanel
 OpenLayers.Control.PanZoom
 OpenLayers.Control.PanZoomBar
 OpenLayers.Control.Permalink
 OpenLayers.Control.Scale
 OpenLayers.Control.ScaleLine
 OpenLayers.Control.SelectFeature
 OpenLayers.Control.Snapping
 OpenLayers.Control.Split
 OpenLayers.Control.WMSGetFeatureInfo
 OpenLayers.Control.ZoomBox
 OpenLayers.Control.ZoomIn
 OpenLayers.Control.ZoomOut
 OpenLayers.Control.ZoomPanel
 OpenLayers.Control.ZoomToMaxExtent
 OpenLayers.Easing
 OpenLayers.Easing.Expo
 OpenLayers.Easing.Linear
 OpenLayers.Easing.Quad
 OpenLayers.Element
 OpenLayers.ElementsIndexer
 OpenLayers.ElementsIndexer.IndexingMethods
 OpenLayers.Event
 OpenLayers.Events
 OpenLayers.Feature
 OpenLayers.Feature.Vector
 OpenLayers.Feature.WFS
 OpenLayers.Filter
 OpenLayers.Filter.Comparison
 OpenLayers.Filter.FeatureId
 OpenLayers.Filter.Logical
 OpenLayers.Filter.Spatial
 OpenLayers.Format
 OpenLayers.Format.ArcXML
 OpenLayers.Format.ArcXML.Features
 OpenLayers.Format.Filter
 OpenLayers.Format.Filter.v1
 OpenLayers.Format.Filter.v1_0_0
 OpenLayers.Format.Filter.v1_1_0
 OpenLayers.Format.GeoJSON
 OpenLayers.Format.GeoRSS
 OpenLayers.Format.GML
 OpenLayers.Format.GML.Base
 OpenLayers.Format.GML.v2
 OpenLayers.Format.GML.v3
 OpenLayers.Format.GPX
 OpenLayers.Format.JSON
 OpenLayers.Format.KML
 OpenLayers.Format.OSM
 OpenLayers.Format.SLD
 OpenLayers.Format.SLD.v1
 OpenLayers.Format.SLD.v1_0_0
 OpenLayers.Format.Text
 OpenLayers.Format.WFS
 OpenLayers.Format.WFSCapabilities
 OpenLayers.Format.WFSCapabilities.v1
 OpenLayers.Format.WFSCapabilities/v1_0_0
 OpenLayers.Format.WFSCapabilities/v1_1_0
 OpenLayers.Format.WFST.v1
 OpenLayers.Format.WFST.v1_0_0
 OpenLayers.Format.WFST.v1_1_0
 OpenLayers.Format.WKT
 OpenLayers.Format.WMC
 OpenLayers.Format.WMC.v1
 OpenLayers.Format.WMC.v1_0_0
 OpenLayers.Format.WMC.v1_1_0
 OpenLayers.Format.WMSCapabilities
 OpenLayers.Format.WMSCapabilities.v1_1
 OpenLayers.Format.WMSCapabilities/v1_1_0
 OpenLayers.Format.WMSCapabilities/v1_1_1
 OpenLayers.Format.WMSDescribeLayer
 OpenLayers.Format.WMSDescribeLayer.v1_1
 OpenLayers.Format.WMSGetFeatureInfo
 OpenLayers.Format.XML
 OpenLayers.Function
 OpenLayers.Geometry
 OpenLayers.Geometry.Collection
 OpenLayers.Geometry.Curve
 OpenLayers.Geometry.LinearRing
 OpenLayers.Geometry.LineString
 OpenLayers.Geometry.MultiLineString
 OpenLayers.Geometry.MultiPoint
 OpenLayers.Geometry.MultiPolygon
 OpenLayers.Geometry.Point
 OpenLayers.Geometry.Polygon
 OpenLayers.Geometry.Rectangle
 OpenLayers.Handler
 OpenLayers.Handler.Box
 OpenLayers.Handler.Click
 OpenLayers.Handler.Drag
 OpenLayers.Handler.Feature
 OpenLayers.Handler.Hover
 OpenLayers.handler.Keyboard
 OpenLayers.Handler.MouseWheel
 OpenLayers.Handler.Path
 OpenLayers.Handler.Point
 OpenLayers.Handler.Polygon
 OpenLayers.Handler.RegularPolygon
 OpenLayers.Icon
 OpenLayers.Lang
 OpenLayers.Lang[“ca”]
 OpenLayers.Lang[“cs-CZ”]
 OpenLayers.Lang[“da-DK”]
 OpenLayers.Lang[“de”]
 OpenLayers.Lang[“en”]
 OpenLayers.Lang[“en-CA”]
 OpenLayers.Lang[“es”]
 OpenLayers.Lang[“fr”]
 OpenLayers.Lang[“it”]
 OpenLayers.Lang[“nb”]
 OpenLayers.Lang[“nl”]
 OpenLayers.Lang[“pt-BR”]
 OpenLayers.Lang[“sv-SE”]
 OpenLayers.Lang[“zh-CN”]
 OpenLayers.Lang[“zh-TW”]
 OpenLayers.Layer
 OpenLayers.Layer.ArcGIS93Rest
 OpenLayers.Layer.ArcIMS
 OpenLayers.Layer.Boxes
 OpenLayers.Layer.EventPane
 OpenLayers.Layer.FixedZoomLevels
 OpenLayers.Layer.GeoRSS
 OpenLayers.Layer.GML
 OpenLayers.Layer.Google
 OpenLayers.Layer.Grid
 OpenLayers.Layer.HTTPRequest
 OpenLayers.Layer.Image
 OpenLayers.Layer.KaMap
 OpenLayers.Layer.KaMapCache
 OpenLayers.Layer.MapGuide
 OpenLayers.Layer.MapServer
 OpenLayers.Layer.MapServer.Untiled
 OpenLayers.Layer.Markers
 OpenLayers.Layer.MultiMap
 OpenLayers.Layer.OSM
 OpenLayers.Layer.PointTrack
 OpenLayers.Layer.SphericalMercator
 OpenLayers.Layer.Text
 OpenLayers.Layer.TileCache
 OpenLayers.Layer.TMS
 OpenLayers.Layer.Vector
 OpenLayers.Layer.Vector.RootContainer
 OpenLayers.Layer.VirtualEarth
 OpenLayers.Layer.WFS
 OpenLayers.Layer.WMS
 OpenLayers.Layer.WMS.Untiled
 OpenLayers.Layer.WorldWind
 OpenLayers.Layer.XYZ
 OpenLayers.Layer.Yahoo
 OpenLayers.LonLat
 OpenLayers.Map
 OpenLayers.Marker
 OpenLayers.Marker.Box
 OpenLayers.Number
 OpenLayers.Pixel
 OpenLayers.Popup
 OpenLayers.Popup.Anchored
 OpenLayers.Popup.AnchoredBubble
 OpenLayers.Popup.Framed
 OpenLayers.Popup.FramedCloud
 OpenLayers.Projection
 OpenLayers.Protocol
 OpenLayers.Protocol.HTTP
 OpenLayers.Protocol.Response
 OpenLayers.Protocol.SQL
 OpenLayers.Protocol.SQL.Gears
 OpenLayers.Protocol.WFS.v1
 OpenLayers.Protocol.WFS.v1_0_0
 OpenLayers.Protocol.WFS.v1_1_0
 OpenLayers.Renderer
 OpenLayers.Renderer.Canvas
 OpenLayers.Renderer.Elements
 OpenLayers.Renderer.SVG
 OpenLayers.Renderer.VML
 OpenLayers.Request
 OpenLayers.Request.XMLHttpRequest
 OpenLayers.Rule
 OpenLayers.Size
 OpenLayers.Strategy
 OpenLayers.Strategy.BBOX
 OpenLayers.Strategy.Cluster
 OpenLayers.Strategy.Fixed
 OpenLayers.Strategy.Paging
 OpenLayers.Strategy.Save
 OpenLayers.String
 OpenLayers.Style
 OpenLayers.StyleMap
 OpenLayers.Tile
 OpenLayers.Tile.Image
 OpenLayers.Tile.WFS
 OpenLayers.Tween
+ +
The OpenLayers object provides a namespace for all things OpenLayers
Deprecated.
{Object}
Contains convenience functions for array manipulation.
Instances of this class represent bounding boxes.
The OpenLayers.Console namespace is used for debugging and error logging.
Controls affect the display or behavior of the map.
The ArgParser control adds location bar querystring parsing functionality to an OpenLayers Map.
The attribution control adds attribution from layers to the map display.
The Button control is a very simple push-button, for use with OpenLayers.Control.Panel.
The DragFeature control moves a feature with a drag of the mouse.
The DragPan control pans the map with a drag of the mouse.
The DrawFeature control draws point, line or polygon features on a vector layer when active.
The EditingToolbar is a panel of 4 controls to draw polygons, lines, points, or to navigate the map by panning.
Gets vector features for locations underneath the mouse cursor.
The KeyboardDefaults control adds panning and zooming functions, controlled with the keyboard.
The LayerSwitcher control displays a table of contents for the map.
Allows for drawing of features for measurements.
Control to modify features.
This class is DEPRECATED in 2.4 and will be removed by 3.0.
The MousePosition control displays geographic coordinates of the mouse pointer, as it is moved about the map.
This class is DEPRECATED in 2.4 and will be removed by 3.0.
The navigation control handles map browsing with mouse events (dragging, double-clicking, and scrolling the wheel).
A navigation history control.
This Toolbar is an alternative to the Navigation control that displays the state of the control, and provides a UI for changing state to use the zoomBox via a Panel control.
The OverMap control creates a small overview map, useful to display the extent of a zoomed map and your main map and provide additional navigation options to the User.
The Pan control is a single button to pan the map in one direction.
The Panel control is a container for other controls.
The PanPanel is visible control for panning the map North, South, East or West in small steps.
The PanZoom is a visible control, composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomPanel.
The PanZoomBar is a visible control composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomBar.
The Permalink control is hyperlink that will return the user to the current map view.
The Scale control displays the current map scale as a ratio (e.g.
The ScaleLine displays a small line indicator representing the current map scale on the map.
The SelectFeature control selects vector features from a given layer on click or hover.
Acts as a snapping agent while editing vector features.
Acts as a split feature agent while editing vector features.
The WMSGetFeatureInfo control uses a WMS query to get information about a point on the map.
The ZoomBox control enables zooming directly to a given extent, by drawing a box on the map.
The ZoomIn control is a button to increase the zoom level of a map.
The ZoomOut control is a button to decrease the zoom level of a map.
The ZoomPanel control is a compact collecton of 3 zoom controls: a OpenLayers.Control.ZoomIn, a OpenLayers.Control.ZoomToMaxExtent, and a OpenLayers.Control.ZoomOut.
The ZoomToMaxExtent control is a button that zooms out to the maximum extent of the map.
Easing Equations by Robert Penner, http://www.robertpenner.com/easing/
This class takes care of figuring out which order elements should be placed in the DOM based on given indexing methods.
These are the compare methods for figuring out where a new node should be placed within the indexer.
Utility functions for event handling.
Features are combinations of geography and attributes.
Vector features use the OpenLayers.Geometry classes as geometry description.
WFS handling class, for use as a featureClass on the WFS layer for handling ‘point’ WFS types.
This class represents an OGC Filter.
This class represents a comparison filter.
This class represents a ogc:FeatureId Filter, as being used for rule-based SLD styling
This class represents ogc:And, ogc:Or and ogc:Not rules.
This class represents a spatial filter.
Base class for format reading/writing a variety of formats.
Read/Wite ArcXML.
Read/Wite ArcXML features.
Read/Wite ogc:Filter.
Superclass for Filter version 1 parsers.
Write ogc:Filter version 1.0.0.
Write ogc:Filter version 1.1.0.
Read and write GeoJSON.
Read/write GeoRSS parser.
Read/Wite GML.
Superclass for GML parsers.
Parses GML version 2.
Parses GML version 3.
Read/write GPX parser.
A parser to read/write JSON safely.
Read/Wite KML.
OSM parser.
Read/Wite SLD.
Superclass for SLD version 1 parsers.
Write SLD version 1.0.0.
Read Text format.
Read/Write WFS.
Read WFS Capabilities.
Abstract class not to be instantiated directly.
Read WMS Capabilities version 1.0.0.
Read WFS Capabilities version 1.1.0.
Superclass for WFST parsers.
A format for creating WFS v1.0.0 transactions.
A format for creating WFS v1.1.0 transactions.
Class for reading and writing Well-Known Text.
Read and write Web Map Context documents.
Superclass for WMC version 1 parsers.
Read and write WMC version 1.0.0.
Read and write WMC version 1.1.0.
Read WMS Capabilities.
Abstract class not to be instantiated directly.
Read WMS Capabilities version 1.1.0.
Read WMS Capabilities version 1.1.1.
Read SLD WMS DescribeLayer response DescribeLayer is meant to couple WMS to WFS and WCS
Read SLD WMS DescribeLayer response for WMS 1.1.X WMS 1.1.X is tightly coupled to SLD 1.0.0
Class to read GetFeatureInfo responses from Web Mapping Services
Read and write XML.
Contains convenience functions for function manipulation.
A Geometry is a description of a geographic object.
A Collection is exactly what it sounds like: A collection of different Geometries.
A Curve is a MultiPoint, whose points are assumed to be connected.
A Linear Ring is a special LineString which is closed.
A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
A MultiLineString is a geometry with multiple OpenLayers.Geometry.LineString components.
MultiPoint is a collection of Points.
MultiPolygon is a geometry with multiple OpenLayers.Geometry.Polygon components.
Point geometry class.
Polygon is a collection of Geometry.LinearRings.
This class is not supported, and probably isn’t what you’re looking for.
Base class to construct a higher-level handler for event sequences.
Handler for dragging a rectangle across the map.
A handler for mouse clicks.
The drag handler is used to deal with sequences of browser events related to dragging.
Handler to respond to mouse events related to a drawn feature.
The hover handler is to be used to emulate mouseovers on objects on the map that aren’t DOM elements.
A handler for keyboard events.
Handler for wheel up/down events.
Handler to draw a path on the map.
Handler to draw a point on the map.
Handler to draw a polygon on the map.
Handler to draw a regular polygon on the map.
The icon represents a graphical icon on the screen.
Internationalization namespace.
Dictionary for Catalan, UTF8 encoding.
Dictionary for Czech.
Dictionary for Danish.
Dictionary for German.
Dictionary for English.
Dictionary for English-CA.
Dictionary for Spanish, UTF8 encoding.
Dictionary for French.
Dictionary for Italian.
Dictionary for norwegian bokmål (Norway).
Dictionary for Dutch.
Dictionary for Brazilian Portuguese.
Dictionary for swedish (Sweden).
Dictionary for Simplified Chinese.
Dictionary for Traditional Chinese.
Instances of OpenLayers.Layer.ArcGIS93Rest are used to display data from ESRI ArcGIS Server 9.3 (and up?)
Instances of OpenLayers.Layer.ArcIMS are used to display data from ESRI ArcIMS Mapping Services.
Draw divs as ‘boxes’ on the layer.
Base class for 3rd party layers.
Some Layers will already have established zoom levels (like google or ve).
Add GeoRSS Point features to your map.
Create a vector layer by parsing a GML file.
Base class for layers that use a lattice of tiles.
Instances of OpenLayers.Layer.Image are used to display data from a web accessible image as a map layer.
This class is designed to talk directly to a web-accessible ka-Map cache generated by the precache2.php script.
Instances of OpenLayers.Layer.MapGuide are used to display data from a MapGuide OS instance.
Instances of OpenLayers.Layer.MapServer are used to display data from a MapServer CGI instance.
Deprecated.
Note that MultiMap does not fully support the sphericalMercator option.
A class to access OpenStreetMap tiles.
Vector layer to display ordered point features as a line, creating one LineString feature for each pair of two points.
A mixin for layers that wraps up the pieces neccesary to have a coordinate conversion for working with commercial APIs which use a spherical mercator projection.
This layer creates markers given data in a text file.
A read only TileCache layer.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
A special layer type to combine multiple vector layers inside a single renderer root container.
Instances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.
Deprecated.
The XYZ class is designed to make it easier for people who have tiles arranged by a standard XYZ grid.
This class represents a longitude and latitude pair
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
Contains convenience functions for manipulating numbers.
This class represents a screen coordinate, in x and y coordinates
A popup is a small div that can opened and closed on the map.
Class for coordinate transforms between coordinate systems.
Abstract vector layer protocol class.
A basic HTTP protocol for vector layers.
Protocols return Response objects to their users.
Abstract SQL protocol class.
This Protocol stores feature in the browser via the Gears Database module http://code.google.com/apis/gears/api_database.html.
Abstract class for for v1.0.0 and v1.1.0 protocol.
A WFS v1.0.0 protocol for vector layers.
A WFS v1.1.0 protocol for vector layers.
This is the base class for all renderers.
A renderer based on the 2D ‘canvas’ drawing element.element
This is another virtual class in that it should never be instantiated by itself as a Renderer.
Render vector features in browsers with VML capability.
The OpenLayers.Request namespace contains convenience methods for working with XMLHttpRequests.
Standard-compliant (W3C) cross-browser implementation of the XMLHttpRequest object.
This class represents an SLD Rule, as being used for rule-based SLD styling.
Instances of this class represent a width/height pair
Abstract vector layer strategy class.
A simple strategy that reads new features when the viewport invalidates some bounds.
Strategy for vector feature clustering.
A simple strategy that requests features once and never requests new data.
Strategy for vector feature paging
A strategy that commits newly created or modified features.
Contains convenience functions for string manipulation.
This class represents a UserStyle obtained from a SLD, containing styling rules.
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
Instances of OpenLayers.Tile.WFS are used to manage the image tiles used by various layers.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Classes2.html b/openlayers/doc/apidocs/index/Classes2.html new file mode 100644 index 0000000..4461cec --- /dev/null +++ b/openlayers/doc/apidocs/index/Classes2.html @@ -0,0 +1,34 @@ + + +Class Index - OpenLayers + + + + + + + + + +
Class Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
U
 Util
+ + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Constants.html b/openlayers/doc/apidocs/index/Constants.html new file mode 100644 index 0000000..294affc --- /dev/null +++ b/openlayers/doc/apidocs/index/Constants.html @@ -0,0 +1,102 @@ + + +Constant Index - OpenLayers + + + + + + + + + +
Constant Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
B
 BACKGROUND_ID_SUFFIX, OpenLayers.Renderer.Elements
 BROWSER_EVENTS, OpenLayers.Events
C
 CORNER_SIZE, OpenLayers.Popup.AnchoredBubble
D
 dataFrom, OpenLayers.Layer.PointTrack.OpenLayers.Layer.PointTrack
 DEFAULT_CONFIG, OpenLayers.Request
 DEFAULT_FORMAT, OpenLayers.Layer.KaMapCache
 DEFAULT_OPTIONS, OpenLayers.Layer.ArcIMS
 DEFAULT_PARAMS
 DEFAULTS
 DOTS_PER_INCH, Util
 DRAG, OpenLayers.Control.ModifyFeature
E
 EVENT_TYPES
F
 FOLDER_PARAMS, OpenLayers.Layer.MapGuide
I
 IMAGE_EXTENSIONS, OpenLayers.Layer.KaMapCache
 INCHES_PER_UNIT, Util
 INTERVAL, OpenLayers.Tween
K
 KEY_BACKSPACE, OpenLayers.Event
 KEY_DELETE, OpenLayers.Event
 KEY_DOWN, OpenLayers.Event
 KEY_ESC, OpenLayers.Event
 KEY_EVENTS, OpenLayers.handler.Keyboard
 KEY_LEFT, OpenLayers.Event
 KEY_RETURN, OpenLayers.Event
 KEY_RIGHT, OpenLayers.Event
 KEY_TAB, OpenLayers.Event
 KEY_UP, OpenLayers.Event
L
 LABEL_ALIGN
 LABEL_SHIFT, OpenLayers.Renderer.VML.OpenLayers.Renderer.VML
 LABEL_VSHIFT, OpenLayers.Renderer.SVG.OpenLayers.Renderer.SVG
M
 MAX_PIXEL, OpenLayers.Renderer.SVG
 MAX_ZOOM_LEVEL
 MIN_ZOOM_LEVEL
 MOD_ALT, OpenLayers.Handler.OpenLayers.Handler
 MOD_CTRL, OpenLayers.Handler.OpenLayers.Handler
 MOD_NONE, OpenLayers.Handler.OpenLayers.Handler
 MOD_SHIFT, OpenLayers.Handler.OpenLayers.Handler
O
 OVERLAY_PARAMS, OpenLayers.Layer.MapGuide
R
 RESHAPE, OpenLayers.Control.ModifyFeature
 RESIZE, OpenLayers.Control.ModifyFeature
 RESOLUTIONS
 ROTATE, OpenLayers.Control.ModifyFeature
S
 SINGLE_TILE_PARAMS, OpenLayers.Layer.MapGuide
 style, OpenLayers.Feature.Vector.OpenLayers.Feature.Vector
 symbol, OpenLayers.Renderer.Elements.OpenLayers.Renderer
 SYMBOLIZER_PREFIXES, OpenLayers.Style.OpenLayers.Style
T
 TILE_HEIGHT, OpenLayers.Map
 TILE_PARAMS, OpenLayers.Layer.MapGuide
 TILE_WIDTH, OpenLayers.Map
U
 URL_HASH_FACTOR, OpenLayers.Layer.HTTPRequest
V
 VERSION
 VERSION_NUMBER, OpenLayers
X
 X, OpenLayers.Control.PanZoom
Y
 Y, OpenLayers.Control.PanZoom
Z
 Z_INDEX_BASE, OpenLayers.Map
+ +
{String}
{Array(String)} supported events
+ + + +
{Integer} 5.
+ + + +
{Object} with the following keys
{Object} Default configuration for all requests.
{Object} Simple hash map to convert format to extension.
{Object} Default layers properties.
{Object} Hashtable of default parameter key/value pairs
{Object} Default query string parameters.
{Object} parameters set by default.
{Object} Hashtable of default parameter key/value pairs
{Object} Hashtable of default parameter key/value pairs
Default target properties.
{Object} Default properties for the WFST format.
{Integer} 72 (A sensible default)
{Integer} Constant used to make the control work in drag mode
+ + + +
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types
+ + + +
{Object} Hashtable of parameter key/value pairs which describe the folder structure for tiles as configured in the mapguide serverconfig.ini section [TileServiceProperties]
+ + + +
{Object} Simple hash map to convert format to extension.
{Object} Constant inches per unit -- borrowed from MapServer mapscale.c derivation of nautical miles from http://en.wikipedia.org/wiki/Nautical_mile Includes the full set of units supported by CS-MAP (http://trac.osgeo.org/csmap/) and PROJ.4 (http://trac.osgeo.org/proj/) The hardcoded table is maintain in a CS-MAP source code module named CSdataU.c The hardcoded table of PROJ.4 units are in pj_units.c.
{int} Interval in milliseconds between 2 steps
+ + + +
{int}
{int}
{int}
{int}
keydown, keypress, keyup
{int}
{int}
{int}
{int}
{int}
+ + + +
{Object}
{Object}
{Object}
{Object}
+ + + +
{Integer} Firefox has a limitation where values larger or smaller than about 15000 in an SVG document lock the browser up.
{Integer} 19
{Integer} 17
{Integer} 17
{Integer} 17
{Integer} 0
{Integer} 1
{Integer} 1
{Integer} 0
If set as the keyMask, checkModifiers returns false if Alt is down.
If set as the keyMask, checkModifiers returns false if Ctrl is down.
If set as the keyMask, checkModifiers returns false if any key is down.
If set as the keyMask, checkModifiers returns false if Shift is down.
+ + + +
{Object} Hashtable of default parameter key/value pairs for untiled layer
+ + + +
{Integer} Constant used to make the control work in reshape mode
{Integer} Constant used to make the control work in resize mode
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Integer} Constant used to make the control work in rotate mode
+ + + +
{Object} Hashtable of default parameter key/value pairs for untiled layer
OpenLayers features can have a number of style attributes.
Coordinate arrays for well known (named) symbols.
{Array} prefixes of the sld symbolizers.
+ + + +
{Integer} 256 Default tile height (unless otherwise specified)
{Object} Hashtable of default parameter key/value pairs for tiled layer
{Integer} 256 Default tile width (unless otherwise specified)
+ + + +
{Float} Used to hash URL param strings for multi-WMS server selection.
+ + + +
{String} 1.0.0
{String} 1.1.0
{String} 1.0.0
{String} 1.0.0
{String} 1.1.0
+ + + +
{Integer}
+ + + +
{Integer}
+ + + +
{Object} Base z-indexes for different classes of thing
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Constructor.html b/openlayers/doc/apidocs/index/Constructor.html new file mode 100644 index 0000000..bcf20b4 --- /dev/null +++ b/openlayers/doc/apidocs/index/Constructor.html @@ -0,0 +1,98 @@ + + +Constructor Index - OpenLayers + + + + + + + + + +
Constructor Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
A
 Anchored, OpenLayers.Popup.Anchored.OpenLayers.Popup
 AnchoredBubble, OpenLayers.Popup.AnchoredBubble.OpenLayers.Popup
 ArcGIS93Rest, OpenLayers.Layer.ArcGIS93Rest.OpenLayers.Layer
 ArcIMS, OpenLayers.Layer.ArcIMS.OpenLayers.Layer
 ArcXML, OpenLayers.Format.ArcXML.OpenLayers.Format
 ArgParser, OpenLayers.Control.ArgParser.OpenLayers.Control
 Attribution, OpenLayers.Control.Attribution.OpenLayers.Control
B
 Base
 BBOX, OpenLayers.Strategy.BBOX.OpenLayers.Strategy
 Bounds, OpenLayers.Bounds.OpenLayers
 Box
 Boxes, OpenLayers.Layer.Boxes.OpenLayers.Layer
C
 Canvas, OpenLayers.Renderer.Canvas.OpenLayers.Renderer
 Class, OpenLayers
 Click, OpenLayers.Handler.Click.OpenLayers.Handler
 Cluster, OpenLayers.Strategy.Cluster.OpenLayers.Strategy
 Collection, OpenLayers.Geometry.Collection.OpenLayers.Geometry
 Comparison, OpenLayers.Filter.Comparison.OpenLayers.Filter
 Control, OpenLayers.Control.OpenLayers
 Curve, OpenLayers.Geometry.Curve.OpenLayers.Geometry
D
 Drag, OpenLayers.Handler.Drag.OpenLayers.Handler
 DragFeature, OpenLayers.Control.DragFeature.OpenLayers.Control
 DrawFeature, OpenLayers.Control.DrawFeature.OpenLayers.Control
E
 EditingToolbar, OpenLayers.Control.EditingToolbar.OpenLayers.Control
 Elements, OpenLayers.Renderer.Elements.OpenLayers.Renderer
 EventPane, OpenLayers.Layer.EventPane.OpenLayers.Layer
 Events, OpenLayers.Events.OpenLayers
F
 Feature
 FeatureId, OpenLayers.Filter.FeatureId.OpenLayers.Filter
 Features, OpenLayers.Format.ArcXML.Features.OpenLayers.Format.ArcXML
 Filter
 Fixed, OpenLayers.Strategy.Fixed.OpenLayers.Strategy
 FixedZoomLevels, OpenLayers.Layer.FixedZoomLevels.OpenLayers.Layer
 Format, OpenLayers.Format.OpenLayers
 Framed, OpenLayers.Popup.Framed.OpenLayers.Popup
 FramedCloud, OpenLayers.Popup.FramedCloud.OpenLayers.Popup
G
 Gears, OpenLayers.Protocol.SQL.Gears.OpenLayers.Protocol.SQL
 GeoJSON, OpenLayers.Format.GeoJSON.OpenLayers.Format
 Geometry, OpenLayers.Geometry.OpenLayers
 GeoRSS
 GetFeature, OpenLayers.Control.GetFeature.OpenLayers.Control
 GML
 Google, OpenLayers.Layer.Google.OpenLayers.Layer
 GPX, OpenLayers.Format.GPX.OpenLayers.Format
 Grid, OpenLayers.Layer.Grid.OpenLayers.Layer
H
 Handler, OpenLayers.Handler.OpenLayers
 Hover, OpenLayers.Handler.Hover.OpenLayers.Handler
 HTTP, OpenLayers.Protocol.HTTP.OpenLayers.Protocol
 HTTPRequest, OpenLayers.Layer.HTTPRequest.OpenLayers.Layer
I
 Icon, OpenLayers.Icon.OpenLayers
 Image, OpenLayers.Layer.Image.OpenLayers.Layer
J
 JSON, OpenLayers.Format.JSON.OpenLayers.Format
K
 KaMap, OpenLayers.Layer.KaMap.OpenLayers.Layer
 KaMapCache, OpenLayers.Layer.KaMapCache.OpenLayers.Layer
 Keyboard, OpenLayers.handler.Keyboard.OpenLayers.Handler
 KeyboardDefaults, OpenLayers.Control.KeyboardDefaults.OpenLayers.Control
 KML, OpenLayers.Format.KML.OpenLayers.Format
L
 Layer, OpenLayers.Layer.OpenLayers
 LayerSwitcher, OpenLayers.Control.LayerSwitcher.OpenLayers.Control
 LinearRing, OpenLayers.Geometry.LinearRing.OpenLayers.Geometry
 LineString, OpenLayers.Geometry.LineString.OpenLayers.Geometry
 Logical, OpenLayers.Filter.Logical.OpenLayers.Filter
 LonLat, OpenLayers.LonLat.OpenLayers
M
 Map, OpenLayers.Map.OpenLayers
 MapGuide, OpenLayers.Layer.MapGuide.OpenLayers.Layer
 MapServer, OpenLayers.Layer.MapServer.OpenLayers.Layer
 Marker, OpenLayers.Marker.OpenLayers
 Markers, OpenLayers.Layer.Markers.OpenLayers.Layer
 Measure, OpenLayers.Control.Measure.OpenLayers.Control
 ModifyFeature, OpenLayers.Control.ModifyFeature.OpenLayers.Control
 MouseDefaults, OpenLayers.Control.MouseDefaults.OpenLayers.Control
 MousePosition, OpenLayers.Control.MousePosition.OpenLayers.Control
 MouseToolbar, OpenLayers.Control.MouseToolbar.OpenLayers.Control
 MouseWheel, OpenLayers.Handler.MouseWheel.OpenLayers.Handler
 MultiLineString, OpenLayers.Geometry.MultiLineString.OpenLayers.Geometry
 MultiMap, OpenLayers.Layer.MultiMap.OpenLayers.Layer
 MultiPoint, OpenLayers.Geometry.MultiPoint.OpenLayers.Geometry
 MultiPolygon, OpenLayers.Geometry.MultiPolygon.OpenLayers.Geometry
N
 Navigation, OpenLayers.Control.Navigation.OpenLayers.Control
 NavigationHistory, OpenLayers.Control.NavigationHistory.OpenLayers.Control
 NavToolbar, OpenLayers.Control.NavToolbar.OpenLayers.Control
O
 OSM
 OverviewMap, OpenLayers.Control.OverviewMap.OpenLayers.Control
P
 Paging, OpenLayers.Strategy.Paging.OpenLayers.Strategy
 Pan, OpenLayers.Control.Pan.OpenLayers.Control
 Panel, OpenLayers.Control.Panel.OpenLayers.Control
 PanPanel, OpenLayers.Control.PanPanel.OpenLayers.Control
 PanZoom, OpenLayers.Control.PanZoom.OpenLayers.Control
 PanZoomBar, OpenLayers.Control.PanZoomBar.OpenLayers.Control
 Path, OpenLayers.Handler.Path.OpenLayers.Handler
 Permalink, OpenLayers.Control.Permalink.OpenLayers.Control
 Pixel, OpenLayers.Pixel.OpenLayers
 Point
 PointTrack, OpenLayers.Layer.PointTrack.OpenLayers
 Polygon
 Popup, OpenLayers.Popup.OpenLayers
 Projection, OpenLayers.Projection.OpenLayers
 Protocol, OpenLayers.Protocol.OpenLayers
R
 Rectangle, OpenLayers.Geometry.Rectangle.OpenLayers.Geometry
 RegularPolygon, OpenLayers.Handler.RegularPolygon.OpenLayers.Handler
 Renderer, OpenLayers.Renderer.OpenLayers
 Request, OpenLayers.Ajax.Request.OpenLayers.Ajax
 Response
 RootContainer, OpenLayers.Layer.Vector.RootContainer.OpenLayers.Layer.Vector
 Rule, OpenLayers.Rule.OpenLayers
+ +
Create a new ArcGIS93Rest layer object.
Create a new ArcIMS layer object.
Create a new parser/writer for ArcXML.
+ + + +
Instances of this class are not created directly.
Create a new BBOX strategy.
Construct a new bounds object.
+ + + +
Base class used to construct all other classes.
Create a new click handler.
Create a new clustering strategy.
Creates a Geometry Collection -- a list of geoms.
Creates a comparison rule.
Create an OpenLayers Control.
+ + + +
Returns OpenLayers.Handler.Drag
Create a new control to drag features.
+ + + +
Create an editing toolbar for a given layer.
Create a new event pane layer
Construct an OpenLayers.Events object.
+ + + +
Constructor for features.
Creates an ogc:FeatureId rule.
Create a new parser/writer for ArcXML Features.
This is an abstract class.
Create a new parser for Filter.
Create a new Fixed strategy.
Create a new fixed zoom levels layer.
Instances of this class are not useful.
+ + + +
Create a new parser for GeoJSON.
Creates a geometry object.
Create a new parser for GeoRSS.
Create a GeoRSS Layer.
Create a new control for fetching remote features.
Create a new parser for GML.
Load and parse a single file on the web, according to the format provided via the ‘format’ option, defaulting to GML.
Create a new parser for GPX.
Create a new grid layer
+ + + +
Construct a handler.
Construct a hover handler.
A class for giving layers generic HTTP protocol.
+ + + +
Creates an icon, which is an image tag in a div.
Create a new image layer
+ + + +
Create a new parser for JSON.
+ + + +
Returns a new keyboard handler.
Create a new parser for KML.
+ + + +
Linear rings are constructed with an array of points.
Create a new LineString geometry
Creates a logical filter (And, Or, Not).
Create a new map location.
+ + + +
Constructor for a new OpenLayers.Map instance.
Create a new Mapguide layer, either tiled or untiled.
Create a new MapServer layer object
Create a Markers layer.
Create a new modify feature control.
Constructor for a MultiLineString Geometry.
Create a new MultiPoint Geometry
Create a new MultiPolygon geometry
+ + + +
Create a new navigation control
Add our two mousedefaults controls.
+ + + +
Create a new parser for OSM.
Create a new overview map
+ + + +
Create a new paging strategy.
Control which handles the panning (in any of the cardinal directions) of the map by a set px distance.
Create a new control panel.
Add the four directional pan buttons.
Create a new path hander
Create a new OpenLayers.Pixel instance
Construct a point geometry.
Create a new point handler.
Constructor for a new OpenLayers.PointTrack instance.
Constructor for a Polygon geometry.
Create a Polygon Handler.
Create a popup.
This class offers several methods for interacting with a wrapped pro4js projection object.
Abstract class for vector protocols.
+ + + +
Create a new regular polygon handler.
Create a new root container for multiple vector layer.
Creates a Rule.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Constructor2.html b/openlayers/doc/apidocs/index/Constructor2.html new file mode 100644 index 0000000..0ea4d09 --- /dev/null +++ b/openlayers/doc/apidocs/index/Constructor2.html @@ -0,0 +1,62 @@ + + +Constructor Index - OpenLayers + + + + + + + + + +
Constructor Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
S
 Save, OpenLayers.Strategy.Save.OpenLayers.Strategy
 Scale, OpenLayers.Control.Scale.OpenLayers.Control
 ScaleLine, OpenLayers.Control.ScaleLine.OpenLayers.Control
 SelectFeature, OpenLayers.Control.SelectFeature.OpenLayers.Control
 Size, OpenLayers.Size.OpenLayers
 SLD, OpenLayers.Format.SLD.OpenLayers.Format
 Snapping, OpenLayers.Control.Snapping.OpenLayers.Control
 Spatial, OpenLayers.Filter.Spatial.OpenLayers.Filter
 Split, OpenLayers.Control.Split.OpenLayers.Control
 SQL, OpenLayers.Protocol.SQL.OpenLayers.Protocol
 Strategy, OpenLayers.Strategy.OpenLayers
 Style, OpenLayers.Style.OpenLayers
 StyleMap, OpenLayers.StyleMap.OpenLayers
 SVG, OpenLayers.Renderer.SVG.OpenLayers.Renderer
T
 Text
 TileCache, OpenLayers.Layer.TileCache.OpenLayers.Layer
 TMS, OpenLayers.Layer.TMS.OpenLayers.Layer
 Tween, OpenLayers.Tween.OpenLayers
U
 Untiled
V
 v1
 v1_0_0
 v1_1
 v1_1_0
 v1_1_1, OpenLayers.Format.WMSCapabilities/v1_1_1.OpenLayers.Format.WMSCapabilities
 v2, OpenLayers.Format.GML.v2.OpenLayers.Format.GML
 v3, OpenLayers.Format.GML.v3.OpenLayers.Format.GML
 Vector
 VirtualEarth, OpenLayers.Layer.VirtualEarth.OpenLayers.Layer
 VML, OpenLayers.Renderer.VML.OpenLayers.Renderer
W
 WFS
 WFSCapabilities, OpenLayers.Format.WFSCapabilities.OpenLayers.Format
 WFSDescribeFeatureType, OpenLayers.Format
 WKT, OpenLayers.Format.WKT.OpenLayers.Format
 WMC, OpenLayers.Format.WMC.OpenLayers.Format
 WMS, OpenLayers.Layer.WMS.OpenLayers.Layer
 WMSCapabilities, OpenLayers.Format.WMSCapabilities.OpenLayers.Format
 WMSDescribeLayer
 WMSGetFeatureInfo, OpenLayers.Format.WMSGetFeatureInfo.OpenLayers.Format
 WMSGetFeatureInfo>, OpenLayers.Control.WMSGetFeatureInfo.<OpenLayers.Control
 WorldWind, OpenLayers.Layer.WorldWind.OpenLayers.Layer
X
 XML, OpenLayers.Format.XML.OpenLayers.Format
Y
 Yahoo, OpenLayers.Layer.Yahoo.OpenLayers.Layer
Z
 ZoomPanel, OpenLayers.Control.ZoomPanel.OpenLayers.Control
+ +
Create a new Save strategy.
Create a new scale line control.
Create a new control for selecting features.
Create an instance of OpenLayers.Size
Create a new parser for SLD.
Creates a new snapping control.
Creates a spatial filter.
Creates a new split control.
Abstract class for vector strategies.
Creates a UserStyle.
+ + + +
Create a new parser for TSV Text.
Create a text layer.
Create a new read only TileCache layer.
Creates a Tween.
+ + + + + + + +
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Create a new parser for WFS capabilities version 1.0.0.
A class for parsing and generating WFS v1.0.0 transactions.
Instances of this class are not created directly.
A class for giving layers WFS v1.0.0 protocol.
Create an instance of one of the subclasses.
Create an instance of one of the subclasses.
Instances of this class are not created directly.
Create a new parser for WFS capabilities version 1.1.0.
A class for parsing and generating WFS v1.1.0 transactions.
Instances of this class are not created directly.
Create a new parser for WMS capabilities version 1.1.0.
A class for giving layers WFS v1.1.0 protocol.
Create a new parser for WMS capabilities version 1.1.1.
Create a parser for GML v2.
Create a parser for GML v3.
Create a vector feature.
Create a new vector layer
Create a new VML renderer.
+ + + +
Create a WFS feature.
Create a WFS-T formatter.
A class for giving layers WFS protocol.
Create a new parser for WFS capabilities.
Create a new parser for WFS DescribeFeatureType responses.
Create a new parser for WKT
Create a new parser for WMC docs.
Create a new WMS layer object
Create a new parser for WMS capabilities.
Create a new parser for WMS DescribeLayer responses.
Create a new parser for WMS DescribeLayer responses.
Create a new parser for WMS GetFeatureInfo responses
+ + + +
Construct an XML parser.
+ + + + + + + +
Add the three zooming controls.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Files.html b/openlayers/doc/apidocs/index/Files.html new file mode 100644 index 0000000..8c43547 --- /dev/null +++ b/openlayers/doc/apidocs/index/Files.html @@ -0,0 +1,42 @@ + + +File Index - OpenLayers + + + + + + + + + +
File Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
A
 Ajax.js
C
 Class.js
O
 OpenLayers Base Types
+ + + + + + + + + +
OpenLayers custom string, number and function functions are described here.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Functions.html b/openlayers/doc/apidocs/index/Functions.html new file mode 100644 index 0000000..b3cf699 --- /dev/null +++ b/openlayers/doc/apidocs/index/Functions.html @@ -0,0 +1,38 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
A
 abort, OpenLayers.Protocol.HTTP
 activate
 activateControl, OpenLayers.Control.Panel
 add
 addComponent, OpenLayers.Geometry.LinearRing
 addComponents, OpenLayers.Geometry.Collection
 addControl, OpenLayers.Map
 addControls, OpenLayers.Control.Panel
 addEventType, OpenLayers.Events
 addFeatures, OpenLayers.Layer.Vector
 addLayer, OpenLayers.Map
 addLayers, OpenLayers.Map
 addMarker, OpenLayers.Layer.Markers
 addNodes, OpenLayers.Layer.PointTrack
 addOptions, OpenLayers.Layer
 addPoint, OpenLayers.Geometry.MultiPoint
 addPopup, OpenLayers.Map
 addRules, OpenLayers.Style
 addTile, OpenLayers.Layer.Grid
 addTransform, OpenLayers.Projection
 assert, OpenLayers.Console
B
 bind
 bindAsEventListener
 buildGeometryNode, OpenLayers.Format.GML
+ +
abort: function(response)
Abort an ongoing request, the response object passed to this method must come from this HTTP protocol (as a result of a create, read, update, delete or commit operation).
activate: function()
Activate the control and the feature handler.
activate: function()
Activate the control.
activate: function()
Activate the control.
activate: function()
activate: function()
Activate the control.
activate: function()
Activate the control.
activate: function()
Turn on the handler.
activate: function()
turn on the handler
activate: function()
Turn on the handler.
activate: function()
Activate the strategy.
activate: function()
Activate the strategy.
activate: function()
Activate the strategy.
activateControl: function (control)
add:function(x,
y)
add:function(lon,
lat)
add:function(x,
y)
addComponent: function(point,
index)
Adds a point to geometry components.
addComponents: function(components)
Add components to this geometry.
addControl: function (control,
px)
addControls: function(controls)
To build a toolbar, you add a set of controls to it.
addEventType: function(eventName)
Add a new event type to this events object.
addFeatures: function(features,
options)
Add Features to the layer.
addLayer: function (layer)
addLayers: function (layers)
addMarker: function(marker)
addNodes: function(pointFeatures)
Adds point features that will be used to create lines from, using point pairs.
addOptions: function (newOptions)
addPoint: function(point,
index)
Wrapper for OpenLayers.Geometry.Collection.addComponent
addPopup: function(popup,
exclusive)
addRules: function(rules)
Adds rules to this style.
addTile:function(bounds,
position)
Gives subclasses of Grid the opportunity to create an OpenLayer.Tile of their choosing.
OpenLayers.Projection.addTransform = function(from,
to,
method)
Set a custom transform method between two projections.
assert: function()
Tests that an expression is true.
+ + + +
bind: function(func,
object)
Bind a function to an object.
Deprecated.
bindAsEventListener: function(func,
object)
Bind a function to an object, and configure it to receive the event object as first parameter when called.
Deprecated.
buildGeometryNode: function(geometry)
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Functions2.html b/openlayers/doc/apidocs/index/Functions2.html new file mode 100644 index 0000000..1f574cc --- /dev/null +++ b/openlayers/doc/apidocs/index/Functions2.html @@ -0,0 +1,34 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
C
 calculateBounds
 calculateInRange, OpenLayers.Layer
 camelize
 cancel
 clear
 clearMouseCache, OpenLayers.Events
 clone
 commit
 commitReport, OpenLayers.Layer.WFS
 concatChildValues, OpenLayers.Format.XML
 contains
 containsBounds, OpenLayers.Bounds
 containsLonLat, OpenLayers.Bounds
 containsPixel, OpenLayers.Bounds
 contentType, OpenLayers.Format.XML
 count, OpenLayers.Console
 create
 createElementNS, OpenLayers.Format.XML
 createParams, OpenLayers.Control.Permalink
 createRegularPolygon, OpenLayers.Geometry.Polygon
 createTextNode, OpenLayers.Format.XML
+ +
calculateBounds: function()
Recalculate the bounds for the geometry.
calculateBounds: function()
Recalculate the bounds by iterating through the components and calling calling extendBounds() on each item.
calculateInRange: function()
{Boolean} The layer is displayable at the current map’s current resolution.
camelize: function(str)
Camel-case a hyphenated string.
Deprecated.
cancel: function()
Stop the control from measuring.
cancel: function()
Finish the geometry and call the “cancel” callback.
cancel: function()
Finish the geometry and call the “cancel” callback.
clear: function()
Clear history.
clear: function()
clear: function()
Clear any rendered features on the temporary layer.
clearMouseCache: function()
Clear cached data about the mouse position.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Create a clone of this geometry.
clone: function()
Clone this geometry.
clone: function(obj)
{OpenLayers.Geometry.Point} An exact clone of this OpenLayers.Geometry.Point
clone: function (obj)
Create a clone of this layer
clone: function (obj)
clone: function (obj)
clone: function (obj)
clone: function (obj)
clone: function (obj)
clone: function (obj)
Create a clone of this layer
clone:function()
{OpenLayers.LonLat} New OpenLayers.LonLat object with the same lon and lat values
clone:function()
Return a clone of this pixel object
clone: function()
Clones this rule.
clone:function()
Create a clone of this size object
commit: function()
Write out the data to a WFS server.
commit: function()
Go over the features and for each take action based on the feature state.
commit: function(features,
options)
Iterate over each feature and take action based on the feature state.
commit: function(features,
options)
Go over the features and for each take action based on the feature state.
commitReport: function(string,
response)
Called with a ‘success’ message if the commit succeeded, otherwise a failure message, and the full request text as a second parameter.
concatChildValues: function(node,
def)
Deprecated.
contains:function(x,
y,
inclusive)
contains: function(str,
sub)
Test whether a string contains another string.
Deprecated.
containsBounds:function(bounds,
partial,
inclusive)
Determine whether the target bounds is contained within this bounds.
containsLonLat:function(ll,
inclusive)
containsPixel:function(px,
inclusive)
contentType: function(node)
Determine the content type for a given node.
count: function()
Writes the number of times that the line of code where count was called was executed.
Deprecated.
create: function()
Construct a request for writing newly created features.
create: function(features,
options)
Construct a request for writing newly created features.
create: function(features,
options)
Create new features into the database.
createElementNS: function(uri,
name)
Create a new element with namespace.
createParams: function(center,
zoom,
layers)
Creates the parameters that need to be encoded into the permalink url.
OpenLayers.Geometry.Polygon.createRegularPolygon = function(origin,
radius,
sides,
rotation)
Create a regular polygon around a radius.
createTextNode: function(text)
Create a text node.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Functions3.html b/openlayers/doc/apidocs/index/Functions3.html new file mode 100644 index 0000000..b01872f --- /dev/null +++ b/openlayers/doc/apidocs/index/Functions3.html @@ -0,0 +1,34 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
D
 deactivate
 debug, OpenLayers.Console
 delete
 DELETE, OpenLayers.Request
 destroy
 destroyFeatures, OpenLayers.Layer.Vector
 determineQuadrant, OpenLayers.Bounds
 dir, OpenLayers.Console
 dirxml, OpenLayers.Console
 display
 distanceTo
 dragPanMapObject
 drawFeature, OpenLayers.Layer.Vector
+ +
deactivate: function()
Deactivate the control and all handlers.
deactivate: function()
Deactivate the control.
deactivate: function()
Deactivate the control.
deactivate: function()
deactivate: function()
Deactivate the control.
deactivate: function()
Deactivate the control.
deactivate: function()
Turn off the handler.
deactivate: function()
Deactivate the handler.
deactivate: function()
Deactivate the handler.
deactivate: function()
turn off the handler
deactivate: function()
Turn off the handler.
deactivate: function()
Deactivate the strategy.
deactivate: function()
Deactivate the strategy.
deactivate: function()
Deactivate the strategy.
debug: function()
Writes a message to the console, including a hyperlink to the line where it was called.
"delete": function()
Construct a request deleting a removed feature.
"delete": function(feature,
options)
Construct a request deleting a removed feature.
"delete": function(features,
options)
Delete features from the database.
DELETE: function(config)
Send an HTTP DELETE request.
destroy: function()
Take care of things that are not handled in superclass
destroy: function()
destroy: function()
destroy: function()
Take care of things that are not handled in superclass.
destroy: function()
destroy: function()
destroy: function()
Destroy the control.
destroy: function()
Deconstruct the control
destroy: function()
destroy: function()
destroy: function()
destroy: function()
destroy: function ()
destroy: function()
Remove reference to anything added.
destroy: function()
Remove reference to child filters.
destroy: function()
Clean up.
destroy: function()
Remove ciruclar ref to layer
destroy: function()
Clean up.
destroy: function ()
Destroy this geometry.
destroy: function()
Deconstruct this layer.
destroy: function()
Deconstruct the layer and clear the grid.
destroy: function()
destroy: function()
destroy: function()
destroy: function()
Destroy this layer
destroy: function()
destroy:function()
Destroy this map
destroy: function()
Destroy the marker.
destroy: function()
destroy: function()
destroy: function()
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
destroy: function()
destroy: function()
Deconstruct the renderer.
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
Clean up the strategy.
destroy: function()
Clean up the strategy.
destroy: function()
nullify references to prevent circular references and memory leaks
destroy:function()
Nullify references to prevent circular references and memory leaks.
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
nullify references to prevent circular references and memory leaks
destroyFeatures: function(features,
options)
Erase and destroy features on the layer.
determineQuadrant: function(lonlat)
dir: function()
Prints an interactive listing of all properties of the object.
dirxml: function()
Prints the XML source tree of an HTML or XML element.
display: function(display)
Hide or show the Layer
display: function(display)
Hide or show the Layer
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
dragPanMapObject: function(dX,
dY)
dragPanMapObject: function(dX,
dY)
dragPanMapObject: function(dX,
dY)
drawFeature: function(feature,
style)
Draw (or redraw) a feature on the layer.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Functions4.html b/openlayers/doc/apidocs/index/Functions4.html new file mode 100644 index 0000000..21ef722 --- /dev/null +++ b/openlayers/doc/apidocs/index/Functions4.html @@ -0,0 +1,38 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
E
 equals
 error, OpenLayers.Console
 evaluate
 exists, OpenLayers.ElementsIndexer
 extend
F
 filter, OpenLayers.Array
 format
 forwardMercator, OpenLayers.Layer.SphericalMercator
 fromArray, OpenLayers.Bounds
 fromSize, OpenLayers.Bounds
 fromString, OpenLayers.Bounds
+ +
equals: function(geometry)
Determine whether another geometry is equivalent to this one.
equals: function(geom)
Determine whether another geometry is equivalent to this one.
equals:function(ll)
equals:function(px)
Determine whether one pixel is equivalent to another
equals:function(sz)
Determine where this size is equal to another
error: function()
Writes a message to the console with the visual “error” icon and color coding and a hyperlink to the line where it was called.
evaluate: function(context)
Evaluates this filter in a specific context.
evaluate: function(context)
Evaluates this filter in a specific context.
evaluate: function(feature)
evaluates this rule for a specific feature
evaluate: function(context)
Evaluates this filter in a specific context.
evaluate: function(feature)
evaluates this rule for a specific feature
exists: function(node)
node- {DOMElement} The node to test for existence.
extend:function(object)
Extend the bounds to include the point, lonlat, or bounds specified.
OpenLayers.Util.extend = function(destination,
source)
Copy all properties of a source object to a destination object.
+ + + +
filter: function(array,
callback,
caller)
Filter an array.
format: function(num,
dec,
tsep,
dsep)
Formats a number for output.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
forwardMercator: function(lon,
lat)
Given a lon,lat in EPSG:4326, return a point in Spherical Mercator.
OpenLayers.Bounds.fromArray = function(bbox)
Alternative constructor that builds a new OpenLayers.Bounds from an array
OpenLayers.Bounds.fromSize = function(size)
Alternative constructor that builds a new OpenLayers.Bounds from a size
OpenLayers.Bounds.fromString = function(str)
Alternative constructor that builds a new OpenLayers.Bounds from a parameter string
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Functions5.html b/openlayers/doc/apidocs/index/Functions5.html new file mode 100644 index 0000000..0ce3e0d --- /dev/null +++ b/openlayers/doc/apidocs/index/Functions5.html @@ -0,0 +1,34 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 GET, OpenLayers.Request
 getArea
 getAttributeNodeNS, OpenLayers.Format.XML
 getAttributeNS, OpenLayers.Format.XML
 getBounds, OpenLayers.Geometry
 getBy, OpenLayers.Map
 getCenter, OpenLayers.Map
 getCenterLonLat, OpenLayers.Bounds
 getCenterPixel, OpenLayers.Bounds
 getCentroid
 getChildEl, OpenLayers.Format.XML
 getChildValue, OpenLayers.Format.XML
 getCode
 getControl, OpenLayers.Map
 getControlsBy
 getControlsByClass
 getControlsByName, OpenLayers.Control.Panel
 getDataExtent
 getDimensions, OpenLayers.Element
 getElementsByTagNameNS, OpenLayers.Format.XML
 getExtent
 getFeatureById, OpenLayers.Layer.Vector
 getFullRequestString
 getGeodesicArea
 getGeodesicLength
 getHeight
 getImageSize, OpenLayers.Layer
 getLatitudeFromMapObjectLonLat
 getLayer, OpenLayers.Map
 getLayerIndex, OpenLayers.Map
 getLayerPxFromLonLat, OpenLayers.Map
 getLayerPxFromViewPortPx, OpenLayers.Map
 getLayersBy, OpenLayers.Map
 getLayersByClass, OpenLayers.Map
 getLayersByName, OpenLayers.Map
 getLength
 getLongitudeFromMapObjectLonLat
 getLonLatFromPixel, OpenLayers.Map
 getLonLatFromViewPortPx, OpenLayers.Layer
 getMapObjectBoundsFromOLBounds, OpenLayers.Layer.Google
 getMapObjectCenter
 getMapObjectLonLatFromLonLat
 getMapObjectLonLatFromMapObjectPixel
 getMapObjectPixelFromMapObjectLonLat
 getMapObjectPixelFromXY
 getMapObjectSizeFromOLSize, OpenLayers.Layer.Yahoo
 getMapObjectZoom
 getMapObjectZoomFromMapObjectBounds, OpenLayers.Layer.Google
 getMapObjectZoomFromOLZoom, OpenLayers.Layer.Yahoo
 getMaxExtent, OpenLayers.Map
 getMaxResolution, OpenLayers.Map
 getNextEl, OpenLayers.Format.XML
 getNextElement, OpenLayers.ElementsIndexer
 getNumLayers, OpenLayers.Map
 getNumZoomLevels, OpenLayers.Map
 getOLBoundsFromMapObjectBounds, OpenLayers.Layer.Google
 getOLZoomFromMapObjectZoom, OpenLayers.Layer.Yahoo
 getPixelFromLonLat, OpenLayers.Map
 getProjection, OpenLayers.Map
 getProjectionObject, OpenLayers.Map
 getResolution
 getResolutionForZoom
 getSafeContentSize, OpenLayers.Popup
 getScale, OpenLayers.Map
 getScrollbarWidth, Util
 getSize
 getStyle, OpenLayers.Element
 getTileBounds
 getTilesBounds, OpenLayers.Layer.Grid
 getTileSize, OpenLayers.Map
 getUnits
 getURL, OpenLayers.Layer.Image
 getVertices
 getViewPortPxFromLayerPx, OpenLayers.Map
 getViewPortPxFromLonLat
 getVisibility, OpenLayers.Layer
 getWarningHTML
 getWidth, OpenLayers.Bounds
 getXFromMapObjectPixel
 getYFromMapObjectPixel
 getZIndex, OpenLayers.ElementsIndexer
 getZoom, OpenLayers.Map
 getZoomForExtent
 getZoomForResolution
 group, OpenLayers.Console
 groupEnd, OpenLayers.Console
+ +
GET: function(config)
Send an HTTP GET request.
getArea: function()
Calculate the area of this geometry.
getArea: function()
getArea: function()
Calculated by subtracting the areas of the internal holes from the area of the outer hole.
getArea: function()
{Float} The area of the geometry
getAttributeNodeNS: function(node,
uri,
name)
Get an attribute node given the namespace URI and local name.
getAttributeNS: function(node,
uri,
name)
Get an attribute value given the namespace URI and local name.
getBounds: function()
Get the bounds for this Geometry.
getBy: function(array,
property,
match)
Get a list of objects given a property and a match item.
getCenter: function ()
{OpenLayers.LonLat}
getCenterLonLat:function()
{OpenLayers.LonLat} The center of the bounds in map space.
getCenterPixel:function()
{OpenLayers.Pixel} The center of the bounds in pixel space.
getCentroid: function()
Calculate the centroid of this geometry.
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
getChildEl: function(node,
name,
uri)
Get the first child element.
getChildValue: function(node,
def)
Get the textual value of the node if it exists, or return an optional default string.
getCode: function()
Get the current language code.
getCode: function()
Get the string SRS code.
getControl: function (id)
getControlsBy: function(property,
match)
Get a list of controls with properties matching the given criteria.
getControlsBy: function(property,
match)
Get a list of controls with properties matching the given criteria.
getControlsByClass: function(match)
Get a list of controls of a given type (CLASS_NAME).
getControlsByClass: function(match)
Get a list of controls of a given class (CLASS_NAME).
getControlsByName: function(match)
Get a list of contorls with names matching the given name.
getDataExtent: function ()
Calculates the max extent which includes all of the markers.
getDataExtent: function ()
Calculates the max extent which includes all of the features.
getDataExtent: function ()
Calculates the max extent which includes all of the layer data.
getDimensions: function(element)
getElementsByTagNameNS: function(node,
uri,
name)
Get a list of elements on a node given the namespace URI and local name.
getExtent: function()
{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getExtent: function ()
Calculates using px-> lonlat translation functions on tl and br corners of viewport
getExtent: function ()
{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getFeatureById: function(featureId)
Given a feature id, return the feature if it exists in the features array
getFullRequestString:function(newParams,
altUrl)
combine the layer’s url with its params and these newParams.
getFullRequestString:function(newParams,
altUrl)
Combine the layer’s url with its params and these newParams.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getGeodesicLength: function(projection)
Calculate the approximate length of the geometry were it projected onto the earth.
getGeodesicLength: function(projection)
Calculate the approximate length of the geometry were it projected onto the earth.
getHeight:function()
{Float} The height of the bounds (top minus bottom).
getHeight: function(element)
getImageSize: function()
{OpenLayers.Size} The size that the image should be, taking into account gutters.
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLayer: function(id)
Get a layer based on its id
getLayerIndex: function (layer)
getLayerPxFromLonLat: function (lonlat)
getLayerPxFromViewPortPx:function(viewPortPx)
getLayersBy: function(property,
match)
Get a list of layers with properties matching the given criteria.
getLayersByClass: function(match)
Get a list of layers of a given class (CLASS_NAME).
getLayersByName: function(match)
Get a list of layers with names matching the given name.
getLength: function()
Calculate the length of this geometry
getLength: function()
{Float} The length of the curve
getLength: function()
{Float} The length of the geometry
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLonLatFromPixel: function (px)
getLonLatFromViewPortPx: function (viewPortPx)
getMapObjectBoundsFromOLBounds: function(olBounds)
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectSizeFromOLSize: function(olSize)
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoomFromMapObjectBounds: function(moBounds)
getMapObjectZoomFromOLZoom: function(olZoom)
getMaxExtent: function (options)
getMaxResolution: function()
{String} The Map’s Maximum Resolution
getNextEl: function(node,
name,
uri)
Get the next sibling element.
getNextElement: function(index)
Get the next element in the order stack.
getNumLayers: function ()
{Int} The number of layers attached to the map.
getNumZoomLevels: function()
{Integer} The total number of zoom levels that can be displayed by the current baseLayer.
getOLBoundsFromMapObjectBounds: function(moBounds)
getOLZoomFromMapObjectZoom: function(moZoom)
getPixelFromLonLat: function (lonlat)
Returns a pixel location given a map location.
getProjection: function()
This method returns a string representing the projection.
getProjectionObject: function()
Returns the projection obect from the baselayer.
getResolution: function()
{Float} The currently selected resolution of the map, taken from the resolutions array, indexed by current zoom level.
getResolution: function()
Get the current map resolution
getResolution: function ()
{Float} The current resolution of the map.
getResolutionForZoom: function(zoom)
getResolutionForZoom: function(zoom)
getSafeContentSize: function(size)
getScale: function ()
{Float} The current scale denominator of the map.
OpenLayers.Util.getScrollbarWidth = function()
This function has been modified by the OpenLayers from the original version, written by Matthew Eernisse and released under the Apache 2 license here:
getSize:function()
{OpenLayers.Size} The size of the box.
getSize: function ()
{OpenLayers.Size} An OpenLayers.Size object that represents the size, in pixels, of the div into which OpenLayers has been loaded.
getStyle: function(element,
style)
getTileBounds: function(viewPortPx)
Returns The tile bounds for a layer given a pixel location.
getTileBounds: function(viewPortPx)
Returns The tile bounds for a layer given a pixel location.
getTilesBounds: function()
Return the bounds of the tile grid.
getTileSize: function()
Get the tile size for the map
getUnits: function ()
{Float} The current units of the map.
getUnits: function()
Get the units string for the projection -- returns null if proj4js is not available.
getURL: function(bounds)
The url we return is always the same (the image itself never changes) so we can ignore the bounds parameter (it will always be the same, anyways)
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getViewPortPxFromLayerPx:function(layerPx)
getViewPortPxFromLonLat: function (lonlat)
Returns a pixel location given a map location.
getViewPortPxFromLonLat: function (lonlat)
getVisibility: function()
{Boolean} The layer should be displayed (if in range).
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWidth:function()
{Float} The width of the bounds
getXFromMapObjectPixel: function(moPixel)
getXFromMapObjectPixel: function(moPixel)
getXFromMapObjectPixel: function(moPixel)
getXFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getZIndex: function(node)
Get the z-index value for the current node from the node data itself.
getZoom: function ()
{Integer}
getZoomForExtent: function(extent,
closest)
getZoomForExtent: function (bounds,
closest)
getZoomForResolution: function(resolution,
closest)
getZoomForResolution: function(resolution,
closest)
group: function()
Writes a message to the console and opens a nested block to indent all future messages sent to the console.
groupEnd: function()
Closes the most recently opened block created by a call to OpenLayers.Console.group
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Functions6.html b/openlayers/doc/apidocs/index/Functions6.html new file mode 100644 index 0000000..6ec5958 --- /dev/null +++ b/openlayers/doc/apidocs/index/Functions6.html @@ -0,0 +1,62 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
H
 hasAttributeNS, OpenLayers.Format.XML
 HEAD, OpenLayers.Request
 hide, OpenLayers.Element
I
 i18n, OpenLayers.Lang.OpenLayers
 info, OpenLayers.Console
 inherit
 initialize, OpenLayers.ElementsIndexer
 insert, OpenLayers.ElementsIndexer
 intersects
 intersectsBounds, OpenLayers.Bounds
 inverseMercator, OpenLayers.Layer.SphericalMercator
 isDrawn
 iserror, OpenLayers.Format.ArcXML
 isNumeric, OpenLayers.String.OpenLayers.String
 isSimpleContent, OpenLayers.Format.XML
 issue, OpenLayers.Request
L
 limitSigDigs
 loadURL
 log, OpenLayers.Console
 lookupNamespaceURI
M
 mergeNewParams
 move
N
 nextTrigger, OpenLayers.Control.NavigationHistory
 numericIf, OpenLayers.String
O
 offset, OpenLayers.Pixel
 onFeatureInsert, OpenLayers.Layer.Vector
 onMapResize
 OPTIONS, OpenLayers.Request
P
 pageCount, OpenLayers.Strategy.Paging
 pageLength, OpenLayers.Strategy.Paging
 pageNext, OpenLayers.Strategy.Paging
 pageNum, OpenLayers.Strategy.Paging
 pagePrevious, OpenLayers.Strategy.Paging
 pan, OpenLayers.Map
 panTo, OpenLayers.Map
 POST, OpenLayers.Request
 preFeatureInsert, OpenLayers.Layer.Vector
 profile, OpenLayers.Console
 profileEnd, OpenLayers.Console
 PUT, OpenLayers.Request
R
 raiseLayer, OpenLayers.Map
 read
 redraw
 refresh, OpenLayers.Layer.WFS
 register, OpenLayers.Events
 registerPriority, OpenLayers.Events
 remove
 removeComponent
 removeComponents, OpenLayers.Geometry.Collection
 removeControl, OpenLayers.Map
 removeFeatures, OpenLayers.Layer.Vector
 removeLayer, OpenLayers.Map
 removeMap
 removeMarker
 removePoint, OpenLayers.Geometry.MultiPoint
 removePopup, OpenLayers.Map
 render, OpenLayers.Map
 resize
 rotate
+ +
hasAttributeNS: function(node,
uri,
name)
Determine whether a node has a particular attribute matching the given name and namespace.
HEAD: function(config)
Send an HTTP HEAD request.
hide: function()
Hide element(s) passed in
+ + + +
Alias for OpenLayers.Lang.translate.
info: function()
Writes a message to the console with the visual “info” icon and color coding and a hyperlink to the line where it was called.
OpenLayers.Class.inherit = function ()
Deprecated.
initialize: function(yOrdering)
Create a new indexer with
insert: function(newNode)
Insert a new node into the indexer.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersects: function(geometry)
Test for instersection between two geometries.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersectsBounds:function(bounds,
inclusive)
Determine whether the target bounds intersects this bounds.
inverseMercator: function(x,
y)
Given a x,y in Spherical Mercator, return a point in EPSG:4326.
isDrawn: function()
{Boolean} Whether or not the icon is drawn.
isDrawn: function()
{Boolean} Whether or not the marker is drawn.
iserror: function(data)
Check to see if the response from the server was an error.
Determine whether a string contains only a numeric value.
isSimpleContent: function(node)
Test if the given node has only simple content (i.e.
issue: function(config)
Create a new XMLHttpRequest object, open it, set any headers, bind a callback to done state, and send any data.
+ + + +
limitSigDigs: function(num,
sig)
Limit the number of significant digits on a float.
Deprecated.
OpenLayers.loadURL = function(uri,
params,
caller,
onComplete,
onFailure)
Background load a document.
log: function()
Log an object in the console.
lookupNamespaceURI: function(node,
prefix)
Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
+ + + +
mergeNewParams:function(newParams)
Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
mergeNewParams:function(newParams)
mergeNewParams:function(newParams)
Modify parameters for the layer and redraw.
mergeNewParams:function(newParams)
Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
+ + + +
nextTrigger: function()
Restore the next state.
numericIf: function(value)
Converts a string that appears to be a numeric value into a number.
+ + + +
offset:function(px)
Parameters px - {OpenLayers.Pixel}
onFeatureInsert: function(feature)
method called after a feature is inserted.
onMapResize: function()
This function can be implemented by subclasses
onMapResize: function()
OPTIONS: function(config)
Send an HTTP OPTIONS request.
+ + + +
pageCount: function()
Get the total count of pages given the current cache of features.
pageLength: function(newLength)
Gets or sets page length.
pageNext: function(event)
Display the next page of features.
pageNum: function()
Get the zero based page number.
pagePrevious: function()
Display the previous page of features.
pan: function(dx,
dy,
options)
Allows user to pan by a value of screen pixels
panTo: function(lonlat)
Allows user to pan to a new lonlat If the new lonlat is in the current extent the map will slide smoothly
POST: function(config)
Send a POST request.
preFeatureInsert: function(feature)
method called before a feature is inserted.
profile: function()
Turns on the JavaScript profiler.
profileEnd: function()
Turns off the JavaScript profiler and prints its report.
PUT: function(config)
Send an HTTP PUT request.
+ + + +
raiseLayer: function (layer,
delta)
Change the index of the given layer by delta.
read: function(data)
Read data from a string, and return an response.
read: function(data)
Read data from a string of ArcXML, and return a set of OpenLayers features.
read: function(data)
Read and Filter doc and return an object representing the Filter.
read: function(json,
type,
filter)
Deserialize a GeoJSON string.
read: function(data)
Read data from a string, and return a list of features.
read: function(doc)
Return a list of features from a GPX doc
read: function(json,
filter)
Deserialize a json string.
read: function(data)
Read data from a string, and return a list of features.
read: function(data,
options)
Read and SLD doc and return an object representing the SLD.
read: function(text)
Return a list of features from a Tab Seperated Values text string.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data,
options)
Read WMC data from a string, and return an object with map properties and a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read DescribeLayer data from a string, and return the response.
read: function(data)
Read DescribeLayer data from a string, and return the response.
read: function(data)
Read WMS GetFeatureInfo data from a string, and return an array of features
read: function()
Construct a request for reading new features.
read: function(options)
Construct a request for reading new features.
read: function(options)
Read all features from the database and return a OpenLayers.Protocol.Response instance.
redraw: function()
Redraws the layer.
redraw: function(force)
Redraws the layer.
refresh: function()
Refreshes all the features of the layer
register: function (type,
obj,
func)
Register an event on the events object.
registerPriority: function (type,
obj,
func)
Same as register() but adds the new listener to the front of the events queue instead of to the end.
remove: function(element)
Remove the specified element from the DOM.
remove: function(node)
removeComponent: function(point)
Removes a point from geometry components.
removeComponent: function(point)
Only allows removal of a point if there are three or more points in the linestring.
removeComponents: function(components)
Remove components from this geometry.
removeControl: function (control)
Remove a control from the map.
removeFeatures: function(features,
options)
Remove features from the layer.
removeLayer: function(layer,
setNewBaseLayer)
Removes a layer from the map by removing its visual element (the layer.div property), then removing it from the map’s internal list of layers, setting the layer’s map property to null.
removeMap: function(map)
Just as setMap() allows each layer the possibility to take a personalized action on being added to the map, removeMap() allows each layer to take a personalized action on being removed from it.
removeMap: function(map)
On being removed from the map, we’ll like to remove the invisible ‘pane’ div that we added to it on creation.
removeMap: function(map)
On being removed from the map, also remove termsOfUse and poweredBy divs
removeMarker: function(marker)
removeMarker: function(marker)
removePoint: function(point)
Wrapper for OpenLayers.Geometry.Collection.removeComponent
removePopup: function(popup)
render: function(div)
Render the map to a specified container.
resize: function(scale,
origin,
ratio)
Resize a geometry relative to some origin.
resize: function(scale,
origin,
ratio)
Resize a geometry relative to some origin.
resize: function(scale,
origin,
ratio)
Resize a point relative to some origin.
rotate: function(angle,
origin)
Rotate a geometry around some origin
rotate: function(angle,
origin)
Rotate a geometry around some origin
rotate: function(angle,
origin)
Rotate a point around another.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Functions7.html b/openlayers/doc/apidocs/index/Functions7.html new file mode 100644 index 0000000..2d28919 --- /dev/null +++ b/openlayers/doc/apidocs/index/Functions7.html @@ -0,0 +1,38 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
S
 save, OpenLayers.Strategy.Save
 setAttributeNS, OpenLayers.Format.XML
 setBackgroundColor
 setBaseLayer, OpenLayers.Map
 setBorder, OpenLayers.Popup.Framed
 setCenter, OpenLayers.Map
 setCode, OpenLayers.Lang
 setDefaultStyle, OpenLayers.Style
 setIsBaseLayer, OpenLayers.Layer
 setLayer, OpenLayers.Control.Snapping
 setLayerIndex, OpenLayers.Map
 setMap
 setMapObjectCenter
 setName, OpenLayers.Layer
 setOpacity
 setOptions
 setSize
 setSource, OpenLayers.Control.Split
 setTileSize
 setUrl
 setVisibility
 show
 start, OpenLayers.Tween
 startsWith
 stop, OpenLayers.Tween
 supported
T
 time, OpenLayers.Console
 timeEnd, OpenLayers.Console
 toArray, OpenLayers.Bounds
 toBBOX, OpenLayers.Bounds
 toGeometry, OpenLayers.Bounds
 toggle, OpenLayers.Element
 toShortString, OpenLayers.LonLat
 toString, OpenLayers.Bounds
 trace, OpenLayers.Console
 transform
 translate, OpenLayers.Lang
 triggerEvent, OpenLayers.Events
 trim
+ +
save: function(features)
Tell the layer protocol to commit unsaved features.
setAttributeNS: function(node,
uri,
name,
value)
Adds a new attribute or changes the value of an attribute with the given namespace and name.
setBackgroundColor:function(color)
setBackgroundColor:function(color)
setBaseLayer: function(newBaseLayer)
Allows user to specify one of the currently-loaded layers as the Map’s new base layer.
setBorder:function()
setCenter: function(lonlat,
zoom,
dragging,
forceZoomChange)
Set the map center (and optionally, the zoom level).
setCode: function(code)
Set the language code for string translation.
setDefaultStyle: function(style)
Sets the default style for this style object.
setIsBaseLayer: function(isBaseLayer)
setLayer: function(layer)
Set the editable layer.
setLayerIndex: function (layer,
idx)
Move the given layer to the specified (zero-based) index in the layer list, changing its z-index in the map display.
setMap: function(map)
Overridden from EventPane because if a map type has been specified, we need to attach a listener for the first moveend -- this is how we will know that the map has been centered.
setMap: function(map)
setMap: function(map)
When the layer is added to a map, then we can fetch our origin (if we don’t have one.)
setMap: function(map)
When the layer is added to a map, then we can fetch our origin (if we don’t have one.)
setMap: function(map)
Overridden from EventPane because we need to remove this yahoo event pane which prohibits our drag and drop, and we can only do this once the map has been loaded and centered.
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setName: function(newName)
Sets the new layer name for this layer.
setOpacity: function(opacity)
Sets the opacity for the entire layer (all images)
setOpacity: function(opacity)
Sets the opacity for all the markers.
setOpacity: function (opacity)
Call the setOpacity method of the appropriate parent class to set the opacity.
setOpacity:function(opacity)
setOptions: function (newOptions)
setOptions: function(options)
Change the map options
setSize:function(contentSize)
setSize:function(contentSize)
setSize:function(contentSize)
Overridden here, because we need to update the blocks whenever the size of the popup has changed.
setSource: function(layer)
Set the source layer for edits layer.
setTileSize: function(size)
Set the tile size based on the map size.
setTileSize: function(size)
Check if we are in singleTile mode and if so, set the size as a ratio of the map size (as specified by the layer’s ‘ratio’ property).
setUrl: function(newUrl)
setUrl: function(newUrl)
setVisibility: function(visibility)
Set the visibility flag for the layer and hide/show & redraw accordingly.
setVisibility: function(visibility,
noEvent)
Set the visibility flag for the layer and hide/show&redraw accordingly.
show: function()
Show element(s) passed in
show: function()
Overridden from Popup since user might hide popup and then show() it in a new location (meaning we might want to update the relative position on the show)
start: function(begin,
finish,
duration,
options)
Plays the Tween, and calls the callback method on each step
startsWith: function(str,
sub)
Test whether a string starts with another string.
Deprecated.
stop: function()
Stops the Tween, and calls the done callback Doesn’t do anything if animation is already finished
supported: function()
This should be overridden by specific subclasses
supported: function()
Determine whether a browser supports Gears
supported: function()
This should be overridden by specific subclasses
supported: function()
{Boolean} Whether or not the browser supports the renderer class
supported: function()
{Boolean} Whether or not the browser supports the SVG renderer
supported: function()
Determine whether a browser supports this renderer.
+ + + +
time: function()
Creates a new timer under the given name.
timeEnd: function()
Stops a timer created by a call to OpenLayers.Console.time(name) and writes the time elapsed.
toArray: function()
{Array} array of left, bottom, right, top
toBBOX:function(decimal)
toGeometry: function()
Create a new polygon geometry based on this bounds.
toggle: function()
Toggle the visibility of element(s) passed in
toShortString:function()
{String} Shortened String representation of OpenLayers.LonLat object.
toString:function()
{String} String representation of bounds object.
trace: function()
Prints an interactive stack trace of JavaScript execution at the point where it is called.
transform: function(source,
dest)
Transform the Bounds object from source to dest.
transform: function(source,
dest)
Reproject the components geometry from source to dest.
transform: function(source,
dest)
Reproject the components geometry from source to dest.
transform: function(source,
dest)
Translate the x,y properties of the point from source to dest.
transform: function(source,
dest)
Transform the LonLat object from source to dest.
OpenLayers.Projection.transform = function(point,
source,
dest)
Transform a point coordinate from one projection to another.
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
triggerEvent: function (type,
evt)
Trigger a specified registered event.
trim: function(str)
Removes leading and trailing whitespace characters from a string.
Deprecated.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Functions8.html b/openlayers/doc/apidocs/index/Functions8.html new file mode 100644 index 0000000..f20a3f9 --- /dev/null +++ b/openlayers/doc/apidocs/index/Functions8.html @@ -0,0 +1,46 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
U
 unregister, OpenLayers.Events
 update
 updateSize
 userError, OpenLayers.Console
V
 value2regex, OpenLayers.Filter.Comparison
 visible, OpenLayers.Element
W
 warn, OpenLayers.Console
 wrapDateLine
 write
Z
 Z_ORDER_DRAWING_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
 Z_ORDER_Y_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
 zoomIn, OpenLayers.Map
 zoomOut, OpenLayers.Map
 zoomTo, OpenLayers.Map
 zoomToExtent, OpenLayers.Map
 zoomToMaxExtent, OpenLayers.Map
 zoomToScale, OpenLayers.Map
+ +
unregister: function (type,
obj,
func)
update: function()
Construct a request updating modified features.
update: function(feature,
options)
Construct a request updating modified feature.
update: function(features,
options)
Construct a request updating modified feature.
updateSize: function()
This function should be called by any external code which dynamically changes the size of the map div (because mozilla wont let us catch the “onresize” for an element)
updateSize: function()
Auto size the popup so that it precisely fits its contents (as determined by this.contentDiv.innerHTML).
userError: function(error)
A single interface for showing error messages to the user.
+ + + +
value2regex: function(wildCard,
singleChar,
escapeChar)
Converts the value of this rule into a regular expression string, according to the wildcard characters specified.
visible: function(element)
+ + + +
warn: function()
Writes a message to the console with the visual “warning” icon and color coding and a hyperlink to the line where it was called.
wrapDateLine: function(maxExtent,
options)
wrapDateLine: function(maxExtent)
write: function(request)
Generate an ArcXml document string for sending to an ArcIMS server.
write: function(filter,
options)
Write an ogc:Filter given a filter object.
write: function(obj,
pretty)
Serialize a feature, geometry, array of features into a GeoJSON string.
write: function(features)
Accept Feature Collection, and return a string.
write: function(features)
Generate a GML document string given a list of features.
write: function(value,
pretty)
Serialize an object into a JSON string.
write: function(features)
Accept Feature Collection, and return a string.
write: function(features)
Takes a list of features, returns a serialized OSM format file for use in tools like JOSM.
write: function(sld,
options)
Write a SLD document given a list of styles.
write: function(obj,
options)
Write a WMC document given a map.
write: function(node)
Serialize a DOM node into a XML string.
+ + + +
Z_ORDER_DRAWING_ORDER: function(indexer,
newNode,
nextNode)
This method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the newest drawn will be the front most within that z-index.
Z_ORDER_Y_ORDER: function(indexer,
newNode,
nextNode)
This one should really be called Z_ORDER_Y_ORDER_DRAWING_ORDER, as it best describes which ordering methods have precedence (though, the name would be too long).
zoomIn: function()
zoomOut: function()
zoomTo: function(zoom)
Zoom to a specific zoom level
zoomToExtent: function(bounds,
closest)
Zoom to the passed in bounds, recenter
zoomToMaxExtent: function(options)
Zoom to the full extent and recenter.
zoomToScale: function(scale,
closest)
Zoom to a specified scale
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General.html b/openlayers/doc/apidocs/index/General.html new file mode 100644 index 0000000..0e72265 --- /dev/null +++ b/openlayers/doc/apidocs/index/General.html @@ -0,0 +1,38 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
A
 abort, OpenLayers.Protocol.HTTP
 activate
 activateControl, OpenLayers.Control.Panel
 add
 addComponent, OpenLayers.Geometry.LinearRing
 addComponents, OpenLayers.Geometry.Collection
 addControl, OpenLayers.Map
 addControls, OpenLayers.Control.Panel
 addEventType, OpenLayers.Events
 addFeatures, OpenLayers.Layer.Vector
 addLayer, OpenLayers.Map
 addLayers, OpenLayers.Map
 addMarker, OpenLayers.Layer.Markers
 addNodes, OpenLayers.Layer.PointTrack
 addOptions, OpenLayers.Layer
 addPoint, OpenLayers.Geometry.MultiPoint
 addPopup, OpenLayers.Map
 addRules, OpenLayers.Style
 addTile, OpenLayers.Layer.Grid
 addTransform, OpenLayers.Projection
 Ajax.js
 allOverlays, OpenLayers.Map
 alwaysInRange, OpenLayers.Layer
 Anchored, OpenLayers.Popup.Anchored.OpenLayers.Popup
 AnchoredBubble, OpenLayers.Popup.AnchoredBubble.OpenLayers.Popup
 ArcGIS93Rest, OpenLayers.Layer.ArcGIS93Rest.OpenLayers.Layer
 ArcIMS, OpenLayers.Layer.ArcIMS.OpenLayers.Layer
 ArcXML, OpenLayers.Format.ArcXML.OpenLayers.Format
 areaTags, OpenLayers.Format.OSM
 ArgParser, OpenLayers.Control.ArgParser.OpenLayers.Control
 argParserClass, OpenLayers.Control.Permalink
 ascending, OpenLayers.Control.LayerSwitcher
 assert, OpenLayers.Console
 async, OpenLayers.Layer.ArcIMS
 attributes, OpenLayers.Feature.Vector
 attribution, OpenLayers.Layer
 Attribution, OpenLayers.Control.Attribution.OpenLayers.Control
 auto, OpenLayers.Strategy.Save
 autoPan, OpenLayers.Control.OverviewMap
 autoSize
B
 BACKGROUND_ID_SUFFIX, OpenLayers.Renderer.Elements
 base, OpenLayers.Control.Permalink
 Base
 baseLayer, OpenLayers.Map
 BBOX, OpenLayers.Strategy.BBOX.OpenLayers.Strategy
 begin, OpenLayers.Tween
 bind
 bindAsEventListener
 bounds, OpenLayers.Tile
 Bounds, OpenLayers.Bounds.OpenLayers
 box
 Box
 boxDivClassName, OpenLayers.Handler.Box
 Boxes, OpenLayers.Layer.Boxes.OpenLayers.Layer
 BROWSER_EVENTS, OpenLayers.Events
 buffer, OpenLayers.Layer.Grid
 buildGeometryNode, OpenLayers.Format.GML
+ +
abort: function(response)
Abort an ongoing request, the response object passed to this method must come from this HTTP protocol (as a result of a create, read, update, delete or commit operation).
activate: function()
Activate the control and the feature handler.
activate: function()
Activate the control.
activate: function()
Activate the control.
activate: function()
activate: function()
Activate the control.
activate: function()
Activate the control.
activate: function()
Turn on the handler.
activate: function()
turn on the handler
activate: function()
Turn on the handler.
activate: function()
Activate the strategy.
activate: function()
Activate the strategy.
activate: function()
Activate the strategy.
activateControl: function (control)
add:function(x,
y)
add:function(lon,
lat)
add:function(x,
y)
addComponent: function(point,
index)
Adds a point to geometry components.
addComponents: function(components)
Add components to this geometry.
addControl: function (control,
px)
addControls: function(controls)
To build a toolbar, you add a set of controls to it.
addEventType: function(eventName)
Add a new event type to this events object.
addFeatures: function(features,
options)
Add Features to the layer.
addLayer: function (layer)
addLayers: function (layers)
addMarker: function(marker)
addNodes: function(pointFeatures)
Adds point features that will be used to create lines from, using point pairs.
addOptions: function (newOptions)
addPoint: function(point,
index)
Wrapper for OpenLayers.Geometry.Collection.addComponent
addPopup: function(popup,
exclusive)
addRules: function(rules)
Adds rules to this style.
addTile:function(bounds,
position)
Gives subclasses of Grid the opportunity to create an OpenLayer.Tile of their choosing.
OpenLayers.Projection.addTransform = function(from,
to,
method)
Set a custom transform method between two projections.
{Boolean} Allow the map to function with “overlays” only.
{Boolean} If a layer’s display should not be scale-based, this should be set to true.
Create a new ArcGIS93Rest layer object.
Create a new ArcIMS layer object.
Create a new parser/writer for ArcXML.
{Array} List of tags indicating that something is an area.
{Class} The ArgParser control class (not instance) to use with this control.
{Boolean}
assert: function()
Tests that an expression is true.
{Boolean} Request images asynchronously.
{Object} This object holds arbitrary properties that describe the feature.
{String} Attribution string, displayed when an OpenLayers.Control.Attribution has been added to the map.
{Boolean | Number} Auto-save.
{Boolean} Always pan the overview map, so the extent marker remains in the center.
{Boolean} Resize the popup to auto-fit the contents.
{Boolean} Framed Cloud is autosizing by default.
+ + + +
{String}
{String}
Instances of this class are not created directly.
{OpenLayers.Layer} The currently selected base layer.
Create a new BBOX strategy.
{Object} Values to start the animation with
bind: function(func,
object)
Bind a function to an object.
Deprecated.
bindAsEventListener: function(func,
object)
Bind a function to an object, and configure it to receive the event object as first parameter when called.
Deprecated.
{OpenLayers.Bounds} null
Construct a new bounds object.
{Boolean} Allow feature selection by drawing a box.
{Boolean} Allow feature selection by drawing a box.
{String} The CSS class to use for drawing the box.
{Array(String)} supported events
{Integer} Used only when in gridded mode, this specifies the number of extra rows and colums of tiles on each side which will surround the minimum grid tiles to cover the map.
buildGeometryNode: function(geometry)
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General10.html b/openlayers/doc/apidocs/index/General10.html new file mode 100644 index 0000000..ea8e19c --- /dev/null +++ b/openlayers/doc/apidocs/index/General10.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
O
 offset, OpenLayers.Pixel
 onComplete, OpenLayers.Control.DragFeature
 onDrag, OpenLayers.Control.DragFeature
 onFeatureInsert, OpenLayers.Layer.Vector
 onMapResize
 onModification, OpenLayers.Control.ModifyFeature
 onModificationEnd, OpenLayers.Control.ModifyFeature
 onModificationStart, OpenLayers.Control.ModifyFeature
 onSelect, OpenLayers.Control.SelectFeature
 onStart, OpenLayers.Control.DragFeature
 onUnselect, OpenLayers.Control.SelectFeature
 OpenLayers
 OpenLayers Base Types
 OpenLayers.Ajax
 OpenLayers.Ajax.Base
 OpenLayers.Ajax.Request
 OpenLayers.Ajax.Responders
 OpenLayers.Ajax.Response
 OpenLayers.Array
 OpenLayers.Bounds
 OpenLayers.Console
 OpenLayers.Control
 OpenLayers.Control.ArgParser
 OpenLayers.Control.Attribution
 OpenLayers.Control.Button
 OpenLayers.Control.DragFeature
 OpenLayers.Control.DragPan
 OpenLayers.Control.DrawFeature
 OpenLayers.Control.EditingToolbar
 OpenLayers.Control.GetFeature
 OpenLayers.Control.KeyboardDefaults
 OpenLayers.Control.LayerSwitcher
 OpenLayers.Control.Measure
 OpenLayers.Control.ModifyFeature
 OpenLayers.Control.MouseDefaults
 OpenLayers.Control.MousePosition
 OpenLayers.Control.MouseToolbar
 OpenLayers.Control.Navigation
 OpenLayers.Control.NavigationHistory
 OpenLayers.Control.NavToolbar
 OpenLayers.Control.OverviewMap
 OpenLayers.Control.Pan
 OpenLayers.Control.Panel
 OpenLayers.Control.PanPanel
 OpenLayers.Control.PanZoom
 OpenLayers.Control.PanZoomBar
 OpenLayers.Control.Permalink
 OpenLayers.Control.Scale
 OpenLayers.Control.ScaleLine
 OpenLayers.Control.SelectFeature
 OpenLayers.Control.Snapping
 OpenLayers.Control.Split
 OpenLayers.Control.WMSGetFeatureInfo
 OpenLayers.Control.ZoomBox
 OpenLayers.Control.ZoomIn
 OpenLayers.Control.ZoomOut
 OpenLayers.Control.ZoomPanel
 OpenLayers.Control.ZoomToMaxExtent
 OpenLayers.Easing
 OpenLayers.Easing.Expo
 OpenLayers.Easing.Linear
 OpenLayers.Easing.Quad
 OpenLayers.Element
 OpenLayers.ElementsIndexer
 OpenLayers.ElementsIndexer.IndexingMethods
 OpenLayers.Event
 OpenLayers.Events
 OpenLayers.Feature
 OpenLayers.Feature.Vector
 OpenLayers.Feature.WFS
 OpenLayers.Filter
 OpenLayers.Filter.Comparison
 OpenLayers.Filter.FeatureId
 OpenLayers.Filter.Logical
 OpenLayers.Filter.Spatial
 OpenLayers.Format
 OpenLayers.Format.ArcXML
 OpenLayers.Format.ArcXML.Features
 OpenLayers.Format.Filter
 OpenLayers.Format.Filter.v1
 OpenLayers.Format.Filter.v1_0_0
 OpenLayers.Format.Filter.v1_1_0
 OpenLayers.Format.GeoJSON
 OpenLayers.Format.GeoRSS
 OpenLayers.Format.GML
 OpenLayers.Format.GML.Base
 OpenLayers.Format.GML.v2
 OpenLayers.Format.GML.v3
 OpenLayers.Format.GPX
 OpenLayers.Format.JSON
 OpenLayers.Format.KML
 OpenLayers.Format.OSM
 OpenLayers.Format.SLD
 OpenLayers.Format.SLD.v1
 OpenLayers.Format.SLD.v1_0_0
 OpenLayers.Format.Text
 OpenLayers.Format.WFS
 OpenLayers.Format.WFSCapabilities
 OpenLayers.Format.WFSCapabilities.v1
 OpenLayers.Format.WFSCapabilities/v1_0_0
 OpenLayers.Format.WFSCapabilities/v1_1_0
 OpenLayers.Format.WFST.v1
 OpenLayers.Format.WFST.v1_0_0
 OpenLayers.Format.WFST.v1_1_0
 OpenLayers.Format.WKT
 OpenLayers.Format.WMC
 OpenLayers.Format.WMC.v1
 OpenLayers.Format.WMC.v1_0_0
 OpenLayers.Format.WMC.v1_1_0
 OpenLayers.Format.WMSCapabilities
 OpenLayers.Format.WMSCapabilities.v1_1
 OpenLayers.Format.WMSCapabilities/v1_1_0
 OpenLayers.Format.WMSCapabilities/v1_1_1
 OpenLayers.Format.WMSDescribeLayer
 OpenLayers.Format.WMSDescribeLayer.v1_1
 OpenLayers.Format.WMSGetFeatureInfo
 OpenLayers.Format.XML
 OpenLayers.Function
 OpenLayers.Geometry
 OpenLayers.Geometry.Collection
 OpenLayers.Geometry.Curve
 OpenLayers.Geometry.LinearRing
 OpenLayers.Geometry.LineString
 OpenLayers.Geometry.MultiLineString
 OpenLayers.Geometry.MultiPoint
 OpenLayers.Geometry.MultiPolygon
 OpenLayers.Geometry.Point
 OpenLayers.Geometry.Polygon
 OpenLayers.Geometry.Rectangle
 OpenLayers.Handler
 OpenLayers.Handler.Box
 OpenLayers.Handler.Click
 OpenLayers.Handler.Drag
 OpenLayers.Handler.Feature
 OpenLayers.Handler.Hover
 OpenLayers.handler.Keyboard
 OpenLayers.Handler.MouseWheel
 OpenLayers.Handler.Path
 OpenLayers.Handler.Point
 OpenLayers.Handler.Polygon
 OpenLayers.Handler.RegularPolygon
 OpenLayers.Icon
 OpenLayers.Lang
 OpenLayers.Lang[“ca”]
 OpenLayers.Lang[“cs-CZ”]
 OpenLayers.Lang[“da-DK”]
 OpenLayers.Lang[“de”]
 OpenLayers.Lang[“en”]
 OpenLayers.Lang[“en-CA”]
 OpenLayers.Lang[“es”]
 OpenLayers.Lang[“fr”]
 OpenLayers.Lang[“it”]
 OpenLayers.Lang[“nb”]
 OpenLayers.Lang[“nl”]
 OpenLayers.Lang[“pt-BR”]
 OpenLayers.Lang[“sv-SE”]
 OpenLayers.Lang[“zh-CN”]
 OpenLayers.Lang[“zh-TW”]
 OpenLayers.Layer
 OpenLayers.Layer.ArcGIS93Rest
 OpenLayers.Layer.ArcIMS
 OpenLayers.Layer.Boxes
 OpenLayers.Layer.EventPane
 OpenLayers.Layer.FixedZoomLevels
 OpenLayers.Layer.GeoRSS
 OpenLayers.Layer.GML
 OpenLayers.Layer.Google
 OpenLayers.Layer.Grid
 OpenLayers.Layer.HTTPRequest
 OpenLayers.Layer.Image
 OpenLayers.Layer.KaMap
 OpenLayers.Layer.KaMapCache
 OpenLayers.Layer.MapGuide
 OpenLayers.Layer.MapServer
 OpenLayers.Layer.MapServer.Untiled
 OpenLayers.Layer.Markers
 OpenLayers.Layer.MultiMap
 OpenLayers.Layer.OSM
 OpenLayers.Layer.PointTrack
 OpenLayers.Layer.SphericalMercator
 OpenLayers.Layer.Text
 OpenLayers.Layer.TileCache
 OpenLayers.Layer.TMS
 OpenLayers.Layer.Vector
 OpenLayers.Layer.Vector.RootContainer
 OpenLayers.Layer.VirtualEarth
 OpenLayers.Layer.WFS
 OpenLayers.Layer.WMS
 OpenLayers.Layer.WMS.Untiled
 OpenLayers.Layer.WorldWind
 OpenLayers.Layer.XYZ
 OpenLayers.Layer.Yahoo
 OpenLayers.LonLat
 OpenLayers.Map
 OpenLayers.Marker
 OpenLayers.Marker.Box
 OpenLayers.Number
 OpenLayers.Pixel
 OpenLayers.Popup
 OpenLayers.Popup.Anchored
 OpenLayers.Popup.AnchoredBubble
 OpenLayers.Popup.Framed
 OpenLayers.Popup.FramedCloud
 OpenLayers.Projection
 OpenLayers.Protocol
 OpenLayers.Protocol.HTTP
 OpenLayers.Protocol.Response
 OpenLayers.Protocol.SQL
 OpenLayers.Protocol.SQL.Gears
 OpenLayers.Protocol.WFS.v1
 OpenLayers.Protocol.WFS.v1_0_0
 OpenLayers.Protocol.WFS.v1_1_0
 OpenLayers.Renderer
 OpenLayers.Renderer.Canvas
 OpenLayers.Renderer.Elements
 OpenLayers.Renderer.SVG
 OpenLayers.Renderer.VML
 OpenLayers.Request
 OpenLayers.Request.XMLHttpRequest
 OpenLayers.Rule
 OpenLayers.Size
 OpenLayers.Strategy
 OpenLayers.Strategy.BBOX
 OpenLayers.Strategy.Cluster
 OpenLayers.Strategy.Fixed
 OpenLayers.Strategy.Paging
 OpenLayers.Strategy.Save
 OpenLayers.String
 OpenLayers.Style
 OpenLayers.StyleMap
 OpenLayers.Tile
 OpenLayers.Tile.Image
 OpenLayers.Tile.WFS
 OpenLayers.Tween
 OPTIONS, OpenLayers.Request
 OSM
 OVERLAY_PARAMS, OpenLayers.Layer.MapGuide
 OverviewMap, OpenLayers.Control.OverviewMap.OpenLayers.Control
 ovmap, OpenLayers.Control.OverviewMap
+ +
offset:function(px)
Parameters px - {OpenLayers.Pixel}
{Function} Define this function if you want to know when a feature is done dragging.
{Function} Define this function if you want to know about each move of a feature.
onFeatureInsert: function(feature)
method called after a feature is inserted.
onMapResize: function()
This function can be implemented by subclasses
onMapResize: function()
{Function} Deprecated.
{Function} Deprecated.
{Function} Deprecated.
{Function} Optional function to be called when a feature is selected.
{Function} Define this function if you want to know when a drag starts.
{Function} Optional function to be called when a feature is unselected.
The OpenLayers object provides a namespace for all things OpenLayers
OpenLayers custom string, number and function functions are described here.
Deprecated.
{Object}
Contains convenience functions for array manipulation.
Instances of this class represent bounding boxes.
The OpenLayers.Console namespace is used for debugging and error logging.
Controls affect the display or behavior of the map.
The ArgParser control adds location bar querystring parsing functionality to an OpenLayers Map.
The attribution control adds attribution from layers to the map display.
The Button control is a very simple push-button, for use with OpenLayers.Control.Panel.
The DragFeature control moves a feature with a drag of the mouse.
The DragPan control pans the map with a drag of the mouse.
The DrawFeature control draws point, line or polygon features on a vector layer when active.
The EditingToolbar is a panel of 4 controls to draw polygons, lines, points, or to navigate the map by panning.
Gets vector features for locations underneath the mouse cursor.
The KeyboardDefaults control adds panning and zooming functions, controlled with the keyboard.
The LayerSwitcher control displays a table of contents for the map.
Allows for drawing of features for measurements.
Control to modify features.
This class is DEPRECATED in 2.4 and will be removed by 3.0.
The MousePosition control displays geographic coordinates of the mouse pointer, as it is moved about the map.
This class is DEPRECATED in 2.4 and will be removed by 3.0.
The navigation control handles map browsing with mouse events (dragging, double-clicking, and scrolling the wheel).
A navigation history control.
This Toolbar is an alternative to the Navigation control that displays the state of the control, and provides a UI for changing state to use the zoomBox via a Panel control.
The OverMap control creates a small overview map, useful to display the extent of a zoomed map and your main map and provide additional navigation options to the User.
The Pan control is a single button to pan the map in one direction.
The Panel control is a container for other controls.
The PanPanel is visible control for panning the map North, South, East or West in small steps.
The PanZoom is a visible control, composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomPanel.
The PanZoomBar is a visible control composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomBar.
The Permalink control is hyperlink that will return the user to the current map view.
The Scale control displays the current map scale as a ratio (e.g.
The ScaleLine displays a small line indicator representing the current map scale on the map.
The SelectFeature control selects vector features from a given layer on click or hover.
Acts as a snapping agent while editing vector features.
Acts as a split feature agent while editing vector features.
The WMSGetFeatureInfo control uses a WMS query to get information about a point on the map.
The ZoomBox control enables zooming directly to a given extent, by drawing a box on the map.
The ZoomIn control is a button to increase the zoom level of a map.
The ZoomOut control is a button to decrease the zoom level of a map.
The ZoomPanel control is a compact collecton of 3 zoom controls: a OpenLayers.Control.ZoomIn, a OpenLayers.Control.ZoomToMaxExtent, and a OpenLayers.Control.ZoomOut.
The ZoomToMaxExtent control is a button that zooms out to the maximum extent of the map.
Easing Equations by Robert Penner, http://www.robertpenner.com/easing/
This class takes care of figuring out which order elements should be placed in the DOM based on given indexing methods.
These are the compare methods for figuring out where a new node should be placed within the indexer.
Utility functions for event handling.
Features are combinations of geography and attributes.
Vector features use the OpenLayers.Geometry classes as geometry description.
WFS handling class, for use as a featureClass on the WFS layer for handling ‘point’ WFS types.
This class represents an OGC Filter.
This class represents a comparison filter.
This class represents a ogc:FeatureId Filter, as being used for rule-based SLD styling
This class represents ogc:And, ogc:Or and ogc:Not rules.
This class represents a spatial filter.
Base class for format reading/writing a variety of formats.
Read/Wite ArcXML.
Read/Wite ArcXML features.
Read/Wite ogc:Filter.
Superclass for Filter version 1 parsers.
Write ogc:Filter version 1.0.0.
Write ogc:Filter version 1.1.0.
Read and write GeoJSON.
Read/write GeoRSS parser.
Read/Wite GML.
Superclass for GML parsers.
Parses GML version 2.
Parses GML version 3.
Read/write GPX parser.
A parser to read/write JSON safely.
Read/Wite KML.
OSM parser.
Read/Wite SLD.
Superclass for SLD version 1 parsers.
Write SLD version 1.0.0.
Read Text format.
Read/Write WFS.
Read WFS Capabilities.
Abstract class not to be instantiated directly.
Read WMS Capabilities version 1.0.0.
Read WFS Capabilities version 1.1.0.
Superclass for WFST parsers.
A format for creating WFS v1.0.0 transactions.
A format for creating WFS v1.1.0 transactions.
Class for reading and writing Well-Known Text.
Read and write Web Map Context documents.
Superclass for WMC version 1 parsers.
Read and write WMC version 1.0.0.
Read and write WMC version 1.1.0.
Read WMS Capabilities.
Abstract class not to be instantiated directly.
Read WMS Capabilities version 1.1.0.
Read WMS Capabilities version 1.1.1.
Read SLD WMS DescribeLayer response DescribeLayer is meant to couple WMS to WFS and WCS
Read SLD WMS DescribeLayer response for WMS 1.1.X WMS 1.1.X is tightly coupled to SLD 1.0.0
Class to read GetFeatureInfo responses from Web Mapping Services
Read and write XML.
Contains convenience functions for function manipulation.
A Geometry is a description of a geographic object.
A Collection is exactly what it sounds like: A collection of different Geometries.
A Curve is a MultiPoint, whose points are assumed to be connected.
A Linear Ring is a special LineString which is closed.
A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
A MultiLineString is a geometry with multiple OpenLayers.Geometry.LineString components.
MultiPoint is a collection of Points.
MultiPolygon is a geometry with multiple OpenLayers.Geometry.Polygon components.
Point geometry class.
Polygon is a collection of Geometry.LinearRings.
This class is not supported, and probably isn’t what you’re looking for.
Base class to construct a higher-level handler for event sequences.
Handler for dragging a rectangle across the map.
A handler for mouse clicks.
The drag handler is used to deal with sequences of browser events related to dragging.
Handler to respond to mouse events related to a drawn feature.
The hover handler is to be used to emulate mouseovers on objects on the map that aren’t DOM elements.
A handler for keyboard events.
Handler for wheel up/down events.
Handler to draw a path on the map.
Handler to draw a point on the map.
Handler to draw a polygon on the map.
Handler to draw a regular polygon on the map.
The icon represents a graphical icon on the screen.
Internationalization namespace.
Dictionary for Catalan, UTF8 encoding.
Dictionary for Czech.
Dictionary for Danish.
Dictionary for German.
Dictionary for English.
Dictionary for English-CA.
Dictionary for Spanish, UTF8 encoding.
Dictionary for French.
Dictionary for Italian.
Dictionary for norwegian bokmål (Norway).
Dictionary for Dutch.
Dictionary for Brazilian Portuguese.
Dictionary for swedish (Sweden).
Dictionary for Simplified Chinese.
Dictionary for Traditional Chinese.
Instances of OpenLayers.Layer.ArcGIS93Rest are used to display data from ESRI ArcGIS Server 9.3 (and up?)
Instances of OpenLayers.Layer.ArcIMS are used to display data from ESRI ArcIMS Mapping Services.
Draw divs as ‘boxes’ on the layer.
Base class for 3rd party layers.
Some Layers will already have established zoom levels (like google or ve).
Add GeoRSS Point features to your map.
Create a vector layer by parsing a GML file.
Base class for layers that use a lattice of tiles.
Instances of OpenLayers.Layer.Image are used to display data from a web accessible image as a map layer.
This class is designed to talk directly to a web-accessible ka-Map cache generated by the precache2.php script.
Instances of OpenLayers.Layer.MapGuide are used to display data from a MapGuide OS instance.
Instances of OpenLayers.Layer.MapServer are used to display data from a MapServer CGI instance.
Deprecated.
Note that MultiMap does not fully support the sphericalMercator option.
A class to access OpenStreetMap tiles.
Vector layer to display ordered point features as a line, creating one LineString feature for each pair of two points.
A mixin for layers that wraps up the pieces neccesary to have a coordinate conversion for working with commercial APIs which use a spherical mercator projection.
This layer creates markers given data in a text file.
A read only TileCache layer.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
A special layer type to combine multiple vector layers inside a single renderer root container.
Instances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.
Deprecated.
The XYZ class is designed to make it easier for people who have tiles arranged by a standard XYZ grid.
This class represents a longitude and latitude pair
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
Contains convenience functions for manipulating numbers.
This class represents a screen coordinate, in x and y coordinates
A popup is a small div that can opened and closed on the map.
Class for coordinate transforms between coordinate systems.
Abstract vector layer protocol class.
A basic HTTP protocol for vector layers.
Protocols return Response objects to their users.
Abstract SQL protocol class.
This Protocol stores feature in the browser via the Gears Database module http://code.google.com/apis/gears/api_database.html.
Abstract class for for v1.0.0 and v1.1.0 protocol.
A WFS v1.0.0 protocol for vector layers.
A WFS v1.1.0 protocol for vector layers.
This is the base class for all renderers.
A renderer based on the 2D ‘canvas’ drawing element.element
This is another virtual class in that it should never be instantiated by itself as a Renderer.
Render vector features in browsers with VML capability.
The OpenLayers.Request namespace contains convenience methods for working with XMLHttpRequests.
Standard-compliant (W3C) cross-browser implementation of the XMLHttpRequest object.
This class represents an SLD Rule, as being used for rule-based SLD styling.
Instances of this class represent a width/height pair
Abstract vector layer strategy class.
A simple strategy that reads new features when the viewport invalidates some bounds.
Strategy for vector feature clustering.
A simple strategy that requests features once and never requests new data.
Strategy for vector feature paging
A strategy that commits newly created or modified features.
Contains convenience functions for string manipulation.
This class represents a UserStyle obtained from a SLD, containing styling rules.
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
Instances of OpenLayers.Tile.WFS are used to manage the image tiles used by various layers.
OPTIONS: function(config)
Send an HTTP OPTIONS request.
Create a new parser for OSM.
{Object} Hashtable of default parameter key/value pairs for untiled layer
Create a new overview map
{OpenLayers.Map} A reference to the overview map itself.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General11.html b/openlayers/doc/apidocs/index/General11.html new file mode 100644 index 0000000..a828f32 --- /dev/null +++ b/openlayers/doc/apidocs/index/General11.html @@ -0,0 +1,38 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
P
 pageCount, OpenLayers.Strategy.Paging
 pageLength, OpenLayers.Strategy.Paging
 pageNext, OpenLayers.Strategy.Paging
 pageNum, OpenLayers.Strategy.Paging
 pagePrevious, OpenLayers.Strategy.Paging
 Paging, OpenLayers.Strategy.Paging.OpenLayers.Strategy
 pan, OpenLayers.Map
 Pan, OpenLayers.Control.Pan.OpenLayers.Control
 Panel, OpenLayers.Control.Panel.OpenLayers.Control
 panMapIfOutOfView
 panMethod, OpenLayers.Map
 PanPanel, OpenLayers.Control.PanPanel.OpenLayers.Control
 panTo, OpenLayers.Map
 PanZoom, OpenLayers.Control.PanZoom.OpenLayers.Control
 PanZoomBar, OpenLayers.Control.PanZoomBar.OpenLayers.Control
 Path, OpenLayers.Handler.Path.OpenLayers.Handler
 Permalink, OpenLayers.Control.Permalink.OpenLayers.Control
 persist
 Pixel, OpenLayers.Pixel.OpenLayers
 pixelTolerance
 placemarksDesc, OpenLayers.Format.KML
 Point
 PointTrack, OpenLayers.Layer.PointTrack.OpenLayers
 Polygon
 Popup, OpenLayers.Popup.OpenLayers
 popupClass, OpenLayers.Feature
 popupSize, OpenLayers.Layer.GeoRSS
 POST, OpenLayers.Request
 preFeatureInsert, OpenLayers.Layer.Vector
 prefix, OpenLayers.Control.MousePosition
 preload, OpenLayers.Strategy.Fixed
 previous, OpenLayers.Control.NavigationHistory
 previousOptions, OpenLayers.Control.NavigationHistory
 profile, OpenLayers.Console
 profileEnd, OpenLayers.Console
 projection
 Projection, OpenLayers.Projection.OpenLayers
 Properties
OpenLayers.ControlOpenLayers.Control.ArgParserOpenLayers.Control.AttributionOpenLayers.Control.DragFeatureOpenLayers.Control.DrawFeatureOpenLayers.Control.GetFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.MeasureOpenLayers.Control.ModifyFeatureOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.OverviewMapOpenLayers.Control.PanOpenLayers.Control.PanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.SelectFeatureOpenLayers.Control.SplitOpenLayers.Control.WMSGetFeatureInfoOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Filter.ComparisonOpenLayers.Filter.FeatureIdOpenLayers.Filter.LogicalOpenLayers.Filter.SpatialOpenLayers.FormatOpenLayers.Format.FilterOpenLayers.Format.GeoRSSOpenLayers.Format.GMLOpenLayers.Format.GML.BaseOpenLayers.Format.GPXOpenLayers.Format.JSONOpenLayers.Format.KMLOpenLayers.Format.OSMOpenLayers.Format.SLDOpenLayers.Format.SLD.v1OpenLayers.Format.TextOpenLayers.Format.WFSOpenLayers.Format.WFSCapabilitiesOpenLayers.Format.WFST.v1OpenLayers.Format.WMCOpenLayers.Format.WMSCapabilitiesOpenLayers.Format.WMSDescribeLayerOpenLayers.Format.WMSGetFeatureInfoOpenLayers.Geometry.CollectionOpenLayers.Geometry.PointOpenLayers.HandlerOpenLayers.Handler.BoxOpenLayers.Handler.ClickOpenLayers.Handler.HoverOpenLayers.Handler.PointOpenLayers.Handler.RegularPolygonOpenLayers.LangOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.EventPaneOpenLayers.Layer.GeoRSSOpenLayers.Layer.GMLOpenLayers.Layer.GoogleOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.KaMapOpenLayers.Layer.MapGuideOpenLayers.Layer.MapServer.UntiledOpenLayers.Layer.MarkersOpenLayers.Layer.MultiMapOpenLayers.Layer.TextOpenLayers.Layer.TileCacheOpenLayers.Layer.TMSOpenLayers.Layer.VectorOpenLayers.Layer.Vector.RootContainerOpenLayers.Layer.VirtualEarthOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.Layer.WMS.UntiledOpenLayers.Layer.WorldWindOpenLayers.Layer.XYZOpenLayers.Layer.YahooOpenLayers.LonLatOpenLayers.MapOpenLayers.PixelOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.Protocol.SQLOpenLayers.RequestOpenLayers.RuleOpenLayers.SizeOpenLayers.Strategy.BBOXOpenLayers.Strategy.ClusterOpenLayers.Strategy.FixedOpenLayers.Strategy.SaveOpenLayers.StyleOpenLayers.TileOpenLayers.Tween
 property
 protocol, OpenLayers.Control.GetFeature
 Protocol, OpenLayers.Protocol.OpenLayers
 PUT, OpenLayers.Request
R
 radius, OpenLayers.Handler.RegularPolygon
 raiseLayer, OpenLayers.Map
 ratio
 read
 Rectangle, OpenLayers.Geometry.Rectangle.OpenLayers.Geometry
 redraw
 refresh, OpenLayers.Layer.WFS
 register, OpenLayers.Events
 registerPriority, OpenLayers.Events
 RegularPolygon, OpenLayers.Handler.RegularPolygon.OpenLayers.Handler
 remove
 removeComponent
 removeComponents, OpenLayers.Geometry.Collection
 removeControl, OpenLayers.Map
 removeFeatures, OpenLayers.Layer.Vector
 removeLayer, OpenLayers.Map
 removeMap
 removeMarker
 removePoint, OpenLayers.Geometry.MultiPoint
 removePopup, OpenLayers.Map
 render, OpenLayers.Map
 Renderer, OpenLayers.Renderer.OpenLayers
 rendererOptions, OpenLayers.Layer.Vector
 reportError, OpenLayers.Layer.Vector
 reproject, OpenLayers.Layer.HTTPRequest
 Request, OpenLayers.Ajax.Request.OpenLayers.Ajax
 RESHAPE, OpenLayers.Control.ModifyFeature
 resize
 RESIZE, OpenLayers.Control.ModifyFeature
 resolution, OpenLayers.Layer.KaMap
 resolutions
 RESOLUTIONS
 Response
 restrictedExtent, OpenLayers.Map
 RootContainer, OpenLayers.Layer.Vector.RootContainer.OpenLayers.Layer.Vector
 rotate
 ROTATE, OpenLayers.Control.ModifyFeature
 rssns, OpenLayers.Format.GeoRSS
 Rule, OpenLayers.Rule.OpenLayers
+ +
pageCount: function()
Get the total count of pages given the current cache of features.
pageLength: function(newLength)
Gets or sets page length.
pageNext: function(event)
Display the next page of features.
pageNum: function()
Get the zero based page number.
pagePrevious: function()
Display the previous page of features.
Create a new paging strategy.
pan: function(dx,
dy,
options)
Allows user to pan by a value of screen pixels
Control which handles the panning (in any of the cardinal directions) of the map by a set px distance.
Create a new control panel.
{Boolean} When drawn, pan map such that the entire popup is visible in the current viewport (if necessary).
{Boolean} Framed Cloud does pan into view by default.
{Function} The Easing function to be used for tweening.
Add the four directional pan buttons.
panTo: function(lonlat)
Allows user to pan to a new lonlat If the new lonlat is in the current extent the map will slide smoothly
Create a new path hander
{Boolean} Keep the temporary measurement sketch drawn after the measurement is complete.
{Boolean} Leave the feature rendered until destroyFeature is called.
{Boolean} Leave the feature rendered until clear is called.
Create a new OpenLayers.Pixel instance
{Number} Maximum number of pixels between mouseup and mousedown for an event to be considered a click.
{String} Name of the placemarks.
Construct a point geometry.
Create a new point handler.
Constructor for a new OpenLayers.PointTrack instance.
Constructor for a Polygon geometry.
Create a Polygon Handler.
Create a popup.
{OpenLayers.Class} The class which will be used to instantiate a new Popup.
{OpenLayers.Size} This determines the size of GeoRSS popups.
POST: function(config)
Send a POST request.
preFeatureInsert: function(feature)
method called before a feature is inserted.
{String}
{Boolean} Load data before layer made visible.
{OpenLayers.Control} A button type control whose trigger method restores the previous state managed by this control.
{Object} Set this property on the options argument of the constructor to set optional properties on the previous control.
profile: function()
Turns on the JavaScript profiler.
profileEnd: function()
Turns off the JavaScript profiler and prints its report.
{OpenLayers.Projection} or {String} Set in the layer options to override the default projection string this layer - also set maxExtent, maxResolution, and units if appropriate.
{String} Set in the map options to override the default projection string this map - also set maxExtent, maxResolution, and units if appropriate.
This class offers several methods for interacting with a wrapped pro4js projection object.
{String} name of the context property to compare
{String} Name of the context property to compare.
{OpenLayers.Protocol} Required.
Abstract class for vector protocols.
PUT: function(config)
Send an HTTP PUT request.
+ + + +
{Float} Optional radius in map units of the regular polygon.
raiseLayer: function (layer,
delta)
Change the index of the given layer by delta.
{Float} Used only when in single-tile mode, this specifies the ratio of the size of the single tile to the size of the map.
{Float} the ratio of image/tile size to map size (this is the untiled buffer)
{Float} The ratio of the data bounds to the viewport bounds (in each dimension).
read: function(data)
Read data from a string, and return an response.
read: function(data)
Read data from a string of ArcXML, and return a set of OpenLayers features.
read: function(data)
Read and Filter doc and return an object representing the Filter.
read: function(json,
type,
filter)
Deserialize a GeoJSON string.
read: function(data)
Read data from a string, and return a list of features.
read: function(doc)
Return a list of features from a GPX doc
read: function(json,
filter)
Deserialize a json string.
read: function(data)
Read data from a string, and return a list of features.
read: function(data,
options)
Read and SLD doc and return an object representing the SLD.
read: function(text)
Return a list of features from a Tab Seperated Values text string.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data,
options)
Read WMC data from a string, and return an object with map properties and a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read DescribeLayer data from a string, and return the response.
read: function(data)
Read DescribeLayer data from a string, and return the response.
read: function(data)
Read WMS GetFeatureInfo data from a string, and return an array of features
read: function()
Construct a request for reading new features.
read: function(options)
Construct a request for reading new features.
read: function(options)
Read all features from the database and return a OpenLayers.Protocol.Response instance.
redraw: function()
Redraws the layer.
redraw: function(force)
Redraws the layer.
refresh: function()
Refreshes all the features of the layer
register: function (type,
obj,
func)
Register an event on the events object.
registerPriority: function (type,
obj,
func)
Same as register() but adds the new listener to the front of the events queue instead of to the end.
Create a new regular polygon handler.
remove: function(element)
Remove the specified element from the DOM.
remove: function(node)
removeComponent: function(point)
Removes a point from geometry components.
removeComponent: function(point)
Only allows removal of a point if there are three or more points in the linestring.
removeComponents: function(components)
Remove components from this geometry.
removeControl: function (control)
Remove a control from the map.
removeFeatures: function(features,
options)
Remove features from the layer.
removeLayer: function(layer,
setNewBaseLayer)
Removes a layer from the map by removing its visual element (the layer.div property), then removing it from the map’s internal list of layers, setting the layer’s map property to null.
removeMap: function(map)
Just as setMap() allows each layer the possibility to take a personalized action on being added to the map, removeMap() allows each layer to take a personalized action on being removed from it.
removeMap: function(map)
On being removed from the map, we’ll like to remove the invisible ‘pane’ div that we added to it on creation.
removeMap: function(map)
On being removed from the map, also remove termsOfUse and poweredBy divs
removeMarker: function(marker)
removeMarker: function(marker)
removePoint: function(point)
Wrapper for OpenLayers.Geometry.Collection.removeComponent
removePopup: function(popup)
render: function(div)
Render the map to a specified container.
{Object} Options for the renderer.
{Boolean} report friendly error message when loading of renderer fails.
Deprecated.
{Integer} Constant used to make the control work in reshape mode
resize: function(scale,
origin,
ratio)
Resize a geometry relative to some origin.
resize: function(scale,
origin,
ratio)
Resize a geometry relative to some origin.
resize: function(scale,
origin,
ratio)
Resize a point relative to some origin.
{Integer} Constant used to make the control work in resize mode
{Float}
{Array} A list of map resolutions (map units per pixel) in descending order.
{Array(Float)} A list of map resolutions (map units per pixel) in descending order.
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{OpenLayers.Bounds} Limit map navigation to this extent where possible.
Create a new root container for multiple vector layer.
rotate: function(angle,
origin)
Rotate a geometry around some origin
rotate: function(angle,
origin)
Rotate a geometry around some origin
rotate: function(angle,
origin)
Rotate a point around another.
{Integer} Constant used to make the control work in rotate mode
{String} RSS namespace to use.
Creates a Rule.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General12.html b/openlayers/doc/apidocs/index/General12.html new file mode 100644 index 0000000..32c40e0 --- /dev/null +++ b/openlayers/doc/apidocs/index/General12.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
S
 save, OpenLayers.Strategy.Save
 Save, OpenLayers.Strategy.Save.OpenLayers.Strategy
 Scale, OpenLayers.Control.Scale.OpenLayers.Control
 ScaleLine, OpenLayers.Control.ScaleLine.OpenLayers.Control
 scales, OpenLayers.Layer
 SelectFeature, OpenLayers.Control.SelectFeature.OpenLayers.Control
 selectStyle, OpenLayers.Control.SelectFeature
 separator, OpenLayers.Control.MousePosition
 seperator, OpenLayers.Control.Attribution
 serverResolutions
 serviceVersion, OpenLayers.Layer.TMS
 setAttributeNS, OpenLayers.Format.XML
 setBackgroundColor
 setBaseLayer, OpenLayers.Map
 setBorder, OpenLayers.Popup.Framed
 setCenter, OpenLayers.Map
 setCode, OpenLayers.Lang
 setDefaultStyle, OpenLayers.Style
 setIsBaseLayer, OpenLayers.Layer
 setLayer, OpenLayers.Control.Snapping
 setLayerIndex, OpenLayers.Map
 setMap
 setMapObjectCenter
 setName, OpenLayers.Layer
 setOpacity
 setOptions
 setSize
 setSource, OpenLayers.Control.Split
 setTileSize
 setUrl
 setVisibility
 show
 sides, OpenLayers.Handler.RegularPolygon
 single, OpenLayers.Handler.Click
 SINGLE_TILE_PARAMS, OpenLayers.Layer.MapGuide
 singleTile
 size, OpenLayers.Control.OverviewMap
 Size, OpenLayers.Size.OpenLayers
 SLD, OpenLayers.Format.SLD.OpenLayers.Format
 slideFactor
 slideRatio, OpenLayers.Control.PanZoom
 smoothDragPan, OpenLayers.Layer.EventPane
 snapAngle, OpenLayers.Handler.RegularPolygon
 Snapping, OpenLayers.Control.Snapping.OpenLayers.Control
 snapToggle, OpenLayers.Handler.RegularPolygon
 sourceFilter, OpenLayers.Control.Split
 space, OpenLayers.Format.JSON
 Spatial, OpenLayers.Filter.Spatial.OpenLayers.Filter
 sphericalMecator, OpenLayers.Layer.XYZ
 sphericalMercator
 Split, OpenLayers.Control.Split.OpenLayers.Control
 SQL, OpenLayers.Protocol.SQL.OpenLayers.Protocol
 srsName
 start, OpenLayers.Tween
 startsWith
 stop, OpenLayers.Tween
 stopDouble, OpenLayers.Handler.Click
 stopMove, OpenLayers.Handler.Hover
 stopSingle, OpenLayers.Handler.Click
 Strategy, OpenLayers.Strategy.OpenLayers
 style
 Style, OpenLayers.Style.OpenLayers
 StyleMap, OpenLayers.StyleMap.OpenLayers
 suffix, OpenLayers.Control.MousePosition
 supported
 SVG, OpenLayers.Renderer.SVG.OpenLayers.Renderer
 symbol, OpenLayers.Renderer.Elements.OpenLayers.Renderer
 SYMBOLIZER_PREFIXES, OpenLayers.Style.OpenLayers.Style
+ +
save: function(features)
Tell the layer protocol to commit unsaved features.
Create a new Save strategy.
Create a new scale line control.
{Array} An array of map scales in descending order.
Create a new control for selecting features.
{Object} Hash of styles
{String}
{String} String used to seperate layers.
{Array} A list of all resolutions available on the server.
{Array} A list of all resolutions available on the server.
{String}
setAttributeNS: function(node,
uri,
name,
value)
Adds a new attribute or changes the value of an attribute with the given namespace and name.
setBackgroundColor:function(color)
setBackgroundColor:function(color)
setBaseLayer: function(newBaseLayer)
Allows user to specify one of the currently-loaded layers as the Map’s new base layer.
setBorder:function()
setCenter: function(lonlat,
zoom,
dragging,
forceZoomChange)
Set the map center (and optionally, the zoom level).
setCode: function(code)
Set the language code for string translation.
setDefaultStyle: function(style)
Sets the default style for this style object.
setIsBaseLayer: function(isBaseLayer)
setLayer: function(layer)
Set the editable layer.
setLayerIndex: function (layer,
idx)
Move the given layer to the specified (zero-based) index in the layer list, changing its z-index in the map display.
setMap: function(map)
Overridden from EventPane because if a map type has been specified, we need to attach a listener for the first moveend -- this is how we will know that the map has been centered.
setMap: function(map)
setMap: function(map)
When the layer is added to a map, then we can fetch our origin (if we don’t have one.)
setMap: function(map)
When the layer is added to a map, then we can fetch our origin (if we don’t have one.)
setMap: function(map)
Overridden from EventPane because we need to remove this yahoo event pane which prohibits our drag and drop, and we can only do this once the map has been loaded and centered.
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setName: function(newName)
Sets the new layer name for this layer.
setOpacity: function(opacity)
Sets the opacity for the entire layer (all images)
setOpacity: function(opacity)
Sets the opacity for all the markers.
setOpacity: function (opacity)
Call the setOpacity method of the appropriate parent class to set the opacity.
setOpacity:function(opacity)
setOptions: function (newOptions)
setOptions: function(options)
Change the map options
setSize:function(contentSize)
setSize:function(contentSize)
setSize:function(contentSize)
Overridden here, because we need to update the blocks whenever the size of the popup has changed.
setSource: function(layer)
Set the source layer for edits layer.
setTileSize: function(size)
Set the tile size based on the map size.
setTileSize: function(size)
Check if we are in singleTile mode and if so, set the size as a ratio of the map size (as specified by the layer’s ‘ratio’ property).
setUrl: function(newUrl)
setUrl: function(newUrl)
setVisibility: function(visibility)
Set the visibility flag for the layer and hide/show & redraw accordingly.
setVisibility: function(visibility,
noEvent)
Set the visibility flag for the layer and hide/show&redraw accordingly.
show: function()
Show element(s) passed in
show: function()
Overridden from Popup since user might hide popup and then show() it in a new location (meaning we might want to update the relative position on the show)
{Integer} Number of sides for the regular polygon.
{Boolean} Handle single clicks.
{Object} Hashtable of default parameter key/value pairs for untiled layer
{Boolean} Moves the layer into single-tile mode, meaning that one tile will be loaded.
{Boolean} use tile server or request single tile image.
{singleTile} Always true for untiled.
{singleTile} Always true for untiled.
{OpenLayers.Size} The overvew map size in pixels.
Create an instance of OpenLayers.Size
Create a new parser for SLD.
Pixels to slide by.
{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
{Number} The fraction of map width/height by which we’ll pan the map on clicking the arrow buttons.
{Boolean} smoothDragPan determines whether non-public/internal API methods are used for better performance while dragging EventPane layers.
{Float} If set to a non-zero value, the handler will snap the polygon rotation to multiples of the snapAngle.
Creates a new snapping control.
{String} If set, snapToggle is checked on mouse events and will set the snap mode to the opposite of what it currently is.
{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
{String} For “pretty” printing, the space string will be used after the “:” separating a name/value pair.
Creates a spatial filter.
Whether the tile extents should be set to the defaults for spherical mercator.
{Boolean} Should the map act as a mercator-projected map? 
{Boolean} Should the map act as a mercator-projected map? 
{Boolean} Should the map act as a mercator-projected map? 
Creates a new split control.
{String} URI for spatial reference system.
{String} URI for spatial reference system.
start: function(begin,
finish,
duration,
options)
Plays the Tween, and calls the callback method on each step
startsWith: function(str,
sub)
Test whether a string starts with another string.
Deprecated.
stop: function()
Stops the Tween, and calls the done callback Doesn’t do anything if animation is already finished
{Boolean} Stop other listeners from being notified of double-clicks.
{Boolean} Stop other listeners from being notified of clicks.
Abstract class for vector strategies.
{Object}
OpenLayers features can have a number of style attributes.
{Object} Default style for the layer
Creates a UserStyle.
{String}
supported: function()
This should be overridden by specific subclasses
supported: function()
Determine whether a browser supports Gears
supported: function()
This should be overridden by specific subclasses
supported: function()
{Boolean} Whether or not the browser supports the renderer class
supported: function()
{Boolean} Whether or not the browser supports the SVG renderer
supported: function()
Determine whether a browser supports this renderer.
Coordinate arrays for well known (named) symbols.
{Array} prefixes of the sld symbolizers.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General13.html b/openlayers/doc/apidocs/index/General13.html new file mode 100644 index 0000000..e647d86 --- /dev/null +++ b/openlayers/doc/apidocs/index/General13.html @@ -0,0 +1,38 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
T
 tableName, OpenLayers.Protocol.SQL
 targetFilter, OpenLayers.Control.Split
 Text
 theme, OpenLayers.Map
 threshold, OpenLayers.Strategy.Cluster
 TILE_HEIGHT, OpenLayers.Map
 TILE_PARAMS, OpenLayers.Layer.MapGuide
 TILE_WIDTH, OpenLayers.Map
 TileCache, OpenLayers.Layer.TileCache.OpenLayers.Layer
 tileOrigin, OpenLayers.Layer.TMS
 tileSize
 time, OpenLayers.Console
 timeEnd, OpenLayers.Console
 TMS, OpenLayers.Layer.TMS.OpenLayers.Layer
 toArray, OpenLayers.Bounds
 toBBOX, OpenLayers.Bounds
 toGeometry, OpenLayers.Bounds
 toggle
 toggleKey, OpenLayers.Control.GetFeature
 tolerance, OpenLayers.Control.Split
 toShortString, OpenLayers.LonLat
 toString, OpenLayers.Bounds
 trace, OpenLayers.Console
 transform
 transitionEffect, OpenLayers.Layer
 translate, OpenLayers.Lang
 triggerEvent, OpenLayers.Events
 trim
 Tween, OpenLayers.Tween.OpenLayers
 type
U
 units
 unregister, OpenLayers.Events
 Untiled
 update
 updateSize
 upperBoundary, OpenLayers.Filter.Comparison
 URL_HASH_FACTOR, OpenLayers.Layer.HTTPRequest
 useAsyncOverlay, OpenLayers.Layer.MapGuide
 useFeedTitle, OpenLayers.Layer.GeoRSS
 useHttpTile, OpenLayers.Layer.MapGuide
 useOverlay, OpenLayers.Layer.MapGuide
 userError, OpenLayers.Console
 Util
+ +
Name of the database table into which Features should be saved.
{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
Create a new parser for TSV Text.
Create a text layer.
{String} Relative path to a CSS file from which to load theme styles.
{Integer} Optional threshold below which original features will be added to the layer instead of clusters.
{Integer} 256 Default tile height (unless otherwise specified)
{Object} Hashtable of default parameter key/value pairs for tiled layer
{Integer} 256 Default tile width (unless otherwise specified)
Create a new read only TileCache layer.
{OpenLayers.Pixel}
{OpenLayers.Size} Size for tiles.
{OpenLayers.Size}
{OpenLayers.Size} Set in the map options to override the default tile size for this map.
time: function()
Creates a new timer under the given name.
timeEnd: function()
Stops a timer created by a call to OpenLayers.Console.time(name) and writes the time elapsed.
toArray: function()
{Array} array of left, bottom, right, top
toBBOX:function(decimal)
toGeometry: function()
Create a new polygon geometry based on this bounds.
{Boolean} Unselect a selected feature on click.
{Boolean} Unselect a selected feature on click.
{Boolean} Unselect a selected feature on click.
toggle: function()
Toggle the visibility of element(s) passed in
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the toggle property to true.
{Number} Distance between the calculated intersection and a vertex on the source geometry below which the existing vertex will be used for the split.
toShortString:function()
{String} Shortened String representation of OpenLayers.LonLat object.
toString:function()
{String} String representation of bounds object.
trace: function()
Prints an interactive stack trace of JavaScript execution at the point where it is called.
transform: function(source,
dest)
Transform the Bounds object from source to dest.
transform: function(source,
dest)
Reproject the components geometry from source to dest.
transform: function(source,
dest)
Reproject the components geometry from source to dest.
transform: function(source,
dest)
Translate the x,y properties of the point from source to dest.
transform: function(source,
dest)
Transform the LonLat object from source to dest.
OpenLayers.Projection.transform = function(point,
source,
dest)
Transform a point coordinate from one projection to another.
{String} The transition effect to use when the map is panned or zoomed.
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
triggerEvent: function (type,
evt)
Trigger a specified registered event.
trim: function(str)
Removes leading and trailing whitespace characters from a string.
Deprecated.
Creates a Tween.
{String} type: type of the comparison.
{String} Type of spatial filter.
{GMapType}
{?}
{VEMapType}
{YahooMapType}
+ + + +
{String} The layer map units.
{?}
{String} The map units.
unregister: function (type,
obj,
func)
update: function()
Construct a request updating modified features.
update: function(feature,
options)
Construct a request updating modified feature.
update: function(features,
options)
Construct a request updating modified feature.
updateSize: function()
This function should be called by any external code which dynamically changes the size of the map div (because mozilla wont let us catch the “onresize” for an element)
updateSize: function()
Auto size the popup so that it precisely fits its contents (as determined by this.contentDiv.innerHTML).
{Number} or {String} upper boundary for between comparisons.
{Float} Used to hash URL param strings for multi-WMS server selection.
{Boolean} indicates if the MapGuide site supports the asynchronous GETDYNAMICOVERLAY requests which is available in MapGuide Enterprise 2010 and MapGuide Open Source v2.0.3 or higher.
{Boolean} Set layer.name to the first title element in the feed.
{Boolean} use a tile cache exposed directly via a webserver rather than the via mapguide server.
{Boolean} flag to indicate if the layer should be retrieved using GETMAPIMAGE (default) or using GETDYNAMICOVERLAY requests.
userError: function(error)
A single interface for showing error messages to the user.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General14.html b/openlayers/doc/apidocs/index/General14.html new file mode 100644 index 0000000..b7f7488 --- /dev/null +++ b/openlayers/doc/apidocs/index/General14.html @@ -0,0 +1,46 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
V
 v1
 v1_0_0
 v1_1
 v1_1_0
 v1_1_1, OpenLayers.Format.WMSCapabilities/v1_1_1.OpenLayers.Format.WMSCapabilities
 v2, OpenLayers.Format.GML.v2.OpenLayers.Format.GML
 v3, OpenLayers.Format.GML.v3.OpenLayers.Format.GML
 value
 value2regex, OpenLayers.Filter.Comparison
 Vector
 version
 VERSION
 VERSION_NUMBER, OpenLayers
 VirtualEarth, OpenLayers.Layer.VirtualEarth.OpenLayers.Layer
 virtualStyle, OpenLayers.Control.ModifyFeature
 visibility, OpenLayers.Layer
 visible, OpenLayers.Element
 VML, OpenLayers.Renderer.VML.OpenLayers.Renderer
W
 w, OpenLayers.Size
 warn, OpenLayers.Console
 WFS
 WFSCapabilities, OpenLayers.Format.WFSCapabilities.OpenLayers.Format
 WFSDescribeFeatureType, OpenLayers.Format
 wfsns, OpenLayers.Format.WFS
 WKT, OpenLayers.Format.WKT.OpenLayers.Format
 WMC, OpenLayers.Format.WMC.OpenLayers.Format
 WMS, OpenLayers.Layer.WMS.OpenLayers.Layer
 WMSCapabilities, OpenLayers.Format.WMSCapabilities.OpenLayers.Format
 WMSDescribeLayer
 WMSGetFeatureInfo, OpenLayers.Format.WMSGetFeatureInfo.OpenLayers.Format
 WMSGetFeatureInfo>, OpenLayers.Control.WMSGetFeatureInfo.<OpenLayers.Control
 WorldWind, OpenLayers.Layer.WorldWind.OpenLayers.Layer
 wrapDateLine
 write
X
 x
 X, OpenLayers.Control.PanZoom
 XML, OpenLayers.Format.XML.OpenLayers.Format
 xy
Y
 y
 Y, OpenLayers.Control.PanZoom
 Yahoo, OpenLayers.Layer.Yahoo.OpenLayers.Layer
+ +
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Create a new parser for WFS capabilities version 1.0.0.
A class for parsing and generating WFS v1.0.0 transactions.
Instances of this class are not created directly.
A class for giving layers WFS v1.0.0 protocol.
Create an instance of one of the subclasses.
Create an instance of one of the subclasses.
Instances of this class are not created directly.
Create a new parser for WFS capabilities version 1.1.0.
A class for parsing and generating WFS v1.1.0 transactions.
Instances of this class are not created directly.
Create a new parser for WMS capabilities version 1.1.0.
A class for giving layers WFS v1.1.0 protocol.
Create a new parser for WMS capabilities version 1.1.1.
Create a parser for GML v2.
Create a parser for GML v3.
{Number} or {String} comparison value for binary comparisons.
{OpenLayers.Bounds || OpenLayers.Geometry} The bounds or geometry to be used by the filter.
value2regex: function(wildCard,
singleChar,
escapeChar)
Converts the value of this rule into a regular expression string, according to the wildcard characters specified.
Create a vector feature.
Create a new vector layer
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} 1.0.0
{String} 1.1.0
{String} 1.0.0
{String} 1.0.0
{String} 1.1.0
{Object} A symbolizer to be used for virtual vertices.
{Boolean} The layer should be displayed in the map.
visible: function(element)
Create a new VML renderer.
+ + + +
{Number} width
warn: function()
Writes a message to the console with the visual “warning” icon and color coding and a hyperlink to the line where it was called.
Create a WFS feature.
Create a WFS-T formatter.
A class for giving layers WFS protocol.
Create a new parser for WFS capabilities.
Create a new parser for WFS DescribeFeatureType responses.
Create a new parser for WKT
Create a new parser for WMC docs.
Create a new WMS layer object
Create a new parser for WMS capabilities.
Create a new parser for WMS DescribeLayer responses.
Create a new parser for WMS DescribeLayer responses.
Create a new parser for WMS GetFeatureInfo responses
wrapDateLine: function(maxExtent,
options)
{Boolean} #487 for more info.
wrapDateLine: function(maxExtent)
write: function(request)
Generate an ArcXml document string for sending to an ArcIMS server.
write: function(filter,
options)
Write an ogc:Filter given a filter object.
write: function(obj,
pretty)
Serialize a feature, geometry, array of features into a GeoJSON string.
write: function(features)
Accept Feature Collection, and return a string.
write: function(features)
Generate a GML document string given a list of features.
write: function(value,
pretty)
Serialize an object into a JSON string.
write: function(features)
Accept Feature Collection, and return a string.
write: function(features)
Takes a list of features, returns a serialized OSM format file for use in tools like JOSM.
write: function(sld,
options)
Write a SLD document given a list of styles.
write: function(obj,
options)
Write a WMC document given a map.
write: function(node)
Serialize a DOM node into a XML string.
+ + + +
{float}
{Number} The x coordinate
{Integer}
Construct an XML parser.
{Boolean} Order of the GML coordinate: true:(x,y) or false:(y,x) For GeoRSS the default is (y,x), therefore: false
{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
+ + + +
{float}
{Number} The y coordinate
{Integer}
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General15.html b/openlayers/doc/apidocs/index/General15.html new file mode 100644 index 0000000..efae026 --- /dev/null +++ b/openlayers/doc/apidocs/index/General15.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
Z
 Z_INDEX_BASE, OpenLayers.Map
 Z_ORDER_DRAWING_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
 Z_ORDER_Y_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
 zoomBoxKeyMask, OpenLayers.Control.Navigation
 zoomIn, OpenLayers.Map
 zoomLevels, OpenLayers.Layer.WorldWind
 zoomOut, OpenLayers.Map
 ZoomPanel, OpenLayers.Control.ZoomPanel.OpenLayers.Control
 zoomStopHeight, OpenLayers.Control.PanZoomBar
 zoomStopWidth, OpenLayers.Control.PanZoomBar
 zoomTo, OpenLayers.Map
 zoomToExtent, OpenLayers.Map
 zoomToMaxExtent, OpenLayers.Map
 zoomToScale, OpenLayers.Map
 zoomWheelEnabled, OpenLayers.Control.Navigation
 zoomWorldIcon, OpenLayers.Control.PanZoomBar
+ +
{Object} Base z-indexes for different classes of thing
Z_ORDER_DRAWING_ORDER: function(indexer,
newNode,
nextNode)
This method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the newest drawn will be the front most within that z-index.
Z_ORDER_Y_ORDER: function(indexer,
newNode,
nextNode)
This one should really be called Z_ORDER_Y_ORDER_DRAWING_ORDER, as it best describes which ordering methods have precedence (though, the name would be too long).
{Integer} OpenLayers.Handler key code of the key, which has to be pressed, while drawing the zoom box with the mouse on the screen.
zoomIn: function()
Number of zoom levels.
zoomOut: function()
Add the three zooming controls.
zoomTo: function(zoom)
Zoom to a specific zoom level
zoomToExtent: function(bounds,
closest)
Zoom to the passed in bounds, recenter
zoomToMaxExtent: function(options)
Zoom to the full extent and recenter.
zoomToScale: function(scale,
closest)
Zoom to a specified scale
{Boolean} Whether the mousewheel should zoom the map
{Boolean}
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General2.html b/openlayers/doc/apidocs/index/General2.html new file mode 100644 index 0000000..dc22faa --- /dev/null +++ b/openlayers/doc/apidocs/index/General2.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
C
 calculateBounds
 calculateInRange, OpenLayers.Layer
 callbacks
 camelize
 cancel
 Canvas, OpenLayers.Renderer.Canvas.OpenLayers.Renderer
 checkTags, OpenLayers.Format.OSM
 Class, OpenLayers
 Class.js
 clear
 clearMouseCache, OpenLayers.Events
 click, OpenLayers.Control.GetFeature
 Click, OpenLayers.Handler.Click.OpenLayers.Handler
 clickout
 clickTolerance, OpenLayers.Control.GetFeature
 clone
 closeOnMove, OpenLayers.Popup
 Cluster, OpenLayers.Strategy.Cluster.OpenLayers.Strategy
 Collection, OpenLayers.Geometry.Collection.OpenLayers.Geometry
 collectionName, OpenLayers.Format.GML
 commit
 commitReport, OpenLayers.Layer.WFS
 Comparison, OpenLayers.Filter.Comparison.OpenLayers.Filter
 components, OpenLayers.Geometry.Collection
 concatChildValues, OpenLayers.Format.XML
 Constants
 Constructor
GlobalOpenLayers.Ajax.BaseOpenLayers.Ajax.RequestOpenLayers.Ajax.ResponseOpenLayers.BoundsOpenLayers.ControlOpenLayers.Control.ArgParserOpenLayers.Control.AttributionOpenLayers.Control.DragFeatureOpenLayers.Control.DrawFeatureOpenLayers.Control.EditingToolbarOpenLayers.Control.GetFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.MeasureOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.NavToolbarOpenLayers.Control.OverviewMapOpenLayers.Control.PanOpenLayers.Control.PanelOpenLayers.Control.PanPanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.ScaleOpenLayers.Control.ScaleLineOpenLayers.Control.SelectFeatureOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.Control.WMSGetFeatureInfoOpenLayers.Control.ZoomPanelOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Feature.WFSOpenLayers.FilterOpenLayers.Filter.ComparisonOpenLayers.Filter.FeatureIdOpenLayers.Filter.LogicalOpenLayers.Filter.SpatialOpenLayers.FormatOpenLayers.Format.ArcXMLOpenLayers.Format.ArcXML.FeaturesOpenLayers.Format.FilterOpenLayers.Format.Filter.v1OpenLayers.Format.Filter.v1_0_0OpenLayers.Format.Filter.v1_1_0OpenLayers.Format.GeoJSONOpenLayers.Format.GeoRSSOpenLayers.Format.GMLOpenLayers.Format.GML.BaseOpenLayers.Format.GML.v2OpenLayers.Format.GML.v3OpenLayers.Format.GPXOpenLayers.Format.JSONOpenLayers.Format.KMLOpenLayers.Format.OSMOpenLayers.Format.SLDOpenLayers.Format.SLD.v1OpenLayers.Format.SLD.v1_0_0OpenLayers.Format.TextOpenLayers.Format.WFSOpenLayers.Format.WFSCapabilitiesOpenLayers.Format.WFSCapabilities.v1OpenLayers.Format.WFSCapabilities/v1_0_0OpenLayers.Format.WFSCapabilities/v1_1_0OpenLayers.Format.WFST.v1OpenLayers.Format.WFST.v1_0_0OpenLayers.Format.WFST.v1_1_0OpenLayers.Format.WKTOpenLayers.Format.WMCOpenLayers.Format.WMC.v1OpenLayers.Format.WMC.v1_0_0OpenLayers.Format.WMC.v1_1_0OpenLayers.Format.WMSCapabilitiesOpenLayers.Format.WMSCapabilities.v1_1OpenLayers.Format.WMSCapabilities/v1_1_0OpenLayers.Format.WMSCapabilities/v1_1_1OpenLayers.Format.WMSDescribeLayerOpenLayers.Format.WMSDescribeLayer.v1_1OpenLayers.Format.WMSGetFeatureInfoOpenLayers.Format.XMLOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.Geometry.CurveOpenLayers.Geometry.LinearRingOpenLayers.Geometry.LineStringOpenLayers.Geometry.MultiLineStringOpenLayers.Geometry.MultiPointOpenLayers.Geometry.MultiPolygonOpenLayers.Geometry.PointOpenLayers.Geometry.PolygonOpenLayers.Geometry.RectangleOpenLayers.HandlerOpenLayers.Handler.BoxOpenLayers.Handler.ClickOpenLayers.Handler.DragOpenLayers.Handler.FeatureOpenLayers.Handler.HoverOpenLayers.handler.KeyboardOpenLayers.Handler.MouseWheelOpenLayers.Handler.PathOpenLayers.Handler.PointOpenLayers.Handler.PolygonOpenLayers.Handler.RegularPolygonOpenLayers.IconOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.BoxesOpenLayers.Layer.EventPaneOpenLayers.Layer.FixedZoomLevelsOpenLayers.Layer.GeoRSSOpenLayers.Layer.GMLOpenLayers.Layer.GoogleOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.KaMapOpenLayers.Layer.KaMapCacheOpenLayers.Layer.MapGuideOpenLayers.Layer.MapServerOpenLayers.Layer.MapServer.UntiledOpenLayers.Layer.MarkersOpenLayers.Layer.MultiMapOpenLayers.Layer.PointTrackOpenLayers.Layer.TextOpenLayers.Layer.TileCacheOpenLayers.Layer.TMSOpenLayers.Layer.VectorOpenLayers.Layer.Vector.RootContainerOpenLayers.Layer.VirtualEarthOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.Layer.WMS.UntiledOpenLayers.Layer.WorldWindOpenLayers.Layer.XYZOpenLayers.Layer.YahooOpenLayers.LonLatOpenLayers.MapOpenLayers.MarkerOpenLayers.Marker.BoxOpenLayers.PixelOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.AnchoredBubbleOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProjectionOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.ResponseOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.Protocol.WFS.v1_0_0OpenLayers.Protocol.WFS.v1_1_0OpenLayers.RendererOpenLayers.Renderer.CanvasOpenLayers.Renderer.ElementsOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RuleOpenLayers.SizeOpenLayers.StrategyOpenLayers.Strategy.BBOXOpenLayers.Strategy.ClusterOpenLayers.Strategy.FixedOpenLayers.Strategy.PagingOpenLayers.Strategy.SaveOpenLayers.StyleOpenLayers.StyleMapOpenLayers.Tween
 contains
 containsBounds, OpenLayers.Bounds
 containsLonLat, OpenLayers.Bounds
 containsPixel, OpenLayers.Bounds
 contentType, OpenLayers.Format.XML
 control, OpenLayers.Handler
 Control, OpenLayers.Control.OpenLayers
 CORNER_SIZE, OpenLayers.Popup.AnchoredBubble
 count, OpenLayers.Console
 create
 createElementNS, OpenLayers.Format.XML
 createParams, OpenLayers.Control.Permalink
 createRegularPolygon, OpenLayers.Geometry.Polygon
 createTextNode, OpenLayers.Format.XML
 Curve, OpenLayers.Geometry.Curve.OpenLayers.Geometry
+ +
calculateBounds: function()
Recalculate the bounds for the geometry.
calculateBounds: function()
Recalculate the bounds by iterating through the components and calling calling extendBounds() on each item.
calculateInRange: function()
{Boolean} The layer is displayable at the current map’s current resolution.
{Object} The functions that are sent to the handlers.feature for callback
{Object} An object with start, eachStep and done properties whose values are functions to be call during the animation.
camelize: function(str)
Camel-case a hyphenated string.
Deprecated.
cancel: function()
Stop the control from measuring.
cancel: function()
Finish the geometry and call the “cancel” callback.
cancel: function()
Finish the geometry and call the “cancel” callback.
{Boolean} Should tags be checked to determine whether something should be treated as a seperate node.
Base class used to construct all other classes.
clear: function()
Clear history.
clear: function()
clear: function()
Clear any rendered features on the temporary layer.
clearMouseCache: function()
Clear cached data about the mouse position.
{Boolean} Use a click handler for selecting/unselecting features.
Create a new click handler.
{Boolean} Unselect features when clicking outside any feature.
{Boolean} Unselect features when clicking outside any feature.
{Boolean} Unselect features when clicking outside any feature.
{Integer} Tolerance for the BBOX query in pixels.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Create a clone of this geometry.
clone: function()
Clone this geometry.
clone: function(obj)
{OpenLayers.Geometry.Point} An exact clone of this OpenLayers.Geometry.Point
clone: function (obj)
Create a clone of this layer
clone: function (obj)
clone: function (obj)
clone: function (obj)
clone: function (obj)
clone: function (obj)
clone: function (obj)
Create a clone of this layer
clone:function()
{OpenLayers.LonLat} New OpenLayers.LonLat object with the same lon and lat values
clone:function()
Return a clone of this pixel object
clone: function()
Clones this rule.
clone:function()
Create a clone of this size object
{Boolean} When map pans, close the popup.
Create a new clustering strategy.
Creates a Geometry Collection -- a list of geoms.
{String} Name of featureCollection element.
commit: function()
Write out the data to a WFS server.
commit: function()
Go over the features and for each take action based on the feature state.
commit: function(features,
options)
Iterate over each feature and take action based on the feature state.
commit: function(features,
options)
Go over the features and for each take action based on the feature state.
commitReport: function(string,
response)
Called with a ‘success’ message if the commit succeeded, otherwise a failure message, and the full request text as a second parameter.
Creates a comparison rule.
{Array(OpenLayers.Geometry)} The component parts of this geometry
concatChildValues: function(node,
def)
Deprecated.
contains:function(x,
y,
inclusive)
contains: function(str,
sub)
Test whether a string contains another string.
Deprecated.
containsBounds:function(bounds,
partial,
inclusive)
Determine whether the target bounds is contained within this bounds.
containsLonLat:function(ll,
inclusive)
containsPixel:function(px,
inclusive)
contentType: function(node)
Determine the content type for a given node.
{OpenLayers.Control}.
Create an OpenLayers Control.
{Integer} 5.
count: function()
Writes the number of times that the line of code where count was called was executed.
Deprecated.
create: function()
Construct a request for writing newly created features.
create: function(features,
options)
Construct a request for writing newly created features.
create: function(features,
options)
Create new features into the database.
createElementNS: function(uri,
name)
Create a new element with namespace.
createParams: function(center,
zoom,
layers)
Creates the parameters that need to be encoded into the permalink url.
OpenLayers.Geometry.Polygon.createRegularPolygon = function(origin,
radius,
sides,
rotation)
Create a regular polygon around a radius.
createTextNode: function(text)
Create a text node.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General3.html b/openlayers/doc/apidocs/index/General3.html new file mode 100644 index 0000000..0b71ecc --- /dev/null +++ b/openlayers/doc/apidocs/index/General3.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
D
 data, OpenLayers.Format
 databaseName, OpenLayers.Protocol.SQL
 dataFrom, OpenLayers.Layer.PointTrack.OpenLayers.Layer.PointTrack
 deactivate
 debug, OpenLayers.Console
 DEFAULT_CONFIG, OpenLayers.Request
 DEFAULT_FORMAT, OpenLayers.Layer.KaMapCache
 DEFAULT_OPTIONS, OpenLayers.Layer.ArcIMS
 DEFAULT_PARAMS
 defaultCode, OpenLayers.Lang
 defaultControl, OpenLayers.Control.Panel
 DEFAULTS
 defaultStyle, OpenLayers.Format.Text
 defaultSymbolizer, OpenLayers.Format.SLD.v1
 defaultVersion
 deferDelete, OpenLayers.Control.Split
 delay
 delete
 DELETE, OpenLayers.Request
 deleteCodes, OpenLayers.Control.ModifyFeature
 destroy
 destroyFeatures, OpenLayers.Layer.Vector
 determineQuadrant, OpenLayers.Bounds
 dir, OpenLayers.Console
 direction, OpenLayers.Control.MouseToolbar
 dirxml, OpenLayers.Console
 display
 displayInLayerSwitcher, OpenLayers.Layer
 displayOutsideMaxExtent, OpenLayers.Layer
 displayProjection
 distance
 distanceTo
 distanceUnits, OpenLayers.Filter.Spatial
 div
 DOTS_PER_INCH, Util
 double, OpenLayers.Handler.Click
 Drag, OpenLayers.Handler.Drag.OpenLayers.Handler
 DRAG, OpenLayers.Control.ModifyFeature
 DragFeature, OpenLayers.Control.DragFeature.OpenLayers.Control
 dragPanMapObject
 drawFeature, OpenLayers.Layer.Vector
 DrawFeature, OpenLayers.Control.DrawFeature.OpenLayers.Control
 duration, OpenLayers.Tween
+ +
{Object} When keepData is true, this is the parsed string sent to read.
{String}
{Object} with the following keys
deactivate: function()
Deactivate the control and all handlers.
deactivate: function()
Deactivate the control.
deactivate: function()
Deactivate the control.
deactivate: function()
deactivate: function()
Deactivate the control.
deactivate: function()
Deactivate the control.
deactivate: function()
Turn off the handler.
deactivate: function()
Deactivate the handler.
deactivate: function()
Deactivate the handler.
deactivate: function()
turn off the handler
deactivate: function()
Turn off the handler.
deactivate: function()
Deactivate the strategy.
deactivate: function()
Deactivate the strategy.
deactivate: function()
Deactivate the strategy.
debug: function()
Writes a message to the console, including a hyperlink to the line where it was called.
{Object} Default configuration for all requests.
{Object} Simple hash map to convert format to extension.
{Object} Default layers properties.
{Object} Hashtable of default parameter key/value pairs
{Object} Default query string parameters.
{Object} parameters set by default.
{Object} Hashtable of default parameter key/value pairs
{Object} Hashtable of default parameter key/value pairs
{String} Default language to use when a specific language can’t be found.
{OpenLayers.Control} The control which is activated when the control is activated (turned on), which also happens at instantiation.
Default target properties.
{Object} Default properties for the WFST format.
defaultStyle allows one to control the default styling of the features.
{Object} A symbolizer with the SLD defaults.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{Boolean} Instead of removing features from the layer, set feature states of split features to DELETE.
{Number} Number of milliseconds between clicks before the event is considered a double-click.
"delete": function()
Construct a request deleting a removed feature.
"delete": function(feature,
options)
Construct a request deleting a removed feature.
"delete": function(features,
options)
Delete features from the database.
DELETE: function(config)
Send an HTTP DELETE request.
{Array(Integer)} Keycodes for deleting verticies.
destroy: function()
Take care of things that are not handled in superclass
destroy: function()
destroy: function()
destroy: function()
Take care of things that are not handled in superclass.
destroy: function()
destroy: function()
destroy: function()
Destroy the control.
destroy: function()
Deconstruct the control
destroy: function()
destroy: function()
destroy: function()
destroy: function()
destroy: function ()
destroy: function()
Remove reference to anything added.
destroy: function()
Remove reference to child filters.
destroy: function()
Clean up.
destroy: function()
Remove ciruclar ref to layer
destroy: function()
Clean up.
destroy: function ()
Destroy this geometry.
destroy: function()
Deconstruct this layer.
destroy: function()
Deconstruct the layer and clear the grid.
destroy: function()
destroy: function()
destroy: function()
destroy: function()
Destroy this layer
destroy: function()
destroy:function()
Destroy this map
destroy: function()
Destroy the marker.
destroy: function()
destroy: function()
destroy: function()
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
destroy: function()
destroy: function()
Deconstruct the renderer.
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
Clean up the strategy.
destroy: function()
Clean up the strategy.
destroy: function()
nullify references to prevent circular references and memory leaks
destroy:function()
Nullify references to prevent circular references and memory leaks.
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
nullify references to prevent circular references and memory leaks
destroyFeatures: function(features,
options)
Erase and destroy features on the layer.
determineQuadrant: function(lonlat)
dir: function()
Prints an interactive listing of all properties of the object.
{String} ‘vertical’ or ‘horizontal’
dirxml: function()
Prints the XML source tree of an HTML or XML element.
display: function(display)
Hide or show the Layer
display: function(display)
Hide or show the Layer
{Boolean} Display the layer’s name in the layer switcher.
{Boolean} Request map tiles that are completely outside of the max extent for this layer.
{OpenLayers.Projection} Requires proj4js support.
{OpenLayers.Projection} The projection in which the mouse position is displayed
{OpenLayers.Projection} Requires proj4js support.
{OpenLayers.Projection} Requires proj4js support.Projection used by several controls to display data to user.
{Number} The distance to use in a DWithin spatial filter.
{Integer} Pixel distance between features that should be considered a single cluster.
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
{String} The units to use for the distance, e.g.
{DOMElement}
{DOMElement|String} The element that contains the map (or an id for that element).
{Integer} 72 (A sensible default)
{Boolean} Handle double-clicks.
Returns OpenLayers.Handler.Drag
{Integer} Constant used to make the control work in drag mode
Create a new control to drag features.
dragPanMapObject: function(dX,
dY)
dragPanMapObject: function(dX,
dY)
dragPanMapObject: function(dX,
dY)
drawFeature: function(feature,
style)
Draw (or redraw) a feature on the layer.
{int} duration of the tween (number of steps)
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General4.html b/openlayers/doc/apidocs/index/General4.html new file mode 100644 index 0000000..4e89566 --- /dev/null +++ b/openlayers/doc/apidocs/index/General4.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
E
 easing, OpenLayers.Tween
 edge, OpenLayers.Control.Split
 EditingToolbar, OpenLayers.Control.EditingToolbar.OpenLayers.Control
 Elements, OpenLayers.Renderer.Elements.OpenLayers.Renderer
 encodeBBOX
 equals
 error, OpenLayers.Console
 evaluate
 EVENT_TYPES
 eventListeners
 EventPane, OpenLayers.Layer.EventPane.OpenLayers.Layer
 events
 Events, OpenLayers.Events.OpenLayers
 exists, OpenLayers.ElementsIndexer
 extend
 externalProjection, OpenLayers.Format
 extractAttributes
 extractRoutes, OpenLayers.Format.GPX
 extractStyles, OpenLayers.Format.Text
 extractTracks, OpenLayers.Format.GPX
 extractWaypoints, OpenLayers.Format.GPX
+ +
{<OpenLayers.Easing>(Function)} Easing equation used for the animation Defaultly set to OpenLayers.Easing.Expo.easeOut
{Boolean} Allow splits given intersection of edges only.
Create an editing toolbar for a given layer.
{Boolean} Should the BBOX commas be encoded? 
{Boolean} Should the BBOX commas be encoded? 
equals: function(geometry)
Determine whether another geometry is equivalent to this one.
equals: function(geom)
Determine whether another geometry is equivalent to this one.
equals:function(ll)
equals:function(px)
Determine whether one pixel is equivalent to another
equals:function(sz)
Determine where this size is equal to another
error: function()
Writes a message to the console with the visual “error” icon and color coding and a hyperlink to the line where it was called.
evaluate: function(context)
Evaluates this filter in a specific context.
evaluate: function(context)
Evaluates this filter in a specific context.
evaluate: function(feature)
evaluates this rule for a specific feature
evaluate: function(context)
Evaluates this filter in a specific context.
evaluate: function(feature)
evaluates this rule for a specific feature
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types
{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
Create a new event pane layer
{OpenLayers.Events}
{OpenLayers.Events} An events object that handles all events on the map
{OpenLayers.Events} An events object that handles all events on the {OpenLayers.Request} object.
{OpenLayers.Events} An events object that handles all events on the tile.
Construct an OpenLayers.Events object.
exists: function(node)
node- {DOMElement} The node to test for existence.
extend:function(object)
Extend the bounds to include the point, lonlat, or bounds specified.
OpenLayers.Util.extend = function(destination,
source)
Copy all properties of a source object to a destination object.
{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.
{Boolean} Extract attributes from GML.
{Boolean} Extract attributes from GML.
{Boolean} Extract feature attributes from GPX.
{Boolean} Extract attributes from KML.
{Boolean} Extract attributes from GML.
{Boolean} Should the WFS layer parse attributes from the retrieved GML? 
{Boolean} Extract routes from GPX.
set to true to extract styles from the TSV files, using information from the image or icon, iconSize and iconOffset fields.
{Boolean} Extract tracks from GPX.
{Boolean} Extract waypoints from GPX.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General5.html b/openlayers/doc/apidocs/index/General5.html new file mode 100644 index 0000000..f2aced9 --- /dev/null +++ b/openlayers/doc/apidocs/index/General5.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
F
 fallThrough
 Feature
 featureAdded, OpenLayers.Control.DrawFeature
 featureClass, OpenLayers.Layer.WFS
 featureCoordSys, OpenLayers.Layer.ArcIMS
 featureDescription, OpenLayers.Format.GeoRSS
 FeatureId, OpenLayers.Filter.FeatureId.OpenLayers.Filter
 featureIdentifier, OpenLayers.Format.WMSGetFeatureInfo
 featureName, OpenLayers.Format.GML
 featurens, OpenLayers.Format.GeoRSS
 featureNS
 featurePrefix, OpenLayers.Format.GML
 features, OpenLayers.Layer.Vector
 Features, OpenLayers.Format.ArcXML.Features.OpenLayers.Format.ArcXML
 featureTitle, OpenLayers.Format.GeoRSS
 featureType, OpenLayers.Format.GML.Base
 fids, OpenLayers.Filter.FeatureId
 filter, OpenLayers.Array
 Filter
 filterCoordSys, OpenLayers.Layer.ArcIMS
 filters, OpenLayers.Filter.Logical
 finish, OpenLayers.Tween
 Fixed, OpenLayers.Strategy.Fixed.OpenLayers.Strategy
 fixedRelativePosition
 FixedZoomLevels, OpenLayers.Layer.FixedZoomLevels.OpenLayers.Layer
 FOLDER_PARAMS, OpenLayers.Layer.MapGuide
 foldersDesc, OpenLayers.Format.KML
 foldersName, OpenLayers.Format.KML
 format
 Format, OpenLayers.Format.OpenLayers
 formatOptions
 forwardMercator, OpenLayers.Layer.SphericalMercator
 Framed, OpenLayers.Popup.Framed.OpenLayers.Popup
 FramedCloud, OpenLayers.Popup.FramedCloud.OpenLayers.Popup
 fromArray, OpenLayers.Bounds
 fromSize, OpenLayers.Bounds
 fromString, OpenLayers.Bounds
 Functions
GlobalOpenLayers.ArrayOpenLayers.BoundsOpenLayers.ConsoleOpenLayers.Control.DragFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.MeasureOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationHistoryOpenLayers.Control.OverviewMapOpenLayers.Control.PanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.ElementOpenLayers.ElementsIndexerOpenLayers.ElementsIndexer.IndexingMethodsOpenLayers.EventsOpenLayers.FilterOpenLayers.Filter.ComparisonOpenLayers.Filter.FeatureIdOpenLayers.Filter.LogicalOpenLayers.Filter.SpatialOpenLayers.FormatOpenLayers.Format.ArcXMLOpenLayers.Format.ArcXML.FeaturesOpenLayers.Format.FilterOpenLayers.Format.GeoJSONOpenLayers.Format.GeoRSSOpenLayers.Format.GMLOpenLayers.Format.GPXOpenLayers.Format.JSONOpenLayers.Format.KMLOpenLayers.Format.OSMOpenLayers.Format.SLDOpenLayers.Format.TextOpenLayers.Format.WFSOpenLayers.Format.WFSCapabilitiesOpenLayers.Format.WFSCapabilities.v1OpenLayers.Format.WMCOpenLayers.Format.WMSCapabilitiesOpenLayers.Format.WMSCapabilities.v1_1OpenLayers.Format.WMSDescribeLayerOpenLayers.Format.WMSDescribeLayer.v1_1OpenLayers.Format.WMSGetFeatureInfoOpenLayers.Format.XMLOpenLayers.FunctionOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.Geometry.CurveOpenLayers.Geometry.LinearRingOpenLayers.Geometry.LineStringOpenLayers.Geometry.MultiPointOpenLayers.Geometry.PointOpenLayers.Geometry.PolygonOpenLayers.Geometry.RectangleOpenLayers.HandlerOpenLayers.Handler.ClickOpenLayers.Handler.HoverOpenLayers.Handler.PointOpenLayers.Handler.RegularPolygonOpenLayers.IconOpenLayers.LangOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.BoxesOpenLayers.Layer.EventPaneOpenLayers.Layer.FixedZoomLevelsOpenLayers.Layer.GMLOpenLayers.Layer.GoogleOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.KaMapOpenLayers.Layer.MarkersOpenLayers.Layer.MultiMapOpenLayers.Layer.PointTrackOpenLayers.Layer.SphericalMercatorOpenLayers.Layer.TextOpenLayers.Layer.TileCacheOpenLayers.Layer.TMSOpenLayers.Layer.VectorOpenLayers.Layer.VirtualEarthOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.Layer.XYZOpenLayers.Layer.YahooOpenLayers.LonLatOpenLayers.MapOpenLayers.MarkerOpenLayers.NumberOpenLayers.PixelOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.AnchoredBubbleOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProjectionOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.RendererOpenLayers.Renderer.CanvasOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RequestOpenLayers.RuleOpenLayers.SizeOpenLayers.StrategyOpenLayers.Strategy.ClusterOpenLayers.Strategy.FixedOpenLayers.Strategy.PagingOpenLayers.Strategy.SaveOpenLayers.StringOpenLayers.StyleOpenLayers.TileOpenLayers.Tile.ImageOpenLayers.Tile.WFSOpenLayers.TweenUtil
+ +
{Boolean}
{Boolean} Should OpenLayers allow events on the map to fall through to other elements on the page, or should it swallow them? 
Constructor for features.
{Function} Called after each feature is added
{OpenLayers.Feature} If featureClass is defined, an old-style markers based WFS layer is created instead of a new-style vector layer.
{String} Code for feature coordinate system.
{String} Default description for features.
Creates an ogc:FeatureId rule.
{String} All xml nodes containing this search criteria will populate an internal array of feature nodes for each layer node found.
{String} Element name for features.
{String} Feature Attributes namespace.
{String} Namespace used for feature attributes.
{String} The feature namespace.
{String} Namespace alias (or prefix) for feature nodes.
{Array(OpenLayers.Feature.Vector)}
Create a new parser/writer for ArcXML Features.
{String} Default title for features.
{Array(String) or String} The local (without prefix) feature typeName(s).
{Array(String)} Feature Ids to evaluate this rule against.
filter: function(array,
callback,
caller)
Filter an array.
This is an abstract class.
Create a new parser for Filter.
{String} Code for filter coordinate system.
{Array(OpenLayers.Filter)} Child filters for this filter.
{Object} Values to finish the animation with
Create a new Fixed strategy.
{Boolean} We want the framed popup to work dynamically placed relative to its anchor but also in just one fixed position.
{Boolean} The Framed Cloud popup works in just one fixed position.
Create a new fixed zoom levels layer.
{Object} Hashtable of parameter key/value pairs which describe the folder structure for tiles as configured in the mapguide serverconfig.ini section [TileServiceProperties]
{String} Description of the folders.
{String} Name of the folders.
{OpenLayers.Format} The format you want the data to be parsed with.
{String} Mime type of the images returned.
{OpenLayers.Format} The format you want the data to be parsed with.
format: function(num,
dec,
tsep,
dsep)
Formats a number for output.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
Instances of this class are not useful.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Hash of options which should be passed to the format when it is created.
forwardMercator: function(lon,
lat)
Given a lon,lat in EPSG:4326, return a point in Spherical Mercator.
OpenLayers.Bounds.fromArray = function(bbox)
Alternative constructor that builds a new OpenLayers.Bounds from an array
OpenLayers.Bounds.fromSize = function(size)
Alternative constructor that builds a new OpenLayers.Bounds from a size
OpenLayers.Bounds.fromString = function(str)
Alternative constructor that builds a new OpenLayers.Bounds from a parameter string
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General6.html b/openlayers/doc/apidocs/index/General6.html new file mode 100644 index 0000000..dfdd3c2 --- /dev/null +++ b/openlayers/doc/apidocs/index/General6.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 Gears, OpenLayers.Protocol.SQL.Gears.OpenLayers.Protocol.SQL
 GeoJSON, OpenLayers.Format.GeoJSON.OpenLayers.Format
 geometry
 Geometry, OpenLayers.Geometry.OpenLayers
 geometryName, OpenLayers.Format.GML
 geometryType, OpenLayers.Layer.Vector
 geometryTypes
 geons, OpenLayers.Format.GeoRSS
 GeoRSS
 georssns, OpenLayers.Format.GeoRSS
 GET, OpenLayers.Request
 getArea
 getAttributeNodeNS, OpenLayers.Format.XML
 getAttributeNS, OpenLayers.Format.XML
 getBounds, OpenLayers.Geometry
 getBy, OpenLayers.Map
 getCenter, OpenLayers.Map
 getCenterLonLat, OpenLayers.Bounds
 getCenterPixel, OpenLayers.Bounds
 getCentroid
 getChildEl, OpenLayers.Format.XML
 getChildValue, OpenLayers.Format.XML
 getCode
 getControl, OpenLayers.Map
 getControlsBy
 getControlsByClass
 getControlsByName, OpenLayers.Control.Panel
 getDataExtent
 getDimensions, OpenLayers.Element
 getElementsByTagNameNS, OpenLayers.Format.XML
 getExtent
 GetFeature, OpenLayers.Control.GetFeature.OpenLayers.Control
 getFeatureById, OpenLayers.Layer.Vector
 getFullRequestString
 getGeodesicArea
 getGeodesicLength
 getHeight
 getImageSize, OpenLayers.Layer
 getLatitudeFromMapObjectLonLat
 getLayer, OpenLayers.Map
 getLayerIndex, OpenLayers.Map
 getLayerPxFromLonLat, OpenLayers.Map
 getLayerPxFromViewPortPx, OpenLayers.Map
 getLayersBy, OpenLayers.Map
 getLayersByClass, OpenLayers.Map
 getLayersByName, OpenLayers.Map
 getLength
 getLongitudeFromMapObjectLonLat
 getLonLatFromPixel, OpenLayers.Map
 getLonLatFromViewPortPx, OpenLayers.Layer
 getMapObjectBoundsFromOLBounds, OpenLayers.Layer.Google
 getMapObjectCenter
 getMapObjectLonLatFromLonLat
 getMapObjectLonLatFromMapObjectPixel
 getMapObjectPixelFromMapObjectLonLat
 getMapObjectPixelFromXY
 getMapObjectSizeFromOLSize, OpenLayers.Layer.Yahoo
 getMapObjectZoom
 getMapObjectZoomFromMapObjectBounds, OpenLayers.Layer.Google
 getMapObjectZoomFromOLZoom, OpenLayers.Layer.Yahoo
 getMaxExtent, OpenLayers.Map
 getMaxResolution, OpenLayers.Map
 getNextEl, OpenLayers.Format.XML
 getNextElement, OpenLayers.ElementsIndexer
 getNumLayers, OpenLayers.Map
 getNumZoomLevels, OpenLayers.Map
 getOLBoundsFromMapObjectBounds, OpenLayers.Layer.Google
 getOLZoomFromMapObjectZoom, OpenLayers.Layer.Yahoo
 getPixelFromLonLat, OpenLayers.Map
 getProjection, OpenLayers.Map
 getProjectionObject, OpenLayers.Map
 getResolution
 getResolutionForZoom
 getSafeContentSize, OpenLayers.Popup
 getScale, OpenLayers.Map
 getScrollbarWidth, Util
 getSize
 getStyle, OpenLayers.Element
 getTileBounds
 getTilesBounds, OpenLayers.Layer.Grid
 getTileSize, OpenLayers.Map
 getUnits
 getURL, OpenLayers.Layer.Image
 getVertices
 getViewPortPxFromLayerPx, OpenLayers.Map
 getViewPortPxFromLonLat
 getVisibility, OpenLayers.Layer
 getWarningHTML
 getWidth, OpenLayers.Bounds
 getXFromMapObjectPixel
 getYFromMapObjectPixel
 getZIndex, OpenLayers.ElementsIndexer
 getZoom, OpenLayers.Map
 getZoomForExtent
 getZoomForResolution
 GML
 gmlns, OpenLayers.Format.GML
 Google, OpenLayers.Layer.Google.OpenLayers.Layer
 GPX, OpenLayers.Format.GPX.OpenLayers.Format
 granularity, OpenLayers.Control.MousePosition
 Grid, OpenLayers.Layer.Grid.OpenLayers.Layer
 group, OpenLayers.Console
 groupEnd, OpenLayers.Console
 gutter, OpenLayers.Layer
+ +
Create a new parser for GeoJSON.
{OpenLayers.Geometry}
{String} Name of geometry element.
Creates a geometry object.
{String} Name of geometry element.
{String} geometryType allows you to limit the types of geometries this layer supports.
{Array(String)} To restrict dragging to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
{Array(String)} To restrict modification to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
{Array(String)} To restrict selecting to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
{String} W3C Geo namespace to use.
Create a new parser for GeoRSS.
Create a GeoRSS Layer.
{String} GeoRSS namespace to use.
GET: function(config)
Send an HTTP GET request.
getArea: function()
Calculate the area of this geometry.
getArea: function()
getArea: function()
Calculated by subtracting the areas of the internal holes from the area of the outer hole.
getArea: function()
{Float} The area of the geometry
getAttributeNodeNS: function(node,
uri,
name)
Get an attribute node given the namespace URI and local name.
getAttributeNS: function(node,
uri,
name)
Get an attribute value given the namespace URI and local name.
getBounds: function()
Get the bounds for this Geometry.
getBy: function(array,
property,
match)
Get a list of objects given a property and a match item.
getCenter: function ()
{OpenLayers.LonLat}
getCenterLonLat:function()
{OpenLayers.LonLat} The center of the bounds in map space.
getCenterPixel:function()
{OpenLayers.Pixel} The center of the bounds in pixel space.
getCentroid: function()
Calculate the centroid of this geometry.
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
getChildEl: function(node,
name,
uri)
Get the first child element.
getChildValue: function(node,
def)
Get the textual value of the node if it exists, or return an optional default string.
getCode: function()
Get the current language code.
getCode: function()
Get the string SRS code.
getControl: function (id)
getControlsBy: function(property,
match)
Get a list of controls with properties matching the given criteria.
getControlsBy: function(property,
match)
Get a list of controls with properties matching the given criteria.
getControlsByClass: function(match)
Get a list of controls of a given type (CLASS_NAME).
getControlsByClass: function(match)
Get a list of controls of a given class (CLASS_NAME).
getControlsByName: function(match)
Get a list of contorls with names matching the given name.
getDataExtent: function ()
Calculates the max extent which includes all of the markers.
getDataExtent: function ()
Calculates the max extent which includes all of the features.
getDataExtent: function ()
Calculates the max extent which includes all of the layer data.
getDimensions: function(element)
getElementsByTagNameNS: function(node,
uri,
name)
Get a list of elements on a node given the namespace URI and local name.
getExtent: function()
{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getExtent: function ()
Calculates using px-> lonlat translation functions on tl and br corners of viewport
getExtent: function ()
{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
Create a new control for fetching remote features.
getFeatureById: function(featureId)
Given a feature id, return the feature if it exists in the features array
getFullRequestString:function(newParams,
altUrl)
combine the layer’s url with its params and these newParams.
getFullRequestString:function(newParams,
altUrl)
Combine the layer’s url with its params and these newParams.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getGeodesicLength: function(projection)
Calculate the approximate length of the geometry were it projected onto the earth.
getGeodesicLength: function(projection)
Calculate the approximate length of the geometry were it projected onto the earth.
getHeight:function()
{Float} The height of the bounds (top minus bottom).
getHeight: function(element)
getImageSize: function()
{OpenLayers.Size} The size that the image should be, taking into account gutters.
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLayer: function(id)
Get a layer based on its id
getLayerIndex: function (layer)
getLayerPxFromLonLat: function (lonlat)
getLayerPxFromViewPortPx:function(viewPortPx)
getLayersBy: function(property,
match)
Get a list of layers with properties matching the given criteria.
getLayersByClass: function(match)
Get a list of layers of a given class (CLASS_NAME).
getLayersByName: function(match)
Get a list of layers with names matching the given name.
getLength: function()
Calculate the length of this geometry
getLength: function()
{Float} The length of the curve
getLength: function()
{Float} The length of the geometry
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLonLatFromPixel: function (px)
getLonLatFromViewPortPx: function (viewPortPx)
getMapObjectBoundsFromOLBounds: function(olBounds)
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectSizeFromOLSize: function(olSize)
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoomFromMapObjectBounds: function(moBounds)
getMapObjectZoomFromOLZoom: function(olZoom)
getMaxExtent: function (options)
getMaxResolution: function()
{String} The Map’s Maximum Resolution
getNextEl: function(node,
name,
uri)
Get the next sibling element.
getNextElement: function(index)
Get the next element in the order stack.
getNumLayers: function ()
{Int} The number of layers attached to the map.
getNumZoomLevels: function()
{Integer} The total number of zoom levels that can be displayed by the current baseLayer.
getOLBoundsFromMapObjectBounds: function(moBounds)
getOLZoomFromMapObjectZoom: function(moZoom)
getPixelFromLonLat: function (lonlat)
Returns a pixel location given a map location.
getProjection: function()
This method returns a string representing the projection.
getProjectionObject: function()
Returns the projection obect from the baselayer.
getResolution: function()
{Float} The currently selected resolution of the map, taken from the resolutions array, indexed by current zoom level.
getResolution: function()
Get the current map resolution
getResolution: function ()
{Float} The current resolution of the map.
getResolutionForZoom: function(zoom)
getResolutionForZoom: function(zoom)
getSafeContentSize: function(size)
getScale: function ()
{Float} The current scale denominator of the map.
OpenLayers.Util.getScrollbarWidth = function()
This function has been modified by the OpenLayers from the original version, written by Matthew Eernisse and released under the Apache 2 license here:
getSize:function()
{OpenLayers.Size} The size of the box.
getSize: function ()
{OpenLayers.Size} An OpenLayers.Size object that represents the size, in pixels, of the div into which OpenLayers has been loaded.
getStyle: function(element,
style)
getTileBounds: function(viewPortPx)
Returns The tile bounds for a layer given a pixel location.
getTileBounds: function(viewPortPx)
Returns The tile bounds for a layer given a pixel location.
getTilesBounds: function()
Return the bounds of the tile grid.
getTileSize: function()
Get the tile size for the map
getUnits: function ()
{Float} The current units of the map.
getUnits: function()
Get the units string for the projection -- returns null if proj4js is not available.
getURL: function(bounds)
The url we return is always the same (the image itself never changes) so we can ignore the bounds parameter (it will always be the same, anyways)
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getViewPortPxFromLayerPx:function(layerPx)
getViewPortPxFromLonLat: function (lonlat)
Returns a pixel location given a map location.
getViewPortPxFromLonLat: function (lonlat)
getVisibility: function()
{Boolean} The layer should be displayed (if in range).
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWidth:function()
{Float} The width of the bounds
getXFromMapObjectPixel: function(moPixel)
getXFromMapObjectPixel: function(moPixel)
getXFromMapObjectPixel: function(moPixel)
getXFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getZIndex: function(node)
Get the z-index value for the current node from the node data itself.
getZoom: function ()
{Integer}
getZoomForExtent: function(extent,
closest)
getZoomForExtent: function (bounds,
closest)
getZoomForResolution: function(resolution,
closest)
getZoomForResolution: function(resolution,
closest)
Create a new parser for GML.
Load and parse a single file on the web, according to the format provided via the ‘format’ option, defaulting to GML.
{String} GML Namespace.
Create a new parser for GPX.
{Integer}
Create a new grid layer
group: function()
Writes a message to the console and opens a nested block to indent all future messages sent to the console.
groupEnd: function()
Closes the most recently opened block created by a call to OpenLayers.Console.group
{Integer} Determines the width (in pixels) of the gutter around image tiles to ignore.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General7.html b/openlayers/doc/apidocs/index/General7.html new file mode 100644 index 0000000..e5939d0 --- /dev/null +++ b/openlayers/doc/apidocs/index/General7.html @@ -0,0 +1,46 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
H
 h, OpenLayers.Size
 Handler, OpenLayers.Handler.OpenLayers
 handleRightClicks, OpenLayers.Control.Navigation
 handlerOptions
 hasAttributeNS, OpenLayers.Format.XML
 HEAD, OpenLayers.Request
 hide, OpenLayers.Element
 highlightOnly, OpenLayers.Control.SelectFeature
 hover
 Hover, OpenLayers.Handler.Hover.OpenLayers.Handler
 HTTP, OpenLayers.Protocol.HTTP.OpenLayers.Protocol
 HTTPRequest, OpenLayers.Layer.HTTPRequest.OpenLayers.Layer
I
 i18n, OpenLayers.Lang.OpenLayers
 icon, OpenLayers.Layer.GeoRSS
 Icon, OpenLayers.Icon.OpenLayers
 id, OpenLayers.Layer
 Image, OpenLayers.Layer.Image.OpenLayers.Layer
 IMAGE_EXTENSIONS, OpenLayers.Layer.KaMapCache
 imageSize, OpenLayers.Popup.FramedCloud
 INCHES_PER_UNIT, Util
 includeXY, OpenLayers.Events
 indent, OpenLayers.Format.JSON
 info, OpenLayers.Console
 inherit
 initialize, OpenLayers.ElementsIndexer
 insert, OpenLayers.ElementsIndexer
 internalProjection, OpenLayers.Format
 intersects
 intersectsBounds, OpenLayers.Bounds
 INTERVAL, OpenLayers.Tween
 inverseMercator, OpenLayers.Layer.SphericalMercator
 irregular, OpenLayers.Handler.RegularPolygon
 isAlphaImage
 isBaseLayer
 isDefault, OpenLayers.Style
 isDrawn
 iserror, OpenLayers.Format.ArcXML
 isFixed
 isNumeric, OpenLayers.String.OpenLayers.String
 isSimpleContent, OpenLayers.Format.XML
 issue, OpenLayers.Request
 isVector, OpenLayers.Layer.Vector
J
 JSON, OpenLayers.Format.JSON.OpenLayers.Format
K
 KaMap, OpenLayers.Layer.KaMap.OpenLayers.Layer
 KaMapCache, OpenLayers.Layer.KaMapCache.OpenLayers.Layer
 keepData, OpenLayers.Format
 keepInMap
 KEY_BACKSPACE, OpenLayers.Event
 KEY_DELETE, OpenLayers.Event
 KEY_DOWN, OpenLayers.Event
 KEY_ESC, OpenLayers.Event
 KEY_EVENTS, OpenLayers.handler.Keyboard
 KEY_LEFT, OpenLayers.Event
 KEY_RETURN, OpenLayers.Event
 KEY_RIGHT, OpenLayers.Event
 KEY_TAB, OpenLayers.Event
 KEY_UP, OpenLayers.Event
 Keyboard, OpenLayers.handler.Keyboard.OpenLayers.Handler
 KeyboardDefaults, OpenLayers.Control.KeyboardDefaults.OpenLayers.Control
 keyMask, OpenLayers.Handler
 KML, OpenLayers.Format.KML.OpenLayers.Format
 kmlns, OpenLayers.Format.KML
+ +
{Number} height
Construct a handler.
{Boolean} Whether or not to handle right clicks.
{Object} Used to set non-default properties on the control’s handler
{Object} Additional options for the handlers used by this control.
{Object} Used to set non-default properties on the control’s handler
{Object} Additional options for the handlers used by this control, e.g.
hasAttributeNS: function(node,
uri,
name)
Determine whether a node has a particular attribute matching the given name and namespace.
HEAD: function(config)
Send an HTTP HEAD request.
hide: function()
Hide element(s) passed in
{Boolean} If true do not actually select features (i.e.
{Boolean} Send feature requests on mouse moves.
{Boolean} Select on mouse over and deselect on mouse out.
{Boolean} Send GetFeatureInfo requests when mouse stops moving.
Construct a hover handler.
A class for giving layers generic HTTP protocol.
+ + + +
Alias for OpenLayers.Lang.translate.
{OpenLayers.Icon}.
Creates an icon, which is an image tag in a div.
{String}
Create a new image layer
{Object} Simple hash map to convert format to extension.
{OpenLayers.Size}
{Object} Constant inches per unit -- borrowed from MapServer mapscale.c derivation of nautical miles from http://en.wikipedia.org/wiki/Nautical_mile Includes the full set of units supported by CS-MAP (http://trac.osgeo.org/csmap/) and PROJ.4 (http://trac.osgeo.org/proj/) The hardcoded table is maintain in a CS-MAP source code module named CSdataU.c The hardcoded table of PROJ.4 units are in pj_units.c.
{Boolean} Should the .xy property automatically be created for browser mouse events? 
{String} For “pretty” printing, the indent string will be used once for each indentation level.
info: function()
Writes a message to the console with the visual “info” icon and color coding and a hyperlink to the line where it was called.
OpenLayers.Class.inherit = function ()
Deprecated.
initialize: function(yOrdering)
Create a new indexer with
insert: function(newNode)
Insert a new node into the indexer.
{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersects: function(geometry)
Test for instersection between two geometries.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersectsBounds:function(bounds,
inclusive)
Determine whether the target bounds intersects this bounds.
{int} Interval in milliseconds between 2 steps
inverseMercator: function(x,
y)
Given a x,y in Spherical Mercator, return a point in EPSG:4326.
{Boolean} Draw an irregular polygon instead of a regular polygon.
{Boolean} The image has some alpha and thus needs to use the alpha image hack.
{Boolean} The FramedCloud does not use an alpha image (in honor of the good ie6 folk out there)
{Boolean} Whether or not the layer is a base layer.
{Boolean} Default is true for ArcGIS93Rest layer
{Boolean} The layer is a base layer.
{Boolean} KaMap Layer is always a base layer
{Boolean} Treat this layer as a base layer.
{Boolean} Markers layer is never a base layer.
{Boolean} Treat this layer as a base layer.
{Boolean}
{Boolean} The layer is a base layer.
{Boolean} WFS layer is not a base layer by default.
{Boolean} Default is true for WMS layer
WorldWind layer is a base layer by default.
Default is true, as this is designed to be a base tile source.
{Boolean}
isDrawn: function()
{Boolean} Whether or not the icon is drawn.
isDrawn: function()
{Boolean} Whether or not the marker is drawn.
iserror: function(data)
Check to see if the response from the server was an error.
{Boolean} EventPaned layers are fixed by default.
{Boolean} Whether the layer remains in one place while dragging the map.
Determine whether a string contains only a numeric value.
isSimpleContent: function(node)
Test if the given node has only simple content (i.e.
issue: function(config)
Create a new XMLHttpRequest object, open it, set any headers, bind a callback to done state, and send any data.
{Boolean} Whether the layer is a vector layer.
+ + + +
Create a new parser for JSON.
+ + + +
{Object} Maintain a reference (data) to the most recently read data.
{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.
{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.
{int}
{int}
{int}
{int}
keydown, keypress, keyup
{int}
{int}
{int}
{int}
{int}
Returns a new keyboard handler.
{Integer} Use bitwise operators and one or more of the OpenLayers.Handler constants to construct a keyMask.
Create a new parser for KML.
{String} KML Namespace to use.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General8.html b/openlayers/doc/apidocs/index/General8.html new file mode 100644 index 0000000..8e01767 --- /dev/null +++ b/openlayers/doc/apidocs/index/General8.html @@ -0,0 +1,38 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
L
 LABEL_ALIGN
 LABEL_SHIFT, OpenLayers.Renderer.VML.OpenLayers.Renderer.VML
 LABEL_VSHIFT, OpenLayers.Renderer.SVG.OpenLayers.Renderer.SVG
 lat, OpenLayers.LonLat
 layer, OpenLayers.Control.Split
 Layer, OpenLayers.Layer.OpenLayers
 layerIdentifier, OpenLayers.Format.WMSGetFeatureInfo
 layerName
 layers
 LayerSwitcher, OpenLayers.Control.LayerSwitcher.OpenLayers.Control
 limit, OpenLayers.Control.NavigationHistory
 limitSigDigs
 LinearRing, OpenLayers.Geometry.LinearRing.OpenLayers.Geometry
 LineString, OpenLayers.Geometry.LineString.OpenLayers.Geometry
 loadURL
 location, OpenLayers.Layer.Text
 log, OpenLayers.Console
 Logical, OpenLayers.Filter.Logical.OpenLayers.Filter
 lon, OpenLayers.LonLat
 LonLat, OpenLayers.LonLat.OpenLayers
 lookupNamespaceURI
 lowerBoundary, OpenLayers.Filter.Comparison
 lzd, OpenLayers.Layer.WorldWind
M
 map, OpenLayers.Layer
 Map, OpenLayers.Map.OpenLayers
 MapGuide, OpenLayers.Layer.MapGuide.OpenLayers.Layer
 mapOptions, OpenLayers.Control.OverviewMap
 MapServer, OpenLayers.Layer.MapServer.OpenLayers.Layer
 Marker, OpenLayers.Marker.OpenLayers
 markers, OpenLayers.Layer.Markers
 Markers, OpenLayers.Layer.Markers.OpenLayers.Layer
 MAX_PIXEL, OpenLayers.Renderer.SVG
 MAX_ZOOM_LEVEL
 maxDepth, OpenLayers.Format.KML
 maxExtent
 maxFeatures
 maxRatio, OpenLayers.Control.OverviewMap
 maxResolution
 maxScale
 maxScaleDenominator, OpenLayers.Rule
 maxSize
 Measure, OpenLayers.Control.Measure.OpenLayers.Control
 mergeNewParams
 MIN_ZOOM_LEVEL
 minExtent
 minRatio, OpenLayers.Control.OverviewMap
 minRectDisplayClass, OpenLayers.Control.OverviewMap
 minRectSize, OpenLayers.Control.OverviewMap
 minResolution
 minScale
 minScaleDenominator, OpenLayers.Rule
 minSize
 MOD_ALT, OpenLayers.Handler.OpenLayers.Handler
 MOD_CTRL, OpenLayers.Handler.OpenLayers.Handler
 MOD_NONE, OpenLayers.Handler.OpenLayers.Handler
 MOD_SHIFT, OpenLayers.Handler.OpenLayers.Handler
 mode, OpenLayers.Control.ModifyFeature
 ModifyFeature, OpenLayers.Control.ModifyFeature.OpenLayers.Control
 MouseDefaults, OpenLayers.Control.MouseDefaults.OpenLayers.Control
 MousePosition, OpenLayers.Control.MousePosition.OpenLayers.Control
 MouseToolbar, OpenLayers.Control.MouseToolbar.OpenLayers.Control
 MouseWheel, OpenLayers.Handler.MouseWheel.OpenLayers.Handler
 move
 MultiLineString, OpenLayers.Geometry.MultiLineString.OpenLayers.Geometry
 MultiMap, OpenLayers.Layer.MultiMap.OpenLayers.Layer
 multiple
 multipleKey, OpenLayers.Control.GetFeature
 MultiPoint, OpenLayers.Geometry.MultiPoint.OpenLayers.Geometry
 MultiPolygon, OpenLayers.Geometry.MultiPolygon.OpenLayers.Geometry
 mutual, OpenLayers.Control.Split
+ +
{Object}
{Object}
{Object}
{Object}
{Float} The y-axis coordinate in map units
{OpenLayers.Layer.Vector} The target layer with features to be split.
{String} All xml nodes containing this search criteria will populate an internal array of layer nodes.
{String} Name of data layer.
{String} name of the layer that this style belongs to, usually according to the NamedLayer attribute of an SLD document.
{Array(OpenLayers.Layer)} Ordered list of layers in the overview map.
{Array} An array of objects with layer properties.
Layers that are attached to this container.
{Array(OpenLayers.Layer)} Ordered list of layers in the map
{Integer} Optional limit on the number of history items to retain.
limitSigDigs: function(num,
sig)
Limit the number of significant digits on a float.
Deprecated.
Linear rings are constructed with an array of points.
Create a new LineString geometry
OpenLayers.loadURL = function(uri,
params,
caller,
onComplete,
onFailure)
Background load a document.
{String} URL of text file.
log: function()
Log an object in the console.
Creates a logical filter (And, Or, Not).
{Float} The x-axis coodinate in map units
Create a new map location.
lookupNamespaceURI: function(node,
prefix)
Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
{Number} or {String} lower boundary for between comparisons.
LevelZeroTileSizeDegrees
+ + + +
{OpenLayers.Map} This variable is set when the layer is added to the map, via the accessor function setMap().
Constructor for a new OpenLayers.Map instance.
Create a new Mapguide layer, either tiled or untiled.
{Object} An object containing any non-default properties to be sent to the overview map’s map constructor.
Create a new MapServer layer object
{Array(OpenLayers.Marker)} internal marker list
Create a Markers layer.
{Integer} Firefox has a limitation where values larger or smaller than about 15000 in an SVG document lock the browser up.
{Integer} 19
{Integer} 17
{Integer} 17
{Integer} 17
{Integer} Maximum depth for recursive loading external KML URLs Defaults to 0: do no external fetching
{OpenLayers.Bounds} The center of these bounds will not stray outside of the viewport extent during panning.
{OpenLayers.Bounds} The maximum extent for the map.
{Integer} Maximum number of features to return from a query, if supported by the protocol.
{Integer} Maximum number of features to return from a WMS query.
{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther in on the overview map.
{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
{Float}
{Float}
{Number} or {String} maximum scale at which to draw the feature.
{OpenLayers.Size} Maximum size allowed for the popup’s contents.
{OpenLayers.Size}
mergeNewParams:function(newParams)
Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
mergeNewParams:function(newParams)
mergeNewParams:function(newParams)
Modify parameters for the layer and redraw.
mergeNewParams:function(newParams)
Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
{Integer} 0
{Integer} 1
{Integer} 1
{Integer} 0
{OpenLayers.Bounds}
{OpenLayers.Bounds}
{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther out on the overview map.
{String} Replacement style class name for the extent rectangle when minRectSize is reached.
{Integer} The minimum width or height (in pixels) of the extent rectangle on the overview map.
{Float}
{Float}
{Float}
{Float}
{Number} or {String} minimum scale at which to draw the feature.
{OpenLayers.Size} Minimum size allowed for the popup’s contents.
{OpenLayers.Size}
If set as the keyMask, checkModifiers returns false if Alt is down.
If set as the keyMask, checkModifiers returns false if Ctrl is down.
If set as the keyMask, checkModifiers returns false if any key is down.
If set as the keyMask, checkModifiers returns false if Shift is down.
{Integer} Bitfields specifying the modification mode.
Create a new modify feature control.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
Constructor for a MultiLineString Geometry.
{Boolean} Allow selection of multiple geometries.
{Boolean} Allow selection of multiple geometries.
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the multiple property to true.
Create a new MultiPoint Geometry
Create a new MultiPolygon geometry
{Boolean} If source and target layers are the same, split source features and target features where they intersect.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/General9.html b/openlayers/doc/apidocs/index/General9.html new file mode 100644 index 0000000..c6613d1 --- /dev/null +++ b/openlayers/doc/apidocs/index/General9.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
N
 name
 namedLayersAsArray, OpenLayers.Format.SLD
 Navigation, OpenLayers.Control.Navigation.OpenLayers.Control
 NavigationHistory, OpenLayers.Control.NavigationHistory.OpenLayers.Control
 NavToolbar, OpenLayers.Control.NavToolbar.OpenLayers.Control
 newline, OpenLayers.Format.JSON
 next, OpenLayers.Control.NavigationHistory
 nextOptions, OpenLayers.Control.NavigationHistory
 nextTrigger, OpenLayers.Control.NavigationHistory
 noMagic, OpenLayers.Layer.WMS
 numDigits, OpenLayers.Control.MousePosition
 numericIf, OpenLayers.String
 numLoadingTiles, OpenLayers.Layer.Grid
 numZoomLevels
+ +
{String}
{String} Layer name.
{String} name of this rule
{String}
{Boolean} Generate a namedLayers array.
Create a new navigation control
Add our two mousedefaults controls.
{String} For “pretty” printing, the newline string will be used at the end of each name/value pair or array item.
{OpenLayers.Control} A button type control whose trigger method restores the next state managed by this control.
{Object} Set this property on the options argument of the constructor to set optional properties on the next control.
nextTrigger: function()
Restore the next state.
{Boolean} If true, the image format will not be automagicaly switched from image/jpeg to image/png or image/gif when using TRANSPARENT=TRUE.
{Integer}
numericIf: function(value)
Converts a string that appears to be a numeric value into a number.
{Integer} How many tiles are still loading?
{Integer}
{Integer} Number of zoom levels for the map.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Properties.html b/openlayers/doc/apidocs/index/Properties.html new file mode 100644 index 0000000..5159ae7 --- /dev/null +++ b/openlayers/doc/apidocs/index/Properties.html @@ -0,0 +1,54 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
A
 allOverlays, OpenLayers.Map
 alwaysInRange, OpenLayers.Layer
 areaTags, OpenLayers.Format.OSM
 argParserClass, OpenLayers.Control.Permalink
 ascending, OpenLayers.Control.LayerSwitcher
 async, OpenLayers.Layer.ArcIMS
 attributes, OpenLayers.Feature.Vector
 attribution, OpenLayers.Layer
 auto, OpenLayers.Strategy.Save
 autoPan, OpenLayers.Control.OverviewMap
 autoSize
B
 base, OpenLayers.Control.Permalink
 baseLayer, OpenLayers.Map
 begin, OpenLayers.Tween
 bounds, OpenLayers.Tile
 box
 boxDivClassName, OpenLayers.Handler.Box
 buffer, OpenLayers.Layer.Grid
C
 callbacks
 checkTags, OpenLayers.Format.OSM
 click, OpenLayers.Control.GetFeature
 clickout
 clickTolerance, OpenLayers.Control.GetFeature
 closeOnMove, OpenLayers.Popup
 collectionName, OpenLayers.Format.GML
 components, OpenLayers.Geometry.Collection
 control, OpenLayers.Handler
D
 data, OpenLayers.Format
 databaseName, OpenLayers.Protocol.SQL
 defaultCode, OpenLayers.Lang
 defaultControl, OpenLayers.Control.Panel
 defaultStyle, OpenLayers.Format.Text
 defaultSymbolizer, OpenLayers.Format.SLD.v1
 defaultVersion
 deferDelete, OpenLayers.Control.Split
 delay
 deleteCodes, OpenLayers.Control.ModifyFeature
 direction, OpenLayers.Control.MouseToolbar
 displayInLayerSwitcher, OpenLayers.Layer
 displayOutsideMaxExtent, OpenLayers.Layer
 displayProjection
 distance
 distanceUnits, OpenLayers.Filter.Spatial
 div
 double, OpenLayers.Handler.Click
 duration, OpenLayers.Tween
E
 easing, OpenLayers.Tween
 edge, OpenLayers.Control.Split
 encodeBBOX
 eventListeners
 events
 externalProjection, OpenLayers.Format
 extractAttributes
 extractRoutes, OpenLayers.Format.GPX
 extractStyles, OpenLayers.Format.Text
 extractTracks, OpenLayers.Format.GPX
 extractWaypoints, OpenLayers.Format.GPX
F
 fallThrough
 featureAdded, OpenLayers.Control.DrawFeature
 featureClass, OpenLayers.Layer.WFS
 featureCoordSys, OpenLayers.Layer.ArcIMS
 featureDescription, OpenLayers.Format.GeoRSS
 featureIdentifier, OpenLayers.Format.WMSGetFeatureInfo
 featureName, OpenLayers.Format.GML
 featurens, OpenLayers.Format.GeoRSS
 featureNS
 featurePrefix, OpenLayers.Format.GML
 features, OpenLayers.Layer.Vector
 featureTitle, OpenLayers.Format.GeoRSS
 featureType, OpenLayers.Format.GML.Base
 fids, OpenLayers.Filter.FeatureId
 filterCoordSys, OpenLayers.Layer.ArcIMS
 filters, OpenLayers.Filter.Logical
 finish, OpenLayers.Tween
 fixedRelativePosition
 foldersDesc, OpenLayers.Format.KML
 foldersName, OpenLayers.Format.KML
 format
 formatOptions
+ +
{Boolean} Allow the map to function with “overlays” only.
{Boolean} If a layer’s display should not be scale-based, this should be set to true.
{Array} List of tags indicating that something is an area.
{Class} The ArgParser control class (not instance) to use with this control.
{Boolean}
{Boolean} Request images asynchronously.
{Object} This object holds arbitrary properties that describe the feature.
{String} Attribution string, displayed when an OpenLayers.Control.Attribution has been added to the map.
{Boolean | Number} Auto-save.
{Boolean} Always pan the overview map, so the extent marker remains in the center.
{Boolean} Resize the popup to auto-fit the contents.
{Boolean} Framed Cloud is autosizing by default.
+ + + +
{String}
{OpenLayers.Layer} The currently selected base layer.
{Object} Values to start the animation with
{OpenLayers.Bounds} null
{Boolean} Allow feature selection by drawing a box.
{Boolean} Allow feature selection by drawing a box.
{String} The CSS class to use for drawing the box.
{Integer} Used only when in gridded mode, this specifies the number of extra rows and colums of tiles on each side which will surround the minimum grid tiles to cover the map.
+ + + +
{Object} The functions that are sent to the handlers.feature for callback
{Object} An object with start, eachStep and done properties whose values are functions to be call during the animation.
{Boolean} Should tags be checked to determine whether something should be treated as a seperate node.
{Boolean} Use a click handler for selecting/unselecting features.
{Boolean} Unselect features when clicking outside any feature.
{Boolean} Unselect features when clicking outside any feature.
{Boolean} Unselect features when clicking outside any feature.
{Integer} Tolerance for the BBOX query in pixels.
{Boolean} When map pans, close the popup.
{String} Name of featureCollection element.
{Array(OpenLayers.Geometry)} The component parts of this geometry
{OpenLayers.Control}.
+ + + +
{Object} When keepData is true, this is the parsed string sent to read.
{String}
{String} Default language to use when a specific language can’t be found.
{OpenLayers.Control} The control which is activated when the control is activated (turned on), which also happens at instantiation.
defaultStyle allows one to control the default styling of the features.
{Object} A symbolizer with the SLD defaults.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{Boolean} Instead of removing features from the layer, set feature states of split features to DELETE.
{Number} Number of milliseconds between clicks before the event is considered a double-click.
{Array(Integer)} Keycodes for deleting verticies.
{String} ‘vertical’ or ‘horizontal’
{Boolean} Display the layer’s name in the layer switcher.
{Boolean} Request map tiles that are completely outside of the max extent for this layer.
{OpenLayers.Projection} Requires proj4js support.
{OpenLayers.Projection} The projection in which the mouse position is displayed
{OpenLayers.Projection} Requires proj4js support.
{OpenLayers.Projection} Requires proj4js support.Projection used by several controls to display data to user.
{Number} The distance to use in a DWithin spatial filter.
{Integer} Pixel distance between features that should be considered a single cluster.
{String} The units to use for the distance, e.g.
{DOMElement}
{DOMElement|String} The element that contains the map (or an id for that element).
{Boolean} Handle double-clicks.
{int} duration of the tween (number of steps)
+ + + +
{<OpenLayers.Easing>(Function)} Easing equation used for the animation Defaultly set to OpenLayers.Easing.Expo.easeOut
{Boolean} Allow splits given intersection of edges only.
{Boolean} Should the BBOX commas be encoded? 
{Boolean} Should the BBOX commas be encoded? 
{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
{OpenLayers.Events}
{OpenLayers.Events} An events object that handles all events on the map
{OpenLayers.Events} An events object that handles all events on the {OpenLayers.Request} object.
{OpenLayers.Events} An events object that handles all events on the tile.
{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.
{Boolean} Extract attributes from GML.
{Boolean} Extract attributes from GML.
{Boolean} Extract feature attributes from GPX.
{Boolean} Extract attributes from KML.
{Boolean} Extract attributes from GML.
{Boolean} Should the WFS layer parse attributes from the retrieved GML? 
{Boolean} Extract routes from GPX.
set to true to extract styles from the TSV files, using information from the image or icon, iconSize and iconOffset fields.
{Boolean} Extract tracks from GPX.
{Boolean} Extract waypoints from GPX.
+ + + +
{Boolean}
{Boolean} Should OpenLayers allow events on the map to fall through to other elements on the page, or should it swallow them? 
{Function} Called after each feature is added
{OpenLayers.Feature} If featureClass is defined, an old-style markers based WFS layer is created instead of a new-style vector layer.
{String} Code for feature coordinate system.
{String} Default description for features.
{String} All xml nodes containing this search criteria will populate an internal array of feature nodes for each layer node found.
{String} Element name for features.
{String} Feature Attributes namespace.
{String} Namespace used for feature attributes.
{String} The feature namespace.
{String} Namespace alias (or prefix) for feature nodes.
{Array(OpenLayers.Feature.Vector)}
{String} Default title for features.
{Array(String) or String} The local (without prefix) feature typeName(s).
{Array(String)} Feature Ids to evaluate this rule against.
{String} Code for filter coordinate system.
{Array(OpenLayers.Filter)} Child filters for this filter.
{Object} Values to finish the animation with
{Boolean} We want the framed popup to work dynamically placed relative to its anchor but also in just one fixed position.
{Boolean} The Framed Cloud popup works in just one fixed position.
{String} Description of the folders.
{String} Name of the folders.
{OpenLayers.Format} The format you want the data to be parsed with.
{String} Mime type of the images returned.
{OpenLayers.Format} The format you want the data to be parsed with.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Hash of options which should be passed to the format when it is created.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Properties2.html b/openlayers/doc/apidocs/index/Properties2.html new file mode 100644 index 0000000..e9d90c9 --- /dev/null +++ b/openlayers/doc/apidocs/index/Properties2.html @@ -0,0 +1,58 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 geometry
 geometryName, OpenLayers.Format.GML
 geometryType, OpenLayers.Layer.Vector
 geometryTypes
 geons, OpenLayers.Format.GeoRSS
 georssns, OpenLayers.Format.GeoRSS
 gmlns, OpenLayers.Format.GML
 granularity, OpenLayers.Control.MousePosition
 gutter, OpenLayers.Layer
H
 h, OpenLayers.Size
 handleRightClicks, OpenLayers.Control.Navigation
 handlerOptions
 highlightOnly, OpenLayers.Control.SelectFeature
 hover
I
 icon, OpenLayers.Layer.GeoRSS
 id, OpenLayers.Layer
 imageSize, OpenLayers.Popup.FramedCloud
 includeXY, OpenLayers.Events
 indent, OpenLayers.Format.JSON
 internalProjection, OpenLayers.Format
 irregular, OpenLayers.Handler.RegularPolygon
 isAlphaImage
 isBaseLayer
 isDefault, OpenLayers.Style
 isFixed
 isVector, OpenLayers.Layer.Vector
K
 keepData, OpenLayers.Format
 keepInMap
 keyMask, OpenLayers.Handler
 kmlns, OpenLayers.Format.KML
L
 lat, OpenLayers.LonLat
 layer, OpenLayers.Control.Split
 layerIdentifier, OpenLayers.Format.WMSGetFeatureInfo
 layerName
 layers
 limit, OpenLayers.Control.NavigationHistory
 location, OpenLayers.Layer.Text
 lon, OpenLayers.LonLat
 lowerBoundary, OpenLayers.Filter.Comparison
 lzd, OpenLayers.Layer.WorldWind
M
 map, OpenLayers.Layer
 mapOptions, OpenLayers.Control.OverviewMap
 markers, OpenLayers.Layer.Markers
 maxDepth, OpenLayers.Format.KML
 maxExtent
 maxFeatures
 maxRatio, OpenLayers.Control.OverviewMap
 maxResolution
 maxScale
 maxScaleDenominator, OpenLayers.Rule
 maxSize
 minExtent
 minRatio, OpenLayers.Control.OverviewMap
 minRectDisplayClass, OpenLayers.Control.OverviewMap
 minRectSize, OpenLayers.Control.OverviewMap
 minResolution
 minScale
 minScaleDenominator, OpenLayers.Rule
 minSize
 mode, OpenLayers.Control.ModifyFeature
 multiple
 multipleKey, OpenLayers.Control.GetFeature
 mutual, OpenLayers.Control.Split
N
 name
 namedLayersAsArray, OpenLayers.Format.SLD
 newline, OpenLayers.Format.JSON
 next, OpenLayers.Control.NavigationHistory
 nextOptions, OpenLayers.Control.NavigationHistory
 noMagic, OpenLayers.Layer.WMS
 numDigits, OpenLayers.Control.MousePosition
 numLoadingTiles, OpenLayers.Layer.Grid
 numZoomLevels
+ +
{OpenLayers.Geometry}
{String} Name of geometry element.
{String} Name of geometry element.
{String} geometryType allows you to limit the types of geometries this layer supports.
{Array(String)} To restrict dragging to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
{Array(String)} To restrict modification to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
{Array(String)} To restrict selecting to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
{String} W3C Geo namespace to use.
{String} GeoRSS namespace to use.
{String} GML Namespace.
{Integer}
{Integer} Determines the width (in pixels) of the gutter around image tiles to ignore.
+ + + +
{Number} height
{Boolean} Whether or not to handle right clicks.
{Object} Used to set non-default properties on the control’s handler
{Object} Additional options for the handlers used by this control.
{Object} Used to set non-default properties on the control’s handler
{Object} Additional options for the handlers used by this control, e.g.
{Boolean} If true do not actually select features (i.e.
{Boolean} Send feature requests on mouse moves.
{Boolean} Select on mouse over and deselect on mouse out.
{Boolean} Send GetFeatureInfo requests when mouse stops moving.
+ + + +
{OpenLayers.Icon}.
{String}
{OpenLayers.Size}
{Boolean} Should the .xy property automatically be created for browser mouse events? 
{String} For “pretty” printing, the indent string will be used once for each indentation level.
{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.
{Boolean} Draw an irregular polygon instead of a regular polygon.
{Boolean} The image has some alpha and thus needs to use the alpha image hack.
{Boolean} The FramedCloud does not use an alpha image (in honor of the good ie6 folk out there)
{Boolean} Whether or not the layer is a base layer.
{Boolean} Default is true for ArcGIS93Rest layer
{Boolean} The layer is a base layer.
{Boolean} KaMap Layer is always a base layer
{Boolean} Treat this layer as a base layer.
{Boolean} Markers layer is never a base layer.
{Boolean} Treat this layer as a base layer.
{Boolean}
{Boolean} The layer is a base layer.
{Boolean} WFS layer is not a base layer by default.
{Boolean} Default is true for WMS layer
WorldWind layer is a base layer by default.
Default is true, as this is designed to be a base tile source.
{Boolean}
{Boolean} EventPaned layers are fixed by default.
{Boolean} Whether the layer remains in one place while dragging the map.
{Boolean} Whether the layer is a vector layer.
+ + + +
{Object} Maintain a reference (data) to the most recently read data.
{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.
{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.
{Integer} Use bitwise operators and one or more of the OpenLayers.Handler constants to construct a keyMask.
{String} KML Namespace to use.
+ + + +
{Float} The y-axis coordinate in map units
{OpenLayers.Layer.Vector} The target layer with features to be split.
{String} All xml nodes containing this search criteria will populate an internal array of layer nodes.
{String} Name of data layer.
{String} name of the layer that this style belongs to, usually according to the NamedLayer attribute of an SLD document.
{Array(OpenLayers.Layer)} Ordered list of layers in the overview map.
{Array} An array of objects with layer properties.
Layers that are attached to this container.
{Array(OpenLayers.Layer)} Ordered list of layers in the map
{Integer} Optional limit on the number of history items to retain.
{String} URL of text file.
{Float} The x-axis coodinate in map units
{Number} or {String} lower boundary for between comparisons.
LevelZeroTileSizeDegrees
+ + + +
{OpenLayers.Map} This variable is set when the layer is added to the map, via the accessor function setMap().
{Object} An object containing any non-default properties to be sent to the overview map’s map constructor.
{Array(OpenLayers.Marker)} internal marker list
{Integer} Maximum depth for recursive loading external KML URLs Defaults to 0: do no external fetching
{OpenLayers.Bounds} The center of these bounds will not stray outside of the viewport extent during panning.
{OpenLayers.Bounds} The maximum extent for the map.
{Integer} Maximum number of features to return from a query, if supported by the protocol.
{Integer} Maximum number of features to return from a WMS query.
{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther in on the overview map.
{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
{Float}
{Float}
{Number} or {String} maximum scale at which to draw the feature.
{OpenLayers.Size} Maximum size allowed for the popup’s contents.
{OpenLayers.Size}
{OpenLayers.Bounds}
{OpenLayers.Bounds}
{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther out on the overview map.
{String} Replacement style class name for the extent rectangle when minRectSize is reached.
{Integer} The minimum width or height (in pixels) of the extent rectangle on the overview map.
{Float}
{Float}
{Float}
{Float}
{Number} or {String} minimum scale at which to draw the feature.
{OpenLayers.Size} Minimum size allowed for the popup’s contents.
{OpenLayers.Size}
{Integer} Bitfields specifying the modification mode.
{Boolean} Allow selection of multiple geometries.
{Boolean} Allow selection of multiple geometries.
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the multiple property to true.
{Boolean} If source and target layers are the same, split source features and target features where they intersect.
+ + + +
{String}
{String} Layer name.
{String} name of this rule
{String}
{Boolean} Generate a namedLayers array.
{String} For “pretty” printing, the newline string will be used at the end of each name/value pair or array item.
{OpenLayers.Control} A button type control whose trigger method restores the next state managed by this control.
{Object} Set this property on the options argument of the constructor to set optional properties on the next control.
{Boolean} If true, the image format will not be automagicaly switched from image/jpeg to image/png or image/gif when using TRANSPARENT=TRUE.
{Integer}
{Integer} How many tiles are still loading?
{Integer}
{Integer} Number of zoom levels for the map.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Properties3.html b/openlayers/doc/apidocs/index/Properties3.html new file mode 100644 index 0000000..5620d8b --- /dev/null +++ b/openlayers/doc/apidocs/index/Properties3.html @@ -0,0 +1,58 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
O
 onComplete, OpenLayers.Control.DragFeature
 onDrag, OpenLayers.Control.DragFeature
 onModification, OpenLayers.Control.ModifyFeature
 onModificationEnd, OpenLayers.Control.ModifyFeature
 onModificationStart, OpenLayers.Control.ModifyFeature
 onSelect, OpenLayers.Control.SelectFeature
 onStart, OpenLayers.Control.DragFeature
 onUnselect, OpenLayers.Control.SelectFeature
 ovmap, OpenLayers.Control.OverviewMap
P
 panMapIfOutOfView
 panMethod, OpenLayers.Map
 persist
 pixelTolerance
 placemarksDesc, OpenLayers.Format.KML
 popupClass, OpenLayers.Feature
 popupSize, OpenLayers.Layer.GeoRSS
 prefix, OpenLayers.Control.MousePosition
 preload, OpenLayers.Strategy.Fixed
 previous, OpenLayers.Control.NavigationHistory
 previousOptions, OpenLayers.Control.NavigationHistory
 projection
 property
 protocol, OpenLayers.Control.GetFeature
R
 radius, OpenLayers.Handler.RegularPolygon
 ratio
 rendererOptions, OpenLayers.Layer.Vector
 reportError, OpenLayers.Layer.Vector
 reproject, OpenLayers.Layer.HTTPRequest
 resolution, OpenLayers.Layer.KaMap
 resolutions
 restrictedExtent, OpenLayers.Map
 rssns, OpenLayers.Format.GeoRSS
S
 scales, OpenLayers.Layer
 selectStyle, OpenLayers.Control.SelectFeature
 separator, OpenLayers.Control.MousePosition
 seperator, OpenLayers.Control.Attribution
 serverResolutions
 serviceVersion, OpenLayers.Layer.TMS
 sides, OpenLayers.Handler.RegularPolygon
 single, OpenLayers.Handler.Click
 singleTile
 size, OpenLayers.Control.OverviewMap
 slideFactor
 slideRatio, OpenLayers.Control.PanZoom
 smoothDragPan, OpenLayers.Layer.EventPane
 snapAngle, OpenLayers.Handler.RegularPolygon
 snapToggle, OpenLayers.Handler.RegularPolygon
 sourceFilter, OpenLayers.Control.Split
 space, OpenLayers.Format.JSON
 sphericalMecator, OpenLayers.Layer.XYZ
 sphericalMercator
 srsName
 stopDouble, OpenLayers.Handler.Click
 stopMove, OpenLayers.Handler.Hover
 stopSingle, OpenLayers.Handler.Click
 style
 suffix, OpenLayers.Control.MousePosition
T
 tableName, OpenLayers.Protocol.SQL
 targetFilter, OpenLayers.Control.Split
 theme, OpenLayers.Map
 threshold, OpenLayers.Strategy.Cluster
 tileOrigin, OpenLayers.Layer.TMS
 tileSize
 toggle
 toggleKey, OpenLayers.Control.GetFeature
 tolerance, OpenLayers.Control.Split
 transitionEffect, OpenLayers.Layer
 type
U
 units
 upperBoundary, OpenLayers.Filter.Comparison
 useAsyncOverlay, OpenLayers.Layer.MapGuide
 useFeedTitle, OpenLayers.Layer.GeoRSS
 useHttpTile, OpenLayers.Layer.MapGuide
 useOverlay, OpenLayers.Layer.MapGuide
V
 value
 version
 virtualStyle, OpenLayers.Control.ModifyFeature
 visibility, OpenLayers.Layer
+ +
{Function} Define this function if you want to know when a feature is done dragging.
{Function} Define this function if you want to know about each move of a feature.
{Function} Deprecated.
{Function} Deprecated.
{Function} Deprecated.
{Function} Optional function to be called when a feature is selected.
{Function} Define this function if you want to know when a drag starts.
{Function} Optional function to be called when a feature is unselected.
{OpenLayers.Map} A reference to the overview map itself.
+ + + +
{Boolean} When drawn, pan map such that the entire popup is visible in the current viewport (if necessary).
{Boolean} Framed Cloud does pan into view by default.
{Function} The Easing function to be used for tweening.
{Boolean} Keep the temporary measurement sketch drawn after the measurement is complete.
{Boolean} Leave the feature rendered until destroyFeature is called.
{Boolean} Leave the feature rendered until clear is called.
{Number} Maximum number of pixels between mouseup and mousedown for an event to be considered a click.
{String} Name of the placemarks.
{OpenLayers.Class} The class which will be used to instantiate a new Popup.
{OpenLayers.Size} This determines the size of GeoRSS popups.
{String}
{Boolean} Load data before layer made visible.
{OpenLayers.Control} A button type control whose trigger method restores the previous state managed by this control.
{Object} Set this property on the options argument of the constructor to set optional properties on the previous control.
{OpenLayers.Projection} or {String} Set in the layer options to override the default projection string this layer - also set maxExtent, maxResolution, and units if appropriate.
{String} Set in the map options to override the default projection string this map - also set maxExtent, maxResolution, and units if appropriate.
{String} name of the context property to compare
{String} Name of the context property to compare.
{OpenLayers.Protocol} Required.
+ + + +
{Float} Optional radius in map units of the regular polygon.
{Float} Used only when in single-tile mode, this specifies the ratio of the size of the single tile to the size of the map.
{Float} the ratio of image/tile size to map size (this is the untiled buffer)
{Float} The ratio of the data bounds to the viewport bounds (in each dimension).
{Object} Options for the renderer.
{Boolean} report friendly error message when loading of renderer fails.
Deprecated.
{Float}
{Array} A list of map resolutions (map units per pixel) in descending order.
{Array(Float)} A list of map resolutions (map units per pixel) in descending order.
{OpenLayers.Bounds} Limit map navigation to this extent where possible.
{String} RSS namespace to use.
+ + + +
{Array} An array of map scales in descending order.
{Object} Hash of styles
{String}
{String} String used to seperate layers.
{Array} A list of all resolutions available on the server.
{Array} A list of all resolutions available on the server.
{String}
{Integer} Number of sides for the regular polygon.
{Boolean} Handle single clicks.
{Boolean} Moves the layer into single-tile mode, meaning that one tile will be loaded.
{Boolean} use tile server or request single tile image.
{singleTile} Always true for untiled.
{singleTile} Always true for untiled.
{OpenLayers.Size} The overvew map size in pixels.
Pixels to slide by.
{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
{Number} The fraction of map width/height by which we’ll pan the map on clicking the arrow buttons.
{Boolean} smoothDragPan determines whether non-public/internal API methods are used for better performance while dragging EventPane layers.
{Float} If set to a non-zero value, the handler will snap the polygon rotation to multiples of the snapAngle.
{String} If set, snapToggle is checked on mouse events and will set the snap mode to the opposite of what it currently is.
{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
{String} For “pretty” printing, the space string will be used after the “:” separating a name/value pair.
Whether the tile extents should be set to the defaults for spherical mercator.
{Boolean} Should the map act as a mercator-projected map? 
{Boolean} Should the map act as a mercator-projected map? 
{Boolean} Should the map act as a mercator-projected map? 
{String} URI for spatial reference system.
{String} URI for spatial reference system.
{Boolean} Stop other listeners from being notified of double-clicks.
{Boolean} Stop other listeners from being notified of clicks.
{Object}
{Object} Default style for the layer
{String}
+ + + +
Name of the database table into which Features should be saved.
{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
{String} Relative path to a CSS file from which to load theme styles.
{Integer} Optional threshold below which original features will be added to the layer instead of clusters.
{OpenLayers.Pixel}
{OpenLayers.Size} Size for tiles.
{OpenLayers.Size}
{OpenLayers.Size} Set in the map options to override the default tile size for this map.
{Boolean} Unselect a selected feature on click.
{Boolean} Unselect a selected feature on click.
{Boolean} Unselect a selected feature on click.
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the toggle property to true.
{Number} Distance between the calculated intersection and a vertex on the source geometry below which the existing vertex will be used for the split.
{String} The transition effect to use when the map is panned or zoomed.
{String} type: type of the comparison.
{String} Type of spatial filter.
{GMapType}
{?}
{VEMapType}
{YahooMapType}
+ + + +
{String} The layer map units.
{?}
{String} The map units.
{Number} or {String} upper boundary for between comparisons.
{Boolean} indicates if the MapGuide site supports the asynchronous GETDYNAMICOVERLAY requests which is available in MapGuide Enterprise 2010 and MapGuide Open Source v2.0.3 or higher.
{Boolean} Set layer.name to the first title element in the feed.
{Boolean} use a tile cache exposed directly via a webserver rather than the via mapguide server.
{Boolean} flag to indicate if the layer should be retrieved using GETMAPIMAGE (default) or using GETDYNAMICOVERLAY requests.
+ + + +
{Number} or {String} comparison value for binary comparisons.
{OpenLayers.Bounds || OpenLayers.Geometry} The bounds or geometry to be used by the filter.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{Object} A symbolizer to be used for virtual vertices.
{Boolean} The layer should be displayed in the map.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/index/Properties4.html b/openlayers/doc/apidocs/index/Properties4.html new file mode 100644 index 0000000..1b78d9b --- /dev/null +++ b/openlayers/doc/apidocs/index/Properties4.html @@ -0,0 +1,46 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
W
 w, OpenLayers.Size
 wfsns, OpenLayers.Format.WFS
 wrapDateLine, OpenLayers.Layer
X
 x
 xy
Y
 y
Z
 zoomBoxKeyMask, OpenLayers.Control.Navigation
 zoomLevels, OpenLayers.Layer.WorldWind
 zoomStopHeight, OpenLayers.Control.PanZoomBar
 zoomStopWidth, OpenLayers.Control.PanZoomBar
 zoomWheelEnabled, OpenLayers.Control.Navigation
 zoomWorldIcon, OpenLayers.Control.PanZoomBar
+ +
{Number} width
{Boolean} #487 for more info.
+ + + +
{float}
{Number} The x coordinate
{Boolean} Order of the GML coordinate: true:(x,y) or false:(y,x) For GeoRSS the default is (y,x), therefore: false
{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
+ + + +
{float}
{Number} The y coordinate
+ + + +
{Integer} OpenLayers.Handler key code of the key, which has to be pressed, while drawing the zoom box with the mouse on the screen.
Number of zoom levels.
{Boolean} Whether the mousewheel should zoom the map
{Boolean}
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/apidocs/javascript/main.js b/openlayers/doc/apidocs/javascript/main.js new file mode 100644 index 0000000..efcdca9 --- /dev/null +++ b/openlayers/doc/apidocs/javascript/main.js @@ -0,0 +1,836 @@ +// This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL + + +// +// Browser Styles +// ____________________________________________________________________________ + +var agt=navigator.userAgent.toLowerCase(); +var browserType; +var browserVer; + +if (agt.indexOf("opera") != -1) + { + browserType = "Opera"; + + if (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1) + { browserVer = "Opera7"; } + else if (agt.indexOf("opera 8") != -1 || agt.indexOf("opera/8") != -1) + { browserVer = "Opera8"; } + else if (agt.indexOf("opera 9") != -1 || agt.indexOf("opera/9") != -1) + { browserVer = "Opera9"; } + } + +else if (agt.indexOf("applewebkit") != -1) + { + browserType = "Safari"; + + if (agt.indexOf("version/3") != -1) + { browserVer = "Safari3"; } + else if (agt.indexOf("safari/4") != -1) + { browserVer = "Safari2"; } + } + +else if (agt.indexOf("khtml") != -1) + { + browserType = "Konqueror"; + } + +else if (agt.indexOf("msie") != -1) + { + browserType = "IE"; + + if (agt.indexOf("msie 6") != -1) + { browserVer = "IE6"; } + else if (agt.indexOf("msie 7") != -1) + { browserVer = "IE7"; } + } + +else if (agt.indexOf("gecko") != -1) + { + browserType = "Firefox"; + + if (agt.indexOf("rv:1.7") != -1) + { browserVer = "Firefox1"; } + else if (agt.indexOf("rv:1.8)") != -1 || agt.indexOf("rv:1.8.0") != -1) + { browserVer = "Firefox15"; } + else if (agt.indexOf("rv:1.8.1") != -1) + { browserVer = "Firefox2"; } + } + + +// +// Support Functions +// ____________________________________________________________________________ + + +function GetXPosition(item) + { + var position = 0; + + if (item.offsetWidth != null) + { + while (item != document.body && item != null) + { + position += item.offsetLeft; + item = item.offsetParent; + }; + }; + + return position; + }; + + +function GetYPosition(item) + { + var position = 0; + + if (item.offsetWidth != null) + { + while (item != document.body && item != null) + { + position += item.offsetTop; + item = item.offsetParent; + }; + }; + + return position; + }; + + +function MoveToPosition(item, x, y) + { + // Opera 5 chokes on the px extension, so it can use the Microsoft one instead. + + if (item.style.left != null) + { + item.style.left = x + "px"; + item.style.top = y + "px"; + } + else if (item.style.pixelLeft != null) + { + item.style.pixelLeft = x; + item.style.pixelTop = y; + }; + }; + + +// +// Menu +// ____________________________________________________________________________ + + +function ToggleMenu(id) + { + if (!window.document.getElementById) + { return; }; + + var display = window.document.getElementById(id).style.display; + + if (display == "none") + { display = "block"; } + else + { display = "none"; } + + window.document.getElementById(id).style.display = display; + } + +function HideAllBut(ids, max) + { + if (document.getElementById) + { + ids.sort( function(a,b) { return a - b; } ); + var number = 1; + + while (number < max) + { + if (ids.length > 0 && number == ids[0]) + { ids.shift(); } + else + { + document.getElementById("MGroupContent" + number).style.display = "none"; + }; + + number++; + }; + }; + } + + +// +// Tooltips +// ____________________________________________________________________________ + + +var tooltipTimer = 0; + +function ShowTip(event, tooltipID, linkID) + { + if (tooltipTimer) + { clearTimeout(tooltipTimer); }; + + var docX = event.clientX + window.pageXOffset; + var docY = event.clientY + window.pageYOffset; + + var showCommand = "ReallyShowTip('" + tooltipID + "', '" + linkID + "', " + docX + ", " + docY + ")"; + + tooltipTimer = setTimeout(showCommand, 1000); + } + +function ReallyShowTip(tooltipID, linkID, docX, docY) + { + tooltipTimer = 0; + + var tooltip; + var link; + + if (document.getElementById) + { + tooltip = document.getElementById(tooltipID); + link = document.getElementById(linkID); + } +/* else if (document.all) + { + tooltip = eval("document.all['" + tooltipID + "']"); + link = eval("document.all['" + linkID + "']"); + } +*/ + if (tooltip) + { + var left = GetXPosition(link); + var top = GetYPosition(link); + top += link.offsetHeight; + + + // The fallback method is to use the mouse X and Y relative to the document. We use a separate if and test if its a number + // in case some browser snuck through the above if statement but didn't support everything. + + if (!isFinite(top) || top == 0) + { + left = docX; + top = docY; + } + + // Some spacing to get it out from under the cursor. + + top += 10; + + // Make sure the tooltip doesnt get smushed by being too close to the edge, or in some browsers, go off the edge of the + // page. We do it here because Konqueror does get offsetWidth right even if it doesnt get the positioning right. + + if (tooltip.offsetWidth != null) + { + var width = tooltip.offsetWidth; + var docWidth = document.body.clientWidth; + + if (left + width > docWidth) + { left = docWidth - width - 1; } + + // If there's a horizontal scroll bar we could go past zero because it's using the page width, not the window width. + if (left < 0) + { left = 0; }; + } + + MoveToPosition(tooltip, left, top); + tooltip.style.visibility = "visible"; + } + } + +function HideTip(tooltipID) + { + if (tooltipTimer) + { + clearTimeout(tooltipTimer); + tooltipTimer = 0; + } + + var tooltip; + + if (document.getElementById) + { tooltip = document.getElementById(tooltipID); } + else if (document.all) + { tooltip = eval("document.all['" + tooltipID + "']"); } + + if (tooltip) + { tooltip.style.visibility = "hidden"; } + } + + +// +// Blockquote fix for IE +// ____________________________________________________________________________ + + +function NDOnLoad() + { + if (browserVer == "IE6") + { + var scrollboxes = document.getElementsByTagName('blockquote'); + + if (scrollboxes.item(0)) + { + NDDoResize(); + window.onresize=NDOnResize; + }; + }; + }; + + +var resizeTimer = 0; + +function NDOnResize() + { + if (resizeTimer != 0) + { clearTimeout(resizeTimer); }; + + resizeTimer = setTimeout(NDDoResize, 250); + }; + + +function NDDoResize() + { + var scrollboxes = document.getElementsByTagName('blockquote'); + + var i; + var item; + + i = 0; + while (item = scrollboxes.item(i)) + { + item.style.width = 100; + i++; + }; + + i = 0; + while (item = scrollboxes.item(i)) + { + item.style.width = item.parentNode.offsetWidth; + i++; + }; + + clearTimeout(resizeTimer); + resizeTimer = 0; + } + + + +/* ________________________________________________________________________________________________________ + + Class: SearchPanel + ________________________________________________________________________________________________________ + + A class handling everything associated with the search panel. + + Parameters: + + name - The name of the global variable that will be storing this instance. Is needed to be able to set timeouts. + mode - The mode the search is going to work in. Pass CommandLineOption()>, so the + value will be something like "HTML" or "FramedHTML". + + ________________________________________________________________________________________________________ +*/ + + +function SearchPanel(name, mode, resultsPath) + { + if (!name || !mode || !resultsPath) + { alert("Incorrect parameters to SearchPanel."); }; + + + // Group: Variables + // ________________________________________________________________________ + + /* + var: name + The name of the global variable that will be storing this instance of the class. + */ + this.name = name; + + /* + var: mode + The mode the search is going to work in, such as "HTML" or "FramedHTML". + */ + this.mode = mode; + + /* + var: resultsPath + The relative path from the current HTML page to the results page directory. + */ + this.resultsPath = resultsPath; + + /* + var: keyTimeout + The timeout used between a keystroke and when a search is performed. + */ + this.keyTimeout = 0; + + /* + var: keyTimeoutLength + The length of in thousandths of a second. + */ + this.keyTimeoutLength = 500; + + /* + var: lastSearchValue + The last search string executed, or an empty string if none. + */ + this.lastSearchValue = ""; + + /* + var: lastResultsPage + The last results page. The value is only relevant if is set. + */ + this.lastResultsPage = ""; + + /* + var: deactivateTimeout + + The timeout used between when a control is deactivated and when the entire panel is deactivated. Is necessary + because a control may be deactivated in favor of another control in the same panel, in which case it should stay + active. + */ + this.deactivateTimout = 0; + + /* + var: deactivateTimeoutLength + The length of in thousandths of a second. + */ + this.deactivateTimeoutLength = 200; + + + + + // Group: DOM Elements + // ________________________________________________________________________ + + + // Function: DOMSearchField + this.DOMSearchField = function() + { return document.getElementById("MSearchField"); }; + + // Function: DOMSearchType + this.DOMSearchType = function() + { return document.getElementById("MSearchType"); }; + + // Function: DOMPopupSearchResults + this.DOMPopupSearchResults = function() + { return document.getElementById("MSearchResults"); }; + + // Function: DOMPopupSearchResultsWindow + this.DOMPopupSearchResultsWindow = function() + { return document.getElementById("MSearchResultsWindow"); }; + + // Function: DOMSearchPanel + this.DOMSearchPanel = function() + { return document.getElementById("MSearchPanel"); }; + + + + + // Group: Event Handlers + // ________________________________________________________________________ + + + /* + Function: OnSearchFieldFocus + Called when focus is added or removed from the search field. + */ + this.OnSearchFieldFocus = function(isActive) + { + this.Activate(isActive); + }; + + + /* + Function: OnSearchFieldChange + Called when the content of the search field is changed. + */ + this.OnSearchFieldChange = function() + { + if (this.keyTimeout) + { + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + }; + + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != this.lastSearchValue) + { + if (searchValue != "") + { + this.keyTimeout = setTimeout(this.name + ".Search()", this.keyTimeoutLength); + } + else + { + if (this.mode == "HTML") + { this.DOMPopupSearchResultsWindow().style.display = "none"; }; + this.lastSearchValue = ""; + }; + }; + }; + + + /* + Function: OnSearchTypeFocus + Called when focus is added or removed from the search type. + */ + this.OnSearchTypeFocus = function(isActive) + { + this.Activate(isActive); + }; + + + /* + Function: OnSearchTypeChange + Called when the search type is changed. + */ + this.OnSearchTypeChange = function() + { + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != "") + { + this.Search(); + }; + }; + + + + // Group: Action Functions + // ________________________________________________________________________ + + + /* + Function: CloseResultsWindow + Closes the results window. + */ + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = "none"; + this.Activate(false, true); + }; + + + /* + Function: Search + Performs a search. + */ + this.Search = function() + { + this.keyTimeout = 0; + + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + var searchTopic = this.DOMSearchType().value; + + var pageExtension = searchValue.substr(0,1); + + if (pageExtension.match(/^[a-z]/i)) + { pageExtension = pageExtension.toUpperCase(); } + else if (pageExtension.match(/^[0-9]/)) + { pageExtension = 'Numbers'; } + else + { pageExtension = "Symbols"; }; + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + // indexSectionsWithContent is defined in searchdata.js + if (indexSectionsWithContent[searchTopic][pageExtension] == true) + { + resultsPage = this.resultsPath + '/' + searchTopic + pageExtension + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else + { + resultsPage = this.resultsPath + '/NoResults.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + }; + + var resultsFrame; + if (this.mode == "HTML") + { resultsFrame = window.frames.MSearchResults; } + else if (this.mode == "FramedHTML") + { resultsFrame = window.top.frames['Content']; }; + + + if (resultsPage != this.lastResultsPage || + + // Bug in IE. If everything becomes hidden in a run, none of them will be able to be reshown in the next for some + // reason. It counts the right number of results, and you can even read the display as "block" after setting it, but it + // just doesn't work in IE 6 or IE 7. So if we're on the right page but the previous search had no results, reload the + // page anyway to get around the bug. + (browserType == "IE" && hasResultsPage && + (!resultsFrame.searchResults || resultsFrame.searchResults.lastMatchCount == 0)) ) + + { + resultsFrame.location.href = resultsPageWithSearch; + } + + // So if the results page is right and there's no IE bug, reperform the search on the existing page. We have to check if there + // are results because NoResults.html doesn't have any JavaScript, and it would be useless to do anything on that page even + // if it did. + else if (hasResultsPage) + { + // We need to check if this exists in case the frame is present but didn't finish loading. + if (resultsFrame.searchResults) + { resultsFrame.searchResults.Search(searchValue); } + + // Otherwise just reload instead of waiting. + else + { resultsFrame.location.href = resultsPageWithSearch; }; + }; + + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (this.mode == "HTML" && domPopupSearchResultsWindow.style.display != "block") + { + var domSearchType = this.DOMSearchType(); + + var left = GetXPosition(domSearchType); + var top = GetYPosition(domSearchType) + domSearchType.offsetHeight; + + MoveToPosition(domPopupSearchResultsWindow, left, top); + domPopupSearchResultsWindow.style.display = 'block'; + }; + + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + }; + + + + // Group: Activation Functions + // Functions that handle whether the entire panel is active or not. + // ________________________________________________________________________ + + + /* + Function: Activate + + Activates or deactivates the search panel, resetting things to their default values if necessary. You can call this on every + control's OnBlur() and it will handle not deactivating the entire panel when focus is just switching between them transparently. + + Parameters: + + isActive - Whether you're activating or deactivating the panel. + ignoreDeactivateDelay - Set if you're positive the action will deactivate the panel and thus want to skip the delay. + */ + this.Activate = function(isActive, ignoreDeactivateDelay) + { + // We want to ignore isActive being false while the results window is open. + if (isActive || (this.mode == "HTML" && this.DOMPopupSearchResultsWindow().style.display == "block")) + { + if (this.inactivateTimeout) + { + clearTimeout(this.inactivateTimeout); + this.inactivateTimeout = 0; + }; + + this.DOMSearchPanel().className = 'MSearchPanelActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == 'Search') + { searchField.value = ""; } + } + else if (!ignoreDeactivateDelay) + { + this.inactivateTimeout = setTimeout(this.name + ".InactivateAfterTimeout()", this.inactivateTimeoutLength); + } + else + { + this.InactivateAfterTimeout(); + }; + }; + + + /* + Function: InactivateAfterTimeout + + Called by , which is set by . Inactivation occurs on a timeout because a control may + receive OnBlur() when focus is really transferring to another control in the search panel. In this case we don't want to + actually deactivate the panel because not only would that cause a visible flicker but it could also reset the search value. + So by doing it on a timeout instead, there's a short period where the second control's OnFocus() can cancel the deactivation. + */ + this.InactivateAfterTimeout = function() + { + this.inactivateTimeout = 0; + + this.DOMSearchPanel().className = 'MSearchPanelInactive'; + this.DOMSearchField().value = "Search"; + + this.lastSearchValue = ""; + this.lastResultsPage = ""; + }; + }; + + + + +/* ________________________________________________________________________________________________________ + + Class: SearchResults + _________________________________________________________________________________________________________ + + The class that handles everything on the search results page. + _________________________________________________________________________________________________________ +*/ + + +function SearchResults(name, mode) + { + /* + var: mode + The mode the search is going to work in, such as "HTML" or "FramedHTML". + */ + this.mode = mode; + + /* + var: lastMatchCount + The number of matches from the last run of . + */ + this.lastMatchCount = 0; + + + /* + Function: Toggle + Toggles the visibility of the passed element ID. + */ + this.Toggle = function(id) + { + if (this.mode == "FramedHTML") + { return; }; + + var parentElement = document.getElementById(id); + + var element = parentElement.firstChild; + + while (element && element != parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'ISubIndex') + { + if (element.style.display == 'block') + { element.style.display = "none"; } + else + { element.style.display = 'block'; } + }; + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { element = element.firstChild; } + else if (element.nextSibling) + { element = element.nextSibling; } + else + { + do + { + element = element.parentNode; + } + while (element && element != parentElement && !element.nextSibling); + + if (element && element != parentElement) + { element = element.nextSibling; }; + }; + }; + }; + + + /* + Function: Search + + Searches for the passed string. If there is no parameter, it takes it from the URL query. + + Always returns true, since other documents may try to call it and that may or may not be possible. + */ + this.Search = function(search) + { + if (!search) + { + search = window.location.search; + search = search.substring(1); // Remove the leading ? + search = unescape(search); + }; + + search = search.replace(/^ +/, ""); + search = search.replace(/ +$/, ""); + search = search.toLowerCase(); + + if (search.match(/[^a-z0-9]/)) // Just a little speedup so it doesn't have to go through the below unnecessarily. + { + search = search.replace(/\_/g, "_und"); + search = search.replace(/\ +/gi, "_spc"); + search = search.replace(/\~/g, "_til"); + search = search.replace(/\!/g, "_exc"); + search = search.replace(/\@/g, "_att"); + search = search.replace(/\#/g, "_num"); + search = search.replace(/\$/g, "_dol"); + search = search.replace(/\%/g, "_pct"); + search = search.replace(/\^/g, "_car"); + search = search.replace(/\&/g, "_amp"); + search = search.replace(/\*/g, "_ast"); + search = search.replace(/\(/g, "_lpa"); + search = search.replace(/\)/g, "_rpa"); + search = search.replace(/\-/g, "_min"); + search = search.replace(/\+/g, "_plu"); + search = search.replace(/\=/g, "_equ"); + search = search.replace(/\{/g, "_lbc"); + search = search.replace(/\}/g, "_rbc"); + search = search.replace(/\[/g, "_lbk"); + search = search.replace(/\]/g, "_rbk"); + search = search.replace(/\:/g, "_col"); + search = search.replace(/\;/g, "_sco"); + search = search.replace(/\"/g, "_quo"); + search = search.replace(/\'/g, "_apo"); + search = search.replace(/\/g, "_ran"); + search = search.replace(/\,/g, "_com"); + search = search.replace(/\./g, "_per"); + search = search.replace(/\?/g, "_que"); + search = search.replace(/\//g, "_sla"); + search = search.replace(/[^a-z0-9\_]i/gi, "_zzz"); + }; + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); + + if (search.length <= rowMatchName.length && rowMatchName.substr(0, search.length) == search) + { + row.style.display = "block"; + matches++; + } + else + { row.style.display = "none"; }; + }; + + i++; + }; + + document.getElementById("Searching").style.display="none"; + + if (matches == 0) + { document.getElementById("NoMatches").style.display="block"; } + else + { document.getElementById("NoMatches").style.display="none"; } + + this.lastMatchCount = matches; + + return true; + }; + }; + diff --git a/openlayers/doc/apidocs/javascript/searchdata.js b/openlayers/doc/apidocs/javascript/searchdata.js new file mode 100644 index 0000000..f509ae2 --- /dev/null +++ b/openlayers/doc/apidocs/javascript/searchdata.js @@ -0,0 +1,212 @@ +var indexSectionsWithContent = { + "General": { + "Symbols": false, + "Numbers": false, + "A": true, + "B": true, + "C": true, + "D": true, + "E": true, + "F": true, + "G": true, + "H": true, + "I": true, + "J": true, + "K": true, + "L": true, + "M": true, + "N": true, + "O": true, + "P": true, + "Q": false, + "R": true, + "S": true, + "T": true, + "U": true, + "V": true, + "W": true, + "X": true, + "Y": true, + "Z": true + }, + "Constructor": { + "Symbols": false, + "Numbers": false, + "A": true, + "B": true, + "C": true, + "D": true, + "E": true, + "F": true, + "G": true, + "H": true, + "I": true, + "J": true, + "K": true, + "L": true, + "M": true, + "N": true, + "O": true, + "P": true, + "Q": false, + "R": true, + "S": true, + "T": true, + "U": true, + "V": true, + "W": true, + "X": true, + "Y": true, + "Z": true + }, + "Functions": { + "Symbols": false, + "Numbers": false, + "A": true, + "B": true, + "C": true, + "D": true, + "E": true, + "F": true, + "G": true, + "H": true, + "I": true, + "J": false, + "K": false, + "L": true, + "M": true, + "N": true, + "O": true, + "P": true, + "Q": false, + "R": true, + "S": true, + "T": true, + "U": true, + "V": true, + "W": true, + "X": false, + "Y": false, + "Z": true + }, + "Files": { + "Symbols": false, + "Numbers": false, + "A": true, + "B": false, + "C": true, + "D": false, + "E": false, + "F": false, + "G": false, + "H": false, + "I": false, + "J": false, + "K": false, + "L": false, + "M": false, + "N": false, + "O": true, + "P": false, + "Q": false, + "R": false, + "S": false, + "T": false, + "U": false, + "V": false, + "W": false, + "X": false, + "Y": false, + "Z": false + }, + "Constants": { + "Symbols": false, + "Numbers": false, + "A": false, + "B": true, + "C": true, + "D": true, + "E": true, + "F": true, + "G": false, + "H": false, + "I": true, + "J": false, + "K": true, + "L": true, + "M": true, + "N": false, + "O": true, + "P": false, + "Q": false, + "R": true, + "S": true, + "T": true, + "U": true, + "V": true, + "W": false, + "X": true, + "Y": true, + "Z": true + }, + "Classes": { + "Symbols": false, + "Numbers": false, + "A": false, + "B": false, + "C": false, + "D": false, + "E": false, + "F": false, + "G": false, + "H": false, + "I": false, + "J": false, + "K": false, + "L": false, + "M": false, + "N": false, + "O": true, + "P": false, + "Q": false, + "R": false, + "S": false, + "T": false, + "U": true, + "V": false, + "W": false, + "X": false, + "Y": false, + "Z": false + }, + "Properties": { + "Symbols": false, + "Numbers": false, + "A": true, + "B": true, + "C": true, + "D": true, + "E": true, + "F": true, + "G": true, + "H": true, + "I": true, + "J": false, + "K": true, + "L": true, + "M": true, + "N": true, + "O": true, + "P": true, + "Q": false, + "R": true, + "S": true, + "T": true, + "U": true, + "V": true, + "W": true, + "X": true, + "Y": true, + "Z": true + } + } \ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ClassesO.html b/openlayers/doc/apidocs/search/ClassesO.html new file mode 100644 index 0000000..c7a96cd --- /dev/null +++ b/openlayers/doc/apidocs/search/ClassesO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ClassesU.html b/openlayers/doc/apidocs/search/ClassesU.html new file mode 100644 index 0000000..be02cb2 --- /dev/null +++ b/openlayers/doc/apidocs/search/ClassesU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsB.html b/openlayers/doc/apidocs/search/ConstantsB.html new file mode 100644 index 0000000..942ae51 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsB.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
BACKGROUND_ID_SUFFIX, OpenLayers.Renderer.Elements
BROWSER_EVENTS, OpenLayers.Events
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsC.html b/openlayers/doc/apidocs/search/ConstantsC.html new file mode 100644 index 0000000..6c6c3a8 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
CORNER_SIZE, OpenLayers.Popup.AnchoredBubble
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsD.html b/openlayers/doc/apidocs/search/ConstantsD.html new file mode 100644 index 0000000..44b3157 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsD.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
dataFrom, OpenLayers.Layer.PointTrack.OpenLayers.Layer.PointTrack
DEFAULT_CONFIG, OpenLayers.Request
DEFAULT_FORMAT, OpenLayers.Layer.KaMapCache
DEFAULT_OPTIONS, OpenLayers.Layer.ArcIMS
DRAG, OpenLayers.Control.ModifyFeature
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsE.html b/openlayers/doc/apidocs/search/ConstantsE.html new file mode 100644 index 0000000..ddf15e8 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsE.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsF.html b/openlayers/doc/apidocs/search/ConstantsF.html new file mode 100644 index 0000000..b1d7b37 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsF.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
FOLDER_PARAMS, OpenLayers.Layer.MapGuide
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsI.html b/openlayers/doc/apidocs/search/ConstantsI.html new file mode 100644 index 0000000..f4fcc60 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsI.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
IMAGE_EXTENSIONS, OpenLayers.Layer.KaMapCache
INTERVAL, OpenLayers.Tween
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsK.html b/openlayers/doc/apidocs/search/ConstantsK.html new file mode 100644 index 0000000..b9bb2dc --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsK.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
KEY_BACKSPACE, OpenLayers.Event
KEY_DELETE, OpenLayers.Event
KEY_DOWN, OpenLayers.Event
KEY_ESC, OpenLayers.Event
KEY_EVENTS, OpenLayers.handler.Keyboard
KEY_LEFT, OpenLayers.Event
KEY_RETURN, OpenLayers.Event
KEY_RIGHT, OpenLayers.Event
KEY_TAB, OpenLayers.Event
KEY_UP, OpenLayers.Event
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsL.html b/openlayers/doc/apidocs/search/ConstantsL.html new file mode 100644 index 0000000..b747860 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsL.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
LABEL_SHIFT, OpenLayers.Renderer.VML.OpenLayers.Renderer.VML
LABEL_VSHIFT, OpenLayers.Renderer.SVG.OpenLayers.Renderer.SVG
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsM.html b/openlayers/doc/apidocs/search/ConstantsM.html new file mode 100644 index 0000000..441d5d6 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsM.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
MAX_PIXEL, OpenLayers.Renderer.SVG
MOD_ALT, OpenLayers.Handler.OpenLayers.Handler
MOD_CTRL, OpenLayers.Handler.OpenLayers.Handler
MOD_NONE, OpenLayers.Handler.OpenLayers.Handler
MOD_SHIFT, OpenLayers.Handler.OpenLayers.Handler
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsO.html b/openlayers/doc/apidocs/search/ConstantsO.html new file mode 100644 index 0000000..9197cc2 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
OVERLAY_PARAMS, OpenLayers.Layer.MapGuide
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsR.html b/openlayers/doc/apidocs/search/ConstantsR.html new file mode 100644 index 0000000..85c16cc --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsR.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
RESHAPE, OpenLayers.Control.ModifyFeature
RESIZE, OpenLayers.Control.ModifyFeature
ROTATE, OpenLayers.Control.ModifyFeature
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsS.html b/openlayers/doc/apidocs/search/ConstantsS.html new file mode 100644 index 0000000..e7f9ccc --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
SINGLE_TILE_PARAMS, OpenLayers.Layer.MapGuide
style, OpenLayers.Feature.Vector.OpenLayers.Feature.Vector
symbol, OpenLayers.Renderer.Elements.OpenLayers.Renderer
SYMBOLIZER_PREFIXES, OpenLayers.Style.OpenLayers.Style
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsT.html b/openlayers/doc/apidocs/search/ConstantsT.html new file mode 100644 index 0000000..a742758 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsT.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
TILE_HEIGHT, OpenLayers.Map
TILE_PARAMS, OpenLayers.Layer.MapGuide
TILE_WIDTH, OpenLayers.Map
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsU.html b/openlayers/doc/apidocs/search/ConstantsU.html new file mode 100644 index 0000000..71f9680 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
URL_HASH_FACTOR, OpenLayers.Layer.HTTPRequest
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsV.html b/openlayers/doc/apidocs/search/ConstantsV.html new file mode 100644 index 0000000..4861c9d --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsV.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
VERSION_NUMBER, OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsX.html b/openlayers/doc/apidocs/search/ConstantsX.html new file mode 100644 index 0000000..88b8265 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsX.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
X, OpenLayers.Control.PanZoom
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsY.html b/openlayers/doc/apidocs/search/ConstantsY.html new file mode 100644 index 0000000..c2e5bd4 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsY.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Y, OpenLayers.Control.PanZoom
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstantsZ.html b/openlayers/doc/apidocs/search/ConstantsZ.html new file mode 100644 index 0000000..4df7215 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstantsZ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Z_INDEX_BASE, OpenLayers.Map
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorA.html b/openlayers/doc/apidocs/search/ConstructorA.html new file mode 100644 index 0000000..c721710 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Anchored, OpenLayers.Popup.Anchored.OpenLayers.Popup
AnchoredBubble, OpenLayers.Popup.AnchoredBubble.OpenLayers.Popup
ArcGIS93Rest, OpenLayers.Layer.ArcGIS93Rest.OpenLayers.Layer
ArcIMS, OpenLayers.Layer.ArcIMS.OpenLayers.Layer
ArcXML, OpenLayers.Format.ArcXML.OpenLayers.Format
ArgParser, OpenLayers.Control.ArgParser.OpenLayers.Control
Attribution, OpenLayers.Control.Attribution.OpenLayers.Control
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorB.html b/openlayers/doc/apidocs/search/ConstructorB.html new file mode 100644 index 0000000..aa8fef1 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorB.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
BBOX, OpenLayers.Strategy.BBOX.OpenLayers.Strategy
Bounds, OpenLayers.Bounds.OpenLayers
Boxes, OpenLayers.Layer.Boxes.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorC.html b/openlayers/doc/apidocs/search/ConstructorC.html new file mode 100644 index 0000000..ff18675 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Canvas, OpenLayers.Renderer.Canvas.OpenLayers.Renderer
Class, OpenLayers
Click, OpenLayers.Handler.Click.OpenLayers.Handler
Cluster, OpenLayers.Strategy.Cluster.OpenLayers.Strategy
Collection, OpenLayers.Geometry.Collection.OpenLayers.Geometry
Comparison, OpenLayers.Filter.Comparison.OpenLayers.Filter
Control, OpenLayers.Control.OpenLayers
Curve, OpenLayers.Geometry.Curve.OpenLayers.Geometry
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorD.html b/openlayers/doc/apidocs/search/ConstructorD.html new file mode 100644 index 0000000..855b7d8 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorD.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Drag, OpenLayers.Handler.Drag.OpenLayers.Handler
DragFeature, OpenLayers.Control.DragFeature.OpenLayers.Control
DrawFeature, OpenLayers.Control.DrawFeature.OpenLayers.Control
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorE.html b/openlayers/doc/apidocs/search/ConstructorE.html new file mode 100644 index 0000000..94d66a7 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorE.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
EditingToolbar, OpenLayers.Control.EditingToolbar.OpenLayers.Control
Elements, OpenLayers.Renderer.Elements.OpenLayers.Renderer
EventPane, OpenLayers.Layer.EventPane.OpenLayers.Layer
Events, OpenLayers.Events.OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorF.html b/openlayers/doc/apidocs/search/ConstructorF.html new file mode 100644 index 0000000..260bc4b --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorF.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
FeatureId, OpenLayers.Filter.FeatureId.OpenLayers.Filter
Features, OpenLayers.Format.ArcXML.Features.OpenLayers.Format.ArcXML
Fixed, OpenLayers.Strategy.Fixed.OpenLayers.Strategy
FixedZoomLevels, OpenLayers.Layer.FixedZoomLevels.OpenLayers.Layer
Format, OpenLayers.Format.OpenLayers
Framed, OpenLayers.Popup.Framed.OpenLayers.Popup
FramedCloud, OpenLayers.Popup.FramedCloud.OpenLayers.Popup
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorG.html b/openlayers/doc/apidocs/search/ConstructorG.html new file mode 100644 index 0000000..3babe7d --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorG.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Gears, OpenLayers.Protocol.SQL.Gears.OpenLayers.Protocol.SQL
GeoJSON, OpenLayers.Format.GeoJSON.OpenLayers.Format
Geometry, OpenLayers.Geometry.OpenLayers
GetFeature, OpenLayers.Control.GetFeature.OpenLayers.Control
Google, OpenLayers.Layer.Google.OpenLayers.Layer
GPX, OpenLayers.Format.GPX.OpenLayers.Format
Grid, OpenLayers.Layer.Grid.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorH.html b/openlayers/doc/apidocs/search/ConstructorH.html new file mode 100644 index 0000000..2cc96a4 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorH.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Handler, OpenLayers.Handler.OpenLayers
Hover, OpenLayers.Handler.Hover.OpenLayers.Handler
HTTP, OpenLayers.Protocol.HTTP.OpenLayers.Protocol
HTTPRequest, OpenLayers.Layer.HTTPRequest.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorI.html b/openlayers/doc/apidocs/search/ConstructorI.html new file mode 100644 index 0000000..5c9248b --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorI.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Icon, OpenLayers.Icon.OpenLayers
Image, OpenLayers.Layer.Image.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorJ.html b/openlayers/doc/apidocs/search/ConstructorJ.html new file mode 100644 index 0000000..c4fb3a5 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorJ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
JSON, OpenLayers.Format.JSON.OpenLayers.Format
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorK.html b/openlayers/doc/apidocs/search/ConstructorK.html new file mode 100644 index 0000000..50ea552 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorK.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
KaMap, OpenLayers.Layer.KaMap.OpenLayers.Layer
KaMapCache, OpenLayers.Layer.KaMapCache.OpenLayers.Layer
Keyboard, OpenLayers.handler.Keyboard.OpenLayers.Handler
KeyboardDefaults, OpenLayers.Control.KeyboardDefaults.OpenLayers.Control
KML, OpenLayers.Format.KML.OpenLayers.Format
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorL.html b/openlayers/doc/apidocs/search/ConstructorL.html new file mode 100644 index 0000000..bb1bb95 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorL.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Layer, OpenLayers.Layer.OpenLayers
LayerSwitcher, OpenLayers.Control.LayerSwitcher.OpenLayers.Control
LinearRing, OpenLayers.Geometry.LinearRing.OpenLayers.Geometry
LineString, OpenLayers.Geometry.LineString.OpenLayers.Geometry
Logical, OpenLayers.Filter.Logical.OpenLayers.Filter
LonLat, OpenLayers.LonLat.OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorM.html b/openlayers/doc/apidocs/search/ConstructorM.html new file mode 100644 index 0000000..cb13502 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorM.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Map, OpenLayers.Map.OpenLayers
MapGuide, OpenLayers.Layer.MapGuide.OpenLayers.Layer
MapServer, OpenLayers.Layer.MapServer.OpenLayers.Layer
Marker, OpenLayers.Marker.OpenLayers
Markers, OpenLayers.Layer.Markers.OpenLayers.Layer
Measure, OpenLayers.Control.Measure.OpenLayers.Control
ModifyFeature, OpenLayers.Control.ModifyFeature.OpenLayers.Control
MouseDefaults, OpenLayers.Control.MouseDefaults.OpenLayers.Control
MousePosition, OpenLayers.Control.MousePosition.OpenLayers.Control
MouseToolbar, OpenLayers.Control.MouseToolbar.OpenLayers.Control
MouseWheel, OpenLayers.Handler.MouseWheel.OpenLayers.Handler
MultiLineString, OpenLayers.Geometry.MultiLineString.OpenLayers.Geometry
MultiMap, OpenLayers.Layer.MultiMap.OpenLayers.Layer
MultiPoint, OpenLayers.Geometry.MultiPoint.OpenLayers.Geometry
MultiPolygon, OpenLayers.Geometry.MultiPolygon.OpenLayers.Geometry
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorN.html b/openlayers/doc/apidocs/search/ConstructorN.html new file mode 100644 index 0000000..0c25595 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorN.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Navigation, OpenLayers.Control.Navigation.OpenLayers.Control
NavigationHistory, OpenLayers.Control.NavigationHistory.OpenLayers.Control
NavToolbar, OpenLayers.Control.NavToolbar.OpenLayers.Control
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorO.html b/openlayers/doc/apidocs/search/ConstructorO.html new file mode 100644 index 0000000..1358955 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
OverviewMap, OpenLayers.Control.OverviewMap.OpenLayers.Control
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorP.html b/openlayers/doc/apidocs/search/ConstructorP.html new file mode 100644 index 0000000..f8c2dbd --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorP.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Paging, OpenLayers.Strategy.Paging.OpenLayers.Strategy
Pan, OpenLayers.Control.Pan.OpenLayers.Control
Panel, OpenLayers.Control.Panel.OpenLayers.Control
PanPanel, OpenLayers.Control.PanPanel.OpenLayers.Control
PanZoom, OpenLayers.Control.PanZoom.OpenLayers.Control
PanZoomBar, OpenLayers.Control.PanZoomBar.OpenLayers.Control
Path, OpenLayers.Handler.Path.OpenLayers.Handler
Pixel, OpenLayers.Pixel.OpenLayers
PointTrack, OpenLayers.Layer.PointTrack.OpenLayers
Popup, OpenLayers.Popup.OpenLayers
Projection, OpenLayers.Projection.OpenLayers
Protocol, OpenLayers.Protocol.OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorR.html b/openlayers/doc/apidocs/search/ConstructorR.html new file mode 100644 index 0000000..4448b77 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorR.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Rectangle, OpenLayers.Geometry.Rectangle.OpenLayers.Geometry
RegularPolygon, OpenLayers.Handler.RegularPolygon.OpenLayers.Handler
Renderer, OpenLayers.Renderer.OpenLayers
Request, OpenLayers.Ajax.Request.OpenLayers.Ajax
RootContainer, OpenLayers.Layer.Vector.RootContainer.OpenLayers.Layer.Vector
Rule, OpenLayers.Rule.OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorS.html b/openlayers/doc/apidocs/search/ConstructorS.html new file mode 100644 index 0000000..f9df021 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Save, OpenLayers.Strategy.Save.OpenLayers.Strategy
Scale, OpenLayers.Control.Scale.OpenLayers.Control
ScaleLine, OpenLayers.Control.ScaleLine.OpenLayers.Control
SelectFeature, OpenLayers.Control.SelectFeature.OpenLayers.Control
Size, OpenLayers.Size.OpenLayers
SLD, OpenLayers.Format.SLD.OpenLayers.Format
Snapping, OpenLayers.Control.Snapping.OpenLayers.Control
Spatial, OpenLayers.Filter.Spatial.OpenLayers.Filter
Split, OpenLayers.Control.Split.OpenLayers.Control
SQL, OpenLayers.Protocol.SQL.OpenLayers.Protocol
Strategy, OpenLayers.Strategy.OpenLayers
Style, OpenLayers.Style.OpenLayers
StyleMap, OpenLayers.StyleMap.OpenLayers
SVG, OpenLayers.Renderer.SVG.OpenLayers.Renderer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorT.html b/openlayers/doc/apidocs/search/ConstructorT.html new file mode 100644 index 0000000..7fc9f3b --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorT.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
TileCache, OpenLayers.Layer.TileCache.OpenLayers.Layer
TMS, OpenLayers.Layer.TMS.OpenLayers.Layer
Tween, OpenLayers.Tween.OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorU.html b/openlayers/doc/apidocs/search/ConstructorU.html new file mode 100644 index 0000000..a798a6e --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorV.html b/openlayers/doc/apidocs/search/ConstructorV.html new file mode 100644 index 0000000..f39ff43 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorV.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
v1_1_1, OpenLayers.Format.WMSCapabilities/v1_1_1.OpenLayers.Format.WMSCapabilities
v2, OpenLayers.Format.GML.v2.OpenLayers.Format.GML
v3, OpenLayers.Format.GML.v3.OpenLayers.Format.GML
VirtualEarth, OpenLayers.Layer.VirtualEarth.OpenLayers.Layer
VML, OpenLayers.Renderer.VML.OpenLayers.Renderer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorW.html b/openlayers/doc/apidocs/search/ConstructorW.html new file mode 100644 index 0000000..04b57ba --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorW.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
WFSCapabilities, OpenLayers.Format.WFSCapabilities.OpenLayers.Format
WFSDescribeFeatureType, OpenLayers.Format
WKT, OpenLayers.Format.WKT.OpenLayers.Format
WMC, OpenLayers.Format.WMC.OpenLayers.Format
WMS, OpenLayers.Layer.WMS.OpenLayers.Layer
WMSCapabilities, OpenLayers.Format.WMSCapabilities.OpenLayers.Format
WMSGetFeatureInfo, OpenLayers.Format.WMSGetFeatureInfo.OpenLayers.Format
WMSGetFeatureInfo>, OpenLayers.Control.WMSGetFeatureInfo.<OpenLayers.Control
WorldWind, OpenLayers.Layer.WorldWind.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorX.html b/openlayers/doc/apidocs/search/ConstructorX.html new file mode 100644 index 0000000..a791218 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorX.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
XML, OpenLayers.Format.XML.OpenLayers.Format
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorY.html b/openlayers/doc/apidocs/search/ConstructorY.html new file mode 100644 index 0000000..ef24dd5 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorY.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Yahoo, OpenLayers.Layer.Yahoo.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/ConstructorZ.html b/openlayers/doc/apidocs/search/ConstructorZ.html new file mode 100644 index 0000000..e0c5cd0 --- /dev/null +++ b/openlayers/doc/apidocs/search/ConstructorZ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
ZoomPanel, OpenLayers.Control.ZoomPanel.OpenLayers.Control
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FilesA.html b/openlayers/doc/apidocs/search/FilesA.html new file mode 100644 index 0000000..b7e0f36 --- /dev/null +++ b/openlayers/doc/apidocs/search/FilesA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FilesC.html b/openlayers/doc/apidocs/search/FilesC.html new file mode 100644 index 0000000..2464f78 --- /dev/null +++ b/openlayers/doc/apidocs/search/FilesC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FilesO.html b/openlayers/doc/apidocs/search/FilesO.html new file mode 100644 index 0000000..70d8d92 --- /dev/null +++ b/openlayers/doc/apidocs/search/FilesO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsA.html b/openlayers/doc/apidocs/search/FunctionsA.html new file mode 100644 index 0000000..09e8a55 --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
abort, OpenLayers.Protocol.HTTP
activateControl, OpenLayers.Control.Panel
addComponent, OpenLayers.Geometry.LinearRing
addComponents, OpenLayers.Geometry.Collection
addControl, OpenLayers.Map
addControls, OpenLayers.Control.Panel
addEventType, OpenLayers.Events
addFeatures, OpenLayers.Layer.Vector
addLayer, OpenLayers.Map
addLayers, OpenLayers.Map
addMarker, OpenLayers.Layer.Markers
addNodes, OpenLayers.Layer.PointTrack
addOptions, OpenLayers.Layer
addPoint, OpenLayers.Geometry.MultiPoint
addPopup, OpenLayers.Map
addRules, OpenLayers.Style
addTile, OpenLayers.Layer.Grid
addTransform, OpenLayers.Projection
assert, OpenLayers.Console
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsB.html b/openlayers/doc/apidocs/search/FunctionsB.html new file mode 100644 index 0000000..2b5acdb --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsB.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
buildGeometryNode, OpenLayers.Format.GML
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsC.html b/openlayers/doc/apidocs/search/FunctionsC.html new file mode 100644 index 0000000..d4f0d43 --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
calculateInRange, OpenLayers.Layer
clearMouseCache, OpenLayers.Events
commitReport, OpenLayers.Layer.WFS
concatChildValues, OpenLayers.Format.XML
containsBounds, OpenLayers.Bounds
containsLonLat, OpenLayers.Bounds
containsPixel, OpenLayers.Bounds
contentType, OpenLayers.Format.XML
count, OpenLayers.Console
createElementNS, OpenLayers.Format.XML
createParams, OpenLayers.Control.Permalink
createRegularPolygon, OpenLayers.Geometry.Polygon
createTextNode, OpenLayers.Format.XML
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsD.html b/openlayers/doc/apidocs/search/FunctionsD.html new file mode 100644 index 0000000..9228e8d --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsD.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
debug, OpenLayers.Console
DELETE, OpenLayers.Request
destroyFeatures, OpenLayers.Layer.Vector
determineQuadrant, OpenLayers.Bounds
dir, OpenLayers.Console
dirxml, OpenLayers.Console
drawFeature, OpenLayers.Layer.Vector
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsE.html b/openlayers/doc/apidocs/search/FunctionsE.html new file mode 100644 index 0000000..74b9db5 --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsE.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
error, OpenLayers.Console
exists, OpenLayers.ElementsIndexer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsF.html b/openlayers/doc/apidocs/search/FunctionsF.html new file mode 100644 index 0000000..0b8fe41 --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsF.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
filter, OpenLayers.Array
forwardMercator, OpenLayers.Layer.SphericalMercator
fromArray, OpenLayers.Bounds
fromSize, OpenLayers.Bounds
fromString, OpenLayers.Bounds
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsG.html b/openlayers/doc/apidocs/search/FunctionsG.html new file mode 100644 index 0000000..33e8aaf --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsG.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
GET, OpenLayers.Request
getAttributeNodeNS, OpenLayers.Format.XML
getAttributeNS, OpenLayers.Format.XML
getBounds, OpenLayers.Geometry
getBy, OpenLayers.Map
getCenter, OpenLayers.Map
getCenterLonLat, OpenLayers.Bounds
getCenterPixel, OpenLayers.Bounds
getChildEl, OpenLayers.Format.XML
getChildValue, OpenLayers.Format.XML
getControl, OpenLayers.Map
getControlsByName, OpenLayers.Control.Panel
getDimensions, OpenLayers.Element
getElementsByTagNameNS, OpenLayers.Format.XML
getFeatureById, OpenLayers.Layer.Vector
getImageSize, OpenLayers.Layer
getLayer, OpenLayers.Map
getLayerIndex, OpenLayers.Map
getLayerPxFromLonLat, OpenLayers.Map
getLayerPxFromViewPortPx, OpenLayers.Map
getLayersBy, OpenLayers.Map
getLayersByClass, OpenLayers.Map
getLayersByName, OpenLayers.Map
getLonLatFromPixel, OpenLayers.Map
getLonLatFromViewPortPx, OpenLayers.Layer
getMapObjectBoundsFromOLBounds, OpenLayers.Layer.Google
getMapObjectSizeFromOLSize, OpenLayers.Layer.Yahoo
getMapObjectZoomFromMapObjectBounds, OpenLayers.Layer.Google
getMapObjectZoomFromOLZoom, OpenLayers.Layer.Yahoo
getMaxExtent, OpenLayers.Map
getMaxResolution, OpenLayers.Map
getNextEl, OpenLayers.Format.XML
getNextElement, OpenLayers.ElementsIndexer
getNumLayers, OpenLayers.Map
getNumZoomLevels, OpenLayers.Map
getOLBoundsFromMapObjectBounds, OpenLayers.Layer.Google
getOLZoomFromMapObjectZoom, OpenLayers.Layer.Yahoo
getPixelFromLonLat, OpenLayers.Map
getProjection, OpenLayers.Map
getProjectionObject, OpenLayers.Map
getSafeContentSize, OpenLayers.Popup
getScale, OpenLayers.Map
getStyle, OpenLayers.Element
getTilesBounds, OpenLayers.Layer.Grid
getTileSize, OpenLayers.Map
getURL, OpenLayers.Layer.Image
getViewPortPxFromLayerPx, OpenLayers.Map
getVisibility, OpenLayers.Layer
getWidth, OpenLayers.Bounds
getZIndex, OpenLayers.ElementsIndexer
getZoom, OpenLayers.Map
group, OpenLayers.Console
groupEnd, OpenLayers.Console
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsH.html b/openlayers/doc/apidocs/search/FunctionsH.html new file mode 100644 index 0000000..5bc265e --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsH.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
hasAttributeNS, OpenLayers.Format.XML
HEAD, OpenLayers.Request
hide, OpenLayers.Element
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsI.html b/openlayers/doc/apidocs/search/FunctionsI.html new file mode 100644 index 0000000..22faa59 --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsI.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
i18n, OpenLayers.Lang.OpenLayers
info, OpenLayers.Console
initialize, OpenLayers.ElementsIndexer
insert, OpenLayers.ElementsIndexer
intersectsBounds, OpenLayers.Bounds
inverseMercator, OpenLayers.Layer.SphericalMercator
iserror, OpenLayers.Format.ArcXML
isNumeric, OpenLayers.String.OpenLayers.String
isSimpleContent, OpenLayers.Format.XML
issue, OpenLayers.Request
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsL.html b/openlayers/doc/apidocs/search/FunctionsL.html new file mode 100644 index 0000000..8ce6aff --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsL.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
log, OpenLayers.Console
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsM.html b/openlayers/doc/apidocs/search/FunctionsM.html new file mode 100644 index 0000000..4e92fa2 --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsM.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsN.html b/openlayers/doc/apidocs/search/FunctionsN.html new file mode 100644 index 0000000..1779a6b --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsN.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
nextTrigger, OpenLayers.Control.NavigationHistory
numericIf, OpenLayers.String
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsO.html b/openlayers/doc/apidocs/search/FunctionsO.html new file mode 100644 index 0000000..65d1fb8 --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
offset, OpenLayers.Pixel
onFeatureInsert, OpenLayers.Layer.Vector
OPTIONS, OpenLayers.Request
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsP.html b/openlayers/doc/apidocs/search/FunctionsP.html new file mode 100644 index 0000000..4c2d43e --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsP.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
pageCount, OpenLayers.Strategy.Paging
pageLength, OpenLayers.Strategy.Paging
pageNext, OpenLayers.Strategy.Paging
pageNum, OpenLayers.Strategy.Paging
pagePrevious, OpenLayers.Strategy.Paging
pan, OpenLayers.Map
panTo, OpenLayers.Map
POST, OpenLayers.Request
preFeatureInsert, OpenLayers.Layer.Vector
profile, OpenLayers.Console
profileEnd, OpenLayers.Console
PUT, OpenLayers.Request
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsR.html b/openlayers/doc/apidocs/search/FunctionsR.html new file mode 100644 index 0000000..972e852 --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsR.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
raiseLayer, OpenLayers.Map
refresh, OpenLayers.Layer.WFS
register, OpenLayers.Events
registerPriority, OpenLayers.Events
removeComponents, OpenLayers.Geometry.Collection
removeControl, OpenLayers.Map
removeFeatures, OpenLayers.Layer.Vector
removeLayer, OpenLayers.Map
removePoint, OpenLayers.Geometry.MultiPoint
removePopup, OpenLayers.Map
render, OpenLayers.Map
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsS.html b/openlayers/doc/apidocs/search/FunctionsS.html new file mode 100644 index 0000000..2bd9356 --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
save, OpenLayers.Strategy.Save
setAttributeNS, OpenLayers.Format.XML
setBaseLayer, OpenLayers.Map
setBorder, OpenLayers.Popup.Framed
setCenter, OpenLayers.Map
setCode, OpenLayers.Lang
setDefaultStyle, OpenLayers.Style
setIsBaseLayer, OpenLayers.Layer
setLayer, OpenLayers.Control.Snapping
setLayerIndex, OpenLayers.Map
setName, OpenLayers.Layer
setSource, OpenLayers.Control.Split
start, OpenLayers.Tween
stop, OpenLayers.Tween
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsT.html b/openlayers/doc/apidocs/search/FunctionsT.html new file mode 100644 index 0000000..546b0e8 --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsT.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
time, OpenLayers.Console
timeEnd, OpenLayers.Console
toArray, OpenLayers.Bounds
toBBOX, OpenLayers.Bounds
toGeometry, OpenLayers.Bounds
toggle, OpenLayers.Element
toShortString, OpenLayers.LonLat
toString, OpenLayers.Bounds
trace, OpenLayers.Console
translate, OpenLayers.Lang
triggerEvent, OpenLayers.Events
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsU.html b/openlayers/doc/apidocs/search/FunctionsU.html new file mode 100644 index 0000000..301191c --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
unregister, OpenLayers.Events
userError, OpenLayers.Console
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsV.html b/openlayers/doc/apidocs/search/FunctionsV.html new file mode 100644 index 0000000..24653a6 --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsV.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
value2regex, OpenLayers.Filter.Comparison
visible, OpenLayers.Element
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsW.html b/openlayers/doc/apidocs/search/FunctionsW.html new file mode 100644 index 0000000..e89b5f4 --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsW.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
warn, OpenLayers.Console
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/FunctionsZ.html b/openlayers/doc/apidocs/search/FunctionsZ.html new file mode 100644 index 0000000..6feb35d --- /dev/null +++ b/openlayers/doc/apidocs/search/FunctionsZ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Z_ORDER_DRAWING_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
Z_ORDER_Y_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
zoomIn, OpenLayers.Map
zoomOut, OpenLayers.Map
zoomTo, OpenLayers.Map
zoomToExtent, OpenLayers.Map
zoomToMaxExtent, OpenLayers.Map
zoomToScale, OpenLayers.Map
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralA.html b/openlayers/doc/apidocs/search/GeneralA.html new file mode 100644 index 0000000..46ed27b --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
abort, OpenLayers.Protocol.HTTP
activateControl, OpenLayers.Control.Panel
addComponent, OpenLayers.Geometry.LinearRing
addComponents, OpenLayers.Geometry.Collection
addControl, OpenLayers.Map
addControls, OpenLayers.Control.Panel
addEventType, OpenLayers.Events
addFeatures, OpenLayers.Layer.Vector
addLayer, OpenLayers.Map
addLayers, OpenLayers.Map
addMarker, OpenLayers.Layer.Markers
addNodes, OpenLayers.Layer.PointTrack
addOptions, OpenLayers.Layer
addPoint, OpenLayers.Geometry.MultiPoint
addPopup, OpenLayers.Map
addRules, OpenLayers.Style
addTile, OpenLayers.Layer.Grid
addTransform, OpenLayers.Projection
allOverlays, OpenLayers.Map
alwaysInRange, OpenLayers.Layer
Anchored, OpenLayers.Popup.Anchored.OpenLayers.Popup
AnchoredBubble, OpenLayers.Popup.AnchoredBubble.OpenLayers.Popup
ArcGIS93Rest, OpenLayers.Layer.ArcGIS93Rest.OpenLayers.Layer
ArcIMS, OpenLayers.Layer.ArcIMS.OpenLayers.Layer
ArcXML, OpenLayers.Format.ArcXML.OpenLayers.Format
areaTags, OpenLayers.Format.OSM
ArgParser, OpenLayers.Control.ArgParser.OpenLayers.Control
argParserClass, OpenLayers.Control.Permalink
ascending, OpenLayers.Control.LayerSwitcher
assert, OpenLayers.Console
async, OpenLayers.Layer.ArcIMS
attributes, OpenLayers.Feature.Vector
attribution, OpenLayers.Layer
Attribution, OpenLayers.Control.Attribution.OpenLayers.Control
auto, OpenLayers.Strategy.Save
autoPan, OpenLayers.Control.OverviewMap
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralB.html b/openlayers/doc/apidocs/search/GeneralB.html new file mode 100644 index 0000000..f2e9e2a --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralB.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
BACKGROUND_ID_SUFFIX, OpenLayers.Renderer.Elements
base, OpenLayers.Control.Permalink
baseLayer, OpenLayers.Map
BBOX, OpenLayers.Strategy.BBOX.OpenLayers.Strategy
begin, OpenLayers.Tween
bounds, OpenLayers.Tile
Bounds, OpenLayers.Bounds.OpenLayers
boxDivClassName, OpenLayers.Handler.Box
Boxes, OpenLayers.Layer.Boxes.OpenLayers.Layer
BROWSER_EVENTS, OpenLayers.Events
buffer, OpenLayers.Layer.Grid
buildGeometryNode, OpenLayers.Format.GML
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralC.html b/openlayers/doc/apidocs/search/GeneralC.html new file mode 100644 index 0000000..40d87e0 --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
calculateInRange, OpenLayers.Layer
Canvas, OpenLayers.Renderer.Canvas.OpenLayers.Renderer
checkTags, OpenLayers.Format.OSM
Class, OpenLayers
clearMouseCache, OpenLayers.Events
click, OpenLayers.Control.GetFeature
Click, OpenLayers.Handler.Click.OpenLayers.Handler
clickTolerance, OpenLayers.Control.GetFeature
closeOnMove, OpenLayers.Popup
Cluster, OpenLayers.Strategy.Cluster.OpenLayers.Strategy
Collection, OpenLayers.Geometry.Collection.OpenLayers.Geometry
collectionName, OpenLayers.Format.GML
commitReport, OpenLayers.Layer.WFS
Comparison, OpenLayers.Filter.Comparison.OpenLayers.Filter
components, OpenLayers.Geometry.Collection
concatChildValues, OpenLayers.Format.XML
Constructor
GlobalOpenLayers.Ajax.BaseOpenLayers.Ajax.RequestOpenLayers.Ajax.ResponseOpenLayers.BoundsOpenLayers.ControlOpenLayers.Control.ArgParserOpenLayers.Control.AttributionOpenLayers.Control.DragFeatureOpenLayers.Control.DrawFeatureOpenLayers.Control.EditingToolbarOpenLayers.Control.GetFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.MeasureOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.NavToolbarOpenLayers.Control.OverviewMapOpenLayers.Control.PanOpenLayers.Control.PanelOpenLayers.Control.PanPanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.ScaleOpenLayers.Control.ScaleLineOpenLayers.Control.SelectFeatureOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.Control.WMSGetFeatureInfoOpenLayers.Control.ZoomPanelOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Feature.WFSOpenLayers.FilterOpenLayers.Filter.ComparisonOpenLayers.Filter.FeatureIdOpenLayers.Filter.LogicalOpenLayers.Filter.SpatialOpenLayers.FormatOpenLayers.Format.ArcXMLOpenLayers.Format.ArcXML.FeaturesOpenLayers.Format.FilterOpenLayers.Format.Filter.v1OpenLayers.Format.Filter.v1_0_0OpenLayers.Format.Filter.v1_1_0OpenLayers.Format.GeoJSONOpenLayers.Format.GeoRSSOpenLayers.Format.GMLOpenLayers.Format.GML.BaseOpenLayers.Format.GML.v2OpenLayers.Format.GML.v3OpenLayers.Format.GPXOpenLayers.Format.JSONOpenLayers.Format.KMLOpenLayers.Format.OSMOpenLayers.Format.SLDOpenLayers.Format.SLD.v1OpenLayers.Format.SLD.v1_0_0OpenLayers.Format.TextOpenLayers.Format.WFSOpenLayers.Format.WFSCapabilitiesOpenLayers.Format.WFSCapabilities.v1OpenLayers.Format.WFSCapabilities/v1_0_0OpenLayers.Format.WFSCapabilities/v1_1_0OpenLayers.Format.WFST.v1OpenLayers.Format.WFST.v1_0_0OpenLayers.Format.WFST.v1_1_0OpenLayers.Format.WKTOpenLayers.Format.WMCOpenLayers.Format.WMC.v1OpenLayers.Format.WMC.v1_0_0OpenLayers.Format.WMC.v1_1_0OpenLayers.Format.WMSCapabilitiesOpenLayers.Format.WMSCapabilities.v1_1OpenLayers.Format.WMSCapabilities/v1_1_0OpenLayers.Format.WMSCapabilities/v1_1_1OpenLayers.Format.WMSDescribeLayerOpenLayers.Format.WMSDescribeLayer.v1_1OpenLayers.Format.WMSGetFeatureInfoOpenLayers.Format.XMLOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.Geometry.CurveOpenLayers.Geometry.LinearRingOpenLayers.Geometry.LineStringOpenLayers.Geometry.MultiLineStringOpenLayers.Geometry.MultiPointOpenLayers.Geometry.MultiPolygonOpenLayers.Geometry.PointOpenLayers.Geometry.PolygonOpenLayers.Geometry.RectangleOpenLayers.HandlerOpenLayers.Handler.BoxOpenLayers.Handler.ClickOpenLayers.Handler.DragOpenLayers.Handler.FeatureOpenLayers.Handler.HoverOpenLayers.handler.KeyboardOpenLayers.Handler.MouseWheelOpenLayers.Handler.PathOpenLayers.Handler.PointOpenLayers.Handler.PolygonOpenLayers.Handler.RegularPolygonOpenLayers.IconOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.BoxesOpenLayers.Layer.EventPaneOpenLayers.Layer.FixedZoomLevelsOpenLayers.Layer.GeoRSSOpenLayers.Layer.GMLOpenLayers.Layer.GoogleOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.KaMapOpenLayers.Layer.KaMapCacheOpenLayers.Layer.MapGuideOpenLayers.Layer.MapServerOpenLayers.Layer.MapServer.UntiledOpenLayers.Layer.MarkersOpenLayers.Layer.MultiMapOpenLayers.Layer.PointTrackOpenLayers.Layer.TextOpenLayers.Layer.TileCacheOpenLayers.Layer.TMSOpenLayers.Layer.VectorOpenLayers.Layer.Vector.RootContainerOpenLayers.Layer.VirtualEarthOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.Layer.WMS.UntiledOpenLayers.Layer.WorldWindOpenLayers.Layer.XYZOpenLayers.Layer.YahooOpenLayers.LonLatOpenLayers.MapOpenLayers.MarkerOpenLayers.Marker.BoxOpenLayers.PixelOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.AnchoredBubbleOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProjectionOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.ResponseOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.Protocol.WFS.v1_0_0OpenLayers.Protocol.WFS.v1_1_0OpenLayers.RendererOpenLayers.Renderer.CanvasOpenLayers.Renderer.ElementsOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RuleOpenLayers.SizeOpenLayers.StrategyOpenLayers.Strategy.BBOXOpenLayers.Strategy.ClusterOpenLayers.Strategy.FixedOpenLayers.Strategy.PagingOpenLayers.Strategy.SaveOpenLayers.StyleOpenLayers.StyleMapOpenLayers.Tween
containsBounds, OpenLayers.Bounds
containsLonLat, OpenLayers.Bounds
containsPixel, OpenLayers.Bounds
contentType, OpenLayers.Format.XML
control, OpenLayers.Handler
Control, OpenLayers.Control.OpenLayers
CORNER_SIZE, OpenLayers.Popup.AnchoredBubble
count, OpenLayers.Console
createElementNS, OpenLayers.Format.XML
createParams, OpenLayers.Control.Permalink
createRegularPolygon, OpenLayers.Geometry.Polygon
createTextNode, OpenLayers.Format.XML
Curve, OpenLayers.Geometry.Curve.OpenLayers.Geometry
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralD.html b/openlayers/doc/apidocs/search/GeneralD.html new file mode 100644 index 0000000..2b7070a --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralD.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
data, OpenLayers.Format
databaseName, OpenLayers.Protocol.SQL
dataFrom, OpenLayers.Layer.PointTrack.OpenLayers.Layer.PointTrack
debug, OpenLayers.Console
DEFAULT_CONFIG, OpenLayers.Request
DEFAULT_FORMAT, OpenLayers.Layer.KaMapCache
DEFAULT_OPTIONS, OpenLayers.Layer.ArcIMS
defaultCode, OpenLayers.Lang
defaultControl, OpenLayers.Control.Panel
defaultStyle, OpenLayers.Format.Text
defaultSymbolizer, OpenLayers.Format.SLD.v1
deferDelete, OpenLayers.Control.Split
DELETE, OpenLayers.Request
deleteCodes, OpenLayers.Control.ModifyFeature
destroyFeatures, OpenLayers.Layer.Vector
determineQuadrant, OpenLayers.Bounds
dir, OpenLayers.Console
direction, OpenLayers.Control.MouseToolbar
dirxml, OpenLayers.Console
displayInLayerSwitcher, OpenLayers.Layer
displayOutsideMaxExtent, OpenLayers.Layer
distanceUnits, OpenLayers.Filter.Spatial
double, OpenLayers.Handler.Click
Drag, OpenLayers.Handler.Drag.OpenLayers.Handler
DRAG, OpenLayers.Control.ModifyFeature
DragFeature, OpenLayers.Control.DragFeature.OpenLayers.Control
drawFeature, OpenLayers.Layer.Vector
DrawFeature, OpenLayers.Control.DrawFeature.OpenLayers.Control
duration, OpenLayers.Tween
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralE.html b/openlayers/doc/apidocs/search/GeneralE.html new file mode 100644 index 0000000..ab750fe --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralE.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
easing, OpenLayers.Tween
edge, OpenLayers.Control.Split
EditingToolbar, OpenLayers.Control.EditingToolbar.OpenLayers.Control
Elements, OpenLayers.Renderer.Elements.OpenLayers.Renderer
error, OpenLayers.Console
EventPane, OpenLayers.Layer.EventPane.OpenLayers.Layer
Events, OpenLayers.Events.OpenLayers
exists, OpenLayers.ElementsIndexer
externalProjection, OpenLayers.Format
extractRoutes, OpenLayers.Format.GPX
extractStyles, OpenLayers.Format.Text
extractTracks, OpenLayers.Format.GPX
extractWaypoints, OpenLayers.Format.GPX
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralF.html b/openlayers/doc/apidocs/search/GeneralF.html new file mode 100644 index 0000000..6b655a3 --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralF.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
featureAdded, OpenLayers.Control.DrawFeature
featureClass, OpenLayers.Layer.WFS
featureCoordSys, OpenLayers.Layer.ArcIMS
featureDescription, OpenLayers.Format.GeoRSS
FeatureId, OpenLayers.Filter.FeatureId.OpenLayers.Filter
featureIdentifier, OpenLayers.Format.WMSGetFeatureInfo
featureName, OpenLayers.Format.GML
featurens, OpenLayers.Format.GeoRSS
featurePrefix, OpenLayers.Format.GML
features, OpenLayers.Layer.Vector
Features, OpenLayers.Format.ArcXML.Features.OpenLayers.Format.ArcXML
featureTitle, OpenLayers.Format.GeoRSS
featureType, OpenLayers.Format.GML.Base
fids, OpenLayers.Filter.FeatureId
filter, OpenLayers.Array
filterCoordSys, OpenLayers.Layer.ArcIMS
filters, OpenLayers.Filter.Logical
finish, OpenLayers.Tween
Fixed, OpenLayers.Strategy.Fixed.OpenLayers.Strategy
FixedZoomLevels, OpenLayers.Layer.FixedZoomLevels.OpenLayers.Layer
FOLDER_PARAMS, OpenLayers.Layer.MapGuide
foldersDesc, OpenLayers.Format.KML
foldersName, OpenLayers.Format.KML
Format, OpenLayers.Format.OpenLayers
forwardMercator, OpenLayers.Layer.SphericalMercator
Framed, OpenLayers.Popup.Framed.OpenLayers.Popup
FramedCloud, OpenLayers.Popup.FramedCloud.OpenLayers.Popup
fromArray, OpenLayers.Bounds
fromSize, OpenLayers.Bounds
fromString, OpenLayers.Bounds
Functions
GlobalOpenLayers.ArrayOpenLayers.BoundsOpenLayers.ConsoleOpenLayers.Control.DragFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.MeasureOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationHistoryOpenLayers.Control.OverviewMapOpenLayers.Control.PanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.ElementOpenLayers.ElementsIndexerOpenLayers.ElementsIndexer.IndexingMethodsOpenLayers.EventsOpenLayers.FilterOpenLayers.Filter.ComparisonOpenLayers.Filter.FeatureIdOpenLayers.Filter.LogicalOpenLayers.Filter.SpatialOpenLayers.FormatOpenLayers.Format.ArcXMLOpenLayers.Format.ArcXML.FeaturesOpenLayers.Format.FilterOpenLayers.Format.GeoJSONOpenLayers.Format.GeoRSSOpenLayers.Format.GMLOpenLayers.Format.GPXOpenLayers.Format.JSONOpenLayers.Format.KMLOpenLayers.Format.OSMOpenLayers.Format.SLDOpenLayers.Format.TextOpenLayers.Format.WFSOpenLayers.Format.WFSCapabilitiesOpenLayers.Format.WFSCapabilities.v1OpenLayers.Format.WMCOpenLayers.Format.WMSCapabilitiesOpenLayers.Format.WMSCapabilities.v1_1OpenLayers.Format.WMSDescribeLayerOpenLayers.Format.WMSDescribeLayer.v1_1OpenLayers.Format.WMSGetFeatureInfoOpenLayers.Format.XMLOpenLayers.FunctionOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.Geometry.CurveOpenLayers.Geometry.LinearRingOpenLayers.Geometry.LineStringOpenLayers.Geometry.MultiPointOpenLayers.Geometry.PointOpenLayers.Geometry.PolygonOpenLayers.Geometry.RectangleOpenLayers.HandlerOpenLayers.Handler.ClickOpenLayers.Handler.HoverOpenLayers.Handler.PointOpenLayers.Handler.RegularPolygonOpenLayers.IconOpenLayers.LangOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.BoxesOpenLayers.Layer.EventPaneOpenLayers.Layer.FixedZoomLevelsOpenLayers.Layer.GMLOpenLayers.Layer.GoogleOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.KaMapOpenLayers.Layer.MarkersOpenLayers.Layer.MultiMapOpenLayers.Layer.PointTrackOpenLayers.Layer.SphericalMercatorOpenLayers.Layer.TextOpenLayers.Layer.TileCacheOpenLayers.Layer.TMSOpenLayers.Layer.VectorOpenLayers.Layer.VirtualEarthOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.Layer.XYZOpenLayers.Layer.YahooOpenLayers.LonLatOpenLayers.MapOpenLayers.MarkerOpenLayers.NumberOpenLayers.PixelOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.AnchoredBubbleOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProjectionOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.RendererOpenLayers.Renderer.CanvasOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RequestOpenLayers.RuleOpenLayers.SizeOpenLayers.StrategyOpenLayers.Strategy.ClusterOpenLayers.Strategy.FixedOpenLayers.Strategy.PagingOpenLayers.Strategy.SaveOpenLayers.StringOpenLayers.StyleOpenLayers.TileOpenLayers.Tile.ImageOpenLayers.Tile.WFSOpenLayers.TweenUtil
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralG.html b/openlayers/doc/apidocs/search/GeneralG.html new file mode 100644 index 0000000..086ddd5 --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralG.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Gears, OpenLayers.Protocol.SQL.Gears.OpenLayers.Protocol.SQL
GeoJSON, OpenLayers.Format.GeoJSON.OpenLayers.Format
Geometry, OpenLayers.Geometry.OpenLayers
geometryName, OpenLayers.Format.GML
geometryType, OpenLayers.Layer.Vector
geons, OpenLayers.Format.GeoRSS
georssns, OpenLayers.Format.GeoRSS
GET, OpenLayers.Request
getAttributeNodeNS, OpenLayers.Format.XML
getAttributeNS, OpenLayers.Format.XML
getBounds, OpenLayers.Geometry
getBy, OpenLayers.Map
getCenter, OpenLayers.Map
getCenterLonLat, OpenLayers.Bounds
getCenterPixel, OpenLayers.Bounds
getChildEl, OpenLayers.Format.XML
getChildValue, OpenLayers.Format.XML
getControl, OpenLayers.Map
getControlsByName, OpenLayers.Control.Panel
getDimensions, OpenLayers.Element
getElementsByTagNameNS, OpenLayers.Format.XML
GetFeature, OpenLayers.Control.GetFeature.OpenLayers.Control
getFeatureById, OpenLayers.Layer.Vector
getImageSize, OpenLayers.Layer
getLayer, OpenLayers.Map
getLayerIndex, OpenLayers.Map
getLayerPxFromLonLat, OpenLayers.Map
getLayerPxFromViewPortPx, OpenLayers.Map
getLayersBy, OpenLayers.Map
getLayersByClass, OpenLayers.Map
getLayersByName, OpenLayers.Map
getLonLatFromPixel, OpenLayers.Map
getLonLatFromViewPortPx, OpenLayers.Layer
getMapObjectBoundsFromOLBounds, OpenLayers.Layer.Google
getMapObjectSizeFromOLSize, OpenLayers.Layer.Yahoo
getMapObjectZoomFromMapObjectBounds, OpenLayers.Layer.Google
getMapObjectZoomFromOLZoom, OpenLayers.Layer.Yahoo
getMaxExtent, OpenLayers.Map
getMaxResolution, OpenLayers.Map
getNextEl, OpenLayers.Format.XML
getNextElement, OpenLayers.ElementsIndexer
getNumLayers, OpenLayers.Map
getNumZoomLevels, OpenLayers.Map
getOLBoundsFromMapObjectBounds, OpenLayers.Layer.Google
getOLZoomFromMapObjectZoom, OpenLayers.Layer.Yahoo
getPixelFromLonLat, OpenLayers.Map
getProjection, OpenLayers.Map
getProjectionObject, OpenLayers.Map
getSafeContentSize, OpenLayers.Popup
getScale, OpenLayers.Map
getStyle, OpenLayers.Element
getTilesBounds, OpenLayers.Layer.Grid
getTileSize, OpenLayers.Map
getURL, OpenLayers.Layer.Image
getViewPortPxFromLayerPx, OpenLayers.Map
getVisibility, OpenLayers.Layer
getWidth, OpenLayers.Bounds
getZIndex, OpenLayers.ElementsIndexer
getZoom, OpenLayers.Map
gmlns, OpenLayers.Format.GML
Google, OpenLayers.Layer.Google.OpenLayers.Layer
GPX, OpenLayers.Format.GPX.OpenLayers.Format
granularity, OpenLayers.Control.MousePosition
Grid, OpenLayers.Layer.Grid.OpenLayers.Layer
group, OpenLayers.Console
groupEnd, OpenLayers.Console
gutter, OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralH.html b/openlayers/doc/apidocs/search/GeneralH.html new file mode 100644 index 0000000..0b9ecf3 --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralH.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
h, OpenLayers.Size
Handler, OpenLayers.Handler.OpenLayers
handleRightClicks, OpenLayers.Control.Navigation
hasAttributeNS, OpenLayers.Format.XML
HEAD, OpenLayers.Request
hide, OpenLayers.Element
highlightOnly, OpenLayers.Control.SelectFeature
Hover, OpenLayers.Handler.Hover.OpenLayers.Handler
HTTP, OpenLayers.Protocol.HTTP.OpenLayers.Protocol
HTTPRequest, OpenLayers.Layer.HTTPRequest.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralI.html b/openlayers/doc/apidocs/search/GeneralI.html new file mode 100644 index 0000000..87e1de1 --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralI.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
i18n, OpenLayers.Lang.OpenLayers
icon, OpenLayers.Layer.GeoRSS
Icon, OpenLayers.Icon.OpenLayers
id, OpenLayers.Layer
Image, OpenLayers.Layer.Image.OpenLayers.Layer
IMAGE_EXTENSIONS, OpenLayers.Layer.KaMapCache
imageSize, OpenLayers.Popup.FramedCloud
includeXY, OpenLayers.Events
indent, OpenLayers.Format.JSON
info, OpenLayers.Console
initialize, OpenLayers.ElementsIndexer
insert, OpenLayers.ElementsIndexer
internalProjection, OpenLayers.Format
intersectsBounds, OpenLayers.Bounds
INTERVAL, OpenLayers.Tween
inverseMercator, OpenLayers.Layer.SphericalMercator
irregular, OpenLayers.Handler.RegularPolygon
isDefault, OpenLayers.Style
iserror, OpenLayers.Format.ArcXML
isNumeric, OpenLayers.String.OpenLayers.String
isSimpleContent, OpenLayers.Format.XML
issue, OpenLayers.Request
isVector, OpenLayers.Layer.Vector
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralJ.html b/openlayers/doc/apidocs/search/GeneralJ.html new file mode 100644 index 0000000..c4fb3a5 --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralJ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
JSON, OpenLayers.Format.JSON.OpenLayers.Format
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralK.html b/openlayers/doc/apidocs/search/GeneralK.html new file mode 100644 index 0000000..2129c3a --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralK.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
KaMap, OpenLayers.Layer.KaMap.OpenLayers.Layer
KaMapCache, OpenLayers.Layer.KaMapCache.OpenLayers.Layer
keepData, OpenLayers.Format
KEY_BACKSPACE, OpenLayers.Event
KEY_DELETE, OpenLayers.Event
KEY_DOWN, OpenLayers.Event
KEY_ESC, OpenLayers.Event
KEY_EVENTS, OpenLayers.handler.Keyboard
KEY_LEFT, OpenLayers.Event
KEY_RETURN, OpenLayers.Event
KEY_RIGHT, OpenLayers.Event
KEY_TAB, OpenLayers.Event
KEY_UP, OpenLayers.Event
Keyboard, OpenLayers.handler.Keyboard.OpenLayers.Handler
KeyboardDefaults, OpenLayers.Control.KeyboardDefaults.OpenLayers.Control
keyMask, OpenLayers.Handler
KML, OpenLayers.Format.KML.OpenLayers.Format
kmlns, OpenLayers.Format.KML
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralL.html b/openlayers/doc/apidocs/search/GeneralL.html new file mode 100644 index 0000000..7ff62ca --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralL.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
LABEL_SHIFT, OpenLayers.Renderer.VML.OpenLayers.Renderer.VML
LABEL_VSHIFT, OpenLayers.Renderer.SVG.OpenLayers.Renderer.SVG
lat, OpenLayers.LonLat
layer, OpenLayers.Control.Split
Layer, OpenLayers.Layer.OpenLayers
layerIdentifier, OpenLayers.Format.WMSGetFeatureInfo
LayerSwitcher, OpenLayers.Control.LayerSwitcher.OpenLayers.Control
limit, OpenLayers.Control.NavigationHistory
LinearRing, OpenLayers.Geometry.LinearRing.OpenLayers.Geometry
LineString, OpenLayers.Geometry.LineString.OpenLayers.Geometry
location, OpenLayers.Layer.Text
log, OpenLayers.Console
Logical, OpenLayers.Filter.Logical.OpenLayers.Filter
lon, OpenLayers.LonLat
LonLat, OpenLayers.LonLat.OpenLayers
lowerBoundary, OpenLayers.Filter.Comparison
lzd, OpenLayers.Layer.WorldWind
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralM.html b/openlayers/doc/apidocs/search/GeneralM.html new file mode 100644 index 0000000..8f7b08f --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralM.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
map, OpenLayers.Layer
Map, OpenLayers.Map.OpenLayers
MapGuide, OpenLayers.Layer.MapGuide.OpenLayers.Layer
mapOptions, OpenLayers.Control.OverviewMap
MapServer, OpenLayers.Layer.MapServer.OpenLayers.Layer
Marker, OpenLayers.Marker.OpenLayers
markers, OpenLayers.Layer.Markers
Markers, OpenLayers.Layer.Markers.OpenLayers.Layer
MAX_PIXEL, OpenLayers.Renderer.SVG
maxDepth, OpenLayers.Format.KML
maxRatio, OpenLayers.Control.OverviewMap
maxScaleDenominator, OpenLayers.Rule
Measure, OpenLayers.Control.Measure.OpenLayers.Control
minRatio, OpenLayers.Control.OverviewMap
minRectDisplayClass, OpenLayers.Control.OverviewMap
minRectSize, OpenLayers.Control.OverviewMap
minScaleDenominator, OpenLayers.Rule
MOD_ALT, OpenLayers.Handler.OpenLayers.Handler
MOD_CTRL, OpenLayers.Handler.OpenLayers.Handler
MOD_NONE, OpenLayers.Handler.OpenLayers.Handler
MOD_SHIFT, OpenLayers.Handler.OpenLayers.Handler
mode, OpenLayers.Control.ModifyFeature
ModifyFeature, OpenLayers.Control.ModifyFeature.OpenLayers.Control
MouseDefaults, OpenLayers.Control.MouseDefaults.OpenLayers.Control
MousePosition, OpenLayers.Control.MousePosition.OpenLayers.Control
MouseToolbar, OpenLayers.Control.MouseToolbar.OpenLayers.Control
MouseWheel, OpenLayers.Handler.MouseWheel.OpenLayers.Handler
MultiLineString, OpenLayers.Geometry.MultiLineString.OpenLayers.Geometry
MultiMap, OpenLayers.Layer.MultiMap.OpenLayers.Layer
multipleKey, OpenLayers.Control.GetFeature
MultiPoint, OpenLayers.Geometry.MultiPoint.OpenLayers.Geometry
MultiPolygon, OpenLayers.Geometry.MultiPolygon.OpenLayers.Geometry
mutual, OpenLayers.Control.Split
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralN.html b/openlayers/doc/apidocs/search/GeneralN.html new file mode 100644 index 0000000..c74043b --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralN.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
namedLayersAsArray, OpenLayers.Format.SLD
Navigation, OpenLayers.Control.Navigation.OpenLayers.Control
NavigationHistory, OpenLayers.Control.NavigationHistory.OpenLayers.Control
NavToolbar, OpenLayers.Control.NavToolbar.OpenLayers.Control
newline, OpenLayers.Format.JSON
next, OpenLayers.Control.NavigationHistory
nextOptions, OpenLayers.Control.NavigationHistory
nextTrigger, OpenLayers.Control.NavigationHistory
noMagic, OpenLayers.Layer.WMS
numDigits, OpenLayers.Control.MousePosition
numericIf, OpenLayers.String
numLoadingTiles, OpenLayers.Layer.Grid
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralO.html b/openlayers/doc/apidocs/search/GeneralO.html new file mode 100644 index 0000000..e0b77d8 --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
offset, OpenLayers.Pixel
onComplete, OpenLayers.Control.DragFeature
onDrag, OpenLayers.Control.DragFeature
onFeatureInsert, OpenLayers.Layer.Vector
onModification, OpenLayers.Control.ModifyFeature
onModificationEnd, OpenLayers.Control.ModifyFeature
onModificationStart, OpenLayers.Control.ModifyFeature
onSelect, OpenLayers.Control.SelectFeature
onStart, OpenLayers.Control.DragFeature
onUnselect, OpenLayers.Control.SelectFeature
OPTIONS, OpenLayers.Request
OVERLAY_PARAMS, OpenLayers.Layer.MapGuide
OverviewMap, OpenLayers.Control.OverviewMap.OpenLayers.Control
ovmap, OpenLayers.Control.OverviewMap
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralP.html b/openlayers/doc/apidocs/search/GeneralP.html new file mode 100644 index 0000000..4e18789 --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralP.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
pageCount, OpenLayers.Strategy.Paging
pageLength, OpenLayers.Strategy.Paging
pageNext, OpenLayers.Strategy.Paging
pageNum, OpenLayers.Strategy.Paging
pagePrevious, OpenLayers.Strategy.Paging
Paging, OpenLayers.Strategy.Paging.OpenLayers.Strategy
pan, OpenLayers.Map
Pan, OpenLayers.Control.Pan.OpenLayers.Control
Panel, OpenLayers.Control.Panel.OpenLayers.Control
panMethod, OpenLayers.Map
PanPanel, OpenLayers.Control.PanPanel.OpenLayers.Control
panTo, OpenLayers.Map
PanZoom, OpenLayers.Control.PanZoom.OpenLayers.Control
PanZoomBar, OpenLayers.Control.PanZoomBar.OpenLayers.Control
Path, OpenLayers.Handler.Path.OpenLayers.Handler
Pixel, OpenLayers.Pixel.OpenLayers
placemarksDesc, OpenLayers.Format.KML
PointTrack, OpenLayers.Layer.PointTrack.OpenLayers
Popup, OpenLayers.Popup.OpenLayers
popupClass, OpenLayers.Feature
popupSize, OpenLayers.Layer.GeoRSS
POST, OpenLayers.Request
preFeatureInsert, OpenLayers.Layer.Vector
prefix, OpenLayers.Control.MousePosition
preload, OpenLayers.Strategy.Fixed
previous, OpenLayers.Control.NavigationHistory
previousOptions, OpenLayers.Control.NavigationHistory
profile, OpenLayers.Console
profileEnd, OpenLayers.Console
Projection, OpenLayers.Projection.OpenLayers
Properties
OpenLayers.ControlOpenLayers.Control.ArgParserOpenLayers.Control.AttributionOpenLayers.Control.DragFeatureOpenLayers.Control.DrawFeatureOpenLayers.Control.GetFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.MeasureOpenLayers.Control.ModifyFeatureOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.OverviewMapOpenLayers.Control.PanOpenLayers.Control.PanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.SelectFeatureOpenLayers.Control.SplitOpenLayers.Control.WMSGetFeatureInfoOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Filter.ComparisonOpenLayers.Filter.FeatureIdOpenLayers.Filter.LogicalOpenLayers.Filter.SpatialOpenLayers.FormatOpenLayers.Format.FilterOpenLayers.Format.GeoRSSOpenLayers.Format.GMLOpenLayers.Format.GML.BaseOpenLayers.Format.GPXOpenLayers.Format.JSONOpenLayers.Format.KMLOpenLayers.Format.OSMOpenLayers.Format.SLDOpenLayers.Format.SLD.v1OpenLayers.Format.TextOpenLayers.Format.WFSOpenLayers.Format.WFSCapabilitiesOpenLayers.Format.WFST.v1OpenLayers.Format.WMCOpenLayers.Format.WMSCapabilitiesOpenLayers.Format.WMSDescribeLayerOpenLayers.Format.WMSGetFeatureInfoOpenLayers.Geometry.CollectionOpenLayers.Geometry.PointOpenLayers.HandlerOpenLayers.Handler.BoxOpenLayers.Handler.ClickOpenLayers.Handler.HoverOpenLayers.Handler.PointOpenLayers.Handler.RegularPolygonOpenLayers.LangOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.EventPaneOpenLayers.Layer.GeoRSSOpenLayers.Layer.GMLOpenLayers.Layer.GoogleOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.KaMapOpenLayers.Layer.MapGuideOpenLayers.Layer.MapServer.UntiledOpenLayers.Layer.MarkersOpenLayers.Layer.MultiMapOpenLayers.Layer.TextOpenLayers.Layer.TileCacheOpenLayers.Layer.TMSOpenLayers.Layer.VectorOpenLayers.Layer.Vector.RootContainerOpenLayers.Layer.VirtualEarthOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.Layer.WMS.UntiledOpenLayers.Layer.WorldWindOpenLayers.Layer.XYZOpenLayers.Layer.YahooOpenLayers.LonLatOpenLayers.MapOpenLayers.PixelOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.Protocol.SQLOpenLayers.RequestOpenLayers.RuleOpenLayers.SizeOpenLayers.Strategy.BBOXOpenLayers.Strategy.ClusterOpenLayers.Strategy.FixedOpenLayers.Strategy.SaveOpenLayers.StyleOpenLayers.TileOpenLayers.Tween
protocol, OpenLayers.Control.GetFeature
Protocol, OpenLayers.Protocol.OpenLayers
PUT, OpenLayers.Request
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralR.html b/openlayers/doc/apidocs/search/GeneralR.html new file mode 100644 index 0000000..ee4a0d2 --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralR.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
radius, OpenLayers.Handler.RegularPolygon
raiseLayer, OpenLayers.Map
Rectangle, OpenLayers.Geometry.Rectangle.OpenLayers.Geometry
refresh, OpenLayers.Layer.WFS
register, OpenLayers.Events
registerPriority, OpenLayers.Events
RegularPolygon, OpenLayers.Handler.RegularPolygon.OpenLayers.Handler
removeComponents, OpenLayers.Geometry.Collection
removeControl, OpenLayers.Map
removeFeatures, OpenLayers.Layer.Vector
removeLayer, OpenLayers.Map
removePoint, OpenLayers.Geometry.MultiPoint
removePopup, OpenLayers.Map
render, OpenLayers.Map
Renderer, OpenLayers.Renderer.OpenLayers
rendererOptions, OpenLayers.Layer.Vector
reportError, OpenLayers.Layer.Vector
reproject, OpenLayers.Layer.HTTPRequest
Request, OpenLayers.Ajax.Request.OpenLayers.Ajax
RESHAPE, OpenLayers.Control.ModifyFeature
RESIZE, OpenLayers.Control.ModifyFeature
resolution, OpenLayers.Layer.KaMap
restrictedExtent, OpenLayers.Map
RootContainer, OpenLayers.Layer.Vector.RootContainer.OpenLayers.Layer.Vector
ROTATE, OpenLayers.Control.ModifyFeature
rssns, OpenLayers.Format.GeoRSS
Rule, OpenLayers.Rule.OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralS.html b/openlayers/doc/apidocs/search/GeneralS.html new file mode 100644 index 0000000..780f2e9 --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
save, OpenLayers.Strategy.Save
Save, OpenLayers.Strategy.Save.OpenLayers.Strategy
Scale, OpenLayers.Control.Scale.OpenLayers.Control
ScaleLine, OpenLayers.Control.ScaleLine.OpenLayers.Control
scales, OpenLayers.Layer
SelectFeature, OpenLayers.Control.SelectFeature.OpenLayers.Control
selectStyle, OpenLayers.Control.SelectFeature
separator, OpenLayers.Control.MousePosition
seperator, OpenLayers.Control.Attribution
serviceVersion, OpenLayers.Layer.TMS
setAttributeNS, OpenLayers.Format.XML
setBaseLayer, OpenLayers.Map
setBorder, OpenLayers.Popup.Framed
setCenter, OpenLayers.Map
setCode, OpenLayers.Lang
setDefaultStyle, OpenLayers.Style
setIsBaseLayer, OpenLayers.Layer
setLayer, OpenLayers.Control.Snapping
setLayerIndex, OpenLayers.Map
setName, OpenLayers.Layer
setSource, OpenLayers.Control.Split
sides, OpenLayers.Handler.RegularPolygon
single, OpenLayers.Handler.Click
SINGLE_TILE_PARAMS, OpenLayers.Layer.MapGuide
size, OpenLayers.Control.OverviewMap
Size, OpenLayers.Size.OpenLayers
SLD, OpenLayers.Format.SLD.OpenLayers.Format
slideRatio, OpenLayers.Control.PanZoom
smoothDragPan, OpenLayers.Layer.EventPane
snapAngle, OpenLayers.Handler.RegularPolygon
Snapping, OpenLayers.Control.Snapping.OpenLayers.Control
snapToggle, OpenLayers.Handler.RegularPolygon
sourceFilter, OpenLayers.Control.Split
space, OpenLayers.Format.JSON
Spatial, OpenLayers.Filter.Spatial.OpenLayers.Filter
sphericalMecator, OpenLayers.Layer.XYZ
Split, OpenLayers.Control.Split.OpenLayers.Control
SQL, OpenLayers.Protocol.SQL.OpenLayers.Protocol
start, OpenLayers.Tween
stop, OpenLayers.Tween
stopDouble, OpenLayers.Handler.Click
stopMove, OpenLayers.Handler.Hover
stopSingle, OpenLayers.Handler.Click
Strategy, OpenLayers.Strategy.OpenLayers
Style, OpenLayers.Style.OpenLayers
StyleMap, OpenLayers.StyleMap.OpenLayers
suffix, OpenLayers.Control.MousePosition
SVG, OpenLayers.Renderer.SVG.OpenLayers.Renderer
symbol, OpenLayers.Renderer.Elements.OpenLayers.Renderer
SYMBOLIZER_PREFIXES, OpenLayers.Style.OpenLayers.Style
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralT.html b/openlayers/doc/apidocs/search/GeneralT.html new file mode 100644 index 0000000..2fa6fbc --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralT.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
tableName, OpenLayers.Protocol.SQL
targetFilter, OpenLayers.Control.Split
theme, OpenLayers.Map
threshold, OpenLayers.Strategy.Cluster
TILE_HEIGHT, OpenLayers.Map
TILE_PARAMS, OpenLayers.Layer.MapGuide
TILE_WIDTH, OpenLayers.Map
TileCache, OpenLayers.Layer.TileCache.OpenLayers.Layer
tileOrigin, OpenLayers.Layer.TMS
time, OpenLayers.Console
timeEnd, OpenLayers.Console
TMS, OpenLayers.Layer.TMS.OpenLayers.Layer
toArray, OpenLayers.Bounds
toBBOX, OpenLayers.Bounds
toGeometry, OpenLayers.Bounds
toggleKey, OpenLayers.Control.GetFeature
tolerance, OpenLayers.Control.Split
toShortString, OpenLayers.LonLat
toString, OpenLayers.Bounds
trace, OpenLayers.Console
transitionEffect, OpenLayers.Layer
translate, OpenLayers.Lang
triggerEvent, OpenLayers.Events
Tween, OpenLayers.Tween.OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralU.html b/openlayers/doc/apidocs/search/GeneralU.html new file mode 100644 index 0000000..177e62f --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
unregister, OpenLayers.Events
upperBoundary, OpenLayers.Filter.Comparison
URL_HASH_FACTOR, OpenLayers.Layer.HTTPRequest
useAsyncOverlay, OpenLayers.Layer.MapGuide
useFeedTitle, OpenLayers.Layer.GeoRSS
useHttpTile, OpenLayers.Layer.MapGuide
useOverlay, OpenLayers.Layer.MapGuide
userError, OpenLayers.Console
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralV.html b/openlayers/doc/apidocs/search/GeneralV.html new file mode 100644 index 0000000..890d477 --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralV.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
v1_1_1, OpenLayers.Format.WMSCapabilities/v1_1_1.OpenLayers.Format.WMSCapabilities
v2, OpenLayers.Format.GML.v2.OpenLayers.Format.GML
v3, OpenLayers.Format.GML.v3.OpenLayers.Format.GML
value2regex, OpenLayers.Filter.Comparison
VERSION_NUMBER, OpenLayers
VirtualEarth, OpenLayers.Layer.VirtualEarth.OpenLayers.Layer
virtualStyle, OpenLayers.Control.ModifyFeature
visibility, OpenLayers.Layer
visible, OpenLayers.Element
VML, OpenLayers.Renderer.VML.OpenLayers.Renderer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralW.html b/openlayers/doc/apidocs/search/GeneralW.html new file mode 100644 index 0000000..f09a194 --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralW.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
w, OpenLayers.Size
warn, OpenLayers.Console
WFSCapabilities, OpenLayers.Format.WFSCapabilities.OpenLayers.Format
WFSDescribeFeatureType, OpenLayers.Format
wfsns, OpenLayers.Format.WFS
WKT, OpenLayers.Format.WKT.OpenLayers.Format
WMC, OpenLayers.Format.WMC.OpenLayers.Format
WMS, OpenLayers.Layer.WMS.OpenLayers.Layer
WMSCapabilities, OpenLayers.Format.WMSCapabilities.OpenLayers.Format
WMSGetFeatureInfo, OpenLayers.Format.WMSGetFeatureInfo.OpenLayers.Format
WMSGetFeatureInfo>, OpenLayers.Control.WMSGetFeatureInfo.<OpenLayers.Control
WorldWind, OpenLayers.Layer.WorldWind.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralX.html b/openlayers/doc/apidocs/search/GeneralX.html new file mode 100644 index 0000000..5e6de35 --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralX.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
X, OpenLayers.Control.PanZoom
XML, OpenLayers.Format.XML.OpenLayers.Format
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralY.html b/openlayers/doc/apidocs/search/GeneralY.html new file mode 100644 index 0000000..1a93d1a --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralY.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Y, OpenLayers.Control.PanZoom
Yahoo, OpenLayers.Layer.Yahoo.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/GeneralZ.html b/openlayers/doc/apidocs/search/GeneralZ.html new file mode 100644 index 0000000..7376dff --- /dev/null +++ b/openlayers/doc/apidocs/search/GeneralZ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Z_INDEX_BASE, OpenLayers.Map
Z_ORDER_DRAWING_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
Z_ORDER_Y_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
zoomBoxKeyMask, OpenLayers.Control.Navigation
zoomIn, OpenLayers.Map
zoomLevels, OpenLayers.Layer.WorldWind
zoomOut, OpenLayers.Map
ZoomPanel, OpenLayers.Control.ZoomPanel.OpenLayers.Control
zoomStopHeight, OpenLayers.Control.PanZoomBar
zoomStopWidth, OpenLayers.Control.PanZoomBar
zoomTo, OpenLayers.Map
zoomToExtent, OpenLayers.Map
zoomToMaxExtent, OpenLayers.Map
zoomToScale, OpenLayers.Map
zoomWheelEnabled, OpenLayers.Control.Navigation
zoomWorldIcon, OpenLayers.Control.PanZoomBar
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/NoResults.html b/openlayers/doc/apidocs/search/NoResults.html new file mode 100644 index 0000000..02ce888 --- /dev/null +++ b/openlayers/doc/apidocs/search/NoResults.html @@ -0,0 +1,15 @@ + + + + + + + + + + + + +
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesA.html b/openlayers/doc/apidocs/search/PropertiesA.html new file mode 100644 index 0000000..10e95a1 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
allOverlays, OpenLayers.Map
alwaysInRange, OpenLayers.Layer
areaTags, OpenLayers.Format.OSM
argParserClass, OpenLayers.Control.Permalink
ascending, OpenLayers.Control.LayerSwitcher
async, OpenLayers.Layer.ArcIMS
attributes, OpenLayers.Feature.Vector
attribution, OpenLayers.Layer
auto, OpenLayers.Strategy.Save
autoPan, OpenLayers.Control.OverviewMap
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesB.html b/openlayers/doc/apidocs/search/PropertiesB.html new file mode 100644 index 0000000..ed51c5e --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesB.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
base, OpenLayers.Control.Permalink
baseLayer, OpenLayers.Map
begin, OpenLayers.Tween
bounds, OpenLayers.Tile
boxDivClassName, OpenLayers.Handler.Box
buffer, OpenLayers.Layer.Grid
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesC.html b/openlayers/doc/apidocs/search/PropertiesC.html new file mode 100644 index 0000000..b9a34aa --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
checkTags, OpenLayers.Format.OSM
click, OpenLayers.Control.GetFeature
clickTolerance, OpenLayers.Control.GetFeature
closeOnMove, OpenLayers.Popup
collectionName, OpenLayers.Format.GML
components, OpenLayers.Geometry.Collection
control, OpenLayers.Handler
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesD.html b/openlayers/doc/apidocs/search/PropertiesD.html new file mode 100644 index 0000000..3169e45 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesD.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
data, OpenLayers.Format
databaseName, OpenLayers.Protocol.SQL
defaultCode, OpenLayers.Lang
defaultControl, OpenLayers.Control.Panel
defaultStyle, OpenLayers.Format.Text
defaultSymbolizer, OpenLayers.Format.SLD.v1
deferDelete, OpenLayers.Control.Split
deleteCodes, OpenLayers.Control.ModifyFeature
direction, OpenLayers.Control.MouseToolbar
displayInLayerSwitcher, OpenLayers.Layer
displayOutsideMaxExtent, OpenLayers.Layer
distanceUnits, OpenLayers.Filter.Spatial
double, OpenLayers.Handler.Click
duration, OpenLayers.Tween
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesE.html b/openlayers/doc/apidocs/search/PropertiesE.html new file mode 100644 index 0000000..92623ff --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesE.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
easing, OpenLayers.Tween
edge, OpenLayers.Control.Split
externalProjection, OpenLayers.Format
extractRoutes, OpenLayers.Format.GPX
extractStyles, OpenLayers.Format.Text
extractTracks, OpenLayers.Format.GPX
extractWaypoints, OpenLayers.Format.GPX
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesF.html b/openlayers/doc/apidocs/search/PropertiesF.html new file mode 100644 index 0000000..20987fa --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesF.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
featureAdded, OpenLayers.Control.DrawFeature
featureClass, OpenLayers.Layer.WFS
featureCoordSys, OpenLayers.Layer.ArcIMS
featureDescription, OpenLayers.Format.GeoRSS
featureIdentifier, OpenLayers.Format.WMSGetFeatureInfo
featureName, OpenLayers.Format.GML
featurens, OpenLayers.Format.GeoRSS
featurePrefix, OpenLayers.Format.GML
features, OpenLayers.Layer.Vector
featureTitle, OpenLayers.Format.GeoRSS
featureType, OpenLayers.Format.GML.Base
fids, OpenLayers.Filter.FeatureId
filterCoordSys, OpenLayers.Layer.ArcIMS
filters, OpenLayers.Filter.Logical
finish, OpenLayers.Tween
foldersDesc, OpenLayers.Format.KML
foldersName, OpenLayers.Format.KML
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesG.html b/openlayers/doc/apidocs/search/PropertiesG.html new file mode 100644 index 0000000..456d197 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesG.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
geometryName, OpenLayers.Format.GML
geometryType, OpenLayers.Layer.Vector
geons, OpenLayers.Format.GeoRSS
georssns, OpenLayers.Format.GeoRSS
gmlns, OpenLayers.Format.GML
granularity, OpenLayers.Control.MousePosition
gutter, OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesH.html b/openlayers/doc/apidocs/search/PropertiesH.html new file mode 100644 index 0000000..dab25b9 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesH.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
h, OpenLayers.Size
handleRightClicks, OpenLayers.Control.Navigation
highlightOnly, OpenLayers.Control.SelectFeature
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesI.html b/openlayers/doc/apidocs/search/PropertiesI.html new file mode 100644 index 0000000..8c4ff3d --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesI.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
icon, OpenLayers.Layer.GeoRSS
id, OpenLayers.Layer
imageSize, OpenLayers.Popup.FramedCloud
includeXY, OpenLayers.Events
indent, OpenLayers.Format.JSON
internalProjection, OpenLayers.Format
irregular, OpenLayers.Handler.RegularPolygon
isDefault, OpenLayers.Style
isVector, OpenLayers.Layer.Vector
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesK.html b/openlayers/doc/apidocs/search/PropertiesK.html new file mode 100644 index 0000000..794c911 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesK.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
keepData, OpenLayers.Format
keyMask, OpenLayers.Handler
kmlns, OpenLayers.Format.KML
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesL.html b/openlayers/doc/apidocs/search/PropertiesL.html new file mode 100644 index 0000000..c980aef --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesL.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
lat, OpenLayers.LonLat
layer, OpenLayers.Control.Split
layerIdentifier, OpenLayers.Format.WMSGetFeatureInfo
limit, OpenLayers.Control.NavigationHistory
location, OpenLayers.Layer.Text
lon, OpenLayers.LonLat
lowerBoundary, OpenLayers.Filter.Comparison
lzd, OpenLayers.Layer.WorldWind
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesM.html b/openlayers/doc/apidocs/search/PropertiesM.html new file mode 100644 index 0000000..9bf9501 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesM.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
map, OpenLayers.Layer
mapOptions, OpenLayers.Control.OverviewMap
markers, OpenLayers.Layer.Markers
maxDepth, OpenLayers.Format.KML
maxRatio, OpenLayers.Control.OverviewMap
maxScaleDenominator, OpenLayers.Rule
minRatio, OpenLayers.Control.OverviewMap
minRectDisplayClass, OpenLayers.Control.OverviewMap
minRectSize, OpenLayers.Control.OverviewMap
minScaleDenominator, OpenLayers.Rule
mode, OpenLayers.Control.ModifyFeature
multipleKey, OpenLayers.Control.GetFeature
mutual, OpenLayers.Control.Split
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesN.html b/openlayers/doc/apidocs/search/PropertiesN.html new file mode 100644 index 0000000..971257e --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesN.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
namedLayersAsArray, OpenLayers.Format.SLD
newline, OpenLayers.Format.JSON
next, OpenLayers.Control.NavigationHistory
nextOptions, OpenLayers.Control.NavigationHistory
noMagic, OpenLayers.Layer.WMS
numDigits, OpenLayers.Control.MousePosition
numLoadingTiles, OpenLayers.Layer.Grid
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesO.html b/openlayers/doc/apidocs/search/PropertiesO.html new file mode 100644 index 0000000..80d2e39 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
onComplete, OpenLayers.Control.DragFeature
onDrag, OpenLayers.Control.DragFeature
onModification, OpenLayers.Control.ModifyFeature
onModificationEnd, OpenLayers.Control.ModifyFeature
onModificationStart, OpenLayers.Control.ModifyFeature
onSelect, OpenLayers.Control.SelectFeature
onStart, OpenLayers.Control.DragFeature
onUnselect, OpenLayers.Control.SelectFeature
ovmap, OpenLayers.Control.OverviewMap
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesP.html b/openlayers/doc/apidocs/search/PropertiesP.html new file mode 100644 index 0000000..193f1af --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesP.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
panMethod, OpenLayers.Map
placemarksDesc, OpenLayers.Format.KML
popupClass, OpenLayers.Feature
popupSize, OpenLayers.Layer.GeoRSS
prefix, OpenLayers.Control.MousePosition
preload, OpenLayers.Strategy.Fixed
previous, OpenLayers.Control.NavigationHistory
previousOptions, OpenLayers.Control.NavigationHistory
protocol, OpenLayers.Control.GetFeature
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesR.html b/openlayers/doc/apidocs/search/PropertiesR.html new file mode 100644 index 0000000..bbda102 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesR.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
radius, OpenLayers.Handler.RegularPolygon
rendererOptions, OpenLayers.Layer.Vector
reportError, OpenLayers.Layer.Vector
reproject, OpenLayers.Layer.HTTPRequest
resolution, OpenLayers.Layer.KaMap
restrictedExtent, OpenLayers.Map
rssns, OpenLayers.Format.GeoRSS
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesS.html b/openlayers/doc/apidocs/search/PropertiesS.html new file mode 100644 index 0000000..a28c4c7 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
scales, OpenLayers.Layer
selectStyle, OpenLayers.Control.SelectFeature
separator, OpenLayers.Control.MousePosition
seperator, OpenLayers.Control.Attribution
serviceVersion, OpenLayers.Layer.TMS
sides, OpenLayers.Handler.RegularPolygon
single, OpenLayers.Handler.Click
size, OpenLayers.Control.OverviewMap
slideRatio, OpenLayers.Control.PanZoom
smoothDragPan, OpenLayers.Layer.EventPane
snapAngle, OpenLayers.Handler.RegularPolygon
snapToggle, OpenLayers.Handler.RegularPolygon
sourceFilter, OpenLayers.Control.Split
space, OpenLayers.Format.JSON
sphericalMecator, OpenLayers.Layer.XYZ
stopDouble, OpenLayers.Handler.Click
stopMove, OpenLayers.Handler.Hover
stopSingle, OpenLayers.Handler.Click
suffix, OpenLayers.Control.MousePosition
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesT.html b/openlayers/doc/apidocs/search/PropertiesT.html new file mode 100644 index 0000000..8fef986 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesT.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
tableName, OpenLayers.Protocol.SQL
targetFilter, OpenLayers.Control.Split
theme, OpenLayers.Map
threshold, OpenLayers.Strategy.Cluster
tileOrigin, OpenLayers.Layer.TMS
toggleKey, OpenLayers.Control.GetFeature
tolerance, OpenLayers.Control.Split
transitionEffect, OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesU.html b/openlayers/doc/apidocs/search/PropertiesU.html new file mode 100644 index 0000000..2b68f5b --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
upperBoundary, OpenLayers.Filter.Comparison
useAsyncOverlay, OpenLayers.Layer.MapGuide
useFeedTitle, OpenLayers.Layer.GeoRSS
useHttpTile, OpenLayers.Layer.MapGuide
useOverlay, OpenLayers.Layer.MapGuide
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesV.html b/openlayers/doc/apidocs/search/PropertiesV.html new file mode 100644 index 0000000..4726210 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesV.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
virtualStyle, OpenLayers.Control.ModifyFeature
visibility, OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesW.html b/openlayers/doc/apidocs/search/PropertiesW.html new file mode 100644 index 0000000..8fc0533 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesW.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
w, OpenLayers.Size
wfsns, OpenLayers.Format.WFS
wrapDateLine, OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesX.html b/openlayers/doc/apidocs/search/PropertiesX.html new file mode 100644 index 0000000..06381f4 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesX.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesY.html b/openlayers/doc/apidocs/search/PropertiesY.html new file mode 100644 index 0000000..cc584e7 --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesY.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/search/PropertiesZ.html b/openlayers/doc/apidocs/search/PropertiesZ.html new file mode 100644 index 0000000..27aaafc --- /dev/null +++ b/openlayers/doc/apidocs/search/PropertiesZ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
zoomBoxKeyMask, OpenLayers.Control.Navigation
zoomLevels, OpenLayers.Layer.WorldWind
zoomStopHeight, OpenLayers.Control.PanZoomBar
zoomStopWidth, OpenLayers.Control.PanZoomBar
zoomWheelEnabled, OpenLayers.Control.Navigation
zoomWorldIcon, OpenLayers.Control.PanZoomBar
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/apidocs/styles/1.css b/openlayers/doc/apidocs/styles/1.css new file mode 100644 index 0000000..d3b7409 --- /dev/null +++ b/openlayers/doc/apidocs/styles/1.css @@ -0,0 +1,763 @@ +/* + IMPORTANT: If you're editing this file in the output directory of one of + your projects, your changes will be overwritten the next time you run + Natural Docs. Instead, copy this file to your project directory, make your + changes, and you can use it with -s. Even better would be to make a CSS + file in your project directory with only your changes, which you can then + use with -s [original style] [your changes]. + + On the other hand, if you're editing this file in the Natural Docs styles + directory, the changes will automatically be applied to all your projects + that use this style the next time Natural Docs is run on them. + + This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure + Natural Docs is licensed under the GPL +*/ + +body { + font: 8pt Verdana, Arial, sans-serif; + color: #000000; + margin: 0; padding: 0; + } + +.ContentPage, +.IndexPage, +.FramedMenuPage { + background-color: #E8E8E8; + } +.FramedContentPage, +.FramedIndexPage, +.FramedSearchResultsPage, +.PopupSearchResultsPage { + background-color: #FFFFFF; + } + + +a:link, +a:visited { color: #900000; text-decoration: none } +a:hover { color: #900000; text-decoration: underline } +a:active { color: #FF0000; text-decoration: underline } + +td { + vertical-align: top } + +img { border: 0; } + + +/* + Comment out this line to use web-style paragraphs (blank line between + paragraphs, no indent) instead of print-style paragraphs (no blank line, + indented.) +*/ +p { + text-indent: 5ex; margin: 0 } + + +/* Opera doesn't break with just wbr, but will if you add this. */ +.Opera wbr:after { + content: "\00200B"; + } + +/* Blockquotes are used as containers for things that may need to scroll. */ +blockquote { + padding: 0; + margin: 0; + overflow: auto; + } + + +.Firefox1 blockquote { + padding-bottom: .5em; + } + +/* Turn off scrolling when printing. */ +@media print { + blockquote { + overflow: visible; + } + .IE blockquote { + width: auto; + } + } + + + +#Menu { + font-size: 8pt; + padding: 10px 0 0 0; + } +.ContentPage #Menu, +.IndexPage #Menu { + position: absolute; + top: 0; + left: 0; + width: 31ex; + overflow: hidden; + } +.ContentPage .Firefox #Menu, +.IndexPage .Firefox #Menu { + width: 27ex; + } + + + .MTitle { + font-size: 16pt; font-weight: bold; font-variant: small-caps; + text-align: center; + padding: 5px 10px 15px 10px; + border-bottom: 1px dotted #000000; + margin-bottom: 15px } + + .MSubTitle { + font-size: 9pt; font-weight: normal; font-variant: normal; + margin-top: 1ex; margin-bottom: 5px } + + + .MEntry a:link, + .MEntry a:hover, + .MEntry a:visited { color: #606060; margin-right: 0 } + .MEntry a:active { color: #A00000; margin-right: 0 } + + + .MGroup { + font-variant: small-caps; font-weight: bold; + margin: 1em 0 1em 10px; + } + + .MGroupContent { + font-variant: normal; font-weight: normal } + + .MGroup a:link, + .MGroup a:hover, + .MGroup a:visited { color: #545454; margin-right: 10px } + .MGroup a:active { color: #A00000; margin-right: 10px } + + + .MFile, + .MText, + .MLink, + .MIndex { + padding: 1px 17px 2px 10px; + margin: .25em 0 .25em 0; + } + + .MText { + font-size: 8pt; font-style: italic } + + .MLink { + font-style: italic } + + #MSelected { + color: #000000; background-color: #FFFFFF; + /* Replace padding with border. */ + padding: 0 10px 0 10px; + border-width: 1px 2px 2px 0; border-style: solid; border-color: #000000; + margin-right: 5px; + } + + /* Close off the left side when its in a group. */ + .MGroup #MSelected { + padding-left: 9px; border-left-width: 1px } + + /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ + .Firefox #MSelected { + -moz-border-radius-topright: 10px; + -moz-border-radius-bottomright: 10px } + .Firefox .MGroup #MSelected { + -moz-border-radius-topleft: 10px; + -moz-border-radius-bottomleft: 10px } + + + #MSearchPanel { + padding: 0px 6px; + margin: .25em 0; + } + + + #MSearchField { + font: italic 8pt Verdana, sans-serif; + color: #606060; + background-color: #E8E8E8; + border: none; + padding: 2px 4px; + width: 100%; + } + /* Only Opera gets it right. */ + .Firefox #MSearchField, + .IE #MSearchField, + .Safari #MSearchField { + width: 94%; + } + .Opera9 #MSearchField, + .Konqueror #MSearchField { + width: 97%; + } + .FramedMenuPage .Firefox #MSearchField, + .FramedMenuPage .Safari #MSearchField, + .FramedMenuPage .Konqueror #MSearchField { + width: 98%; + } + + /* Firefox doesn't do this right in frames without #MSearchPanel added on. + It's presence doesn't hurt anything other browsers. */ + #MSearchPanel.MSearchPanelInactive:hover #MSearchField { + background-color: #FFFFFF; + border: 1px solid #C0C0C0; + padding: 1px 3px; + } + .MSearchPanelActive #MSearchField { + background-color: #FFFFFF; + border: 1px solid #C0C0C0; + font-style: normal; + padding: 1px 3px; + } + + #MSearchType { + visibility: hidden; + font: 8pt Verdana, sans-serif; + width: 98%; + padding: 0; + border: 1px solid #C0C0C0; + } + .MSearchPanelActive #MSearchType, + /* As mentioned above, Firefox doesn't do this right in frames without #MSearchPanel added on. */ + #MSearchPanel.MSearchPanelInactive:hover #MSearchType, + #MSearchType:focus { + visibility: visible; + color: #606060; + } + #MSearchType option#MSearchEverything { + font-weight: bold; + } + + .Opera8 .MSearchPanelInactive:hover, + .Opera8 .MSearchPanelActive { + margin-left: -1px; + } + + + iframe#MSearchResults { + width: 60ex; + height: 15em; + } + #MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000000; + background-color: #E8E8E8; + } + #MSearchResultsWindowClose { + font-weight: bold; + font-size: 8pt; + display: block; + padding: 2px 5px; + } + #MSearchResultsWindowClose:link, + #MSearchResultsWindowClose:visited { + color: #000000; + text-decoration: none; + } + #MSearchResultsWindowClose:active, + #MSearchResultsWindowClose:hover { + color: #800000; + text-decoration: none; + background-color: #F4F4F4; + } + + + + +#Content { + padding-bottom: 15px; + } + +.ContentPage #Content { + border-width: 0 0 1px 1px; + border-style: solid; + border-color: #000000; + background-color: #FFFFFF; + font-size: 8pt; /* To make 31ex match the menu's 31ex. */ + margin-left: 31ex; + } +.ContentPage .Firefox #Content { + margin-left: 27ex; + } + + + + .CTopic { + font-size: 8pt; + margin-bottom: 3em; + } + + + .CTitle { + font-size: 11pt; font-weight: bold; + border-width: 0 0 1px 0; border-style: solid; border-color: #A0A0A0; + margin: 0 15px .5em 15px } + + .CGroup .CTitle { + font-size: 16pt; font-variant: small-caps; + padding-left: 15px; padding-right: 15px; + border-width: 0 0 2px 0; border-color: #000000; + margin-left: 0; margin-right: 0 } + + .CClass .CTitle, + .CInterface .CTitle, + .CDatabase .CTitle, + .CDatabaseTable .CTitle, + .CSection .CTitle { + font-size: 18pt; + color: #FFFFFF; background-color: #A0A0A0; + padding: 10px 15px 10px 15px; + border-width: 2px 0; border-color: #000000; + margin-left: 0; margin-right: 0 } + + #MainTopic .CTitle { + font-size: 20pt; + color: #FFFFFF; background-color: #7070C0; + padding: 10px 15px 10px 15px; + border-width: 0 0 3px 0; border-color: #000000; + margin-left: 0; margin-right: 0 } + + .CBody { + margin-left: 15px; margin-right: 15px } + + + .CToolTip { + position: absolute; visibility: hidden; + left: 0; top: 0; + background-color: #FFFFE0; + padding: 5px; + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #000000; + font-size: 8pt; + } + + .Opera .CToolTip { + max-width: 98%; + } + + /* Scrollbars would be useless. */ + .CToolTip blockquote { + overflow: hidden; + } + .IE6 .CToolTip blockquote { + overflow: visible; + } + + .CHeading { + font-weight: bold; font-size: 9pt; + margin: 1.5em 0 .5em 0; + } + + .CBody pre { + font: 8pt "Courier New", Courier, monospace; + margin: 1em 0; + } + + .CBody ul { + /* I don't know why CBody's margin doesn't apply, but it's consistent across browsers so whatever. + Reapply it here as padding. */ + padding-left: 15px; padding-right: 15px; + margin: .5em 5ex .5em 5ex; + } + + .CDescriptionList { + margin: .5em 5ex 0 5ex } + + .CDLEntry { + font: 8pt "Courier New", Courier, monospace; color: #808080; + padding-bottom: .25em; + white-space: nowrap } + + .CDLDescription { + font-size: 8pt; /* For browsers that don't inherit correctly, like Opera 5. */ + padding-bottom: .5em; padding-left: 5ex } + + + .CTopic img { + text-align: center; + display: block; + margin: 1em auto; + } + .CImageCaption { + font-variant: small-caps; + font-size: 8pt; + color: #808080; + text-align: center; + position: relative; + top: 1em; + } + + .CImageLink { + color: #808080; + font-style: italic; + } + a.CImageLink:link, + a.CImageLink:visited, + a.CImageLink:hover { color: #808080 } + + + + + +.Prototype { + font: 8pt "Courier New", Courier, monospace; + padding: 5px 3ex; + border-width: 1px; border-style: solid; + margin: 0 5ex 1.5em 5ex; + } + + .Prototype td { + font-size: 8pt; + } + + .PDefaultValue, + .PDefaultValuePrefix, + .PTypePrefix { + color: #8F8F8F; + } + .PTypePrefix { + text-align: right; + } + .PAfterParameters { + vertical-align: bottom; + } + + .IE .Prototype table { + padding: 0; + } + + .CFunction .Prototype { + background-color: #F4F4F4; border-color: #D0D0D0 } + .CProperty .Prototype { + background-color: #F4F4FF; border-color: #C0C0E8 } + .CVariable .Prototype { + background-color: #FFFFF0; border-color: #E0E0A0 } + + .CClass .Prototype { + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0; + background-color: #F4F4F4; + } + .CInterface .Prototype { + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0D0; + background-color: #F4F4FF; + } + + .CDatabaseIndex .Prototype, + .CConstant .Prototype { + background-color: #D0D0D0; border-color: #000000 } + .CType .Prototype, + .CEnumeration .Prototype { + background-color: #FAF0F0; border-color: #E0B0B0; + } + .CDatabaseTrigger .Prototype, + .CEvent .Prototype, + .CDelegate .Prototype { + background-color: #F0FCF0; border-color: #B8E4B8 } + + .CToolTip .Prototype { + margin: 0 0 .5em 0; + white-space: nowrap; + } + + + + + +.Summary { + margin: 1.5em 5ex 0 5ex } + + .STitle { + font-size: 11pt; font-weight: bold; + margin-bottom: .5em } + + + .SBorder { + background-color: #FFFFF0; + padding: 15px; + border: 1px solid #C0C060 } + + /* In a frame IE 6 will make them too long unless you set the width to 100%. Without frames it will be correct without a width + or slightly too long (but not enough to scroll) with a width. This arbitrary weirdness simply astounds me. IE 7 has the same + problem with frames, haven't tested it without. */ + .FramedContentPage .IE .SBorder { + width: 100% } + + /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ + .Firefox .SBorder { + -moz-border-radius: 20px } + + + .STable { + font-size: 8pt; width: 100% } + + .SEntry { + width: 30% } + .SDescription { + width: 70% } + + + .SMarked { + background-color: #F8F8D8 } + + .SDescription { padding-left: 2ex } + .SIndent1 .SEntry { padding-left: 1.5ex } .SIndent1 .SDescription { padding-left: 3.5ex } + .SIndent2 .SEntry { padding-left: 3.0ex } .SIndent2 .SDescription { padding-left: 5.0ex } + .SIndent3 .SEntry { padding-left: 4.5ex } .SIndent3 .SDescription { padding-left: 6.5ex } + .SIndent4 .SEntry { padding-left: 6.0ex } .SIndent4 .SDescription { padding-left: 8.0ex } + .SIndent5 .SEntry { padding-left: 7.5ex } .SIndent5 .SDescription { padding-left: 9.5ex } + + .SDescription a { color: #800000} + .SDescription a:active { color: #A00000 } + + .SGroup td { + padding-top: .5em; padding-bottom: .25em } + + .SGroup .SEntry { + font-weight: bold; font-variant: small-caps } + + .SGroup .SEntry a { color: #800000 } + .SGroup .SEntry a:active { color: #F00000 } + + + .SMain td, + .SClass td, + .SDatabase td, + .SDatabaseTable td, + .SSection td { + font-size: 10pt; + padding-bottom: .25em } + + .SClass td, + .SDatabase td, + .SDatabaseTable td, + .SSection td { + padding-top: 1em } + + .SMain .SEntry, + .SClass .SEntry, + .SDatabase .SEntry, + .SDatabaseTable .SEntry, + .SSection .SEntry { + font-weight: bold; + } + + .SMain .SEntry a, + .SClass .SEntry a, + .SDatabase .SEntry a, + .SDatabaseTable .SEntry a, + .SSection .SEntry a { color: #000000 } + + .SMain .SEntry a:active, + .SClass .SEntry a:active, + .SDatabase .SEntry a:active, + .SDatabaseTable .SEntry a:active, + .SSection .SEntry a:active { color: #A00000 } + + + + + +.ClassHierarchy { + margin: 0 15px 1em 15px } + + .CHEntry { + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0; + margin-bottom: 3px; + padding: 2px 2ex; + font-size: 8pt; + background-color: #F4F4F4; color: #606060; + } + + .Firefox .CHEntry { + -moz-border-radius: 4px; + } + + .CHCurrent .CHEntry { + font-weight: bold; + border-color: #000000; + color: #000000; + } + + .CHChildNote .CHEntry { + font-style: italic; + font-size: 8pt; + } + + .CHIndent { + margin-left: 3ex; + } + + .CHEntry a:link, + .CHEntry a:visited, + .CHEntry a:hover { + color: #606060; + } + .CHEntry a:active { + color: #800000; + } + + + + + +#Index { + background-color: #FFFFFF; + } + +/* As opposed to .PopupSearchResultsPage #Index */ +.IndexPage #Index, +.FramedIndexPage #Index, +.FramedSearchResultsPage #Index { + padding: 15px; + } + +.IndexPage #Index { + border-width: 0 0 1px 1px; + border-style: solid; + border-color: #000000; + font-size: 8pt; /* To make 27ex match the menu's 27ex. */ + margin-left: 27ex; + } + + + .IPageTitle { + font-size: 20pt; font-weight: bold; + color: #FFFFFF; background-color: #7070C0; + padding: 10px 15px 10px 15px; + border-width: 0 0 3px 0; border-color: #000000; border-style: solid; + margin: -15px -15px 0 -15px } + + .FramedSearchResultsPage .IPageTitle { + margin-bottom: 15px; + } + + .INavigationBar { + text-align: center; + background-color: #FFFFF0; + padding: 5px; + border-bottom: solid 1px black; + margin: 0 -15px 15px -15px; + } + + .INavigationBar a { + font-weight: bold } + + .IHeading { + font-size: 14pt; font-weight: bold; + padding: 2.5em 0 .5em 0; + text-align: center; + width: 3.5ex; + } + #IFirstHeading { + padding-top: 0; + } + + .IEntry { + padding-left: 1ex; + } + .PopupSearchResultsPage .IEntry { + font-size: 8pt; + padding: 1px 5px; + } + .PopupSearchResultsPage .Opera9 .IEntry, + .FramedSearchResultsPage .Opera9 .IEntry { + text-align: left; + } + .FramedSearchResultsPage .IEntry { + padding: 0; + } + + .ISubIndex { + padding-left: 3ex; padding-bottom: .5em } + .PopupSearchResultsPage .ISubIndex { + display: none; + } + + /* While it may cause some entries to look like links when they aren't, I found it's much easier to read the + index if everything's the same color. */ + .ISymbol { + font-weight: bold; color: #900000 } + + .IndexPage .ISymbolPrefix, + .FramedIndexPage .ISymbolPrefix { + text-align: right; + color: #C47C7C; + background-color: #F8F8F8; + border-right: 3px solid #E0E0E0; + border-left: 1px solid #E0E0E0; + padding: 0 1px 0 2px; + } + .PopupSearchResultsPage .ISymbolPrefix, + .FramedSearchResultsPage .ISymbolPrefix { + color: #900000; + } + .PopupSearchResultsPage .ISymbolPrefix { + font-size: 8pt; + } + + .IndexPage #IFirstSymbolPrefix, + .FramedIndexPage #IFirstSymbolPrefix { + border-top: 1px solid #E0E0E0; + } + .IndexPage #ILastSymbolPrefix, + .FramedIndexPage #ILastSymbolPrefix { + border-bottom: 1px solid #E0E0E0; + } + .IndexPage #IOnlySymbolPrefix, + .FramedIndexPage #IOnlySymbolPrefix { + border-top: 1px solid #E0E0E0; + border-bottom: 1px solid #E0E0E0; + } + + a.IParent, + a.IFile { + display: block; + } + + .PopupSearchResultsPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + } + .FramedSearchResultsPage .SRStatus { + font-size: 8pt; + font-style: italic; + } + + .SRResult { + display: none; + } + + + +#Footer { + font-size: 8pt; + color: #989898; + text-align: right; + } + +#Footer p { + text-indent: 0; + margin-bottom: .5em; + } + +.ContentPage #Footer, +.IndexPage #Footer { + text-align: right; + margin: 2px; + } + +.FramedMenuPage #Footer { + text-align: center; + margin: 5em 10px 10px 10px; + padding-top: 1em; + border-top: 1px solid #C8C8C8; + } + + #Footer a:link, + #Footer a:hover, + #Footer a:visited { color: #989898 } + #Footer a:active { color: #A00000 } + diff --git a/openlayers/doc/apidocs/styles/2.css b/openlayers/doc/apidocs/styles/2.css new file mode 100644 index 0000000..a397119 --- /dev/null +++ b/openlayers/doc/apidocs/styles/2.css @@ -0,0 +1,20 @@ +p { + text-indent: 0; margin-bottom: 1em; +} + +.MGroup { + font-variant: normal; + margin: 0.4em 0 0em 10px +} + +.MTitle { + font-variant: normal; +} + +.CGroup .CTitle { + font-variant: normal; +} + +.SGroup .SEntry { + font-variant: normal; +} \ No newline at end of file diff --git a/openlayers/doc/apidocs/styles/main.css b/openlayers/doc/apidocs/styles/main.css new file mode 100644 index 0000000..a672a94 --- /dev/null +++ b/openlayers/doc/apidocs/styles/main.css @@ -0,0 +1,2 @@ +@import URL("1.css"); +@import URL("2.css"); diff --git a/openlayers/doc/authors.txt b/openlayers/doc/authors.txt new file mode 100644 index 0000000..45206fd --- /dev/null +++ b/openlayers/doc/authors.txt @@ -0,0 +1,50 @@ +OpenLayers contributors: + +Mike Adair +Jeff Adams +Seb Benthall +Howard Butler +Bertil Chaupis +John Cole +Tim Coulter +Robert Coup +Jeff Dege +Roald de Wit +Schuyler Erle +Christian López Espínola +John Frank +Sean Gilles +Pierre Giraud +Andreas Hocevar +Ian Johnson +Eric Lemoine +Philip Lindsay +Martijn van Oosterhout +David Overstrom +Corey Puffault +Peter William Robins +Gregers Rygg +Tim Schaub +Christopher Schmidt +Cameron Shorter +Pedro Simonetti +Paul Spencer +Paul Smith +Glen Stampoultzis +James Stembridge +Erik Uzureau +Bart van den Eijnden +Ivan Willig +Thomas Wood +Bill Woodall +Steve Woodbridge +David Zwarg + +Some portions of OpenLayers are used under the Apache 2.0 license, available +in doc/licenses/APACHE-2.0.txt. + +Some portions of OpenLayers are used under the MIT license, availabie in +doc/licenses/MIT-LICENSE.txt. + +Some portions of OpenLayers are Copyright 2001 Robert Penner, and are used +under the BSD license, available in doc/licenses/BSD-LICENSE.txt diff --git a/openlayers/doc/customization b/openlayers/doc/customization new file mode 100644 index 0000000..f4b5b98 --- /dev/null +++ b/openlayers/doc/customization @@ -0,0 +1,49 @@ +Customizing OpenLayers +====================== + +OpenLayers is designed to fit many needs -- fitting in alongside all kinds of +various applications which are currently in use. + +Currently, OpenLayers supports a 'theme' option when creating a map. This +theme option allows you to specify the location of a CSS theme which should +be included. + +A default theme is available as an example in the theme/ directory: the setup +is: + + * theme/ + * theme/default/ + * theme/default/style.css + * theme/default/img/ + +Currently, the OpenLayers code does not support class names, and therefore, +it is not possible to control many aspects of OpenLayers code with CSS +classes. However, with this framework in place, we expect to invest time +to make existing features and new features use the CSS theming framework +where apropriate. + + +Class Naming +============ +Elements should have class names which are descriptive of the Javascript +class from which they come. For example, the main layer switcher element +in the OpenLayers.Control.LayerSwitcher would be classed: + + olControlLayerSwitcher + +This would allow users to add to their style.css class in their theme, +changing, for example: + +:: + + .olControlLayerSwitcher input { + width:10px; + } + +Sub elements of a particular control can add to the class name: + +:: + + .olControlLayerSwitcherBaseLabel { + color: red; + } diff --git a/openlayers/doc/devdocs/files/OpenLayers-js.html b/openlayers/doc/devdocs/files/OpenLayers-js.html new file mode 100644 index 0000000..fc1e87c --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers-js.html @@ -0,0 +1,51 @@ + + +OpenLayers + + + + + + + + + +

OpenLayers

The OpenLayers object provides a namespace for all things OpenLayers

Summary
OpenLayersThe OpenLayers object provides a namespace for all things OpenLayers
Properties
_scriptName{String} Relative path of this script.
Functions
_getScriptLocationReturn the path to this script.
Constants
VERSION_NUMBER
+ +

Properties

+ +

_scriptName

{String} Relative path of this script.

+ +

Functions

+ +

_getScriptLocation

_getScriptLocation: function ()

Return the path to this script.

Returns

{String} Path to this script

+ +

Constants

+ +

VERSION_NUMBER

+ +
+ + + + + + + + + + +
_getScriptLocation: function ()
Return the path to this script.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Ajax-js.html b/openlayers/doc/devdocs/files/OpenLayers/Ajax-js.html new file mode 100644 index 0000000..4730ef0 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Ajax-js.html @@ -0,0 +1,141 @@ + + +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Ajax.js - OpenLayers + + + + + + + + + +

Ajax.js

Summary
Ajax.js
Functions
OpenLayers.nullHandler@param {} request
loadURLBackground load a document.
parseXMLStringParse XML into a doc structure
OpenLayers.Ajax
Functions
emptyFunction
getTransport{Object} Transport mechanism for whichever browser we’re in, or false if none available.
Properties
activeRequestCount{Integer}
OpenLayers.Ajax.Responders{Object}
Properties
responders{Array}
Functions
register
unregister
dispatch
onCreate
onComplete
OpenLayers.Ajax.Base
Constructor
OpenLayers.Ajax.Base
OpenLayers.Ajax.RequestDeprecated.
Properties
_complete{Boolean}
Constructor
OpenLayers.Ajax.Request
Functions
request
onStateChange
setRequestHeaders
success{Boolean} -
getStatus
respondToReadyState
getHeader
dispatchExceptionIf the optional onException function is set, execute it and then dispatch the call to any other listener registered for onException.
Properties
Events{Array(String)}
OpenLayers.Ajax.Response
Properties
status{Integer}
statusText{String}
Constructor
OpenLayers.Ajax.Response
Functions
getStatus
getStatustext
getHeader
getResponseHeader
getElementsByTagNameNS
serializeXMLToStringWrapper function around XMLSerializer, which doesn’t exist/work in IE/Safari.
+ +

Functions

+ +

OpenLayers.nullHandler

OpenLayers.nullHandler = function(request)

@param {} request

+ +

loadURL

OpenLayers.loadURL = function(uri,
params,
caller,
onComplete,
onFailure)

Background load a document.  For more flexibility in using XMLHttpRequest, see the OpenLayers.Request methods.

Parameters

uri{String} URI of source doc
params{String} or {Object} GET params.  Either a string in the form “?hello=world&foo=bar” (do not forget the leading question mark) or an object in the form {‘hello’: ‘world’, ‘foo’: ‘bar}
caller{Object} object which gets callbacks
onComplete{Function} Optional callback for success.  The callback will be called with this set to caller and will receive the request object as an argument.  Note that if you do not specify an onComplete function, OpenLayers.nullHandler will be called (which pops up a user friendly error message dialog).
onFailure{Function} Optional callback for failure.  In the event of a failure, the callback will be called with this set to caller and will receive the request object as an argument.  Note that if you do not specify an onComplete function, OpenLayers.nullHandler will be called (which pops up a user friendly error message dialog).

Returns

{OpenLayers.Request.XMLHttpRequest} The request object.  To abort loading, call request.abort().

+ +

parseXMLString

OpenLayers.parseXMLString = function(text)

Parse XML into a doc structure

Parameters

text{String}

Returns

{?}  Parsed AJAX Responsev

+ +

OpenLayers.Ajax

Summary
Functions
emptyFunction
getTransport{Object} Transport mechanism for whichever browser we’re in, or false if none available.
Properties
activeRequestCount{Integer}
+ +

Functions

+ +

emptyFunction

emptyFunction: function ()
+ +

getTransport

getTransport: function()

Returns

{Object} Transport mechanism for whichever browser we’re in, or false if none available.

+ +

Properties

+ +

activeRequestCount

{Integer}

+ + + +

Properties

+ +

responders

{Array}

+ +

Functions

+ +

register

register: function(responderToAdd)

Parameters

responderToAdd{?}
+ +

unregister

unregister: function(responderToRemove)

Parameters

responderToRemove{?}
+ +

dispatch

dispatch: function(callback,
request,
transport)

Parameters

callback{?}
request{?}
transport{?}
+ +

onCreate

onCreate: function()
+ +

onComplete

onComplete: function()
+ +

OpenLayers.Ajax.Base

+ +

Constructor

+ +

OpenLayers.Ajax.Base

Parameters

options{Object}
+ +

OpenLayers.Ajax.Request

Deprecated.  Use OpenLayers.Request method instead.

Inherit

Summary
Properties
_complete{Boolean}
Constructor
OpenLayers.Ajax.Request
Functions
request
onStateChange
setRequestHeaders
success{Boolean} -
getStatus
respondToReadyState
getHeader
dispatchExceptionIf the optional onException function is set, execute it and then dispatch the call to any other listener registered for onException.
Properties
Events{Array(String)}
+ +

Properties

+ +

_complete

{Boolean}

+ +

Constructor

+ +

OpenLayers.Ajax.Request

Parameters

url{String}
options{Object}
+ +

Functions

+ +

request

request: function(url)

Parameters

url{String}
+ +

onStateChange

onStateChange: function()
+ +

setRequestHeaders

setRequestHeaders: function()
+ +

success

success: function()

Returns

{Boolean} -

+ +

getStatus

getStatus: function()

Returns

{Integer}Status
+ +

respondToReadyState

respondToReadyState: function(readyState)

Parameters

readyState{?}
+ +

getHeader

getHeader: function(name)

Parameters

name{String} Header name

Returns

{?}response header for the given name
+ +

dispatchException

dispatchException: function(exception)

If the optional onException function is set, execute it and then dispatch the call to any other listener registered for onException.

If no optional onException function is set, we suspect that the user may have also not used OpenLayers.Ajax.Responders.register to register a listener for the onException call.  To make sure that something gets done with this exception, only dispatch the call if there are listeners.

If you explicitly want to swallow exceptions, set request.options.onException to an empty function (function(){}) or register an empty function with OpenLayers.Ajax.Responders for onException.

Parameters

exception{?}
+ +

Properties

+ +

Events

{Array(String)}

+ +

OpenLayers.Ajax.Response

+ +

Properties

+ +

status

{Integer}

+ +

statusText

{String}

+ +

Constructor

+ +

OpenLayers.Ajax.Response

Parameters

request{Object}
+ +

Functions

+ +

getStatus

+ +

getStatustext

Returns

{String}statusText
+ +

getHeader

+ +

getResponseHeader

getResponseHeader: function(name)

Returns

{?}response header for given name
+ +

getElementsByTagNameNS

OpenLayers.Ajax.getElementsByTagNameNS = function(parentnode,
nsuri,
nsprefix,
tagname)

Parameters

parentnode{?}
nsuri{?}
nsprefix{?}
tagname{?}

Returns

{?}

+ +

serializeXMLToString

OpenLayers.Ajax.serializeXMLToString = function(xmldom)

Wrapper function around XMLSerializer, which doesn’t exist/work in IE/Safari.  We need to come up with a way to serialize in those browser: for now, these browsers will just fail.  #535, #536

Parameters

xmldom {XMLNode} xml dom to serialize

Returns

{?}

+ +
+ + + + + + + + + + +
OpenLayers.nullHandler = function(request)
@param {} request
OpenLayers.loadURL = function(uri,
params,
caller,
onComplete,
onFailure)
Background load a document.
OpenLayers.parseXMLString = function(text)
Parse XML into a doc structure
emptyFunction: function ()
getTransport: function()
{Object} Transport mechanism for whichever browser we’re in, or false if none available.
register: function(responderToAdd)
unregister: function(responderToRemove)
dispatch: function(callback,
request,
transport)
onCreate: function()
onComplete: function()
request: function(url)
onStateChange: function()
setRequestHeaders: function()
success: function()
{Boolean} -
getStatus: function()
respondToReadyState: function(readyState)
getHeader: function(name)
dispatchException: function(exception)
If the optional onException function is set, execute it and then dispatch the call to any other listener registered for onException.
getResponseHeader: function(name)
OpenLayers.Ajax.getElementsByTagNameNS = function(parentnode,
nsuri,
nsprefix,
tagname)
OpenLayers.Ajax.serializeXMLToString = function(xmldom)
Wrapper function around XMLSerializer, which doesn’t exist/work in IE/Safari.
The OpenLayers.Request namespace contains convenience methods for working with XMLHttpRequests.
Standard-compliant (W3C) cross-browser implementation of the XMLHttpRequest object.
{Object}
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/BaseTypes-js.html b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes-js.html new file mode 100644 index 0000000..a3135d0 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes-js.html @@ -0,0 +1,110 @@ + + +OpenLayers Base Types - OpenLayers + + + + + + + + + +

OpenLayers Base Types

OpenLayers custom string, number and function functions are described here.

Summary
OpenLayers Base TypesOpenLayers custom string, number and function functions are described here.
OpenLayers.StringContains convenience functions for string manipulation.
Functions
startsWithTest whether a string starts with another string.
containsTest whether a string contains another string.
trimRemoves leading and trailing whitespace characters from a string.
camelizeCamel-case a hyphenated string.
formatGiven a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
Properties
OpenLayers.String.tokenRegExUsed to find tokens in a string.
OpenLayers.String.numberRegExUsed to test strings as numbers.
Functions
OpenLayers.String.isNumericDetermine whether a string contains only a numeric value.
numericIfConverts a string that appears to be a numeric value into a number.
String.startsWithDeprecated.
String.containsDeprecated.
String.trimDeprecated.
String.camelizeDeprecated.
OpenLayers.NumberContains convenience functions for manipulating numbers.
Properties
decimalSeparatorDecimal separator to use when formatting numbers.
thousandsSeparatorThousands separator to use when formatting numbers.
Functions
limitSigDigsLimit the number of significant digits on a float.
formatFormats a number for output.
Number.limitSigDigsDeprecated.
OpenLayers.FunctionContains convenience functions for function manipulation.
Functions
bindBind a function to an object.
bindAsEventListenerBind a function to an object, and configure it to receive the event object as first parameter when called.
Function.bindDeprecated.
Function.bindAsEventListenerDeprecated.
OpenLayers.ArrayContains convenience functions for array manipulation.
Functions
filterFilter an array.
+ +

OpenLayers.String

Contains convenience functions for string manipulation.

Summary
Functions
startsWithTest whether a string starts with another string.
containsTest whether a string contains another string.
trimRemoves leading and trailing whitespace characters from a string.
camelizeCamel-case a hyphenated string.
formatGiven a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
Properties
OpenLayers.String.tokenRegExUsed to find tokens in a string.
OpenLayers.String.numberRegExUsed to test strings as numbers.
Functions
OpenLayers.String.isNumericDetermine whether a string contains only a numeric value.
numericIfConverts a string that appears to be a numeric value into a number.
String.startsWithDeprecated.
String.containsDeprecated.
String.trimDeprecated.
String.camelizeDeprecated.
+ +

Functions

+ +

startsWith

startsWith: function(str,
sub)

Test whether a string starts with another string.

Parameters

str{String} The string to test.
sub{Sring} The substring to look for.

Returns

{Boolean} The first string starts with the second.

+ +

contains

contains: function(str,
sub)

Test whether a string contains another string.

Parameters

str{String} The string to test.
sub{String} The substring to look for.

Returns

{Boolean} The first string contains the second.

+ +

trim

trim: function(str)

Removes leading and trailing whitespace characters from a string.

Parameters

str{String} The (potentially) space padded string.  This string is not modified.

Returns

{String} A trimmed version of the string with all leading and trailing spaces removed.

+ +

camelize

camelize: function(str)

Camel-case a hyphenated string.  Ex.  “chicken-head” becomes “chickenHead”, and “-chicken-head” becomes “ChickenHead”.

Parameters

str{String} The string to be camelized.  The original is not modified.

Returns

{String} The string, camelized

+ +

format

format: function(template,
context,
args)

Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.  Represent a literal “${“ by doubling it, e.g.  “${${“.

Parameters

template{String} A string with tokens to be replaced.  A template has the form “literal ${token}” where the token will be replaced by the value of context[“token”].
context{Object} An optional object with properties corresponding to the tokens in the format string.  If no context is sent, the window object will be used.
args{Array} Optional arguments to pass to any functions found in the context.  If a context property is a function, the token will be replaced by the return from the function called with these arguments.

Returns

{String} A string with tokens replaced from the context object.

+ +

Properties

+ +

OpenLayers.String.tokenRegEx

Used to find tokens in a string.  Examples: ${a}, ${a.b.c}, ${a-b}, ${5}

+ +

OpenLayers.String.numberRegEx

Used to test strings as numbers.

+ +

Functions

+ +

OpenLayers.String.isNumeric

Determine whether a string contains only a numeric value.

Examples

OpenLayers.String.isNumeric("6.02e23") // true
+OpenLayers.String.isNumeric("12 dozen") // false
+OpenLayers.String.isNumeric("4") // true
+OpenLayers.String.isNumeric(" 4 ") // false

Returns

{Boolean} String contains only a number.

+ +

numericIf

numericIf: function(value)

Converts a string that appears to be a numeric value into a number.

Returns {Number|String} a Number if the passed value is a number, a String otherwise.

+ +

String.startsWith

Deprecated.  Whether or not a string starts with another string.

Parameters

sStart{Sring} The string we’re testing for.

Returns

{Boolean} Whether or not this string starts with the string passed in.

+ +

String.contains

Deprecated.  Whether or not a string contains another string.

Parameters

str{String} The string that we’re testing for.

Returns

{Boolean} Whether or not this string contains with the string passed in.

+ +

String.trim

Deprecated.  Removes leading and trailing whitespace characters from a string.

Returns

{String} A trimmed version of the stringall leading and trailing spaces removed
+ +

String.camelize

Deprecated.  Camel-case a hyphenated string.  Ex.  “chicken-head” becomes “chickenHead”, and “-chicken-head” becomes “ChickenHead”.

Returns

{String} The string, camelized

+ +

OpenLayers.Number

Contains convenience functions for manipulating numbers.

Summary
Properties
decimalSeparatorDecimal separator to use when formatting numbers.
thousandsSeparatorThousands separator to use when formatting numbers.
Functions
limitSigDigsLimit the number of significant digits on a float.
formatFormats a number for output.
Number.limitSigDigsDeprecated.
+ +

Properties

+ +

decimalSeparator

Decimal separator to use when formatting numbers.

+ +

thousandsSeparator

Thousands separator to use when formatting numbers.

+ +

Functions

+ +

limitSigDigs

limitSigDigs: function(num,
sig)

Limit the number of significant digits on a float.

Parameters

num{Float}
sig{Integer}

Returns

{Float} The number, rounded to the specified number of significant digits.

+ +

format

format: function(num,
dec,
tsep,
dsep)

Formats a number for output.

Parameters

num{Float}
dec{Integer} Number of decimal places to round to.  Defaults to 0.  Set to null to leave decimal places unchanged.
tsep{String} Thousands separator.  Default is “,”.
dsep{String} Decimal separator.  Default is “.”.

Returns

{String} A string representing the formatted number.

+ +

Number.limitSigDigs

Deprecated.  Limit the number of significant digits on an integer.  Does not work with floats!

Parameters

sig{Integer}

Returns

{Integer} The number, rounded to the specified number of significant digits.  If null, 0, or negative value passed in, returns 0

+ +

OpenLayers.Function

Contains convenience functions for function manipulation.

Summary
Functions
bindBind a function to an object.
bindAsEventListenerBind a function to an object, and configure it to receive the event object as first parameter when called.
Function.bindDeprecated.
Function.bindAsEventListenerDeprecated.
+ +

Functions

+ +

bind

bind: function(func,
object)

Bind a function to an object.  Method to easily create closures with ‘this’ altered.

Parameters

func{Function} Input function.
object{Object} The object to bind to the input function (as this).

Returns

{Function} A closure with ‘this’ set to the passed in object.

+ +

bindAsEventListener

bindAsEventListener: function(func,
object)

Bind a function to an object, and configure it to receive the event object as first parameter when called.

Parameters

func{Function} Input function to serve as an event listener.
object{Object} A reference to this.

Returns

{Function}

+ +

Function.bind

Deprecated.  Bind a function to an object.  Method to easily create closures with ‘this’ altered.

Parameters

object{Object} the this parameter

Returns

{Function} A closure with ‘this’ altered to the first argument.

+ +

Function.bindAsEventListener

Deprecated.  Bind a function to an object, and configure it to receive the event object as first parameter when called.

Parameters

object{Object} A reference to this.

Returns

{Function}

+ +

OpenLayers.Array

Contains convenience functions for array manipulation.

Summary
Functions
filterFilter an array.
+ +

Functions

+ +

filter

filter: function(array,
callback,
caller)

Filter an array.  Provides the functionality of the Array.prototype.filter extension to the ECMA-262 standard.  Where available, Array.prototype.filter will be used.

Based on well known example from http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:filter

Parameters

array{Array} The array to be filtered.  This array is not mutated.  Elements added to this array by the callback will not be visited.
callback{Function} A function that is called for each element in the array.  If this function returns true, the element will be included in the return.  The function will be called with three arguments: the element in the array, the index of that element, and the array itself.  If the optional caller parameter is specified the callback will be called with this set to caller.
caller{Object} Optional object to be set as this when the callback is called.

Returns

{Array} An array of elements from the passed in array for which the callback returns true.

+ +
+ + + + + + + + + + +
startsWith: function(str,
sub)
Test whether a string starts with another string.
contains: function(str,
sub)
Test whether a string contains another string.
trim: function(str)
Removes leading and trailing whitespace characters from a string.
camelize: function(str)
Camel-case a hyphenated string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
numericIf: function(value)
Converts a string that appears to be a numeric value into a number.
limitSigDigs: function(num,
sig)
Limit the number of significant digits on a float.
format: function(num,
dec,
tsep,
dsep)
Formats a number for output.
bind: function(func,
object)
Bind a function to an object.
bindAsEventListener: function(func,
object)
Bind a function to an object, and configure it to receive the event object as first parameter when called.
filter: function(array,
callback,
caller)
Filter an array.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Bounds-js.html b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Bounds-js.html new file mode 100644 index 0000000..97549a2 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Bounds-js.html @@ -0,0 +1,112 @@ + + +OpenLayers.Bounds - OpenLayers + + + + + + + + + +

OpenLayers.Bounds

Instances of this class represent bounding boxes.  Data stored as left, bottom, right, top floats.  All values are initialized to null, however, you should make sure you set them before using the bounds for anything.

Possible use case

bounds = new OpenLayers.Bounds();
+bounds.extend(new OpenLayers.LonLat(4,5));
+bounds.extend(new OpenLayers.LonLat(5,6));
+bounds.toBBOX(); // returns 4,5,5,6
Summary
OpenLayers.BoundsInstances of this class represent bounding boxes.
Properties
left{Number} Minimum horizontal coordinate.
bottom{Number} Minimum vertical coordinate.
right{Number} Maximum horizontal coordinate.
top{Number} Maximum vertical coordinate.
centerLonLat{OpenLayers.LonLat} A cached center location.
Constructor
OpenLayers.BoundsConstruct a new bounds object.
Functions
cloneCreate a cloned instance of this bounds.
equalsTest a two bounds for equivalence.
toString{String} String representation of bounds object.
toArray{Array} array of left, bottom, right, top
toBBOX
toGeometryCreate a new polygon geometry based on this bounds.
getWidth{Float} The width of the bounds
getHeight{Float} The height of the bounds (top minus bottom).
getSize{OpenLayers.Size} The size of the box.
getCenterPixel{OpenLayers.Pixel} The center of the bounds in pixel space.
getCenterLonLat{OpenLayers.LonLat} The center of the bounds in map space.
scaleScales the bounds around a pixel or lonlat.
add
extendExtend the bounds to include the point, lonlat, or bounds specified.
containsLonLat
containsPixel
contains
intersectsBoundsDetermine whether the target bounds intersects this bounds.
containsBoundsDetermine whether the target bounds is contained within this bounds.
determineQuadrant
transformTransform the Bounds object from source to dest.
wrapDateLine
fromStringAlternative constructor that builds a new OpenLayers.Bounds from a parameter string
fromArrayAlternative constructor that builds a new OpenLayers.Bounds from an array
fromSizeAlternative constructor that builds a new OpenLayers.Bounds from a size
oppositeQuadrantGet the opposite quadrant for a given quadrant string.
+ +

Properties

+ +

left

{Number} Minimum horizontal coordinate.

+ +

bottom

{Number} Minimum vertical coordinate.

+ +

right

{Number} Maximum horizontal coordinate.

+ +

top

{Number} Maximum vertical coordinate.

+ +

centerLonLat

{OpenLayers.LonLat} A cached center location.  This should not be accessed directly.  Use getCenterLonLat instead.

+ +

Constructor

+ +

OpenLayers.Bounds

Construct a new bounds object.

Parameters

left{Number} The left bounds of the box.  Note that for width calculations, this is assumed to be less than the right value.
bottom{Number} The bottom bounds of the box.  Note that for height calculations, this is assumed to be more than the top value.
right{Number} The right bounds.
top{Number} The top bounds.
+ +

Functions

+ +

clone

clone:function()

Create a cloned instance of this bounds.

Returns

{OpenLayers.Bounds} A fresh copy of the bounds

+ +

equals

equals:function(bounds)

Test a two bounds for equivalence.

Parameters

bounds{OpenLayers.Bounds}

Returns

{Boolean} The passed-in bounds object has the same left, right, top, bottom components as this.  Note that if bounds passed in is null, returns false.

+ +

toString

toString:function()

Returns

{String} String representation of bounds object.  (ex.<i>”left-bottom=(5,42) right-top=(10,45)”</i>)

+ +

toArray

toArray: function()

Returns

{Array} array of left, bottom, right, top

+ +

toBBOX

toBBOX:function(decimal)

Parameters

decimal{Integer} How many significant digits in the bbox coords?  Default is 6

Returns

{String} Simple String representation of bounds object.  (ex.  <i>”5,42,10,45”</i>)

+ +

toGeometry

toGeometry: function()

Create a new polygon geometry based on this bounds.

Returns

{OpenLayers.Geometry.Polygon} A new polygon with the coordinates of this bounds.

+ +

getWidth

getWidth:function()

Returns

{Float} The width of the bounds

+ +

getHeight

getHeight:function()

Returns

{Float} The height of the bounds (top minus bottom).

+ +

getSize

getSize:function()

Returns

{OpenLayers.Size} The size of the box.

+ +

getCenterPixel

getCenterPixel:function()

Returns

{OpenLayers.Pixel} The center of the bounds in pixel space.

+ +

getCenterLonLat

getCenterLonLat:function()

Returns

{OpenLayers.LonLat} The center of the bounds in map space.

+ +

scale

scale: function(ratio,
origin)

Scales the bounds around a pixel or lonlat.  Note that the new bounds may return non-integer properties, even if a pixel is passed.

Parameters

ratio{Float}
origin{OpenLayers.Pixel or OpenLayers.LonLat} Default is center.

Returns

{<OpenLayers.Bound>} A new bounds that is scaled by ratio from origin.

+ +

add

add:function(x,
y)

Parameters

x{Float}
y{Float}

Returns

{OpenLayers.Bounds} A new bounds whose coordinates are the same as this, but shifted by the passed-in x and y values.

+ +

extend

extend:function(object)

Extend the bounds to include the point, lonlat, or bounds specified.  Note, this function assumes that left < right and bottom < top.

Parameters

object{Object} Can be LonLat, Point, or Bounds
+ +

containsLonLat

containsLonLat:function(ll,
inclusive)

Parameters

ll{OpenLayers.LonLat}
inclusive{Boolean} Whether or not to include the border.  Default is true.

Returns

{Boolean} The passed-in lonlat is within this bounds.

+ +

containsPixel

containsPixel:function(px,
inclusive)

Parameters

px{OpenLayers.Pixel}
inclusive{Boolean} Whether or not to include the border.  Default is true.

Returns

{Boolean} The passed-in pixel is within this bounds.

+ +

contains

contains:function(x,
y,
inclusive)

Parameters

x{Float}
y{Float}
inclusive{Boolean} Whether or not to include the border.  Default is true.

Returns

{Boolean} Whether or not the passed-in coordinates are within this bounds.

+ +

intersectsBounds

intersectsBounds:function(bounds,
inclusive)

Determine whether the target bounds intersects this bounds.  Bounds are considered intersecting if any of their edges intersect or if one bounds contains the other.

Parameters

bounds{OpenLayers.Bounds} The target bounds.
inclusive{Boolean} Treat coincident borders as intersecting.  Default is true.  If false, bounds that do not overlap but only touch at the border will not be considered as intersecting.

Returns

{Boolean} The passed-in bounds object intersects this bounds.

+ +

containsBounds

containsBounds:function(bounds,
partial,
inclusive)

Determine whether the target bounds is contained within this bounds.

bounds{OpenLayers.Bounds} The target bounds.
partial{Boolean} If any of the target corners is within this bounds consider the bounds contained.  Default is false.  If true, the entire target bounds must be contained within this bounds.
inclusive{Boolean} Treat shared edges as contained.  Default is true.

Returns

{Boolean} The passed-in bounds object is contained within this bounds.

+ +

determineQuadrant

determineQuadrant: function(lonlat)

Parameters

lonlat{OpenLayers.LonLat}

Returns

{String} The quadrant (“br” “tr” “tl” “bl”) of the bounds in which the coordinate lies.

+ +

transform

transform: function(source,
dest)

Transform the Bounds object from source to dest.

Parameters

source{OpenLayers.Projection} Source projection.
dest{OpenLayers.Projection} Destination projection.

Returns

{OpenLayers.Bounds} Itself, for use in chaining operations.

+ +

wrapDateLine

wrapDateLine: function(maxExtent,
options)

Parameters

maxExtent{OpenLayers.Bounds}
options{Object} Some possible options are:
leftTolerance{float} Allow for a margin of error with the ‘left’ value of this bound.  Default is 0.
rightTolerance{float} Allow for a margin of error with the ‘right’ value of this bound.  Default is 0.

Returns

{OpenLayers.Bounds} A copy of this bounds, but wrapped around the “dateline” (as specified by the borders of maxExtent).  Note that this function only returns a different bounds value if this bounds is entirely outside of the maxExtent.  If this bounds straddles the dateline (is part in/part out of maxExtent), the returned bounds will be merely a copy of this one.

+ +

fromString

OpenLayers.Bounds.fromString = function(str)

Alternative constructor that builds a new OpenLayers.Bounds from a parameter string

Parameters

str{String}Comma-separated bounds string.  (ex.  <i>”5,42,10,45”</i>)

Returns

{OpenLayers.Bounds} New bounds object built from the passed-in String.

+ +

fromArray

OpenLayers.Bounds.fromArray = function(bbox)

Alternative constructor that builds a new OpenLayers.Bounds from an array

Parameters

bbox{Array(Float)} Array of bounds values (ex.  <i>[5,42,10,45]</i>)

Returns

{OpenLayers.Bounds} New bounds object built from the passed-in Array.

+ +

fromSize

OpenLayers.Bounds.fromSize = function(size)

Alternative constructor that builds a new OpenLayers.Bounds from a size

Parameters

size{OpenLayers.Size}

Returns

{OpenLayers.Bounds} New bounds object built from the passed-in size.

+ +

oppositeQuadrant

OpenLayers.Bounds.oppositeQuadrant = function(quadrant)

Get the opposite quadrant for a given quadrant string.

Parameters

quadrant{String} two character quadrant shortstring

Returns

{String} The opposing quadrant (“br” “tr” “tl” “bl”).  For Example, if you pass in “bl” it returns “tr”, if you pass in “br” it returns “tl”, etc.

+ +
+ + + + + + + + + + +
This class represents a longitude and latitude pair
clone:function()
Create a cloned instance of this bounds.
equals:function(bounds)
Test a two bounds for equivalence.
toString:function()
{String} String representation of bounds object.
toArray: function()
{Array} array of left, bottom, right, top
toBBOX:function(decimal)
toGeometry: function()
Create a new polygon geometry based on this bounds.
getWidth:function()
{Float} The width of the bounds
getHeight:function()
{Float} The height of the bounds (top minus bottom).
getSize:function()
{OpenLayers.Size} The size of the box.
Instances of this class represent a width/height pair
getCenterPixel:function()
{OpenLayers.Pixel} The center of the bounds in pixel space.
This class represents a screen coordinate, in x and y coordinates
getCenterLonLat:function()
{OpenLayers.LonLat} The center of the bounds in map space.
scale: function(ratio,
origin)
Scales the bounds around a pixel or lonlat.
add:function(x,
y)
extend:function(object)
Extend the bounds to include the point, lonlat, or bounds specified.
containsLonLat:function(ll,
inclusive)
containsPixel:function(px,
inclusive)
contains:function(x,
y,
inclusive)
intersectsBounds:function(bounds,
inclusive)
Determine whether the target bounds intersects this bounds.
containsBounds:function(bounds,
partial,
inclusive)
Determine whether the target bounds is contained within this bounds.
determineQuadrant: function(lonlat)
transform: function(source,
dest)
Transform the Bounds object from source to dest.
wrapDateLine: function(maxExtent,
options)
OpenLayers.Bounds.fromString = function(str)
Alternative constructor that builds a new OpenLayers.Bounds from a parameter string
OpenLayers.Bounds.fromArray = function(bbox)
Alternative constructor that builds a new OpenLayers.Bounds from an array
OpenLayers.Bounds.fromSize = function(size)
Alternative constructor that builds a new OpenLayers.Bounds from a size
OpenLayers.Bounds.oppositeQuadrant = function(quadrant)
Get the opposite quadrant for a given quadrant string.
Construct a new bounds object.
Polygon is a collection of Geometry.LinearRings.
Class for coordinate transforms between coordinate systems.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Class-js.html b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Class-js.html new file mode 100644 index 0000000..d54e371 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Class-js.html @@ -0,0 +1,53 @@ + + +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Class.js - OpenLayers + + + + + + + + + +

Class.js

Summary
Class.js
Constructor
OpenLayers.ClassBase class used to construct all other classes.
Properties
isPrototypeDeprecated.
Functions
OpenLayers.createDeprecated.
inheritDeprecated.
+ +

Constructor

+ +

OpenLayers.Class

Base class used to construct all other classes.  Includes support for multiple inheritance.

This constructor is new in OpenLayers 2.5.  At OpenLayers 3.0, the old syntax for creating classes and dealing with inheritance will be removed.

To create a new OpenLayers-style class, use the following syntax

var MyClass = OpenLayers.Class(prototype);

To create a new OpenLayers-style class with multiple inheritance, use the following syntax:

var MyClass = OpenLayers.Class(Class1, Class2, prototype);

Note that instanceof reflection will only reveil Class1 as superclass.  Class2 ff are mixins.

+ +

Properties

+ +

isPrototype

Deprecated.  This is no longer needed and will be removed at 3.0.

+ +

Functions

+ +

OpenLayers.create

Deprecated.  Old method to create an OpenLayers style class.  Use the OpenLayers.Class constructor instead.

Returns

An OpenLayers class

+ +

inherit

OpenLayers.Class.inherit = function ()

Deprecated.  Old method to inherit from one or more OpenLayers style classes.  Use the OpenLayers.Class constructor instead.

Parameters

classOne or more classes can be provided as arguments

Returns

An object prototype

+ +
+ + + + + + + + + + +
OpenLayers.Class.inherit = function ()
Deprecated.
Base class used to construct all other classes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Element-js.html b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Element-js.html new file mode 100644 index 0000000..c555c0a --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Element-js.html @@ -0,0 +1,65 @@ + + +OpenLayers.Element - OpenLayers + + + + + + + + + +

OpenLayers.Element

Summary
OpenLayers.Element
Functions
visible
toggleToggle the visibility of element(s) passed in
hideHide element(s) passed in
showShow element(s) passed in
removeRemove the specified element from the DOM.
getHeight
getDimensions
hasClassTests if an element has the given CSS class name.
addClassAdd a CSS class name to an element.
removeClassRemove a CSS class name from an element.
toggleClassRemove a CSS class name from an element if it exists.
getStyle
+ +

Functions

+ +

visible

visible: function(element)

Parameters

element{DOMElement}

Returns

{Boolean} Is the element visible?

+ +

toggle

toggle: function()

Toggle the visibility of element(s) passed in

Parameters

element{DOMElement} Actually user can pass any number of elements
+ +

hide

hide: function()

Hide element(s) passed in

Parameters

element{DOMElement} Actually user can pass any number of elements
+ +

show

show: function()

Show element(s) passed in

Parameters

element{DOMElement} Actually user can pass any number of elements
+ +

remove

remove: function(element)

Remove the specified element from the DOM.

Parameters

element{DOMElement}
+ +

getHeight

getHeight: function(element)

Parameters

element{DOMElement}

Returns

{Integer} The offset height of the element passed in

+ +

getDimensions

getDimensions: function(element)

Parameters

element{DOMElement}

Returns

{Object} Object with ‘width’ and ‘height’ properties which are the dimensions of the element passed in.

+ +

hasClass

hasClass: function(element,
name)

Tests if an element has the given CSS class name.

Parameters

element{DOMElement} A DOM element node.
name{String} The CSS class name to search for.

Returns

{Boolean} The element has the given class name.

+ +

addClass

addClass: function(element,
name)

Add a CSS class name to an element.  Safe where element already has the class name.

Parameters

element{DOMElement} A DOM element node.
name{String} The CSS class name to add.

Returns

{DOMElement} The element.

+ +

removeClass

removeClass: function(element,
name)

Remove a CSS class name from an element.  Safe where element does not have the class name.

Parameters

element{DOMElement} A DOM element node.
name{String} The CSS class name to remove.

Returns

{DOMElement} The element.

+ +

toggleClass

toggleClass: function(element,
name)

Remove a CSS class name from an element if it exists.  Add the class name if it doesn’t exist.

Parameters

element{DOMElement} A DOM element node.
name{String} The CSS class name to toggle.

Returns

{DOMElement} The element.

+ +

getStyle

getStyle: function(element,
style)

Parameters

element{DOMElement}
style{?}

Returns

{?}

+ +
+ + + + + + + + + + +
visible: function(element)
toggle: function()
Toggle the visibility of element(s) passed in
hide: function()
Hide element(s) passed in
show: function()
Show element(s) passed in
remove: function(element)
Remove the specified element from the DOM.
getHeight: function(element)
getDimensions: function(element)
hasClass: function(element,
name)
Tests if an element has the given CSS class name.
addClass: function(element,
name)
Add a CSS class name to an element.
removeClass: function(element,
name)
Remove a CSS class name from an element.
toggleClass: function(element,
name)
Remove a CSS class name from an element if it exists.
getStyle: function(element,
style)
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/LonLat-js.html b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/LonLat-js.html new file mode 100644 index 0000000..85e1c91 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/LonLat-js.html @@ -0,0 +1,67 @@ + + +OpenLayers.LonLat - OpenLayers + + + + + + + + + +

OpenLayers.LonLat

This class represents a longitude and latitude pair

Summary
OpenLayers.LonLatThis class represents a longitude and latitude pair
Properties
lon{Float} The x-axis coodinate in map units
lat{Float} The y-axis coordinate in map units
Constructor
OpenLayers.LonLatCreate a new map location.
Functions
toStringReturn a readable string version of the lonlat
toShortString{String} Shortened String representation of OpenLayers.LonLat object.
clone{OpenLayers.LonLat} New OpenLayers.LonLat object with the same lon and lat values
add
equals
transformTransform the LonLat object from source to dest.
wrapDateLine
fromStringAlternative constructor that builds a new OpenLayers.LonLat from a parameter string
+ +

Properties

+ +

lon

{Float} The x-axis coodinate in map units

+ +

lat

{Float} The y-axis coordinate in map units

+ +

Constructor

+ +

OpenLayers.LonLat

Create a new map location.

Parameters

lon{Number} The x-axis coordinate in map units.  If your map is in a geographic projection, this will be the Longitude.  Otherwise, it will be the x coordinate of the map location in your map units.
lat{Number} The y-axis coordinate in map units.  If your map is in a geographic projection, this will be the Latitude.  Otherwise, it will be the y coordinate of the map location in your map units.
+ +

Functions

+ +

toString

toString:function()

Return a readable string version of the lonlat

Returns

{String} String representation of OpenLayers.LonLat object.  (ex.  <i>”lon=5,lat=42”</i>)

+ +

toShortString

toShortString:function()

Returns

{String} Shortened String representation of OpenLayers.LonLat object.  (ex.  <i>”5, 42”</i>)

+ +

clone

clone:function()

Returns

{OpenLayers.LonLat} New OpenLayers.LonLat object with the same lon and lat values

+ +

add

add:function(lon,
lat)

Parameters

lon{Float}
lat{Float}

Returns

{OpenLayers.LonLat} A new OpenLayers.LonLat object with the lon and lat passed-in added to this’s.

+ +

equals

equals:function(ll)

Parameters

ll{OpenLayers.LonLat}

Returns

{Boolean} Boolean value indicating whether the passed-in OpenLayers.LonLat object has the same lon and lat components as this.  Note: if ll passed in is null, returns false

+ +

transform

transform: function(source,
dest)

Transform the LonLat object from source to dest.  This transformation is in place: if you want a new lonlat, use .clone() first.

Parameters

source{OpenLayers.Projection} Source projection.
dest{OpenLayers.Projection} Destination projection.

Returns

{OpenLayers.LonLat} Itself, for use in chaining operations.

+ +

wrapDateLine

wrapDateLine: function(maxExtent)

Parameters

maxExtent{OpenLayers.Bounds}

Returns

{OpenLayers.LonLat} A copy of this lonlat, but wrapped around the “dateline” (as specified by the borders of maxExtent)

+ +

fromString

OpenLayers.LonLat.fromString = function(str)

Alternative constructor that builds a new OpenLayers.LonLat from a parameter string

Parameters

str{String} Comma-separated Lon,Lat coordinate string.  (ex.  <i>”5,40”</i>)

Returns

{OpenLayers.LonLat} New OpenLayers.LonLat object built from the passed-in String.

+ +
+ + + + + + + + + + +
toString:function()
Return a readable string version of the lonlat
toShortString:function()
{String} Shortened String representation of OpenLayers.LonLat object.
clone:function()
{OpenLayers.LonLat} New OpenLayers.LonLat object with the same lon and lat values
Create a new map location.
add:function(lon,
lat)
equals:function(ll)
transform: function(source,
dest)
Transform the LonLat object from source to dest.
wrapDateLine: function(maxExtent)
OpenLayers.LonLat.fromString = function(str)
Alternative constructor that builds a new OpenLayers.LonLat from a parameter string
Class for coordinate transforms between coordinate systems.
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Pixel-js.html b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Pixel-js.html new file mode 100644 index 0000000..d21ab6f --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Pixel-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Pixel - OpenLayers + + + + + + + + + +

OpenLayers.Pixel

This class represents a screen coordinate, in x and y coordinates

Summary
OpenLayers.PixelThis class represents a screen coordinate, in x and y coordinates
Properties
x{Number} The x coordinate
y{Number} The y coordinate
Constructor
OpenLayers.PixelCreate a new OpenLayers.Pixel instance
Functions
toStringCast this object into a string
cloneReturn a clone of this pixel object
equalsDetermine whether one pixel is equivalent to another
add
offsetParameters px - {OpenLayers.Pixel}
+ +

Properties

+ +

x

{Number} The x coordinate

+ +

y

{Number} The y coordinate

+ +

Constructor

+ +

OpenLayers.Pixel

Create a new OpenLayers.Pixel instance

Parameters

x{Number} The x coordinate
y{Number} The y coordinate

Returns

An instance of OpenLayers.Pixel

+ +

Functions

+ +

toString

toString:function()

Cast this object into a string

Returns

{String} The string representation of Pixel. ex: “x=200.4,y=242.2”

+ +

clone

clone:function()

Return a clone of this pixel object

Returns

{OpenLayers.Pixel} A clone pixel

+ +

equals

equals:function(px)

Determine whether one pixel is equivalent to another

Parameters

px{OpenLayers.Pixel}

Returns

{Boolean} The point passed in as parameter is equal to this.  Note that if px passed in is null, returns false.

+ +

add

add:function(x,
y)

Parameters

x{Integer}
y{Integer}

Returns

{OpenLayers.Pixel} A new Pixel with this pixel’s x&y augmented by the values passed in.

+ +

offset

offset:function(px)

Parameters px - {OpenLayers.Pixel}

Returns

{OpenLayers.Pixel} A new Pixel with this pixel’s x&y augmented by the x&y values of the pixel passed in.

+ +
+ + + + + + + + + + +
toString:function()
Cast this object into a string
clone:function()
Return a clone of this pixel object
equals:function(px)
Determine whether one pixel is equivalent to another
add:function(x,
y)
offset:function(px)
Parameters px - {OpenLayers.Pixel}
Create a new OpenLayers.Pixel instance
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Size-js.html b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Size-js.html new file mode 100644 index 0000000..4e8d4c5 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/BaseTypes/Size-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Size - OpenLayers + + + + + + + + + +

OpenLayers.Size

Instances of this class represent a width/height pair

Summary
OpenLayers.SizeInstances of this class represent a width/height pair
Properties
w{Number} width
h{Number} height
Constructor
OpenLayers.SizeCreate an instance of OpenLayers.Size
Functions
toStringReturn the string representation of a size object
cloneCreate a clone of this size object
equalsDetermine where this size is equal to another
+ +

Properties

+ +

w

{Number} width

+ +

h

{Number} height

+ +

Constructor

+ +

OpenLayers.Size

Create an instance of OpenLayers.Size

Parameters

w{Number} width
h{Number} height
+ +

Functions

+ +

toString

toString:function()

Return the string representation of a size object

Returns

{String} The string representation of OpenLayers.Size object.  (ex.  <i>”w=55,h=66”</i>)

+ +

clone

clone:function()

Create a clone of this size object

Returns

{OpenLayers.Size} A new OpenLayers.Size object with the same w and h values

+ +

equals

equals:function(sz)

Determine where this size is equal to another

Parameters

sz{OpenLayers.Size}

Returns

{Boolean} The passed in size has the same h and w properties as this one.  Note that if sz passed in is null, returns false.

+ +
+ + + + + + + + + + +
toString:function()
Return the string representation of a size object
clone:function()
Create a clone of this size object
equals:function(sz)
Determine where this size is equal to another
Create an instance of OpenLayers.Size
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Console-js.html b/openlayers/doc/devdocs/files/OpenLayers/Console-js.html new file mode 100644 index 0000000..50382e2 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Console-js.html @@ -0,0 +1,75 @@ + + +OpenLayers.Console - OpenLayers + + + + + + + + + +

OpenLayers.Console

The OpenLayers.Console namespace is used for debugging and error logging.  If the Firebug Lite (../Firebug/firebug.js) is included before this script, calls to OpenLayers.Console methods will get redirected to window.console.  This makes use of the Firebug extension where available and allows for cross-browser debugging Firebug style.

Note

Note that behavior will differ with the Firebug extention and Firebug Lite.  Most notably, the Firebug Lite console does not currently allow for hyperlinks to code or for clicking on object to explore their properties.

Summary
OpenLayers.ConsoleThe OpenLayers.Console namespace is used for debugging and error logging.
Functions
logLog an object in the console.
debugWrites a message to the console, including a hyperlink to the line where it was called.
infoWrites a message to the console with the visual “info” icon and color coding and a hyperlink to the line where it was called.
warnWrites a message to the console with the visual “warning” icon and color coding and a hyperlink to the line where it was called.
errorWrites a message to the console with the visual “error” icon and color coding and a hyperlink to the line where it was called.
userErrorA single interface for showing error messages to the user.
assertTests that an expression is true.
dirPrints an interactive listing of all properties of the object.
dirxmlPrints the XML source tree of an HTML or XML element.
tracePrints an interactive stack trace of JavaScript execution at the point where it is called.
groupWrites a message to the console and opens a nested block to indent all future messages sent to the console.
groupEndCloses the most recently opened block created by a call to OpenLayers.Console.group
timeCreates a new timer under the given name.
timeEndStops a timer created by a call to OpenLayers.Console.time(name) and writes the time elapsed.
profileTurns on the JavaScript profiler.
profileEndTurns off the JavaScript profiler and prints its report.
countWrites the number of times that the line of code where count was called was executed.
+ +

Functions

+ +

log

log: function()

Log an object in the console.  The Firebug Lite console logs string representation of objects.  Given multiple arguments, they will be cast to strings and logged with a space delimiter.  If the first argument is a string with printf-like formatting, subsequent arguments will be used in string substitution.  Any additional arguments (beyond the number substituted in a format string) will be appended in a space- delimited line.

Parameters

object{Object}
+ +

debug

debug: function()

Writes a message to the console, including a hyperlink to the line where it was called.

May be called with multiple arguments as with OpenLayers.Console.log().

Parameters

object{Object}
+ +

info

info: function()

Writes a message to the console with the visual “info” icon and color coding and a hyperlink to the line where it was called.

May be called with multiple arguments as with OpenLayers.Console.log().

Parameters

object{Object}
+ +

warn

warn: function()

Writes a message to the console with the visual “warning” icon and color coding and a hyperlink to the line where it was called.

May be called with multiple arguments as with OpenLayers.Console.log().

Parameters

object{Object}
+ +

error

error: function()

Writes a message to the console with the visual “error” icon and color coding and a hyperlink to the line where it was called.

May be called with multiple arguments as with OpenLayers.Console.log().

Parameters

object{Object}
+ +

userError

userError: function(error)

A single interface for showing error messages to the user.  The default behavior is a Javascript alert, though this can be overridden by reassigning OpenLayers.Console.userError to a different function.

Expects a single error message

Parameters

object{Object}
+ +

assert

assert: function()

Tests that an expression is true.  If not, it will write a message to the console and throw an exception.

May be called with multiple arguments as with OpenLayers.Console.log().

Parameters

object{Object}
+ +

dir

dir: function()

Prints an interactive listing of all properties of the object.  This looks identical to the view that you would see in the DOM tab.

Parameters

object{Object}
+ +

dirxml

dirxml: function()

Prints the XML source tree of an HTML or XML element.  This looks identical to the view that you would see in the HTML tab.  You can click on any node to inspect it in the HTML tab.

Parameters

object{Object}
+ +

trace

trace: function()

Prints an interactive stack trace of JavaScript execution at the point where it is called.  The stack trace details the functions on the stack, as well as the values that were passed as arguments to each function.  You can click each function to take you to its source in the Script tab, and click each argument value to inspect it in the DOM or HTML tabs.

+ +

group

group: function()

Writes a message to the console and opens a nested block to indent all future messages sent to the console.  Call OpenLayers.Console.groupEnd() to close the block.

May be called with multiple arguments as with OpenLayers.Console.log().

Parameters

object{Object}
+ +

groupEnd

groupEnd: function()

Closes the most recently opened block created by a call to OpenLayers.Console.group

+ +

time

time: function()

Creates a new timer under the given name.  Call OpenLayers.Console.timeEnd(name) with the same name to stop the timer and print the time elapsed.

Parameters

name{String}
+ +

timeEnd

timeEnd: function()

Stops a timer created by a call to OpenLayers.Console.time(name) and writes the time elapsed.

Parameters

name{String}
+ +

profile

profile: function()

Turns on the JavaScript profiler.  The optional argument title would contain the text to be printed in the header of the profile report.

This function is not currently implemented in Firebug Lite.

Parameters

title{String} Optional title for the profiler
+ +

profileEnd

profileEnd: function()

Turns off the JavaScript profiler and prints its report.

This function is not currently implemented in Firebug Lite.

+ +

count

count: function()

Writes the number of times that the line of code where count was called was executed.  The optional argument title will print a message in addition to the number of the count.

This function is not currently implemented in Firebug Lite.

Parameters

title{String} Optional title to be printed with count
+ +
+ + + + + + + + + + +
log: function()
Log an object in the console.
debug: function()
Writes a message to the console, including a hyperlink to the line where it was called.
info: function()
Writes a message to the console with the visual “info” icon and color coding and a hyperlink to the line where it was called.
warn: function()
Writes a message to the console with the visual “warning” icon and color coding and a hyperlink to the line where it was called.
error: function()
Writes a message to the console with the visual “error” icon and color coding and a hyperlink to the line where it was called.
userError: function(error)
A single interface for showing error messages to the user.
assert: function()
Tests that an expression is true.
dir: function()
Prints an interactive listing of all properties of the object.
dirxml: function()
Prints the XML source tree of an HTML or XML element.
trace: function()
Prints an interactive stack trace of JavaScript execution at the point where it is called.
group: function()
Writes a message to the console and opens a nested block to indent all future messages sent to the console.
groupEnd: function()
Closes the most recently opened block created by a call to OpenLayers.Console.group
time: function()
Creates a new timer under the given name.
timeEnd: function()
Stops a timer created by a call to OpenLayers.Console.time(name) and writes the time elapsed.
profile: function()
Turns on the JavaScript profiler.
profileEnd: function()
Turns off the JavaScript profiler and prints its report.
count: function()
Writes the number of times that the line of code where count was called was executed.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control-js.html new file mode 100644 index 0000000..8f1a34c --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control-js.html @@ -0,0 +1,109 @@ + + +OpenLayers.Control - OpenLayers + + + + + + + + + +

OpenLayers.Control

Controls affect the display or behavior of the map.  They allow everything from panning and zooming to displaying a scale indicator.  Controls by default are added to the map they are contained within however it is possible to add a control to an external div by passing the div in the options parameter.

Example

The following example shows how to add many of the common controls to a map.

var map = new OpenLayers.Map('map', { controls: [] });
+
+map.addControl(new OpenLayers.Control.PanZoomBar());
+map.addControl(new OpenLayers.Control.MouseToolbar());
+map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
+map.addControl(new OpenLayers.Control.Permalink());
+map.addControl(new OpenLayers.Control.Permalink('permalink'));
+map.addControl(new OpenLayers.Control.MousePosition());
+map.addControl(new OpenLayers.Control.OverviewMap());
+map.addControl(new OpenLayers.Control.KeyboardDefaults());

The next code fragment is a quick example of how to intercept shift-mouse click to display the extent of the bounding box dragged out by the user.  Usually controls are not created in exactly this manner.  See the source for a more complete example:

var control = new OpenLayers.Control();
+OpenLayers.Util.extend(control, {
+    draw: function () {
+        // this Handler.Box will intercept the shift-mousedown
+        // before Control.MouseDefault gets to see it
+        this.box = new OpenLayers.Handler.Box( control,
+            {"done": this.notice},
+            {keyMask: OpenLayers.Handler.MOD_SHIFT});
+        this.box.activate();
+    },
+
+    notice: function (bounds) {
+        OpenLayers.Console.userError(bounds);
+    }
+});
+map.addControl(control);
Summary
OpenLayers.ControlControls affect the display or behavior of the map.
Properties
id{String}
map{OpenLayers.Map} this gets set in the addControl() function in OpenLayers.Map
div{DOMElement}
type{OpenLayers.Control.TYPES} Controls can have a ‘type’.
allowSelection{Boolean} By deafault, controls do not allow selection, because it may interfere with map dragging.
displayClass{string} This property is used for CSS related to the drawing of the Control.
title{string} This property is used for showing a tooltip over the Control.
active{Boolean} The control is active.
handler{OpenLayers.Handler} null
eventListeners{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
events{OpenLayers.Events} Events instance for triggering control specific events.
Constants
EVENT_TYPES{Array(String)} Supported application event types.
Constructor
OpenLayers.ControlCreate an OpenLayers Control.
Functions
destroyThe destroy method is used to perform any clean up before the control is dereferenced.
setMapSet the map property for the control.
drawThe draw method is called when the control is ready to be displayed on the page.
moveToSets the left and top style attributes to the passed in pixel coordinates.
activateExplicitly activates a control and it’s associated handler if one has been set.
deactivateDeactivates a control and it’s associated handler if any.
+ +

Properties

+ +

id

{String}

+ +

map

{OpenLayers.Map} this gets set in the addControl() function in OpenLayers.Map

+ +

div

{DOMElement}

+ +

type

{OpenLayers.Control.TYPES} Controls can have a ‘type’.  The type determines the type of interactions which are possible with them when they are placed into a toolbar.

+ +

allowSelection

{Boolean} By deafault, controls do not allow selection, because it may interfere with map dragging.  If this is true, OpenLayers will not prevent selection of the control.  Default is false.

+ +

displayClass

{string} This property is used for CSS related to the drawing of the Control.

+ +

title

{string} This property is used for showing a tooltip over the Control.

+ +

active

{Boolean} The control is active.

+ +

handler

+ +

eventListeners

{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.  Object structure must be a listeners object as shown in the example for the events.on method.

+ +

events

{OpenLayers.Events} Events instance for triggering control specific events.

+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

control.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

All event objects have at least the following properties

object{Object} A reference to control.events.object (a reference to the control).
element{DOMElement} A reference to control.events.element (which will be null unless documented otherwise).

Supported map event types

activateTriggered when activated.
deactivateTriggered when deactivated.
+ +

Constructor

+ +

OpenLayers.Control

Create an OpenLayers Control.  The options passed as a parameter directly extend the control.  For example passing the following:

var control = new OpenLayers.Control({div: myDiv});

Overrides the default div attribute value of null.

Parameters

options{Object}
+ +

Functions

+ +

destroy

destroy: function ()

The destroy method is used to perform any clean up before the control is dereferenced.  Typically this is where event listeners are removed to prevent memory leaks.

+ +

setMap

setMap: function(map)

Set the map property for the control.  This is done through an accessor so that subclasses can override this and take special action once they have their map variable set.

Parameters

map{OpenLayers.Map}
+ +

draw

draw: function (px)

The draw method is called when the control is ready to be displayed on the page.  If a div has not been created one is created.  Controls with a visual component will almost always want to override this method to customize the look of control.

Parameters

px{OpenLayers.Pixel} The top-left pixel position of the control or null.

Returns

{DOMElement} A reference to the DIV DOMElement containing the control

+ +

moveTo

moveTo: function (px)

Sets the left and top style attributes to the passed in pixel coordinates.

Parameters

px{OpenLayers.Pixel}
+ +

activate

activate: function ()

Explicitly activates a control and it’s associated handler if one has been set.  Controls can be deactivated by calling the deactivate() method.

Returns

{Boolean} True if the control was successfully activated or false if the control was already active.

+ +

deactivate

deactivate: function ()

Deactivates a control and it’s associated handler if any.  The exact effect of this depends on the control itself.

Returns

{Boolean} True if the control was effectively deactivated or false if the control was already inactive.

+ +
+ + + + + + + + + + +
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Base class to construct a higher-level handler for event sequences.
on: function(object)
Convenience method for registering listeners with a common scope.
destroy: function ()
The destroy method is used to perform any clean up before the control is dereferenced.
setMap: function(map)
Set the map property for the control.
draw: function (px)
The draw method is called when the control is ready to be displayed on the page.
moveTo: function (px)
Sets the left and top style attributes to the passed in pixel coordinates.
activate: function ()
Explicitly activates a control and it’s associated handler if one has been set.
deactivate: function ()
Deactivates a control and it’s associated handler if any.
This class represents a screen coordinate, in x and y coordinates
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/ArgParser-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/ArgParser-js.html new file mode 100644 index 0000000..e4a1a65 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/ArgParser-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Control.ArgParser - OpenLayers + + + + + + + + + +

OpenLayers.Control.ArgParser

The ArgParser control adds location bar querystring parsing functionality to an OpenLayers Map.  When added to a Map control, on a page load/refresh, the Map will automatically take the href string and parse it for lon, lat, zoom, and layers information.

Inherits from

Summary
OpenLayers.Control.ArgParserThe ArgParser control adds location bar querystring parsing functionality to an OpenLayers Map.
Properties
displayProjection{OpenLayers.Projection} Requires proj4js support.
Constructor
OpenLayers.Control.ArgParser
Functions
setMapSet the map property for the control.
setCenterAs soon as a baseLayer has been loaded, we center and zoom ...and remove the handler.
configureLayersAs soon as all the layers are loaded, cycle through them and hide or show them.
+ +

Properties

+ +

displayProjection

{OpenLayers.Projection} Requires proj4js support.  Projection used when reading the coordinates from the URL.  This will

reproject the map coordinates from the URL into the map’s projection.

If you are using this functionality, be aware that any permalink which is added to the map will determine the coordinate type which is read from the URL, which means you should not add permalinks with different displayProjections to the same map.

+ +

Constructor

+ +

OpenLayers.Control.ArgParser

Parameters

options{Object}
+ +

Functions

+ +

setMap

setMap: function(map)

Set the map property for the control.

Parameters

map{OpenLayers.Map}
+ +

setCenter

setCenter: function()

As soon as a baseLayer has been loaded, we center and zoom ...and remove the handler.

+ +

configureLayers

configureLayers: function()

As soon as all the layers are loaded, cycle through them and hide or show them.

+ +
+ + + + + + + + + + +
Class for coordinate transforms between coordinate systems.
setMap: function(map)
Set the map property for the control.
setCenter: function()
As soon as a baseLayer has been loaded, we center and zoom ...and remove the handler.
configureLayers: function()
As soon as all the layers are loaded, cycle through them and hide or show them.
Controls affect the display or behavior of the map.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/Attribution-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/Attribution-js.html new file mode 100644 index 0000000..f1997fb --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/Attribution-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Control.Attribution - OpenLayers + + + + + + + + + +

OpenLayers.Control.Attribution

The attribution control adds attribution from layers to the map display.  It uses ‘attribution’ property of each layer.

Inherits from

Summary
OpenLayers.Control.AttributionThe attribution control adds attribution from layers to the map display.
Properties
seperator{String} String used to seperate layers.
Constructor
OpenLayers.Control.Attribution
Functions
destroyDestroy control.
drawInitialize control.
updateAttributionUpdate attribution string.
+ +

Properties

+ +

seperator

{String} String used to seperate layers.

+ +

Constructor

+ +

OpenLayers.Control.Attribution

Parameters

options{Object} Options for control.
+ +

Functions

+ +

destroy

destroy: function()

Destroy control.

+ +

draw

draw: function()

Initialize control.

Returns

{DOMElement} A reference to the DIV DOMElement containing the control

+ +

updateAttribution

updateAttribution: function()

Update attribution string.

+ +
+ + + + + + + + + + +
destroy: function()
Destroy control.
draw: function()
Initialize control.
updateAttribution: function()
Update attribution string.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/Button-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/Button-js.html new file mode 100644 index 0000000..2d683cd --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/Button-js.html @@ -0,0 +1,50 @@ + + +OpenLayers.Control.Button - OpenLayers + + + + + + + + + +

OpenLayers.Control.Button

The Button control is a very simple push-button, for use with OpenLayers.Control.Panel.  When clicked, the function trigger() is executed.

Inherits from

Use

var button = new OpenLayers.Control.Button({
+    displayClass: "MyButton", trigger: myFunction
+});
+panel.addControls([button]);

Will create a button with CSS class MyButtonItemInactive, that will call the function MyFunction() when clicked.

Summary
OpenLayers.Control.ButtonThe Button control is a very simple push-button, for use with OpenLayers.Control.Panel.
Properties
type{Integer} OpenLayers.Control.TYPE_BUTTON.
Functions
triggerCalled by a control panel when the button is clicked.
+ +

Properties

+ +

type

{Integer} OpenLayers.Control.TYPE_BUTTON.

+ +

Functions

+ +

trigger

trigger: function()

Called by a control panel when the button is clicked.

+ +
+ + + + + + + + + + +
The Panel control is a container for other controls.
trigger: function()
Called by a control panel when the button is clicked.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/DragFeature-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/DragFeature-js.html new file mode 100644 index 0000000..e11aba8 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/DragFeature-js.html @@ -0,0 +1,87 @@ + + +OpenLayers.Control.DragFeature - OpenLayers + + + + + + + + + +

OpenLayers.Control.DragFeature

The DragFeature control moves a feature with a drag of the mouse.  Create a new control with the OpenLayers.Control.DragFeature constructor.

Inherits From

Summary
OpenLayers.Control.DragFeatureThe DragFeature control moves a feature with a drag of the mouse.
Properties
geometryTypes{Array(String)} To restrict dragging to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
onStart{Function} Define this function if you want to know when a drag starts.
onDrag{Function} Define this function if you want to know about each move of a feature.
onComplete{Function} Define this function if you want to know when a feature is done dragging.
layer{OpenLayers.Layer.Vector}
feature{OpenLayers.Feature.Vector}
dragCallbacks{Object} The functions that are sent to the drag handler for callback.
featureCallbacks{Object} The functions that are sent to the feature handler for callback.
lastPixel{OpenLayers.Pixel}
Constructor
OpenLayers.Control.DragFeatureCreate a new control to drag features.
Functions
destroyTake care of things that are not handled in superclass
activateActivate the control and the feature handler.
deactivateDeactivate the control and all handlers.
overFeatureCalled when the feature handler detects a mouse-over on a feature.
downFeatureCalled when the drag handler detects a mouse-down.
moveFeatureCalled when the drag handler detects a mouse-move.
upFeatureCalled when the drag handler detects a mouse-up.
doneDraggingCalled when the drag handler is done dragging.
outFeatureCalled when the feature handler detects a mouse-out on a feature.
cancelCalled when the drag handler detects a mouse-out (from the map viewport).
setMapSet the map property for the control and all handlers.
+ +

Properties

+ +

geometryTypes

{Array(String)} To restrict dragging to a limited set of geometry types, send a list of strings corresponding to the geometry class names.

+ +

onStart

{Function} Define this function if you want to know when a drag starts.  The function should expect to receive two arguments: the feature that is about to be dragged and the pixel location of the mouse.

Parameters

feature{OpenLayers.Feature.Vector} The feature that is about to be dragged.
pixel{OpenLayers.Pixel} The pixel location of the mouse.
+ +

onDrag

{Function} Define this function if you want to know about each move of a feature.  The function should expect to receive two arguments: the feature that is being dragged and the pixel location of the mouse.

Parameters

feature{OpenLayers.Feature.Vector} The feature that was dragged.
pixel{OpenLayers.Pixel} The pixel location of the mouse.
+ +

onComplete

{Function} Define this function if you want to know when a feature is done dragging.  The function should expect to receive two arguments: the feature that is being dragged and the pixel location of the mouse.

Parameters

feature{OpenLayers.Feature.Vector} The feature that was dragged.
pixel{OpenLayers.Pixel} The pixel location of the mouse.
+ + + + + +

dragCallbacks

{Object} The functions that are sent to the drag handler for callback.

+ +

featureCallbacks

{Object} The functions that are sent to the feature handler for callback.

+ +

lastPixel

+ +

Constructor

+ +

OpenLayers.Control.DragFeature

Create a new control to drag features.

Parameters

layer{OpenLayers.Layer.Vector} The layer containing features to be dragged.
options{Object} Optional object whose properties will be set on the control.
+ +

Functions

+ +

destroy

destroy: function()

Take care of things that are not handled in superclass

+ +

activate

activate: function()

Activate the control and the feature handler.

Returns

{Boolean} Successfully activated the control and feature handler.

+ +

deactivate

deactivate: function()

Deactivate the control and all handlers.

Returns

{Boolean} Successfully deactivated the control.

+ +

overFeature

overFeature: function(feature)

Called when the feature handler detects a mouse-over on a feature.  This activates the drag handler.

Parameters

feature{OpenLayers.Feature.Vector} The selected feature.
+ +

downFeature

downFeature: function(pixel)

Called when the drag handler detects a mouse-down.

Parameters

pixel{OpenLayers.Pixel} Location of the mouse event.
+ +

moveFeature

moveFeature: function(pixel)

Called when the drag handler detects a mouse-move.  Also calls the optional onDrag method.

Parameters

pixel{OpenLayers.Pixel} Location of the mouse event.
+ +

upFeature

upFeature: function(pixel)

Called when the drag handler detects a mouse-up.

Parameters

pixel{OpenLayers.Pixel} Location of the mouse event.
+ +

doneDragging

doneDragging: function(pixel)

Called when the drag handler is done dragging.

Parameters

pixel{OpenLayers.Pixel} The last event pixel location.  If this event came from a mouseout, this may not be in the map viewport.
+ +

outFeature

outFeature: function(feature)

Called when the feature handler detects a mouse-out on a feature.

Parameters

feature{OpenLayers.Feature.Vector} The feature that the mouse left.
+ +

cancel

cancel: function()

Called when the drag handler detects a mouse-out (from the map viewport).

+ +

setMap

setMap: function(map)

Set the map property for the control and all handlers.

Parameters

map{OpenLayers.Map} The control’s map.
+ +
+ + + + + + + + + + +
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Vector features use the OpenLayers.Geometry classes as geometry description.
This class represents a screen coordinate, in x and y coordinates
destroy: function()
Take care of things that are not handled in superclass
activate: function()
Activate the control and the feature handler.
deactivate: function()
Deactivate the control and all handlers.
overFeature: function(feature)
Called when the feature handler detects a mouse-over on a feature.
downFeature: function(pixel)
Called when the drag handler detects a mouse-down.
moveFeature: function(pixel)
Called when the drag handler detects a mouse-move.
upFeature: function(pixel)
Called when the drag handler detects a mouse-up.
doneDragging: function(pixel)
Called when the drag handler is done dragging.
outFeature: function(feature)
Called when the feature handler detects a mouse-out on a feature.
cancel: function()
Called when the drag handler detects a mouse-out (from the map viewport).
setMap: function(map)
Set the map property for the control and all handlers.
Create a new control to drag features.
Controls affect the display or behavior of the map.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/DragPan-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/DragPan-js.html new file mode 100644 index 0000000..a9bb410 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/DragPan-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Control.DragPan - OpenLayers + + + + + + + + + +

OpenLayers.Control.DragPan

The DragPan control pans the map with a drag of the mouse.

Inherits from

Summary
OpenLayers.Control.DragPanThe DragPan control pans the map with a drag of the mouse.
Properties
type{OpenLayers.Control.TYPES}
panned{Boolean} The map moved.
interval{Integer} The number of milliseconds that should ellapse before panning the map again.
Functions
drawCreates a Drag handler, using panMap and panMapDone as callbacks.
panMap
panMapDoneFinish the panning operation.
+ +

Properties

+ +

type

{OpenLayers.Control.TYPES}

+ +

panned

{Boolean} The map moved.

+ +

interval

{Integer} The number of milliseconds that should ellapse before panning the map again.  Set this to increase dragging performance.  Defaults to 25 milliseconds.

+ +

Functions

+ +

draw

draw: function()

Creates a Drag handler, using panMap and panMapDone as callbacks.

+ +

panMap

panMap: function(xy)

Parameters

xy{OpenLayers.Pixel} Pixel of the mouse position
+ +

panMapDone

panMapDone: function(xy)

Finish the panning operation.  Only call setCenter (through panMap) if the map has actually been moved.

Parameters

xy{OpenLayers.Pixel} Pixel of the mouse position
+ +
+ + + + + + + + + + +
draw: function()
Creates a Drag handler, using panMap and panMapDone as callbacks.
panMap: function(xy)
panMapDone: function(xy)
Finish the panning operation.
Controls affect the display or behavior of the map.
This class represents a screen coordinate, in x and y coordinates
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/DrawFeature-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/DrawFeature-js.html new file mode 100644 index 0000000..81d58c7 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/DrawFeature-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Control.DrawFeature - OpenLayers + + + + + + + + + +

OpenLayers.Control.DrawFeature

The DrawFeature control draws point, line or polygon features on a vector layer when active.

Inherits from

Summary
OpenLayers.Control.DrawFeatureThe DrawFeature control draws point, line or polygon features on a vector layer when active.
Properties
layer{OpenLayers.Layer.Vector}
callbacks{Object} The functions that are sent to the handler for callback
Constants
EVENT_TYPES
Properties
featureAdded{Function} Called after each feature is added
handlerOptions{Object} Used to set non-default properties on the control’s handler
Constructor
OpenLayers.Control.DrawFeature
Functions
drawFeature
+ +

Properties

+ + + +

callbacks

{Object} The functions that are sent to the handler for callback

+ +

Constants

+ +

EVENT_TYPES

Supported event types

featureaddedTriggered when a feature is added
+ +

Properties

+ +

featureAdded

{Function} Called after each feature is added

+ +

handlerOptions

{Object} Used to set non-default properties on the control’s handler

+ +

Constructor

+ +

OpenLayers.Control.DrawFeature

Parameters

layer{OpenLayers.Layer.Vector}
handler{OpenLayers.Handler}
options{Object}
+ +

Functions

+ +

drawFeature

drawFeature: function(geometry)
+ +
+ + + + + + + + + + +
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
drawFeature: function(geometry)
Controls affect the display or behavior of the map.
Base class to construct a higher-level handler for event sequences.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/EditingToolbar-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/EditingToolbar-js.html new file mode 100644 index 0000000..1a51a88 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/EditingToolbar-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Control.EditingToolbar - OpenLayers + + + + + + + + + +

OpenLayers.Control.EditingToolbar

The EditingToolbar is a panel of 4 controls to draw polygons, lines, points, or to navigate the map by panning.  By default it appears in the upper right corner of the map.

Inherits from

Summary
OpenLayers.Control.EditingToolbarThe EditingToolbar is a panel of 4 controls to draw polygons, lines, points, or to navigate the map by panning.
Constructor
OpenLayers.Control.EditingToolbarCreate an editing toolbar for a given layer.
Functions
drawcalls the default draw, and then activates mouse defaults.
+ +

Constructor

+ +

OpenLayers.Control.EditingToolbar

Create an editing toolbar for a given layer.

Parameters

layer{OpenLayers.Layer.Vector}
options{Object}
+ +

Functions

+ +

draw

draw: function()

calls the default draw, and then activates mouse defaults.

Returns

{DOMElement}

+ +
+ + + + + + + + + + +
draw: function()
calls the default draw, and then activates mouse defaults.
The Panel control is a container for other controls.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/GetFeature-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/GetFeature-js.html new file mode 100644 index 0000000..f548f1c --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/GetFeature-js.html @@ -0,0 +1,113 @@ + + +OpenLayers.Control.GetFeature - OpenLayers + + + + + + + + + +

OpenLayers.Control.GetFeature

Gets vector features for locations underneath the mouse cursor.  Can be configured to act on click, hover or dragged boxes.  Uses an OpenLayers.Protocol that supports spatial filters (BBOX) to retrieve features from a server and fires events that notify applications of the selected features.

Inherits from

Summary
OpenLayers.Control.GetFeatureGets vector features for locations underneath the mouse cursor.
Properties
protocol{OpenLayers.Protocol} Required.
multipleKey{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the multiple property to true.
toggleKey{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the toggle property to true.
modifiers{Object} The event modifiers to use, according to the current event being handled by this control’s handlers
multiple{Boolean} Allow selection of multiple geometries.
click{Boolean} Use a click handler for selecting/unselecting features.
clickout{Boolean} Unselect features when clicking outside any feature.
toggle{Boolean} Unselect a selected feature on click.
clickTolerance{Integer} Tolerance for the BBOX query in pixels.
hover{Boolean} Send feature requests on mouse moves.
box{Boolean} Allow feature selection by drawing a box.
maxFeatures{Integer} Maximum number of features to return from a query, if supported by the protocol.
features{Object} Hash of {OpenLayers.Feature.Vector}, keyed by fid, holding the currently selected features
handlerOptions{Object} Additional options for the handlers used by this control.
handlers{Object} Object with references to multiple OpenLayers.Handler instances.
hoverResponse{OpenLayers.Protocol.Response} The response object associated with the currently running hover request (if any).
Constants
EVENT_TYPES
Constructor
OpenLayers.Control.GetFeatureCreate a new control for fetching remote features.
Functions
activateActivates the control.
deactivateDeactivates the control.
unselectAllUnselect all selected features.
selectSingleCalled on click
selectBoxCallback from the handlers.box set up when box selection is on
cancelHoverCallback from the handlers.hover set up when hover selection is on
requestSends a GetFeature request to the WFS
selectBestFeatureSelects the feature from an array of features that is the best match for the click position.
setModifiersSets the multiple and toggle modifiers according to the current event
selectAdd feature to the hash of selected features and trigger the featureselected event.
hoverSelectSets/unsets the <hoverFeature>
unselectRemove feature from the hash of selected features and trigger the featureunselected event.
unselectAllUnselect all selected features.
setMapSet the map property for the control.
pixelToBoundsTakes a pixel as argument and creates bounds after adding the clickTolerance.
+ +

Properties

+ +

protocol

{OpenLayers.Protocol} Required.  The protocol used for fetching features.

+ +

multipleKey

{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the multiple property to true.  Default is null.

+ +

toggleKey

{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the toggle property to true.  Default is null.

+ +

modifiers

{Object} The event modifiers to use, according to the current event being handled by this control’s handlers

+ +

multiple

{Boolean} Allow selection of multiple geometries.  Default is false.

+ +

click

{Boolean} Use a click handler for selecting/unselecting features.  Default is true.

+ +

clickout

{Boolean} Unselect features when clicking outside any feature.  Applies only if click is true.  Default is true.

+ +

toggle

{Boolean} Unselect a selected feature on click.  Applies only if click is true.  Default is false.

+ +

clickTolerance

{Integer} Tolerance for the BBOX query in pixels.  This has the same effect as the tolerance parameter on WMS GetFeatureInfo requests.  Will be ignored for box selections.  Applies only if click is true.  Default is 5.

+ +

hover

{Boolean} Send feature requests on mouse moves.  Default is false.

+ +

box

{Boolean} Allow feature selection by drawing a box.

+ +

maxFeatures

{Integer} Maximum number of features to return from a query, if supported by the protocol.  Default is 10.

+ +

features

{Object} Hash of {OpenLayers.Feature.Vector}, keyed by fid, holding the currently selected features

+ +

handlerOptions

{Object} Additional options for the handlers used by this control.  This is a hash with the keys “click”, “box” and “hover”.

+ +

handlers

{Object} Object with references to multiple OpenLayers.Handler instances.

+ +

hoverResponse

{OpenLayers.Protocol.Response} The response object associated with the currently running hover request (if any).

+ +

Constants

+ +

EVENT_TYPES

Supported event types

beforefeatureselectedTriggered when click is true before a feature is selected.  The event object has a feature property with the feature about to select
featureselectedTriggered when click is true and a feature is selected.  The event object has a feature property with the selected feature
featureunselectedTriggered when click is true and a feature is unselected.  The event object has a feature property with the unselected feature
clickoutTriggered when when click is true and no feature was selected.
hoverfeatureTriggered when hover is true and the mouse has stopped over a feature
outfeatureTriggered when hover is true and the mouse moves moved away from a hover-selected feature
+ +

Constructor

+ +

OpenLayers.Control.GetFeature

Create a new control for fetching remote features.

Parameters

options{Object} A configuration object which at least has to contain a protocol property
+ +

Functions

+ +

activate

activate: function ()

Activates the control.

Returns

{Boolean} The control was effectively activated.

+ +

deactivate

deactivate: function ()

Deactivates the control.

Returns

{Boolean} The control was effectively deactivated.

+ +

unselectAll

unselectAll: function(options)

Unselect all selected features.  To unselect all except for a single feature, set the options.except property to the feature.

Parameters

options{Object} Optional configuration object.
+ +

selectSingle

selectSingle: function(evt)

Called on click

Parameters

evt{OpenLayers.Event}
+ +

selectBox

selectBox: function(position)

Callback from the handlers.box set up when box selection is on

Parameters

position{OpenLayers.Bounds}
+ +

cancelHover

cancelHover: function()

Callback from the handlers.hover set up when hover selection is on

+ +

request

request: function(bounds,
options)

Sends a GetFeature request to the WFS

Parameters

bounds{OpenLayers.Bounds} bounds for the request’s BBOX filter
options{Object} additional options for this method.

Supported options include

single{Boolean} A single feature should be returned.  Note that this will be ignored if the protocol does not return the geometries of the features.
hover{Boolean} Do the request for the hover handler.
+ +

selectBestFeature

selectBestFeature: function(features,
clickPosition,
options)

Selects the feature from an array of features that is the best match for the click position.

Parameters

features{Array(OpenLayers.Feature.Vector)}
clickPosition{OpenLayers.LonLat}
options{Object} additional options for this method

Supported options include

hover{Boolean} Do the selection for the hover handler.
+ +

setModifiers

setModifiers: function(evt)

Sets the multiple and toggle modifiers according to the current event

Parameters

evt {OpenLayers.Event}

+ +

select

select: function(features)

Add feature to the hash of selected features and trigger the featureselected event.

Parameters

features{OpenLayers.Feature.Vector} or an array of features
+ +

hoverSelect

hoverSelect: function(feature)

Sets/unsets the <hoverFeature>

Parameters

feature{OpenLayers.Feature.Vector} the feature to hover-select.  If none is provided, the current <hoverFeature> will be nulled and the outfeature event will be triggered.
+ +

unselect

unselect: function(feature)

Remove feature from the hash of selected features and trigger the featureunselected event.

Parameters

feature{OpenLayers.Feature.Vector}
+ +

unselectAll

unselectAll: function()

Unselect all selected features.

+ +

setMap

setMap: function(map)

Set the map property for the control.

Parameters

map{OpenLayers.Map}
+ +

pixelToBounds

pixelToBounds: function(pixel)

Takes a pixel as argument and creates bounds after adding the clickTolerance.

Parameters

pixel{OpenLayers.Pixel}
+ +
+ + + + + + + + + + +
Abstract vector layer protocol class.
{Boolean} Allow selection of multiple geometries.
{Boolean} Unselect a selected feature on click.
{OpenLayers.Protocol} Required.
Vector features use the OpenLayers.Geometry classes as geometry description.
Base class to construct a higher-level handler for event sequences.
Protocols return Response objects to their users.
activate: function ()
Activates the control.
deactivate: function ()
Deactivates the control.
unselectAll: function(options)
Unselect all selected features.
selectSingle: function(evt)
Called on click
selectBox: function(position)
Callback from the handlers.box set up when box selection is on
{Boolean} Allow feature selection by drawing a box.
cancelHover: function()
Callback from the handlers.hover set up when hover selection is on
{Boolean} Send feature requests on mouse moves.
request: function(bounds,
options)
Sends a GetFeature request to the WFS
selectBestFeature: function(features,
clickPosition,
options)
Selects the feature from an array of features that is the best match for the click position.
setModifiers: function(evt)
Sets the multiple and toggle modifiers according to the current event
select: function(features)
Add feature to the hash of selected features and trigger the featureselected event.
hoverSelect: function(feature)
Sets/unsets the hoverFeature
unselect: function(feature)
Remove feature from the hash of selected features and trigger the featureunselected event.
setMap: function(map)
Set the map property for the control.
pixelToBounds: function(pixel)
Takes a pixel as argument and creates bounds after adding the clickTolerance.
{Integer} Tolerance for the BBOX query in pixels.
Controls affect the display or behavior of the map.
{Boolean} Use a click handler for selecting/unselecting features.
Utility functions for event handling.
Instances of this class represent bounding boxes.
This class represents a longitude and latitude pair
Instances of OpenLayers.Map are interactive maps embedded in a web page.
This class represents a screen coordinate, in x and y coordinates
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/KeyboardDefaults-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/KeyboardDefaults-js.html new file mode 100644 index 0000000..1008d7d --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/KeyboardDefaults-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Control.KeyboardDefaults - OpenLayers + + + + + + + + + +

OpenLayers.Control.KeyboardDefaults

The KeyboardDefaults control adds panning and zooming functions, controlled with the keyboard.  By default arrow keys pan, +/- keys zoom & Page Up/Page Down/Home/End scroll by three quarters of a page.

This control has no visible appearance.

Inherits from

Summary
OpenLayers.Control.KeyboardDefaultsThe KeyboardDefaults control adds panning and zooming functions, controlled with the keyboard.
Properties
slideFactorPixels to slide by.
Constructor
OpenLayers.Control.KeyboardDefaults
Functions
destroy
drawCreate handler.
defaultKeyPressWhen handling the key event, we only use evt.keyCode.
+ +

Properties

+ +

slideFactor

Pixels to slide by.

+ +

Constructor

+ +

OpenLayers.Control.KeyboardDefaults

+ +

Functions

+ +

destroy

destroy: function()
+ +

draw

draw: function()

Create handler.

+ +

defaultKeyPress

defaultKeyPress: function (evt)

When handling the key event, we only use evt.keyCode.  This holds some drawbacks, though we get around them below.  When interpretting the keycodes below (including the comments associated with them), consult the URL below.  For instance, the Safari browser returns “IE keycodes”, and so is supported by any keycode labeled “IE”.

Very informative URL

http://unixpapa.com/js/key.html

Parameters

code{Integer}
+ +
+ + + + + + + + + + +
destroy: function()
draw: function()
Create handler.
defaultKeyPress: function (evt)
When handling the key event, we only use evt.keyCode.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/LayerSwitcher-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/LayerSwitcher-js.html new file mode 100644 index 0000000..abf1539 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/LayerSwitcher-js.html @@ -0,0 +1,99 @@ + + +OpenLayers.Control.LayerSwitcher - OpenLayers + + + + + + + + + +

OpenLayers.Control.LayerSwitcher

The LayerSwitcher control displays a table of contents for the map.  This allows the user interface to switch between BaseLasyers and to show or hide Overlays.  By default the switcher is shown minimized on the right edge of the map, the user may expand it by clicking on the handle.

To create the LayerSwitcher outside of the map, pass the Id of a html div as the first argument to the constructor.

Inherits from

Summary
OpenLayers.Control.LayerSwitcherThe LayerSwitcher control displays a table of contents for the map.
Properties
activeColor{String}
layerStates{Array(Object)} Basically a copy of the “state” of the map’s layers the last time the control was drawn.
layersDiv{DOMElement}
baseLayersDiv{DOMElement}
baseLayers{Array(OpenLayers.Layer)}
dataLbl{DOMElement}
dataLayersDiv{DOMElement}
dataLayers{Array(OpenLayers.Layer)}
minimizeDiv{DOMElement}
maximizeDiv{DOMElement}
ascending{Boolean}
Constructor
OpenLayers.Control.LayerSwitcher
Functions
destroy
setMap
draw{DOMElement} A reference to the DIV DOMElement containing the switcher tabs.
clearLayersArrayUser specifies either “base” or “data”.
checkRedrawChecks if the layer state has changed since the last redraw() call.
redrawGoes through and takes the current state of the Map and rebuilds the control to display that state.
onLayerClickNeed to update the map accordingly whenever user clicks in either of the layers.
updateMapCycles through the loaded data and base layer input arrays and makes the necessary calls to the Map object such that that the map’s visual state corresponds to what the user has selected in the control.
maximizeControlSet up the labels and divs for the control
minimizeControlHide all the contents of the control, shrink the size, add the maximize icon
showControlsHide/Show all LayerSwitcher controls depending on whether we are minimized or not
loadContentsSet up the labels and divs for the control
ignoreEvent
mouseDownRegister a local ‘mouseDown’ flag so that we’ll know whether or not to ignore a mouseUp event
mouseUpIf the ‘isMouseDown’ flag has been set, that means that the drag was started from within the LayerSwitcher control, and thus we can ignore the mouseup.
+ +

Properties

+ +

activeColor

{String}

+ +

layerStates

{Array(Object)} Basically a copy of the “state” of the map’s layers the last time the control was drawn.  We have this in order to avoid unnecessarily redrawing the control.

+ +

layersDiv

{DOMElement}

+ +

baseLayersDiv

{DOMElement}

+ +

baseLayers

+ +

dataLbl

{DOMElement}

+ +

dataLayersDiv

{DOMElement}

+ +

dataLayers

+ +

minimizeDiv

{DOMElement}

+ +

maximizeDiv

{DOMElement}

+ +

ascending

{Boolean}

+ +

Constructor

+ +

OpenLayers.Control.LayerSwitcher

Parameters

options{Object}
+ +

Functions

+ +

destroy

destroy: function()
+ +

setMap

setMap: function(map)

Properties

map{OpenLayers.Map}
+ +

draw

draw: function()

Returns

{DOMElement} A reference to the DIV DOMElement containing the switcher tabs.

+ +

clearLayersArray

clearLayersArray: function(layersType)

User specifies either “base” or “data”. we then clear all the corresponding listeners, the div, and reinitialize a new array.

Parameters

layersType{String}
+ +

checkRedraw

checkRedraw: function()

Checks if the layer state has changed since the last redraw() call.

Returns

{Boolean} The layer state changed since the last redraw() call.

+ +

redraw

redraw: function()

Goes through and takes the current state of the Map and rebuilds the control to display that state.  Groups base layers into a radio-button group and lists each data layer with a checkbox.

Returns

{DOMElement} A reference to the DIV DOMElement containing the control

+ +

onLayerClick

onLayerClick: function(e)

Need to update the map accordingly whenever user clicks in either of the layers.

Parameters

e{Event}
+ +

updateMap

updateMap: function()

Cycles through the loaded data and base layer input arrays and makes the necessary calls to the Map object such that that the map’s visual state corresponds to what the user has selected in the control.

+ +

maximizeControl

maximizeControl: function(e)

Set up the labels and divs for the control

Parameters

e{Event}
+ +

minimizeControl

minimizeControl: function(e)

Hide all the contents of the control, shrink the size, add the maximize icon

Parameters

e{Event}
+ +

showControls

showControls: function(minimize)

Hide/Show all LayerSwitcher controls depending on whether we are minimized or not

Parameters

minimize{Boolean}
+ +

loadContents

loadContents: function()

Set up the labels and divs for the control

+ +

ignoreEvent

ignoreEvent: function(evt)

Parameters

evt{Event}
+ +

mouseDown

mouseDown: function(evt)

Register a local ‘mouseDown’ flag so that we’ll know whether or not to ignore a mouseUp event

Parameters

evt{Event}
+ +

mouseUp

mouseUp: function(evt)

If the ‘isMouseDown’ flag has been set, that means that the drag was started from within the LayerSwitcher control, and thus we can ignore the mouseup.  Otherwise, let the Event continue.

Parameters

evt{Event}
+ +
+ + + + + + + + + + +
destroy: function()
setMap: function(map)
draw: function()
{DOMElement} A reference to the DIV DOMElement containing the switcher tabs.
clearLayersArray: function(layersType)
User specifies either “base” or “data”.
checkRedraw: function()
Checks if the layer state has changed since the last redraw() call.
redraw: function()
Goes through and takes the current state of the Map and rebuilds the control to display that state.
onLayerClick: function(e)
Need to update the map accordingly whenever user clicks in either of the layers.
updateMap: function()
Cycles through the loaded data and base layer input arrays and makes the necessary calls to the Map object such that that the map’s visual state corresponds to what the user has selected in the control.
maximizeControl: function(e)
Set up the labels and divs for the control
minimizeControl: function(e)
Hide all the contents of the control, shrink the size, add the maximize icon
showControls: function(minimize)
Hide/Show all LayerSwitcher controls depending on whether we are minimized or not
loadContents: function()
Set up the labels and divs for the control
ignoreEvent: function(evt)
mouseDown: function(evt)
Register a local ‘mouseDown’ flag so that we’ll know whether or not to ignore a mouseUp event
mouseUp: function(evt)
If the ‘isMouseDown’ flag has been set, that means that the drag was started from within the LayerSwitcher control, and thus we can ignore the mouseup.
Controls affect the display or behavior of the map.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/Measure-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/Measure-js.html new file mode 100644 index 0000000..25688c9 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/Measure-js.html @@ -0,0 +1,85 @@ + + +OpenLayers.Control.Measure - OpenLayers + + + + + + + + + +

OpenLayers.Control.Measure

Allows for drawing of features for measurements.

Inherits from

Summary
OpenLayers.Control.MeasureAllows for drawing of features for measurements.
Constants
EVENT_TYPES{Array(String)} Supported application event types.
Properties
handlerOptions{Object} Used to set non-default properties on the control’s handler
callbacks{Object} The functions that are sent to the handler for callback
displaySystem{String} Display system for output measurements.
geodesic{Boolean} Calculate geodesic metrics instead of planar metrics.
displaySystemUnits{Object} Units for various measurement systems.
delay{Number} Number of milliseconds between clicks before the event is considered a double-click.
delayedTrigger{Number} Timeout id of trigger for measurepartial.
persist{Boolean} Keep the temporary measurement sketch drawn after the measurement is complete.
Constructor
OpenLayers.Control.Measure
Functions
cancelStop the control from measuring.
updateHandler
measureCompleteCalled when the measurement sketch is done.
measurePartialCalled each time a new point is added to the measurement sketch.
measure
getBestAreaBased on the displaySystem returns the area of a geometry.
getArea
getBestLengthBased on the displaySystem returns the length of a geometry.
getLength
+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

control.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

Supported control event types (in addition to those from OpenLayers.Control)

measureTriggered when a measurement sketch is complete.  Listeners will receive an event with measure, units, order, and geometry properties.
measurepartialTriggered when a new point is added to the measurement sketch.  Listeners receive an event with measure, units, order, and geometry.
+ +

Properties

+ +

handlerOptions

{Object} Used to set non-default properties on the control’s handler

+ +

callbacks

{Object} The functions that are sent to the handler for callback

+ +

displaySystem

{String} Display system for output measurements.  Supported values are ‘english’, ‘metric’, and ‘geographic’.  Default is ‘metric’.

+ +

geodesic

{Boolean} Calculate geodesic metrics instead of planar metrics.  This requires that geometries can be transformed into Geographic/WGS84 (if that is not already the map projection).  Default is false.

+ +

displaySystemUnits

{Object} Units for various measurement systems.  Values are arrays of unit abbreviations (from OpenLayers.INCHES_PER_UNIT) in decreasing order of length.

+ +

delay

{Number} Number of milliseconds between clicks before the event is considered a double-click.  The “measurepartial” event will not be triggered if the sketch is completed within this time.  This is required for IE where creating a browser reflow (if a listener is modifying the DOM by displaying the measurement values) messes with the dblclick listener in the sketch handler.

+ +

delayedTrigger

{Number} Timeout id of trigger for measurepartial.

+ +

persist

{Boolean} Keep the temporary measurement sketch drawn after the measurement is complete.  The geometry will persist until a new measurement is started, the control is deactivated, or cancel is called.

+ +

Constructor

+ +

OpenLayers.Control.Measure

Parameters

handler{OpenLayers.Handler}
options{Object}
+ +

Functions

+ +

cancel

cancel: function()

Stop the control from measuring.  If persist is true, the temporary sketch will be erased.

+ +

updateHandler

updateHandler: function(handler,
options)

Parameters

handler{Function} One of the sketch handler constructors.
options{Object} Options for the handler.
+ +

measureComplete

measureComplete: function(geometry)

Called when the measurement sketch is done.

Parameters

geometry{OpenLayers.Geometry}
+ +

measurePartial

measurePartial: function(point,
geometry)

Called each time a new point is added to the measurement sketch.

Parameters

point{OpenLayers.Geometry.Point} The last point added.
geometry{OpenLayers.Geometry} The sketch geometry.
+ +

measure

measure: function(geometry,
eventType)

Parameters

geometry{OpenLayers.Geometry}
eventType{String}
+ +

getBestArea

getBestArea: function(geometry)

Based on the displaySystem returns the area of a geometry.

Parameters

geometry{OpenLayers.Geometry}

Returns

{Array([Float, String])} Returns a two item array containing the area and the units abbreviation.

+ +

getArea

getArea: function(geometry,
units)

Parameters

geometry{OpenLayers.Geometry}
units{String} Unit abbreviation

Returns

{Float} The geometry area in the given units.

+ +

getBestLength

getBestLength: function(geometry)

Based on the displaySystem returns the length of a geometry.

Parameters

geometry{OpenLayers.Geometry}

Returns

{Array([Float, String])} Returns a two item array containing the length and the units abbreviation.

+ +

getLength

getLength: function(geometry,
units)

Parameters

geometry{OpenLayers.Geometry}
units{String} Unit abbreviation

Returns

{Float} The geometry length in the given units.

+ +
+ + + + + + + + + + +
cancel: function()
Stop the control from measuring.
updateHandler: function(handler,
options)
measureComplete: function(geometry)
Called when the measurement sketch is done.
measurePartial: function(point,
geometry)
Called each time a new point is added to the measurement sketch.
measure: function(geometry,
eventType)
getBestArea: function(geometry)
Based on the displaySystem returns the area of a geometry.
{String} Display system for output measurements.
getArea: function(geometry,
units)
getBestLength: function(geometry)
Based on the displaySystem returns the length of a geometry.
getLength: function(geometry,
units)
Controls affect the display or behavior of the map.
Base class to construct a higher-level handler for event sequences.
{Boolean} Keep the temporary measurement sketch drawn after the measurement is complete.
A Geometry is a description of a geographic object.
Point geometry class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/ModifyFeature-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/ModifyFeature-js.html new file mode 100644 index 0000000..a38490c --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/ModifyFeature-js.html @@ -0,0 +1,128 @@ + + +OpenLayers.Control.ModifyFeature - OpenLayers + + + + + + + + + +

OpenLayers.Control.ModifyFeature

Control to modify features.  When activated, a click renders the vertices of a feature - these vertices can then be dragged.  By default, the delete key will delete the vertex under the mouse.  New features are added by dragging “virtual vertices” between vertices.  Create a new control with the OpenLayers.Control.ModifyFeature constructor.

Inherits From

Summary
OpenLayers.Control.ModifyFeatureControl to modify features.
Properties
geometryTypes{Array(String)} To restrict modification to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
clickout{Boolean} Unselect features when clicking outside any feature.
toggle{Boolean} Unselect a selected feature on click.
layer{OpenLayers.Layer.Vector}
feature{OpenLayers.Feature.Vector} Feature currently available for modification.
vertices{Array(OpenLayers.Feature.Vector)} Verticies currently available for dragging.
virtualVertices{Array(OpenLayers.Feature.Vector)} Virtual vertices in the middle of each edge.
selectControl{OpenLayers.Control.SelectFeature}
dragControl{OpenLayers.Control.DragFeature}
handlers{Object}
deleteCodes{Array(Integer)} Keycodes for deleting verticies.
virtualStyle{Object} A symbolizer to be used for virtual vertices.
mode{Integer} Bitfields specifying the modification mode.
modified{Boolean} The currently selected feature has been modified.
radiusHandle{OpenLayers.Feature.Vector} A handle for rotating/resizing a feature.
dragHandle{OpenLayers.Feature.Vector} A handle for dragging a feature.
onModificationStart{Function} Deprecated.
onModification{Function} Deprecated.
onModificationEnd{Function} Deprecated.
Constructor
OpenLayers.Control.ModifyFeatureCreate a new modify feature control.
Functions
destroyTake care of things that are not handled in superclass.
activateActivate the control.
deactivateDeactivate the control.
beforeSelectFeatureCalled before a feature is selected.
selectFeatureCalled when the select feature control selects a feature.
unselectFeatureCalled when the select feature control unselects a feature.
dragStartCalled by the drag feature control with before a feature is dragged.
dragVertexCalled by the drag feature control with each drag move of a vertex.
dragCompleteCalled by the drag feature control when the feature dragging is complete.
setFeatureStateCalled when the feature is modified.
resetVertices
handleKeypressCalled by the feature handler on keypress.
collectVerticesCollect the vertices from the modifiable feature’s geometry and push them on to the control’s vertices array.
collectDragHandleCollect the drag handle for the selected geometry.
collectRadiusHandleCollect the radius handle for the selected geometry.
setMapSet the map property for the control and all handlers.
Constants
RESHAPE{Integer} Constant used to make the control work in reshape mode
RESIZE{Integer} Constant used to make the control work in resize mode
ROTATE{Integer} Constant used to make the control work in rotate mode
DRAG{Integer} Constant used to make the control work in drag mode
+ +

Properties

+ +

geometryTypes

{Array(String)} To restrict modification to a limited set of geometry types, send a list of strings corresponding to the geometry class names.

+ +

clickout

{Boolean} Unselect features when clicking outside any feature.  Default is true.

+ +

toggle

{Boolean} Unselect a selected feature on click.  Default is true.

+ + + +

feature

{OpenLayers.Feature.Vector} Feature currently available for modification.

+ +

vertices

{Array(OpenLayers.Feature.Vector)} Verticies currently available for dragging.

+ +

virtualVertices

{Array(OpenLayers.Feature.Vector)} Virtual vertices in the middle of each edge.

+ + + + + +

handlers

{Object}

+ +

deleteCodes

{Array(Integer)} Keycodes for deleting verticies.  Set to null to disable vertex deltion by keypress.  If non-null, keypresses with codes in this array will delete vertices under the mouse.  Default is 46 and 68, the ‘delete’ and lowercase ‘d’ keys.

+ +

virtualStyle

{Object} A symbolizer to be used for virtual vertices.

+ +

mode

{Integer} Bitfields specifying the modification mode.  Defaults to OpenLayers.Control.ModifyFeature.RESHAPE.  To set the mode to a combination of options, use the | operator. or example, to allow the control to both resize and rotate features, use the following syntax

control.mode = OpenLayers.Control.ModifyFeature.RESIZE |
+               OpenLayers.Control.ModifyFeature.ROTATE;
+ +

modified

{Boolean} The currently selected feature has been modified.

+ +

radiusHandle

{OpenLayers.Feature.Vector} A handle for rotating/resizing a feature.

+ +

dragHandle

{OpenLayers.Feature.Vector} A handle for dragging a feature.

+ +

onModificationStart

{Function} Deprecated.  Register for “beforefeaturemodified” instead.  The “beforefeaturemodified” event is triggered on the layer before any modification begins.

Optional function to be called when a feature is selected to be modified.  The function should expect to be called with a feature.  This could be used for example to allow to lock the feature on server-side.

+ +

onModification

{Function} Deprecated.  Register for “featuremodified” instead.  The “featuremodified” event is triggered on the layer with each feature modification.

Optional function to be called when a feature has been modified.  The function should expect to be called with a feature.

+ +

onModificationEnd

{Function} Deprecated.  Register for “afterfeaturemodified” instead.  The “afterfeaturemodified” event is triggered on the layer after a feature has been modified.

Optional function to be called when a feature is finished being modified.  The function should expect to be called with a feature.

+ +

Constructor

+ +

OpenLayers.Control.ModifyFeature

Create a new modify feature control.

Parameters

layer{OpenLayers.Layer.Vector} Layer that contains features that will be modified.
options{Object} Optional object whose properties will be set on the control.
+ +

Functions

+ +

destroy

destroy: function()

Take care of things that are not handled in superclass.

+ +

activate

activate: function()

Activate the control.

Returns

{Boolean} Successfully activated the control.

+ +

deactivate

deactivate: function()

Deactivate the control.

Returns

{Boolean} Successfully deactivated the control.

+ +

beforeSelectFeature

beforeSelectFeature: function(feature)

Called before a feature is selected.

Parameters

feature{OpenLayers.Feature.Vector} The feature about to be selected.
+ +

selectFeature

selectFeature: function(feature)

Called when the select feature control selects a feature.

Parameters

feature{OpenLayers.Feature.Vector} the selected feature.
+ +

unselectFeature

unselectFeature: function(feature)

Called when the select feature control unselects a feature.

Parameters

feature{OpenLayers.Feature.Vector} The unselected feature.
+ +

dragStart

dragStart: function(feature,
pixel)

Called by the drag feature control with before a feature is dragged.  This method is used to differentiate between points and vertices of higher order geometries.  This respects the geometryTypes property and forces a select of points when the drag control is already active (and stops events from propagating to the select control).

Parameters

feature{OpenLayers.Feature.Vector} The point or vertex about to be dragged.
pixel{OpenLayers.Pixel} Pixel location of the mouse event.
+ +

dragVertex

dragVertex: function(vertex,
pixel)

Called by the drag feature control with each drag move of a vertex.

Parameters

vertex{OpenLayers.Feature.Vector} The vertex being dragged.
pixel{OpenLayers.Pixel} Pixel location of the mouse event.
+ +

dragComplete

dragComplete: function(vertex)

Called by the drag feature control when the feature dragging is complete.

Parameters

vertex{OpenLayers.Feature.Vector} The vertex being dragged.
+ +

setFeatureState

setFeatureState: function()

Called when the feature is modified.  If the current state is not INSERT or DELETE, the state is set to UPDATE.

+ +

resetVertices

resetVertices: function()
+ +

handleKeypress

handleKeypress: function(evt)

Called by the feature handler on keypress.  This is used to delete vertices.  If the <deleteCode> property is set, vertices will be deleted when a feature is selected for modification and the mouse is over a vertex.

Parameters

{Integer} Key code corresponding to the keypress event.

+ +

collectVertices

collectVertices: function()

Collect the vertices from the modifiable feature’s geometry and push them on to the control’s vertices array.

+ +

collectDragHandle

collectDragHandle: function()

Collect the drag handle for the selected geometry.

+ +

collectRadiusHandle

collectRadiusHandle: function()

Collect the radius handle for the selected geometry.

+ +

setMap

setMap: function(map)

Set the map property for the control and all handlers.

Parameters

map{OpenLayers.Map} The control’s map.
+ +

Constants

+ +

RESHAPE

{Integer} Constant used to make the control work in reshape mode

+ +

RESIZE

{Integer} Constant used to make the control work in resize mode

+ +

ROTATE

{Integer} Constant used to make the control work in rotate mode

+ +

DRAG

{Integer} Constant used to make the control work in drag mode

+ +
+ + + + + + + + + + +
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Vector features use the OpenLayers.Geometry classes as geometry description.
The SelectFeature control selects vector features from a given layer on click or hover.
The DragFeature control moves a feature with a drag of the mouse.
destroy: function()
Take care of things that are not handled in superclass.
activate: function()
Activate the control.
deactivate: function()
Deactivate the control.
beforeSelectFeature: function(feature)
Called before a feature is selected.
selectFeature: function(feature)
Called when the select feature control selects a feature.
unselectFeature: function(feature)
Called when the select feature control unselects a feature.
dragStart: function(feature,
pixel)
Called by the drag feature control with before a feature is dragged.
dragVertex: function(vertex,
pixel)
Called by the drag feature control with each drag move of a vertex.
dragComplete: function(vertex)
Called by the drag feature control when the feature dragging is complete.
setFeatureState: function()
Called when the feature is modified.
resetVertices: function()
handleKeypress: function(evt)
Called by the feature handler on keypress.
collectVertices: function()
Collect the vertices from the modifiable feature’s geometry and push them on to the control’s vertices array.
collectDragHandle: function()
Collect the drag handle for the selected geometry.
collectRadiusHandle: function()
Collect the radius handle for the selected geometry.
setMap: function(map)
Set the map property for the control and all handlers.
Create a new modify feature control.
Controls affect the display or behavior of the map.
{Array(String)} To restrict modification to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/MouseDefaults-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/MouseDefaults-js.html new file mode 100644 index 0000000..98be4fd --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/MouseDefaults-js.html @@ -0,0 +1,79 @@ + + +OpenLayers.Control.MouseDefaults - OpenLayers + + + + + + + + + +

OpenLayers.Control.MouseDefaults

This class is DEPRECATED in 2.4 and will be removed by 3.0.  If you need this functionality, use OpenLayers.Control.Navigation instead!!!

This class is DEPRECATED in 2.4 and will be removed by 3.0.  If you need this functionality, use Control.Navigation instead!!!

Inherits from

Summary
OpenLayers.Control.MouseDefaultsThis class is DEPRECATED in 2.4 and will be removed by 3.0.
Properties
performedDrag{Boolean}
wheelObserver{Function}
Constructor
OpenLayers.Control.MouseDefaults
Functions
destroy
draw
registerWheelEvents
defaultClick
defaultDblClick
defaultMouseDown
defaultMouseMove
defaultMouseUp
defaultMouseOut
defaultWheelUpUser spun scroll wheel up
defaultWheelDownUser spun scroll wheel down
zoomBoxEndZoombox function.
removeZoomBoxRemove the zoombox from the screen and nullify our reference to it.
onWheelEventCatch the wheel event and handle it xbrowserly
+ +

Properties

+ +

performedDrag

{Boolean}

+ +

wheelObserver

{Function}

+ +

Constructor

+ +

OpenLayers.Control.MouseDefaults

+ +

Functions

+ +

destroy

destroy: function()
+ +

draw

draw: function()
+ +

registerWheelEvents

registerWheelEvents: function()
+ +

defaultClick

defaultClick: function (evt)

Parameters

evt{Event}

Returns

{Boolean}

+ +

defaultDblClick

defaultDblClick: function (evt)

Parameters

evt{Event}
+ +

defaultMouseDown

defaultMouseDown: function (evt)

Parameters

evt{Event}
+ +

defaultMouseMove

defaultMouseMove: function (evt)

Parameters

evt{Event}
+ +

defaultMouseUp

defaultMouseUp: function (evt)

Parameters

evt{OpenLayers.Event}
+ +

defaultMouseOut

defaultMouseOut: function (evt)

Parameters

evt{Event}
+ +

defaultWheelUp

defaultWheelUp: function(evt)

User spun scroll wheel up

+ +

defaultWheelDown

defaultWheelDown: function(evt)

User spun scroll wheel down

+ +

zoomBoxEnd

zoomBoxEnd: function(evt)

Zoombox function.

+ +

removeZoomBox

removeZoomBox: function()

Remove the zoombox from the screen and nullify our reference to it.

+ +

onWheelEvent

onWheelEvent: function(e)

Catch the wheel event and handle it xbrowserly

Parameters

e{Event}
+ +
+ + + + + + + + + + +
destroy: function()
draw: function()
registerWheelEvents: function()
defaultClick: function (evt)
defaultDblClick: function (evt)
defaultMouseDown: function (evt)
defaultMouseMove: function (evt)
defaultMouseUp: function (evt)
defaultMouseOut: function (evt)
defaultWheelUp: function(evt)
User spun scroll wheel up
defaultWheelDown: function(evt)
User spun scroll wheel down
zoomBoxEnd: function(evt)
Zoombox function.
removeZoomBox: function()
Remove the zoombox from the screen and nullify our reference to it.
onWheelEvent: function(e)
Catch the wheel event and handle it xbrowserly
The navigation control handles map browsing with mouse events (dragging, double-clicking, and scrolling the wheel).
Controls affect the display or behavior of the map.
Utility functions for event handling.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/MousePosition-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/MousePosition-js.html new file mode 100644 index 0000000..3642550 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/MousePosition-js.html @@ -0,0 +1,73 @@ + + +OpenLayers.Control.MousePosition - OpenLayers + + + + + + + + + +

OpenLayers.Control.MousePosition

The MousePosition control displays geographic coordinates of the mouse pointer, as it is moved about the map.

Inherits from

Summary
OpenLayers.Control.MousePositionThe MousePosition control displays geographic coordinates of the mouse pointer, as it is moved about the map.
Properties
element{DOMElement}
prefix{String}
separator{String}
suffix{String}
numDigits{Integer}
granularity{Integer}
lastXy{OpenLayers.Pixel}
displayProjection{OpenLayers.Projection} The projection in which the mouse position is displayed
Constructor
OpenLayers.Control.MousePosition
Functions
destroy
draw{DOMElement}
redraw
formatOutputOverride to provide custom display output
setMap
+ +

Properties

+ +

element

{DOMElement}

+ +

prefix

{String}

+ +

separator

{String}

+ +

suffix

{String}

+ +

numDigits

{Integer}

+ +

granularity

{Integer}

+ + + +

displayProjection

{OpenLayers.Projection} The projection in which the mouse position is displayed

+ +

Constructor

+ +

OpenLayers.Control.MousePosition

Parameters

options{Object} Options for control.
+ +

Functions

+ +

destroy

destroy: function()
+ +

draw

draw: function()

{DOMElement}

+ +

redraw

redraw: function(evt)
+ +

formatOutput

formatOutput: function(lonLat)

Override to provide custom display output

Parameters

lonLat{OpenLayers.LonLat} Location to display
+ +

setMap

setMap: function()
+ +
+ + + + + + + + + + +
This class represents a screen coordinate, in x and y coordinates
Class for coordinate transforms between coordinate systems.
destroy: function()
draw: function()
{DOMElement}
redraw: function(evt)
formatOutput: function(lonLat)
Override to provide custom display output
setMap: function()
Controls affect the display or behavior of the map.
This class represents a longitude and latitude pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/MouseToolbar-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/MouseToolbar-js.html new file mode 100644 index 0000000..c3a6c04 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/MouseToolbar-js.html @@ -0,0 +1,81 @@ + + +OpenLayers.Control.MouseToolbar - OpenLayers + + + + + + + + + +

OpenLayers.Control.MouseToolbar

This class is DEPRECATED in 2.4 and will be removed by 3.0.  If you need this functionality, use OpenLayers.Control.NavToolbar instead!!!

+ +

Properties

+ +

mode

+ +

buttons

+ +

direction

{String} ‘vertical’ or ‘horizontal’

+ +

buttonClicked

{String}

+ +

Constructor

+ +

OpenLayers.Control.MouseToolbar

Parameters

position{OpenLayers.Pixel}
direction{String}
+ +

Functions

+ +

destroy

destroy: function()
+ +

draw

draw: function()
+ +

_addButton

_addButton:function(id,
img,
activeImg,
xy,
sz,
title)
+ +

buttonDown

buttonDown: function(evt)

Parameters

evt{Event}
+ +

buttonUp

buttonUp: function(evt)

Parameters

evt{Event}
+ +

defaultDblClick

defaultDblClick: function (evt)

Parameters

evt{Event}
+ +

defaultMouseDown

defaultMouseDown: function (evt)

Parameters

evt{Event}
+ +

switchModeTo

switchModeTo: function(mode)

Parameters

mode{String}
+ +

leaveMode

leaveMode: function()
+ +

defaultMouseMove

defaultMouseMove: function (evt)

Parameters

evt{Event}
+ +

defaultMouseUp

defaultMouseUp: function (evt)

Parameters

evt{Event}
+ +

defaultMouseOut

defaultMouseOut: function (evt)

Parameters

evt{Event}
+ +

defaultClick

defaultClick: function (evt)

Parameters

evt{Event}
+ +
+ + + + + + + + + + +
destroy: function()
draw: function()
_addButton:function(id,
img,
activeImg,
xy,
sz,
title)
buttonDown: function(evt)
buttonUp: function(evt)
defaultDblClick: function (evt)
defaultMouseDown: function (evt)
switchModeTo: function(mode)
leaveMode: function()
defaultMouseMove: function (evt)
defaultMouseUp: function (evt)
defaultMouseOut: function (evt)
defaultClick: function (evt)
This Toolbar is an alternative to the Navigation control that displays the state of the control, and provides a UI for changing state to use the zoomBox via a Panel control.
This class represents a screen coordinate, in x and y coordinates
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/NavToolbar-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/NavToolbar-js.html new file mode 100644 index 0000000..cce4fac --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/NavToolbar-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Control.NavToolbar - OpenLayers + + + + + + + + + +

OpenLayers.Control.NavToolbar

This Toolbar is an alternative to the Navigation control that displays the state of the control, and provides a UI for changing state to use the zoomBox via a Panel control.

If you wish to change the properties of the Navigation control used in the NavToolbar, see: http://trac.openlayers.org/wiki/Toolbars#SubclassingNavToolbar

Inherits from

Summary
OpenLayers.Control.NavToolbarThis Toolbar is an alternative to the Navigation control that displays the state of the control, and provides a UI for changing state to use the zoomBox via a Panel control.
Constructor
OpenLayers.Control.NavToolbarAdd our two mousedefaults controls.
Functions
drawcalls the default draw, and then activates mouse defaults.
+ +

Constructor

+ +

OpenLayers.Control.NavToolbar

Add our two mousedefaults controls.

Parameters

options{Object} An optional object whose properties will be used to extend the control.
+ +

Functions

+ +

draw

draw: function()

calls the default draw, and then activates mouse defaults.

+ +
+ + + + + + + + + + +
draw: function()
calls the default draw, and then activates mouse defaults.
The Panel control is a container for other controls.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/Navigation-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/Navigation-js.html new file mode 100644 index 0000000..32443f6 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/Navigation-js.html @@ -0,0 +1,79 @@ + + +OpenLayers.Control.Navigation - OpenLayers + + + + + + + + + +

OpenLayers.Control.Navigation

The navigation control handles map browsing with mouse events (dragging, double-clicking, and scrolling the wheel).  Create a new navigation control with the OpenLayers.Control.Navigation control.

Note that this control is added to the map by default (if no controls array is sent in the options object to the OpenLayers.Map constructor).

Inherits

Summary
OpenLayers.Control.NavigationThe navigation control handles map browsing with mouse events (dragging, double-clicking, and scrolling the wheel).
Properties
dragPan{OpenLayers.Control.DragPan}
zoomBox{OpenLayers.Control.ZoomBox}
zoomWheelEnabled{Boolean} Whether the mousewheel should zoom the map
handleRightClicks{Boolean} Whether or not to handle right clicks.
zoomBoxKeyMask{Integer} OpenLayers.Handler key code of the key, which has to be pressed, while drawing the zoom box with the mouse on the screen.
Constructor
OpenLayers.Control.NavigationCreate a new navigation control
Functions
destroyThe destroy method is used to perform any clean up before the control is dereferenced.
activate
deactivate
draw
defaultDblClick
defaultDblRightClick
wheelChange
wheelUpUser spun scroll wheel up
wheelDownUser spun scroll wheel down
disableZoomWheel
enableZoomWheel
+ +

Properties

+ + + + + +

zoomWheelEnabled

{Boolean} Whether the mousewheel should zoom the map

+ +

handleRightClicks

{Boolean} Whether or not to handle right clicks.  Default is false.

+ +

zoomBoxKeyMask

{Integer} OpenLayers.Handler key code of the key, which has to be pressed, while drawing the zoom box with the mouse on the screen.  You should probably set handleRightClicks to true if you use this with MOD_CTRL, to disable the context menu for machines which use CTRL-Click as a right click.  Default: <OpenLayers.Handler.MOD_SHIFT

+ +

Constructor

+ +

OpenLayers.Control.Navigation

Create a new navigation control

Parameters

options{Object} An optional object whose properties will be set on the control
+ +

Functions

+ +

destroy

destroy: function()

The destroy method is used to perform any clean up before the control is dereferenced.  Typically this is where event listeners are removed to prevent memory leaks.

+ +

activate

activate: function()
+ +

deactivate

deactivate: function()
+ +

draw

draw: function()
+ +

defaultDblClick

defaultDblClick: function (evt)

Parameters

evt{Event}
+ +

defaultDblRightClick

defaultDblRightClick: function (evt)

Parameters

evt{Event}
+ +

wheelChange

wheelChange: function(evt,
deltaZ)

Parameters

evt{Event}
deltaZ{Integer}
+ +

wheelUp

wheelUp: function(evt)

User spun scroll wheel up

Parameters

evt{Event}
+ +

wheelDown

wheelDown: function(evt)

User spun scroll wheel down

Parameters

evt{Event}
+ +

disableZoomWheel

disableZoomWheel : function()
+ +

enableZoomWheel

enableZoomWheel : function()
+ +
+ + + + + + + + + + +
The DragPan control pans the map with a drag of the mouse.
The ZoomBox control enables zooming directly to a given extent, by drawing a box on the map.
Base class to construct a higher-level handler for event sequences.
destroy: function()
The destroy method is used to perform any clean up before the control is dereferenced.
activate: function()
deactivate: function()
draw: function()
defaultDblClick: function (evt)
defaultDblRightClick: function (evt)
wheelChange: function(evt,
deltaZ)
wheelUp: function(evt)
User spun scroll wheel up
wheelDown: function(evt)
User spun scroll wheel down
disableZoomWheel : function()
enableZoomWheel : function()
Create a new navigation control
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/NavigationHistory-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/NavigationHistory-js.html new file mode 100644 index 0000000..bab6ce1 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/NavigationHistory-js.html @@ -0,0 +1,99 @@ + + +OpenLayers.Control.NavigationHistory - OpenLayers + + + + + + + + + +

OpenLayers.Control.NavigationHistory

A navigation history control.  This is a meta-control, that creates two dependent controls: previous and next.  Call the trigger method on the previous and next controls to restore previous and next history states.  The previous and next controls will become active when there are available states to restore and will become deactive when there are no states to restore.

Inherits from

Summary
OpenLayers.Control.NavigationHistoryA navigation history control.
Properties
type{String} Note that this control is not intended to be added directly to a control panel.
previous{OpenLayers.Control} A button type control whose trigger method restores the previous state managed by this control.
previousOptions{Object} Set this property on the options argument of the constructor to set optional properties on the previous control.
next{OpenLayers.Control} A button type control whose trigger method restores the next state managed by this control.
nextOptions{Object} Set this property on the options argument of the constructor to set optional properties on the next control.
limit{Integer} Optional limit on the number of history items to retain.
activateOnDraw{Boolean} Activate the control when it is first added to the map.
clearOnDeactivate{Boolean} Clear the history when the control is deactivated.
registry{Object} An object with keys corresponding to event types.
nextStack{Array} Array of items in the history.
previousStack{Array} List of items in the history.
listeners{Object} An object containing properties corresponding to event types.
restoring{Boolean} Currently restoring a history state.
Constructor
OpenLayers.Control.NavigationHistory
Functions
onPreviousChangeCalled when the previous history stack changes.
onNextChangeCalled when the next history stack changes.
destroyDestroy the control.
setMapSet the map property for the control and previous and next child controls.
drawCalled when the control is added to the map.
previousTriggerRestore the previous state.
nextTriggerRestore the next state.
clearClear history.
restoreUpdate the state with the given object.
setListenersSets functions to be registered in the listeners object.
activateActivate the control.
initStackCalled after the control is activated if the previous history stack is empty.
deactivateDeactivate the control.
+ +

Properties

+ +

type

{String} Note that this control is not intended to be added directly to a control panel.  Instead, add the sub-controls previous and next.  These sub-controls are button type controls that activate and deactivate themselves.  If this parent control is added to a panel, it will act as a toggle.

+ +

previous

{OpenLayers.Control} A button type control whose trigger method restores the previous state managed by this control.

+ +

previousOptions

{Object} Set this property on the options argument of the constructor to set optional properties on the previous control.

+ +

next

{OpenLayers.Control} A button type control whose trigger method restores the next state managed by this control.

+ +

nextOptions

{Object} Set this property on the options argument of the constructor to set optional properties on the next control.

+ +

limit

{Integer} Optional limit on the number of history items to retain.  If null, there is no limit.  Default is 50.

+ +

activateOnDraw

{Boolean} Activate the control when it is first added to the map.  Default is true.

+ +

clearOnDeactivate

{Boolean} Clear the history when the control is deactivated.  Default is false.

+ +

registry

{Object} An object with keys corresponding to event types.  Values are functions that return an object representing the current state.

+ +

nextStack

{Array} Array of items in the history.

+ +

previousStack

{Array} List of items in the history.  First item represents the current state.

+ +

listeners

{Object} An object containing properties corresponding to event types.  This object is used to configure the control and is modified on construction.

+ +

restoring

{Boolean} Currently restoring a history state.  This is set to true before calling restore and set to false after restore returns.

+ +

Constructor

+ +

OpenLayers.Control.NavigationHistory

Parameters

options{Object} An optional object whose properties will be used to extend the control.
+ +

Functions

+ +

onPreviousChange

onPreviousChange: function(state,
length)

Called when the previous history stack changes.

Parameters

state{Object} An object representing the state to be restored if previous is triggered again or null if no previous states remain.
length{Integer} The number of remaining previous states that can be restored.
+ +

onNextChange

onNextChange: function(state,
length)

Called when the next history stack changes.

Parameters

state{Object} An object representing the state to be restored if next is triggered again or null if no next states remain.
length{Integer} The number of remaining next states that can be restored.
+ +

destroy

destroy: function()

Destroy the control.

+ +

setMap

setMap: function(map)

Set the map property for the control and previous and next child controls.

Parameters

map{OpenLayers.Map}
+ +

draw

draw: function()

Called when the control is added to the map.

+ +

previousTrigger

previousTrigger: function()

Restore the previous state.  If no items are in the previous history stack, this has no effect.

Returns

{Object} Item representing state that was restored.  Undefined if no items are in the previous history stack.

+ +

nextTrigger

nextTrigger: function()

Restore the next state.  If no items are in the next history stack, this has no effect.  The next history stack is populated as states are restored from the previous history stack.

Returns

{Object} Item representing state that was restored.  Undefined if no items are in the next history stack.

+ +

clear

clear: function()

Clear history.

+ +

restore

restore: function(state)

Update the state with the given object.

Parameters

state{Object} An object representing the state to restore.
+ +

setListeners

setListeners: function()

Sets functions to be registered in the listeners object.

+ +

activate

activate: function()

Activate the control.  This registers any listeners.

Returns

{Boolean} Control successfully activated.

+ +

initStack

initStack: function()

Called after the control is activated if the previous history stack is empty.

+ +

deactivate

deactivate: function()

Deactivate the control.  This unregisters any listeners.

Returns

{Boolean} Control successfully deactivated.

+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
{OpenLayers.Control} A button type control whose trigger method restores the previous state managed by this control.
{OpenLayers.Control} A button type control whose trigger method restores the next state managed by this control.
onPreviousChange: function(state,
length)
Called when the previous history stack changes.
onNextChange: function(state,
length)
Called when the next history stack changes.
destroy: function()
Destroy the control.
setMap: function(map)
Set the map property for the control and previous and next child controls.
draw: function()
Called when the control is added to the map.
previousTrigger: function()
Restore the previous state.
nextTrigger: function()
Restore the next state.
clear: function()
Clear history.
restore: function(state)
Update the state with the given object.
setListeners: function()
Sets functions to be registered in the listeners object.
activate: function()
Activate the control.
initStack: function()
Called after the control is activated if the previous history stack is empty.
deactivate: function()
Deactivate the control.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/OverviewMap-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/OverviewMap-js.html new file mode 100644 index 0000000..16b5342 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/OverviewMap-js.html @@ -0,0 +1,113 @@ + + +OpenLayers.Control.OverviewMap - OpenLayers + + + + + + + + + +

OpenLayers.Control.OverviewMap

The OverMap control creates a small overview map, useful to display the extent of a zoomed map and your main map and provide additional navigation options to the User.  By default the overview map is drawn in the lower right corner of the main map.  Create a new overview map with the OpenLayers.Control.OverviewMap constructor.

Inerits from

Summary
OpenLayers.Control.OverviewMapThe OverMap control creates a small overview map, useful to display the extent of a zoomed map and your main map and provide additional navigation options to the User.
Properties
element{DOMElement} The DOM element that contains the overview map
ovmap{OpenLayers.Map} A reference to the overview map itself.
size{OpenLayers.Size} The overvew map size in pixels.
layers{Array(OpenLayers.Layer)} Ordered list of layers in the overview map.
minRectSize{Integer} The minimum width or height (in pixels) of the extent rectangle on the overview map.
minRectDisplayClass{String} Replacement style class name for the extent rectangle when minRectSize is reached.
minRatio{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther out on the overview map.
maxRatio{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther in on the overview map.
mapOptions{Object} An object containing any non-default properties to be sent to the overview map’s map constructor.
autoPan{Boolean} Always pan the overview map, so the extent marker remains in the center.
handlers{Object}
resolutionFactor{Object}
Constructor
OpenLayers.Control.OverviewMapCreate a new overview map
Functions
destroyDeconstruct the control
drawRender the control in the browser.
baseLayerDraw
rectDragHandle extent rectangle drag
mapDivClickHandle browser events
maximizeControlUnhide the control.
minimizeControlHide all the contents of the control, shrink the size, add the maximize icon
showToggleHide/Show the toggle depending on whether the control is minimized
updateUpdate the overview map after layers move.
isSuitableOverviewDetermines if the overview map is suitable given the extent and resolution of the main map.
createMapConstruct the map that this control contains
updateRectToMapUpdates the extent rectangle position and size to match the map extent
updateMapToRectUpdates the map extent to match the extent rectangle position and size
setRectPxBoundsSet extent rectangle pixel bounds.
getRectBoundsFromMapBoundsGet the rect bounds from the map bounds.
getMapBoundsFromRectBoundsGet the map bounds from the rect bounds.
getLonLatFromOverviewPxGet a map location from a pixel location
getOverviewPxFromLonLatGet a pixel location from a map location
+ +

Properties

+ +

element

{DOMElement} The DOM element that contains the overview map

+ +

ovmap

{OpenLayers.Map} A reference to the overview map itself.

+ +

size

{OpenLayers.Size} The overvew map size in pixels.  Note that this is the size of the map itself - the element that contains the map (default class name olControlOverviewMapElement) may have padding or other style attributes added via CSS.

+ +

layers

{Array(OpenLayers.Layer)} Ordered list of layers in the overview map.  If none are sent at construction, the base layer for the main map is used.

+ +

minRectSize

{Integer} The minimum width or height (in pixels) of the extent rectangle on the overview map.  When the extent rectangle reaches this size, it will be replaced depending on the value of the minRectDisplayClass property.  Default is 15 pixels.

+ +

minRectDisplayClass

{String} Replacement style class name for the extent rectangle when minRectSize is reached.  This string will be suffixed on to the displayClass.  Default is “RectReplacement”.

Example CSS declaration

.olControlOverviewMapRectReplacement {
+    overflow: hidden;
+    cursor: move;
+    background-image: url("img/overview_replacement.gif");
+    background-repeat: no-repeat;
+    background-position: center;
+}
+ +

minRatio

{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther out on the overview map.

+ +

maxRatio

{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther in on the overview map.

+ +

mapOptions

{Object} An object containing any non-default properties to be sent to the overview map’s map constructor.  These should include any non-default options that the main map was constructed with.

+ +

autoPan

{Boolean} Always pan the overview map, so the extent marker remains in the center.  Default is false.  If true, when you drag the extent marker, the overview map will update itself so the marker returns to the center.

+ +

handlers

{Object}

+ +

resolutionFactor

{Object}

+ +

Constructor

+ +

OpenLayers.Control.OverviewMap

Create a new overview map

Parameters

object{Object} Properties of this object will be set on the overview map object.  Note, to set options on the map object contained in this control, set mapOptions as one of the options properties.
+ +

Functions

+ +

destroy

destroy: function()

Deconstruct the control

+ +

draw

draw: function()

Render the control in the browser.

+ +

baseLayerDraw

baseLayerDraw: function()
Draw the base layercalled if unable to complete in the initial draw
+ +

rectDrag

rectDrag: function(px)

Handle extent rectangle drag

Parameters

px{OpenLayers.Pixel} The pixel location of the drag.
+ +

mapDivClick

mapDivClick: function(evt)

Handle browser events

Parameters

evt{OpenLayers.Event} evt
+ +

maximizeControl

maximizeControl: function(e)

Unhide the control.  Called when the control is in the map viewport.

Parameters

e{OpenLayers.Event}
+ +

minimizeControl

minimizeControl: function(e)

Hide all the contents of the control, shrink the size, add the maximize icon

Parameters

e{OpenLayers.Event}
+ +

showToggle

showToggle: function(minimize)

Hide/Show the toggle depending on whether the control is minimized

Parameters

minimize{Boolean}
+ +

update

update: function()

Update the overview map after layers move.

+ +

isSuitableOverview

isSuitableOverview: function()

Determines if the overview map is suitable given the extent and resolution of the main map.

+ +

createMap

createMap: function()

Construct the map that this control contains

+ +

updateRectToMap

updateRectToMap: function()

Updates the extent rectangle position and size to match the map extent

+ +

updateMapToRect

updateMapToRect: function()

Updates the map extent to match the extent rectangle position and size

+ +

setRectPxBounds

setRectPxBounds: function(pxBounds)

Set extent rectangle pixel bounds.

Parameters

pxBounds{OpenLayers.Bounds}
+ +

getRectBoundsFromMapBounds

getRectBoundsFromMapBounds: function(lonLatBounds)

Get the rect bounds from the map bounds.

Parameters

lonLatBounds{OpenLayers.Bounds}

Returns

{OpenLayers.Bounds}A bounds which is the passed-in map lon/lat extent translated into pixel bounds for the overview map

+ +

getMapBoundsFromRectBounds

getMapBoundsFromRectBounds: function(pxBounds)

Get the map bounds from the rect bounds.

Parameters

pxBounds{OpenLayers.Bounds}

Returns

{OpenLayers.Bounds} Bounds which is the passed-in overview rect bounds translated into lon/lat bounds for the overview map

+ +

getLonLatFromOverviewPx

getLonLatFromOverviewPx: function(overviewMapPx)

Get a map location from a pixel location

Parameters

overviewMapPx{OpenLayers.Pixel}

Returns

{OpenLayers.LonLat} Location which is the passed-in overview map OpenLayers.Pixel, translated into lon/lat by the overview map

+ +

getOverviewPxFromLonLat

getOverviewPxFromLonLat: function(lonlat)

Get a pixel location from a map location

Parameters

lonlat{OpenLayers.LonLat}

Returns

{OpenLayers.Pixel} Location which is the passed-in OpenLayers.LonLat, translated into overview map pixels

+ +
+ + + + + + + + + + +
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Instances of this class represent a width/height pair
{Integer} The minimum width or height (in pixels) of the extent rectangle on the overview map.
destroy: function()
Deconstruct the control
draw: function()
Render the control in the browser.
baseLayerDraw: function()
rectDrag: function(px)
Handle extent rectangle drag
mapDivClick: function(evt)
Handle browser events
maximizeControl: function(e)
Unhide the control.
minimizeControl: function(e)
Hide all the contents of the control, shrink the size, add the maximize icon
showToggle: function(minimize)
Hide/Show the toggle depending on whether the control is minimized
update: function()
Update the overview map after layers move.
isSuitableOverview: function()
Determines if the overview map is suitable given the extent and resolution of the main map.
createMap: function()
Construct the map that this control contains
updateRectToMap: function()
Updates the extent rectangle position and size to match the map extent
updateMapToRect: function()
Updates the map extent to match the extent rectangle position and size
setRectPxBounds: function(pxBounds)
Set extent rectangle pixel bounds.
getRectBoundsFromMapBounds: function(lonLatBounds)
Get the rect bounds from the map bounds.
getMapBoundsFromRectBounds: function(pxBounds)
Get the map bounds from the rect bounds.
getLonLatFromOverviewPx: function(overviewMapPx)
Get a map location from a pixel location
getOverviewPxFromLonLat: function(lonlat)
Get a pixel location from a map location
Create a new overview map
Controls affect the display or behavior of the map.
{String} Replacement style class name for the extent rectangle when minRectSize is reached.
{Object} An object containing any non-default properties to be sent to the overview map’s map constructor.
This class represents a screen coordinate, in x and y coordinates
Utility functions for event handling.
Instances of this class represent bounding boxes.
This class represents a longitude and latitude pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/Pan-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/Pan-js.html new file mode 100644 index 0000000..b36c676 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/Pan-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Control.Pan - OpenLayers + + + + + + + + + +

OpenLayers.Control.Pan

The Pan control is a single button to pan the map in one direction.  For a more complete control see OpenLayers.Control.PanPanel.

Inherits from

Summary
OpenLayers.Control.PanThe Pan control is a single button to pan the map in one direction.
Properties
slideFactor{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
direction{String} in {‘North’, ‘South’, ‘East’, ‘West’}
type{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.
Constructor
OpenLayers.Control.PanControl which handles the panning (in any of the cardinal directions) of the map by a set px distance.
Functions
trigger
+ +

Properties

+ +

slideFactor

{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.

+ +

direction

{String} in {‘North’, ‘South’, ‘East’, ‘West’}

+ +

type

{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.

+ +

Constructor

+ +

OpenLayers.Control.Pan

Control which handles the panning (in any of the cardinal directions) of the map by a set px distance.

Parameters

direction{String} The direction this button should pan.
options{Object} An optional object whose properties will be used to extend the control.
+ +

Functions

+ +

trigger

trigger: function()
+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
The Panel control is a container for other controls.
trigger: function()
The PanPanel is visible control for panning the map North, South, East or West in small steps.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/PanPanel-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/PanPanel-js.html new file mode 100644 index 0000000..d31fbea --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/PanPanel-js.html @@ -0,0 +1,45 @@ + + +OpenLayers.Control.PanPanel - OpenLayers + + + + + + + + + +

OpenLayers.Control.PanPanel

The PanPanel is visible control for panning the map North, South, East or West in small steps.  By default it is drawn in the top left corner of the map.

Note

If you wish to use this class with the default images and you want it to look nice in ie6, you should add the following, conditionally added css stylesheet to your HTML file:

<!--[if lte IE 6]>
+  <link rel="stylesheet" href="../theme/default/ie6-style.css" type="text/css" />
+<![endif]-->

Inherits from

Summary
OpenLayers.Control.PanPanelThe PanPanel is visible control for panning the map North, South, East or West in small steps.
Constructor
OpenLayers.Control.PanPanelAdd the four directional pan buttons.
+ +

Constructor

+ +

OpenLayers.Control.PanPanel

Add the four directional pan buttons.

Parameters

options{Object} An optional object whose properties will be used to extend the control.
+ +
+ + + + + + + + + + +
The Panel control is a container for other controls.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/PanZoom-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/PanZoom-js.html new file mode 100644 index 0000000..b870560 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/PanZoom-js.html @@ -0,0 +1,75 @@ + + +OpenLayers.Control.PanZoom - OpenLayers + + + + + + + + + +

OpenLayers.Control.PanZoom

The PanZoom is a visible control, composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomPanel.  By default it is drawn in the upper left corner of the map.

Inherits from

Summary
OpenLayers.Control.PanZoomThe PanZoom is a visible control, composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomPanel.
Properties
slideFactor{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
slideRatio{Number} The fraction of map width/height by which we’ll pan the map on clicking the arrow buttons.
buttons{Array(DOMElement)} Array of Button Divs
position{OpenLayers.Pixel}
Constructor
OpenLayers.Control.PanZoom
Functions
destroy
draw
_addButton
_removeButton
removeButtons
doubleClick
buttonDown
Constants
X{Integer}
Y{Integer}
+ +

Properties

+ +

slideFactor

{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.  If you want to pan by some ratio of the map dimensions, use slideRatio instead.

+ +

slideRatio

{Number} The fraction of map width/height by which we’ll pan the map on clicking the arrow buttons.  Default is null.  If set, will override slideFactor.  E.g. if slideRatio is .5, then the Pan Up button will pan up half the map height.

+ +

buttons

{Array(DOMElement)} Array of Button Divs

+ + + +

Constructor

+ +

OpenLayers.Control.PanZoom

Parameters

options{Object}
+ +

Functions

+ +

destroy

destroy: function()
+ +

draw

draw: function(px)

Parameters

px{OpenLayers.Pixel}

Returns

{DOMElement} A reference to the container div for the PanZoom control.

+ +

_addButton

_addButton:function(id,
img,
xy,
sz)

Parameters

id{String}
img{String}
xy{OpenLayers.Pixel}
sz{OpenLayers.Size}

Returns

{DOMElement} A Div (an alphaImageDiv, to be precise) that contains the image of the button, and has all the proper event handlers set.

+ +

_removeButton

_removeButton: function(btn)

Parameters

btn{Object}
+ +

removeButtons

removeButtons: function()
+ +

doubleClick

doubleClick: function (evt)

Parameters

evt{Event}

Returns

{Boolean}

+ +

buttonDown

buttonDown: function (evt)

Parameters

evt{Event}
+ +

Constants

+ +

X

{Integer}

+ +

Y

{Integer}

+ +
+ + + + + + + + + + +
The PanPanel is visible control for panning the map North, South, East or West in small steps.
The ZoomPanel control is a compact collecton of 3 zoom controls: a OpenLayers.Control.ZoomIn, a OpenLayers.Control.ZoomToMaxExtent, and a OpenLayers.Control.ZoomOut.
This class represents a screen coordinate, in x and y coordinates
destroy: function()
draw: function(px)
_addButton:function(id,
img,
xy,
sz)
_removeButton: function(btn)
removeButtons: function()
doubleClick: function (evt)
buttonDown: function (evt)
Controls affect the display or behavior of the map.
{Number} The fraction of map width/height by which we’ll pan the map on clicking the arrow buttons.
{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
Instances of this class represent a width/height pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/PanZoomBar-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/PanZoomBar-js.html new file mode 100644 index 0000000..430ae92 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/PanZoomBar-js.html @@ -0,0 +1,85 @@ + + +OpenLayers.Control.PanZoomBar - OpenLayers + + + + + + + + + +

OpenLayers.Control.PanZoomBar

The PanZoomBar is a visible control composed of a OpenLayers.Control.PanPanel and a <OpenLayers.Control.ZoomBar>.  By default it is displayed in the upper left corner of the map as 4 directional arrows above a vertical slider.

Inherits from

Summary
OpenLayers.Control.PanZoomBarThe PanZoomBar is a visible control composed of a OpenLayers.Control.PanPanel and a <OpenLayers.Control.ZoomBar>.
Properties
zoomStopWidth
zoomStopHeight
slider
sliderEvents{OpenLayers.Events}
zoomBarDiv{DOMElement}
divEvents{OpenLayers.Events}
zoomWorldIcon{Boolean}
Constructor
OpenLayers.Control.PanZoomBar
Functions
destroy
setMap
redrawclear the div and start over.
draw
_addZoomBar
_removeZoomBar
passEventToSliderThis function is used to pass events that happen on the div, or the map, through to the slider, which then does its moving thing.
divClickPicks up on clicks directly on the zoombar div and sets the zoom level appropriately.
zoomBarDownevent listener for clicks on the slider
zoomBarDragThis is what happens when a click has occurred, and the client is dragging.
zoomBarUpPerform cleanup when a mouseup event is received -- discover new zoom level and switch to it.
moveZoomBarChange the location of the slider to match the current zoom level.
+ +

Properties

+ +

zoomStopWidth

+ +

zoomStopHeight

+ +

slider

+ +

sliderEvents

+ +

zoomBarDiv

{DOMElement}

+ + + +

zoomWorldIcon

{Boolean}

+ +

Constructor

+ +

OpenLayers.Control.PanZoomBar

+ +

Functions

+ +

destroy

destroy: function()
+ +

setMap

setMap: function(map)

Parameters

map{OpenLayers.Map}
+ +

redraw

redraw: function()

clear the div and start over.

+ +

draw

draw: function(px)

Parameters

px{OpenLayers.Pixel}
+ +

_addZoomBar

_addZoomBar:function(centered)

Parameters

location{OpenLayers.Pixel} where zoombar drawing is to start.
+ +

_removeZoomBar

_removeZoomBar: function()
+ +

passEventToSlider

passEventToSlider:function(evt)

This function is used to pass events that happen on the div, or the map, through to the slider, which then does its moving thing.

Parameters

evt{OpenLayers.Event}
+ +

divClick

divClick: function (evt)

Picks up on clicks directly on the zoombar div and sets the zoom level appropriately.

+ +

zoomBarDown

zoomBarDown:function(evt)

event listener for clicks on the slider

Parameters

evt{OpenLayers.Event}
+ +

zoomBarDrag

zoomBarDrag:function(evt)

This is what happens when a click has occurred, and the client is dragging.  Here we must ensure that the slider doesn’t go beyond the bottom/top of the zoombar div, as well as moving the slider to its new visual location

Parameters

evt{OpenLayers.Event}
+ +

zoomBarUp

zoomBarUp:function(evt)

Perform cleanup when a mouseup event is received -- discover new zoom level and switch to it.

Parameters

evt{OpenLayers.Event}
+ +

moveZoomBar

moveZoomBar:function()

Change the location of the slider to match the current zoom level.

+ +
+ + + + + + + + + + +
The PanPanel is visible control for panning the map North, South, East or West in small steps.
destroy: function()
setMap: function(map)
redraw: function()
clear the div and start over.
draw: function(px)
_addZoomBar:function(centered)
_removeZoomBar: function()
passEventToSlider:function(evt)
This function is used to pass events that happen on the div, or the map, through to the slider, which then does its moving thing.
divClick: function (evt)
Picks up on clicks directly on the zoombar div and sets the zoom level appropriately.
zoomBarDown:function(evt)
event listener for clicks on the slider
zoomBarDrag:function(evt)
This is what happens when a click has occurred, and the client is dragging.
zoomBarUp:function(evt)
Perform cleanup when a mouseup event is received -- discover new zoom level and switch to it.
moveZoomBar:function()
Change the location of the slider to match the current zoom level.
The PanZoom is a visible control, composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomPanel.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
This class represents a screen coordinate, in x and y coordinates
Utility functions for event handling.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/Panel-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/Panel-js.html new file mode 100644 index 0000000..fde50c9 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/Panel-js.html @@ -0,0 +1,73 @@ + + +OpenLayers.Control.Panel - OpenLayers + + + + + + + + + +

OpenLayers.Control.Panel

The Panel control is a container for other controls.  With it toolbars may be composed.

Inherits from

Summary
OpenLayers.Control.PanelThe Panel control is a container for other controls.
Properties
controls{Array(OpenLayers.Control)}
defaultControl{OpenLayers.Control} The control which is activated when the control is activated (turned on), which also happens at instantiation.
Constructor
OpenLayers.Control.PanelCreate a new control panel.
Functions
destroy
activate
deactivate
draw{DOMElement}
redraw
activateControl
addControlsTo build a toolbar, you add a set of controls to it.
onClick
getControlsByGet a list of controls with properties matching the given criteria.
getControlsByNameGet a list of contorls with names matching the given name.
getControlsByClassGet a list of controls of a given type (CLASS_NAME).
+ +

Properties

+ +

controls

+ +

defaultControl

{OpenLayers.Control} The control which is activated when the control is activated (turned on), which also happens at instantiation.

+ +

Constructor

+ +

OpenLayers.Control.Panel

Create a new control panel.

Parameters

options{Object} An optional object whose properties will be used to extend the control.
+ +

Functions

+ +

destroy

destroy: function()
+ +

activate

activate: function()
+ +

deactivate

deactivate: function()
+ +

draw

draw: function()

Returns

{DOMElement}

+ +

redraw

redraw: function()
+ +

activateControl

activateControl: function (control)

Parameters

control{OpenLayers.Control}
+ +

addControls

addControls: function(controls)

To build a toolbar, you add a set of controls to it. addControls lets you add a single control or a list of controls to the Control Panel.

Parameters

controls{OpenLayers.Control}
+ +

onClick

onClick: function (ctrl,
evt)
+ +

getControlsBy

getControlsBy: function(property,
match)

Get a list of controls with properties matching the given criteria.

Parameter

property{String} A control property to be matched.
match{String | Object} A string to match.  Can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if match.test(control[property]) evaluates to true, the control will be included in the array returned.  If no controls are found, an empty array is returned.

Returns

{Array(OpenLayers.Control)} A list of controls matching the given criteria.  An empty array is returned if no matches are found.

+ +

getControlsByName

getControlsByName: function(match)

Get a list of contorls with names matching the given name.

Parameter

match{String | Object} A control name.  The name can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if name.test(control.name) evaluates to true, the control will be included in the list of controls returned.  If no controls are found, an empty array is returned.

Returns

{Array(OpenLayers.Control)} A list of controls matching the given name.  An empty array is returned if no matches are found.

+ +

getControlsByClass

getControlsByClass: function(match)

Get a list of controls of a given type (CLASS_NAME).

Parameter

match{String | Object} A control class name.  The type can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if type.test(control.CLASS_NAME) evaluates to true, the control will be included in the list of controls returned.  If no controls are found, an empty array is returned.

Returns

{Array(OpenLayers.Control)} A list of controls matching the given type.  An empty array is returned if no matches are found.

+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
destroy: function()
activate: function()
deactivate: function()
draw: function()
{DOMElement}
redraw: function()
activateControl: function (control)
addControls: function(controls)
To build a toolbar, you add a set of controls to it.
onClick: function (ctrl,
evt)
getControlsBy: function(property,
match)
Get a list of controls with properties matching the given criteria.
getControlsByName: function(match)
Get a list of contorls with names matching the given name.
getControlsByClass: function(match)
Get a list of controls of a given type (CLASS_NAME).
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/Permalink-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/Permalink-js.html new file mode 100644 index 0000000..b649340 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/Permalink-js.html @@ -0,0 +1,65 @@ + + +OpenLayers.Control.Permalink - OpenLayers + + + + + + + + + +

OpenLayers.Control.Permalink

The Permalink control is hyperlink that will return the user to the current map view.  By default it is drawn in the lower right corner of the map.  The href is updated as the map is zoomed, panned and whilst layers are switched.  ` Inherits from:

Summary
OpenLayers.Control.PermalinkThe Permalink control is hyperlink that will return the user to the current map view.
Properties
argParserClass{Class} The ArgParser control class (not instance) to use with this control.
element{DOMElement}
base{String}
displayProjection{OpenLayers.Projection} Requires proj4js support.
Constructor
OpenLayers.Control.Permalink
Functions
destroy
setMapSet the map property for the control.
draw{DOMElement}
updateLink
createParamsCreates the parameters that need to be encoded into the permalink url.
+ +

Properties

+ +

argParserClass

{Class} The ArgParser control class (not instance) to use with this control.

+ +

element

{DOMElement}

+ +

base

{String}

+ +

displayProjection

{OpenLayers.Projection} Requires proj4js support.  Projection used when creating the coordinates in the link.  This will reproject the map coordinates into display coordinates.  If you are using this functionality, the permalink which is last added to the map will determine the coordinate type which is read from the URL, which means you should not add permalinks with different displayProjections to the same map.

+ +

Constructor

+ +

OpenLayers.Control.Permalink

Parameters

element{DOMElement}
base{String}
options{Object} options to the control.
+ +

Functions

+ +

destroy

destroy: function()
+ +

setMap

setMap: function(map)

Set the map property for the control.

Parameters

map{OpenLayers.Map}
+ +

draw

draw: function()

Returns

{DOMElement}

+ +

updateLink

updateLink: function()
+ +

createParams

createParams: function(center,
zoom,
layers)

Creates the parameters that need to be encoded into the permalink url.

Parameters

center{OpenLayers.LonLat} center to encode in the permalink.  Defaults to the current map center.
zoom{Integer} zoom level to encode in the permalink.  Defaults to the current map zoom level.
layers{Array(OpenLayers.Layer)} layers to encode in the permalink.  Defaults to the current map layers.

Returns

{Object} Hash of parameters that will be url-encoded into the permalink.

+ +
+ + + + + + + + + + +
Class for coordinate transforms between coordinate systems.
destroy: function()
setMap: function(map)
Set the map property for the control.
draw: function()
{DOMElement}
updateLink: function()
createParams: function(center,
zoom,
layers)
Creates the parameters that need to be encoded into the permalink url.
Controls affect the display or behavior of the map.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
This class represents a longitude and latitude pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/Scale-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/Scale-js.html new file mode 100644 index 0000000..226dd44 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/Scale-js.html @@ -0,0 +1,49 @@ + + +OpenLayers.Control.Scale - OpenLayers + + + + + + + + + +

OpenLayers.Control.Scale

The Scale control displays the current map scale as a ratio (e.g.  Scale = 1:1M).  By default it is displayed in the lower right corner of the map.

Inherits from

Summary
OpenLayers.Control.ScaleThe Scale control displays the current map scale as a ratio (e.g.
Constructor
OpenLayers.Control.Scale
Functions
draw{DOMElement}
updateScale
+ +

Constructor

+ +

OpenLayers.Control.Scale

Parameters

element{DOMElement}
options{Object}
+ +

Functions

+ +

draw

draw: function()

Returns

{DOMElement}

+ +

updateScale

updateScale: function()
+ +
+ + + + + + + + + + +
draw: function()
{DOMElement}
updateScale: function()
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/ScaleLine-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/ScaleLine-js.html new file mode 100644 index 0000000..fe2aab7 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/ScaleLine-js.html @@ -0,0 +1,67 @@ + + +OpenLayers.Control.ScaleLine - OpenLayers + + + + + + + + + +

OpenLayers.Control.ScaleLine

The ScaleLine displays a small line indicator representing the current map scale on the map.  By default it is drawn in the lower left corner of the map.

Inherits from

Is a very close copy of

Summary
OpenLayers.Control.ScaleLineThe ScaleLine displays a small line indicator representing the current map scale on the map.
Properties
maxWidth{Integer} Maximum width of the scale line in pixels.
topOutUnits{String} Units for zoomed out on top bar.
topInUnits{String} Units for zoomed in on top bar.
bottomOutUnits{String} Units for zoomed out on bottom bar.
bottomInUnits{String} Units for zoomed in on bottom bar.
eTop{DOMElement}
eBottom{DOMElement}
Constructor
OpenLayers.Control.ScaleLineCreate a new scale line control.
Functions
draw{DOMElement}
getBarLenGiven a number, round it down to the nearest 1,2,5 times a power of 10.
updateUpdate the size of the bars, and the labels they contain.
+ +

Properties

+ +

maxWidth

{Integer} Maximum width of the scale line in pixels.  Default is 100.

+ +

topOutUnits

{String} Units for zoomed out on top bar.  Default is km.

+ +

topInUnits

{String} Units for zoomed in on top bar.  Default is m.

+ +

bottomOutUnits

{String} Units for zoomed out on bottom bar.  Default is mi.

+ +

bottomInUnits

{String} Units for zoomed in on bottom bar.  Default is ft.

+ +

eTop

{DOMElement}

+ +

eBottom

{DOMElement}

+ +

Constructor

+ +

OpenLayers.Control.ScaleLine

Create a new scale line control.

Parameters

options{Object} An optional object whose properties will be used to extend the control.
+ +

Functions

+ +

draw

draw: function()

Returns

{DOMElement}

+ +

getBarLen

getBarLen: function(maxLen)

Given a number, round it down to the nearest 1,2,5 times a power of 10.  That seems a fairly useful set of number groups to use.

Parameters

maxLen{float} the number we’re rounding down from

Returns

{Float} the rounded number (less than or equal to maxLen)

+ +

update

update: function()

Update the size of the bars, and the labels they contain.

+ +
+ + + + + + + + + + +
draw: function()
{DOMElement}
getBarLen: function(maxLen)
Given a number, round it down to the nearest 1,2,5 times a power of 10.
update: function()
Update the size of the bars, and the labels they contain.
Controls affect the display or behavior of the map.
The Scale control displays the current map scale as a ratio (e.g.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/SelectFeature-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/SelectFeature-js.html new file mode 100644 index 0000000..f809df1 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/SelectFeature-js.html @@ -0,0 +1,121 @@ + + +OpenLayers.Control.SelectFeature - OpenLayers + + + + + + + + + +

OpenLayers.Control.SelectFeature

The SelectFeature control selects vector features from a given layer on click or hover.

Inherits from

Summary
OpenLayers.Control.SelectFeatureThe SelectFeature control selects vector features from a given layer on click or hover.
Constants
EVENT_TYPES
Properties
multipleKey{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the multiple property to true.
toggleKey{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the toggle property to true.
multiple{Boolean} Allow selection of multiple geometries.
clickout{Boolean} Unselect features when clicking outside any feature.
toggle{Boolean} Unselect a selected feature on click.
hover{Boolean} Select on mouse over and deselect on mouse out.
highlightOnly{Boolean} If true do not actually select features (i.e.
box{Boolean} Allow feature selection by drawing a box.
onBeforeSelect{Function} Optional function to be called before a feature is selected.
onSelect{Function} Optional function to be called when a feature is selected.
onUnselect{Function} Optional function to be called when a feature is unselected.
scope{Object} The scope to use with the onBeforeSelect, onSelect, onUnselect callbacks.
geometryTypes{Array(String)} To restrict selecting to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
layer{OpenLayers.Layer.Vector} The vector layer with a common renderer root for all layers this control is configured with (if an array of layers was passed to the constructor), or the vector layer the control was configured with (if a single layer was passed to the constructor).
layers{Array(OpenLayers.Layer.Vector} The layers this control will work on, or null if the control was configured with a single layer
callbacks{Object} The functions that are sent to the handlers.feature for callback
selectStyle{Object} Hash of styles
renderIntent{String} key used to retrieve the select style from the layer’s style map.
handlers{Object} Object with references to multiple OpenLayers.Handler instances.
Constructor
OpenLayers.Control.SelectFeatureCreate a new control for selecting features.
Functions
destroy
activateActivates the control.
deactivateDeactivates the control.
unselectAllUnselect all selected features.
clickFeatureCalled on click in a feature Only responds if this.hover is false.
multipleSelectAllow for multiple selected features based on multiple property and multipleKey event modifier.
toggleSelectEvent should toggle the selected state of a feature based on toggle property and toggleKey event modifier.
clickoutFeatureCalled on click outside a previously clicked (selected) feature.
overFeatureCalled on over a feature.
outFeatureCalled on out of a selected feature.
highlightRedraw feature with the select style.
unhighlightRedraw feature with the “default” style
selectAdd feature to the layer’s selectedFeature array, render the feature as selected, and call the onSelect function.
unselectRemove feature from the layer’s selectedFeature array, render the feature as normal, and call the onUnselect function.
selectBoxCallback from the handlers.box set up when box selection is true on.
setMapSet the map property for the control.
+ +

Constants

+ +

EVENT_TYPES

Supported event types

  • beforefeaturehighlighted Triggered before a feature is highlighted
  • featurehighlighted Triggered when a feature is highlighted
  • featureunhighlighted Triggered when a feature is unhighlighted
+ +

Properties

+ +

multipleKey

{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the multiple property to true.  Default is null.

+ +

toggleKey

{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the toggle property to true.  Default is null.

+ +

multiple

{Boolean} Allow selection of multiple geometries.  Default is false.

+ +

clickout

{Boolean} Unselect features when clicking outside any feature.  Default is true.

+ +

toggle

{Boolean} Unselect a selected feature on click.  Default is false.  Only has meaning if hover is false.

+ +

hover

{Boolean} Select on mouse over and deselect on mouse out.  If true, this ignores clicks and only listens to mouse moves.

+ +

highlightOnly

{Boolean} If true do not actually select features (i.e. place them in the layer’s selected features array), just highlight them.  This property has no effect if hover is false.  Defaults to false.

+ +

box

{Boolean} Allow feature selection by drawing a box.

+ +

onBeforeSelect

{Function} Optional function to be called before a feature is selected.  The function should expect to be called with a feature.

+ +

onSelect

{Function} Optional function to be called when a feature is selected.  The function should expect to be called with a feature.

+ +

onUnselect

{Function} Optional function to be called when a feature is unselected.  The function should expect to be called with a feature.

+ +

scope

{Object} The scope to use with the onBeforeSelect, onSelect, onUnselect callbacks.  If null the scope will be this control.

+ +

geometryTypes

{Array(String)} To restrict selecting to a limited set of geometry types, send a list of strings corresponding to the geometry class names.

+ +

layer

{OpenLayers.Layer.Vector} The vector layer with a common renderer root for all layers this control is configured with (if an array of layers was passed to the constructor), or the vector layer the control was configured with (if a single layer was passed to the constructor).

+ +

layers

{Array(OpenLayers.Layer.Vector} The layers this control will work on, or null if the control was configured with a single layer

+ +

callbacks

{Object} The functions that are sent to the handlers.feature for callback

+ +

selectStyle

{Object} Hash of styles

+ +

renderIntent

{String} key used to retrieve the select style from the layer’s style map.

+ +

handlers

{Object} Object with references to multiple OpenLayers.Handler instances.

+ +

Constructor

+ +

OpenLayers.Control.SelectFeature

Create a new control for selecting features.

Parameters

layers{OpenLayers.Layer.Vector}, or an array of vector layers.  The layer(s) this control will select features from.
options{Object}
+ +

Functions

+ +

destroy

destroy: function()
+ +

activate

activate: function ()

Activates the control.

Returns

{Boolean} The control was effectively activated.

+ +

deactivate

deactivate: function ()

Deactivates the control.

Returns

{Boolean} The control was effectively deactivated.

+ +

unselectAll

unselectAll: function(options)

Unselect all selected features.  To unselect all except for a single feature, set the options.except property to the feature.

Parameters

options{Object} Optional configuration object.
+ +

clickFeature

clickFeature: function(feature)

Called on click in a feature Only responds if this.hover is false.

Parameters

feature{OpenLayers.Feature.Vector}
+ +

multipleSelect

multipleSelect: function()

Allow for multiple selected features based on multiple property and multipleKey event modifier.

Returns

{Boolean} Allow for multiple selected features.

+ +

toggleSelect

toggleSelect: function()

Event should toggle the selected state of a feature based on toggle property and toggleKey event modifier.

Returns

{Boolean} Toggle the selected state of a feature.

+ +

clickoutFeature

clickoutFeature: function(feature)

Called on click outside a previously clicked (selected) feature.  Only responds if this.hover is false.

Parameters

feature{<OpenLayers.Vector.Feature>}
+ +

overFeature

overFeature: function(feature)

Called on over a feature.  Only responds if this.hover is true.

Parameters

feature{OpenLayers.Feature.Vector}
+ +

outFeature

outFeature: function(feature)

Called on out of a selected feature.  Only responds if this.hover is true.

Parameters

feature{OpenLayers.Feature.Vector}
+ +

highlight

highlight: function(feature)

Redraw feature with the select style.

Parameters

feature{OpenLayers.Feature.Vector}
+ +

unhighlight

unhighlight: function(feature)

Redraw feature with the “default” style

Parameters

feature{OpenLayers.Feature.Vector}
+ +

select

select: function(feature)

Add feature to the layer’s selectedFeature array, render the feature as selected, and call the onSelect function.

Parameters

feature{OpenLayers.Feature.Vector}
+ +

unselect

unselect: function(feature)

Remove feature from the layer’s selectedFeature array, render the feature as normal, and call the onUnselect function.

Parameters

feature{OpenLayers.Feature.Vector}
+ +

selectBox

selectBox: function(position)

Callback from the handlers.box set up when box selection is true on.

Parameters

position{OpenLayers.Bounds || OpenLayers.Pixel }
+ +

setMap

setMap: function(map)

Set the map property for the control.

Parameters

map{OpenLayers.Map}
+ +
+ + + + + + + + + + +
{Boolean} Allow selection of multiple geometries.
{Boolean} Unselect a selected feature on click.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Base class to construct a higher-level handler for event sequences.
destroy: function()
activate: function ()
Activates the control.
deactivate: function ()
Deactivates the control.
unselectAll: function(options)
Unselect all selected features.
clickFeature: function(feature)
Called on click in a feature Only responds if this.hover is false.
multipleSelect: function()
Allow for multiple selected features based on multiple property and multipleKey event modifier.
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the multiple property to true.
toggleSelect: function()
Event should toggle the selected state of a feature based on toggle property and toggleKey event modifier.
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the toggle property to true.
clickoutFeature: function(feature)
Called on click outside a previously clicked (selected) feature.
overFeature: function(feature)
Called on over a feature.
outFeature: function(feature)
Called on out of a selected feature.
highlight: function(feature)
Redraw feature with the select style.
unhighlight: function(feature)
Redraw feature with the “default” style
select: function(feature)
Add feature to the layer’s selectedFeature array, render the feature as selected, and call the onSelect function.
unselect: function(feature)
Remove feature from the layer’s selectedFeature array, render the feature as normal, and call the onUnselect function.
selectBox: function(position)
Callback from the handlers.box set up when box selection is true on.
{Boolean} Allow feature selection by drawing a box.
setMap: function(map)
Set the map property for the control.
Controls affect the display or behavior of the map.
Vector features use the OpenLayers.Geometry classes as geometry description.
Instances of this class represent bounding boxes.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/Snapping-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/Snapping-js.html new file mode 100644 index 0000000..c614f25 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/Snapping-js.html @@ -0,0 +1,95 @@ + + +OpenLayers.Control.Snapping - OpenLayers + + + + + + + + + +

OpenLayers.Control.Snapping

Acts as a snapping agent while editing vector features.

Inherits from

Summary
OpenLayers.Control.SnappingActs as a snapping agent while editing vector features.
Constants
EVENT_TYPES{Array(String)} Supported application event types.
DEFAULTSDefault target properties.
Properties
greedy{Boolean} Snap to closest feature in first layer with an eligible feature.
precedence{Array} List representing precedence of different snapping types.
resolution{Float} The map resolution for the previously considered snap.
geoToleranceCache{Object} A cache of geo-tolerances.
layer{OpenLayers.Layer.Vector} The current editable layer.
feature{OpenLayers.Feature.Vector} The current editable feature.
point{OpenLayers.Geometry.Point} The currently snapped vertex.
Constructor
OpenLayers.Control.SnappingCreates a new snapping control.
Functions
setLayerSet the editable layer.
setTargetsSet the targets for the snapping agent.
addTargetLayerAdd a target layer with the default target config.
addTargetAdd a configured target layer.
removeTargetLayerRemove a target layer.
removeTargetRemove a target.
activateActivate the control.
deactivateDeactivate the control.
onSketchModifiedRegistered as a listener for the sketchmodified event on the editable layer.
onVertexModifiedRegistered as a listener for the vertexmodified event on the editable layer.
considerSnapping
testTarget
getGeoToleranceCalculate a tolerance in map units given a tolerance in pixels.
destroyClean up the control.
+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

control.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

Supported control event types (in addition to those from OpenLayers.Control)

beforesnapTriggered before a snap occurs.  Listeners receive an event object with point, x, y, distance, layer, and snapType properties.  The point property will be original point geometry considered for snapping.  The x and y properties represent coordinates the point will receive.  The distance is the distance of the snap.  The layer is the target layer.  The snapType property will be one of “node”, “vertex”, or “edge”.  Return false to stop snapping from occurring.
snapTriggered when a snap occurs.  Listeners receive an event with point, snapType, layer, and distance properties.  The point will be the location snapped to.  The snapType will be one of “node”, “vertex”, or “edge”.  The layer will be the target layer.  The distance will be the distance of the snap in map units.
unsnapTriggered when a vertex is unsnapped.  Listeners receive an event with a point property.
+ +

DEFAULTS

Default target properties.

+ +

Properties

+ +

greedy

{Boolean} Snap to closest feature in first layer with an eligible feature.  Default is true.

+ +

precedence

{Array} List representing precedence of different snapping types.  Default is “node”, “vertex”, “edge”.

+ +

resolution

{Float} The map resolution for the previously considered snap.

+ +

geoToleranceCache

{Object} A cache of geo-tolerances.  Tolerance values (in map units) are calculated when the map resolution changes.

+ +

layer

{OpenLayers.Layer.Vector} The current editable layer.  Set at construction or after construction with setLayer.

+ +

feature

{OpenLayers.Feature.Vector} The current editable feature.

+ +

point

{OpenLayers.Geometry.Point} The currently snapped vertex.

+ +

Constructor

+ +

OpenLayers.Control.Snapping

Creates a new snapping control.  A control is constructed with an editable layer and a set of configuration objects for target layers.  While the control is active, dragging vertices while drawing new features or modifying existing features on the editable layer will engage snapping to features on the target layers.  Whether a vertex snaps to a feature on a target layer depends on the target layer configuration.

Parameters

options{Object} An object containing all configuration properties for the control.

Valid options

layer{OpenLayers.Layer.Vector} The editable layer.  Features from this layer that are digitized or modified may have vertices snapped to features from any of the target layers.
targets{Array(Object | OpenLayers.Layer.Vector)} A list of objects for configuring target layers.  See valid properties of the target objects below.  If the items in the targets list are vector layers (instead of configuration objects), the defaults from the <defaults> property will apply.  The editable layer itself may be a target
layerallowing newly created or edited features to be snapped to existing features from the same layer.  If no targets are provided the layer given in the constructor (as layer) will become the initial target.
defaults{Object} An object with default properties to be applied to all target objects.
greedy{Boolean} Snap to closest feature in first target layer that applies.  Default is true.  If false, all features in all target layers will be checked and the closest feature in all target layers will be chosen.  The greedy property determines if the order of the target layers is significant.  By default, the order of the target layers is significant where layers earlier in the target layer list have precedence over layers later in the list.  Within a single layer, the closest feature is always chosen for snapping.  This property only determines whether the search for a closer feature continues after an eligible feature is found in a target layer.

Valid target properties

layer{OpenLayers.Layer.Vector} A target layer.  Features from this layer will be eligible to act as snapping target for the editable layer.
tolerance{Float} The distance (in pixels) at which snapping may occur.  Default is 10.
node{Boolean} Snap to nodes (first or last point in a geometry) in target layer.  Default is true.
nodeTolerance{Float} Optional distance at which snapping may occur for nodes specifically.  If none is provided, <tolerance> will be used.
vertex{Boolean} Snap to vertices in target layer.  Default is true.
vertexTolerance{Float} Optional distance at which snapping may occur for vertices specifically.  If none is provided, <tolerance> will be used.
edge{Boolean} Snap to edges in target layer.  Default is true.
edgeTolerance{Float} Optional distance at which snapping may occur for edges specifically.  If none is provided, <tolerance> will be used.
filter{OpenLayers.Filter} Optional filter to evaluate to determine if feature is eligible for snapping.  If filter evaluates to true for a target feature a vertex may be snapped to the feature.
+ +

Functions

+ +

setLayer

setLayer: function(layer)

Set the editable layer.  Call the setLayer method if the editable layer changes and the same control should be used on a new editable layer.  If the control is already active, it will be active after the new layer is set.

Parameters

layer{OpenLayers.Layer.Vector} The new editable layer.
+ +

setTargets

setTargets: function(targets)

Set the targets for the snapping agent.

Parameters

targets{Array} An array of target configs or target layers.
+ +

addTargetLayer

addTargetLayer: function(layer)

Add a target layer with the default target config.

Parameters

layer{OpenLayers.Layer.Vector} A target layer.
+ +

addTarget

addTarget: function(target)

Add a configured target layer.

Parameters

target{Object} A target config.
+ +

removeTargetLayer

removeTargetLayer: function(layer)

Remove a target layer.

Parameters

layer{OpenLayers.Layer.Vector} The target layer to remove.
+ +

removeTarget

removeTarget: function(target)

Remove a target.

Parameters

target{Object} A target config.

Returns

{Array} The targets array.

+ +

activate

activate: function()

Activate the control.  Activating the control registers listeners for editing related events so that during feature creation and modification, moving vertices will trigger snapping.

+ +

deactivate

deactivate: function()

Deactivate the control.  Deactivating the control unregisters listeners so feature editing may proceed without engaging the snapping agent.

+ +

onSketchModified

onSketchModified: function(event)

Registered as a listener for the sketchmodified event on the editable layer.

Parameters

event{Object} The sketch modified event.
+ +

onVertexModified

onVertexModified: function(event)

Registered as a listener for the vertexmodified event on the editable layer.

Parameters

event{Object} The vertex modified event.
+ +

considerSnapping

considerSnapping: function(point,
loc)

Parameters

point{<OpenLayers.Geometry.Point}} The vertex to be snapped (or unsnapped).
loc{OpenLayers.Geometry.Point} The location of the mouse in map coords.
+ +

testTarget

testTarget: function(target,
loc)

Parameters

target{Object} Object with target layer configuration.
loc{OpenLayers.Geometry.Point} The location of the mouse in map coords.

Returns

{Object} A result object with rank, dist, x, and y properties.  Returns null if candidate is not eligible for snapping.

+ +

getGeoTolerance

getGeoTolerance: function(tolerance)

Calculate a tolerance in map units given a tolerance in pixels.  This takes advantage of the geoToleranceCache when the map resolution has not changed.

Parameters

tolerance{Number} A tolerance value in pixels.

Returns

{Number} A tolerance value in map units.

+ +

destroy

destroy: function()

Clean up the control.

+ +
+ + + + + + + + + + +
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Vector features use the OpenLayers.Geometry classes as geometry description.
Point geometry class.
setLayer: function(layer)
Set the editable layer.
setTargets: function(targets)
Set the targets for the snapping agent.
addTargetLayer: function(layer)
Add a target layer with the default target config.
addTarget: function(target)
Add a configured target layer.
removeTargetLayer: function(layer)
Remove a target layer.
removeTarget: function(target)
Remove a target.
activate: function()
Activate the control.
deactivate: function()
Deactivate the control.
onSketchModified: function(event)
Registered as a listener for the sketchmodified event on the editable layer.
onVertexModified: function(event)
Registered as a listener for the vertexmodified event on the editable layer.
considerSnapping: function(point,
loc)
testTarget: function(target,
loc)
getGeoTolerance: function(tolerance)
Calculate a tolerance in map units given a tolerance in pixels.
destroy: function()
Clean up the control.
Controls affect the display or behavior of the map.
{OpenLayers.Layer.Vector} The current editable layer.
{Object} A cache of geo-tolerances.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/Split-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/Split-js.html new file mode 100644 index 0000000..f086e95 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/Split-js.html @@ -0,0 +1,91 @@ + + +OpenLayers.Control.Split - OpenLayers + + + + + + + + + +

OpenLayers.Control.Split

Acts as a split feature agent while editing vector features.

Inherits from

Summary
OpenLayers.Control.SplitActs as a split feature agent while editing vector features.
Constants
EVENT_TYPES{Array(String)} Supported application event types.
Properties
layer{OpenLayers.Layer.Vector} The target layer with features to be split.
source{OpenLayers.Layer.Vector} Optional source layer.
sourceOptions{Options} If a temporary sketch layer is created, these layer options will be applied.
tolerance{Number} Distance between the calculated intersection and a vertex on the source geometry below which the existing vertex will be used for the split.
edge{Boolean} Allow splits given intersection of edges only.
deferDelete{Boolean} Instead of removing features from the layer, set feature states of split features to DELETE.
mutual{Boolean} If source and target layers are the same, split source features and target features where they intersect.
targetFilter{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
sourceFilter{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
handler{OpenLayers.Handler.Path} The temporary sketch handler created if no source layer is provided.
Constructor
OpenLayers.Control.SplitCreates a new split control.
Functions
setSourceSet the source layer for edits layer.
activateActivate the control.
deactivateDeactivate the control.
onSketchCompleteRegistered as a listener for the sketchcomplete event on the editable layer.
afterFeatureModifiedRegistered as a listener for the afterfeaturemodified event on the editable layer.
removeByGeometryRemove a feature from a list based on the given geometry.
isEligibleTest if a target feature is eligible for splitting.
considerSplitDecide whether or not to split target features with the supplied feature.
geomsToFeaturesCreate new features given a template feature and a list of geometries.
destroyClean up the control.
+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

control.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

Supported control event types (in addition to those from OpenLayers.Control)

beforesplitTriggered before a split occurs.  Listeners receive an event object with source and target properties.
splitTriggered when a split occurs.  Listeners receive an event with an original property and a features property.  The original is a reference to the target feature that the sketch or modified feature intersects.  The features property is a list of all features that result from this single split.  This event is triggered before the resulting features are added to the layer (while the layer still has a reference to the original).
aftersplitTriggered after all splits resulting from a single sketch or feature modification have occurred.  The original features have been destroyed and features that result from the split have already been added to the layer.  Listeners receive an event with a source and features property.  The source references the sketch or modified feature used as a splitter.  The features property is a list of all resulting features.
+ +

Properties

+ +

layer

{OpenLayers.Layer.Vector} The target layer with features to be split.  Set at construction or after construction with <setLayer>.

+ +

source

{OpenLayers.Layer.Vector} Optional source layer.  Any newly created or modified features from this layer will be used to split features on the target layer.  If not provided, a temporary sketch layer will be created.

+ +

sourceOptions

{Options} If a temporary sketch layer is created, these layer options will be applied.

+ +

tolerance

{Number} Distance between the calculated intersection and a vertex on the source geometry below which the existing vertex will be used for the split.  Default is null.

+ +

edge

{Boolean} Allow splits given intersection of edges only.  Default is true.  If false, a vertex on the source must be within the tolerance distance of the calculated intersection for a split to occur.

+ +

deferDelete

{Boolean} Instead of removing features from the layer, set feature states of split features to DELETE.  This assumes a save strategy or other component is in charge of removing features from the layer.  Default is false.  If false, split features will be immediately deleted from the layer.

+ +

mutual

{Boolean} If source and target layers are the same, split source features and target features where they intersect.  Default is true.  If false, only target features will be split.

+ +

targetFilter

{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.

+ +

sourceFilter

{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.

+ +

handler

{OpenLayers.Handler.Path} The temporary sketch handler created if no source layer is provided.

+ +

Constructor

+ +

OpenLayers.Control.Split

Creates a new split control.  A control is constructed with a target layer and an optional source layer.  While the control is active, creating new features or modifying existing features on the source layer will result in splitting any eligible features on the target layer.  If no source layer is provided, a temporary sketch layer will be created to create lines for splitting features on the target.

Parameters

options{Object} An object containing all configuration properties for the control.

Valid options

layer{OpenLayers.Layer.Vector} The target layer.  Features from this layer will be split by new or modified features on the source layer or temporary sketch layer.
source{OpenLayers.Layer.Vector} Optional source layer.  If provided newly created features or modified features will be used to split features on the target layer.  If not provided, a temporary sketch layer will be created for drawing lines.
tolerance{Number} Optional value for the distance between a source vertex and the calculated intersection below which the split will occur at the vertex.
edge{Boolean} Allow splits given intersection of edges only.  Default is true.  If false, a vertex on the source must be within the tolerance distance of the calculated intersection for a split to occur.
mutual{Boolean} If source and target are the same, split source features and target features where they intersect.  Default is true.  If false, only target features will be split.
targetFilter{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
sourceFilter{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
+ +

Functions

+ +

setSource

setSource: function(layer)

Set the source layer for edits layer.

Parameters

layer{OpenLayers.Layer.Vector} The new source layer layer.  If null, a temporary sketch layer will be created.
+ +

activate

activate: function()

Activate the control.  Activating the control registers listeners for editing related events so that during feature creation and modification, features in the target will be considered for splitting.

+ +

deactivate

deactivate: function()

Deactivate the control.  Deactivating the control unregisters listeners so feature editing may proceed without engaging the split agent.

+ +

onSketchComplete

onSketchComplete: function(event)

Registered as a listener for the sketchcomplete event on the editable layer.

Parameters

event{Object} The sketch complete event.

Returns

{Boolean} Stop the sketch from being added to the layer (it has been split).

+ +

afterFeatureModified

afterFeatureModified: function(event)

Registered as a listener for the afterfeaturemodified event on the editable layer.

Parameters

event{Object} The after feature modified event.
+ +

removeByGeometry

removeByGeometry: function(features,
geometry)

Remove a feature from a list based on the given geometry.

Parameters

features{Array(OpenLayers.Feature.Vector} A list of features.
geometry{OpenLayers.Geometry} A geometry.
+ +

isEligible

isEligible: function(target)

Test if a target feature is eligible for splitting.

Parameters

target{OpenLayers.Feature.Vector} The target feature.

Returns

{Boolean} The target is eligible for splitting.

+ +

considerSplit

considerSplit: function(feature)

Decide whether or not to split target features with the supplied feature.  If mutual is true, both the source and target features will be split if eligible.

Parameters

feature{<OpenLayers.Feature.Vector}} The newly created or modified feature.

Returns

{Boolean} The supplied feature was split (and destroyed).

+ +

geomsToFeatures

geomsToFeatures: function(feature,
geoms)

Create new features given a template feature and a list of geometries.  The list of geometries is modified in place.  The result will be a list of new features.

Parameters

feature{OpenLayers.Feature.Vector} The feature to be cloned.
geoms{Array(OpenLayers.Geometry)} List of goemetries.  This will become a list of new features.
+ +

destroy

destroy: function()

Clean up the control.

+ +
+ + + + + + + + + + +
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Handler to draw a path on the map.
setSource: function(layer)
Set the source layer for edits layer.
activate: function()
Activate the control.
deactivate: function()
Deactivate the control.
onSketchComplete: function(event)
Registered as a listener for the sketchcomplete event on the editable layer.
afterFeatureModified: function(event)
Registered as a listener for the afterfeaturemodified event on the editable layer.
removeByGeometry: function(features,
geometry)
Remove a feature from a list based on the given geometry.
isEligible: function(target)
Test if a target feature is eligible for splitting.
considerSplit: function(feature)
Decide whether or not to split target features with the supplied feature.
geomsToFeatures: function(feature,
geoms)
Create new features given a template feature and a list of geometries.
destroy: function()
Clean up the control.
Controls affect the display or behavior of the map.
{Number} Distance between the calculated intersection and a vertex on the source geometry below which the existing vertex will be used for the split.
Vector features use the OpenLayers.Geometry classes as geometry description.
A Geometry is a description of a geographic object.
{Boolean} If source and target layers are the same, split source features and target features where they intersect.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/WMSGetFeatureInfo-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/WMSGetFeatureInfo-js.html new file mode 100644 index 0000000..36de006 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/WMSGetFeatureInfo-js.html @@ -0,0 +1,102 @@ + + +OpenLayers.Control.WMSGetFeatureInfo - OpenLayers + + + + + + + + + +

OpenLayers.Control.WMSGetFeatureInfo

The WMSGetFeatureInfo control uses a WMS query to get information about a point on the map.  The information may be in a display-friendly format such as HTML, or a machine-friendly format such as GML, depending on the server’s capabilities and the client’s configuration.  This control handles click or hover events, attempts to parse the results using an OpenLayers.Format, and fires a ‘getfeatureinfo’ event with the click position, the raw body of the response, and an array of features if it successfully read the response.

Inherits from

Summary
OpenLayers.Control.WMSGetFeatureInfoThe WMSGetFeatureInfo control uses a WMS query to get information about a point on the map.
Properties
hover{Boolean} Send GetFeatureInfo requests when mouse stops moving.
maxFeatures{Integer} Maximum number of features to return from a WMS query.
layers{Array(OpenLayers.Layer.WMS)} The layers to query for feature info.
queryVisible{Boolean} If true, filter out hidden layers when searching the map for layers to query.
url{String} The URL of the WMS service to use.
layerUrls{Array(String)} Optional list of urls for layers that should be queried.
infoFormat{String} The mimetype to request from the server
vendorParams{Object} Additional parameters that will be added to the request, for WMS implementations that support them.
format{OpenLayers.Format} A format for parsing GetFeatureInfo responses.
formatOptions{Object} Optional properties to set on the format (if one is not provided in the format property.
handlerOptions{Object} Additional options for the handlers used by this control, e.g.
handler{Object} Reference to the OpenLayers.Handler for this control
hoverRequest{OpenLayers.Request} contains the currently running hover request (if any).
Constants
EVENT_TYPES
Constructor
<OpenLayers.Control.WMSGetFeatureInfo>
Functions
activateActivates the control.
deactivateDeactivates the control.
getInfoForClickCalled on click
getInfoForHoverPause callback for the hover handler
cancelHoverCancel callback for the hover handler
findLayersInternal method to get the layers, independent of whether we are inspecting the map or using a client-provided array
urlMatchesTest to see if the provided url matches either the control url or one of the layerUrls.
requestSends a GetFeatureInfo request to the WMS
handleResponseHandler for the GetFeatureInfo response.
setMapSet the map property for the control.
+ +

Properties

+ +

hover

{Boolean} Send GetFeatureInfo requests when mouse stops moving.  Default is false.

+ +

maxFeatures

{Integer} Maximum number of features to return from a WMS query.  This sets the feature_count parameter on WMS GetFeatureInfo requests.

+ +

layers

{Array(OpenLayers.Layer.WMS)} The layers to query for feature info.  If omitted, all map WMS layers with a url that matches this url or <layerUrl> will be considered.

+ +

queryVisible

{Boolean} If true, filter out hidden layers when searching the map for layers to query.  Default is false.

+ +

url

{String} The URL of the WMS service to use.  If not provided, the url of the first eligible layer will be used.

+ +

layerUrls

{Array(String)} Optional list of urls for layers that should be queried.  This can be used when the layer url differs from the url used for making GetFeatureInfo requests (in the case of a layer using cached tiles).

+ +

infoFormat

{String} The mimetype to request from the server

+ +

vendorParams

{Object} Additional parameters that will be added to the request, for WMS implementations that support them.  This could e.g. look like

{
+    radius: 5
+}
+ +

format

{OpenLayers.Format} A format for parsing GetFeatureInfo responses.  Default is OpenLayers.Format.WMSGetFeatureInfo.

+ +

formatOptions

{Object} Optional properties to set on the format (if one is not provided in the format property.

+ +

handlerOptions

{Object} Additional options for the handlers used by this control, e.g.

{
+    "click": {delay: 100},
+    "hover": {delay: 300}
+}
+ +

handler

{Object} Reference to the OpenLayers.Handler for this control

+ +

hoverRequest

{OpenLayers.Request} contains the currently running hover request (if any).

+ +

Constants

+ +

EVENT_TYPES

Supported event types (in addition to those from OpenLayers.Control)

getfeatureinfoTriggered when a GetFeatureInfo response is received.  The event object has a text property with the body of the response (String), a features property with an array of the parsed features, an xy property with the position of the mouse click or hover event that triggered the request, and a request property with the request itself.
+ +

Constructor

+ +

<OpenLayers.Control.WMSGetFeatureInfo>

Parameters

options{Object}
+ +

Functions

+ +

activate

activate: function ()

Activates the control.

Returns

{Boolean} The control was effectively activated.

+ +

deactivate

deactivate: function ()

Deactivates the control.

Returns

{Boolean} The control was effectively deactivated.

+ +

getInfoForClick

getInfoForClick: function(evt)

Called on click

Parameters

evt{OpenLayers.Event}
+ +

getInfoForHover

getInfoForHover: function(evt)

Pause callback for the hover handler

Parameters

evt{Object}
+ +

cancelHover

cancelHover: function()

Cancel callback for the hover handler

+ +

findLayers

findLayers: function()

Internal method to get the layers, independent of whether we are inspecting the map or using a client-provided array

+ +

urlMatches

urlMatches: function(url)

Test to see if the provided url matches either the control url or one of the layerUrls.

Parameters

url{String} The url to test.

Returns

{Boolean} The provided url matches the control url or one of the layerUrls.

+ +

request

request: function(clickPosition,
options)

Sends a GetFeatureInfo request to the WMS

Parameters

clickPosition{OpenLayers.Pixel} The position on the map where the mouse event occurred.
options{Object} additional options for this method.

Valid options

  • hover {Boolean} true if we do the request for the hover handler
+ +

handleResponse

handleResponse: function(xy,
request)

Handler for the GetFeatureInfo response.

Parameters

xy{OpenLayers.Pixel} The position on the map where the mouse event occurred.
request{XMLHttpRequest} The request object.
+ +

setMap

setMap: function(map)

Set the map property for the control.

Parameters

map{OpenLayers.Map}
+ +
+ + + + + + + + + + +
Instances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.
Base class for format reading/writing a variety of formats.
{OpenLayers.Format} A format for parsing GetFeatureInfo responses.
Base class to construct a higher-level handler for event sequences.
The OpenLayers.Request namespace contains convenience methods for working with XMLHttpRequests.
activate: function ()
Activates the control.
deactivate: function ()
Deactivates the control.
getInfoForClick: function(evt)
Called on click
getInfoForHover: function(evt)
Pause callback for the hover handler
cancelHover: function()
Cancel callback for the hover handler
findLayers: function()
Internal method to get the layers, independent of whether we are inspecting the map or using a client-provided array
urlMatches: function(url)
Test to see if the provided url matches either the control url or one of the layerUrls.
{String} The URL of the WMS service to use.
{Array(String)} Optional list of urls for layers that should be queried.
request: function(clickPosition,
options)
Sends a GetFeatureInfo request to the WMS
handleResponse: function(xy,
request)
Handler for the GetFeatureInfo response.
setMap: function(map)
Set the map property for the control.
Controls affect the display or behavior of the map.
Class to read GetFeatureInfo responses from Web Mapping Services
Utility functions for event handling.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomBox-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomBox-js.html new file mode 100644 index 0000000..145f765 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomBox-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Control.ZoomBox - OpenLayers + + + + + + + + + +

OpenLayers.Control.ZoomBox

The ZoomBox control enables zooming directly to a given extent, by drawing a box on the map.  The box is drawn by holding down shift, whilst dragging the mouse.

Inherits from

Summary
OpenLayers.Control.ZoomBoxThe ZoomBox control enables zooming directly to a given extent, by drawing a box on the map.
Properties
type{OpenLayers.Control.TYPE}
out{Boolean} Should the control be used for zooming out?
alwaysZoom{Boolean} Always zoom in/out, when box drawed
Functions
draw
zoomBox
+ +

Properties

+ +

type

{OpenLayers.Control.TYPE}

+ +

out

{Boolean} Should the control be used for zooming out?

+ +

alwaysZoom

{Boolean} Always zoom in/out, when box drawed

+ +

Functions

+ +

draw

draw: function()
+ +

zoomBox

zoomBox: function (position)

Parameters

position{OpenLayers.Bounds} or {OpenLayers.Pixel}
+ +
+ + + + + + + + + + +
draw: function()
zoomBox: function (position)
Controls affect the display or behavior of the map.
Instances of this class represent bounding boxes.
This class represents a screen coordinate, in x and y coordinates
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomIn-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomIn-js.html new file mode 100644 index 0000000..016feb7 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomIn-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Control.ZoomIn - OpenLayers + + + + + + + + + +

OpenLayers.Control.ZoomIn

The ZoomIn control is a button to increase the zoom level of a map.

Inherits from

Summary
OpenLayers.Control.ZoomInThe ZoomIn control is a button to increase the zoom level of a map.
Properties
type{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.
Functions
trigger
+ +

Properties

+ +

type

{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.

+ +

Functions

+ +

trigger

trigger: function()
+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
The Panel control is a container for other controls.
trigger: function()
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomOut-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomOut-js.html new file mode 100644 index 0000000..2c1e758 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomOut-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Control.ZoomOut - OpenLayers + + + + + + + + + +

OpenLayers.Control.ZoomOut

The ZoomOut control is a button to decrease the zoom level of a map.

Inherits from

Summary
OpenLayers.Control.ZoomOutThe ZoomOut control is a button to decrease the zoom level of a map.
Properties
type{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.
Functions
trigger
+ +

Properties

+ +

type

{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.

+ +

Functions

+ +

trigger

trigger: function()
+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
The Panel control is a container for other controls.
trigger: function()
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomPanel-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomPanel-js.html new file mode 100644 index 0000000..b1fe212 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomPanel-js.html @@ -0,0 +1,45 @@ + + +OpenLayers.Control.ZoomPanel - OpenLayers + + + + + + + + + +

OpenLayers.Control.ZoomPanel

The ZoomPanel control is a compact collecton of 3 zoom controls: a OpenLayers.Control.ZoomIn, a OpenLayers.Control.ZoomToMaxExtent, and a OpenLayers.Control.ZoomOut.  By default it is drawn in the upper left corner of the map.

Note

If you wish to use this class with the default images and you want it to look nice in ie6, you should add the following, conditionally added css stylesheet to your HTML file:

<!--[if lte IE 6]>
+  <link rel="stylesheet" href="../theme/default/ie6-style.css" type="text/css" />
+<![endif]-->

Inherits from

Summary
OpenLayers.Control.ZoomPanelThe ZoomPanel control is a compact collecton of 3 zoom controls: a OpenLayers.Control.ZoomIn, a OpenLayers.Control.ZoomToMaxExtent, and a OpenLayers.Control.ZoomOut.
Constructor
OpenLayers.Control.ZoomPanelAdd the three zooming controls.
+ +

Constructor

+ +

OpenLayers.Control.ZoomPanel

Add the three zooming controls.

Parameters

options{Object} An optional object whose properties will be used to extend the control.
+ +
+ + + + + + + + + + +
The ZoomIn control is a button to increase the zoom level of a map.
The ZoomToMaxExtent control is a button that zooms out to the maximum extent of the map.
The ZoomOut control is a button to decrease the zoom level of a map.
The Panel control is a container for other controls.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomToMaxExtent-js.html b/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomToMaxExtent-js.html new file mode 100644 index 0000000..43b1a41 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Control/ZoomToMaxExtent-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Control.ZoomToMaxExtent - OpenLayers + + + + + + + + + +

OpenLayers.Control.ZoomToMaxExtent

The ZoomToMaxExtent control is a button that zooms out to the maximum extent of the map.  It is designed to be used with a OpenLayers.Control.Panel.

Inherits from

Summary
OpenLayers.Control.ZoomToMaxExtentThe ZoomToMaxExtent control is a button that zooms out to the maximum extent of the map.
Properties
type{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.
Functions
triggerDo the zoom.
+ +

Properties

+ +

type

{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.

+ +

Functions

+ +

trigger

trigger: function()

Do the zoom.

+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
The Panel control is a container for other controls.
trigger: function()
Do the zoom.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Events-js.html b/openlayers/doc/devdocs/files/OpenLayers/Events-js.html new file mode 100644 index 0000000..b6c20db --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Events-js.html @@ -0,0 +1,151 @@ + + +OpenLayers.Event - OpenLayers + + + + + + + + + +

OpenLayers.Event

Utility functions for event handling.

Summary
OpenLayers.EventUtility functions for event handling.
Properties
observers{Object} A hashtable cache of the event observers.
Constants
KEY_BACKSPACE{int}
KEY_TAB{int}
KEY_RETURN{int}
KEY_ESC{int}
KEY_LEFT{int}
KEY_UP{int}
KEY_RIGHT{int}
KEY_DOWN{int}
KEY_DELETE{int}
Functions
elementCross browser event element detection.
isLeftClickDetermine whether event was caused by a left click.
isRightClickDetermine whether event was caused by a right mouse click.
stopStops an event from propagating.
findElement
observe
stopObservingElementGiven the id of an element to stop observing, cycle through the element’s cached observers, calling stopObserving on each one, skipping those entries which can no longer be removed.
_removeElementObservers
stopObserving
unloadCacheCycle through all the element entries in the events cache and call stopObservingElement on each.
OpenLayers.Events
Constants
BROWSER_EVENTS{Array(String)} supported events
Properties
listeners{Object} Hashtable of Array(Function): events listener functions
object{Object} the code object issuing application events
element{DOMElement} the DOM element receiving browser events
eventTypes{Array(String)} list of support application events
eventHandler{Function} bound event handler attached to elements
fallThrough{Boolean}
includeXY{Boolean} Should the .xy property automatically be created for browser mouse events? 
Functions
clearMouseListenerA version of clearMouseCache that is bound to this instance so that it can be used with OpenLayers.Event.observe and OpenLayers.Event.stopObserving.
Constructor
OpenLayers.EventsConstruct an OpenLayers.Events object.
Functions
destroy
addEventTypeAdd a new event type to this events object.
attachToElement
onConvenience method for registering listeners with a common scope.
registerRegister an event on the events object.
registerPrioritySame as register() but adds the new listener to the front of the events queue instead of to the end.
unConvenience method for unregistering listeners with a common scope.
unregister
removeRemove all listeners for a given event type.
triggerEventTrigger a specified registered event.
handleBrowserEventBasically just a wrapper to the triggerEvent() function, but takes care to set a property ‘xy’ on the event with the current mouse position.
clearMouseCacheClear cached data about the mouse position.
getMousePosition
+ +

Properties

+ +

observers

{Object} A hashtable cache of the event observers.  Keyed by element._eventCacheID

+ +

Constants

+ +

KEY_BACKSPACE

{int}

+ +

KEY_TAB

{int}

+ +

KEY_RETURN

{int}

+ +

KEY_ESC

{int}

+ +

KEY_LEFT

{int}

+ +

KEY_UP

{int}

+ +

KEY_RIGHT

{int}

+ +

KEY_DOWN

{int}

+ +

KEY_DELETE

{int}

+ +

Functions

+ +

element

element: function(event)

Cross browser event element detection.

Parameters

event{Event}

Returns

{DOMElement} The element that caused the event

+ +

isLeftClick

isLeftClick: function(event)

Determine whether event was caused by a left click.

Parameters

event{Event}

Returns

{Boolean}

+ +

isRightClick

isRightClick: function(event)

Determine whether event was caused by a right mouse click.

Parameters

event{Event}

Returns

{Boolean}

+ +

stop

stop: function(event,
allowDefault)

Stops an event from propagating.

Parameters

event{Event}
allowDefault{Boolean} If true, we stop the event chain but still allow the default browser behaviour (text selection, radio-button clicking, etc) Default false
+ +

findElement

findElement: function(event,
tagName)

Parameters

event{Event}
tagName{String}

Returns

{DOMElement} The first node with the given tagName, starting from the node the event was triggered on and traversing the DOM upwards

+ +

observe

observe: function(elementParam,
name,
observer,
useCapture)

Parameters

elementParam{DOMElement || String}
name{String}
observer{function}
useCapture{Boolean}
+ +

stopObservingElement

stopObservingElement: function(elementParam)

Given the id of an element to stop observing, cycle through the element’s cached observers, calling stopObserving on each one, skipping those entries which can no longer be removed.

parameters

elementParam{DOMElement || String}
+ +

_removeElementObservers

_removeElementObservers: function(elementObservers)

Parameters

elementObservers{Array(Object)} Array of (element, name, observer, usecapture) objects, taken directly from hashtable
+ +

stopObserving

stopObserving: function(elementParam,
name,
observer,
useCapture)

Parameters

elementParam{DOMElement || String}
name{String}
observer{function}
useCapture{Boolean}

Returns

{Boolean} Whether or not the event observer was removed

+ +

unloadCache

unloadCache: function()

Cycle through all the element entries in the events cache and call stopObservingElement on each.

+ +

OpenLayers.Events

Summary
Constants
BROWSER_EVENTS{Array(String)} supported events
Properties
listeners{Object} Hashtable of Array(Function): events listener functions
object{Object} the code object issuing application events
element{DOMElement} the DOM element receiving browser events
eventTypes{Array(String)} list of support application events
eventHandler{Function} bound event handler attached to elements
fallThrough{Boolean}
includeXY{Boolean} Should the .xy property automatically be created for browser mouse events? 
Functions
clearMouseListenerA version of clearMouseCache that is bound to this instance so that it can be used with OpenLayers.Event.observe and OpenLayers.Event.stopObserving.
Constructor
OpenLayers.EventsConstruct an OpenLayers.Events object.
Functions
destroy
addEventTypeAdd a new event type to this events object.
attachToElement
onConvenience method for registering listeners with a common scope.
registerRegister an event on the events object.
registerPrioritySame as register() but adds the new listener to the front of the events queue instead of to the end.
unConvenience method for unregistering listeners with a common scope.
unregister
removeRemove all listeners for a given event type.
triggerEventTrigger a specified registered event.
handleBrowserEventBasically just a wrapper to the triggerEvent() function, but takes care to set a property ‘xy’ on the event with the current mouse position.
clearMouseCacheClear cached data about the mouse position.
getMousePosition
+ +

Constants

+ +

BROWSER_EVENTS

{Array(String)} supported events

+ +

Properties

+ +

listeners

{Object} Hashtable of Array(Function): events listener functions

+ +

object

{Object} the code object issuing application events

+ +

element

{DOMElement} the DOM element receiving browser events

+ +

eventTypes

{Array(String)} list of support application events

+ +

eventHandler

{Function} bound event handler attached to elements

+ +

fallThrough

{Boolean}

+ +

includeXY

{Boolean} Should the .xy property automatically be created for browser mouse events?  In general, this should be false.  If it is true, then mouse events will automatically generate a ‘.xy’ property on the event object that is passed.  (Prior to OpenLayers 2.7, this was true by default.)  Otherwise, you can call the getMousePosition on the relevant events handler on the object available via the ‘evt.object’ property of the evt object.  So, for most events, you can call: function named(evt) { this.xy = this.object.events.getMousePosition(evt) }

This option typically defaults to false for performance reasons

when creating an events object whose primary purpose is to manage relatively positioned mouse events within a div, it may make sense to set it to true.

This option is also used to control whether the events object caches offsets.  If this is false, it will not: the reason for this is that it is only expected to be called many times if the includeXY property is set to true.  If you set this to true, you are expected to clear the offset cache manually (using this.clearMouseCache()) if: the border of the element changes the location of the element in the page changes

+ +

Functions

+ +

clearMouseListener

A version of clearMouseCache that is bound to this instance so that it can be used with OpenLayers.Event.observe and OpenLayers.Event.stopObserving.

+ +

Constructor

+ +

OpenLayers.Events

Construct an OpenLayers.Events object.

Parameters

object{Object} The js object to which this Events object is being
added element{DOMElement} A dom element to respond to browser events
eventTypes{Array(String)} Array of custom application events
fallThrough{Boolean} Allow events to fall through after these have been handled?
options{Object} Options for the events object.
+ +

Functions

+ +

destroy

destroy: function ()
+ +

addEventType

addEventType: function(eventName)

Add a new event type to this events object.  If the event type has already been added, do nothing.

Parameters

eventName{String}
+ +

attachToElement

attachToElement: function (element)

Parameters

element{HTMLDOMElement} a DOM element to attach browser events to
+ +

on

on: function(object)

Convenience method for registering listeners with a common scope.

Example use

events.on({
+    "loadstart": loadStartListener,
+    "loadend": loadEndListener,
+    scope: object
+});
+ +

register

register: function (type,
obj,
func)

Register an event on the events object.

When the event is triggered, the ‘func’ function will be called, in the context of ‘obj’.  Imagine we were to register an event, specifying an OpenLayers.Bounds Object as ‘obj’.  When the event is triggered, the context in the callback function will be our Bounds object.  This means that within our callback function, we can access the properties and methods of the Bounds object through the “this” variable.  So our callback could execute something like:

leftStr = "Left: " + this.left;

or

centerStr = "Center: " + this.getCenterLonLat();

Parameters

type{String} Name of the event to register
obj{Object} The object to bind the context to for the callback#.  If no object is specified, default is the Events’s ‘object’ property.
func{Function} The callback function.  If no callback is specified, this function does nothing.
+ +

registerPriority

registerPriority: function (type,
obj,
func)

Same as register() but adds the new listener to the front of the events queue instead of to the end.

TODO: get rid of this in 3.0Decide whether listeners should be called in the order they were registered or in reverse order.

Parameters

type{String} Name of the event to register
obj{Object} The object to bind the context to for the callback#.  If no object is specified, default is the Events’s ‘object’ property.
func{Function} The callback function.  If no callback is specified, this function does nothing.
+ +

un

un: function(object)

Convenience method for unregistering listeners with a common scope.

Example use

events.un({
+    "loadstart": loadStartListener,
+    "loadend": loadEndListener,
+    scope: object
+});
+ +

unregister

unregister: function (type,
obj,
func)

Parameters

type{String}
obj{Object} If none specified, defaults to this.object
func{Function}
+ +

remove

remove: function(type)

Remove all listeners for a given event type.  If type is not registered, does nothing.

Parameters

type{String}
+ +

triggerEvent

triggerEvent: function (type,
evt)

Trigger a specified registered event.

Parameters

type{String}
evt{Event}

Returns

{Boolean} The last listener return.  If a listener returns false, the chain of listeners will stop getting called.

+ +

handleBrowserEvent

handleBrowserEvent: function (evt)

Basically just a wrapper to the triggerEvent() function, but takes care to set a property ‘xy’ on the event with the current mouse position.

Parameters

evt{Event}
+ +

clearMouseCache

clearMouseCache: function()

Clear cached data about the mouse position.  This should be called any time the element that events are registered on changes position within the page.

+ +

getMousePosition

getMousePosition: function (evt)

Parameters

evt{Event}

Returns

{OpenLayers.Pixel} The current xy coordinate of the mouse, adjusted for offsets

+ +
+ + + + + + + + + + +
element: function(event)
Cross browser event element detection.
isLeftClick: function(event)
Determine whether event was caused by a left click.
isRightClick: function(event)
Determine whether event was caused by a right mouse click.
stop: function(event,
allowDefault)
Stops an event from propagating.
findElement: function(event,
tagName)
observe: function(elementParam,
name,
observer,
useCapture)
stopObservingElement: function(elementParam)
Given the id of an element to stop observing, cycle through the element’s cached observers, calling stopObserving on each one, skipping those entries which can no longer be removed.
_removeElementObservers: function(elementObservers)
stopObserving: function(elementParam,
name,
observer,
useCapture)
unloadCache: function()
Cycle through all the element entries in the events cache and call stopObservingElement on each.
clearMouseCache: function()
Clear cached data about the mouse position.
destroy: function ()
addEventType: function(eventName)
Add a new event type to this events object.
attachToElement: function (element)
on: function(object)
Convenience method for registering listeners with a common scope.
register: function (type,
obj,
func)
Register an event on the events object.
registerPriority: function (type,
obj,
func)
Same as register() but adds the new listener to the front of the events queue instead of to the end.
un: function(object)
Convenience method for unregistering listeners with a common scope.
unregister: function (type,
obj,
func)
remove: function(type)
Remove all listeners for a given event type.
triggerEvent: function (type,
evt)
Trigger a specified registered event.
handleBrowserEvent: function (evt)
Basically just a wrapper to the triggerEvent() function, but takes care to set a property ‘xy’ on the event with the current mouse position.
getMousePosition: function (evt)
This class represents a screen coordinate, in x and y coordinates
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Feature-js.html b/openlayers/doc/devdocs/files/OpenLayers/Feature-js.html new file mode 100644 index 0000000..b91843c --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Feature-js.html @@ -0,0 +1,73 @@ + + +OpenLayers.Feature - OpenLayers + + + + + + + + + +

OpenLayers.Feature

Features are combinations of geography and attributes.  The OpenLayers.Feature class specifically combines a marker and a lonlat.

Summary
OpenLayers.FeatureFeatures are combinations of geography and attributes.
Properties
layer{OpenLayers.Layer}
id{String}
lonlat{OpenLayers.LonLat}
data{Object}
marker{OpenLayers.Marker}
popupClass{OpenLayers.Class} The class which will be used to instantiate a new Popup.
popup{OpenLayers.Popup}
Constructor
OpenLayers.FeatureConstructor for features.
Functions
destroynullify references to prevent circular references and memory leaks
onScreen{Boolean} Whether or not the feature is currently visible on screen (based on its ‘lonlat’ property)
createMarkerBased on the data associated with the Feature, create and return a marker object.
destroyMarkerDestroys marker.
createPopupCreates a popup object created from the ‘lonlat’, ‘popupSize’, and ‘popupContentHTML’ properties set in this.data.
destroyPopupDestroys the popup created via createPopup.
+ +

Properties

+ + + +

id

{String}

+ + + +

data

{Object}

+ + + +

popupClass

{OpenLayers.Class} The class which will be used to instantiate a new Popup.  Default is OpenLayers.Popup.AnchoredBubble.

+ + + +

Constructor

+ +

OpenLayers.Feature

Constructor for features.

Parameters

layer{OpenLayers.Layer}
lonlat{OpenLayers.LonLat}
data{Object}

Returns

{OpenLayers.Feature}

+ +

Functions

+ +

destroy

destroy: function()

nullify references to prevent circular references and memory leaks

+ +

onScreen

onScreen:function()

Returns

{Boolean} Whether or not the feature is currently visible on screen (based on its ‘lonlat’ property)

+ +

createMarker

createMarker: function()

Based on the data associated with the Feature, create and return a marker object.

Returns

{OpenLayers.Marker} A Marker Object created from the ‘lonlat’ and ‘icon’ properties set in this.data.  If no ‘lonlat’ is set, returns null.  If no ‘icon’ is set, OpenLayers.Marker() will load the default image.

Notethis.marker is set to return value
+ +

destroyMarker

destroyMarker: function()

Destroys marker.  If user overrides the createMarker() function, s/he should be able to also specify an alternative function for destroying it

+ +

createPopup

createPopup: function(closeBox)

Creates a popup object created from the ‘lonlat’, ‘popupSize’, and ‘popupContentHTML’ properties set in this.data.  It uses this.marker.icon as default anchor.

If no ‘lonlat’ is set, returns null.  If no this.marker has been created, no anchor is sent.

Notethe returned popup object is ‘owned’ by the feature, so you cannot use the popup’s destroy method to discard the popup.  Instead, you must use the feature’s destroyPopup
Notethis.popup is set to return value

Parameters

closeBox{Boolean} create popup with closebox or not

Returns

{OpenLayers.Popup} Returns the created popup, which is also set as ‘popup’ property of this feature.  Will be of whatever type specified by this feature’s ‘popupClass’ property, but must be of type OpenLayers.Popup.

+ +

destroyPopup

destroyPopup: function()

Destroys the popup created via createPopup.

As with the marker, if user overrides the createPopup() function, s/he should also be able to override the destruction

+ +
+ + + + + + + + + + +
This class represents a longitude and latitude pair
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
Base class used to construct all other classes.
A popup is a small div that can opened and closed on the map.
destroy: function()
nullify references to prevent circular references and memory leaks
onScreen:function()
{Boolean} Whether or not the feature is currently visible on screen (based on its ‘lonlat’ property)
createMarker: function()
Based on the data associated with the Feature, create and return a marker object.
destroyMarker: function()
Destroys marker.
createPopup: function(closeBox)
Creates a popup object created from the ‘lonlat’, ‘popupSize’, and ‘popupContentHTML’ properties set in this.data.
destroyPopup: function()
Destroys the popup created via createPopup.
Constructor for features.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Feature/Vector-js.html b/openlayers/doc/devdocs/files/OpenLayers/Feature/Vector-js.html new file mode 100644 index 0000000..0b7f6d9 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Feature/Vector-js.html @@ -0,0 +1,85 @@ + + +OpenLayers.Feature.Vector - OpenLayers + + + + + + + + + +

OpenLayers.Feature.Vector

Vector features use the OpenLayers.Geometry classes as geometry description.  They have an ‘attributes’ property, which is the data object, and a ‘style’ property, the default values of which are defined in the OpenLayers.Feature.Vector.style objects.

Inherits from

Summary
OpenLayers.Feature.VectorVector features use the OpenLayers.Geometry classes as geometry description.
Properties
fid{String}
geometry{OpenLayers.Geometry}
attributes{Object} This object holds arbitrary properties that describe the feature.
bounds{OpenLayers.Bounds} The box bounding that feature’s geometry, that property can be set by an OpenLayers.Format object when deserializing the feature, so in most cases it represents an information set by the server.
state{String}
style{Object}
renderIntent{String} rendering intent currently being used
Constructor
OpenLayers.Feature.VectorCreate a vector feature.
Functions
destroynullify references to prevent circular references and memory leaks
cloneCreate a clone of this vector feature.
onScreenDetermine whether the feature is within the map viewport.
createMarker
destroyMarker
createPopup
atPointDetermins whether the feature intersects with the specified location.
destroyPopup
moveMoves the feature and redraws it at its new location
toStateSets the new state
Constants
OpenLayers.Feature.Vector.styleOpenLayers features can have a number of style attributes.
+ +

Properties

+ +

fid

{String}

+ + + +

attributes

{Object} This object holds arbitrary properties that describe the feature.

+ +

bounds

{OpenLayers.Bounds} The box bounding that feature’s geometry, that property can be set by an OpenLayers.Format object when deserializing the feature, so in most cases it represents an information set by the server.

+ +

state

{String}

+ +

style

{Object}

+ +

renderIntent

{String} rendering intent currently being used

+ +

Constructor

+ +

OpenLayers.Feature.Vector

Create a vector feature.

Parameters

geometry{OpenLayers.Geometry} The geometry that this feature represents.
attributes{Object} An optional object that will be mapped to the attributes property.
style{Object} An optional style object.
+ +

Functions

+ +

destroy

destroy: function()

nullify references to prevent circular references and memory leaks

+ +

clone

clone: function ()

Create a clone of this vector feature.  Does not set any non-standard properties.

Returns

{OpenLayers.Feature.Vector} An exact clone of this vector feature.

+ +

onScreen

onScreen:function(boundsOnly)

Determine whether the feature is within the map viewport.  This method tests for an intersection between the geometry and the viewport bounds.  If a more effecient but less precise geometry bounds intersection is desired, call the method with the boundsOnly parameter true.

Parameters

boundsOnly{Boolean} Only test whether a feature’s bounds intersects the viewport bounds.  Default is false.  If false, the feature’s geometry must intersect the viewport for onScreen to return true.

Returns

{Boolean} The feature is currently visible on screen (optionally based on its bounds if boundsOnly is true).

+ +

createMarker

createMarker: function()
HACKwe need to decide if all vector features should be able to create markers

Returns

{OpenLayers.Marker} For now just returns null

+ +

destroyMarker

destroyMarker: function()
HACKwe need to decide if all vector features should be able to delete markers

If user overrides the createMarker() function, s/he should be able to also specify an alternative function for destroying it

+ +

createPopup

createPopup: function()
HACKwe need to decide if all vector features should be able to create popups

Returns

{OpenLayers.Popup} For now just returns null

+ +

atPoint

atPoint: function(lonlat,
toleranceLon,
toleranceLat)

Determins whether the feature intersects with the specified location.

Parameters

lonlat{OpenLayers.LonLat}
toleranceLon{float} Optional tolerance in Geometric Coords
toleranceLat{float} Optional tolerance in Geographic Coords

Returns

{Boolean} Whether or not the feature is at the specified location

+ +

destroyPopup

destroyPopup: function()
HACKwe need to decide if all vector features should be able to delete popups
+ +

move

move: function(location)

Moves the feature and redraws it at its new location

Parameters

state{OpenLayers.LonLat or OpenLayers.Pixel} the location to which to move the feature.
+ +

toState

toState: function(state)

Sets the new state

Parameters

state{String}
+ +

Constants

+ +

OpenLayers.Feature.Vector.style

OpenLayers features can have a number of style attributes.  The ‘default’ style will typically be used if no other style is specified.  These styles correspond for the most part, to the styling properties defined by the SVG standard.  Information on fill properties: http://www.w3.org/TR/SVG/painting.html#FillProperties Information on stroke properties: http://www.w3.org/TR/SVG/painting.html#StrokeProperties

Symbolizer properties

fill{Boolean} Set to false if no fill is desired.
fillColor{String} Hex fill color.  Default is “#ee9900”.
fillOpacity{Number} Fill opacity (0-1).  Default is 0.4
stroke{Boolean} Set to false if no stroke is desired.
strokeColor{String} Hex stroke color.  Default is “#ee9900”.
strokeOpacity{Number} Stroke opacity (0-1).  Default is 1.
strokeWidth{Number} Pixel stroke width.  Default is 1.
strokeLinecap{String} Stroke cap type.  Default is “round”.  [butt | round | square]
strokeDashstyle{String} Stroke dash style.  Default is “solid”.  [dot | dash | dashdot | longdash | longdashdot | solid]
graphic{Boolean} Set to false if no graphic is desired.
pointRadius{Number} Pixel point radius.  Default is 6.
pointerEvents{String} Default is “visiblePainted”.
cursor{String} Default is “”.
externalGraphic{String} Url to an external graphic that will be used for rendering points.
graphicWidth{Number} Pixel width for sizing an external graphic.
graphicHeight{Number} Pixel height for sizing an external graphic.
graphicOpacity{Number} Opacity (0-1) for an external graphic.
graphicXOffset{Number} Pixel offset along the positive x axis for displacing an external graphic.
graphicYOffset{Number} Pixel offset along the positive y axis for displacing an external graphic.
graphicZIndex{Number} The integer z-index value to use in rendering.
graphicName{String} Named graphic to use when rendering points.  Supported values include “circle” (default), “square”, “star”, “x”, “cross”, “triangle”.
graphicTitle{String} Tooltip for an external graphic.  Only supported in Firefox and Internet Explorer.
backgroundGraphic{String} Url to a graphic to be used as the background under an externalGraphic.
backgroundGraphicZIndex{Number} The integer z-index value to use in rendering the background graphic.
backgroundXOffset{Number} The x offset (in pixels) for the background graphic.
backgroundYOffset{Number} The y offset (in pixels) for the background graphic.
backgroundHeight{Number} The height of the background graphic.  If not provided, the graphicHeight will be used.
backgroundWidth{Number} The width of the background width.  If not provided, the graphicWidth will be used.
label{String} The text for an optional label.  For browsers that use the canvas renderer, this requires either fillText or mozDrawText to be available.
labelAlign{String} Label alignment.  This specifies the insertion point relative to the text.  It is a string composed of two characters.  The first character is for the horizontal alignment, the second for the vertical alignment.  Valid values for horizontal alignment: “l”=left, “c”=center, “r”=right.  Valid values for vertical alignment: “t”=top, “m”=middle, “b”=bottom.  Example values: “lt”, “cm”, “rb”.  The canvas renderer does not support vertical alignment, it will always use “b”.
fontColor{String} The font color for the label, to be provided like CSS.
fontFamily{String} The font family for the label, to be provided like in CSS.
fontSize{String} The font size for the label, to be provided like in CSS.
fontWeight{String} The font weight for the label, to be provided like in CSS.
display{String} Symbolizers will have no effect if display is set to “none”.  All other values have no effect.
+ +
+ + + + + + + + + + +
A Geometry is a description of a geographic object.
Instances of this class represent bounding boxes.
Base class for format reading/writing a variety of formats.
destroy: function()
nullify references to prevent circular references and memory leaks
clone: function ()
Create a clone of this vector feature.
onScreen:function(boundsOnly)
Determine whether the feature is within the map viewport.
createMarker: function()
destroyMarker: function()
createPopup: function()
atPoint: function(lonlat,
toleranceLon,
toleranceLat)
Determins whether the feature intersects with the specified location.
destroyPopup: function()
move: function(location)
Moves the feature and redraws it at its new location
toState: function(state)
Sets the new state
OpenLayers features can have a number of style attributes.
Features are combinations of geography and attributes.
{Object} This object holds arbitrary properties that describe the feature.
Create a vector feature.
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
A popup is a small div that can opened and closed on the map.
This class represents a longitude and latitude pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Feature/WFS-js.html b/openlayers/doc/devdocs/files/OpenLayers/Feature/WFS-js.html new file mode 100644 index 0000000..034da19 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Feature/WFS-js.html @@ -0,0 +1,49 @@ + + +OpenLayers.Feature.WFS - OpenLayers + + + + + + + + + +

OpenLayers.Feature.WFS

WFS handling class, for use as a featureClass on the WFS layer for handling ‘point’ WFS types.  Good for subclassing when creating a custom WFS like XML application.

Inherits from

Summary
OpenLayers.Feature.WFSWFS handling class, for use as a featureClass on the WFS layer for handling ‘point’ WFS types.
Constructor
OpenLayers.Feature.WFSCreate a WFS feature.
Functions
destroynullify references to prevent circular references and memory leaks
processXMLNodeWhen passed an xmlNode, parses it for a GML point, and passes back an object describing that point.
+ +

Constructor

+ +

OpenLayers.Feature.WFS

Create a WFS feature.

Parameters

layer{OpenLayers.Layer}
xmlNode{XMLNode}
+ +

Functions

+ +

destroy

destroy: function()

nullify references to prevent circular references and memory leaks

+ +

processXMLNode

processXMLNode: function(xmlNode)

When passed an xmlNode, parses it for a GML point, and passes back an object describing that point.

For subclasses of Feature.WFS, this is the feature to change.

Parameters

xmlNode{XMLNode}

Returns

{Object} Data Object with ‘id’, ‘lonlat’, and private properties set

+ +
+ + + + + + + + + + +
destroy: function()
nullify references to prevent circular references and memory leaks
processXMLNode: function(xmlNode)
When passed an xmlNode, parses it for a GML point, and passes back an object describing that point.
Features are combinations of geography and attributes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Filter-js.html b/openlayers/doc/devdocs/files/OpenLayers/Filter-js.html new file mode 100644 index 0000000..b761dc2 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Filter-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Filter - OpenLayers + + + + + + + + + +

OpenLayers.Filter

This class represents an OGC Filter.

Summary
OpenLayers.FilterThis class represents an OGC Filter.
Constructor
OpenLayers.FilterThis is an abstract class.
Functions
destroyRemove reference to anything added.
evaluateEvaluates this filter in a specific context.
cloneClones this filter.
+ +

Constructor

+ +

OpenLayers.Filter

This is an abstract class.  Create an instance of a filter subclass.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Returns

{OpenLayers.Filter}

+ +

Functions

+ +

destroy

destroy: function()

Remove reference to anything added.

+ +

evaluate

evaluate: function(context)

Evaluates this filter in a specific context.  Should be implemented by subclasses.

Parameters

context{Object} Context to use in evaluating the filter.

Returns

{Boolean} The filter applies.

+ +

clone

clone: function()

Clones this filter.  Should be implementted by subclasses.

Returns

{OpenLayers.Filter} Clone of this filter.

+ +
+ + + + + + + + + + +
destroy: function()
Remove reference to anything added.
evaluate: function(context)
Evaluates this filter in a specific context.
clone: function()
Clones this filter.
This is an abstract class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Filter/Comparison-js.html b/openlayers/doc/devdocs/files/OpenLayers/Filter/Comparison-js.html new file mode 100644 index 0000000..6490e54 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Filter/Comparison-js.html @@ -0,0 +1,67 @@ + + +OpenLayers.Filter.Comparison - OpenLayers + + + + + + + + + +

OpenLayers.Filter.Comparison

This class represents a comparison filter.

Inherits from

Summary
OpenLayers.Filter.ComparisonThis class represents a comparison filter.
Properties
type{String} type: type of the comparison.
property{String} name of the context property to compare
value{Number} or {String} comparison value for binary comparisons.
matchCase{Boolean} Force case sensitive searches for EQUAL_TO and NOT_EQUAL_TO comparisons.
lowerBoundary{Number} or {String} lower boundary for between comparisons.
upperBoundary{Number} or {String} upper boundary for between comparisons.
Constructor
OpenLayers.Filter.ComparisonCreates a comparison rule.
Functions
evaluateEvaluates this filter in a specific context.
value2regexConverts the value of this rule into a regular expression string, according to the wildcard characters specified.
regex2valueConvert the value of this rule from a regular expression string into an ogc literal string using a wildCard of *, a singleChar of ., and an escape of !.
cloneClones this filter.
+ +

Properties

+ +

type

{String} type: type of the comparison.  This is one of

  • OpenLayers.Filter.Comparison.EQUAL_TO = “==”;
  • OpenLayers.Filter.Comparison.NOT_EQUAL_TO = “!=”;
  • OpenLayers.Filter.Comparison.LESS_THAN = “<”;
  • OpenLayers.Filter.Comparison.GREATER_THAN = “>”;
  • OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO = “<=”;
  • OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO = “>=”;
  • OpenLayers.Filter.Comparison.BETWEEN = “..”;
  • OpenLayers.Filter.Comparison.LIKE = “~”;
+ +

property

{String} name of the context property to compare

+ +

value

{Number} or {String} comparison value for binary comparisons.  In the case of a String, this can be a combination of text and propertyNames in the form “literal ${propertyName}”

+ +

matchCase

{Boolean} Force case sensitive searches for EQUAL_TO and NOT_EQUAL_TO comparisons.  The Filter Encoding 1.1 specification added a matchCase attribute to ogc:PropertyIsEqualTo and ogc:PropertyIsNotEqualTo elements.  This property will be serialized with those elements only if using the v1.1.0 filter format.  However, when evaluating filters here, the matchCase property will always be respected (for EQUAL_TO and NOT_EQUAL_TO).  Default is true.

+ +

lowerBoundary

{Number} or {String} lower boundary for between comparisons.  In the case of a String, this can be a combination of text and propertyNames in the form “literal ${propertyName}”

+ +

upperBoundary

{Number} or {String} upper boundary for between comparisons.  In the case of a String, this can be a combination of text and propertyNames in the form “literal ${propertyName}”

+ +

Constructor

+ +

OpenLayers.Filter.Comparison

Creates a comparison rule.

Parameters

options{Object} An optional object with properties to set on the rule

Returns

{OpenLayers.Filter.Comparison}

+ +

Functions

+ +

evaluate

evaluate: function(context)

Evaluates this filter in a specific context.  Should be implemented by subclasses.

Parameters

context{Object} Context to use in evaluating the filter.

Returns

{Boolean} The filter applies.

+ +

value2regex

value2regex: function(wildCard,
singleChar,
escapeChar)

Converts the value of this rule into a regular expression string, according to the wildcard characters specified.  This method has to be called after instantiation of this class, if the value is not a regular expression already.

Parameters

wildCard{<Char>} wildcard character in the above value, default is “*”
singleChar{<Char>) single-character wildcard in the above value default is “.”
escape{<Char>) escape character in the above value, default is “!”

Returns

{String} regular expression string

+ +

regex2value

regex2value: function()

Convert the value of this rule from a regular expression string into an ogc literal string using a wildCard of *, a singleChar of ., and an escape of !.  Leaves the value property unmodified.

Returns

{String} A string value.

+ +

clone

clone: function()

Clones this filter.

Returns

{OpenLayers.Filter.Comparison} Clone of this filter.

+ +
+ + + + + + + + + + +
evaluate: function(context)
Evaluates this filter in a specific context.
value2regex: function(wildCard,
singleChar,
escapeChar)
Converts the value of this rule into a regular expression string, according to the wildcard characters specified.
regex2value: function()
Convert the value of this rule from a regular expression string into an ogc literal string using a wildCard of *, a singleChar of ., and an escape of !.
clone: function()
Clones this filter.
This class represents an OGC Filter.
Creates a comparison rule.
{Number} or {String} comparison value for binary comparisons.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Filter/FeatureId-js.html b/openlayers/doc/devdocs/files/OpenLayers/Filter/FeatureId-js.html new file mode 100644 index 0000000..a18a64e --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Filter/FeatureId-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Filter.FeatureId - OpenLayers + + + + + + + + + +

OpenLayers.Filter.FeatureId

This class represents a ogc:FeatureId Filter, as being used for rule-based SLD styling

Inherits from

Summary
OpenLayers.Filter.FeatureIdThis class represents a ogc:FeatureId Filter, as being used for rule-based SLD styling
Properties
fids{Array(String)} Feature Ids to evaluate this rule against.
Constructor
OpenLayers.Filter.FeatureIdCreates an ogc:FeatureId rule.
Functions
evaluateevaluates this rule for a specific feature
cloneClones this filter.
+ +

Properties

+ +

fids

{Array(String)} Feature Ids to evaluate this rule against.  To be passed To be passed inside the params object.

+ +

Constructor

+ +

OpenLayers.Filter.FeatureId

Creates an ogc:FeatureId rule.

Parameters

options{Object} An optional object with properties to set on the rule

Returns

{OpenLayers.Filter.FeatureId}

+ +

Functions

+ +

evaluate

evaluate: function(feature)

evaluates this rule for a specific feature

Parameters

feature{OpenLayers.Feature} feature to apply the rule to.  For vector features, the check is run against the fid, for plain features against the id.

Returns

{Boolean} true if the rule applies, false if it does not

+ +

clone

clone: function()

Clones this filter.

Returns

{OpenLayers.Filter.FeatureId} Clone of this filter.

+ +
+ + + + + + + + + + +
evaluate: function(feature)
evaluates this rule for a specific feature
clone: function()
Clones this filter.
This class represents an OGC Filter.
Creates an ogc:FeatureId rule.
Features are combinations of geography and attributes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Filter/Logical-js.html b/openlayers/doc/devdocs/files/OpenLayers/Filter/Logical-js.html new file mode 100644 index 0000000..0a7fcad --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Filter/Logical-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Filter.Logical - OpenLayers + + + + + + + + + +

OpenLayers.Filter.Logical

This class represents ogc:And, ogc:Or and ogc:Not rules.

Inherits from

Summary
OpenLayers.Filter.LogicalThis class represents ogc:And, ogc:Or and ogc:Not rules.
Properties
filters{Array(OpenLayers.Filter)} Child filters for this filter.
type
Constructor
OpenLayers.Filter.LogicalCreates a logical filter (And, Or, Not).
Functions
destroyRemove reference to child filters.
evaluateEvaluates this filter in a specific context.
cloneClones this filter.
+ +

Properties

+ +

filters

{Array(OpenLayers.Filter)} Child filters for this filter.

+ +

type

{String} type of logical operator.  Available types are

  • OpenLayers.Filter.Logical.AND = “&&”;
  • OpenLayers.Filter.Logical.OR = “||”;
  • OpenLayers.Filter.Logical.NOT = “!”;
+ +

Constructor

+ +

OpenLayers.Filter.Logical

Creates a logical filter (And, Or, Not).

Parameters

options{Object} An optional object with properties to set on the filter.

Returns

{OpenLayers.Filter.Logical}

+ +

Functions

+ +

destroy

destroy: function()

Remove reference to child filters.

+ +

evaluate

evaluate: function(context)

Evaluates this filter in a specific context.  Should be implemented by subclasses.

Parameters

context{Object} Context to use in evaluating the filter.

Returns

{Boolean} The filter applies.

+ +

clone

clone: function()

Clones this filter.

Returns

{OpenLayers.Filter.Logical} Clone of this filter.

+ +
+ + + + + + + + + + +
This class represents an OGC Filter.
destroy: function()
Remove reference to child filters.
evaluate: function(context)
Evaluates this filter in a specific context.
clone: function()
Clones this filter.
Creates a logical filter (And, Or, Not).
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Filter/Spatial-js.html b/openlayers/doc/devdocs/files/OpenLayers/Filter/Spatial-js.html new file mode 100644 index 0000000..067ca44 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Filter/Spatial-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Filter.Spatial - OpenLayers + + + + + + + + + +

OpenLayers.Filter.Spatial

This class represents a spatial filter.  Currently implemented: BBOX, DWithin and Intersects

Inherits from

Summary
OpenLayers.Filter.SpatialThis class represents a spatial filter.
Properties
type{String} Type of spatial filter.
property{String} Name of the context property to compare.
value{OpenLayers.Bounds || OpenLayers.Geometry} The bounds or geometry to be used by the filter.
distance{Number} The distance to use in a DWithin spatial filter.
distanceUnits{String} The units to use for the distance, e.g.
Constructor
OpenLayers.Filter.SpatialCreates a spatial filter.
Functions
evaluateEvaluates this filter for a specific feature.
cloneClones this filter.
+ +

Properties

+ +

type

{String} Type of spatial filter.

The type should be one of

  • OpenLayers.Filter.Spatial.BBOX
  • OpenLayers.Filter.Spatial.INTERSECTS
  • OpenLayers.Filter.Spatial.DWITHIN
  • OpenLayers.Filter.Spatial.WITHIN
  • OpenLayers.Filter.Spatial.CONTAINS
+ +

property

{String} Name of the context property to compare.

+ +

value

{OpenLayers.Bounds || OpenLayers.Geometry} The bounds or geometry to be used by the filter.  Use bounds for BBOX filters and geometry for INTERSECTS or DWITHIN filters.

+ +

distance

{Number} The distance to use in a DWithin spatial filter.

+ +

distanceUnits

{String} The units to use for the distance, e.g.  ‘m’.

+ +

Constructor

+ +

OpenLayers.Filter.Spatial

Creates a spatial filter.

Parameters

options{Object} An optional object with properties to set on the filter.

Returns

{OpenLayers.Filter.Spatial}

+ +

Functions

+ +

evaluate

evaluate: function(feature)

Evaluates this filter for a specific feature.

Parameters

feature{OpenLayers.Feature.Vector} feature to apply the filter to.

Returns

{Boolean} The feature meets filter criteria.

+ +

clone

clone: function()

Clones this filter.

Returns

{OpenLayers.Filter.Spatial} Clone of this filter.

+ +
+ + + + + + + + + + +
Instances of this class represent bounding boxes.
A Geometry is a description of a geographic object.
evaluate: function(feature)
Evaluates this filter for a specific feature.
clone: function()
Clones this filter.
This class represents an OGC Filter.
Creates a spatial filter.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format-js.html new file mode 100644 index 0000000..71454ce --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Format - OpenLayers + + + + + + + + + +

OpenLayers.Format

Base class for format reading/writing a variety of formats.  Subclasses of OpenLayers.Format are expected to have read and write methods.

Summary
OpenLayers.FormatBase class for format reading/writing a variety of formats.
Properties
options{Object} A reference to options passed to the constructor.
externalProjection{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.
internalProjection{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.
data{Object} When keepData is true, this is the parsed string sent to read.
keepData{Object} Maintain a reference (data) to the most recently read data.
Constructor
OpenLayers.FormatInstances of this class are not useful.
Functions
destroyClean up.
readRead data from a string, and return an object whose type depends on the subclass.
writeAccept an object, and return a string.
+ +

Properties

+ +

options

{Object} A reference to options passed to the constructor.

+ +

externalProjection

{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.  The externalProjection is the projection used by the content which is passed into read or which comes out of write.  In order to reproject, a projection transformation function for the specified projections must be available.  This support may be provided via proj4js or via a custom transformation function.  See {OpenLayers.Projection.addTransform} for more information on custom transformations.

+ +

internalProjection

{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.  The internalProjection is the projection used by the geometries which are returned by read or which are passed into write.  In order to reproject, a projection transformation function for the specified projections must be available.  This support may be provided via proj4js or via a custom transformation function.  See {OpenLayers.Projection.addTransform} for more information on custom transformations.

+ +

data

{Object} When keepData is true, this is the parsed string sent to read.

+ +

keepData

{Object} Maintain a reference (data) to the most recently read data.  Default is false.

+ +

Constructor

+ +

OpenLayers.Format

Instances of this class are not useful.  See one of the subclasses.

Parameters

options{Object} An optional object with properties to set on the format

Valid options

keepData{Boolean} If true, upon read, the data property will be set to the parsed object (e.g. the json or xml object).

Returns

An instance of OpenLayers.Format

+ +

Functions

+ +

destroy

destroy: function()

Clean up.

+ +

read

read: function(data)

Read data from a string, and return an object whose type depends on the subclass.

Parameters

data{string} Data to read/parse.

Returns

Depends on the subclass

+ +

write

write: function(object)

Accept an object, and return a string.

Parameters

object{Object} Object to be serialized

Returns

{String} A string representation of the object.

+ +
+ + + + + + + + + + +
Class for coordinate transforms between coordinate systems.
{Object} Maintain a reference (data) to the most recently read data.
read: function(data)
Read data from a string, and return an object whose type depends on the subclass.
{Object} When keepData is true, this is the parsed string sent to read.
destroy: function()
Clean up.
write: function(object)
Accept an object, and return a string.
OpenLayers.Projection.addTransform = function(from,
to,
method)
Set a custom transform method between two projections.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/ArcXML-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/ArcXML-js.html new file mode 100644 index 0000000..646becb --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/ArcXML-js.html @@ -0,0 +1,73 @@ + + +OpenLayers.Format.ArcXML - OpenLayers + + + + + + + + + +

OpenLayers.Format.ArcXML

Read/Wite ArcXML.  Create a new instance with the OpenLayers.Format.ArcXML constructor.

Inherits from

Summary
OpenLayers.Format.ArcXMLRead/Wite ArcXML.
Properties
fontStyleKeys{Array} List of keys used in font styling.
requestA get_image request destined for an ArcIMS server.
responseA parsed response from an ArcIMS server.
Constructor
OpenLayers.Format.ArcXMLCreate a new parser/writer for ArcXML.
Functions
parseEnvelopeParse an array of coordinates into an ArcXML envelope structure.
addLayersAdd a collection of layers to another collection of layers.
addImageSizeSet the size of the requested image.
addCoordSysAdd the coordinate system information to an object.
iserrorCheck to see if the response from the server was an error.
readRead data from a string, and return an response.
writeGenerate an ArcXml document string for sending to an ArcIMS server.
parseResponseTake an ArcXML response, and parse in into this object’s internal properties.
parseAttributes
parsePointGeometry
+ +

Properties

+ +

fontStyleKeys

{Array} List of keys used in font styling.

+ +

request

A get_image request destined for an ArcIMS server.

+ +

response

A parsed response from an ArcIMS server.

+ +

Constructor

+ +

OpenLayers.Format.ArcXML

Create a new parser/writer for ArcXML.  Create an instance of this class to begin authoring a request to an ArcIMS service.  This is used primarily by the ArcIMS layer, but could be used to do other wild stuff, like geocoding.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

parseEnvelope

parseEnvelope: function(env,
arr)

Parse an array of coordinates into an ArcXML envelope structure.

Parameters

env{Object} An envelope object that will contain the parsed coordinates.
arr{Array(double)} An array of coordinates in the order: [ minx, miny, maxx, maxy ]
+ +

addLayers

addLayers: function(ll,
lyrs)

Add a collection of layers to another collection of layers.  Each layer in the list is tuple of { id, visible }.  These layer collections represent the /ARCXML/REQUEST/get_image/PROPERTIES/LAYERLIST/LAYERDEF items in ArcXML

TODO: Add support for dynamic layer rendering.

Parameters

ll{Array({id,visible})} A list of layer definitions.
lyrs{Array({id,visible})} A list of layer definitions.
+ +

addImageSize

addImageSize: function(imsize,
olsize)

Set the size of the requested image.

Parameters

imsize{Object} An ArcXML imagesize object.
olsize{OpenLayers.Size} The image size to set.
+ +

addCoordSys

addCoordSys: function(featOrFilt,
fsys)

Add the coordinate system information to an object.  The object may be

Parameters

featOrFilt{Object} A featurecoordsys or filtercoordsys ArcXML structure.
fsys{String} or {OpenLayers.Projection} or {filtercoordsys} or {featurecoordsys} A projection representation.  If it’s a {String}, the value is assumed to be the SRID.  If it’s a {OpenLayers.Projection} AND Proj4js is available, the projection number and name are extracted from there.  If it’s a filter or feature ArcXML structure, it is copied.
+ +

iserror

iserror: function(data)

Check to see if the response from the server was an error.

Parameters

data{String} or {DOMElement} data to read/parse.  If nothing is supplied, the current response is examined.

Returns

{Boolean} true if the response was an error.

+ +

read

read: function(data)

Read data from a string, and return an response.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{OpenLayers.Format.ArcXML.Response} An ArcXML response.  Note that this response data may change in the future.

+ +

write

write: function(request)

Generate an ArcXml document string for sending to an ArcIMS server.

Returns

{String} A string representing the ArcXML document request.

+ +

parseResponse

parseResponse: function(data)

Take an ArcXML response, and parse in into this object’s internal properties.

Parameters

data{String} or {DOMElement} The ArcXML response, as either a string or the top level DOMElement of the response.
+ +

parseAttributes

parseAttributes: function(node,
type)

Parameters

node{<DOMElement>} An element to parse attributes from.

Returns

{Object} An attributes object, with properties set to attribute values.

+ +

parsePointGeometry

parsePointGeometry: function(node)

Parameters

node{<DOMElement>} An element to parse <COORDS> or <POINT> arcxml data from.

Returns

{OpenLayers.Geometry.LinearRing} A linear ring represented by the node’s points.

+ +
+ + + + + + + + + + +
parseEnvelope: function(env,
arr)
Parse an array of coordinates into an ArcXML envelope structure.
addLayers: function(ll,
lyrs)
Add a collection of layers to another collection of layers.
addImageSize: function(imsize,
olsize)
Set the size of the requested image.
addCoordSys: function(featOrFilt,
fsys)
Add the coordinate system information to an object.
iserror: function(data)
Check to see if the response from the server was an error.
read: function(data)
Read data from a string, and return an response.
write: function(request)
Generate an ArcXml document string for sending to an ArcIMS server.
parseResponse: function(data)
Take an ArcXML response, and parse in into this object’s internal properties.
parseAttributes: function(node,
type)
parsePointGeometry: function(node)
Create a new parser/writer for ArcXML.
Base class for format reading/writing a variety of formats.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/ArcXML/Features-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/ArcXML/Features-js.html new file mode 100644 index 0000000..2e5627b --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/ArcXML/Features-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.ArcXML.Features - OpenLayers + + + + + + + + + +

OpenLayers.Format.ArcXML.Features

Read/Wite ArcXML features.  Create a new instance with the OpenLayers.Format.ArcXML.Features constructor.

Inherits from

Summary
OpenLayers.Format.ArcXML.FeaturesRead/Wite ArcXML features.
Constructor
OpenLayers.Format.ArcXML.FeaturesCreate a new parser/writer for ArcXML Features.
Functions
readRead data from a string of ArcXML, and return a set of OpenLayers features.
+ +

Constructor

+ +

OpenLayers.Format.ArcXML.Features

Create a new parser/writer for ArcXML Features.  Create an instance of this class to get a set of features from an ArcXML response.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read data from a string of ArcXML, and return a set of OpenLayers features.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array(OpenLayers.Feature.Vector)} A collection of features.

+ +
+ + + + + + + + + + +
read: function(data)
Read data from a string of ArcXML, and return a set of OpenLayers features.
Create a new parser/writer for ArcXML Features.
Read and write XML.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/Filter-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/Filter-js.html new file mode 100644 index 0000000..8d7bf08 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/Filter-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Format.Filter - OpenLayers + + + + + + + + + +

OpenLayers.Format.Filter

Read/Wite ogc:Filter.  Create a new instance with the OpenLayers.Format.Filter constructor.

Inherits from

Summary
OpenLayers.Format.FilterRead/Wite ogc:Filter.
Properties
defaultVersion{String} Version number to assume if none found.
version{String} Specify a version string if one is known.
parser{Object} Instance of the versioned parser.
Constructor
OpenLayers.Format.FilterCreate a new parser for Filter.
Functions
writeWrite an ogc:Filter given a filter object.
readRead and Filter doc and return an object representing the Filter.
+ +

Properties

+ +

defaultVersion

{String} Version number to assume if none found.  Default is “1.0.0”.

+ +

version

{String} Specify a version string if one is known.

+ +

parser

{Object} Instance of the versioned parser.  Cached for multiple read and write calls of the same version.

+ +

Constructor

+ +

OpenLayers.Format.Filter

Create a new parser for Filter.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

write

write: function(filter,
options)

Write an ogc:Filter given a filter object.

Parameters

filter{OpenLayers.Filter} An filter.
options{Object} Optional configuration object.

Returns

{Elment} An ogc:Filter element node.

+ +

read

read: function(data)

Read and Filter doc and return an object representing the Filter.

Parameters

data{String | DOMElement} Data to read.

Returns

{OpenLayers.Filter} A filter object.

+ +
+ + + + + + + + + + +
write: function(filter,
options)
Write an ogc:Filter given a filter object.
read: function(data)
Read and Filter doc and return an object representing the Filter.
Create a new parser for Filter.
Read and write XML.
This class represents an OGC Filter.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/Filter/v1-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/Filter/v1-js.html new file mode 100644 index 0000000..c56d643 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/Filter/v1-js.html @@ -0,0 +1,69 @@ + + +OpenLayers.Format.Filter.v1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.Filter.v1

Superclass for Filter version 1 parsers.

Inherits from

Summary
OpenLayers.Format.Filter.v1Superclass for Filter version 1 parsers.
Properties
namespaces{Object} Mapping of namespace aliases to namespace URIs.
defaultPrefix
schemaLocation{String} Schema location for a particular minor version.
Constructor
OpenLayers.Format.Filter.v1Instances of this class are not created directly.
Functions and Properties
read
readersContains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
readSpatialRead a {OpenLayers.Filter.Spatial} filter.
readOgcExpressionLimited support for OGC expressions.
write
writersAs a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
getFilterType
filterMap{Object} Contains a member for each filter type.
+ +

Properties

+ +

namespaces

{Object} Mapping of namespace aliases to namespace URIs.

+ +

defaultPrefix

+ +

schemaLocation

{String} Schema location for a particular minor version.

+ +

Constructor

+ +

OpenLayers.Format.Filter.v1

Instances of this class are not created directly.  Use the OpenLayers.Format.Filter constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions and Properties

+ +

read

read: function(data)

Parameters

data{DOMElement} A Filter document element.

Returns

{OpenLayers.Filter} A filter object.

+ +

readers

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.  The function will be applied in the scope of this parser with two arguments: the node being read and a context object passed from the parent.

+ +

readSpatial

readSpatial: function(node,
obj,
type)

Read a {OpenLayers.Filter.Spatial} filter.

Parameters

node{DOMElement} A DOM element that contains an ogc:expression.
obj{Object} The target object.
type{String} One of the OpenLayers.Filter.Spatial.* constants.

Returns

{OpenLayers.Filter.Spatial} The created filter.

+ +

readOgcExpression

readOgcExpression: function(node)

Limited support for OGC expressions.

Parameters

node{DOMElement} A DOM element that contains an ogc:expression.

Returns

{String} A value to be used in a symbolizer.

+ +

write

write: function(filter)

Parameters

filter{OpenLayers.Filter} A filter object.

Returns

{DOMElement} An ogc:Filter element.

+ +

writers

As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.

+ +

getFilterType

getFilterType: function(filter)
+ +

filterMap

{Object} Contains a member for each filter type.  Values are node names for corresponding OGC Filter child elements.

+ +
+ + + + + + + + + + +
read: function(data)
readSpatial: function(node,
obj,
type)
Read a {OpenLayers.Filter.Spatial} filter.
This class represents a spatial filter.
readOgcExpression: function(node)
Limited support for OGC expressions.
write: function(filter)
getFilterType: function(filter)
Read and write XML.
Read/Wite ogc:Filter.
This class represents an OGC Filter.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/Filter/v1_0_0-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/Filter/v1_0_0-js.html new file mode 100644 index 0000000..a9d57cc --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/Filter/v1_0_0-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Format.Filter.v1_0_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.Filter.v1_0_0

Write ogc:Filter version 1.0.0.

Inherits from

Summary
OpenLayers.Format.Filter.v1_0_0Write ogc:Filter version 1.0.0.
Constants
VERSION{String} 1.0.0
Properties
schemaLocation{String} http://www.opengis.net/ogc/filter/1.0.0/filter.xsd
Constructor
OpenLayers.Format.Filter.v1_0_0Instances of this class are not created directly.
Properties
readersContains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
writersAs a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
Functions
writeSpatialRead a {OpenLayers.Filter.Spatial} filter and converts it into XML.
+ +

Constants

+ +

VERSION

{String} 1.0.0

+ +

Properties

+ + + +

Constructor

+ +

OpenLayers.Format.Filter.v1_0_0

Instances of this class are not created directly.  Use the OpenLayers.Format.Filter constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Properties

+ +

readers

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.  The function will be applied in the scope of this parser with two arguments: the node being read and a context object passed from the parent.

+ +

writers

As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.

+ +

Functions

+ +

writeSpatial

writeSpatial: function(filter,
name)

Read a {OpenLayers.Filter.Spatial} filter and converts it into XML.

Parameters

filter{OpenLayers.Filter.Spatial} The filter.
name{String} Name of the generated XML element.

Returns

{DOMElement} The created XML element.

+ +
+ + + + + + + + + + +
writeSpatial: function(filter,
name)
Read a {OpenLayers.Filter.Spatial} filter and converts it into XML.
This class represents a spatial filter.
Parses GML version 2.
Superclass for Filter version 1 parsers.
Read/Wite ogc:Filter.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/Filter/v1_1_0-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/Filter/v1_1_0-js.html new file mode 100644 index 0000000..ab911ae --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/Filter/v1_1_0-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Format.Filter.v1_1_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.Filter.v1_1_0

Write ogc:Filter version 1.1.0.

Differences from the v1.0.0 parser

  • uses GML v3 instead of GML v2
  • reads matchCase attribute on ogc:PropertyIsEqual and ogc:PropertyIsNotEqualelements.
  • writes matchCase attribute from comparison filters of type EQUAL_TO and type NOT_EQUAL_TO.

Inherits from

Summary
OpenLayers.Format.Filter.v1_1_0Write ogc:Filter version 1.1.0.
Constants
VERSION{String} 1.1.0
Properties
schemaLocation{String} http://www.opengis.net/ogc/filter/1.1.0/filter.xsd
Constructor
OpenLayers.Format.Filter.v1_1_0Instances of this class are not created directly.
Properties
readersContains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
writersAs a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
Functions
writeSpatialRead a {OpenLayers.Filter.Spatial} filter and converts it into XML.
+ +

Constants

+ +

VERSION

{String} 1.1.0

+ +

Properties

+ + + +

Constructor

+ +

OpenLayers.Format.Filter.v1_1_0

Instances of this class are not created directly.  Use the OpenLayers.Format.Filter constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Properties

+ +

readers

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.  The function will be applied in the scope of this parser with two arguments: the node being read and a context object passed from the parent.

+ +

writers

As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.

+ +

Functions

+ +

writeSpatial

writeSpatial: function(filter,
name)

Read a {OpenLayers.Filter.Spatial} filter and converts it into XML.

Parameters

filter{OpenLayers.Filter.Spatial} The filter.
name{String} Name of the generated XML element.

Returns

{DOMElement} The created XML element.

+ +
+ + + + + + + + + + +
writeSpatial: function(filter,
name)
Read a {OpenLayers.Filter.Spatial} filter and converts it into XML.
This class represents a spatial filter.
Superclass for Filter version 1 parsers.
Read/Wite ogc:Filter.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/GML-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/GML-js.html new file mode 100644 index 0000000..3d10341 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/GML-js.html @@ -0,0 +1,111 @@ + + +OpenLayers.Format.GML - OpenLayers + + + + + + + + + +

OpenLayers.Format.GML

Read/Wite GML.  Create a new instance with the OpenLayers.Format.GML constructor.  Supports the GML simple features profile.

Inherits from

Summary
OpenLayers.Format.GMLRead/Wite GML.
Properties
featureNS{String} Namespace used for feature attributes.
featurePrefix{String} Namespace alias (or prefix) for feature nodes.
featureName{String} Element name for features.
layerName{String} Name of data layer.
geometryName{String} Name of geometry element.
collectionName{String} Name of featureCollection element.
gmlns{String} GML Namespace.
extractAttributes{Boolean} Extract attributes from GML.
xy{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
Constructor
OpenLayers.Format.GMLCreate a new parser for GML.
Functions and Properties
readRead data from a string, and return a list of features.
parseFeatureThis function is the core of the GML parsing code in OpenLayers.
parseGeometryProperties of this object are the functions that parse geometries based on their type.
parseGeometry.pointGiven a GML node representing a point geometry, create an OpenLayers point geometry.
parseGeometry.multipointGiven a GML node representing a multipoint geometry, create an OpenLayers multipoint geometry.
parseGeometry.linestringGiven a GML node representing a linestring geometry, create an OpenLayers linestring geometry.
parseGeometry.multilinestringGiven a GML node representing a multilinestring geometry, create an OpenLayers multilinestring geometry.
parseGeometry.polygonGiven a GML node representing a polygon geometry, create an OpenLayers polygon geometry.
parseGeometry.multipolygonGiven a GML node representing a multipolygon geometry, create an OpenLayers multipolygon geometry.
parseAttributes
writeGenerate a GML document string given a list of features.
createFeatureXMLAccept an OpenLayers.Feature.Vector, and build a GML node for it.
buildGeometryNode
buildGeometryObject containing methods to do the actual geometry node building based on geometry type.
buildGeometry.pointGiven an OpenLayers point geometry, create a GML point.
buildGeometry.multipointGiven an OpenLayers multipoint geometry, create a GML multipoint.
buildGeometry.linestringGiven an OpenLayers linestring geometry, create a GML linestring.
buildGeometry.multilinestringGiven an OpenLayers multilinestring geometry, create a GML multilinestring.
buildGeometry.linearringGiven an OpenLayers linearring geometry, create a GML linearring.
buildGeometry.polygonGiven an OpenLayers polygon geometry, create a GML polygon.
buildGeometry.multipolygonGiven an OpenLayers multipolygon geometry, create a GML multipolygon.
buildGeometry.boundsGiven an OpenLayers bounds, create a GML box.
buildCoordinatesbuilds the coordinates XmlNode
+ +

Properties

+ +

featureNS

{String} Namespace used for feature attributes.  Default is “http://mapserver.gis.umn.edu/mapserver”.

+ +

featurePrefix

{String} Namespace alias (or prefix) for feature nodes.  Default is “feature”.

+ +

featureName

{String} Element name for features.  Default is “featureMember”.

+ +

layerName

{String} Name of data layer.  Default is “features”.

+ +

geometryName

{String} Name of geometry element.  Defaults to “geometry”.

+ +

collectionName

{String} Name of featureCollection element.

+ +

gmlns

{String} GML Namespace.

+ +

extractAttributes

{Boolean} Extract attributes from GML.

+ +

xy

{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.

+ +

Constructor

+ +

OpenLayers.Format.GML

Create a new parser for GML.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions and Properties

+ +

read

read: function(data)

Read data from a string, and return a list of features.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array(OpenLayers.Feature.Vector)} An array of features.

+ +

parseFeature

parseFeature: function(node)

This function is the core of the GML parsing code in OpenLayers.  It creates the geometries that are then attached to the returned feature, and calls parseAttributes() to get attribute data out.

Parameters

node{DOMElement} A GML feature node.
+ +

parseGeometry

Properties of this object are the functions that parse geometries based on their type.

+ +

parseGeometry.point

Given a GML node representing a point geometry, create an OpenLayers point geometry.

Parameters

node{DOMElement} A GML node.

Returns

{OpenLayers.Geometry.Point} A point geometry.

+ +

parseGeometry.multipoint

Given a GML node representing a multipoint geometry, create an OpenLayers multipoint geometry.

Parameters

node{DOMElement} A GML node.

Returns

{OpenLayers.Geometry.MultiPoint} A multipoint geometry.

+ +

parseGeometry.linestring

Given a GML node representing a linestring geometry, create an OpenLayers linestring geometry.

Parameters

node{DOMElement} A GML node.

Returns

{OpenLayers.Geometry.LineString} A linestring geometry.

+ +

parseGeometry.multilinestring

Given a GML node representing a multilinestring geometry, create an OpenLayers multilinestring geometry.

Parameters

node{DOMElement} A GML node.

Returns

{OpenLayers.Geometry.MultiLineString} A multilinestring geometry.

+ +

parseGeometry.polygon

Given a GML node representing a polygon geometry, create an OpenLayers polygon geometry.

Parameters

node{DOMElement} A GML node.

Returns

{OpenLayers.Geometry.Polygon} A polygon geometry.

+ +

parseGeometry.multipolygon

Given a GML node representing a multipolygon geometry, create an OpenLayers multipolygon geometry.

Parameters

node{DOMElement} A GML node.

Returns

{OpenLayers.Geometry.MultiPolygon} A multipolygon geometry.

+ +

parseAttributes

parseAttributes: function(node)

Parameters

node{<DOMElement>}

Returns

{Object} An attributes object.

+ +

write

write: function(features)

Generate a GML document string given a list of features.

Parameters

features{Array(OpenLayers.Feature.Vector)} List of features to serialize into a string.

Returns

{String} A string representing the GML document.

+ +

createFeatureXML

createFeatureXML: function(feature)

Accept an OpenLayers.Feature.Vector, and build a GML node for it.

Parameters

feature{OpenLayers.Feature.Vector} The feature to be built as GML.

Returns

{DOMElement} A node reprensting the feature in GML.

+ +

buildGeometryNode

buildGeometryNode: function(geometry)
+ +

buildGeometry

Object containing methods to do the actual geometry node building based on geometry type.

+ +

buildGeometry.point

Given an OpenLayers point geometry, create a GML point.

Parameters

geometry{OpenLayers.Geometry.Point} A point geometry.

Returns

{DOMElement} A GML point node.

+ +

buildGeometry.multipoint

Given an OpenLayers multipoint geometry, create a GML multipoint.

Parameters

geometry{OpenLayers.Geometry.MultiPoint} A multipoint geometry.

Returns

{DOMElement} A GML multipoint node.

+ +

buildGeometry.linestring

Given an OpenLayers linestring geometry, create a GML linestring.

Parameters

geometry{OpenLayers.Geometry.LineString} A linestring geometry.

Returns

{DOMElement} A GML linestring node.

+ +

buildGeometry.multilinestring

Given an OpenLayers multilinestring geometry, create a GML multilinestring.

Parameters

geometry{OpenLayers.Geometry.MultiLineString} A multilinestring geometry.

Returns

{DOMElement} A GML multilinestring node.

+ +

buildGeometry.linearring

Given an OpenLayers linearring geometry, create a GML linearring.

Parameters

geometry{OpenLayers.Geometry.LinearRing} A linearring geometry.

Returns

{DOMElement} A GML linearring node.

+ +

buildGeometry.polygon

Given an OpenLayers polygon geometry, create a GML polygon.

Parameters

geometry{OpenLayers.Geometry.Polygon} A polygon geometry.

Returns

{DOMElement} A GML polygon node.

+ +

buildGeometry.multipolygon

Given an OpenLayers multipolygon geometry, create a GML multipolygon.

Parameters

geometry{OpenLayers.Geometry.MultiPolygon} A multipolygon geometry.

Returns

{DOMElement} A GML multipolygon node.

+ +

buildGeometry.bounds

Given an OpenLayers bounds, create a GML box.

Parameters

bounds{<OpenLayers.Geometry.Bounds>} A bounds object.

Returns

{DOMElement} A GML box node.

+ +

buildCoordinates

buildCoordinatesNode: function(geometry)

builds the coordinates XmlNode

<gml:coordinates decimal="." cs="," ts=" ">...</gml:coordinates>

Parameters: geometry - {OpenLayers.Geometry}

Returns

{XmlNode} created xmlNode

+ +
+ + + + + + + + + + +
read: function(data)
Read data from a string, and return a list of features.
parseFeature: function(node)
This function is the core of the GML parsing code in OpenLayers.
parseAttributes: function(node)
write: function(features)
Generate a GML document string given a list of features.
createFeatureXML: function(feature)
Accept an OpenLayers.Feature.Vector, and build a GML node for it.
buildGeometryNode: function(geometry)
buildCoordinatesNode: function(geometry)
builds the coordinates XmlNode
Create a new parser for GML.
Base class for format reading/writing a variety of formats.
Vector features use the OpenLayers.Geometry classes as geometry description.
Point geometry class.
MultiPoint is a collection of Points.
A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
A MultiLineString is a geometry with multiple OpenLayers.Geometry.LineString components.
Polygon is a collection of Geometry.LinearRings.
MultiPolygon is a geometry with multiple OpenLayers.Geometry.Polygon components.
A Linear Ring is a special LineString which is closed.
A Geometry is a description of a geographic object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/GML/Base-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/GML/Base-js.html new file mode 100644 index 0000000..1841d83 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/GML/Base-js.html @@ -0,0 +1,81 @@ + + +OpenLayers.Format.GML.Base - OpenLayers + + + + + + + + + +

OpenLayers.Format.GML.Base

Superclass for GML parsers.

Inherits from

Summary
OpenLayers.Format.GML.BaseSuperclass for GML parsers.
Properties
namespaces{Object} Mapping of namespace aliases to namespace URIs.
defaultPrefix
schemaLocation{String} Schema location for a particular minor version.
featureType{Array(String) or String} The local (without prefix) feature typeName(s).
featureNS{String} The feature namespace.
geometry{String} Name of geometry element.
extractAttributes{Boolean} Extract attributes from GML.
srsName{String} URI for spatial reference system.
xy{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
geometryTypes{Object} Maps OpenLayers geometry class names to GML element names.
singleFeatureType{Boolean} True if there is only 1 featureType, and not an array of featuretypes.
regExesCompiled regular expressions for manipulating strings.
Constructor
OpenLayers.Format.GML.BaseInstances of this class are not created directly.
Functions and Properties
read
readersContains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
write
writersAs a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
setGeometryTypesSets the geometryTypes mapping.
+ +

Properties

+ +

namespaces

{Object} Mapping of namespace aliases to namespace URIs.

+ +

defaultPrefix

+ +

schemaLocation

{String} Schema location for a particular minor version.

+ +

featureType

{Array(String) or String} The local (without prefix) feature typeName(s).

+ +

featureNS

{String} The feature namespace.  Must be set in the options at construction.

+ +

geometry

{String} Name of geometry element.  Defaults to “geometry”.

+ +

extractAttributes

{Boolean} Extract attributes from GML.  Default is true.

+ +

srsName

{String} URI for spatial reference system.  This is optional for single part geometries and mandatory for collections and multis.  If set, the srsName attribute will be written for all geometries.  Default is null.

+ +

xy

{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.

+ +

geometryTypes

{Object} Maps OpenLayers geometry class names to GML element names.  Use setGeometryTypes before accessing this property.

+ +

singleFeatureType

{Boolean} True if there is only 1 featureType, and not an array of featuretypes.

+ +

regExes

Compiled regular expressions for manipulating strings.

+ +

Constructor

+ +

OpenLayers.Format.GML.Base

Instances of this class are not created directly.  Use the OpenLayers.Format.GML.v2 or OpenLayers.Format.GML.v3 constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.

Valid options properties

featureType{Array(String) or String} Local (without prefix) feature typeName(s) (required).
featureNS{String} Feature namespace (required).
geometryName{String} Geometry element name.
+ +

Functions and Properties

+ +

read

read: function(data)

Parameters

data{DOMElement} A gml:featureMember element, a gml:featureMembers element, or an element containing either of the above at any level.

Returns

{Array(OpenLayers.Feature.Vector)} An array of features.

+ +

readers

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.  The function will be applied in the scope of this parser with two arguments: the node being read and a context object passed from the parent.

+ +

write

write: function(features)

Parameters

features{Array(OpenLayers.Feature.Vector) | OpenLayers.Feature.Vector} An array of features or a single feature.

Returns

{String} Given an array of features, a doc with a gml:featureMembers element will be returned.  Given a single feature, a doc with a gml:featureMember element will be returned.

+ +

writers

As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.

+ +

setGeometryTypes

setGeometryTypes: function()

Sets the geometryTypes mapping.

+ +
+ + + + + + + + + + +
read: function(data)
write: function(features)
setGeometryTypes: function()
Sets the geometryTypes mapping.
{Object} Maps OpenLayers geometry class names to GML element names.
Read and write XML.
Parses GML version 2.
Parses GML version 3.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/GML/v2-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/GML/v2-js.html new file mode 100644 index 0000000..cb140c9 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/GML/v2-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Format.GML.v2 - OpenLayers + + + + + + + + + +

OpenLayers.Format.GML.v2

Parses GML version 2.

Inherits from

Summary
OpenLayers.Format.GML.v2Parses GML version 2.
Properties
schemaLocation{String} Schema location for a particular minor version.
Constructor
OpenLayers.Format.GML.v2Create a parser for GML v2.
Properties and Functions
readersContains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
write
writersAs a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
+ +

Properties

+ +

schemaLocation

{String} Schema location for a particular minor version.

+ +

Constructor

+ +

OpenLayers.Format.GML.v2

Create a parser for GML v2.

Parameters

options{Object} An optional object whose properties will be set on this instance.

Valid options properties

featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (required).
geometryName{String} Geometry element name.
+ +

Properties and Functions

+ +

readers

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.  The function will be applied in the scope of this parser with two arguments: the node being read and a context object passed from the parent.

+ +

write

write: function(features)

Parameters

features{Array(OpenLayers.Feature.Vector) | OpenLayers.Feature.Vector} An array of features or a single feature.

Returns

{String} Given an array of features, a doc with a gml:featureMembers element will be returned.  Given a single feature, a doc with a gml:featureMember element will be returned.

+ +

writers

As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.

+ +
+ + + + + + + + + + +
write: function(features)
Superclass for GML parsers.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/GML/v3-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/GML/v3-js.html new file mode 100644 index 0000000..5187636 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/GML/v3-js.html @@ -0,0 +1,65 @@ + + +OpenLayers.Format.GML.v3 - OpenLayers + + + + + + + + + +

OpenLayers.Format.GML.v3

Parses GML version 3.

Inherits from

Summary
OpenLayers.Format.GML.v3Parses GML version 3.
Properties
schemaLocation{String} Schema location for a particular minor version.
curve{Boolean} Write gml:Curve instead of gml:LineString elements.
multiCurve{Boolean} Write gml:MultiCurve instead of gml:MultiLineString.
surface{Boolean} Write gml:Surface instead of gml:Polygon elements.
multiSurface{Boolean} Write gml:multiSurface instead of gml:MultiPolygon.
Constructor
OpenLayers.Format.GML.v3Create a parser for GML v3.
Properties and Functions
readersContains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
write
writersAs a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
setGeometryTypesSets the <geometryTypes> mapping.
+ +

Properties

+ +

schemaLocation

{String} Schema location for a particular minor version.  The writers conform with the Simple Features Profile for GML.

+ +

curve

{Boolean} Write gml:Curve instead of gml:LineString elements.  This also affects the elements in multi-part geometries.  Default is false.  To write gml:Curve elements instead of gml:LineString, set curve to true in the options to the contstructor (cannot be changed after instantiation).

+ +

multiCurve

{Boolean} Write gml:MultiCurve instead of gml:MultiLineString.  Since the latter is deprecated in GML 3, the default is true.  To write gml:MultiLineString instead of gml:MultiCurve, set multiCurve to false in the options to the constructor (cannot be changed after instantiation).

+ +

surface

{Boolean} Write gml:Surface instead of gml:Polygon elements.  This also affects the elements in multi-part geometries.  Default is false.  To write gml:Surface elements instead of gml:Polygon, set surface to true in the options to the contstructor (cannot be changed after instantiation).

+ +

multiSurface

{Boolean} Write gml:multiSurface instead of gml:MultiPolygon.  Since the latter is deprecated in GML 3, the default is true.  To write gml:MultiPolygon instead of gml:multiSurface, set multiSurface to false in the options to the constructor (cannot be changed after instantiation).

+ +

Constructor

+ +

OpenLayers.Format.GML.v3

Create a parser for GML v3.

Parameters

options{Object} An optional object whose properties will be set on this instance.

Valid options properties

featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (required).
geometryName{String} Geometry element name.
+ +

Properties and Functions

+ +

readers

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.  The function will be applied in the scope of this parser with two arguments: the node being read and a context object passed from the parent.

+ +

write

write: function(features)

Parameters

features{Array(OpenLayers.Feature.Vector) | OpenLayers.Feature.Vector} An array of features or a single feature.

Returns

{String} Given an array of features, a doc with a gml:featureMembers element will be returned.  Given a single feature, a doc with a gml:featureMember element will be returned.

+ +

writers

As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.

+ +

setGeometryTypes

setGeometryTypes: function()

Sets the <geometryTypes> mapping.

+ +
+ + + + + + + + + + +
write: function(features)
setGeometryTypes: function()
Sets the geometryTypes mapping.
Superclass for GML parsers.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/GPX-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/GPX-js.html new file mode 100644 index 0000000..2e8f0a0 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/GPX-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Format.GPX - OpenLayers + + + + + + + + + +

OpenLayers.Format.GPX

Read/write GPX parser.  Create a new instance with the OpenLayers.Format.GPX constructor.

Inherits from

Summary
OpenLayers.Format.GPXRead/write GPX parser.
Properties
extractWaypoints{Boolean} Extract waypoints from GPX.
extractTracks{Boolean} Extract tracks from GPX.
extractRoutes{Boolean} Extract routes from GPX.
extractAttributes{Boolean} Extract feature attributes from GPX.
Constructor
OpenLayers.Format.GPXCreate a new parser for GPX.
Functions
readReturn a list of features from a GPX doc
extractSegment
parseAttributes
+ +

Properties

+ +

extractWaypoints

{Boolean} Extract waypoints from GPX.  (default: true)

+ +

extractTracks

{Boolean} Extract tracks from GPX.  (default: true)

+ +

extractRoutes

{Boolean} Extract routes from GPX.  (default: true)

+ +

extractAttributes

{Boolean} Extract feature attributes from GPX.  (default: true) NOTE: Attributes as part of extensions to the GPX standard may not be extracted.

+ +

Constructor

+ +

OpenLayers.Format.GPX

Create a new parser for GPX.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(doc)

Return a list of features from a GPX doc

Parameters

doc{Element}

Returns

An Array of OpenLayers.Feature.Vectors

+ +

extractSegment

extractSegment: function(segment,
segmentType)

Parameters

segment{<DOMElement>} a trkseg or rte node to parse
segmentType{String} nodeName of waypoints that form the line

Returns

{OpenLayers.Geometry.LineString} A linestring geometry

+ +

parseAttributes

parseAttributes: function(node)

Parameters

node{<DOMElement>}

Returns

{Object} An attributes object.

+ +
+ + + + + + + + + + +
read: function(doc)
Return a list of features from a GPX doc
extractSegment: function(segment,
segmentType)
parseAttributes: function(node)
Create a new parser for GPX.
Read and write XML.
Vector features use the OpenLayers.Geometry classes as geometry description.
A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/GeoJSON-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/GeoJSON-js.html new file mode 100644 index 0000000..a44a1af --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/GeoJSON-js.html @@ -0,0 +1,101 @@ + + +OpenLayers.Format.GeoJSON - OpenLayers + + + + + + + + + +

OpenLayers.Format.GeoJSON

Read and write GeoJSON.  Create a new parser with the OpenLayers.Format.GeoJSON constructor.

Inherits from

Summary
OpenLayers.Format.GeoJSONRead and write GeoJSON.
Constructor
OpenLayers.Format.GeoJSONCreate a new parser for GeoJSON.
Functions
readDeserialize a GeoJSON string.
isValidTypeCheck if a GeoJSON object is a valid representative of the given type.
parseFeatureConvert a feature object from GeoJSON into an OpenLayers.Feature.Vector.
parseGeometryConvert a geometry object from GeoJSON into an OpenLayers.Geometry.
Properties
parseCoordsObject with properties corresponding to the GeoJSON geometry types.
Functions
parseCoords.pointConvert a coordinate array from GeoJSON into an OpenLayers.Geometry.
parseCoords.multipointConvert a coordinate array from GeoJSON into an OpenLayers.Geometry.
parseCoords.linestringConvert a coordinate array from GeoJSON into an OpenLayers.Geometry.
parseCoords.multilinestringConvert a coordinate array from GeoJSON into an OpenLayers.Geometry.
parseCoords.polygonConvert a coordinate array from GeoJSON into an OpenLayers.Geometry.
parseCoords.multipolygonConvert a coordinate array from GeoJSON into an OpenLayers.Geometry.
parseCoords.boxConvert a coordinate array from GeoJSON into an OpenLayers.Geometry.
writeSerialize a feature, geometry, array of features into a GeoJSON string.
createCRSObjectCreate the CRS object for an object.
Properties
extractObject with properties corresponding to the GeoJSON types.
Functions
extract.featureReturn a partial GeoJSON object representing a single feature.
extract.geometryReturn a GeoJSON object representing a single geometry.
extract.pointReturn an array of coordinates from a point.
extract.multipointReturn an array of point coordinates from a multipoint.
extract.linestringReturn an array of coordinate arrays from a linestring.
extract.multilinestringReturn an array of linestring arrays from a linestring.
extract.polygonReturn an array of linear ring arrays from a polygon.
extract.multipolygonReturn an array of polygon arrays from a multipolygon.
extract.collectionReturn an array of geometries from a geometry collection.
+ +

Constructor

+ +

OpenLayers.Format.GeoJSON

Create a new parser for GeoJSON.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(json,
type,
filter)

Deserialize a GeoJSON string.

Parameters

json{String} A GeoJSON string
type{String} Optional string that determines the structure of the output.  Supported values are “Geometry”, “Feature”, and “FeatureCollection”.  If absent or null, a default of “FeatureCollection” is assumed.
filter{Function} A function which will be called for every key and value at every level of the final result.  Each value will be replaced by the result of the filter function.  This can be used to reform generic objects into instances of classes, or to transform date strings into Date objects.

Returns

{Object} The return depends on the value of the type argument.  If type is “FeatureCollection” (the default), the return will be an array of OpenLayers.Feature.Vector.  If type is “Geometry”, the input json must represent a single geometry, and the return will be an OpenLayers.Geometry.  If type is “Feature”, the input json must represent a single feature, and the return will be an OpenLayers.Feature.Vector.

+ +

isValidType

isValidType: function(obj,
type)

Check if a GeoJSON object is a valid representative of the given type.

Returns

{Boolean} The object is valid GeoJSON object of the given type.

+ +

parseFeature

parseFeature: function(obj)

Convert a feature object from GeoJSON into an OpenLayers.Feature.Vector.

Parameters

obj{Object} An object created from a GeoJSON object

Returns

{OpenLayers.Feature.Vector} A feature.

+ +

parseGeometry

parseGeometry: function(obj)

Convert a geometry object from GeoJSON into an OpenLayers.Geometry.

Parameters

obj{Object} An object created from a GeoJSON object

Returns

{OpenLayers.Geometry} A geometry.

+ +

Properties

+ +

parseCoords

Object with properties corresponding to the GeoJSON geometry types.  Property values are functions that do the actual parsing.

+ +

Functions

+ +

parseCoords.point

Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.

Parameters

array{Object} The coordinates array from the GeoJSON fragment.

Returns

{OpenLayers.Geometry} A geometry.

+ +

parseCoords.multipoint

Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.

Parameters

array {Object} The coordinates array from the GeoJSON fragment.

Returns

{OpenLayers.Geometry} A geometry.

+ +

parseCoords.linestring

Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.

Parameters

array{Object} The coordinates array from the GeoJSON fragment.

Returns

{OpenLayers.Geometry} A geometry.

+ +

parseCoords.multilinestring

Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.

Parameters

array{Object} The coordinates array from the GeoJSON fragment.

Returns

{OpenLayers.Geometry} A geometry.

+ +

parseCoords.polygon

Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.

Returns

{OpenLayers.Geometry} A geometry.

+ +

parseCoords.multipolygon

Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.

Parameters

array{Object} The coordinates array from the GeoJSON fragment.

Returns

{OpenLayers.Geometry} A geometry.

+ +

parseCoords.box

Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.

Parameters

array{Object} The coordinates array from the GeoJSON fragment.

Returns

{OpenLayers.Geometry} A geometry.

+ +

write

write: function(obj,
pretty)

Serialize a feature, geometry, array of features into a GeoJSON string.

Parameters

obj{Object} An OpenLayers.Feature.Vector, OpenLayers.Geometry, or an array of features.
pretty{Boolean} Structure the output with newlines and indentation.  Default is false.

Returns

{String} The GeoJSON string representation of the input geometry, features, or array of features.

+ +

createCRSObject

createCRSObject: function(object)

Create the CRS object for an object.

Parameters

object{OpenLayers.Feature.Vector}

Returns

{Object} An object which can be assigned to the crs property of a GeoJSON object.

+ +

Properties

+ +

extract

Object with properties corresponding to the GeoJSON types.  Property values are functions that do the actual value extraction.

+ +

Functions

+ +

extract.feature

Return a partial GeoJSON object representing a single feature.

Parameters

feature{OpenLayers.Feature.Vector}

Returns

{Object} An object representing the point.

+ +

extract.geometry

Return a GeoJSON object representing a single geometry.

Parameters

geometry{OpenLayers.Geometry}

Returns

{Object} An object representing the geometry.

+ +

extract.point

Return an array of coordinates from a point.

Parameters

point{OpenLayers.Geometry.Point}

Returns

{Array} An array of coordinates representing the point.

+ +

extract.multipoint

Return an array of point coordinates from a multipoint.

Parameters

multipoint{OpenLayers.Geometry.MultiPoint}

Returns

{Array} An array of point coordinate arrays representing the multipoint.

+ +

extract.linestring

Return an array of coordinate arrays from a linestring.

Parameters

linestring{OpenLayers.Geometry.LineString}

Returns

{Array} An array of coordinate arrays representing the linestring.

+ +

extract.multilinestring

Return an array of linestring arrays from a linestring.

Parameters

linestring{OpenLayers.Geometry.MultiLineString}

Returns

{Array} An array of linestring arrays representing the multilinestring.

+ +

extract.polygon

Return an array of linear ring arrays from a polygon.

Parameters

polygon{OpenLayers.Geometry.Polygon}

Returns

{Array} An array of linear ring arrays representing the polygon.

+ +

extract.multipolygon

Return an array of polygon arrays from a multipolygon.

Parameters

multipolygon{OpenLayers.Geometry.MultiPolygon}

Returns

{Array} An array of polygon arrays representing the multipolygon

+ +

extract.collection

Return an array of geometries from a geometry collection.

Parameters

collection{OpenLayers.Geometry.Collection}

Returns

{Array} An array of geometry objects representing the geometry collection.

+ +
+ + + + + + + + + + +
read: function(json,
type,
filter)
Deserialize a GeoJSON string.
isValidType: function(obj,
type)
Check if a GeoJSON object is a valid representative of the given type.
parseFeature: function(obj)
Convert a feature object from GeoJSON into an OpenLayers.Feature.Vector.
Vector features use the OpenLayers.Geometry classes as geometry description.
parseGeometry: function(obj)
Convert a geometry object from GeoJSON into an OpenLayers.Geometry.
A Geometry is a description of a geographic object.
write: function(obj,
pretty)
Serialize a feature, geometry, array of features into a GeoJSON string.
createCRSObject: function(object)
Create the CRS object for an object.
Create a new parser for GeoJSON.
A parser to read/write JSON safely.
Point geometry class.
MultiPoint is a collection of Points.
A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
A MultiLineString is a geometry with multiple OpenLayers.Geometry.LineString components.
Polygon is a collection of Geometry.LinearRings.
MultiPolygon is a geometry with multiple OpenLayers.Geometry.Polygon components.
A Collection is exactly what it sounds like: A collection of different Geometries.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/GeoRSS-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/GeoRSS-js.html new file mode 100644 index 0000000..5ff1ab3 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/GeoRSS-js.html @@ -0,0 +1,77 @@ + + +OpenLayers.Format.GeoRSS - OpenLayers + + + + + + + + + +

OpenLayers.Format.GeoRSS

Read/write GeoRSS parser.  Create a new instance with the OpenLayers.Format.GeoRSS constructor.

Inherits from

Summary
OpenLayers.Format.GeoRSSRead/write GeoRSS parser.
Properties
rssns{String} RSS namespace to use.
featurens{String} Feature Attributes namespace.
georssns{String} GeoRSS namespace to use.
geons{String} W3C Geo namespace to use.
featureTitle{String} Default title for features.
featureDescription{String} Default description for features.
gmlParse{Object} GML Format object for parsing features Non-API and only created if necessary
xy{Boolean} Order of the GML coordinate: true:(x,y) or false:(y,x) For GeoRSS the default is (y,x), therefore: false
Constructor
OpenLayers.Format.GeoRSSCreate a new parser for GeoRSS.
Functions
createGeometryFromItemReturn a geometry from a GeoRSS Item.
createFeatureFromItemReturn a feature from a GeoRSS Item.
getChildValue
writeAccept Feature Collection, and return a string.
createFeatureXMLAccept an OpenLayers.Feature.Vector, and build a geometry for it.
buildGeometryNodebuilds a GeoRSS node with a given geometry
buildCoordinatesNode
+ +

Properties

+ +

rssns

{String} RSS namespace to use.  Defaults to “http://backend.userland.com/rss2

+ +

featurens

{String} Feature Attributes namespace.  Defaults to “http://mapserver.gis.umn.edu/mapserver

+ +

georssns

{String} GeoRSS namespace to use.  Defaults to “http://www.georss.org/georss

+ +

geons

{String} W3C Geo namespace to use.  Defaults to “http://www.w3.org/2003/01/geo/wgs84_pos#

+ +

featureTitle

{String} Default title for features.  Defaults to “Untitled”

+ +

featureDescription

{String} Default description for features.  Defaults to “No Description”

+ +

gmlParse

{Object} GML Format object for parsing features Non-API and only created if necessary

+ +

xy

{Boolean} Order of the GML coordinate: true:(x,y) or false:(y,x) For GeoRSS the default is (y,x), therefore: false

+ +

Constructor

+ +

OpenLayers.Format.GeoRSS

Create a new parser for GeoRSS.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

createGeometryFromItem

createGeometryFromItem: function(item)

Return a geometry from a GeoRSS Item.

Parameters

item{DOMElement} A GeoRSS item node.

Returns

{OpenLayers.Geometry} A geometry representing the node.

+ +

createFeatureFromItem

createFeatureFromItem: function(item)

Return a feature from a GeoRSS Item.

Parameters

item{DOMElement} A GeoRSS item node.

Returns

{OpenLayers.Feature.Vector} A feature representing the item.

+ +

getChildValue

getChildValue: function(node,
nsuri,
name,
def)

Parameters

node{DOMElement}
nsuri{String} Child node namespace uri (“*” for any).
name{String} Child node name.
def{String} Optional string default to return if no child found.

Returns

{String} The value of the first child with the given tag name.  Returns default value or empty string if none found.

+ +

write

write: function(features)

Accept Feature Collection, and return a string.

Parameters

features{Array(OpenLayers.Feature.Vector)} List of features to serialize into a string.
+ +

createFeatureXML

createFeatureXML: function(feature)

Accept an OpenLayers.Feature.Vector, and build a geometry for it.

Parameters

feature{OpenLayers.Feature.Vector}

Returns

{DOMElement}

+ +

buildGeometryNode

buildGeometryNode: function(geometry)

builds a GeoRSS node with a given geometry

Parameters

geometry{OpenLayers.Geometry}

Returns

{DOMElement} A gml node.

+ +

buildCoordinatesNode

buildCoordinatesNode: function(geometry)

Parameters

geometry{OpenLayers.Geometry}
+ +
+ + + + + + + + + + +
createGeometryFromItem: function(item)
Return a geometry from a GeoRSS Item.
createFeatureFromItem: function(item)
Return a feature from a GeoRSS Item.
getChildValue: function(node,
nsuri,
name,
def)
write: function(features)
Accept Feature Collection, and return a string.
createFeatureXML: function(feature)
Accept an OpenLayers.Feature.Vector, and build a geometry for it.
Vector features use the OpenLayers.Geometry classes as geometry description.
buildGeometryNode: function(geometry)
builds a GeoRSS node with a given geometry
buildCoordinatesNode: function(geometry)
Create a new parser for GeoRSS.
Read and write XML.
A Geometry is a description of a geographic object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/JSON-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/JSON-js.html new file mode 100644 index 0000000..5c3e459 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/JSON-js.html @@ -0,0 +1,85 @@ + + +OpenLayers.Format.JSON - OpenLayers + + + + + + + + + +

OpenLayers.Format.JSON

A parser to read/write JSON safely.  Create a new instance with the OpenLayers.Format.JSON constructor.

Inherits from

Summary
OpenLayers.Format.JSONA parser to read/write JSON safely.
Properties
indent{String} For “pretty” printing, the indent string will be used once for each indentation level.
space{String} For “pretty” printing, the space string will be used after the “:” separating a name/value pair.
newline{String} For “pretty” printing, the newline string will be used at the end of each name/value pair or array item.
level{Integer} For “pretty” printing, this is incremented/decremented during serialization.
pretty{Boolean} Serialize with extra whitespace for structure.
Constructor
OpenLayers.Format.JSONCreate a new parser for JSON.
Functions
readDeserialize a json string.
writeSerialize an object into a JSON string.
writeIndentOutput an indentation string depending on the indentation level.
writeNewlineOutput a string representing a newline if in pretty printing mode.
writeSpaceOutput a string representing a space if in pretty printing mode.
Properties
serializeObject with properties corresponding to the serializable data types.
Functions
serialize.objectTransform an object into a JSON string.
serialize.arrayTransform an array into a JSON string.
serialize.stringTransform a string into a JSON string.
serialize.numberTransform a number into a JSON string.
serialize.booleanTransform a boolean into a JSON string.
serialize.objectTransform a date into a JSON string.
+ +

Properties

+ +

indent

{String} For “pretty” printing, the indent string will be used once for each indentation level.

+ +

space

{String} For “pretty” printing, the space string will be used after the “:” separating a name/value pair.

+ +

newline

{String} For “pretty” printing, the newline string will be used at the end of each name/value pair or array item.

+ +

level

{Integer} For “pretty” printing, this is incremented/decremented during serialization.

+ +

pretty

{Boolean} Serialize with extra whitespace for structure.  This is set by the write method.

+ +

Constructor

+ +

OpenLayers.Format.JSON

Create a new parser for JSON.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(json,
filter)

Deserialize a json string.

Parameters

json{String} A JSON string
filter{Function} A function which will be called for every key and value at every level of the final result.  Each value will be replaced by the result of the filter function.  This can be used to reform generic objects into instances of classes, or to transform date strings into Date objects.

Returns

{Object} An object, array, string, or number .

+ +

write

write: function(value,
pretty)

Serialize an object into a JSON string.

Parameters

value{String} The object, array, string, number, boolean or date to be serialized.
pretty{Boolean} Structure the output with newlines and indentation.  Default is false.

Returns

{String} The JSON string representation of the input value.

+ +

writeIndent

writeIndent: function()

Output an indentation string depending on the indentation level.

Returns

{String} An appropriate indentation string.

+ +

writeNewline

writeNewline: function()

Output a string representing a newline if in pretty printing mode.

Returns

{String} A string representing a new line.

+ +

writeSpace

writeSpace: function()

Output a string representing a space if in pretty printing mode.

Returns

{String} A space.

+ +

Properties

+ +

serialize

Object with properties corresponding to the serializable data types.  Property values are functions that do the actual serializing.

+ +

Functions

+ +

serialize.object

Transform an object into a JSON string.

Parameters

object{Object} The object to be serialized.

Returns

{String} A JSON string representing the object.

+ +

serialize.array

Transform an array into a JSON string.

Parameters

array{Array} The array to be serialized

Returns

{String} A JSON string representing the array.

+ +

serialize.string

Transform a string into a JSON string.

Parameters

string{String} The string to be serialized

Returns

{String} A JSON string representing the string.

+ +

serialize.number

Transform a number into a JSON string.

Parameters

number{Number} The number to be serialized.

Returns

{String} A JSON string representing the number.

+ +

serialize.boolean

Transform a boolean into a JSON string.

Parameters

bool{Boolean} The boolean to be serialized.

Returns

{String} A JSON string representing the boolean.

+ +

serialize.object

Transform a date into a JSON string.

Parameters

date{Date} The date to be serialized.

Returns

{String} A JSON string representing the date.

+ +
+ + + + + + + + + + +
read: function(json,
filter)
Deserialize a json string.
write: function(value,
pretty)
Serialize an object into a JSON string.
writeIndent: function()
Output an indentation string depending on the indentation level.
writeNewline: function()
Output a string representing a newline if in pretty printing mode.
writeSpace: function()
Output a string representing a space if in pretty printing mode.
Create a new parser for JSON.
Base class for format reading/writing a variety of formats.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/KML-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/KML-js.html new file mode 100644 index 0000000..fd0cf26 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/KML-js.html @@ -0,0 +1,143 @@ + + +OpenLayers.Format.KML - OpenLayers + + + + + + + + + +

OpenLayers.Format.KML

Read/Wite KML.  Create a new instance with the OpenLayers.Format.KML constructor.

Inherits from

Summary
OpenLayers.Format.KMLRead/Wite KML.
Properties
kmlns{String} KML Namespace to use.
placemarksDesc{String} Name of the placemarks.
foldersName{String} Name of the folders.
foldersDesc{String} Description of the folders.
extractAttributes{Boolean} Extract attributes from KML.
extractStyles{Boolean} Extract styles from KML.
internalns{String} KML Namespace to use -- defaults to the namespace of the Placemark node being parsed, but falls back to kmlns.
features{Array} Array of features
styles{Object} Storage of style objects
styleBaseUrl{String}
fetched{Object} Storage of KML URLs that have been fetched before in order to prevent reloading them.
maxDepth{Integer} Maximum depth for recursive loading external KML URLs Defaults to 0: do no external fetching
Constructor
OpenLayers.Format.KMLCreate a new parser for KML.
Functions
readRead data from a string, and return a list of features.
parseDataRead data from a string, and return a list of features.
parseLinksFinds URLs of linked KML documents and fetches them
fetchLinkFetches a URL and returns the result
parseStylesLooks for Style nodes in the data and parses them Also parses StyleMap nodes, but only uses the ‘normal’ key
parseStyleParses the children of a Style node and builds the style hash accordingly
parseStyleMapsLooks for Style nodes in the data and parses them Also parses StyleMap nodes, but only uses the ‘normal’ key
parseFeaturesLoop through all Placemark nodes and parse them.
parseFeatureThis function is the core of the KML parsing code in OpenLayers.
getStyleRetrieves a style from a style hash using styleUrl as the key If the styleUrl doesn’t exist yet, we try to fetch it Internet
Properties
parseGeometryProperties of this object are the functions that parse geometries based on their type.
Functions
parseGeometry.pointGiven a KML node representing a point geometry, create an OpenLayers point geometry.
parseGeometry.linestringGiven a KML node representing a linestring geometry, create an OpenLayers linestring geometry.
parseGeometry.polygonGiven a KML node representing a polygon geometry, create an OpenLayers polygon geometry.
parseGeometry.multigeometryGiven a KML node representing a multigeometry, create an OpenLayers geometry collection.
parseAttributes
parseExtendedDataParse ExtendedData from KML.
parsePropertyConvenience method to find a node and return its value
writeAccept Feature Collection, and return a string.
createFolderXMLCreates and returns a KML folder node
createPlacemarkXMLCreates and returns a KML placemark node representing the given feature.
buildGeometryNodeBuilds and returns a KML geometry node with the given geometry.
Properties
buildGeometryObject containing methods to do the actual geometry node building based on geometry type.
Functions
buildGeometry.pointGiven an OpenLayers point geometry, create a KML point.
buildGeometry.multipointGiven an OpenLayers multipoint geometry, create a KML GeometryCollection.
buildGeometry.linestringGiven an OpenLayers linestring geometry, create a KML linestring.
buildGeometry.multilinestringGiven an OpenLayers multilinestring geometry, create a KML GeometryCollection.
buildGeometry.linearringGiven an OpenLayers linearring geometry, create a KML linearring.
buildGeometry.polygonGiven an OpenLayers polygon geometry, create a KML polygon.
buildGeometry.multipolygonGiven an OpenLayers multipolygon geometry, create a KML GeometryCollection.
buildGeometry.collectionGiven an OpenLayers geometry collection, create a KML MultiGeometry.
buildCoordinatesNodeBuilds and returns the KML coordinates node with the given geometry <coordinates>...</coordinates>
+ +

Properties

+ +

kmlns

{String} KML Namespace to use.  Defaults to 2.0 namespace.

+ +

placemarksDesc

{String} Name of the placemarks.  Default is “No description available.”

+ +

foldersName

{String} Name of the folders.  Default is “OpenLayers export.”

+ +

foldersDesc

{String} Description of the folders.  Default is “Exported on [date].”

+ +

extractAttributes

{Boolean} Extract attributes from KML.  Default is true.  Extracting styleUrls requires this to be set to true

+ +

extractStyles

{Boolean} Extract styles from KML.  Default is false.  Extracting styleUrls also requires extractAttributes to be set to true

+ +

internalns

{String} KML Namespace to use -- defaults to the namespace of the Placemark node being parsed, but falls back to kmlns.

+ +

features

{Array} Array of features

+ +

styles

{Object} Storage of style objects

+ +

styleBaseUrl

{String}

+ +

fetched

{Object} Storage of KML URLs that have been fetched before in order to prevent reloading them.

+ +

maxDepth

{Integer} Maximum depth for recursive loading external KML URLs Defaults to 0: do no external fetching

+ +

Constructor

+ +

OpenLayers.Format.KML

Create a new parser for KML.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read data from a string, and return a list of features.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array(OpenLayers.Feature.Vector)} List of features.

+ +

parseData

parseData: function(data,
options)

Read data from a string, and return a list of features.

Parameters

data{String} or {DOMElement} data to read/parse.
options{Object} Hash of options

Returns

{Array(OpenLayers.Feature.Vector)} List of features.

+ +

parseLinks

parseLinks: function(nodes,
options)

Finds URLs of linked KML documents and fetches them

Parameters

nodes{Array} of {DOMElement} data to read/parse.
options{Object} Hash of options
+ +

fetchLink

fetchLink: function(href)

Fetches a URL and returns the result

Parameters

href{String} url to be fetched
+ +

parseStyles

parseStyles: function(nodes,
options)

Looks for Style nodes in the data and parses them Also parses StyleMap nodes, but only uses the ‘normal’ key

Parameters

nodes{Array} of {DOMElement} data to read/parse.
options{Object} Hash of options
+ +

parseStyle

parseStyle: function(node)

Parses the children of a Style node and builds the style hash accordingly

Parameters

node{DOMElement} Style node
+ +

parseStyleMaps

parseStyleMaps: function(nodes,
options)

Looks for Style nodes in the data and parses them Also parses StyleMap nodes, but only uses the ‘normal’ key

Parameters

nodes{Array} of {DOMElement} data to read/parse.
options{Object} Hash of options
+ +

parseFeatures

parseFeatures: function(nodes,
options)

Loop through all Placemark nodes and parse them.  Will create a list of features

Parameters

nodes{Array} of {DOMElement} data to read/parse.
options{Object} Hash of options
+ +

parseFeature

parseFeature: function(node)

This function is the core of the KML parsing code in OpenLayers.  It creates the geometries that are then attached to the returned feature, and calls parseAttributes() to get attribute data out.

Parameters

node{DOMElement}

Returns

{OpenLayers.Feature.Vector} A vector feature.

+ +

getStyle

getStyle: function(styleUrl,
options)

Retrieves a style from a style hash using styleUrl as the key If the styleUrl doesn’t exist yet, we try to fetch it Internet

Parameters

styleUrl{String} URL of style
options{Object} Hash of options

Returns

{Object}(reference to) Style hash
+ +

Properties

+ +

parseGeometry

Properties of this object are the functions that parse geometries based on their type.

+ +

Functions

+ +

parseGeometry.point

Given a KML node representing a point geometry, create an OpenLayers point geometry.

Parameters

node{DOMElement} A KML Point node.

Returns

{OpenLayers.Geometry.Point} A point geometry.

+ +

parseGeometry.linestring

Given a KML node representing a linestring geometry, create an OpenLayers linestring geometry.

Parameters

node{DOMElement} A KML LineString node.

Returns

{OpenLayers.Geometry.LineString} A linestring geometry.

+ +

parseGeometry.polygon

Given a KML node representing a polygon geometry, create an OpenLayers polygon geometry.

Parameters

node{DOMElement} A KML Polygon node.

Returns

{OpenLayers.Geometry.Polygon} A polygon geometry.

+ +

parseGeometry.multigeometry

Given a KML node representing a multigeometry, create an OpenLayers geometry collection.

Parameters

node{DOMElement} A KML MultiGeometry node.

Returns

{OpenLayers.Geometry.Collection} A geometry collection.

+ +

parseAttributes

parseAttributes: function(node)

Parameters

node{DOMElement}

Returns

{Object} An attributes object.

+ +

parseExtendedData

parseExtendedData: function(node)

Parse ExtendedData from KML.  No support for schemas/datatypes.  See http://code.google.com/apis/kml/documentation/kmlreference.html#extendeddata for more information on extendeddata.

+ +

parseProperty

parseProperty: function(xmlNode,
namespace,
tagName)

Convenience method to find a node and return its value

Parameters

xmlNode{<DOMElement>}
namespace{String} namespace of the node to find
tagName{String} name of the property to parse

Returns

{String} The value for the requested property (defaults to null)

+ +

write

write: function(features)

Accept Feature Collection, and return a string.

Parameters

features{Array(OpenLayers.Feature.Vector} An array of features.

Returns

{String} A KML string.

+ +

createFolderXML

createFolderXML: function()

Creates and returns a KML folder node

Returns

{DOMElement}

+ +

createPlacemarkXML

createPlacemarkXML: function(feature)

Creates and returns a KML placemark node representing the given feature.

Parameters

feature{OpenLayers.Feature.Vector}

Returns

{DOMElement}

+ +

buildGeometryNode

buildGeometryNode: function(geometry)

Builds and returns a KML geometry node with the given geometry.

Parameters

geometry{OpenLayers.Geometry}

Returns

{DOMElement}

+ +

Properties

+ +

buildGeometry

Object containing methods to do the actual geometry node building based on geometry type.

+ +

Functions

+ +

buildGeometry.point

Given an OpenLayers point geometry, create a KML point.

Parameters

geometry{OpenLayers.Geometry.Point} A point geometry.

Returns

{DOMElement} A KML point node.

+ +

buildGeometry.multipoint

Given an OpenLayers multipoint geometry, create a KML GeometryCollection.

Parameters

geometry{OpenLayers.Geometry.Point} A multipoint geometry.

Returns

{DOMElement} A KML GeometryCollection node.

+ +

buildGeometry.linestring

Given an OpenLayers linestring geometry, create a KML linestring.

Parameters

geometry{OpenLayers.Geometry.LineString} A linestring geometry.

Returns

{DOMElement} A KML linestring node.

+ +

buildGeometry.multilinestring

Given an OpenLayers multilinestring geometry, create a KML GeometryCollection.

Parameters

geometry{OpenLayers.Geometry.Point} A multilinestring geometry.

Returns

{DOMElement} A KML GeometryCollection node.

+ +

buildGeometry.linearring

Given an OpenLayers linearring geometry, create a KML linearring.

Parameters

geometry{OpenLayers.Geometry.LinearRing} A linearring geometry.

Returns

{DOMElement} A KML linearring node.

+ +

buildGeometry.polygon

Given an OpenLayers polygon geometry, create a KML polygon.

Parameters

geometry{OpenLayers.Geometry.Polygon} A polygon geometry.

Returns

{DOMElement} A KML polygon node.

+ +

buildGeometry.multipolygon

Given an OpenLayers multipolygon geometry, create a KML GeometryCollection.

Parameters

geometry{OpenLayers.Geometry.Point} A multipolygon geometry.

Returns

{DOMElement} A KML GeometryCollection node.

+ +

buildGeometry.collection

Given an OpenLayers geometry collection, create a KML MultiGeometry.

Parameters

geometry{OpenLayers.Geometry.Collection} A geometry collection.

Returns

{DOMElement} A KML MultiGeometry node.

+ +

buildCoordinatesNode

buildCoordinatesNode: function(geometry)

Builds and returns the KML coordinates node with the given geometry <coordinates>...</coordinates>

Parameters

geometry{OpenLayers.Geometry}

Return

{DOMElement}

+ +
+ + + + + + + + + + +
read: function(data)
Read data from a string, and return a list of features.
parseData: function(data,
options)
Read data from a string, and return a list of features.
parseLinks: function(nodes,
options)
Finds URLs of linked KML documents and fetches them
fetchLink: function(href)
Fetches a URL and returns the result
parseStyles: function(nodes,
options)
Looks for Style nodes in the data and parses them Also parses StyleMap nodes, but only uses the ‘normal’ key
This class represents a UserStyle obtained from a SLD, containing styling rules.
parseStyle: function(node)
Parses the children of a Style node and builds the style hash accordingly
parseStyleMaps: function(nodes,
options)
Looks for Style nodes in the data and parses them Also parses StyleMap nodes, but only uses the ‘normal’ key
parseFeatures: function(nodes,
options)
Loop through all Placemark nodes and parse them.
parseFeature: function(node)
This function is the core of the KML parsing code in OpenLayers.
getStyle: function(styleUrl,
options)
Retrieves a style from a style hash using styleUrl as the key If the styleUrl doesn’t exist yet, we try to fetch it Internet
parseAttributes: function(node)
parseExtendedData: function(node)
Parse ExtendedData from KML.
parseProperty: function(xmlNode,
namespace,
tagName)
Convenience method to find a node and return its value
write: function(features)
Accept Feature Collection, and return a string.
createFolderXML: function()
Creates and returns a KML folder node
createPlacemarkXML: function(feature)
Creates and returns a KML placemark node representing the given feature.
buildGeometryNode: function(geometry)
Builds and returns a KML geometry node with the given geometry.
buildCoordinatesNode: function(geometry)
Builds and returns the KML coordinates node with the given geometry coordinates...</coordinates>
Create a new parser for KML.
Read and write XML.
Vector features use the OpenLayers.Geometry classes as geometry description.
Point geometry class.
A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
Polygon is a collection of Geometry.LinearRings.
A Collection is exactly what it sounds like: A collection of different Geometries.
A Geometry is a description of a geographic object.
A Linear Ring is a special LineString which is closed.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/OSM-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/OSM-js.html new file mode 100644 index 0000000..767bdc9 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/OSM-js.html @@ -0,0 +1,71 @@ + + +OpenLayers.Format.OSM - OpenLayers + + + + + + + + + +

OpenLayers.Format.OSM

OSM parser.  Create a new instance with the OpenLayers.Format.OSM constructor.

Inherits from

Summary
OpenLayers.Format.OSMOSM parser.
Properties
checkTags{Boolean} Should tags be checked to determine whether something should be treated as a seperate node.
interestingTagsExclude{Array} List of tags to exclude from ‘interesting’ checks on nodes.
areaTags{Array} List of tags indicating that something is an area.
Constructor
OpenLayers.Format.OSMCreate a new parser for OSM.
Functions
getNodesReturn the node items from a doc.
getWaysReturn the way items from a doc.
getTagsReturn the tags list attached to a specific DOM element.
isWayAreaGiven a way object from getWays, check whether the tags and geometry indicate something is an area.
writeTakes a list of features, returns a serialized OSM format file for use in tools like JOSM.
createFeatureNodesTakes a feature, returns a list of nodes from size 0->n.
createXMLTakes a feature, returns a list of nodes from size 0->n.
serializeTagsGiven a feature, serialize the attributes onto the given node.
setStateOpenStreetMap has a convention that ‘state’ is stored for modification or deletion.
+ +

Properties

+ +

checkTags

{Boolean} Should tags be checked to determine whether something should be treated as a seperate node.  Will slow down parsing.  Default is false.

+ +

interestingTagsExclude

{Array} List of tags to exclude from ‘interesting’ checks on nodes.  Must be set when creating the format.  Will only be used if checkTags is set.

+ +

areaTags

{Array} List of tags indicating that something is an area.  Must be set when creating the format.  Will only be used if checkTags is true.

+ +

Constructor

+ +

OpenLayers.Format.OSM

Create a new parser for OSM.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

getNodes

getNodes: function(doc)

Return the node items from a doc.

Parameters

node{DOMElement} node to parse tags from
+ +

getWays

getWays: function(doc)

Return the way items from a doc.

Parameters

node{DOMElement} node to parse tags from
+ +

getTags

getTags: function(dom_node,
interesting_tags)

Return the tags list attached to a specific DOM element.

Parameters

node{DOMElement} node to parse tags from
interesting_tags{Boolean} whether the return from this function should return a boolean indicating that it has ‘interesting tags’ -- tags like attribution and source are ignored.  (To change the list of tags, see interestingTagsExclude)

Returns

tags{Object} hash of tags
interesting{Boolean} if interesting_tags is passed, returns whether there are any interesting tags on this element.
+ +

isWayArea

isWayArea: function(way)

Given a way object from getWays, check whether the tags and geometry indicate something is an area.

Returns

{Boolean}

+ +

write

write: function(features)

Takes a list of features, returns a serialized OSM format file for use in tools like JOSM.

Parameters

features{Array(OpenLayers.Feature.Vector)}
+ +

createFeatureNodes

createFeatureNodes: function(feature)

Takes a feature, returns a list of nodes from size 0->n.  Will include all pieces of the serialization that are required which have not already been created.  Calls out to createXML based on geometry type.

Parameters

feature{OpenLayers.Feature.Vector}
+ +

createXML

createXML:

Takes a feature, returns a list of nodes from size 0->n.  Will include all pieces of the serialization that are required which have not already been created.

Parameters

feature{OpenLayers.Feature.Vector}
+ +

serializeTags

serializeTags: function(feature,
node)

Given a feature, serialize the attributes onto the given node.

Parameters

feature{OpenLayers.Feature.Vector}
node{DOMNode}
+ +

setState

setState: function(feature,
node)

OpenStreetMap has a convention that ‘state’ is stored for modification or deletion.  This allows the file to be uploaded via JOSM or the bulk uploader tool.

Parameters

feature{OpenLayers.Feature.Vector}
node{DOMNode}
+ +
+ + + + + + + + + + +
getNodes: function(doc)
Return the node items from a doc.
getWays: function(doc)
Return the way items from a doc.
getTags: function(dom_node,
interesting_tags)
Return the tags list attached to a specific DOM element.
isWayArea: function(way)
Given a way object from getWays, check whether the tags and geometry indicate something is an area.
write: function(features)
Takes a list of features, returns a serialized OSM format file for use in tools like JOSM.
createFeatureNodes: function(feature)
Takes a feature, returns a list of nodes from size 0->n.
createXML:
Takes a feature, returns a list of nodes from size 0->n.
serializeTags: function(feature,
node)
Given a feature, serialize the attributes onto the given node.
setState: function(feature,
node)
OpenStreetMap has a convention that ‘state’ is stored for modification or deletion.
Create a new parser for OSM.
Read and write XML.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/SLD-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/SLD-js.html new file mode 100644 index 0000000..55ada46 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/SLD-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Format.SLD - OpenLayers + + + + + + + + + +

OpenLayers.Format.SLD

Read/Wite SLD.  Create a new instance with the OpenLayers.Format.SLD constructor.

Inherits from

Summary
OpenLayers.Format.SLDRead/Wite SLD.
Properties
defaultVersion{String} Version number to assume if none found.
version{String} Specify a version string if one is known.
namedLayersAsArray{Boolean} Generate a namedLayers array.
parser{Object} Instance of the versioned parser.
Constructor
OpenLayers.Format.SLDCreate a new parser for SLD.
Functions
writeWrite a SLD document given a list of styles.
readRead and SLD doc and return an object representing the SLD.
+ +

Properties

+ +

defaultVersion

{String} Version number to assume if none found.  Default is “1.0.0”.

+ +

version

{String} Specify a version string if one is known.

+ +

namedLayersAsArray

{Boolean} Generate a namedLayers array.  If false, the namedLayers property value will be an object keyed by layer name.  Default is false.

+ +

parser

{Object} Instance of the versioned parser.  Cached for multiple read and write calls of the same version.

+ +

Constructor

+ +

OpenLayers.Format.SLD

Create a new parser for SLD.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

write

write: function(sld,
options)

Write a SLD document given a list of styles.

Parameters

sld{Object} An object representing the SLD.
options{Object} Optional configuration object.

Returns

{String} An SLD document string.

+ +

read

read: function(data,
options)

Read and SLD doc and return an object representing the SLD.

Parameters

data{String | DOMElement} Data to read.
options{Object} Options for the reader.

Returns

{Object} An object representing the SLD.

+ +
+ + + + + + + + + + +
write: function(sld,
options)
Write a SLD document given a list of styles.
read: function(data,
options)
Read and SLD doc and return an object representing the SLD.
Create a new parser for SLD.
Read and write XML.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/SLD/v1-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/SLD/v1-js.html new file mode 100644 index 0000000..adc0da6 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/SLD/v1-js.html @@ -0,0 +1,73 @@ + + +OpenLayers.Format.SLD.v1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.SLD.v1

Superclass for SLD version 1 parsers.

Inherits from

Summary
OpenLayers.Format.SLD.v1Superclass for SLD version 1 parsers.
Properties
namespaces{Object} Mapping of namespace aliases to namespace URIs.
defaultPrefix
schemaLocation{String} Schema location for a particular minor version.
defaultSymbolizer.{Object} A symbolizer with the SLD defaults.
Constructor
OpenLayers.Format.SLD.v1Instances of this class are not created directly.
Functions and Properties
read
readersContains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
cssMap{Object} Object mapping supported css property names to OpenLayers symbolizer property names.
getCssPropertyGiven a symbolizer property, get the corresponding CSS property from the cssMap.
getGraphicFormatGiven a href for an external graphic, try to determine the mime-type.
defaultGraphicFormat{String} If none other can be determined from getGraphicFormat, this default will be returned.
graphicFormats{Object} Mapping of image mime-types to regular extensions matching well-known file extensions.
write
writersAs a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
+ +

Properties

+ +

namespaces

{Object} Mapping of namespace aliases to namespace URIs.

+ +

defaultPrefix

+ +

schemaLocation

{String} Schema location for a particular minor version.

+ +

defaultSymbolizer.

{Object} A symbolizer with the SLD defaults.

+ +

Constructor

+ +

OpenLayers.Format.SLD.v1

Instances of this class are not created directly.  Use the OpenLayers.Format.SLD constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions and Properties

+ +

read

read: function(data,
options)

Parameters

data{DOMElement} An SLD document element.
options{Object} Options for the reader.

Valid options

namedLayersAsArray{Boolean} Generate a namedLayers array.  If false, the namedLayers property value will be an object keyed by layer name.  Default is false.

Returns

{Object} An object representing the SLD.

+ +

readers

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.  The function will be applied in the scope of this parser with two arguments: the node being read and a context object passed from the parent.

+ +

cssMap

{Object} Object mapping supported css property names to OpenLayers symbolizer property names.

+ +

getCssProperty

getCssProperty: function(sym)

Given a symbolizer property, get the corresponding CSS property from the cssMap.

Parameters

sym{String} A symbolizer property name.

Returns

{String} A CSS property name or null if none found.

+ +

getGraphicFormat

getGraphicFormat: function(href)

Given a href for an external graphic, try to determine the mime-type.  This method doesn’t try too hard, and will fall back to <defautlGraphicFormat> if one of the known graphicFormats is not the file extension of the provided href.

Parameters

href{String}

Returns

{String} The graphic format.

+ +

defaultGraphicFormat

{String} If none other can be determined from getGraphicFormat, this default will be returned.

+ +

graphicFormats

{Object} Mapping of image mime-types to regular extensions matching well-known file extensions.

+ +

write

write: function(sld)

Parameters

sld{Object} An object representing the SLD.

Returns

{DOMElement} The root of an SLD document.

+ +

writers

As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.

+ +
+ + + + + + + + + + +
read: function(data,
options)
getCssProperty: function(sym)
Given a symbolizer property, get the corresponding CSS property from the cssMap.
{Object} Object mapping supported css property names to OpenLayers symbolizer property names.
getGraphicFormat: function(href)
Given a href for an external graphic, try to determine the mime-type.
write: function(sld)
Write ogc:Filter version 1.0.0.
Read/Wite SLD.
{Object} Mapping of image mime-types to regular extensions matching well-known file extensions.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/SLD/v1_0_0-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/SLD/v1_0_0-js.html new file mode 100644 index 0000000..dc1b7c0 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/SLD/v1_0_0-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Format.SLD.v1_0_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.SLD.v1_0_0

+ +

Constants

+ +

VERSION

{String} 1.0.0

+ +

Properties

+ + + +

Constructor

+ +

OpenLayers.Format.SLD.v1_0_0

Instances of this class are not created directly.  Use the OpenLayers.Format.SLD constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Superclass for SLD version 1 parsers.
Read/Wite SLD.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/Text-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/Text-js.html new file mode 100644 index 0000000..b9467c2 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/Text-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Format.Text - OpenLayers + + + + + + + + + +

OpenLayers.Format.Text

Read Text format.  Create a new instance with the OpenLayers.Format.Text constructor.  This reads text which is formatted like CSV text, using tabs as the seperator by default.  It provides parsing of data originally used in the MapViewerService, described on the wiki.  This Format is used by the OpenLayers.Layer.Text class.

Inherits from

Summary
OpenLayers.Format.TextRead Text format.
Properties
defaultStyledefaultStyle allows one to control the default styling of the features.
extractStylesset to true to extract styles from the TSV files, using information from the image or icon, iconSize and iconOffset fields.
Constructor
OpenLayers.Format.TextCreate a new parser for TSV Text.
Functions
readReturn a list of features from a Tab Seperated Values text string.
+ +

Properties

+ +

defaultStyle

defaultStyle allows one to control the default styling of the features.  It should be a symbolizer hash.  By default, this is set to match the Layer.Text behavior, which is to use the default OpenLayers Icon.

+ +

extractStyles

set to true to extract styles from the TSV files, using information from the image or icon, iconSize and iconOffset fields.  This will result in features with a symbolizer (style) property set, using the default symbolizer specified in defaultStyle.  Set to false if you wish to use a styleMap or OpenLayers.Style options to style your layer instead.

+ +

Constructor

+ +

OpenLayers.Format.Text

Create a new parser for TSV Text.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(text)

Return a list of features from a Tab Seperated Values text string.

Parameters

data{String}

Returns

An Array of OpenLayers.Feature.Vectors

+ +
+ + + + + + + + + + +
read: function(text)
Return a list of features from a Tab Seperated Values text string.
Create a new parser for TSV Text.
This layer creates markers given data in a text file.
Base class for format reading/writing a variety of formats.
defaultStyle allows one to control the default styling of the features.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WFS-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WFS-js.html new file mode 100644 index 0000000..d3ec050 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WFS-js.html @@ -0,0 +1,65 @@ + + +OpenLayers.Format.WFS - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFS

Read/Write WFS.

Inherits from

Summary
OpenLayers.Format.WFSRead/Write WFS.
Properties
layer
wfsns
ogcns
Constructor
OpenLayers.Format.WFSCreate a WFS-T formatter.
Functions
writeTakes a feature list, and generates a WFS-T Transaction
createFeatureXML
insertTakes a feature, and generates a WFS-T Transaction “Insert”
updateTakes a feature, and generates a WFS-T Transaction “Update”
removeTakes a feature, and generates a WFS-T Transaction “Delete”
destroyRemove ciruclar ref to layer
+ +

Properties

+ +

layer

+ +

wfsns

+ +

ogcns

+ +

Constructor

+ +

OpenLayers.Format.WFS

Create a WFS-T formatter.  This requires a layer: that layer should have two properties: geometry_column and typename.  The parser for this format is subclassed entirely from GML: There is a writer only, which uses most of the code from the GML layer, and wraps it in transactional elements.

Parameters

options{Object}
layer{OpenLayers.Layer}
+ +

Functions

+ +

write

write: function(features)

Takes a feature list, and generates a WFS-T Transaction

Parameters

features{Array(OpenLayers.Feature.Vector)}
+ +

createFeatureXML

createFeatureXML: function(feature)

Parameters

feature{OpenLayers.Feature.Vector}
+ +

insert

insert: function(feature)

Takes a feature, and generates a WFS-T Transaction “Insert”

Parameters

feature{OpenLayers.Feature.Vector}
+ +

update

update: function(feature)

Takes a feature, and generates a WFS-T Transaction “Update”

Parameters

feature{OpenLayers.Feature.Vector}
+ +

remove

remove: function(feature)

Takes a feature, and generates a WFS-T Transaction “Delete”

Parameters

feature{OpenLayers.Feature.Vector}
+ +

destroy

destroy: function()

Remove ciruclar ref to layer

+ +
+ + + + + + + + + + +
write: function(features)
Takes a feature list, and generates a WFS-T Transaction
createFeatureXML: function(feature)
insert: function(feature)
Takes a feature, and generates a WFS-T Transaction “Insert”
update: function(feature)
Takes a feature, and generates a WFS-T Transaction “Update”
remove: function(feature)
Takes a feature, and generates a WFS-T Transaction “Delete”
destroy: function()
Remove ciruclar ref to layer
Read/Wite GML.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities-js.html new file mode 100644 index 0000000..a217d31 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Format.WFSCapabilities - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFSCapabilities

Read WFS Capabilities.

Inherits from

Summary
OpenLayers.Format.WFSCapabilitiesRead WFS Capabilities.
Properties
defaultVersion{String} Version number to assume if none found.
version{String} Specify a version string if one is known.
Constructor
OpenLayers.Format.WFSCapabilitiesCreate a new parser for WFS capabilities.
Functions
readRead capabilities data from a string, and return a list of layers.
+ +

Properties

+ +

defaultVersion

{String} Version number to assume if none found.  Default is “1.1.0”.

+ +

version

{String} Specify a version string if one is known.

+ +

Constructor

+ +

OpenLayers.Format.WFSCapabilities

Create a new parser for WFS capabilities.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read capabilities data from a string, and return a list of layers.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array} List of named layers.

+ +
+ + + + + + + + + + +
read: function(data)
Read capabilities data from a string, and return a list of layers.
Read and write XML.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities/v1-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities/v1-js.html new file mode 100644 index 0000000..7fe0dc0 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities/v1-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Format.WFSCapabilities.v1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFSCapabilities.v1

Abstract class not to be instantiated directly.

Inherits from

Summary
OpenLayers.Format.WFSCapabilities.v1Abstract class not to be instantiated directly.
Constructor
OpenLayers.Format.WFSCapabilities.v1_1Create an instance of one of the subclasses.
Functions
readRead capabilities data from a string, and return a list of layers.
runChildNodes
read_cap_FeatureTypeList
read_cap_FeatureType
read_cap_Name
read_cap_Title
read_cap_Abstract
+ +

Constructor

+ +

OpenLayers.Format.WFSCapabilities.v1_1

Create an instance of one of the subclasses.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read capabilities data from a string, and return a list of layers.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array} List of named layers.

+ +

runChildNodes

runChildNodes: function(obj,
node)
+ +

read_cap_FeatureTypeList

read_cap_FeatureTypeList: function(request,
node)
+ +

read_cap_FeatureType

read_cap_FeatureType: function(featureTypeList,
node,
parentLayer)
+ +

read_cap_Name

read_cap_Name: function(obj,
node)
+ +

read_cap_Title

read_cap_Title: function(obj,
node)
+ +

read_cap_Abstract

read_cap_Abstract: function(obj,
node)
+ +
+ + + + + + + + + + +
read: function(data)
Read capabilities data from a string, and return a list of layers.
runChildNodes: function(obj,
node)
read_cap_FeatureTypeList: function(request,
node)
read_cap_FeatureType: function(featureTypeList,
node,
parentLayer)
read_cap_Name: function(obj,
node)
read_cap_Title: function(obj,
node)
read_cap_Abstract: function(obj,
node)
Read and write XML.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities/v1_0_0-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities/v1_0_0-js.html new file mode 100644 index 0000000..4c2148d --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities/v1_0_0-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Format.WFSCapabilities/v1_0_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFSCapabilities/v1_0_0

Read WMS Capabilities version 1.0.0.

Inherits from

Summary
OpenLayers.Format.WFSCapabilities/v1_0_0Read WMS Capabilities version 1.0.0.
Constructor
OpenLayers.Format.WFSCapabilities.v1_0_0Create a new parser for WFS capabilities version 1.0.0.
+ +

Constructor

+ +

OpenLayers.Format.WFSCapabilities.v1_0_0

Create a new parser for WFS capabilities version 1.0.0.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Read WFS Capabilities.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities/v1_1_0-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities/v1_1_0-js.html new file mode 100644 index 0000000..283037a --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WFSCapabilities/v1_1_0-js.html @@ -0,0 +1,43 @@ + + +OpenLayers.Format.WFSCapabilities/v1_1_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFSCapabilities/v1_1_0

Read WFS Capabilities version 1.1.0.

Inherits from

Summary
OpenLayers.Format.WFSCapabilities/v1_1_0Read WFS Capabilities version 1.1.0.
Constructor
OpenLayers.Format.WFSCapabilities.v1_1_0Create a new parser for WFS capabilities version 1.1.0.
+ +

Constructor

+ +

OpenLayers.Format.WFSCapabilities.v1_1_0

Create a new parser for WFS capabilities version 1.1.0.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Read WFS Capabilities.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WFSDescribeFeatureType-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WFSDescribeFeatureType-js.html new file mode 100644 index 0000000..2c9ddee --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WFSDescribeFeatureType-js.html @@ -0,0 +1,57 @@ + + +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFSDescribeFeatureType.js - OpenLayers + + + + + + + + + +

WFSDescribeFeatureType.js

Summary
WFSDescribeFeatureType.js
Properties
namespaces{Object} Mapping of namespace aliases to namespace URIs.
Constructor
OpenLayers.Format.WFSDescribeFeatureTypeCreate a new parser for WFS DescribeFeatureType responses.
Properties
readersContains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Functions
readRestrictionReads restriction defined in the child nodes of a restriction element
read
+ +

Properties

+ +

namespaces

{Object} Mapping of namespace aliases to namespace URIs.

+ +

Constructor

+ +

OpenLayers.Format.WFSDescribeFeatureType

Create a new parser for WFS DescribeFeatureType responses.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Properties

+ +

readers

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.  The function will be applied in the scope of this parser with two arguments: the node being read and a context object passed from the parent.

+ +

Functions

+ +

readRestriction

readRestriction: function(node,
obj)

Reads restriction defined in the child nodes of a restriction element

Parameters

node {DOMElement}the node to parse
obj {Object}the object that receives the read result
+ +

read

read: function(data)

Parameters

data{DOMElement|String} A WFS DescribeFeatureType document.

Returns

{Object} An object representing the WFS DescribeFeatureType response.

+ +
+ + + + + + + + + + +
readRestriction: function(node,
obj)
Reads restriction defined in the child nodes of a restriction element
read: function(data)
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WFST-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WFST-js.html new file mode 100644 index 0000000..e22cc87 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WFST-js.html @@ -0,0 +1,47 @@ + + +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFST.js - OpenLayers + + + + + + + + + +

WFST.js

Summary
WFST.js
Functions
OpenLayers.Format.WFSTUsed to create a versioned WFS protocol.
Constants
OpenLayers.Format.WFST.DEFAULTS{Object} Default properties for the WFST format.
+ +

Functions

+ +

OpenLayers.Format.WFST

OpenLayers.Format.WFST = function(options)

Used to create a versioned WFS protocol.  Default version is 1.0.0.

Returns

{OpenLayers.Format} A WFST format of the given version.

+ +

Constants

+ +

OpenLayers.Format.WFST.DEFAULTS

{Object} Default properties for the WFST format.

+ +
+ + + + + + + + + + +
OpenLayers.Format.WFST = function(options)
Used to create a versioned WFS protocol.
Base class for format reading/writing a variety of formats.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WFST/v1-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WFST/v1-js.html new file mode 100644 index 0000000..55136bc --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WFST/v1-js.html @@ -0,0 +1,77 @@ + + +OpenLayers.Format.WFST.v1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFST.v1

Superclass for WFST parsers.

Inherits from

Summary
OpenLayers.Format.WFST.v1Superclass for WFST parsers.
Properties
namespaces{Object} Mapping of namespace aliases to namespace URIs.
defaultPrefix
version{String} WFS version number.
schemaLocation{String} Schema location for a particular minor version.
srsName{String} URI for spatial reference system.
extractAttributes{Boolean} Extract attributes from GML.
xy{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
stateName{Object} Maps feature states to node names.
Constructor
OpenLayers.Format.WFST.v1Instances of this class are not created directly.
Functions and Properties
getSrsName
readParse the response from a transaction.
readersContains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
writeGiven an array of features, write a WFS transaction.
writersAs a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
schemaLocationAttrGenerate the xsi:schemaLocation attribute value.
setFilterPropertySet the property of each spatial filter.
+ +

Properties

+ +

namespaces

{Object} Mapping of namespace aliases to namespace URIs.

+ +

defaultPrefix

+ +

version

{String} WFS version number.

+ +

schemaLocation

{String} Schema location for a particular minor version.

+ +

srsName

{String} URI for spatial reference system.

+ +

extractAttributes

{Boolean} Extract attributes from GML.  Default is true.

+ +

xy

{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.

+ +

stateName

{Object} Maps feature states to node names.

+ +

Constructor

+ +

OpenLayers.Format.WFST.v1

Instances of this class are not created directly.  Use the OpenLayers.Format.WFST.v1_0_0 or OpenLayers.Format.WFST.v1_1_0 constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions and Properties

+ +

getSrsName

getSrsName: function(feature,
options)
+ +

read

read: function(data)

Parse the response from a transaction.  Because WFS is split into Transaction requests (create, update, and delete) and GetFeature requests (read), this method handles parsing of both types of responses.

+ +

readers

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.  The function will be applied in the scope of this parser with two arguments: the node being read and a context object passed from the parent.

+ +

write

write: function(features)

Given an array of features, write a WFS transaction.  This assumes the features have a state property that determines the operation type - insert, update, or delete.

Parameters

features{Array(OpenLayers.Feature.Vector)} A list of features.

Returns

{String} A serialized WFS transaction.

+ +

writers

As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.

+ +

schemaLocationAttr

schemaLocationAttr: function(options)

Generate the xsi:schemaLocation attribute value.

Returns

{String} The xsi:schemaLocation attribute or undefined if none.

+ +

setFilterProperty

setFilterProperty: function(filter)

Set the property of each spatial filter.

Parameters

filter{OpenLayers.Filter}
+ +
+ + + + + + + + + + +
getSrsName: function(feature,
options)
read: function(data)
Parse the response from a transaction.
write: function(features)
Given an array of features, write a WFS transaction.
schemaLocationAttr: function(options)
Generate the xsi:schemaLocation attribute value.
setFilterProperty: function(filter)
Set the property of each spatial filter.
Read and write XML.
A format for creating WFS v1.0.0 transactions.
A format for creating WFS v1.1.0 transactions.
Vector features use the OpenLayers.Geometry classes as geometry description.
This class represents an OGC Filter.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WFST/v1_0_0-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WFST/v1_0_0-js.html new file mode 100644 index 0000000..947b955 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WFST/v1_0_0-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Format.WFST.v1_0_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFST.v1_0_0

A format for creating WFS v1.0.0 transactions.  Create a new instance with the OpenLayers.Format.WFST.v1_0_0 constructor.

Inherits from

Summary
OpenLayers.Format.WFST.v1_0_0A format for creating WFS v1.0.0 transactions.
Properties
version{String} WFS version number.
schemaLocations{Object} Properties are namespace aliases, values are schema locations.
Constructor
OpenLayers.Format.WFST.v1_0_0A class for parsing and generating WFS v1.0.0 transactions.
Properties
readersContains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
writersAs a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
+ +

Properties

+ +

version

{String} WFS version number.

+ +

schemaLocations

{Object} Properties are namespace aliases, values are schema locations.

+ +

Constructor

+ +

OpenLayers.Format.WFST.v1_0_0

A class for parsing and generating WFS v1.0.0 transactions.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Valid options properties

featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (optional).
featurePrefix{String} Feature namespace alias (optional - only used if featureNS is provided).  Default is ‘feature’.
geometryName{String} Name of geometry attribute.  Default is ‘the_geom’.
+ +

Properties

+ +

readers

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.  The function will be applied in the scope of this parser with two arguments: the node being read and a context object passed from the parent.

+ +

writers

As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.

+ +
+ + + + + + + + + + +
A class for parsing and generating WFS v1.0.0 transactions.
Write ogc:Filter version 1.0.0.
Superclass for WFST parsers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WFST/v1_1_0-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WFST/v1_1_0-js.html new file mode 100644 index 0000000..aa42c18 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WFST/v1_1_0-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Format.WFST.v1_1_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WFST.v1_1_0

A format for creating WFS v1.1.0 transactions.  Create a new instance with the OpenLayers.Format.WFST.v1_1_0 constructor.

Inherits from

Summary
OpenLayers.Format.WFST.v1_1_0A format for creating WFS v1.1.0 transactions.
Properties
version{String} WFS version number.
schemaLocations{Object} Properties are namespace aliases, values are schema locations.
Constructor
OpenLayers.Format.WFST.v1_1_0A class for parsing and generating WFS v1.1.0 transactions.
Properties
readersContains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
writersAs a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
+ +

Properties

+ +

version

{String} WFS version number.

+ +

schemaLocations

{Object} Properties are namespace aliases, values are schema locations.

+ +

Constructor

+ +

OpenLayers.Format.WFST.v1_1_0

A class for parsing and generating WFS v1.1.0 transactions.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Valid options properties

featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (optional).
featurePrefix{String} Feature namespace alias (optional - only used if featureNS is provided).  Default is ‘feature’.
geometryName{String} Name of geometry attribute.  Default is ‘the_geom’.
+ +

Properties

+ +

readers

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.  The function will be applied in the scope of this parser with two arguments: the node being read and a context object passed from the parent.

+ +

writers

As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.

+ +
+ + + + + + + + + + +
A class for parsing and generating WFS v1.1.0 transactions.
Write ogc:Filter version 1.1.0.
Superclass for WFST parsers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WKT-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WKT-js.html new file mode 100644 index 0000000..dcd9a9e --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WKT-js.html @@ -0,0 +1,49 @@ + + +OpenLayers.Format.WKT - OpenLayers + + + + + + + + + +

OpenLayers.Format.WKT

Class for reading and writing Well-Known Text.  Create a new instance with the OpenLayers.Format.WKT constructor.

Inherits from

Summary
OpenLayers.Format.WKTClass for reading and writing Well-Known Text.
Constructor
OpenLayers.Format.WKTCreate a new parser for WKT
Functions
readDeserialize a WKT string and return a vector feature or an array of vector features.
writeSerialize a feature or array of features into a WKT string.
+ +

Constructor

+ +

OpenLayers.Format.WKT

Create a new parser for WKT

Parameters

options{Object} An optional object whose properties will be set on this instance

Returns

{OpenLayers.Format.WKT} A new WKT parser.

+ +

Functions

+ +

read

read: function(wkt)

Deserialize a WKT string and return a vector feature or an array of vector features.  Supports WKT for POINT, MULTIPOINT, LINESTRING, MULTILINESTRING, POLYGON, MULTIPOLYGON, and GEOMETRYCOLLECTION.

Parameters

wkt{String} A WKT string

Returns

{<OpenLayers.Feature.Vector>|Array} A feature or array of features for GEOMETRYCOLLECTION WKT.

+ +

write

write: function(features)

Serialize a feature or array of features into a WKT string.

Parameters

features{<OpenLayers.Feature.Vector>|Array} A feature or array of features

Returns

{String} The WKT string representation of the input geometries

+ +
+ + + + + + + + + + +
read: function(wkt)
Deserialize a WKT string and return a vector feature or an array of vector features.
write: function(features)
Serialize a feature or array of features into a WKT string.
Create a new parser for WKT
Base class for format reading/writing a variety of formats.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WMC-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WMC-js.html new file mode 100644 index 0000000..8d0f214 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WMC-js.html @@ -0,0 +1,67 @@ + + +OpenLayers.Format.WMC - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMC

Read and write Web Map Context documents.

Inherits from

Summary
OpenLayers.Format.WMCRead and write Web Map Context documents.
Properties
defaultVersion{String} Version number to assume if none found.
version{String} Specify a version string if one is known.
layerOptions{Object} Default options for layers created by the parser.
layerParams{Object} Default parameters for layers created by the parser.
parser{Object} Instance of the versioned parser.
Constructor
OpenLayers.Format.WMCCreate a new parser for WMC docs.
Functions
readRead WMC data from a string, and return an object with map properties and a list of layers.
contextToMapCreate a map given a context object.
mergeContextToMapAdd layers from a context object to a map.
writeWrite a WMC document given a map.
mapToContextCreate a context object given a map.
+ +

Properties

+ +

defaultVersion

{String} Version number to assume if none found.  Default is “1.1.0”.

+ +

version

{String} Specify a version string if one is known.

+ +

layerOptions

{Object} Default options for layers created by the parser.  These options are overridden by the options which are read from the capabilities document.

+ +

layerParams

{Object} Default parameters for layers created by the parser.  This can be used to override DEFAULT_PARAMS for OpenLayers.Layer.WMS.

+ +

parser

{Object} Instance of the versioned parser.  Cached for multiple read and write calls of the same version.

+ +

Constructor

+ +

OpenLayers.Format.WMC

Create a new parser for WMC docs.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data,
options)

Read WMC data from a string, and return an object with map properties and a list of layers.

Parameters

data{String} or {DOMElement} data to read/parse.
options{Object} The options object must contain a map property.  If the map property is a string, it must be the id of a dom element where the new map will be placed.  If the map property is an OpenLayers.Map, the layers from the context document will be added to the map.

Returns

{OpenLayers.Map} A map based on the context.

+ +

contextToMap

contextToMap: function(context,
id)

Create a map given a context object.

Parameters

context{Object} The context object.
id{String | Element} The dom element or element id that will contain the map.

Returns

{OpenLayers.Map} A map based on the context object.

+ +

mergeContextToMap

mergeContextToMap: function(context,
map)

Add layers from a context object to a map.

Parameters

context{Object} The context object.
map{OpenLayers.Map} The map.

Returns

{OpenLayers.Map} The same map with layers added.

+ +

write

write: function(obj,
options)

Write a WMC document given a map.

Parameters

obj{OpenLayers.Map | Object} A map or context object.
options{Object} Optional configuration object.

Returns

{String} A WMC document string.

+ +

mapToContext

mapToContext: function(map)

Create a context object given a map.

Parameters

map{OpenLayers.Map} The map.

Returns

{Object} A context object.

+ +
+ + + + + + + + + + +
read: function(data,
options)
Read WMC data from a string, and return an object with map properties and a list of layers.
contextToMap: function(context,
id)
Create a map given a context object.
mergeContextToMap: function(context,
map)
Add layers from a context object to a map.
write: function(obj,
options)
Write a WMC document given a map.
mapToContext: function(map)
Create a context object given a map.
Read and write XML.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WMC/v1-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WMC/v1-js.html new file mode 100644 index 0000000..88da822 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WMC/v1-js.html @@ -0,0 +1,149 @@ + + +OpenLayers.Format.WMC.v1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMC.v1

Superclass for WMC version 1 parsers.

Inherits from

Summary
OpenLayers.Format.WMC.v1Superclass for WMC version 1 parsers.
Properties and Functions
namespaces{Object} Mapping of namespace aliases to namespace URIs.
schemaLocation{String} Schema location for a particular minor version.
getNamespacePrefixGet the namespace prefix for a given uri from the namespaces object.
defaultPrefix
rootPrefix{String} Prefix on the root node that maps to the context namespace URI.
defaultStyleName{String} Style name used if layer has no style param.
defaultStyleTitle{String} Default style title.
Constructor
OpenLayers.Format.WMC.v1Instances of this class are not created directly.
Functions
readRead capabilities data from a string, and return a list of layers.
runChildNodes
read_wmc_General
read_wmc_BoundingBox
read_wmc_LayerList
read_wmc_Layer
getLayerFromInfoCreate a WMS layer from a layerInfo object.
read_wmc_Extension
read_ol_units
read_ol_maxExtent
read_ol_transparent
read_ol_numZoomLevels
read_ol_opacity
read_ol_singleTile
read_ol_isBaseLayer
read_ol_displayInLayerSwitcher
read_wmc_Server
read_wmc_FormatList
read_wmc_Format
read_wmc_StyleList
read_wmc_Style
read_wmc_SLD
read_sld_StyledLayerDescriptor
read_wmc_OnlineResource
read_wmc_Name
read_wmc_Title
read_wmc_MetadataURL
read_wmc_Abstract
read_wmc_LatLonBoundingBox
read_wmc_LegendURL
write
createElementDefaultNSShorthand for createElementNS with namespace from defaultPrefix.
setAttributesSet multiple attributes given key value pairs from an object.
write_wmc_GeneralCreate a General node given an context object.
write_ol_MapExtension
write_wmc_LayerListCreate a LayerList node given an context object.
write_wmc_LayerCreate a Layer node given a layer object.
write_wmc_LayerExtensionAdd OpenLayers specific layer parameters to an Extension element.
createOLPropertyNodeCreate a node representing an OpenLayers property.
write_wmc_ServerCreate a Server node given a layer object.
write_wmc_MetadataURLCreate a MetadataURL node given a layer object.
write_wmc_FormatListCreate a FormatList node given a layer.
write_wmc_StyleListCreate a StyleList node given a layer.
write_wmc_OnlineResourceCreate an OnlineResource node given a URL.
+ +

Properties and Functions

+ +

namespaces

{Object} Mapping of namespace aliases to namespace URIs.

+ +

schemaLocation

{String} Schema location for a particular minor version.

+ +

getNamespacePrefix

getNamespacePrefix: function(uri)

Get the namespace prefix for a given uri from the namespaces object.

Returns

{String} A namespace prefix or null if none found.

+ +

defaultPrefix

+ +

rootPrefix

{String} Prefix on the root node that maps to the context namespace URI.

+ +

defaultStyleName

{String} Style name used if layer has no style param.  Default is “”.

+ +

defaultStyleTitle

{String} Default style title.  Default is “Default”.

+ +

Constructor

+ +

OpenLayers.Format.WMC.v1

Instances of this class are not created directly.  Use the OpenLayers.Format.WMC constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read capabilities data from a string, and return a list of layers.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array} List of named layers.

+ +

runChildNodes

runChildNodes: function(obj,
node)
+ +

read_wmc_General

read_wmc_General: function(context,
node)
+ +

read_wmc_BoundingBox

read_wmc_BoundingBox: function(context,
node)
+ +

read_wmc_LayerList

read_wmc_LayerList: function(context,
node)
+ +

read_wmc_Layer

read_wmc_Layer: function(context,
node)
+ +

getLayerFromInfo

getLayerFromInfo: function(layerInfo)

Create a WMS layer from a layerInfo object.

Parameters

layerInfo{Object} An object representing a WMS layer.

Returns

{OpenLayers.Layer.WMS} A WMS layer.

+ +

read_wmc_Extension

read_wmc_Extension: function(obj,
node)
+ +

read_ol_units

read_ol_units: function(layerInfo,
node)
+ +

read_ol_maxExtent

read_ol_maxExtent: function(obj,
node)
+ +

read_ol_transparent

read_ol_transparent: function(layerInfo,
node)
+ +

read_ol_numZoomLevels

read_ol_numZoomLevels: function(layerInfo,
node)
+ +

read_ol_opacity

read_ol_opacity: function(layerInfo,
node)
+ +

read_ol_singleTile

read_ol_singleTile: function(layerInfo,
node)
+ +

read_ol_isBaseLayer

read_ol_isBaseLayer: function(layerInfo,
node)
+ +

read_ol_displayInLayerSwitcher

read_ol_displayInLayerSwitcher: function(layerInfo,
node)
+ +

read_wmc_Server

read_wmc_Server: function(layerInfo,
node)
+ +

read_wmc_FormatList

read_wmc_FormatList: function(layerInfo,
node)
+ +

read_wmc_Format

read_wmc_Format: function(layerInfo,
node)
+ +

read_wmc_StyleList

read_wmc_StyleList: function(layerInfo,
node)
+ +

read_wmc_Style

read_wmc_Style: function(layerInfo,
node)
+ +

read_wmc_SLD

read_wmc_SLD: function(style,
node)
+ +

read_sld_StyledLayerDescriptor

read_sld_StyledLayerDescriptor: function(sld,
node)
+ +

read_wmc_OnlineResource

read_wmc_OnlineResource: function(obj,
node)
+ +

read_wmc_Name

read_wmc_Name: function(obj,
node)
+ +

read_wmc_Title

read_wmc_Title: function(obj,
node)
+ +

read_wmc_MetadataURL

read_wmc_MetadataURL: function(layerInfo,
node)
+ +

read_wmc_Abstract

read_wmc_Abstract: function(obj,
node)
+ +

read_wmc_LatLonBoundingBox

read_wmc_LatLonBoundingBox: function(layer,
node)
+ +

read_wmc_LegendURL

read_wmc_LegendURL: function(style,
node)
+ +

write

write: function(context,
options)

Parameters

context{Object} An object representing the map context.
options{Object} Optional object.

Returns

{String} A WMC document string.

+ +

createElementDefaultNS

createElementDefaultNS: function(name,
childValue,
attributes)

Shorthand for createElementNS with namespace from defaultPrefix.  Can optionally be used to set attributes and a text child value.

Parameters

name{String} The qualified node name.
childValue{String} Optional value for text child node.
attributes{Object} Optional object representing attributes.

Returns

{Element} An element node.

+ +

setAttributes

setAttributes: function(node,
obj)

Set multiple attributes given key value pairs from an object.

Parameters

node{Element} An element node.
obj{Object} An object whose properties represent attribute names and values represent attribute values.
+ +

write_wmc_General

write_wmc_General: function(context)

Create a General node given an context object.

Parameters

context{Object} Context object.

Returns

{Element} A WMC General element node.

+ +

write_ol_MapExtension

write_ol_MapExtension: function(context)
+ +

write_wmc_LayerList

write_wmc_LayerList: function(context)

Create a LayerList node given an context object.

Parameters

context{Object} Context object.

Returns

{Element} A WMC LayerList element node.

+ +

write_wmc_Layer

write_wmc_Layer: function(layer)

Create a Layer node given a layer object.

Parameters

layer{OpenLayers.Layer.WMS} Layer object.

Returns

{Element} A WMC Layer element node.

+ +

write_wmc_LayerExtension

write_wmc_LayerExtension: function(layer)

Add OpenLayers specific layer parameters to an Extension element.

Parameters

layer{OpenLayers.Layer.WMS} A WMS layer.

Returns

{Element} A WMC Extension element (for a layer).

+ +

createOLPropertyNode

createOLPropertyNode: function(obj,
prop)

Create a node representing an OpenLayers property.  If the property is null or undefined, null will be returned.

Parameters

object{Object} An object.
prop{String} A property.

Returns

{Element} A property node.

+ +

write_wmc_Server

write_wmc_Server: function(layer)

Create a Server node given a layer object.

Parameters

layer{OpenLayers.Layer.WMS} Layer object.

Returns

{Element} A WMC Server element node.

+ +

write_wmc_MetadataURL

write_wmc_MetadataURL: function(layer)

Create a MetadataURL node given a layer object.

Parameters

layer{OpenLayers.Layer.WMS} Layer object.

Returns

{Element} A WMC metadataURL element node.

+ +

write_wmc_FormatList

write_wmc_FormatList: function(layer)

Create a FormatList node given a layer.

Parameters

layer{OpenLayers.Layer.WMS} Layer object.

Returns

{Element} A WMC FormatList element node.

+ +

write_wmc_StyleList

write_wmc_StyleList: function(layer)

Create a StyleList node given a layer.

Parameters

layer{OpenLayers.Layer.WMS} Layer object.

Returns

{Element} A WMC StyleList element node.

+ +

write_wmc_OnlineResource

write_wmc_OnlineResource: function(href)

Create an OnlineResource node given a URL.

Parameters

href{String} URL for the resource.

Returns

{Element} A WMC OnlineResource element node.

+ +
+ + + + + + + + + + +
getNamespacePrefix: function(uri)
Get the namespace prefix for a given uri from the namespaces object.
{Object} Mapping of namespace aliases to namespace URIs.
read: function(data)
Read capabilities data from a string, and return a list of layers.
runChildNodes: function(obj,
node)
read_wmc_General: function(context,
node)
read_wmc_BoundingBox: function(context,
node)
read_wmc_LayerList: function(context,
node)
read_wmc_Layer: function(context,
node)
getLayerFromInfo: function(layerInfo)
Create a WMS layer from a layerInfo object.
read_wmc_Extension: function(obj,
node)
read_ol_units: function(layerInfo,
node)
read_ol_maxExtent: function(obj,
node)
read_ol_transparent: function(layerInfo,
node)
read_ol_numZoomLevels: function(layerInfo,
node)
read_ol_opacity: function(layerInfo,
node)
read_ol_singleTile: function(layerInfo,
node)
read_ol_isBaseLayer: function(layerInfo,
node)
read_ol_displayInLayerSwitcher: function(layerInfo,
node)
read_wmc_Server: function(layerInfo,
node)
read_wmc_FormatList: function(layerInfo,
node)
read_wmc_Format: function(layerInfo,
node)
read_wmc_StyleList: function(layerInfo,
node)
read_wmc_Style: function(layerInfo,
node)
read_wmc_SLD: function(style,
node)
read_sld_StyledLayerDescriptor: function(sld,
node)
read_wmc_OnlineResource: function(obj,
node)
read_wmc_Name: function(obj,
node)
read_wmc_Title: function(obj,
node)
read_wmc_MetadataURL: function(layerInfo,
node)
read_wmc_Abstract: function(obj,
node)
read_wmc_LatLonBoundingBox: function(layer,
node)
read_wmc_LegendURL: function(style,
node)
write: function(context,
options)
createElementDefaultNS: function(name,
childValue,
attributes)
Shorthand for createElementNS with namespace from defaultPrefix.
setAttributes: function(node,
obj)
Set multiple attributes given key value pairs from an object.
write_wmc_General: function(context)
Create a General node given an context object.
write_ol_MapExtension: function(context)
write_wmc_LayerList: function(context)
Create a LayerList node given an context object.
write_wmc_Layer: function(layer)
Create a Layer node given a layer object.
write_wmc_LayerExtension: function(layer)
Add OpenLayers specific layer parameters to an Extension element.
createOLPropertyNode: function(obj,
prop)
Create a node representing an OpenLayers property.
write_wmc_Server: function(layer)
Create a Server node given a layer object.
write_wmc_MetadataURL: function(layer)
Create a MetadataURL node given a layer object.
write_wmc_FormatList: function(layer)
Create a FormatList node given a layer.
write_wmc_StyleList: function(layer)
Create a StyleList node given a layer.
write_wmc_OnlineResource: function(href)
Create an OnlineResource node given a URL.
Read and write XML.
Read and write Web Map Context documents.
Instances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WMC/v1_0_0-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WMC/v1_0_0-js.html new file mode 100644 index 0000000..5ad0211 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WMC/v1_0_0-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Format.WMC.v1_0_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMC.v1_0_0

Read and write WMC version 1.0.0.

Inherits from

+ +

Constants

+ +

VERSION

{String} 1.0.0

+ +

Properties

+ + + +

Constructor

+ +

OpenLayers.Format.WMC.v1_0_0

Instances of this class are not created directly.  Use the OpenLayers.Format.WMC constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Superclass for WMC version 1 parsers.
Read and write Web Map Context documents.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WMC/v1_1_0-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WMC/v1_1_0-js.html new file mode 100644 index 0000000..52d1860 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WMC/v1_1_0-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Format.WMC.v1_1_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMC.v1_1_0

Read and write WMC version 1.1.0.

Differences between 1.1.0 and 1.0.0

  • 1.1.0 Layers have optional sld:MinScaleDenominator and sld:MaxScaleDenominator

Inherits from

Summary
OpenLayers.Format.WMC.v1_1_0Read and write WMC version 1.1.0.
Constants
VERSION{String} 1.1.0
Properties
schemaLocation{String} http://www.opengis.net/context http://schemas.opengis.net/context/1.1.0/context.xsd
Constructor
OpenLayers.Format.WMC.v1_1_0Instances of this class are not created directly.
Functions
read_sld_MinScaleDenominatorRead a sld:MinScaleDenominator node.
read_sld_MaxScaleDenominatorRead a sld:MaxScaleDenominator node.
write_wmc_LayerCreate a Layer node given a layer object.
+ +

Constants

+ +

VERSION

{String} 1.1.0

+ +

Properties

+ + + +

Constructor

+ +

OpenLayers.Format.WMC.v1_1_0

Instances of this class are not created directly.  Use the OpenLayers.Format.WMC constructor instead.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read_sld_MinScaleDenominator

read_sld_MinScaleDenominator: function(layerInfo,
node)

Read a sld:MinScaleDenominator node.

Parameters

layerInfo{Object} An object representing a layer.
node{Element} An element node.
+ +

read_sld_MaxScaleDenominator

read_sld_MaxScaleDenominator: function(layerInfo,
node)

Read a sld:MaxScaleDenominator node.

Parameters

layerInfo{Object} An object representing a layer.
node{Element} An element node.
+ +

write_wmc_Layer

write_wmc_Layer: function(layer)

Create a Layer node given a layer object.  This method adds elements specific to version 1.1.0.

Parameters

layer{OpenLayers.Layer.WMS} Layer object.

Returns

{Element} A WMC Layer element node.

+ +
+ + + + + + + + + + +
read_sld_MinScaleDenominator: function(layerInfo,
node)
Read a sld:MinScaleDenominator node.
read_sld_MaxScaleDenominator: function(layerInfo,
node)
Read a sld:MaxScaleDenominator node.
write_wmc_Layer: function(layer)
Create a Layer node given a layer object.
Superclass for WMC version 1 parsers.
Read and write Web Map Context documents.
Instances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities-js.html new file mode 100644 index 0000000..7de4871 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Format.WMSCapabilities - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSCapabilities

Read WMS Capabilities.

Inherits from

Summary
OpenLayers.Format.WMSCapabilitiesRead WMS Capabilities.
Properties
defaultVersion{String} Version number to assume if none found.
version{String} Specify a version string if one is known.
parser{OpenLayers.Format} A cached versioned format used for reading.
Constructor
OpenLayers.Format.WMSCapabilitiesCreate a new parser for WMS capabilities.
Functions
readRead capabilities data from a string, and return a list of layers.
+ +

Properties

+ +

defaultVersion

{String} Version number to assume if none found.  Default is “1.1.1”.

+ +

version

{String} Specify a version string if one is known.

+ +

parser

{OpenLayers.Format} A cached versioned format used for reading.

+ +

Constructor

+ +

OpenLayers.Format.WMSCapabilities

Create a new parser for WMS capabilities.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read capabilities data from a string, and return a list of layers.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array} List of named layers.

+ +
+ + + + + + + + + + +
Base class for format reading/writing a variety of formats.
read: function(data)
Read capabilities data from a string, and return a list of layers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities/v1_1-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities/v1_1-js.html new file mode 100644 index 0000000..e1675d1 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities/v1_1-js.html @@ -0,0 +1,79 @@ + + +OpenLayers.Format.WMSCapabilities.v1_1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSCapabilities.v1_1

Abstract class not to be instantiated directly.

Inherits from

Summary
OpenLayers.Format.WMSCapabilities.v1_1Abstract class not to be instantiated directly.
Constructor
OpenLayers.Format.WMSCapabilities.v1_1Create an instance of one of the subclasses.
Functions
readRead capabilities data from a string, and return a list of layers.
runChildNodes
read_cap_Capability
read_cap_Request
read_cap_GetMap
read_cap_Format
read_cap_DCPTypeSuper simplified HTTP href extractor.
read_cap_Service
read_cap_Layer
read_cap_ScaleHintThe Layer ScaleHint element has min and max attributes that relate to the minimum and maximum resolution that the server supports.
read_cap_Name
read_cap_Title
read_cap_Abstract
read_cap_LatLonBoundingBox
read_cap_Style
read_cap_LegendURL
read_cap_OnlineResource
+ +

Constructor

+ +

OpenLayers.Format.WMSCapabilities.v1_1

Create an instance of one of the subclasses.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read capabilities data from a string, and return a list of layers.

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array} List of named layers.

+ +

runChildNodes

runChildNodes: function(obj,
node)
+ +

read_cap_Capability

read_cap_Capability: function(capabilities,
node)
+ +

read_cap_Request

read_cap_Request: function(obj,
node)
+ +

read_cap_GetMap

read_cap_GetMap: function(request,
node)
+ +

read_cap_Format

read_cap_Format: function(obj,
node)
+ +

read_cap_DCPType

read_cap_DCPType: function(obj,
node)

Super simplified HTTP href extractor.  Assumes the first online resource will work.

+ +

read_cap_Service

read_cap_Service: function(capabilities,
node)
+ +

read_cap_Layer

read_cap_Layer: function(capability,
node,
parentLayer)
+ +

read_cap_ScaleHint

read_cap_ScaleHint: function(layer,
node)

The Layer ScaleHint element has min and max attributes that relate to the minimum and maximum resolution that the server supports.  The values are pixel diagonals measured in meters (on the ground).

+ +

read_cap_Name

read_cap_Name: function(obj,
node)
+ +

read_cap_Title

read_cap_Title: function(obj,
node)
+ +

read_cap_Abstract

read_cap_Abstract: function(obj,
node)
+ +

read_cap_LatLonBoundingBox

read_cap_LatLonBoundingBox: function(layer,
node)
+ +

read_cap_Style

read_cap_Style: function(layer,
node)
+ +

read_cap_LegendURL

read_cap_LegendURL: function(style,
node)
+ +

read_cap_OnlineResource

read_cap_OnlineResource: function(obj,
node)
+ +
+ + + + + + + + + + +
read: function(data)
Read capabilities data from a string, and return a list of layers.
runChildNodes: function(obj,
node)
read_cap_Capability: function(capabilities,
node)
read_cap_Request: function(obj,
node)
read_cap_GetMap: function(request,
node)
read_cap_Format: function(obj,
node)
read_cap_DCPType: function(obj,
node)
Super simplified HTTP href extractor.
read_cap_Service: function(capabilities,
node)
read_cap_Layer: function(capability,
node,
parentLayer)
read_cap_ScaleHint: function(layer,
node)
The Layer ScaleHint element has min and max attributes that relate to the minimum and maximum resolution that the server supports.
read_cap_Name: function(obj,
node)
read_cap_Title: function(obj,
node)
read_cap_Abstract: function(obj,
node)
read_cap_LatLonBoundingBox: function(layer,
node)
read_cap_Style: function(layer,
node)
read_cap_LegendURL: function(style,
node)
read_cap_OnlineResource: function(obj,
node)
Read and write XML.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities/v1_1_0-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities/v1_1_0-js.html new file mode 100644 index 0000000..7574b9f --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities/v1_1_0-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.WMSCapabilities/v1_1_0 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSCapabilities/v1_1_0

Read WMS Capabilities version 1.1.0.

Inherits from

Summary
OpenLayers.Format.WMSCapabilities/v1_1_0Read WMS Capabilities version 1.1.0.
Properties
version{String} The specific parser version.
Constructor
OpenLayers.Format.WMSCapabilities.v1_1_0Create a new parser for WMS capabilities version 1.1.0.
+ +

Properties

+ +

version

{String} The specific parser version.

+ +

Constructor

+ +

OpenLayers.Format.WMSCapabilities.v1_1_0

Create a new parser for WMS capabilities version 1.1.0.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Abstract class not to be instantiated directly.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities/v1_1_1-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities/v1_1_1-js.html new file mode 100644 index 0000000..5409757 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSCapabilities/v1_1_1-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.WMSCapabilities/v1_1_1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSCapabilities/v1_1_1

Read WMS Capabilities version 1.1.1.

Inherits from

Summary
OpenLayers.Format.WMSCapabilities/v1_1_1Read WMS Capabilities version 1.1.1.
Properties
version{String} The specific parser version.
Constructor
OpenLayers.Format.WMSCapabilities.v1_1_1Create a new parser for WMS capabilities version 1.1.1.
+ +

Properties

+ +

version

{String} The specific parser version.

+ +

Constructor

+ +

OpenLayers.Format.WMSCapabilities.v1_1_1

Create a new parser for WMS capabilities version 1.1.1.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +
+ + + + + + + + + + +
Abstract class not to be instantiated directly.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WMSDescribeLayer-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSDescribeLayer-js.html new file mode 100644 index 0000000..c07bef8 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSDescribeLayer-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Format.WMSDescribeLayer - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSDescribeLayer

Read SLD WMS DescribeLayer response DescribeLayer is meant to couple WMS to WFS and WCS

Inherits from

Summary
OpenLayers.Format.WMSDescribeLayerRead SLD WMS DescribeLayer response DescribeLayer is meant to couple WMS to WFS and WCS
Properties
defaultVersion{String} Version number to assume if none found.
version{String} Specify a version string if one is known.
Constructor
OpenLayers.Format.WMSDescribeLayerCreate a new parser for WMS DescribeLayer responses.
Functions
readRead DescribeLayer data from a string, and return the response.
+ +

Properties

+ +

defaultVersion

{String} Version number to assume if none found.  Default is “1.1.1”.

+ +

version

{String} Specify a version string if one is known.

+ +

Constructor

+ +

OpenLayers.Format.WMSDescribeLayer

Create a new parser for WMS DescribeLayer responses.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read DescribeLayer data from a string, and return the response.  The OGC currently defines 2 formats which are allowed for output, so we need to parse these 2 types

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array} Array of {<LayerDescription>} objects which have:

  • {String} owsType: WFS/WCS
  • {String} owsURL: the online resource
  • {String} typeName: the name of the typename on the service
+ +
+ + + + + + + + + + +
read: function(data)
Read DescribeLayer data from a string, and return the response.
Read and write XML.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WMSDescribeLayer/v1_1-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSDescribeLayer/v1_1-js.html new file mode 100644 index 0000000..e5ac2d1 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSDescribeLayer/v1_1-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Format.WMSDescribeLayer.v1_1 - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSDescribeLayer.v1_1

Read SLD WMS DescribeLayer response for WMS 1.1.X WMS 1.1.X is tightly coupled to SLD 1.0.0

Example DescribeLayer request

http://demo.opengeo.org/geoserver/wms?request=DescribeLayer&version=1.1.1&layers=topp:states

Inherits from

Summary
OpenLayers.Format.WMSDescribeLayer.v1_1Read SLD WMS DescribeLayer response for WMS 1.1.X WMS 1.1.X is tightly coupled to SLD 1.0.0
Constructor
OpenLayers.Format.WMSDescribeLayerCreate a new parser for WMS DescribeLayer responses.
Functions
readRead DescribeLayer data from a string, and return the response.
+ +

Constructor

+ +

OpenLayers.Format.WMSDescribeLayer

Create a new parser for WMS DescribeLayer responses.

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read DescribeLayer data from a string, and return the response.  The OGC defines 2 formats which are allowed for output, so we need to parse these 2 types for version 1.1.X

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array} Array of {<LayerDescription>} objects which have:

  • {String} owsType: WFS/WCS
  • {String} owsURL: the online resource
  • {String} typeName: the name of the typename on the service
+ +
+ + + + + + + + + + +
read: function(data)
Read DescribeLayer data from a string, and return the response.
Create a new parser for WMS DescribeLayer responses.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/WMSGetFeatureInfo-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSGetFeatureInfo-js.html new file mode 100644 index 0000000..df7c2b7 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/WMSGetFeatureInfo-js.html @@ -0,0 +1,67 @@ + + +OpenLayers.Format.WMSGetFeatureInfo - OpenLayers + + + + + + + + + +

OpenLayers.Format.WMSGetFeatureInfo

Class to read GetFeatureInfo responses from Web Mapping Services

Inherits from

Summary
OpenLayers.Format.WMSGetFeatureInfoClass to read GetFeatureInfo responses from Web Mapping Services
Properties
layerIdentifier{String} All xml nodes containing this search criteria will populate an internal array of layer nodes.
featureIdentifier{String} All xml nodes containing this search criteria will populate an internal array of feature nodes for each layer node found.
regExesCompiled regular expressions for manipulating strings.
gmlFormat{OpenLayers.Format.GML} internal GML format for parsing geometries in msGMLOutput
Constructor
OpenLayers.Format.WMSGetFeatureInfoCreate a new parser for WMS GetFeatureInfo responses
Functions
readRead WMS GetFeatureInfo data from a string, and return an array of features
read_msGMLOutputParse msGMLOutput nodes.
read_FeatureInfoResponseParse FeatureInfoResponse nodes.
getSiblingNodesByTagCriteriaRecursively searches passed xml node and all it’s descendant levels for nodes whose tagName contains the passed search string.
parseAttributes
parseGeometryParse the geometry out of the node using Format.GML
+ +

Properties

+ +

layerIdentifier

{String} All xml nodes containing this search criteria will populate an internal array of layer nodes.

+ +

featureIdentifier

{String} All xml nodes containing this search criteria will populate an internal array of feature nodes for each layer node found.

+ +

regExes

Compiled regular expressions for manipulating strings.

+ +

gmlFormat

{OpenLayers.Format.GML} internal GML format for parsing geometries in msGMLOutput

+ +

Constructor

+ +

OpenLayers.Format.WMSGetFeatureInfo

Create a new parser for WMS GetFeatureInfo responses

Parameters

options{Object} An optional object whose properties will be set on this instance.
+ +

Functions

+ +

read

read: function(data)

Read WMS GetFeatureInfo data from a string, and return an array of features

Parameters

data{String} or {DOMElement} data to read/parse.

Returns

{Array(OpenLayers.Feature.Vector)} An array of features.

+ +

read_msGMLOutput

read_msGMLOutput: function(data)

Parse msGMLOutput nodes.

Parameters

data{DOMElement}

Returns

{Array}

+ +

read_FeatureInfoResponse

read_FeatureInfoResponse: function(data)

Parse FeatureInfoResponse nodes.

Parameters

data{DOMElement}

Returns

{Array}

+ +

getSiblingNodesByTagCriteria

getSiblingNodesByTagCriteria: function(node,
criteria)

Recursively searches passed xml node and all it’s descendant levels for nodes whose tagName contains the passed search string.  This returns an array of all sibling nodes which match the criteria from the highest hierarchial level from which a match is found.

Parameters

node{DOMElement} An xml node
criteria{String} Search string which will match some part of a tagName

Returns

Array({DOMElement)) An array of sibling xml nodes

+ +

parseAttributes

parseAttributes: function(node)

Parameters

node{<DOMElement>}

Returns

{Object} An attributes object.

Notes

Assumes that attributes are direct child xml nodes of the passed node and contain only a single text node.

+ +

parseGeometry

parseGeometry: function(node)

Parse the geometry out of the node using Format.GML

Parameters

node{<DOMElement>}

Returns

{OpenLayers.Geometry} the geometry object

+ +
+ + + + + + + + + + +
Read/Wite GML.
read: function(data)
Read WMS GetFeatureInfo data from a string, and return an array of features
read_msGMLOutput: function(data)
Parse msGMLOutput nodes.
read_FeatureInfoResponse: function(data)
Parse FeatureInfoResponse nodes.
getSiblingNodesByTagCriteria: function(node,
criteria)
Recursively searches passed xml node and all it’s descendant levels for nodes whose tagName contains the passed search string.
parseAttributes: function(node)
parseGeometry: function(node)
Parse the geometry out of the node using Format.GML
Read and write XML.
Vector features use the OpenLayers.Geometry classes as geometry description.
A Geometry is a description of a geographic object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Format/XML-js.html b/openlayers/doc/devdocs/files/OpenLayers/Format/XML-js.html new file mode 100644 index 0000000..8b966c0 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Format/XML-js.html @@ -0,0 +1,107 @@ + + +OpenLayers.Format.XML - OpenLayers + + + + + + + + + +

OpenLayers.Format.XML

Read and write XML.  For cross-browser XML generation, use methods on an instance of the XML format class instead of on <code>document<end>.  The DOM creation and traversing methods exposed here all mimic the W3C XML DOM methods.  Create a new parser with the OpenLayers.Format.XML constructor.

Inherits from

Summary
OpenLayers.Format.XMLRead and write XML.
Properties
namespaces{Object} Mapping of namespace aliases to namespace URIs.
namespaceAlias{Object} Mapping of namespace URI to namespace alias.
defaultPrefix{String} The default namespace alias for creating element nodes.
readersContains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
writersAs a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
xmldom{XMLDom} If this browser uses ActiveX, this will be set to a XMLDOM object.
Constructor
OpenLayers.Format.XMLConstruct an XML parser.
Functions
destroyClean up.
setNamespaceSet a namespace alias and URI for the format.
writeSerialize a DOM node into a XML string.
createElementNSCreate a new element with namespace.
createTextNodeCreate a text node.
getElementsByTagNameNSGet a list of elements on a node given the namespace URI and local name.
getAttributeNodeNSGet an attribute node given the namespace URI and local name.
getAttributeNSGet an attribute value given the namespace URI and local name.
getChildValueGet the textual value of the node if it exists, or return an optional default string.
concatChildValuesDeprecated.
isSimpleContentTest if the given node has only simple content (i.e.
contentTypeDetermine the content type for a given node.
hasAttributeNSDetermine whether a node has a particular attribute matching the given name and namespace.
setAttributeNSAdds a new attribute or changes the value of an attribute with the given namespace and name.
createElementNSPlusShorthand for creating namespaced elements with optional attributes and child text nodes.
setAttributesSet multiple attributes given key value pairs from an object.
readNodeShorthand for applying one of the named readers given the node namespace and local name.
readChildNodesShorthand for applying the named readers to all children of a node.
writeNodeShorthand for applying one of the named writers and appending the results to a node.
getChildElGet the first child element.
getNextElGet the next sibling element.
getThisOrNextElReturn this node or the next element node.
lookupNamespaceURITakes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
OpenLayers.Format.XML.lookupNamespaceURITakes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
+ +

Properties

+ +

namespaces

{Object} Mapping of namespace aliases to namespace URIs.  Properties of this object should not be set individually.  Read-only.  All XML subclasses should have their own namespaces object.  Use setNamespace to add or set a namespace alias after construction.

+ +

namespaceAlias

{Object} Mapping of namespace URI to namespace alias.  This object is read-only.  Use setNamespace to add or set a namespace alias.

+ +

defaultPrefix

{String} The default namespace alias for creating element nodes.

+ +

readers

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.  The function will be applied in the scope of this parser with two arguments: the node being read and a context object passed from the parent.

+ +

writers

As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.

+ +

xmldom

{XMLDom} If this browser uses ActiveX, this will be set to a XMLDOM object.  It is not intended to be a browser sniffing property.  Instead, the xmldom property is used instead of <code>document<end> where namespaced node creation methods are not supported.  In all other browsers, this remains null.

+ +

Constructor

+ +

OpenLayers.Format.XML

Construct an XML parser.  The parser is used to read and write XML.  Reading XML from a string returns a DOM element.  Writing XML from a DOM element returns a string.

Parameters

options{Object} Optional object whose properties will be set on the object.
+ +

Functions

+ +

destroy

destroy: function()

Clean up.

+ +

setNamespace

setNamespace: function(alias,
uri)

Set a namespace alias and URI for the format.

Parameters

alias{String} The namespace alias (prefix).
uri{String} The namespace URI.
+ +

write

write: function(node)

Serialize a DOM node into a XML string.

Parameters

node{DOMElement} A DOM node.

Returns

{String} The XML string representation of the input node.

+ +

createElementNS

createElementNS: function(uri,
name)

Create a new element with namespace.  This node can be appended to another node with the standard node.appendChild method.  For cross-browser support, this method must be used instead of document.createElementNS.

Parameters

uri{String} Namespace URI for the element.
name{String} The qualified name of the element (prefix:localname).

Returns

{Element} A DOM element with namespace.

+ +

createTextNode

createTextNode: function(text)

Create a text node.  This node can be appended to another node with the standard node.appendChild method.  For cross-browser support, this method must be used instead of document.createTextNode.

Parameters

text{String} The text of the node.

Returns

{DOMElement} A DOM text node.

+ +

getElementsByTagNameNS

getElementsByTagNameNS: function(node,
uri,
name)

Get a list of elements on a node given the namespace URI and local name.  To return all nodes in a given namespace, use ‘*’ for the name argument.  To return all nodes of a given (local) name, regardless of namespace, use ‘*’ for the uri argument.

Parameters

node{Element} Node on which to search for other nodes.
uri{String} Namespace URI.
name{String} Local name of the tag (without the prefix).

Returns

{NodeList} A node list or array of elements.

+ +

getAttributeNodeNS

getAttributeNodeNS: function(node,
uri,
name)

Get an attribute node given the namespace URI and local name.

Parameters

node{Element} Node on which to search for attribute nodes.
uri{String} Namespace URI.
name{String} Local name of the attribute (without the prefix).

Returns

{DOMElement} An attribute node or null if none found.

+ +

getAttributeNS

getAttributeNS: function(node,
uri,
name)

Get an attribute value given the namespace URI and local name.

Parameters

node{Element} Node on which to search for an attribute.
uri{String} Namespace URI.
name{String} Local name of the attribute (without the prefix).

Returns

{String} An attribute value or and empty string if none found.

+ +

getChildValue

getChildValue: function(node,
def)

Get the textual value of the node if it exists, or return an optional default string.  Returns an empty string if no first child exists and no default value is supplied.

Parameters

node{DOMElement} The element used to look for a first child value.
def{String} Optional string to return in the event that no first child value exists.

Returns

{String} The value of the first child of the given node.

+ +

concatChildValues

concatChildValues: function(node,
def)

Deprecated.  Use getChildValue instead.

Concatenate the value of all child nodes if any exist, or return an optional default string.  Returns an empty string if no children exist and no default value is supplied.  Not optimized for large numbers of child nodes.

Parameters

node{DOMElement} The element used to look for child values.
def{String} Optional string to return in the event that no child exist.

Returns

{String} The concatenated value of all child nodes of the given node.

+ +

isSimpleContent

isSimpleContent: function(node)

Test if the given node has only simple content (i.e. no child element nodes).

Parameters

node{DOMElement} An element node.

Returns

{Boolean} The node has no child element nodes (nodes of type 1).

+ +

contentType

contentType: function(node)

Determine the content type for a given node.

Parameters

node{DOMElement}

Returns

{Integer} One of OpenLayers.Format.XML.CONTENT_TYPE.{EMPTY,SIMPLE,COMPLEX,MIXED} if the node has no, simple, complex, or mixed content.

+ +

hasAttributeNS

hasAttributeNS: function(node,
uri,
name)

Determine whether a node has a particular attribute matching the given name and namespace.

Parameters

node{Element} Node on which to search for an attribute.
uri{String} Namespace URI.
name{String} Local name of the attribute (without the prefix).

Returns

{Boolean} The node has an attribute matching the name and namespace.

+ +

setAttributeNS

setAttributeNS: function(node,
uri,
name,
value)

Adds a new attribute or changes the value of an attribute with the given namespace and name.

Parameters

node{Element} Element node on which to set the attribute.
uri{String} Namespace URI for the attribute.
name{String} Qualified name (prefix:localname) for the attribute.
value{String} Attribute value.
+ +

createElementNSPlus

createElementNSPlus: function(name,
options)

Shorthand for creating namespaced elements with optional attributes and child text nodes.

Parameters

name{String} The qualified node name.
options{Object} Optional object for node configuration.

Valid options

uri{String} Optional namespace uri for the element - supply a prefix instead if the namespace uri is a property of the format’s namespace object.
attributes{Object} Optional attributes to be set using the setAttributes method.
value{String} Optional text to be appended as a text node.

Returns

{Element} An element node.

+ +

setAttributes

setAttributes: function(node,
obj)

Set multiple attributes given key value pairs from an object.

Parameters

node{Element} An element node.
obj{Object || Array} An object whose properties represent attribute names and values represent attribute values.  If an attribute name is a qualified name (“prefix:local”), the prefix will be looked up in the parsers {namespaces} object.  If the prefix is found, setAttributeNS will be used instead of setAttribute.
+ +

readNode

readNode: function(node,
obj)

Shorthand for applying one of the named readers given the node namespace and local name.  Readers take two args (node, obj) and generally extend or modify the second.

Parameters

node{DOMElement} The node to be read (required).
obj{Object} The object to be modified (optional).

Returns

{Object} The input object, modified (or a new one if none was provided).

+ +

readChildNodes

readChildNodes: function(node,
obj)

Shorthand for applying the named readers to all children of a node.  For each child of type 1 (element), <readSelf> is called.

Parameters

node{DOMElement} The node to be read (required).
obj{Object} The object to be modified (optional).

Returns

{Object} The input object, modified.

+ +

writeNode

writeNode: function(name,
obj,
parent)

Shorthand for applying one of the named writers and appending the results to a node.  If a qualified name is not provided for the second argument (and a local name is used instead), the namespace of the parent node will be assumed.

Parameters

name{String} The name of a node to generate.  If a qualified name (e.g.  “pre:Name”) is used, the namespace prefix is assumed to be in the writers group.  If a local name is used (e.g.  “Name”) then the namespace of the parent is assumed.  If a local name is used and no parent is supplied, then the default namespace is assumed.
obj{Object} Structure containing data for the writer.
parent{DOMElement} Result will be appended to this node.  If no parent is supplied, the node will not be appended to anything.

Returns

{DOMElement} The child node.

+ +

getChildEl

getChildEl: function(node,
name,
uri)

Get the first child element.  Optionally only return the first child if it matches the given name and namespace URI.

Parameters

node{DOMElement} The parent node.
name{String} Optional node name (local) to search for.
uri{String} Optional namespace URI to search for.

Returns

{DOMElement} The first child.  Returns null if no element is found, if something significant besides an element is found, or if the element found does not match the optional name and uri.

+ +

getNextEl

getNextEl: function(node,
name,
uri)

Get the next sibling element.  Optionally get the first sibling only if it matches the given local name and namespace URI.

Parameters

node{DOMElement} The node.
name{String} Optional local name of the sibling to search for.
uri{String} Optional namespace URI of the sibling to search for.

Returns

{DOMElement} The next sibling element.  Returns null if no element is found, something significant besides an element is found, or the found element does not match the optional name and uri.

+ +

getThisOrNextEl

getThisOrNextEl: function(node,
name,
uri)

Return this node or the next element node.  Optionally get the first sibling with the given local name or namespace URI.

Parameters

node{DOMElement} The node.
name{String} Optional local name of the sibling to search for.
uri{String} Optional namespace URI of the sibling to search for.

Returns

{DOMElement} The next sibling element.  Returns null if no element is found, something significant besides an element is found, or the found element does not match the query.

+ +

lookupNamespaceURI

lookupNamespaceURI: function(node,
prefix)

Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).  Supplying null for the prefix will return the default namespace.

For browsers that support it, this calls the native lookupNamesapceURI function.  In other browsers, this is an implementation of http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI.

For browsers that don’t support the attribute.ownerElement property, this method cannot be called on attribute nodes.

Parameters

node{DOMElement} The node from which to start looking.
prefix{String} The prefix to lookup or null to lookup the default namespace.

Returns

{String} The namespace URI for the given prefix.  Returns null if the prefix cannot be found or the node is the wrong type.

+ +

OpenLayers.Format.XML.lookupNamespaceURI

Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).  Supplying null for the prefix will return the default namespace.

For browsers that support it, this calls the native lookupNamesapceURI function.  In other browsers, this is an implementation of http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI.

For browsers that don’t support the attribute.ownerElement property, this method cannot be called on attribute nodes.

Parameters

node{DOMElement} The node from which to start looking.
prefix{String} The prefix to lookup or null to lookup the default namespace.

Returns

{String} The namespace URI for the given prefix.  Returns null if the prefix cannot be found or the node is the wrong type.

+ +
+ + + + + + + + + + +
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
destroy: function()
Clean up.
setNamespace: function(alias,
uri)
Set a namespace alias and URI for the format.
write: function(node)
Serialize a DOM node into a XML string.
createElementNS: function(uri,
name)
Create a new element with namespace.
createTextNode: function(text)
Create a text node.
getElementsByTagNameNS: function(node,
uri,
name)
Get a list of elements on a node given the namespace URI and local name.
getAttributeNodeNS: function(node,
uri,
name)
Get an attribute node given the namespace URI and local name.
getAttributeNS: function(node,
uri,
name)
Get an attribute value given the namespace URI and local name.
getChildValue: function(node,
def)
Get the textual value of the node if it exists, or return an optional default string.
concatChildValues: function(node,
def)
Deprecated.
isSimpleContent: function(node)
Test if the given node has only simple content (i.e.
contentType: function(node)
Determine the content type for a given node.
hasAttributeNS: function(node,
uri,
name)
Determine whether a node has a particular attribute matching the given name and namespace.
setAttributeNS: function(node,
uri,
name,
value)
Adds a new attribute or changes the value of an attribute with the given namespace and name.
createElementNSPlus: function(name,
options)
Shorthand for creating namespaced elements with optional attributes and child text nodes.
setAttributes: function(node,
obj)
Set multiple attributes given key value pairs from an object.
readNode: function(node,
obj)
Shorthand for applying one of the named readers given the node namespace and local name.
readChildNodes: function(node,
obj)
Shorthand for applying the named readers to all children of a node.
writeNode: function(name,
obj,
parent)
Shorthand for applying one of the named writers and appending the results to a node.
getChildEl: function(node,
name,
uri)
Get the first child element.
getNextEl: function(node,
name,
uri)
Get the next sibling element.
getThisOrNextEl: function(node,
name,
uri)
Return this node or the next element node.
lookupNamespaceURI: function(node,
prefix)
Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
Construct an XML parser.
Base class for format reading/writing a variety of formats.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Geometry-js.html b/openlayers/doc/devdocs/files/OpenLayers/Geometry-js.html new file mode 100644 index 0000000..4c7568e --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Geometry-js.html @@ -0,0 +1,85 @@ + + +OpenLayers.Geometry - OpenLayers + + + + + + + + + +

OpenLayers.Geometry

A Geometry is a description of a geographic object.  Create an instance of this class with the OpenLayers.Geometry constructor.  This is a base class, typical geometry types are described by subclasses of this class.

Summary
OpenLayers.GeometryA Geometry is a description of a geographic object.
Properties
id{String} A unique identifier for this geometry.
parent{OpenLayers.Geometry}This is set when a Geometry is added as component of another geometry
bounds{OpenLayers.Bounds} The bounds of this geometry
Constructor
OpenLayers.GeometryCreates a geometry object.
Functions
destroyDestroy this geometry.
cloneCreate a clone of this geometry.
clearBoundsNullify this components bounds and that of its parent as well.
extendBoundsExtend the existing bounds to include the new bounds.
getBoundsGet the bounds for this Geometry.
calculateBoundsRecalculate the bounds for the geometry.
distanceToCalculate the closest distance between two geometries (on the x-y plane).
getVerticesReturn a list of all points in this geometry.
atPoint
getLengthCalculate the length of this geometry.
getAreaCalculate the area of this geometry.
getCentroidCalculate the centroid of this geometry.
toStringReturns the Well-Known Text representation of a geometry
OpenLayers.Geometry.fromWKTGenerate a geometry given a Well-Known Text string.
OpenLayers.Geometry.segmentsIntersectDetermine whether two line segments intersect.
OpenLayers.Geometry.distanceToSegment
+ +

Properties

+ +

id

{String} A unique identifier for this geometry.

+ +

parent

{OpenLayers.Geometry}This is set when a Geometry is added as component of another geometry

+ +

bounds

{OpenLayers.Bounds} The bounds of this geometry

+ +

Constructor

+ +

OpenLayers.Geometry

Creates a geometry object.

+ +

Functions

+ +

destroy

destroy: function()

Destroy this geometry.

+ +

clone

clone: function()

Create a clone of this geometry.  Does not set any non-standard properties of the cloned geometry.

Returns

{OpenLayers.Geometry} An exact clone of this geometry.

+ +

clearBounds

clearBounds: function()

Nullify this components bounds and that of its parent as well.

+ +

extendBounds

extendBounds: function(newBounds)

Extend the existing bounds to include the new bounds.  If geometry’s bounds is not yet set, then set a new Bounds.

Parameters

newBounds{OpenLayers.Bounds}
+ +

getBounds

getBounds: function()

Get the bounds for this Geometry.  If bounds is not set, it is calculated again, this makes queries faster.

Returns

{OpenLayers.Bounds}

+ +

calculateBounds

calculateBounds: function()

Recalculate the bounds for the geometry.

+ +

distanceTo

distanceTo: function(geometry,
options)

Calculate the closest distance between two geometries (on the x-y plane).

Parameters

geometry{OpenLayers.Geometry} The target geometry.
options{Object} Optional properties for configuring the distance calculation.

Valid options depend on the specific geometry type.

Returns

{Number | Object} The distance between this geometry and the target.  If details is true, the return will be an object with distance, x0, y0, x1, and x2 properties.  The x0 and y0 properties represent the coordinates of the closest point on this geometry.  The x1 and y1 properties represent the coordinates of the closest point on the target geometry.

+ +

getVertices

getVertices: function(nodes)

Return a list of all points in this geometry.

Parameters

nodes{Boolean} For lines, only return vertices that are endpoints.  If false, for lines, only vertices that are not endpoints will be returned.  If not provided, all vertices will be returned.

Returns

{Array} A list of all vertices in the geometry.

+ +

atPoint

atPoint: function(lonlat,
toleranceLon,
toleranceLat)
NoteThis is only an approximation based on the bounds of the geometry.

Parameters

lonlat{OpenLayers.LonLat}
toleranceLon{float} Optional tolerance in Geometric Coords
toleranceLat{float} Optional tolerance in Geographic Coords

Returns

{Boolean} Whether or not the geometry is at the specified location

+ +

getLength

getLength: function()

Calculate the length of this geometry.  This method is defined in subclasses.

Returns

{Float} The length of the collection by summing its parts

+ +

getArea

getArea: function()

Calculate the area of this geometry.  This method is defined in subclasses.

Returns

{Float} The area of the collection by summing its parts

+ +

getCentroid

getCentroid: function()

Calculate the centroid of this geometry.  This method is defined in subclasses.

Returns

{OpenLayers.Geometry.Point} The centroid of the collection

+ +

toString

toString: function()

Returns the Well-Known Text representation of a geometry

Returns

{String} Well-Known Text

+ +

OpenLayers.Geometry.fromWKT

OpenLayers.Geometry.fromWKT = function(wkt)

Generate a geometry given a Well-Known Text string.

Parameters

wkt{String} A string representing the geometry in Well-Known Text.

Returns

{OpenLayers.Geometry} A geometry of the appropriate class.

+ +

OpenLayers.Geometry.segmentsIntersect

OpenLayers.Geometry.segmentsIntersect = function(seg1,
seg2,
options)

Determine whether two line segments intersect.  Optionally calculates and returns the intersection point.  This function is optimized for cases where seg1.x2 >= seg2.x1 || seg2.x2 >= seg1.x1.  In those obvious cases where there is no intersection, the function should not be called.

Parameters

seg1{Object} Object representing a segment with properties x1, y1, x2, and y2.  The start point is represented by x1 and y1.  The end point is represented by x2 and y2.  Start and end are ordered so that x1 < x2.
seg2{Object} Object representing a segment with properties x1, y1, x2, and y2.  The start point is represented by x1 and y1.  The end point is represented by x2 and y2.  Start and end are ordered so that x1 < x2.
options{Object} Optional properties for calculating the intersection.

Valid options

point{Boolean} Return the intersection point.  If false, the actual intersection point will not be calculated.  If true and the segments intersect, the intersection point will be returned.  If true and the segments do not intersect, false will be returned.  If true and the segments are coincident, true will be returned.
tolerance{Number} If a non-null value is provided, if the segments are within the tolerance distance, this will be considered an intersection.  In addition, if the point option is true and the calculated intersection is within the tolerance distance of an end point, the endpoint will be returned instead of the calculated intersection.  Further, if the intersection is within the tolerance of endpoints on both segments, or if two segment endpoints are within the tolerance distance of eachother (but no intersection is otherwise calculated), an endpoint on the first segment provided will be returned.

Returns

{Boolean | OpenLayers.Geometry.Point} The two segments intersect.  If the point argument is true, the return will be the intersection point or false if none exists.  If point is true and the segments are coincident, return will be true (and the instersection is equal to the shorter segment).

+ +

OpenLayers.Geometry.distanceToSegment

OpenLayers.Geometry.distanceToSegment = function(point,
segment)

Parameters

point{Object} An object with x and y properties representing the point coordinates.
segment{Object} An object with x1, y1, x2, and y2 properties representing endpoint coordinates.

Returns

{Object} An object with distance, x, and y properties.  The distance will be the shortest distance between the input point and segment.  The x and y properties represent the coordinates along the segment where the shortest distance meets the segment.

+ +
+ + + + + + + + + + +
Creates a geometry object.
Instances of this class represent bounding boxes.
destroy: function()
Destroy this geometry.
clone: function()
Create a clone of this geometry.
clearBounds: function()
Nullify this components bounds and that of its parent as well.
extendBounds: function(newBounds)
Extend the existing bounds to include the new bounds.
getBounds: function()
Get the bounds for this Geometry.
calculateBounds: function()
Recalculate the bounds for the geometry.
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
getVertices: function(nodes)
Return a list of all points in this geometry.
atPoint: function(lonlat,
toleranceLon,
toleranceLat)
getLength: function()
Calculate the length of this geometry.
getArea: function()
Calculate the area of this geometry.
getCentroid: function()
Calculate the centroid of this geometry.
toString: function()
Returns the Well-Known Text representation of a geometry
OpenLayers.Geometry.fromWKT = function(wkt)
Generate a geometry given a Well-Known Text string.
OpenLayers.Geometry.segmentsIntersect = function(seg1,
seg2,
options)
Determine whether two line segments intersect.
OpenLayers.Geometry.distanceToSegment = function(point,
segment)
This class represents a longitude and latitude pair
Point geometry class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Geometry/Collection-js.html b/openlayers/doc/devdocs/files/OpenLayers/Geometry/Collection-js.html new file mode 100644 index 0000000..c6c9e24 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Geometry/Collection-js.html @@ -0,0 +1,93 @@ + + +OpenLayers.Geometry.Collection - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.Collection

A Collection is exactly what it sounds like: A collection of different Geometries.  These are stored in the local parameter components (which can be passed as a parameter to the constructor).

As new geometries are added to the collection, they are NOT cloned.  When removing geometries, they need to be specified by reference (ie you have to pass in the exact geometry to be removed).

The getArea and getLength functions here merely iterate through the components, summing their respective areas and lengths.

Create a new instance with the OpenLayers.Geometry.Collection constructor.

Inerhits from

Summary
OpenLayers.Geometry.CollectionA Collection is exactly what it sounds like: A collection of different Geometries.
Properties
components{Array(OpenLayers.Geometry)} The component parts of this geometry
componentTypes{Array(String)} An array of class names representing the types of components that the collection can include.
Constructor
OpenLayers.Geometry.CollectionCreates a Geometry Collection -- a list of geoms.
Functions
destroyDestroy this geometry.
cloneClone this geometry.
getComponentsStringGet a string representing the components for this collection
calculateBoundsRecalculate the bounds by iterating through the components and calling calling extendBounds() on each item.
addComponentsAdd components to this geometry.
addComponentAdd a new component (geometry) to the collection.
removeComponentsRemove components from this geometry.
removeComponentRemove a component from this geometry.
getLengthCalculate the length of this geometry
getAreaCalculate the area of this geometry.
getGeodesicAreaCalculate the approximate area of the polygon were it projected onto the earth.
getCentroid{OpenLayers.Geometry.Point} The centroid of the collection
getGeodesicLengthCalculate the approximate length of the geometry were it projected onto the earth.
moveMoves a geometry by the given displacement along positive x and y axes.
rotateRotate a geometry around some origin
resizeResize a geometry relative to some origin.
distanceToCalculate the closest distance between two geometries (on the x-y plane).
equalsDetermine whether another geometry is equivalent to this one.
transformReproject the components geometry from source to dest.
intersectsDetermine if the input geometry intersects this one.
getVerticesReturn a list of all points in this geometry.
+ +

Properties

+ +

components

{Array(OpenLayers.Geometry)} The component parts of this geometry

+ +

componentTypes

{Array(String)} An array of class names representing the types of components that the collection can include.  A null value means the component types are not restricted.

+ +

Constructor

+ +

OpenLayers.Geometry.Collection

Creates a Geometry Collection -- a list of geoms.

Parameters

components{Array(OpenLayers.Geometry)} Optional array of geometries
+ +

Functions

+ +

destroy

destroy: function ()

Destroy this geometry.

+ +

clone

clone: function()

Clone this geometry.

Returns

{OpenLayers.Geometry.Collection} An exact clone of this collection

+ +

getComponentsString

getComponentsString: function()

Get a string representing the components for this collection

Returns

{String} A string representation of the components of this geometry

+ +

calculateBounds

calculateBounds: function()

Recalculate the bounds by iterating through the components and calling calling extendBounds() on each item.

+ +

addComponents

addComponents: function(components)

Add components to this geometry.

Parameters

components{Array(OpenLayers.Geometry)} An array of geometries to add
+ +

addComponent

addComponent: function(component,
index)

Add a new component (geometry) to the collection.  If this.componentTypes is set, then the component class name must be in the componentTypes array.

The bounds cache is reset.

Parameters

component{OpenLayers.Geometry} A geometry to add
index{int} Optional index into the array to insert the component

Returns

{Boolean} The component geometry was successfully added

+ +

removeComponents

removeComponents: function(components)

Remove components from this geometry.

Parameters

components{Array(OpenLayers.Geometry)} The components to be removed
+ +

removeComponent

removeComponent: function(component)

Remove a component from this geometry.

Parameters

component{OpenLayers.Geometry}
+ +

getLength

getLength: function()

Calculate the length of this geometry

Returns

{Float} The length of the geometry

+ +

getArea

getArea: function()

Calculate the area of this geometry.  Note how this function is overridden in OpenLayers.Geometry.Polygon.

Returns

{Float} The area of the collection by summing its parts

+ +

getGeodesicArea

getGeodesicArea: function(projection)

Calculate the approximate area of the polygon were it projected onto the earth.

Parameters

projection{OpenLayers.Projection} The spatial reference system for the geometry coordinates.  If not provided, Geographic/WGS84 is assumed.

Reference

Robert.  G. Chamberlain and William H.  Duquette, “Some Algorithms for Polygons on a Sphere”, JPL Publication 07-03, Jet Propulsion Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409

Returns

{float} The approximate geodesic area of the geometry in square meters.

+ +

getCentroid

getCentroid: function()

Returns

{OpenLayers.Geometry.Point} The centroid of the collection

+ +

getGeodesicLength

getGeodesicLength: function(projection)

Calculate the approximate length of the geometry were it projected onto the earth.

projection{OpenLayers.Projection} The spatial reference system for the geometry coordinates.  If not provided, Geographic/WGS84 is assumed.

Returns

{Float} The appoximate geodesic length of the geometry in meters.

+ +

move

move: function(x,
y)

Moves a geometry by the given displacement along positive x and y axes.  This modifies the position of the geometry and clears the cached bounds.

Parameters

x{Float} Distance to move geometry in positive x direction.
y{Float} Distance to move geometry in positive y direction.
+ +

rotate

rotate: function(angle,
origin)

Rotate a geometry around some origin

Parameters

angle{Float} Rotation angle in degrees (measured counterclockwise from the positive x-axis)
origin{OpenLayers.Geometry.Point} Center point for the rotation
+ +

resize

resize: function(scale,
origin,
ratio)

Resize a geometry relative to some origin.  Use this method to apply a uniform scaling to a geometry.

Parameters

scale{Float} Factor by which to scale the geometry.  A scale of 2 doubles the size of the geometry in each dimension (lines, for example, will be twice as long, and polygons will have four times the area).
origin{OpenLayers.Geometry.Point} Point of origin for resizing
ratio{Float} Optional x:y ratio for resizing.  Default ratio is 1.

Returns

{OpenLayers.Geometry}The current geometry.
+ +

distanceTo

distanceTo: function(geometry,
options)

Calculate the closest distance between two geometries (on the x-y plane).

Parameters

geometry{OpenLayers.Geometry} The target geometry.
options{Object} Optional properties for configuring the distance calculation.

Valid options

details{Boolean} Return details from the distance calculation.  Default is false.
edge{Boolean} Calculate the distance from this geometry to the nearest edge of the target geometry.  Default is true.  If true, calling distanceTo from a geometry that is wholly contained within the target will result in a non-zero distance.  If false, whenever geometries intersect, calling distanceTo will return 0.  If false, details cannot be returned.

Returns

{Number | Object} The distance between this geometry and the target.  If details is true, the return will be an object with distance, x0, y0, x1, and y1 properties.  The x0 and y0 properties represent the coordinates of the closest point on this geometry.  The x1 and y1 properties represent the coordinates of the closest point on the target geometry.

+ +

equals

equals: function(geometry)

Determine whether another geometry is equivalent to this one.  Geometries are considered equivalent if all components have the same coordinates.

Parameters

geom{OpenLayers.Geometry} The geometry to test.

Returns

{Boolean} The supplied geometry is equivalent to this geometry.

+ +

transform

transform: function(source,
dest)

Reproject the components geometry from source to dest.

Parameters

source{OpenLayers.Projection}
dest{OpenLayers.Projection}

Returns

{OpenLayers.Geometry}

+ +

intersects

intersects: function(geometry)

Determine if the input geometry intersects this one.

Parameters

geometry{OpenLayers.Geometry} Any type of geometry.

Returns

{Boolean} The input geometry intersects this one.

+ +

getVertices

getVertices: function(nodes)

Return a list of all points in this geometry.

Parameters

nodes{Boolean} For lines, only return vertices that are endpoints.  If false, for lines, only vertices that are not endpoints will be returned.  If not provided, all vertices will be returned.

Returns

{Array} A list of all vertices in the geometry.

+ +
+ + + + + + + + + + +
A Geometry is a description of a geographic object.
destroy: function ()
Destroy this geometry.
clone: function()
Clone this geometry.
getComponentsString: function()
Get a string representing the components for this collection
calculateBounds: function()
Recalculate the bounds by iterating through the components and calling calling extendBounds() on each item.
addComponents: function(components)
Add components to this geometry.
addComponent: function(component,
index)
Add a new component (geometry) to the collection.
removeComponents: function(components)
Remove components from this geometry.
removeComponent: function(component)
Remove a component from this geometry.
getLength: function()
Calculate the length of this geometry
getArea: function()
Calculate the area of this geometry.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
Point geometry class.
getGeodesicLength: function(projection)
Calculate the approximate length of the geometry were it projected onto the earth.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
rotate: function(angle,
origin)
Rotate a geometry around some origin
resize: function(scale,
origin,
ratio)
Resize a geometry relative to some origin.
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
equals: function(geometry)
Determine whether another geometry is equivalent to this one.
transform: function(source,
dest)
Reproject the components geometry from source to dest.
intersects: function(geometry)
Determine if the input geometry intersects this one.
getVertices: function(nodes)
Return a list of all points in this geometry.
{Array(OpenLayers.Geometry)} The component parts of this geometry
Creates a Geometry Collection -- a list of geoms.
Polygon is a collection of Geometry.LinearRings.
Class for coordinate transforms between coordinate systems.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Geometry/Curve-js.html b/openlayers/doc/devdocs/files/OpenLayers/Geometry/Curve-js.html new file mode 100644 index 0000000..1cd051d --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Geometry/Curve-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Geometry.Curve - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.Curve

A Curve is a MultiPoint, whose points are assumed to be connected.  To this end, we provide a “getLength()” function, which iterates through the points, summing the distances between them.

Inherits

Summary
OpenLayers.Geometry.CurveA Curve is a MultiPoint, whose points are assumed to be connected.
Properties
componentTypes{Array(String)} An array of class names representing the types of components that the collection can include.
Constructor
OpenLayers.Geometry.Curve
Functions
getLength{Float} The length of the curve
getGeodesicLengthCalculate the approximate length of the geometry were it projected onto the earth.
+ +

Properties

+ +

componentTypes

{Array(String)} An array of class names representing the types of components that the collection can include.  A null value means the component types are not restricted.

+ +

Constructor

+ +

OpenLayers.Geometry.Curve

Parameters

point{Array(OpenLayers.Geometry.Point)}
+ +

Functions

+ +

getLength

getLength: function()

Returns

{Float} The length of the curve

+ +

getGeodesicLength

getGeodesicLength: function(projection)

Calculate the approximate length of the geometry were it projected onto the earth.

projection{OpenLayers.Projection} The spatial reference system for the geometry coordinates.  If not provided, Geographic/WGS84 is assumed.

Returns

{Float} The appoximate geodesic length of the geometry in meters.

+ +
+ + + + + + + + + + +
getLength: function()
{Float} The length of the curve
getGeodesicLength: function(projection)
Calculate the approximate length of the geometry were it projected onto the earth.
MultiPoint is a collection of Points.
Point geometry class.
Class for coordinate transforms between coordinate systems.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Geometry/LineString-js.html b/openlayers/doc/devdocs/files/OpenLayers/Geometry/LineString-js.html new file mode 100644 index 0000000..1f2438a --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Geometry/LineString-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Geometry.LineString - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.LineString

A LineString is a Curve which, once two points have been added to it, can never be less than two points long.

Inherits from

Summary
OpenLayers.Geometry.LineStringA LineString is a Curve which, once two points have been added to it, can never be less than two points long.
Constructor
OpenLayers.Geometry.LineStringCreate a new LineString geometry
Functions
removeComponentOnly allows removal of a point if there are three or more points in the linestring.
intersectsTest for instersection between two geometries.
getSortedSegments{Array} An array of segment objects.
splitWithSegmentSplit this geometry with the given segment.
splitUse this geometry (the source) to attempt to split a target geometry.
splitWithSplit this geometry (the target) with the given geometry (the source).
getVerticesReturn a list of all points in this geometry.
distanceToCalculate the closest distance between two geometries (on the x-y plane).
+ +

Constructor

+ +

OpenLayers.Geometry.LineString

Create a new LineString geometry

Parameters

points{Array(OpenLayers.Geometry.Point)} An array of points used to generate the linestring
+ +

Functions

+ +

removeComponent

removeComponent: function(point)

Only allows removal of a point if there are three or more points in the linestring.  (otherwise the result would be just a single point)

Parameters

point{OpenLayers.Geometry.Point} The point to be removed
+ +

intersects

intersects: function(geometry)

Test for instersection between two geometries.  This is a cheapo implementation of the Bently-Ottmann algorigithm.  It doesn’t really keep track of a sweep line data structure.  It is closer to the brute force method, except that segments are sorted and potential intersections are only calculated when bounding boxes intersect.

Parameters

geometry{OpenLayers.Geometry}

Returns

{Boolean} The input geometry intersects this geometry.

+ +

getSortedSegments

getSortedSegments: function()

Returns

{Array} An array of segment objects.  Segment objects have properties x1, y1, x2, and y2.  The start point is represented by x1 and y1.  The end point is represented by x2 and y2.  Start and end are ordered so that x1 < x2.

+ +

splitWithSegment

splitWithSegment: function(seg,
options)

Split this geometry with the given segment.

Parameters

seg{Object} An object with x1, y1, x2, and y2 properties referencing segment endpoint coordinates.
options{Object} Properties of this object will be used to determine how the split is conducted.

Valid options

edge{Boolean} Allow splitting when only edges intersect.  Default is true.  If false, a vertex on the source segment must be within the tolerance distance of the intersection to be considered a split.
tolerance{Number} If a non-null value is provided, intersections within the tolerance distance of one of the source segment’s endpoints will be assumed to occur at the endpoint.

Returns

{Object} An object with lines and points properties.  If the given segment intersects this linestring, the lines array will reference geometries that result from the split.  The points array will contain all intersection points.  Intersection points are sorted along the segment (in order from x1,y1 to x2,y2).

+ +

split

split: function(target,
options)

Use this geometry (the source) to attempt to split a target geometry.

Parameters

target{OpenLayers.Geometry} The target geometry.
options{Object} Properties of this object will be used to determine how the split is conducted.

Valid options

mutual{Boolean} Split the source geometry in addition to the target geometry.  Default is false.
edge{Boolean} Allow splitting when only edges intersect.  Default is true.  If false, a vertex on the source must be within the tolerance distance of the intersection to be considered a split.
tolerance{Number} If a non-null value is provided, intersections within the tolerance distance of an existing vertex on the source will be assumed to occur at the vertex.

Returns

{Array} A list of geometries (of this same type as the target) that result from splitting the target with the source geometry.  The source and target geometry will remain unmodified.  If no split results, null will be returned.  If mutual is true and a split results, return will be an array of two arrays - the first will be all geometries that result from splitting the source geometry and the second will be all geometries that result from splitting the target geometry.

+ +

splitWith

splitWith: function(geometry,
options)

Split this geometry (the target) with the given geometry (the source).

Parameters

geometry{OpenLayers.Geometry} A geometry used to split this geometry (the source).
options{Object} Properties of this object will be used to determine how the split is conducted.

Valid options

mutual{Boolean} Split the source geometry in addition to the target geometry.  Default is false.
edge{Boolean} Allow splitting when only edges intersect.  Default is true.  If false, a vertex on the source must be within the tolerance distance of the intersection to be considered a split.
tolerance{Number} If a non-null value is provided, intersections within the tolerance distance of an existing vertex on the source will be assumed to occur at the vertex.

Returns

{Array} A list of geometries (of this same type as the target) that result from splitting the target with the source geometry.  The source and target geometry will remain unmodified.  If no split results, null will be returned.  If mutual is true and a split results, return will be an array of two arrays - the first will be all geometries that result from splitting the source geometry and the second will be all geometries that result from splitting the target geometry.

+ +

getVertices

getVertices: function(nodes)

Return a list of all points in this geometry.

Parameters

nodes{Boolean} For lines, only return vertices that are endpoints.  If false, for lines, only vertices that are not endpoints will be returned.  If not provided, all vertices will be returned.

Returns

{Array} A list of all vertices in the geometry.

+ +

distanceTo

distanceTo: function(geometry,
options)

Calculate the closest distance between two geometries (on the x-y plane).

Parameters

geometry{OpenLayers.Geometry} The target geometry.
options{Object} Optional properties for configuring the distance calculation.

Valid options

details{Boolean} Return details from the distance calculation.  Default is false.
edge{Boolean} Calculate the distance from this geometry to the nearest edge of the target geometry.  Default is true.  If true, calling distanceTo from a geometry that is wholly contained within the target will result in a non-zero distance.  If false, whenever geometries intersect, calling distanceTo will return 0.  If false, details cannot be returned.

Returns

{Number | Object} The distance between this geometry and the target.  If details is true, the return will be an object with distance, x0, y0, x1, and x2 properties.  The x0 and y0 properties represent the coordinates of the closest point on this geometry.  The x1 and y1 properties represent the coordinates of the closest point on the target geometry.

+ +
+ + + + + + + + + + +
removeComponent: function(point)
Only allows removal of a point if there are three or more points in the linestring.
intersects: function(geometry)
Test for instersection between two geometries.
getSortedSegments: function()
{Array} An array of segment objects.
splitWithSegment: function(seg,
options)
Split this geometry with the given segment.
split: function(target,
options)
Use this geometry (the source) to attempt to split a target geometry.
splitWith: function(geometry,
options)
Split this geometry (the target) with the given geometry (the source).
getVertices: function(nodes)
Return a list of all points in this geometry.
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
A Curve is a MultiPoint, whose points are assumed to be connected.
Point geometry class.
A Geometry is a description of a geographic object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Geometry/LinearRing-js.html b/openlayers/doc/devdocs/files/OpenLayers/Geometry/LinearRing-js.html new file mode 100644 index 0000000..77d0f34 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Geometry/LinearRing-js.html @@ -0,0 +1,73 @@ + + +OpenLayers.Geometry.LinearRing - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.LinearRing

A Linear Ring is a special LineString which is closed.  It closes itself automatically on every addPoint/removePoint by adding a copy of the first point as the last point.

Also, as it is the first in the line family to close itself, a getArea() function is defined to calculate the enclosed area of the linearRing

Inherits

Summary
OpenLayers.Geometry.LinearRingA Linear Ring is a special LineString which is closed.
Properties
componentTypes{Array(String)} An array of class names representing the types of components that the collection can include.
Constructor
OpenLayers.Geometry.LinearRingLinear rings are constructed with an array of points.
Functions
addComponentAdds a point to geometry components.
removeComponentRemoves a point from geometry components.
moveMoves a geometry by the given displacement along positive x and y axes.
rotateRotate a geometry around some origin
resizeResize a geometry relative to some origin.
transformReproject the components geometry from source to dest.
getCentroid{OpenLayers.Geometry.Point} The centroid of the collection
getArea
getGeodesicAreaCalculate the approximate area of the polygon were it projected onto the earth.
containsPointTest if a point is inside a linear ring.
intersectsDetermine if the input geometry intersects this one.
getVerticesReturn a list of all points in this geometry.
+ +

Properties

+ +

componentTypes

{Array(String)} An array of class names representing the types of components that the collection can include.  A null value means the component types are not restricted.

+ +

Constructor

+ +

OpenLayers.Geometry.LinearRing

Linear rings are constructed with an array of points.  This array can represent a closed or open ring.  If the ring is open (the last point does not equal the first point), the constructor will close the ring.  If the ring is already closed (the last point does equal the first point), it will be left closed.

Parameters

points{Array(OpenLayers.Geometry.Point)} points
+ +

Functions

+ +

addComponent

addComponent: function(point,
index)

Adds a point to geometry components.  If the point is to be added to the end of the components array and it is the same as the last point already in that array, the duplicate point is not added.  This has the effect of closing the ring if it is not already closed, and doing the right thing if it is already closed.  This behavior can be overridden by calling the method with a non-null index as the second argument.

Parameter

point{OpenLayers.Geometry.Point}
index{Integer} Index into the array to insert the component

Returns

{Boolean} Was the Point successfully added?

+ +

removeComponent

removeComponent: function(point)

Removes a point from geometry components.

Parameters

point{OpenLayers.Geometry.Point}
+ +

move

move: function(x,
y)

Moves a geometry by the given displacement along positive x and y axes.  This modifies the position of the geometry and clears the cached bounds.

Parameters

x{Float} Distance to move geometry in positive x direction.
y{Float} Distance to move geometry in positive y direction.
+ +

rotate

rotate: function(angle,
origin)

Rotate a geometry around some origin

Parameters

angle{Float} Rotation angle in degrees (measured counterclockwise from the positive x-axis)
origin{OpenLayers.Geometry.Point} Center point for the rotation
+ +

resize

resize: function(scale,
origin,
ratio)

Resize a geometry relative to some origin.  Use this method to apply a uniform scaling to a geometry.

Parameters

scale{Float} Factor by which to scale the geometry.  A scale of 2 doubles the size of the geometry in each dimension (lines, for example, will be twice as long, and polygons will have four times the area).
origin{OpenLayers.Geometry.Point} Point of origin for resizing
ratio{Float} Optional x:y ratio for resizing.  Default ratio is 1.

Returns

{OpenLayers.Geometry}The current geometry.
+ +

transform

transform: function(source,
dest)

Reproject the components geometry from source to dest.

Parameters

source{OpenLayers.Projection}
dest{OpenLayers.Projection}

Returns

{OpenLayers.Geometry}

+ +

getCentroid

getCentroid: function()

Returns

{OpenLayers.Geometry.Point} The centroid of the collection

+ +

getArea

getArea: function()
NoteThe area is positive if the ring is oriented CW, otherwise it will be negative.

Returns

{Float} The signed area for a ring.

+ +

getGeodesicArea

getGeodesicArea: function(projection)

Calculate the approximate area of the polygon were it projected onto the earth.  Note that this area will be positive if ring is oriented clockwise, otherwise it will be negative.

Parameters

projection{OpenLayers.Projection} The spatial reference system for the geometry coordinates.  If not provided, Geographic/WGS84 is assumed.

Reference

Robert.  G. Chamberlain and William H.  Duquette, “Some Algorithms for Polygons on a Sphere”, JPL Publication 07-03, Jet Propulsion Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409

Returns

{float} The approximate signed geodesic area of the polygon in square meters.

+ +

containsPoint

containsPoint: function(point)

Test if a point is inside a linear ring.  For the case where a point is coincident with a linear ring edge, returns 1.  Otherwise, returns boolean.

Parameters

point{OpenLayers.Geometry.Point}

Returns

{Boolean | Number} The point is inside the linear ring.  Returns 1 if the point is coincident with an edge.  Returns boolean otherwise.

+ +

intersects

intersects: function(geometry)

Determine if the input geometry intersects this one.

Parameters

geometry{OpenLayers.Geometry} Any type of geometry.

Returns

{Boolean} The input geometry intersects this one.

+ +

getVertices

getVertices: function(nodes)

Return a list of all points in this geometry.

Parameters

nodes{Boolean} For lines, only return vertices that are endpoints.  If false, for lines, only vertices that are not endpoints will be returned.  If not provided, all vertices will be returned.

Returns

{Array} A list of all vertices in the geometry.

+ +
+ + + + + + + + + + +
addComponent: function(point,
index)
Adds a point to geometry components.
removeComponent: function(point)
Removes a point from geometry components.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
rotate: function(angle,
origin)
Rotate a geometry around some origin
resize: function(scale,
origin,
ratio)
Resize a geometry relative to some origin.
transform: function(source,
dest)
Reproject the components geometry from source to dest.
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
Point geometry class.
getArea: function()
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
containsPoint: function(point)
Test if a point is inside a linear ring.
intersects: function(geometry)
Determine if the input geometry intersects this one.
getVertices: function(nodes)
Return a list of all points in this geometry.
A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
Class for coordinate transforms between coordinate systems.
A Geometry is a description of a geographic object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Geometry/MultiLineString-js.html b/openlayers/doc/devdocs/files/OpenLayers/Geometry/MultiLineString-js.html new file mode 100644 index 0000000..943e8eb --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Geometry/MultiLineString-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Geometry.MultiLineString - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.MultiLineString

A MultiLineString is a geometry with multiple OpenLayers.Geometry.LineString components.

Inherits from

Summary
OpenLayers.Geometry.MultiLineStringA MultiLineString is a geometry with multiple OpenLayers.Geometry.LineString components.
Properties
componentTypes{Array(String)} An array of class names representing the types of components that the collection can include.
Constructor
OpenLayers.Geometry.MultiLineStringConstructor for a MultiLineString Geometry.
Functions
splitUse this geometry (the source) to attempt to split a target geometry.
splitWithSplit this geometry (the target) with the given geometry (the source).
+ +

Properties

+ +

componentTypes

{Array(String)} An array of class names representing the types of components that the collection can include.  A null value means the component types are not restricted.

+ +

Constructor

+ +

OpenLayers.Geometry.MultiLineString

Constructor for a MultiLineString Geometry.

Parameters

components{Array(OpenLayers.Geometry.LineString)}
+ +

Functions

+ +

split

split: function(geometry,
options)

Use this geometry (the source) to attempt to split a target geometry.

Parameters

target{OpenLayers.Geometry} The target geometry.
options{Object} Properties of this object will be used to determine how the split is conducted.

Valid options

mutual{Boolean} Split the source geometry in addition to the target geometry.  Default is false.
edge{Boolean} Allow splitting when only edges intersect.  Default is true.  If false, a vertex on the source must be within the tolerance distance of the intersection to be considered a split.
tolerance{Number} If a non-null value is provided, intersections within the tolerance distance of an existing vertex on the source will be assumed to occur at the vertex.

Returns

{Array} A list of geometries (of this same type as the target) that result from splitting the target with the source geometry.  The source and target geometry will remain unmodified.  If no split results, null will be returned.  If mutual is true and a split results, return will be an array of two arrays - the first will be all geometries that result from splitting the source geometry and the second will be all geometries that result from splitting the target geometry.

+ +

splitWith

splitWith: function(geometry,
options)

Split this geometry (the target) with the given geometry (the source).

Parameters

geometry{OpenLayers.Geometry} A geometry used to split this geometry (the source).
options{Object} Properties of this object will be used to determine how the split is conducted.

Valid options

mutual{Boolean} Split the source geometry in addition to the target geometry.  Default is false.
edge{Boolean} Allow splitting when only edges intersect.  Default is true.  If false, a vertex on the source must be within the tolerance distance of the intersection to be considered a split.
tolerance{Number} If a non-null value is provided, intersections within the tolerance distance of an existing vertex on the source will be assumed to occur at the vertex.

Returns

{Array} A list of geometries (of this same type as the target) that result from splitting the target with the source geometry.  The source and target geometry will remain unmodified.  If no split results, null will be returned.  If mutual is true and a split results, return will be an array of two arrays - the first will be all geometries that result from splitting the source geometry and the second will be all geometries that result from splitting the target geometry.

+ +
+ + + + + + + + + + +
A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
split: function(geometry,
options)
Use this geometry (the source) to attempt to split a target geometry.
splitWith: function(geometry,
options)
Split this geometry (the target) with the given geometry (the source).
A Collection is exactly what it sounds like: A collection of different Geometries.
A Geometry is a description of a geographic object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Geometry/MultiPoint-js.html b/openlayers/doc/devdocs/files/OpenLayers/Geometry/MultiPoint-js.html new file mode 100644 index 0000000..4ae7fa5 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Geometry/MultiPoint-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Geometry.MultiPoint - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.MultiPoint

MultiPoint is a collection of Points.  Create a new instance with the OpenLayers.Geometry.MultiPoint constructor.

Inherits from

Summary
OpenLayers.Geometry.MultiPointMultiPoint is a collection of Points.
Properties
componentTypes{Array(String)} An array of class names representing the types of components that the collection can include.
Constructor
OpenLayers.Geometry.MultiPointCreate a new MultiPoint Geometry
Functions
addPointWrapper for OpenLayers.Geometry.Collection.addComponent
removePointWrapper for OpenLayers.Geometry.Collection.removeComponent
+ +

Properties

+ +

componentTypes

{Array(String)} An array of class names representing the types of components that the collection can include.  A null value means the component types are not restricted.

+ +

Constructor

+ +

OpenLayers.Geometry.MultiPoint

Create a new MultiPoint Geometry

Parameters

components{Array(OpenLayers.Geometry.Point)}

Returns

{OpenLayers.Geometry.MultiPoint}

+ +

Functions

+ +

addPoint

addPoint: function(point,
index)

Wrapper for OpenLayers.Geometry.Collection.addComponent

Parameters

point{OpenLayers.Geometry.Point} Point to be added
index{Integer} Optional index
+ +

removePoint

removePoint: function(point)

Wrapper for OpenLayers.Geometry.Collection.removeComponent

Parameters

point{OpenLayers.Geometry.Point} Point to be removed
+ +
+ + + + + + + + + + +
addPoint: function(point,
index)
Wrapper for OpenLayers.Geometry.Collection.addComponent
addComponent: function(component,
index)
Add a new component (geometry) to the collection.
removePoint: function(point)
Wrapper for OpenLayers.Geometry.Collection.removeComponent
removeComponent: function(component)
Remove a component from this geometry.
Create a new MultiPoint Geometry
A Collection is exactly what it sounds like: A collection of different Geometries.
A Geometry is a description of a geographic object.
Point geometry class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Geometry/MultiPolygon-js.html b/openlayers/doc/devdocs/files/OpenLayers/Geometry/MultiPolygon-js.html new file mode 100644 index 0000000..992189f --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Geometry/MultiPolygon-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Geometry.MultiPolygon - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.MultiPolygon

MultiPolygon is a geometry with multiple OpenLayers.Geometry.Polygon components.  Create a new instance with the OpenLayers.Geometry.MultiPolygon constructor.

Inherits from

Summary
OpenLayers.Geometry.MultiPolygonMultiPolygon is a geometry with multiple OpenLayers.Geometry.Polygon components.
Properties
componentTypes{Array(String)} An array of class names representing the types of components that the collection can include.
Constructor
OpenLayers.Geometry.MultiPolygonCreate a new MultiPolygon geometry
+ +

Properties

+ +

componentTypes

{Array(String)} An array of class names representing the types of components that the collection can include.  A null value means the component types are not restricted.

+ +

Constructor

+ +

OpenLayers.Geometry.MultiPolygon

Create a new MultiPolygon geometry

Parameters

components{Array(OpenLayers.Geometry.Polygon)} An array of polygons used to generate the MultiPolygon
+ +
+ + + + + + + + + + +
Polygon is a collection of Geometry.LinearRings.
Create a new MultiPolygon geometry
A Collection is exactly what it sounds like: A collection of different Geometries.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Geometry/Point-js.html b/openlayers/doc/devdocs/files/OpenLayers/Geometry/Point-js.html new file mode 100644 index 0000000..1601eca --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Geometry/Point-js.html @@ -0,0 +1,75 @@ + + +OpenLayers.Geometry.Point - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.Point

Point geometry class.

Inherits from

Summary
OpenLayers.Geometry.PointPoint geometry class.
Properties
x{float}
y{float}
Constructor
OpenLayers.Geometry.PointConstruct a point geometry.
Functions
clone{OpenLayers.Geometry.Point} An exact clone of this OpenLayers.Geometry.Point
calculateBoundsCreate a new Bounds based on the lon/lat
distanceToCalculate the closest distance between two geometries (on the x-y plane).
equalsDetermine whether another geometry is equivalent to this one.
toShortString{String} Shortened String representation of Point object.
moveMoves a geometry by the given displacement along positive x and y axes.
rotateRotate a point around another.
getCentroid{OpenLayers.Geometry.Point} The centroid of the collection
resizeResize a point relative to some origin.
intersectsDetermine if the input geometry intersects this one.
transformTranslate the x,y properties of the point from source to dest.
getVerticesReturn a list of all points in this geometry.
+ +

Properties

+ +

x

{float}

+ +

y

{float}

+ +

Constructor

+ +

OpenLayers.Geometry.Point

Construct a point geometry.

Parameters

x{float}
y{float}
+ +

Functions

+ +

clone

clone: function(obj)

Returns

{OpenLayers.Geometry.Point} An exact clone of this OpenLayers.Geometry.Point

+ +

calculateBounds

calculateBounds: function ()

Create a new Bounds based on the lon/lat

+ +

distanceTo

distanceTo: function(geometry,
options)

Calculate the closest distance between two geometries (on the x-y plane).

Parameters

geometry{OpenLayers.Geometry} The target geometry.
options{Object} Optional properties for configuring the distance calculation.

Valid options

details{Boolean} Return details from the distance calculation.  Default is false.
edge{Boolean} Calculate the distance from this geometry to the nearest edge of the target geometry.  Default is true.  If true, calling distanceTo from a geometry that is wholly contained within the target will result in a non-zero distance.  If false, whenever geometries intersect, calling distanceTo will return 0.  If false, details cannot be returned.

Returns

{Number | Object} The distance between this geometry and the target.  If details is true, the return will be an object with distance, x0, y0, x1, and x2 properties.  The x0 and y0 properties represent the coordinates of the closest point on this geometry.  The x1 and y1 properties represent the coordinates of the closest point on the target geometry.

+ +

equals

equals: function(geom)

Determine whether another geometry is equivalent to this one.  Geometries are considered equivalent if all components have the same coordinates.

Parameters

geom{OpenLayers.Geometry.Point} The geometry to test.

Returns

{Boolean} The supplied geometry is equivalent to this geometry.

+ +

toShortString

toShortString: function()

Returns

{String} Shortened String representation of Point object.  (ex.  <i>”5, 42”</i>)

+ +

move

move: function(x,
y)

Moves a geometry by the given displacement along positive x and y axes.  This modifies the position of the geometry and clears the cached bounds.

Parameters

x{Float} Distance to move geometry in positive x direction.
y{Float} Distance to move geometry in positive y direction.
+ +

rotate

rotate: function(angle,
origin)

Rotate a point around another.

Parameters

angle{Float} Rotation angle in degrees (measured counterclockwise from the positive x-axis)
origin{OpenLayers.Geometry.Point} Center point for the rotation
+ +

getCentroid

getCentroid: function()

Returns

{OpenLayers.Geometry.Point} The centroid of the collection

+ +

resize

resize: function(scale,
origin,
ratio)

Resize a point relative to some origin.  For points, this has the effect of scaling a vector (from the origin to the point).  This method is more useful on geometry collection subclasses.

Parameters

scale{Float} Ratio of the new distance from the origin to the old distance from the origin.  A scale of 2 doubles the distance between the point and origin.
origin{OpenLayers.Geometry.Point} Point of origin for resizing
ratio{Float} Optional x:y ratio for resizing.  Default ratio is 1.

Returns

{OpenLayers.Geometry}The current geometry.
+ +

intersects

intersects: function(geometry)

Determine if the input geometry intersects this one.

Parameters

geometry{OpenLayers.Geometry} Any type of geometry.

Returns

{Boolean} The input geometry intersects this one.

+ +

transform

transform: function(source,
dest)

Translate the x,y properties of the point from source to dest.

Parameters

source{OpenLayers.Projection}
dest{OpenLayers.Projection}

Returns

{OpenLayers.Geometry}

+ +

getVertices

getVertices: function(nodes)

Return a list of all points in this geometry.

Parameters

nodes{Boolean} For lines, only return vertices that are endpoints.  If false, for lines, only vertices that are not endpoints will be returned.  If not provided, all vertices will be returned.

Returns

{Array} A list of all vertices in the geometry.

+ +
+ + + + + + + + + + +
clone: function(obj)
{OpenLayers.Geometry.Point} An exact clone of this OpenLayers.Geometry.Point
Construct a point geometry.
calculateBounds: function ()
Create a new Bounds based on the lon/lat
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
equals: function(geom)
Determine whether another geometry is equivalent to this one.
toShortString: function()
{String} Shortened String representation of Point object.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
rotate: function(angle,
origin)
Rotate a point around another.
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
resize: function(scale,
origin,
ratio)
Resize a point relative to some origin.
intersects: function(geometry)
Determine if the input geometry intersects this one.
transform: function(source,
dest)
Translate the x,y properties of the point from source to dest.
getVertices: function(nodes)
Return a list of all points in this geometry.
A Geometry is a description of a geographic object.
Class for coordinate transforms between coordinate systems.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Geometry/Polygon-js.html b/openlayers/doc/devdocs/files/OpenLayers/Geometry/Polygon-js.html new file mode 100644 index 0000000..06c359a --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Geometry/Polygon-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Geometry.Polygon - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.Polygon

Polygon is a collection of Geometry.LinearRings.

Inherits from

Summary
OpenLayers.Geometry.PolygonPolygon is a collection of Geometry.LinearRings.
Properties
componentTypes{Array(String)} An array of class names representing the types of components that the collection can include.
Constructor
OpenLayers.Geometry.PolygonConstructor for a Polygon geometry.
Functions
getAreaCalculated by subtracting the areas of the internal holes from the area of the outer hole.
getGeodesicAreaCalculate the approximate area of the polygon were it projected onto the earth.
containsPointTest if a point is inside a polygon.
intersectsDetermine if the input geometry intersects this one.
distanceToCalculate the closest distance between two geometries (on the x-y plane).
createRegularPolygonCreate a regular polygon around a radius.
+ +

Properties

+ +

componentTypes

{Array(String)} An array of class names representing the types of components that the collection can include.  A null value means the component types are not restricted.

+ +

Constructor

+ +

OpenLayers.Geometry.Polygon

Constructor for a Polygon geometry.  The first ring (this.component[0])is the outer bounds of the polygon and all subsequent rings (this.component[1-n]) are internal holes.

Parameters

components{Array(OpenLayers.Geometry.LinearRing)}
+ +

Functions

+ +

getArea

getArea: function()

Calculated by subtracting the areas of the internal holes from the area of the outer hole.

Returns

{float} The area of the geometry

+ +

getGeodesicArea

getGeodesicArea: function(projection)

Calculate the approximate area of the polygon were it projected onto the earth.

Parameters

projection{OpenLayers.Projection} The spatial reference system for the geometry coordinates.  If not provided, Geographic/WGS84 is assumed.

Reference

Robert.  G. Chamberlain and William H.  Duquette, “Some Algorithms for Polygons on a Sphere”, JPL Publication 07-03, Jet Propulsion Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409

Returns

{float} The approximate geodesic area of the polygon in square meters.

+ +

containsPoint

containsPoint: function(point)

Test if a point is inside a polygon.  Points on a polygon edge are considered inside.

Parameters

point{OpenLayers.Geometry.Point}

Returns

{Boolean | Number} The point is inside the polygon.  Returns 1 if the point is on an edge.  Returns boolean otherwise.

+ +

intersects

intersects: function(geometry)

Determine if the input geometry intersects this one.

Parameters

geometry{OpenLayers.Geometry} Any type of geometry.

Returns

{Boolean} The input geometry intersects this one.

+ +

distanceTo

distanceTo: function(geometry,
options)

Calculate the closest distance between two geometries (on the x-y plane).

Parameters

geometry{OpenLayers.Geometry} The target geometry.
options{Object} Optional properties for configuring the distance calculation.

Valid options

details{Boolean} Return details from the distance calculation.  Default is false.
edge{Boolean} Calculate the distance from this geometry to the nearest edge of the target geometry.  Default is true.  If true, calling distanceTo from a geometry that is wholly contained within the target will result in a non-zero distance.  If false, whenever geometries intersect, calling distanceTo will return 0.  If false, details cannot be returned.

Returns

{Number | Object} The distance between this geometry and the target.  If details is true, the return will be an object with distance, x0, y0, x1, and y1 properties.  The x0 and y0 properties represent the coordinates of the closest point on this geometry.  The x1 and y1 properties represent the coordinates of the closest point on the target geometry.

+ +

createRegularPolygon

OpenLayers.Geometry.Polygon.createRegularPolygon = function(origin,
radius,
sides,
rotation)

Create a regular polygon around a radius.  Useful for creating circles and the like.

Parameters

origin{OpenLayers.Geometry.Point} center of polygon.
radius{Float} distance to vertex, in map units.
sides{Integer} Number of sides.  20 approximates a circle.
rotation{Float} original angle of rotation, in degrees.
+ +
+ + + + + + + + + + +
getArea: function()
Calculated by subtracting the areas of the internal holes from the area of the outer hole.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
containsPoint: function(point)
Test if a point is inside a polygon.
intersects: function(geometry)
Determine if the input geometry intersects this one.
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
OpenLayers.Geometry.Polygon.createRegularPolygon = function(origin,
radius,
sides,
rotation)
Create a regular polygon around a radius.
A Collection is exactly what it sounds like: A collection of different Geometries.
A Geometry is a description of a geographic object.
A Linear Ring is a special LineString which is closed.
Class for coordinate transforms between coordinate systems.
Point geometry class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Geometry/Rectangle-js.html b/openlayers/doc/devdocs/files/OpenLayers/Geometry/Rectangle-js.html new file mode 100644 index 0000000..e911a6c --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Geometry/Rectangle-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Geometry.Rectangle - OpenLayers + + + + + + + + + +

OpenLayers.Geometry.Rectangle

This class is not supported, and probably isn’t what you’re looking for.  Instead, most users probably want something like:

var poly = new OpenLayers.Bounds(0,0,10,10).toGeometry();

This will create a rectangular Polygon geometry.

Inherits

Summary
OpenLayers.Geometry.RectangleThis class is not supported, and probably isn’t what you’re looking for.
Properties
x{Float}
y{Float}
width{Float}
height{Float}
Constructor
OpenLayers.Geometry.Rectangle
Functions
calculateBoundsRecalculate the bounds for the geometry.
getLength{Float} The length of the geometry
getArea{Float} The area of the geometry
+ +

Properties

+ +

x

{Float}

+ +

y

{Float}

+ +

width

{Float}

+ +

height

{Float}

+ +

Constructor

+ +

OpenLayers.Geometry.Rectangle

Parameters

points{Array(OpenLayers.Geometry.Point}
+ +

Functions

+ +

calculateBounds

calculateBounds: function()

Recalculate the bounds for the geometry.

+ +

getLength

getLength: function()

Returns

{Float} The length of the geometry

+ +

getArea

getArea: function()

Returns

{Float} The area of the geometry

+ +
+ + + + + + + + + + +
calculateBounds: function()
Recalculate the bounds for the geometry.
getLength: function()
{Float} The length of the geometry
getArea: function()
{Float} The area of the geometry
A Geometry is a description of a geographic object.
Point geometry class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Handler-js.html b/openlayers/doc/devdocs/files/OpenLayers/Handler-js.html new file mode 100644 index 0000000..36e4995 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Handler-js.html @@ -0,0 +1,92 @@ + + +OpenLayers.Handler - OpenLayers + + + + + + + + + +

OpenLayers.Handler

Base class to construct a higher-level handler for event sequences.  All handlers have activate and deactivate methods.  In addition, they have methods named like browser events.  When a handler is activated, any additional methods named like a browser event is registered as a listener for the corresponding event.  When a handler is deactivated, those same methods are unregistered as event listeners.

Handlers also typically have a callbacks object with keys named like the abstracted events or event sequences that they are in charge of handling.  The controls that wrap handlers define the methods that correspond to these abstract events - so instead of listening for individual browser events, they only listen for the abstract events defined by the handler.

Handlers are created by controls, which ultimately have the responsibility of making changes to the the state of the application.  Handlers themselves may make temporary changes, but in general are expected to return the application in the same state that they found it.

Summary
OpenLayers.HandlerBase class to construct a higher-level handler for event sequences.
Properties
id{String}
control{OpenLayers.Control}.
map{OpenLayers.Map}
keyMask{Integer} Use bitwise operators and one or more of the OpenLayers.Handler constants to construct a keyMask.
active{Boolean}
evt{Event} This property references the last event handled by the handler.
Constructor
OpenLayers.HandlerConstruct a handler.
Functions
setMap
checkModifiersCheck the keyMask on the handler.
activateTurn on the handler.
deactivateTurn off the handler.
callbackTrigger the control’s named callback with the given arguments
registerregister an event on the map
unregisterunregister an event from the map
setEventWith each registered browser event, the handler sets its own evt property.
destroyDeconstruct the handler.
Constants
OpenLayers.Handler.MOD_NONEIf set as the keyMask, checkModifiers returns false if any key is down.
OpenLayers.Handler.MOD_SHIFTIf set as the keyMask, checkModifiers returns false if Shift is down.
OpenLayers.Handler.MOD_CTRLIf set as the keyMask, checkModifiers returns false if Ctrl is down.
OpenLayers.Handler.MOD_ALTIf set as the keyMask, checkModifiers returns false if Alt is down.
+ +

Properties

+ +

id

{String}

+ +

control

{OpenLayers.Control}.  The control that initialized this handler.  The control is assumed to have a valid map property - that map is used in the handler’s own setMap method.

+ + + +

keyMask

{Integer} Use bitwise operators and one or more of the OpenLayers.Handler constants to construct a keyMask.  The keyMask is used by checkModifiers.  If the keyMask matches the combination of keys down on an event, checkModifiers returns true.

Example

// handler only responds if the Shift key is down
+handler.keyMask = OpenLayers.Handler.MOD_SHIFT;
+
+// handler only responds if Ctrl-Shift is down
+handler.keyMask = OpenLayers.Handler.MOD_SHIFT |
+                  OpenLayers.Handler.MOD_CTRL;
+ +

active

{Boolean}

+ +

evt

{Event} This property references the last event handled by the handler.  Note that this property is not part of the stable API.  Use of the evt property should be restricted to controls in the library or other applications that are willing to update with changes to the OpenLayers code.

+ +

Constructor

+ +

OpenLayers.Handler

Construct a handler.

Parameters

control{OpenLayers.Control} The control that initialized this handler.  The control is assumed to have a valid map property; that map is used in the handler’s own setMap method.
callbacks{Object} An object whose properties correspond to abstracted events or sequences of browser events.  The values for these properties are functions defined by the control that get called by the handler.
options{Object} An optional object whose properties will be set on the handler.
+ +

Functions

+ +

setMap

setMap: function (map)
+ +

checkModifiers

checkModifiers: function (evt)

Check the keyMask on the handler.  If no keyMask is set, this always returns true.  If a keyMask is set and it matches the combination of keys down on an event, this returns true.

Returns

{Boolean} The keyMask matches the keys down on an event.

+ +

activate

activate: function()

Turn on the handler.  Returns false if the handler was already active.

Returns

{Boolean} The handler was activated.

+ +

deactivate

deactivate: function()

Turn off the handler.  Returns false if the handler was already inactive.

Returns

{Boolean} The handler was deactivated.

+ +

callback

callback: function (name,
args)

Trigger the control’s named callback with the given arguments

Parameters

name{String} The key for the callback that is one of the properties of the handler’s callbacks object.
args{Array(*)} An array of arguments (any type) with which to call the callback (defined by the control).
+ +

register

register: function (name,
method)

register an event on the map

+ +

unregister

unregister: function (name,
method)

unregister an event from the map

+ +

setEvent

setEvent: function(evt)

With each registered browser event, the handler sets its own evt property.  This property can be accessed by controls if needed to get more information about the event that the handler is processing.

This allows modifier keys on the event to be checked (alt, shift, and ctrl cannot be checked with the keyboard handler).  For a control to determine which modifier keys are associated with the event that a handler is currently processing, it should access (code)handler.evt.altKey || handler.evt.shiftKey || handler.evt.ctrlKey(end).

Parameters

evt{Event} The browser event.
+ +

destroy

destroy: function ()

Deconstruct the handler.

+ +

Constants

+ +

OpenLayers.Handler.MOD_NONE

If set as the keyMask, checkModifiers returns false if any key is down.

+ +

OpenLayers.Handler.MOD_SHIFT

If set as the keyMask, checkModifiers returns false if Shift is down.

+ +

OpenLayers.Handler.MOD_CTRL

If set as the keyMask, checkModifiers returns false if Ctrl is down.

+ +

OpenLayers.Handler.MOD_ALT

If set as the keyMask, checkModifiers returns false if Alt is down.

+ +
+ + + + + + + + + + +
Controls affect the display or behavior of the map.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
setMap: function (map)
checkModifiers: function (evt)
Check the keyMask on the handler.
activate: function()
Turn on the handler.
deactivate: function()
Turn off the handler.
callback: function (name,
args)
Trigger the control’s named callback with the given arguments
register: function (name,
method)
register an event on the map
unregister: function (name,
method)
unregister an event from the map
setEvent: function(evt)
With each registered browser event, the handler sets its own evt property.
destroy: function ()
Deconstruct the handler.
{Integer} Use bitwise operators and one or more of the OpenLayers.Handler constants to construct a keyMask.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Handler/Box-js.html b/openlayers/doc/devdocs/files/OpenLayers/Handler/Box-js.html new file mode 100644 index 0000000..b8eb0cf --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Handler/Box-js.html @@ -0,0 +1,69 @@ + + +OpenLayers.Handler.Box - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Box

Handler for dragging a rectangle across the map.  Box is displayed on mouse down, moves on mouse move, and is finished on mouse up.

Inherits from

Summary
OpenLayers.Handler.BoxHandler for dragging a rectangle across the map.
Properties
dragHandler{OpenLayers.Handler.Drag}
boxDivClassName{String} The CSS class to use for drawing the box.
boxCharacteristics{Object} Caches some box characteristics from css.
Constructor
OpenLayers.Handler.Box
Functions
setMap
startBox
moveBox
endBox
removeBoxRemove the zoombox from the screen and nullify our reference to it.
activate
deactivate
getCharacteristicsDetermines offset and box model for a box.
+ +

Properties

+ + + +

boxDivClassName

{String} The CSS class to use for drawing the box.  Default is olHandlerBoxZoomBox

+ +

boxCharacteristics

{Object} Caches some box characteristics from css.  This is used by the getBoxCharacteristics method.

+ +

Constructor

+ +

OpenLayers.Handler.Box

Parameters

control{OpenLayers.Control}
callbacks{Object} An object containing a single function to be called when the drag operation is finished.  The callback should expect to recieve a single argument, the point geometry.
options{Object}
+ +

Functions

+ +

setMap

setMap: function (map)
+ +

startBox

startBox: function (xy)

Parameters

evt{Event}
+ +

moveBox

moveBox: function (xy)
+ +

endBox

endBox: function(end)
+ +

removeBox

removeBox: function()

Remove the zoombox from the screen and nullify our reference to it.

+ +

activate

activate: function ()
+ +

deactivate

deactivate: function ()
+ +

getCharacteristics

Determines offset and box model for a box.

Returns

{Object} a hash with the following properties:

  • xOffset - Corner offset in x-direction
  • yOffset - Corner offset in y-direction
  • newBoxModel - true for all browsers except IE in quirks mode
+ +
+ + + + + + + + + + +
The drag handler is used to deal with sequences of browser events related to dragging.
setMap: function (map)
startBox: function (xy)
moveBox: function (xy)
endBox: function(end)
removeBox: function()
Remove the zoombox from the screen and nullify our reference to it.
activate: function ()
deactivate: function ()
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Handler/Click-js.html b/openlayers/doc/devdocs/files/OpenLayers/Handler/Click-js.html new file mode 100644 index 0000000..7df5423 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Handler/Click-js.html @@ -0,0 +1,85 @@ + + +OpenLayers.Handler.Click - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Click

A handler for mouse clicks.  The intention of this handler is to give controls more flexibility with handling clicks.  Browsers trigger click events twice for a double-click.  In addition, the mousedown, mousemove, mouseup sequence fires a click event.  With this handler, controls can decide whether to ignore clicks associated with a double click.  By setting a pixelTolerance, controls can also ignore clicks that include a drag.  Create a new instance with the OpenLayers.Handler.Click constructor.

Inherits from

Summary
OpenLayers.Handler.ClickA handler for mouse clicks.
Properties
delay{Number} Number of milliseconds between clicks before the event is considered a double-click.
single{Boolean} Handle single clicks.
double{Boolean} Handle double-clicks.
pixelTolerance{Number} Maximum number of pixels between mouseup and mousedown for an event to be considered a click.
stopSingle{Boolean} Stop other listeners from being notified of clicks.
stopDouble{Boolean} Stop other listeners from being notified of double-clicks.
timerId{Number} The id of the timeout waiting to clear the delayedCall.
down{OpenLayers.Pixel} The pixel location of the last mousedown.
rightclickTimerId{Number} The id of the right mouse timeout waiting to clear the <delayedEvent>.
Constructor
OpenLayers.Handler.ClickCreate a new click handler.
Functions
mousedownHandle mousedown.
mouseupHandle mouseup.
rightclickHandle rightclick.
delayedRightCallSets rightclickTimerId to null.
dblclickHandle dblclick.
clickHandle click.
passesToleranceDetermine whether the event is within the optional pixel tolerance.
clearTimerClear the timer and set timerId to null.
delayedCallSets timerId to null.
deactivateDeactivate the handler.
+ +

Properties

+ +

delay

{Number} Number of milliseconds between clicks before the event is considered a double-click.

+ +

single

{Boolean} Handle single clicks.  Default is true.  If false, clicks will not be reported.  If true, single-clicks will be reported.

+ +

double

{Boolean} Handle double-clicks.  Default is false.

+ +

pixelTolerance

{Number} Maximum number of pixels between mouseup and mousedown for an event to be considered a click.  Default is 0.  If set to an integer value, clicks with a drag greater than the value will be ignored.  This property can only be set when the handler is constructed.

+ +

stopSingle

{Boolean} Stop other listeners from being notified of clicks.  Default is false.  If true, any click listeners registered before this one will not be notified of any click event (associated with double or single clicks).

+ +

stopDouble

{Boolean} Stop other listeners from being notified of double-clicks.  Default is false.  If true, any click listeners registered before this one will not be notified of any double-click events.

The one caveat with stopDouble is that given a map with two click handlers, one with stopDouble true and the other with stopSingle true, the stopSingle handler should be activated last to get uniform cross-browser performance.  Since IE triggers one click with a dblclick and FF triggers two, if a stopSingle handler is activated first, all it gets in IE is a single click when the second handler stops propagation on the dblclick.

+ +

timerId

{Number} The id of the timeout waiting to clear the delayedCall.

+ +

down

{OpenLayers.Pixel} The pixel location of the last mousedown.

+ +

rightclickTimerId

{Number} The id of the right mouse timeout waiting to clear the <delayedEvent>.

+ +

Constructor

+ +

OpenLayers.Handler.Click

Create a new click handler.

Parameters

control{OpenLayers.Control} The control that is making use of this handler.  If a handler is being used without a control, the handler’s setMap method must be overridden to deal properly with the map.
callbacks{Object} An object with keys corresponding to callbacks that will be called by the handler.  The callbacks should expect to recieve a single argument, the click event.  Callbacks for ‘click’ and ‘dblclick’ are supported.
options{Object} Optional object whose properties will be set on the handler.
+ +

Functions

+ +

mousedown

Handle mousedown.  Only registered as a listener if pixelTolerance is a non-zero value at construction.

Returns

{Boolean} Continue propagating this event.

+ +

mouseup

mouseup: function (evt)

Handle mouseup.  Installed to support collection of right mouse events.

Returns

{Boolean} Continue propagating this event.

+ +

rightclick

rightclick: function(evt)

Handle rightclick.  For a dblrightclick, we get two clicks so we need to always register for dblrightclick to properly handle single clicks.

Returns

{Boolean} Continue propagating this event.

+ +

delayedRightCall

delayedRightCall: function(evt)

Sets rightclickTimerId to null.  And optionally triggers the rightclick callback if evt is set.

+ +

dblclick

dblclick: function(evt)

Handle dblclick.  For a dblclick, we get two clicks in some browsers (FF) and one in others (IE).  So we need to always register for dblclick to properly handle single clicks.

Returns

{Boolean} Continue propagating this event.

+ +

click

click: function(evt)

Handle click.

Returns

{Boolean} Continue propagating this event.

+ +

passesTolerance

passesTolerance: function(evt)

Determine whether the event is within the optional pixel tolerance.  Note that the pixel tolerance check only works if mousedown events get to the listeners registered here.  If they are stopped by other elements, the pixelTolerance will have no effect here (this method will always return true).

Returns

{Boolean} The click is within the pixel tolerance (if specified).

+ +

clearTimer

clearTimer: function()

Clear the timer and set timerId to null.

+ +

delayedCall

delayedCall: function(evt)

Sets timerId to null.  And optionally triggers the click callback if evt is set.

+ +

deactivate

deactivate: function()

Deactivate the handler.

Returns

{Boolean} The handler was successfully deactivated.

+ +
+ + + + + + + + + + +
delayedCall: function(evt)
Sets timerId to null.
This class represents a screen coordinate, in x and y coordinates
mouseup: function (evt)
Handle mouseup.
rightclick: function(evt)
Handle rightclick.
delayedRightCall: function(evt)
Sets rightclickTimerId to null.
{Number} The id of the right mouse timeout waiting to clear the delayedEvent.
dblclick: function(evt)
Handle dblclick.
click: function(evt)
Handle click.
passesTolerance: function(evt)
Determine whether the event is within the optional pixel tolerance.
clearTimer: function()
Clear the timer and set timerId to null.
{Number} The id of the timeout waiting to clear the delayedCall.
deactivate: function()
Deactivate the handler.
{Number} Maximum number of pixels between mouseup and mousedown for an event to be considered a click.
Create a new click handler.
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Handler/Drag-js.html b/openlayers/doc/devdocs/files/OpenLayers/Handler/Drag-js.html new file mode 100644 index 0000000..83701f5 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Handler/Drag-js.html @@ -0,0 +1,87 @@ + + +OpenLayers.Handler.Drag - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Drag

The drag handler is used to deal with sequences of browser events related to dragging.  The handler is used by controls that want to know when a drag sequence begins, when a drag is happening, and when it has finished.

Controls that use the drag handler typically construct it with callbacks for ‘down’, ‘move’, and ‘done’.  Callbacks for these keys are called when the drag begins, with each move, and when the drag is done.  In addition, controls can have callbacks keyed to ‘up’ and ‘out’ if they care to differentiate between the types of events that correspond with the end of a drag sequence.  If no drag actually occurs (no mouse move) the ‘down’ and ‘up’ callbacks will be called, but not the ‘done’ callback.

Create a new drag handler with the OpenLayers.Handler.Drag constructor.

Inherits from

Summary
OpenLayers.Handler.DragThe drag handler is used to deal with sequences of browser events related to dragging.
Properties
started{Boolean} When a mousedown event is received, we want to record it, but not set ‘dragging’ until the mouse moves after starting.
stopDown{Boolean} Stop propagation of mousedown events from getting to listeners on the same element.
dragging{Boolean}
last{OpenLayers.Pixel} The last pixel location of the drag.
start{OpenLayers.Pixel} The first pixel location of the drag.
oldOnselectstart{Function}
interval{Integer} In order to increase performance, an interval (in milliseconds) can be set to reduce the number of drag events called.
timeoutId{String} The id of the timeout used for the mousedown interval.
Constructor
OpenLayers.Handler.DragReturns OpenLayers.Handler.Drag
Functions
downThis method is called during the handling of the mouse down event.
moveThis method is called during the handling of the mouse move event.
upThis method is called during the handling of the mouse up event.
outThis method is called during the handling of the mouse out event.
mousedownHandle mousedown events
mousemoveHandle mousemove events
removeTimeoutPrivate.
mouseupHandle mouseup events
mouseoutHandle mouseout events
clickThe drag handler captures the click event.
activateActivate the handler.
deactivateDeactivate the handler.
+ +

Properties

+ +

started

{Boolean} When a mousedown event is received, we want to record it, but not set ‘dragging’ until the mouse moves after starting.

+ +

stopDown

{Boolean} Stop propagation of mousedown events from getting to listeners on the same element.  Default is true.

+ +

dragging

{Boolean}

+ +

last

{OpenLayers.Pixel} The last pixel location of the drag.

+ +

start

{OpenLayers.Pixel} The first pixel location of the drag.

+ +

oldOnselectstart

{Function}

+ +

interval

{Integer} In order to increase performance, an interval (in milliseconds) can be set to reduce the number of drag events called.  If set, a new drag event will not be set until the interval has passed.  Defaults to 0, meaning no interval.

+ +

timeoutId

{String} The id of the timeout used for the mousedown interval.  This is “private”, and should be left alone.

+ +

Constructor

+ +

OpenLayers.Handler.Drag

Returns OpenLayers.Handler.Drag

Parameters

control{OpenLayers.Control} The control that is making use of this handler.  If a handler is being used without a control, the handlers setMap method must be overridden to deal properly with the map.
callbacks{Object} An object containing a single function to be called when the drag operation is finished.  The callback should expect to recieve a single argument, the pixel location of the event.  Callbacks for ‘move’ and ‘done’ are supported.  You can also speficy callbacks for ‘down’, ‘up’, and ‘out’ to respond to those events.
options{Object}
+ +

Functions

+ +

down

down: function(evt)

This method is called during the handling of the mouse down event.  Subclasses can do their own processing here.

Parameters

evt{Event} The mouse down event
+ +

move

move: function(evt)

This method is called during the handling of the mouse move event.  Subclasses can do their own processing here.

Parameters

evt{Event} The mouse move event
+ +

up

up: function(evt)

This method is called during the handling of the mouse up event.  Subclasses can do their own processing here.

Parameters

evt{Event} The mouse up event
+ +

out

out: function(evt)

This method is called during the handling of the mouse out event.  Subclasses can do their own processing here.

Parameters

evt{Event} The mouse out event
+ +

mousedown

mousedown: function (evt)

Handle mousedown events

Parameters

evt{Event}

Returns

{Boolean} Let the event propagate.

+ +

mousemove

mousemove: function (evt)

Handle mousemove events

Parameters

evt{Event}

Returns

{Boolean} Let the event propagate.

+ +

removeTimeout

removeTimeout: function()

Private.  Called by mousemove() to remove the drag timeout.

+ +

mouseup

mouseup: function (evt)

Handle mouseup events

Parameters

evt{Event}

Returns

{Boolean} Let the event propagate.

+ +

mouseout

mouseout: function (evt)

Handle mouseout events

Parameters

evt{Event}

Returns

{Boolean} Let the event propagate.

+ +

click

click: function (evt)

The drag handler captures the click event.  If something else registers for clicks on the same element, its listener will not be called after a drag.

Parameters

evt{Event}

Returns

{Boolean} Let the event propagate.

+ +

activate

activate: function()

Activate the handler.

Returns

{Boolean} The handler was successfully activated.

+ +

deactivate

deactivate: function()

Deactivate the handler.

Returns

{Boolean} The handler was successfully deactivated.

+ +
+ + + + + + + + + + +
This class represents a screen coordinate, in x and y coordinates
down: function(evt)
This method is called during the handling of the mouse down event.
move: function(evt)
This method is called during the handling of the mouse move event.
up: function(evt)
This method is called during the handling of the mouse up event.
out: function(evt)
This method is called during the handling of the mouse out event.
mousedown: function (evt)
Handle mousedown events
mousemove: function (evt)
Handle mousemove events
removeTimeout: function()
Private.
mouseup: function (evt)
Handle mouseup events
mouseout: function (evt)
Handle mouseout events
click: function (evt)
The drag handler captures the click event.
activate: function()
Activate the handler.
deactivate: function()
Deactivate the handler.
Returns OpenLayers.Handler.Drag
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Handler/Feature-js.html b/openlayers/doc/devdocs/files/OpenLayers/Handler/Feature-js.html new file mode 100644 index 0000000..5fb5c31 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Handler/Feature-js.html @@ -0,0 +1,91 @@ + + +OpenLayers.Handler.Feature - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Feature

Handler to respond to mouse events related to a drawn feature.  Callbacks with the following keys will be notified of the following events associated with features: click, clickout, over, out, and dblclick.

This handler stops event propagation for mousedown and mouseup if those browser events target features that can be selected.

Summary
OpenLayers.Handler.FeatureHandler to respond to mouse events related to a drawn feature.
Properties
EVENTMAP{Object} A object mapping the browser events to objects with callback keys for in and out.
feature{OpenLayers.Feature.Vector} The last feature that was hovered.
lastFeature{OpenLayers.Feature.Vector} The last feature that was handled.
down{OpenLayers.Pixel} The location of the last mousedown.
up{OpenLayers.Pixel} The location of the last mouseup.
clickTolerance{Number} The number of pixels the mouse can move between mousedown and mouseup for the event to still be considered a click.
geometryTypesTo restrict dragging to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
stopClick{Boolean} If stopClick is set to true, handled clicks do not propagate to other click listeners.
stopDown{Boolean} If stopDown is set to true, handled mousedowns do not propagate to other mousedown listeners.
stopUp{Boolean} If stopUp is set to true, handled mouseups do not propagate to other mouseup listeners.
Constructor
OpenLayers.Handler.Feature
Functions
mousedownHandle mouse down.
mouseupHandle mouse up.
clickHandle click.
mousemoveHandle mouse moves.
dblclickHandle dblclick.
geometryTypeMatchesReturn true if the geometry type of the passed feature matches one of the geometry types in the geometryTypes array.
handle
triggerCallbackCall the callback keyed in the event map with the supplied arguments.
activateTurn on the handler.
deactivateTurn off the handler.
moveLayerToTopMoves the layer for this handler to the top, so mouse events can reach it.
moveLayerBackMoves the layer back to the position determined by the map’s layers array.
+ +

Properties

+ +

EVENTMAP

{Object} A object mapping the browser events to objects with callback keys for in and out.

+ +

feature

{OpenLayers.Feature.Vector} The last feature that was hovered.

+ +

lastFeature

{OpenLayers.Feature.Vector} The last feature that was handled.

+ +

down

{OpenLayers.Pixel} The location of the last mousedown.

+ +

up

{OpenLayers.Pixel} The location of the last mouseup.

+ +

clickTolerance

{Number} The number of pixels the mouse can move between mousedown and mouseup for the event to still be considered a click.  Dragging the map should not trigger the click and clickout callbacks unless the map is moved by less than this tolerance.  Defaults to 4.

+ +

geometryTypes

To restrict dragging to a limited set of geometry types, send a list of strings corresponding to the geometry class names.

@type Array(String)

+ +

stopClick

{Boolean} If stopClick is set to true, handled clicks do not propagate to other click listeners.  Otherwise, handled clicks do propagate.  Unhandled clicks always propagate, whatever the value of stopClick.  Defaults to true.

+ +

stopDown

{Boolean} If stopDown is set to true, handled mousedowns do not propagate to other mousedown listeners.  Otherwise, handled mousedowns do propagate.  Unhandled mousedowns always propagate, whatever the value of stopDown.  Defaults to true.

+ +

stopUp

{Boolean} If stopUp is set to true, handled mouseups do not propagate to other mouseup listeners.  Otherwise, handled mouseups do propagate.  Unhandled mouseups always propagate, whatever the value of stopUp.  Defaults to false.

+ +

Constructor

+ +

OpenLayers.Handler.Feature

Parameters

control{OpenLayers.Control}
layer{OpenLayers.Layer.Vector}
callbacks{Object} An object with a ‘over’ property whos value is a function to be called when the mouse is over a feature.  The callback should expect to recieve a single argument, the feature.
options{Object}
+ +

Functions

+ +

mousedown

mousedown: function(evt)

Handle mouse down.  Stop propagation if a feature is targeted by this event (stops map dragging during feature selection).

Parameters

evt{Event}
+ +

mouseup

mouseup: function(evt)

Handle mouse up.  Stop propagation if a feature is targeted by this event.

Parameters

evt{Event}
+ +

click

click: function(evt)

Handle click.  Call the “click” callback if click on a feature, or the “clickout” callback if click outside any feature.

Parameters

evt{Event}

Returns

{Boolean}

+ +

mousemove

mousemove: function(evt)

Handle mouse moves.  Call the “over” callback if moving in to a feature, or the “out” callback if moving out of a feature.

Parameters

evt{Event}

Returns

{Boolean}

+ +

dblclick

dblclick: function(evt)

Handle dblclick.  Call the “dblclick” callback if dblclick on a feature.

Parameters

evt{Event}

Returns

{Boolean}

+ +

geometryTypeMatches

geometryTypeMatches: function(feature)

Return true if the geometry type of the passed feature matches one of the geometry types in the geometryTypes array.

Parameters

feature{<OpenLayers.Vector.Feature>}

Returns

{Boolean}

+ +

handle

handle: function(evt)

Parameters

evt{Event}

Returns

{Boolean} The event occurred over a relevant feature.

+ +

triggerCallback

triggerCallback: function(type,
mode,
args)

Call the callback keyed in the event map with the supplied arguments.  For click and clickout, the clickTolerance is checked first.

Parameters

type{String}
+ +

activate

activate: function()

Turn on the handler.  Returns false if the handler was already active.

Returns

{Boolean}

+ +

deactivate

deactivate: function()

Turn off the handler.  Returns false if the handler was already active.

Returns

{Boolean}

+ +

moveLayerToTop

moveLayerToTop: function()

Moves the layer for this handler to the top, so mouse events can reach it.

+ +

moveLayerBack

moveLayerBack: function()

Moves the layer back to the position determined by the map’s layers array.

+ +
+ + + + + + + + + + +
Vector features use the OpenLayers.Geometry classes as geometry description.
This class represents a screen coordinate, in x and y coordinates
mousedown: function(evt)
Handle mouse down.
mouseup: function(evt)
Handle mouse up.
click: function(evt)
Handle click.
mousemove: function(evt)
Handle mouse moves.
dblclick: function(evt)
Handle dblclick.
geometryTypeMatches: function(feature)
Return true if the geometry type of the passed feature matches one of the geometry types in the geometryTypes array.
handle: function(evt)
triggerCallback: function(type,
mode,
args)
Call the callback keyed in the event map with the supplied arguments.
activate: function()
Turn on the handler.
deactivate: function()
Turn off the handler.
moveLayerToTop: function()
Moves the layer for this handler to the top, so mouse events can reach it.
moveLayerBack: function()
Moves the layer back to the position determined by the map’s layers array.
Controls affect the display or behavior of the map.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
{Number} The number of pixels the mouse can move between mousedown and mouseup for the event to still be considered a click.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Handler/Hover-js.html b/openlayers/doc/devdocs/files/OpenLayers/Handler/Hover-js.html new file mode 100644 index 0000000..d7e25c9 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Handler/Hover-js.html @@ -0,0 +1,69 @@ + + +OpenLayers.Handler.Hover - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Hover

The hover handler is to be used to emulate mouseovers on objects on the map that aren’t DOM elements.  For example one can use this handler to send WMS/GetFeatureInfo requests as the user moves the mouve over the map.

Inherits from

Summary
OpenLayers.Handler.HoverThe hover handler is to be used to emulate mouseovers on objects on the map that aren’t DOM elements.
Properties
delay
pixelTolerance
stopMove
px
timerId
Constructor
OpenLayers.Handler.HoverConstruct a hover handler.
Functions
mousemoveCalled when the mouse moves on the map.
mouseoutCalled when the mouse goes out of the map.
passesToleranceDetermine whether the mouse move is within the optional pixel tolerance.
clearTimerClear the timer and set timerId to null.
delayedCallTriggers pause callback.
deactivateDeactivate the handler.
+ +

Properties

+ +

delay

{Integer}Number of milliseconds between mousemoves before the event is considered a hover.  Default is 500.
+ +

pixelTolerance

{Integer}Maximum number of pixels between mousemoves for an event to be considered a hover.  Default is null.
+ +

stopMove

{Boolean}Stop other listeners from being notified on mousemoves.  Default is false.
+ +

px

{<OpenLayers.Pixel>}The location of the last mousemove, expressed in pixels.
+ +

timerId

{Number}The id of the timer.
+ +

Constructor

+ +

OpenLayers.Handler.Hover

Construct a hover handler.

Parameters

control{OpenLayers.Control} The control that initialized this handler.  The control is assumed to have a valid map property; that map is used in the handler’s own setMap method.
callbacks{Object} An object with keys corresponding to callbacks that will be called by the handler.  The callbacks should expect to receive a single argument, the event.  Callbacks for ‘move’, the mouse is moving, and ‘pause’, the mouse is pausing, are supported.
options{Object} An optional object whose properties will be set on the handler.
+ +

Functions

+ +

mousemove

mousemove: function(evt)

Called when the mouse moves on the map.

Parameters

evt{OpenLayers.Event}

Returns

{Boolean} Continue propagating this event.

+ +

mouseout

mouseout: function(evt)

Called when the mouse goes out of the map.

Parameters

evt{OpenLayers.Event}

Returns

{Boolean} Continue propagating this event.

+ +

passesTolerance

passesTolerance: function(px)

Determine whether the mouse move is within the optional pixel tolerance.

Parameters

px{OpenLayers.Pixel}

Returns

{Boolean} The mouse move is within the pixel tolerance.

+ +

clearTimer

clearTimer: function()

Clear the timer and set timerId to null.

+ +

delayedCall

delayedCall: function(evt)

Triggers pause callback.

Parameters

evt{OpenLayers.Event}
+ +

deactivate

deactivate: function()

Deactivate the handler.

Returns

{Boolean} The handler was successfully deactivated.

+ +
+ + + + + + + + + + +
mousemove: function(evt)
Called when the mouse moves on the map.
mouseout: function(evt)
Called when the mouse goes out of the map.
passesTolerance: function(px)
Determine whether the mouse move is within the optional pixel tolerance.
clearTimer: function()
Clear the timer and set timerId to null.
delayedCall: function(evt)
Triggers pause callback.
deactivate: function()
Deactivate the handler.
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
Utility functions for event handling.
This class represents a screen coordinate, in x and y coordinates
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Handler/Keyboard-js.html b/openlayers/doc/devdocs/files/OpenLayers/Handler/Keyboard-js.html new file mode 100644 index 0000000..d9e804c --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Handler/Keyboard-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.handler.Keyboard - OpenLayers + + + + + + + + + +

OpenLayers.handler.Keyboard

A handler for keyboard events.  Create a new instance with the OpenLayers.Handler.Keyboard constructor.

Inherits from

+ +

Constants

+ +

KEY_EVENTS

keydown, keypress, keyup

+ +

Properties

+ +

eventListener

{Function}

+ +

Constructor

+ +

OpenLayers.Handler.Keyboard

Returns a new keyboard handler.

Parameters

control{OpenLayers.Control} The control that is making use of this handler.  If a handler is being used without a control, the handlers setMap method must be overridden to deal properly with the map.
callbacks{Object} An object containing a single function to be called when the drag operation is finished.  The callback should expect to recieve a single argument, the pixel location of the event.  Callbacks for ‘keydown’, ‘keypress’, and ‘keyup’ are supported.
options{Object} Optional object whose properties will be set on the handler.
+ +

Functions

+ +

destroy

destroy: function()
+ +

activate

activate: function()
+ +

deactivate

deactivate: function()
+ +

handleKeyEvent

handleKeyEvent: function (evt)
+ +
+ + + + + + + + + + +
destroy: function()
activate: function()
deactivate: function()
handleKeyEvent: function (evt)
Returns a new keyboard handler.
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Handler/MouseWheel-js.html b/openlayers/doc/devdocs/files/OpenLayers/Handler/MouseWheel-js.html new file mode 100644 index 0000000..bb964f6 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Handler/MouseWheel-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Handler.MouseWheel - OpenLayers + + + + + + + + + +

OpenLayers.Handler.MouseWheel

Handler for wheel up/down events.

Inherits from

Summary
OpenLayers.Handler.MouseWheelHandler for wheel up/down events.
Properties
wheelListener{function}
mousePosition{OpenLayers.Pixel} mousePosition is necessary because evt.clientX/Y is buggy in Moz on wheel events, so we cache and use the value from the last mousemove.
Constructor
OpenLayers.Handler.MouseWheel
Functions
destroy
onWheelEventCatch the wheel event and handle it xbrowserly
wheelZoomGiven the wheel event, we carry out the appropriate zooming in or out, based on the ‘wheelDelta’ or ‘detail’ property of the event.
mousemoveUpdate the stored mousePosition on every move.
activate
deactivate
+ +

Properties

+ +

wheelListener

{function}

+ +

mousePosition

{OpenLayers.Pixel} mousePosition is necessary because evt.clientX/Y is buggy in Moz on wheel events, so we cache and use the value from the last mousemove.

+ +

Constructor

+ +

OpenLayers.Handler.MouseWheel

Parameters

control{OpenLayers.Control}
callbacks{Object} An object containing a single function to be called when the drag operation is finished.  The callback should expect to recieve a single argument, the point geometry.
options{Object}
+ +

Functions

+ +

destroy

destroy: function()
+ +

onWheelEvent

onWheelEvent: function(e)

Catch the wheel event and handle it xbrowserly

Parameters

e{Event}
+ +

wheelZoom

wheelZoom: function(e)

Given the wheel event, we carry out the appropriate zooming in or out, based on the ‘wheelDelta’ or ‘detail’ property of the event.

Parameters

e{Event}
+ +

mousemove

mousemove: function (evt)

Update the stored mousePosition on every move.

Parameters

evt{Event} The browser event

Returns

{Boolean} Allow event propagation

+ +

activate

activate: function (evt)
+ +

deactivate

deactivate: function (evt)
+ +
+ + + + + + + + + + +
This class represents a screen coordinate, in x and y coordinates
destroy: function()
onWheelEvent: function(e)
Catch the wheel event and handle it xbrowserly
wheelZoom: function(e)
Given the wheel event, we carry out the appropriate zooming in or out, based on the ‘wheelDelta’ or ‘detail’ property of the event.
mousemove: function (evt)
Update the stored mousePosition on every move.
activate: function (evt)
deactivate: function (evt)
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Handler/Path-js.html b/openlayers/doc/devdocs/files/OpenLayers/Handler/Path-js.html new file mode 100644 index 0000000..dd11612 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Handler/Path-js.html @@ -0,0 +1,79 @@ + + +OpenLayers.Handler.Path - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Path

Handler to draw a path on the map.  Path is displayed on mouse down, moves on mouse move, and is finished on mouse up.

Inherits from

Summary
OpenLayers.Handler.PathHandler to draw a path on the map.
Properties
line{OpenLayers.Feature.Vector}
freehand{Boolean} In freehand mode, the handler starts the path on mouse down, adds a point for every mouse move, and finishes the path on mouse up.
freehandToggle{String} If set, freehandToggle is checked on mouse events and will set the freehand mode to the opposite of this.freehand.
Constructor
OpenLayers.Handler.PathCreate a new path hander
Functions
createFeatureAdd temporary geometries
destroyFeatureDestroy temporary geometries
removePointDestroy the temporary point.
addPointAdd point to geometry.
freehandModeDetermine whether to behave in freehand mode or not.
modifyFeatureModify the existing geometry given the new point
drawFeatureRender geometries on the temporary layer.
getSketchReturn the sketch feature.
getGeometryReturn the sketch geometry.
mousedownHandle mouse down.
mousemoveHandle mouse move.
mouseupHandle mouse up.
dblclickHandle double-clicks.
+ +

Properties

+ + + +

freehand

{Boolean} In freehand mode, the handler starts the path on mouse down, adds a point for every mouse move, and finishes the path on mouse up.  Outside of freehand mode, a point is added to the path on every mouse click and double-click finishes the path.

+ +

freehandToggle

{String} If set, freehandToggle is checked on mouse events and will set the freehand mode to the opposite of this.freehand.  To disallow toggling between freehand and non-freehand mode, set freehandToggle to null.  Acceptable toggle values are ‘shiftKey’, ‘ctrlKey’, and ‘altKey’.

+ +

Constructor

+ +

OpenLayers.Handler.Path

Create a new path hander

Parameters

control{OpenLayers.Control} The control that owns this handler
callbacks{Object} An object with a properties whose values are functions.  Various callbacks described below.
options{Object} An optional object with properties to be set on the handler

Named callbacks

createCalled when a sketch is first created.  Callback called with the creation point geometry and sketch feature.
modifyCalled with each move of a vertex with the vertex (point) geometry and the sketch feature.
pointCalled as each point is added.  Receives the new point geometry.
doneCalled when the point drawing is finished.  The callback will recieve a single argument, the linestring geometry.
cancelCalled when the handler is deactivated while drawing.  The cancel callback will receive a geometry.
+ +

Functions

+ +

createFeature

createFeature: function(pixel)

Add temporary geometries

Parameters

pixel{OpenLayers.Pixel} The initial pixel location for the new feature.
+ +

destroyFeature

destroyFeature: function()

Destroy temporary geometries

+ +

removePoint

removePoint: function()

Destroy the temporary point.

+ +

addPoint

addPoint: function(pixel)

Add point to geometry.  Send the point index to override the behavior of LinearRing that disregards adding duplicate points.

Parameters

pixel{OpenLayers.Pixel} The pixel location for the new point.
+ +

freehandMode

freehandMode: function(evt)

Determine whether to behave in freehand mode or not.

Returns

{Boolean}

+ +

modifyFeature

modifyFeature: function(pixel)

Modify the existing geometry given the new point

Parameters

pixel{OpenLayers.Pixel} The updated pixel location for the latest point.
+ +

drawFeature

drawFeature: function()

Render geometries on the temporary layer.

+ +

getSketch

getSketch: function()

Return the sketch feature.

Returns

{OpenLayers.Feature.Vector}

+ +

getGeometry

getGeometry: function()

Return the sketch geometry.  If <multi> is true, this will return a multi-part geometry.

Returns

{OpenLayers.Geometry.LineString}

+ +

mousedown

mousedown: function(evt)

Handle mouse down.  Add a new point to the geometry and render it.  Return determines whether to propagate the event on the map.

Parameters

evt{Event} The browser event

Returns

{Boolean} Allow event propagation

+ +

mousemove

mousemove: function (evt)

Handle mouse move.  Adjust the geometry and redraw.  Return determines whether to propagate the event on the map.

Parameters

evt{Event} The browser event

Returns

{Boolean} Allow event propagation

+ +

mouseup

mouseup: function (evt)

Handle mouse up.  Send the latest point in the geometry to the control.  Return determines whether to propagate the event on the map.

Parameters

evt{Event} The browser event

Returns

{Boolean} Allow event propagation

+ +

dblclick

dblclick: function(evt)

Handle double-clicks.  Finish the geometry and send it back to the control.

Parameters

evt{Event} The browser event

Returns

{Boolean} Allow event propagation

+ +
+ + + + + + + + + + +
Vector features use the OpenLayers.Geometry classes as geometry description.
createFeature: function(pixel)
Add temporary geometries
destroyFeature: function()
Destroy temporary geometries
removePoint: function()
Destroy the temporary point.
addPoint: function(pixel)
Add point to geometry.
freehandMode: function(evt)
Determine whether to behave in freehand mode or not.
modifyFeature: function(pixel)
Modify the existing geometry given the new point
drawFeature: function()
Render geometries on the temporary layer.
getSketch: function()
Return the sketch feature.
getGeometry: function()
Return the sketch geometry.
mousedown: function(evt)
Handle mouse down.
mousemove: function (evt)
Handle mouse move.
mouseup: function (evt)
Handle mouse up.
dblclick: function(evt)
Handle double-clicks.
Handler to draw a point on the map.
Controls affect the display or behavior of the map.
This class represents a screen coordinate, in x and y coordinates
A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Handler/Point-js.html b/openlayers/doc/devdocs/files/OpenLayers/Handler/Point-js.html new file mode 100644 index 0000000..734b7e3 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Handler/Point-js.html @@ -0,0 +1,95 @@ + + +OpenLayers.Handler.Point - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Point

Handler to draw a point on the map.  Point is displayed on mouse down, moves on mouse move, and is finished on mouse up.  The handler triggers callbacks for ‘done’, ‘cancel’, and ‘modify’.  The modify callback is called with each change in the sketch and will receive the latest point drawn.  Create a new instance with the OpenLayers.Handler.Point constructor.

Inherits from

Summary
OpenLayers.Handler.PointHandler to draw a point on the map.
Properties
point{OpenLayers.Feature.Vector} The currently drawn point
layer{OpenLayers.Layer.Vector} The temporary drawing layer
multi{Boolean} Cast features to multi-part geometries before passing to the layer.
drawing{Boolean} A point is being drawn
mouseDown{Boolean} The mouse is down
lastDown{OpenLayers.Pixel} Location of the last mouse down
lastUp{OpenLayers.Pixel}
persist{Boolean} Leave the feature rendered until destroyFeature is called.
layerOptions{Object} Any optional properties to be set on the sketch layer.
Constructor
OpenLayers.Handler.PointCreate a new point handler.
Functions
activateturn on the handler
createFeatureAdd temporary features
deactivateturn off the handler
destroyFeatureDestroy the temporary geometries
finalizeFinish the geometry and call the “done” callback.
cancelFinish the geometry and call the “cancel” callback.
clickHandle clicks.
dblclickHandle double-clicks.
modifyFeatureModify the existing geometry given a pixel location.
drawFeatureRender features on the temporary layer.
getGeometryReturn the sketch geometry.
geometryCloneReturn a clone of the relevant geometry.
mousedownHandle mouse down.
mousemoveHandle mouse move.
mouseupHandle mouse up.
+ +

Properties

+ +

point

{OpenLayers.Feature.Vector} The currently drawn point

+ +

layer

{OpenLayers.Layer.Vector} The temporary drawing layer

+ +

multi

{Boolean} Cast features to multi-part geometries before passing to the layer.  Default is false.

+ +

drawing

{Boolean} A point is being drawn

+ +

mouseDown

{Boolean} The mouse is down

+ +

lastDown

{OpenLayers.Pixel} Location of the last mouse down

+ + + +

persist

{Boolean} Leave the feature rendered until destroyFeature is called.  Default is false.  If set to true, the feature remains rendered until destroyFeature is called, typically by deactivating the handler or starting another drawing.

+ +

layerOptions

{Object} Any optional properties to be set on the sketch layer.

+ +

Constructor

+ +

OpenLayers.Handler.Point

Create a new point handler.

Parameters

control{OpenLayers.Control} The control that owns this handler
callbacks{Object} An object with a properties whose values are functions.  Various callbacks described below.
options{Object} An optional object with properties to be set on the handler

Named callbacks

createCalled when a sketch is first created.  Callback called with the creation point geometry and sketch feature.
modifyCalled with each move of a vertex with the vertex (point) geometry and the sketch feature.
doneCalled when the point drawing is finished.  The callback will recieve a single argument, the point geometry.
cancelCalled when the handler is deactivated while drawing.  The cancel callback will receive a geometry.
+ +

Functions

+ +

activate

activate: function()

turn on the handler

+ +

createFeature

createFeature: function(pixel)

Add temporary features

Parameters

pixel{OpenLayers.Pixel} A pixel location on the map.
+ +

deactivate

deactivate: function()

turn off the handler

+ +

destroyFeature

destroyFeature: function()

Destroy the temporary geometries

+ +

finalize

finalize: function(cancel)

Finish the geometry and call the “done” callback.

Parameters

cancel{Boolean} Call cancel instead of done callback.  Default is false.
+ +

cancel

cancel: function()

Finish the geometry and call the “cancel” callback.

+ +

click

click: function(evt)

Handle clicks.  Clicks are stopped from propagating to other listeners on map.events or other dom elements.

Parameters

evt{Event} The browser event

Returns

{Boolean} Allow event propagation

+ +

dblclick

dblclick: function(evt)

Handle double-clicks.  Double-clicks are stopped from propagating to other listeners on map.events or other dom elements.

Parameters

evt{Event} The browser event

Returns

{Boolean} Allow event propagation

+ +

modifyFeature

modifyFeature: function(pixel)

Modify the existing geometry given a pixel location.

Parameters

pixel{OpenLayers.Pixel} A pixel location on the map.
+ +

drawFeature

drawFeature: function()

Render features on the temporary layer.

+ +

getGeometry

getGeometry: function()

Return the sketch geometry.  If multi is true, this will return a multi-part geometry.

Returns

{OpenLayers.Geometry.Point}

+ +

geometryClone

geometryClone: function()

Return a clone of the relevant geometry.

Returns

{OpenLayers.Geometry}

+ +

mousedown

mousedown: function(evt)

Handle mouse down.  Adjust the geometry and redraw.  Return determines whether to propagate the event on the map.

Parameters

evt{Event} The browser event

Returns

{Boolean} Allow event propagation

+ +

mousemove

mousemove: function (evt)

Handle mouse move.  Adjust the geometry and redraw.  Return determines whether to propagate the event on the map.

Parameters

evt{Event} The browser event

Returns

{Boolean} Allow event propagation

+ +

mouseup

mouseup: function (evt)

Handle mouse up.  Send the latest point in the geometry to the control.  Return determines whether to propagate the event on the map.

Parameters

evt{Event} The browser event

Returns

{Boolean} Allow event propagation

+ +
+ + + + + + + + + + +
Vector features use the OpenLayers.Geometry classes as geometry description.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
This class represents a screen coordinate, in x and y coordinates
activate: function()
turn on the handler
createFeature: function(pixel)
Add temporary features
deactivate: function()
turn off the handler
destroyFeature: function()
Destroy the temporary geometries
finalize: function(cancel)
Finish the geometry and call the “done” callback.
cancel: function()
Finish the geometry and call the “cancel” callback.
click: function(evt)
Handle clicks.
dblclick: function(evt)
Handle double-clicks.
modifyFeature: function(pixel)
Modify the existing geometry given a pixel location.
drawFeature: function()
Render features on the temporary layer.
getGeometry: function()
Return the sketch geometry.
geometryClone: function()
Return a clone of the relevant geometry.
mousedown: function(evt)
Handle mouse down.
mousemove: function (evt)
Handle mouse move.
mouseup: function (evt)
Handle mouse up.
Create a new point handler.
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
{Boolean} Cast features to multi-part geometries before passing to the layer.
Point geometry class.
A Geometry is a description of a geographic object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Handler/Polygon-js.html b/openlayers/doc/devdocs/files/OpenLayers/Handler/Polygon-js.html new file mode 100644 index 0000000..c0437ee --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Handler/Polygon-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Handler.Polygon - OpenLayers + + + + + + + + + +

OpenLayers.Handler.Polygon

Handler to draw a polygon on the map.  Polygon is displayed on mouse down, moves on mouse move, and is finished on mouse up.

Inherits from

Summary
OpenLayers.Handler.PolygonHandler to draw a polygon on the map.
Constructor
OpenLayers.Handler.PolygonCreate a Polygon Handler.
Functions
createFeatureAdd temporary geometries
destroyFeatureDestroy temporary geometries
drawFeatureRender geometries on the temporary layer.
getSketchReturn the sketch feature.
getGeometryReturn the sketch geometry.
dblclickHandle double-clicks.
+ +

Constructor

+ +

OpenLayers.Handler.Polygon

Create a Polygon Handler.

Parameters

control{OpenLayers.Control} The control that owns this handler
callbacks{Object} An object with a properties whose values are functions.  Various callbacks described below.
options{Object} An optional object with properties to be set on the handler

Named callbacks

createCalled when a sketch is first created.  Callback called with the creation point geometry and sketch feature.
modifyCalled with each move of a vertex with the vertex (point) geometry and the sketch feature.
pointCalled as each point is added.  Receives the new point geometry.
doneCalled when the point drawing is finished.  The callback will recieve a single argument, the polygon geometry.
cancelCalled when the handler is deactivated while drawing.  The cancel callback will receive a geometry.
+ +

Functions

+ +

createFeature

createFeature: function(pixel)

Add temporary geometries

Parameters

pixel{OpenLayers.Pixel} The initial pixel location for the new feature.
+ +

destroyFeature

destroyFeature: function()

Destroy temporary geometries

+ +

drawFeature

drawFeature: function()

Render geometries on the temporary layer.

+ +

getSketch

getSketch: function()

Return the sketch feature.

Returns

{OpenLayers.Feature.Vector}

+ +

getGeometry

getGeometry: function()

Return the sketch geometry.  If <multi> is true, this will return a multi-part geometry.

Returns

{OpenLayers.Geometry.Polygon}

+ +

dblclick

dblclick: function(evt)

Handle double-clicks.  Finish the geometry and send it back to the control.

Parameters

evt{Event}
+ +
+ + + + + + + + + + +
createFeature: function(pixel)
Add temporary geometries
destroyFeature: function()
Destroy temporary geometries
drawFeature: function()
Render geometries on the temporary layer.
getSketch: function()
Return the sketch feature.
getGeometry: function()
Return the sketch geometry.
dblclick: function(evt)
Handle double-clicks.
Handler to draw a path on the map.
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
This class represents a screen coordinate, in x and y coordinates
Vector features use the OpenLayers.Geometry classes as geometry description.
Polygon is a collection of Geometry.LinearRings.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Handler/RegularPolygon-js.html b/openlayers/doc/devdocs/files/OpenLayers/Handler/RegularPolygon-js.html new file mode 100644 index 0000000..f335a0d --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Handler/RegularPolygon-js.html @@ -0,0 +1,97 @@ + + +OpenLayers.Handler.RegularPolygon - OpenLayers + + + + + + + + + +

OpenLayers.Handler.RegularPolygon

Handler to draw a regular polygon on the map.  Polygon is displayed on mouse down, moves or is modified on mouse move, and is finished on mouse up.  The handler triggers callbacks for ‘done’ and ‘cancel’.  Create a new instance with the OpenLayers.Handler.RegularPolygon constructor.

Inherits from

Summary
OpenLayers.Handler.RegularPolygonHandler to draw a regular polygon on the map.
Properties
sides{Integer} Number of sides for the regular polygon.
radius{Float} Optional radius in map units of the regular polygon.
snapAngle{Float} If set to a non-zero value, the handler will snap the polygon rotation to multiples of the snapAngle.
snapToggle{String} If set, snapToggle is checked on mouse events and will set the snap mode to the opposite of what it currently is.
persist{Boolean} Leave the feature rendered until clear is called.
irregular{Boolean} Draw an irregular polygon instead of a regular polygon.
angle{Float} The angle from the origin (mouse down) to the current mouse position, in radians.
fixedRadius{Boolean} The polygon has a fixed radius.
feature{OpenLayers.Feature.Vector} The currently drawn polygon feature
layer{OpenLayers.Layer.Vector} The temporary drawing layer
origin{OpenLayers.Geometry.Point} Location of the first mouse down
Constructor
OpenLayers.Handler.RegularPolygonCreate a new regular polygon handler.
Functions
setOptions
activateTurn on the handler.
deactivateTurn off the handler.
downStart drawing a new feature
moveRespond to drag move events
upFinish drawing the feature
outFinish drawing the feature.
createGeometryCreate the new polygon geometry.
modifyGeometryModify the polygon geometry in place.
calculateAngleCalculate the angle based on settings.
cancelFinish the geometry and call the “cancel” callback.
finalizeFinish the geometry and call the “done” callback.
clearClear any rendered features on the temporary layer.
callbackTrigger the control’s named callback with the given arguments
+ +

Properties

+ +

sides

{Integer} Number of sides for the regular polygon.  Needs to be greater than 2.  Defaults to 4.

+ +

radius

{Float} Optional radius in map units of the regular polygon.  If this is set to some non-zero value, a polygon with a fixed radius will be drawn and dragged with mose movements.  If this property is not set, dragging changes the radius of the polygon.  Set to null by default.

+ +

snapAngle

{Float} If set to a non-zero value, the handler will snap the polygon rotation to multiples of the snapAngle.  Value is an angle measured in degrees counterclockwise from the positive x-axis.

+ +

snapToggle

{String} If set, snapToggle is checked on mouse events and will set the snap mode to the opposite of what it currently is.  To disallow toggling between snap and non-snap mode, set freehandToggle to null.  Acceptable toggle values are ‘shiftKey’, ‘ctrlKey’, and ‘altKey’.  Snap mode is only possible if this.snapAngle is set to a non-zero value.

+ +

persist

{Boolean} Leave the feature rendered until clear is called.  Default is false.  If set to true, the feature remains rendered until clear is called, typically by deactivating the handler or starting another drawing.

+ +

irregular

{Boolean} Draw an irregular polygon instead of a regular polygon.  Default is false.  If true, the initial mouse down will represent one corner of the polygon bounds and with each mouse movement, the polygon will be stretched so the opposite corner of its bounds follows the mouse position.  This property takes precedence over the radius property.  If set to true, the radius property will be ignored.

+ +

angle

{Float} The angle from the origin (mouse down) to the current mouse position, in radians.  This is measured counterclockwise from the positive x-axis.

+ +

fixedRadius

{Boolean} The polygon has a fixed radius.  True if a radius is set before drawing begins.  False otherwise.

+ +

feature

{OpenLayers.Feature.Vector} The currently drawn polygon feature

+ +

layer

{OpenLayers.Layer.Vector} The temporary drawing layer

+ +

origin

{OpenLayers.Geometry.Point} Location of the first mouse down

+ +

Constructor

+ +

OpenLayers.Handler.RegularPolygon

Create a new regular polygon handler.

Parameters

control{OpenLayers.Control} The control that owns this handler
callbacks{Object} An object with a properties whose values are functions.  Various callbacks described below.
options{Object} An object with properties to be set on the handler.  If the options.sides property is not specified, the number of sides will default to 4.

Named callbacks

createCalled when a sketch is first created.  Callback called with the creation point geometry and sketch feature.
doneCalled when the sketch drawing is finished.  The callback will recieve a single argument, the sketch geometry.
cancelCalled when the handler is deactivated while drawing.  The cancel callback will receive a geometry.
+ +

Functions

+ +

setOptions

setOptions: function (newOptions)

Parameters

newOptions{Object}
+ +

activate

activate: function()

Turn on the handler.

Return

{Boolean} The handler was successfully activated

+ +

deactivate

deactivate: function()

Turn off the handler.

Return

{Boolean} The handler was successfully deactivated

+ +

down

down: function(evt)

Start drawing a new feature

Parameters

evt{Event} The drag start event
+ +

move

move: function(evt)

Respond to drag move events

Parameters

evt{Evt} The move event
+ +

up

up: function(evt)

Finish drawing the feature

Parameters

evt{Event} The mouse up event
+ +

out

out: function(evt)

Finish drawing the feature.

Parameters

evt{Event} The mouse out event
+ +

createGeometry

createGeometry: function()

Create the new polygon geometry.  This is called at the start of the drag and at any point during the drag if the number of sides changes.

+ +

modifyGeometry

modifyGeometry: function()

Modify the polygon geometry in place.

+ +

calculateAngle

calculateAngle: function(point,
evt)

Calculate the angle based on settings.

Parameters

point{OpenLayers.Geometry.Point}
evt{Event}
+ +

cancel

cancel: function()

Finish the geometry and call the “cancel” callback.

+ +

finalize

finalize: function()

Finish the geometry and call the “done” callback.

+ +

clear

clear: function()

Clear any rendered features on the temporary layer.  This is called when the handler is deactivated, canceled, or done (unless persist is true).

+ +

callback

callback: function (name,
args)

Trigger the control’s named callback with the given arguments

Parameters

name{String} The key for the callback that is one of the properties of the handler’s callbacks object.
args{Array} An array of arguments with which to call the callback (defined by the control).
+ +
+ + + + + + + + + + +
Vector features use the OpenLayers.Geometry classes as geometry description.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Point geometry class.
setOptions: function (newOptions)
activate: function()
Turn on the handler.
deactivate: function()
Turn off the handler.
down: function(evt)
Start drawing a new feature
move: function(evt)
Respond to drag move events
up: function(evt)
Finish drawing the feature
out: function(evt)
Finish drawing the feature.
createGeometry: function()
Create the new polygon geometry.
modifyGeometry: function()
Modify the polygon geometry in place.
calculateAngle: function(point,
evt)
Calculate the angle based on settings.
cancel: function()
Finish the geometry and call the “cancel” callback.
finalize: function()
Finish the geometry and call the “done” callback.
clear: function()
Clear any rendered features on the temporary layer.
callback: function (name,
args)
Trigger the control’s named callback with the given arguments
Create a new regular polygon handler.
Base class to construct a higher-level handler for event sequences.
Controls affect the display or behavior of the map.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Icon-js.html b/openlayers/doc/devdocs/files/OpenLayers/Icon-js.html new file mode 100644 index 0000000..25f6a5d --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Icon-js.html @@ -0,0 +1,79 @@ + + +OpenLayers.Icon - OpenLayers + + + + + + + + + +

OpenLayers.Icon

The icon represents a graphical icon on the screen.  Typically used in conjunction with a OpenLayers.Marker to represent markers on a screen.

An icon has a url, size and position.  It also contains an offset which allows the center point to be represented correctly.  This can be provided either as a fixed offset or a function provided to calculate the desired offset.

Summary
OpenLayers.IconThe icon represents a graphical icon on the screen.
Properties
url{String} image url
size{OpenLayers.Size}
offset{OpenLayers.Pixel} distance in pixels to offset the image when being rendered
calculateOffset{OpenLayers.Pixel} Function to calculate the offset (based on the size)
imageDiv{DOMElement}
px{OpenLayers.Pixel}
Constructor
OpenLayers.IconCreates an icon, which is an image tag in a div.
Functions
destroyNullify references and remove event listeners to prevent circular references and memory leaks
clone{OpenLayers.Icon} A fresh copy of the icon.
setSize
setUrl
drawMove the div to the given pixel.
eraseErase the underlying image element.
setOpacityChange the icon’s opacity
moveTomove icon to passed in px.
displayHide or show the icon
isDrawn{Boolean} Whether or not the icon is drawn.
+ +

Properties

+ +

url

{String} image url

+ + + +

offset

{OpenLayers.Pixel} distance in pixels to offset the image when being rendered

+ +

calculateOffset

{OpenLayers.Pixel} Function to calculate the offset (based on the size)

+ +

imageDiv

{DOMElement}

+ + + +

Constructor

+ +

OpenLayers.Icon

Creates an icon, which is an image tag in a div.

url{String}
size{OpenLayers.Size}
offset{OpenLayers.Pixel}
calculateOffset{Function}
+ +

Functions

+ +

destroy

destroy: function()

Nullify references and remove event listeners to prevent circular references and memory leaks

+ +

clone

clone: function()

Returns

{OpenLayers.Icon} A fresh copy of the icon.

+ +

setSize

setSize: function(size)

Parameters

size{OpenLayers.Size}
+ +

setUrl

setUrl: function(url)

Parameters

url{String}
+ +

draw

draw: function(px)

Move the div to the given pixel.

Parameters

px{OpenLayers.Pixel}

Returns

{DOMElement} A new DOM Image of this icon set at the location passed-in

+ +

erase

erase: function()

Erase the underlying image element.

+ +

setOpacity

setOpacity: function(opacity)

Change the icon’s opacity

Parameters

opacity{float}
+ +

moveTo

moveTo: function (px)

move icon to passed in px.

Parameters

px{OpenLayers.Pixel}
+ +

display

display: function(display)

Hide or show the icon

Parameters

display{Boolean}
+ +

isDrawn

isDrawn: function()

Returns

{Boolean} Whether or not the icon is drawn.

+ +
+ + + + + + + + + + +
Instances of this class represent a width/height pair
This class represents a screen coordinate, in x and y coordinates
destroy: function()
Nullify references and remove event listeners to prevent circular references and memory leaks
clone: function()
{OpenLayers.Icon} A fresh copy of the icon.
Creates an icon, which is an image tag in a div.
setSize: function(size)
setUrl: function(url)
draw: function(px)
Move the div to the given pixel.
erase: function()
Erase the underlying image element.
setOpacity: function(opacity)
Change the icon’s opacity
moveTo: function (px)
move icon to passed in px.
display: function(display)
Hide or show the icon
isDrawn: function()
{Boolean} Whether or not the icon is drawn.
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang-js.html new file mode 100644 index 0000000..0c45216 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang-js.html @@ -0,0 +1,55 @@ + + +OpenLayers.Lang - OpenLayers + + + + + + + + + +

OpenLayers.Lang

Internationalization namespace.  Contains dictionaries in various languages and methods to set and get the current language.

Summary
OpenLayers.LangInternationalization namespace.
Properties
code{String} Current language code to use in OpenLayers.
defaultCode{String} Default language to use when a specific language can’t be found.
Functions
getCodeGet the current language code.
setCodeSet the language code for string translation.
translateLooks up a key from a dictionary based on the current language string.
OpenLayers.i18nAlias for OpenLayers.Lang.translate.
+ +

Properties

+ +

code

{String} Current language code to use in OpenLayers.  Use the setCode method to set this value and the getCode method to retrieve it.

+ +

defaultCode

{String} Default language to use when a specific language can’t be found.  Default is “en”.

+ +

Functions

+ +

getCode

getCode: function()

Get the current language code.

Returns

The current language code.

+ +

setCode

setCode: function(code)

Set the language code for string translation.  This code is used by the OpenLayers.Lang.translate method.

Parameters- code - {String} These codes follow the IETF recommendations at http://www.ietf.org/rfc/rfc3066.txt.  If no value is set, the browser’s language setting will be tested.  If no OpenLayers.Lang dictionary exists for the code, the <OpenLayers.String.defaultLang> will be used.

+ +

translate

translate: function(key,
context)

Looks up a key from a dictionary based on the current language string.  The value of getCode will be used to determine the appropriate dictionary.  Dictionaries are stored in OpenLayers.Lang.

Parameters

key{String} The key for an i18n string value in the dictionary.
context{Object} Optional context to be used with OpenLayers.String.format.

Returns

{String} A internationalized string.

+ +

OpenLayers.i18n

Alias for OpenLayers.Lang.translate.  Looks up a key from a dictionary based on the current language string.  The value of OpenLayers.Lang.getCode will be used to determine the appropriate dictionary.  Dictionaries are stored in OpenLayers.Lang.

Parameters

key{String} The key for an i18n string value in the dictionary.
context{Object} Optional context to be used with OpenLayers.String.format.

Returns

{String} A internationalized string.

+ +
+ + + + + + + + + + +
getCode: function()
Get the current language code.
setCode: function(code)
Set the language code for string translation.
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
Internationalization namespace.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/ca-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/ca-js.html new file mode 100644 index 0000000..140628d --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/ca-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“ca”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“ca”]

Dictionary for Catalan, UTF8 encoding.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/cs-CZ-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/cs-CZ-js.html new file mode 100644 index 0000000..7c0d5c6 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/cs-CZ-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“cs-CZ”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“cs-CZ”]

Dictionary for Czech.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/da-DK-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/da-DK-js.html new file mode 100644 index 0000000..1b3d372 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/da-DK-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“da-DK”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“da-DK”]

Dictionary for Danish.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/de-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/de-js.html new file mode 100644 index 0000000..12754c5 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/de-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“de”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“de”]

Dictionary for German.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/en-CA-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/en-CA-js.html new file mode 100644 index 0000000..42e2382 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/en-CA-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“en-CA”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“en-CA”]

Dictionary for English-CA.  This dictionary inherits from the standard English dictionary.  Override only those entries with language specific to the CA region.

Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/en-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/en-js.html new file mode 100644 index 0000000..a547737 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/en-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“en”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“en”]

Dictionary for English.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/es-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/es-js.html new file mode 100644 index 0000000..76efe64 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/es-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“es”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“es”]

Dictionary for Spanish, UTF8 encoding.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/fr-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/fr-js.html new file mode 100644 index 0000000..0d73253 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/fr-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“fr”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“fr”]

Dictionary for French.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/it-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/it-js.html new file mode 100644 index 0000000..07c8903 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/it-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“it”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“it”]

Dictionary for Italian.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/nb-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/nb-js.html new file mode 100644 index 0000000..ea34078 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/nb-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“nb”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“nb”]

Dictionary for norwegian bokmål (Norway).  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/nl-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/nl-js.html new file mode 100644 index 0000000..eb69c45 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/nl-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“nl”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“nl”]

Dictionary for Dutch.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/pt-BR-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/pt-BR-js.html new file mode 100644 index 0000000..a0edc94 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/pt-BR-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“pt-BR”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“pt-BR”]

Dictionary for Brazilian Portuguese.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/sv-SE-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/sv-SE-js.html new file mode 100644 index 0000000..80a734a --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/sv-SE-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“sv-SE”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“sv-SE”]

Dictionary for swedish (Sweden).  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/zh-CN-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/zh-CN-js.html new file mode 100644 index 0000000..4b31ca4 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/zh-CN-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“zh-CN”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“zh-CN”]

Dictionary for Simplified Chinese.  Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Lang/zh-TW-js.html b/openlayers/doc/devdocs/files/OpenLayers/Lang/zh-TW-js.html new file mode 100644 index 0000000..e9b75e5 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Lang/zh-TW-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Lang[“zh-TW”] - OpenLayers + + + + + + + + + +

OpenLayers.Lang[“zh-TW”]

Dictionary for Traditional Chinese.  (Used Mainly in Taiwan) Keys for entries are used in calls to OpenLayers.Lang.translate.  Entry bodies are normal strings or strings formatted for use with OpenLayers.String.format calls.

+ +
+ + + + + + + + + + +
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer-js.html new file mode 100644 index 0000000..7e5b8cd --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer-js.html @@ -0,0 +1,177 @@ + + +OpenLayers.Layer - OpenLayers + + + + + + + + + +

OpenLayers.Layer

Summary
OpenLayers.Layer
Properties
id{String}
name{String}
div{DOMElement}
opacity{Float} The layer’s opacity.
alwaysInRange{Boolean} If a layer’s display should not be scale-based, this should be set to true.
Constants
EVENT_TYPES{Array(String)} Supported application event types.
Properties
events{OpenLayers.Events}
map{OpenLayers.Map} This variable is set when the layer is added to the map, via the accessor function setMap().
isBaseLayer{Boolean} Whether or not the layer is a base layer.
alpha{Boolean} The layer’s images have an alpha channel.
displayInLayerSwitcher{Boolean} Display the layer’s name in the layer switcher.
visibility{Boolean} The layer should be displayed in the map.
attribution{String} Attribution string, displayed when an OpenLayers.Control.Attribution has been added to the map.
inRange{Boolean} The current map resolution is within the layer’s min/max range.
imageOffset{OpenLayers.Pixel} For layers with a gutter, the image offset represents displacement due to the gutter.
options{Object} An optional object whose properties will be set on the layer.
eventListeners{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
gutter{Integer} Determines the width (in pixels) of the gutter around image tiles to ignore.
projection{OpenLayers.Projection} or {String} Set in the layer options to override the default projection string this layer - also set maxExtent, maxResolution, and units if appropriate.
units{String} The layer map units.
scales{Array} An array of map scales in descending order.
resolutions{Array} A list of map resolutions (map units per pixel) in descending order.
maxExtent{OpenLayers.Bounds} The center of these bounds will not stray outside of the viewport extent during panning.
minExtent{OpenLayers.Bounds}
maxResolution{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
minResolution{Float}
numZoomLevels{Integer}
minScale{Float}
maxScale{Float}
displayOutsideMaxExtent{Boolean} Request map tiles that are completely outside of the max extent for this layer.
wrapDateLine{Boolean} #487 for more info.
transitionEffect{String} The transition effect to use when the map is panned or zoomed.
SUPPORTED_TRANSITIONS{Array} An immutable (that means don’t change it!)
Constructor
OpenLayers.Layer
Functions
destroyDestroy is a destructor: this is to alleviate cyclic references which the Javascript garbage cleaner can not take care of on its own.
clone
setNameSets the new layer name for this layer.
addOptions
onMapResizeThis function can be implemented by subclasses
redrawRedraws the layer.
moveTo
setMapSet the map property for the layer.
afterAddCalled at the end of the map.addLayer sequence.
removeMapJust as setMap() allows each layer the possibility to take a personalized action on being added to the map, removeMap() allows each layer to take a personalized action on being removed from it.
getImageSize{OpenLayers.Size} The size that the image should be, taking into account gutters.
setTileSizeSet the tile size based on the map size.
getVisibility{Boolean} The layer should be displayed (if in range).
setVisibilitySet the visibility flag for the layer and hide/show & redraw accordingly.
displayHide or show the Layer
calculateInRange{Boolean} The layer is displayable at the current map’s current resolution.
setIsBaseLayer
initResolutionsThis method’s responsibility is to set up the ‘resolutions’ array for the layer -- this array is what the layer will use to interface between the zoom levels of the map and the resolution display of the layer.
getResolution{Float} The currently selected resolution of the map, taken from the resolutions array, indexed by current zoom level.
getExtent{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getZoomForExtent
getDataExtentCalculates the max extent which includes all of the data for the layer.
getResolutionForZoom
getZoomForResolution
getLonLatFromViewPortPx
getViewPortPxFromLonLatReturns a pixel location given a map location.
setOpacitySets the opacity for the entire layer (all images)
getZIndex{Integer} the z-index of this layer
setZIndex
adjustBoundsThis function will take a bounds, and if wrapDateLine option is set on the layer, it will return a bounds which is wrapped around the world.
+ +

Properties

+ +

id

{String}

+ +

name

{String}

+ +

div

{DOMElement}

+ +

opacity

{Float} The layer’s opacity.  Float number between 0.0 and 1.0.

+ +

alwaysInRange

{Boolean} If a layer’s display should not be scale-based, this should be set to true.  This will cause the layer, as an overlay, to always be ‘active’, by always returning true from the calculateInRange() function.

If not explicitly specified for a layer, its value will be determined on startup in initResolutions() based on whether or not any scale-specific properties have been set as options on the layer.  If no scale-specific options have been set on the layer, we assume that it should always be in range.

See #987 for more info.

+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

layer.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

All event objects have at least the following properties

object{Object} A reference to layer.events.object.
element{DOMElement} A reference to layer.events.element.

Supported map event types

loadstartTriggered when layer loading starts.
loadendTriggered when layer loading ends.
loadcancelTriggered when layer loading is canceled.
visibilitychangedTriggered when layer visibility is changed.
moveTriggered when layer moves (triggered with every mousemove during a drag).
moveendTriggered when layer is done moving, object passed as argument has a zoomChanged boolean property which tells that the zoom has changed.
+ +

Properties

+ + + +

map

{OpenLayers.Map} This variable is set when the layer is added to the map, via the accessor function setMap().

+ +

isBaseLayer

{Boolean} Whether or not the layer is a base layer.  This should be set individually by all subclasses.  Default is false

+ +

alpha

{Boolean} The layer’s images have an alpha channel.  Default is false.

+ +

displayInLayerSwitcher

{Boolean} Display the layer’s name in the layer switcher.  Default is true.

+ +

visibility

{Boolean} The layer should be displayed in the map.  Default is true.

+ +

attribution

{String} Attribution string, displayed when an OpenLayers.Control.Attribution has been added to the map.

+ +

inRange

{Boolean} The current map resolution is within the layer’s min/max range.  This is set in OpenLayers.Map.setCenter whenever the zoom changes.

+ +

imageOffset

{OpenLayers.Pixel} For layers with a gutter, the image offset represents displacement due to the gutter.

+ +

options

{Object} An optional object whose properties will be set on the layer.  Any of the layer properties can be set as a property of the options object and sent to the constructor when the layer is created.

+ +

eventListeners

{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.  Object structure must be a listeners object as shown in the example for the events.on method.

+ +

gutter

{Integer} Determines the width (in pixels) of the gutter around image tiles to ignore.  By setting this property to a non-zero value, images will be requested that are wider and taller than the tile size by a value of 2 x gutter.  This allows artifacts of rendering at tile edges to be ignored.  Set a gutter value that is equal to half the size of the widest symbol that needs to be displayed.  Defaults to zero.  Non-tiled layers always have zero gutter.

+ +

projection

{OpenLayers.Projection} or {String} Set in the layer options to override the default projection string this layer - also set maxExtent, maxResolution, and units if appropriate.  Can be either a string or an OpenLayers.Projection object when created -- will be converted to an object when setMap is called if a string is passed.

+ +

units

{String} The layer map units.  Defaults to ‘degrees’.  Possible values are ‘degrees’ (or ‘dd’), ‘m’, ‘ft’, ‘km’, ‘mi’, ‘inches’.

+ +

scales

{Array} An array of map scales in descending order.  The values in the array correspond to the map scale denominator.  Note that these values only make sense if the display (monitor) resolution of the client is correctly guessed by whomever is configuring the application.  In addition, the units property must also be set.  Use resolutions instead wherever possible.

+ +

resolutions

{Array} A list of map resolutions (map units per pixel) in descending order.  If this is not set in the layer constructor, it will be set based on other resolution related properties (maxExtent, maxResolution, maxScale, etc.).

+ +

maxExtent

{OpenLayers.Bounds} The center of these bounds will not stray outside of the viewport extent during panning.  In addition, if displayOutsideMaxExtent is set to false, data will not be requested that falls completely outside of these bounds.

+ + + +

maxResolution

{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.  Specify a different value in the layer options if you are not using a geographic projection and displaying the whole world.

+ +

minResolution

{Float}

+ +

numZoomLevels

{Integer}

+ +

minScale

{Float}

+ +

maxScale

{Float}

+ +

displayOutsideMaxExtent

{Boolean} Request map tiles that are completely outside of the max extent for this layer.  Defaults to false.

+ +

wrapDateLine

{Boolean} #487 for more info.

+ +

transitionEffect

{String} The transition effect to use when the map is panned or zoomed.

There are currently two supported values

  • null No transition effect (the default).
  • resize Existing tiles are resized on zoom to provide a visual effect of the zoom having taken place immediately.  As the new tiles become available, they are drawn over top of the resized tiles.
+ +

SUPPORTED_TRANSITIONS

{Array} An immutable (that means don’t change it!) list of supported transitionEffect values.

+ +

Constructor

+ +

OpenLayers.Layer

Parameters

name{String} The layer name
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

destroy

destroy: function(setNewBaseLayer)

Destroy is a destructor: this is to alleviate cyclic references which the Javascript garbage cleaner can not take care of on its own.

Parameters

setNewBaseLayer{Boolean} Set a new base layer when this layer has been destroyed.  Default is true.
+ +

clone

clone: function (obj)

Parameters

obj{OpenLayers.Layer} The layer to be cloned

Returns

{OpenLayers.Layer} An exact clone of this OpenLayers.Layer

+ +

setName

setName: function(newName)

Sets the new layer name for this layer.  Can trigger a changelayer event on the map.

Parameters

newName{String} The new name.
+ +

addOptions

addOptions: function (newOptions)

Parameters

newOptions{Object}
+ +

onMapResize

onMapResize: function()

This function can be implemented by subclasses

+ +

redraw

redraw: function()

Redraws the layer.  Returns true if the layer was redrawn, false if not.

Returns

{Boolean} The layer was redrawn.

+ +

moveTo

moveTo:function(bounds,
zoomChanged,
dragging)

Parameters

bound{OpenLayers.Bounds}
zoomChanged{Boolean} Tells when zoom has changed, as layers have to do some init work in that case.
dragging{Boolean}
+ +

setMap

setMap: function(map)

Set the map property for the layer.  This is done through an accessor so that subclasses can override this and take special action once they have their map variable set.

Here we take care to bring over any of the necessary default properties from the map.

Parameters

map{OpenLayers.Map}
+ +

afterAdd

afterAdd: function()

Called at the end of the map.addLayer sequence.  At this point, the map will have a base layer.  To be overridden by subclasses.

+ +

removeMap

removeMap: function(map)

Just as setMap() allows each layer the possibility to take a personalized action on being added to the map, removeMap() allows each layer to take a personalized action on being removed from it.  For now, this will be mostly unused, except for the EventPane layer, which needs this hook so that it can remove the special invisible pane.

Parameters

map{OpenLayers.Map}
+ +

getImageSize

getImageSize: function()

Returns

{OpenLayers.Size} The size that the image should be, taking into account gutters.

+ +

setTileSize

setTileSize: function(size)

Set the tile size based on the map size.  This also sets layer.imageSize and layer.imageOffset for use by Tile.Image.

Parameters

size{OpenLayers.Size}
+ +

getVisibility

getVisibility: function()

Returns

{Boolean} The layer should be displayed (if in range).

+ +

setVisibility

setVisibility: function(visibility)

Set the visibility flag for the layer and hide/show & redraw accordingly.  Fire event unless otherwise specified

Note that visibility is no longer simply whether or not the layer’s style.display is set to “block”.  Now we store a ‘visibility’ state property on the layer class, this allows us to remember whether or not we desire for a layer to be visible.  In the case where the map’s resolution is out of the layer’s range, this desire may be subverted.

Parameters

visible{Boolean} Whether or not to display the layer (if in range)
+ +

display

display: function(display)

Hide or show the Layer

Parameters

display{Boolean}
+ +

calculateInRange

calculateInRange: function()

Returns

{Boolean} The layer is displayable at the current map’s current resolution.  Note that if ‘alwaysInRange’ is true for the layer, this function will always return true.

+ +

setIsBaseLayer

setIsBaseLayer: function(isBaseLayer)

Parameters

isBaseLayer{Boolean}
+ +

initResolutions

initResolutions: function()

This method’s responsibility is to set up the ‘resolutions’ array for the layer -- this array is what the layer will use to interface between the zoom levels of the map and the resolution display of the layer.

The user has several options that determine how the array is set up.

For a detailed explanation, see the following wiki from the openlayers.org homepage: http://trac.openlayers.org/wiki/SettingZoomLevels

+ +

getResolution

getResolution: function()

Returns

{Float} The currently selected resolution of the map, taken from the resolutions array, indexed by current zoom level.

+ +

getExtent

getExtent: function()

Returns

{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.

+ +

getZoomForExtent

getZoomForExtent: function(extent,
closest)

Parameters

bounds{OpenLayers.Bounds}
closest{Boolean} Find the zoom level that most closely fits the specified bounds.  Note that this may result in a zoom that does not exactly contain the entire extent.  Default is false.

Returns

{Integer} The index of the zoomLevel (entry in the resolutions array) for the passed-in extent.  We do this by calculating the ideal resolution for the given extent (based on the map size) and then calling getZoomForResolution(), passing along the ‘closest’ parameter.

+ +

getDataExtent

getDataExtent: function ()

Calculates the max extent which includes all of the data for the layer.  This function is to be implemented by subclasses.

Returns

{OpenLayers.Bounds}

+ +

getResolutionForZoom

getResolutionForZoom: function(zoom)

Parameter

zoom{Float}

Returns

{Float} A suitable resolution for the specified zoom.

+ +

getZoomForResolution

getZoomForResolution: function(resolution,
closest)

Parameters

resolution{Float}
closest{Boolean} Find the zoom level that corresponds to the absolute closest resolution, which may result in a zoom whose corresponding resolution is actually smaller than we would have desired (if this is being called from a getZoomForExtent() call, then this means that the returned zoom index might not actually contain the entire extent specified... but it’ll be close).  Default is false.

Returns

{Integer} The index of the zoomLevel (entry in the resolutions array) that corresponds to the best fit resolution given the passed in value and the ‘closest’ specification.

+ +

getLonLatFromViewPortPx

getLonLatFromViewPortPx: function (viewPortPx)

Parameters

viewPortPx{OpenLayers.Pixel}

Returns

{OpenLayers.LonLat} An OpenLayers.LonLat which is the passed-in view port OpenLayers.Pixel, translated into lon/lat by the layer.

+ +

getViewPortPxFromLonLat

getViewPortPxFromLonLat: function (lonlat)

Returns a pixel location given a map location.  This method will return fractional pixel values.

Parameters

lonlat{OpenLayers.LonLat}

Returns

{OpenLayers.Pixel} An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat,translated into view port pixels.

+ +

setOpacity

setOpacity: function(opacity)

Sets the opacity for the entire layer (all images)

Parameter

opacity{Float}
+ +

getZIndex

getZIndex: function ()

Returns

{Integer} the z-index of this layer

+ +

setZIndex

setZIndex: function (zIndex)

Parameters

zIndex{Integer}
+ +

adjustBounds

adjustBounds: function (bounds)

This function will take a bounds, and if wrapDateLine option is set on the layer, it will return a bounds which is wrapped around the world.  We do not wrap for bounds which cross the maxExtent.left/right, only bounds which are entirely to the left or entirely to the right.

Parameters

bounds{OpenLayers.Bounds}
+ +
+ + + + + + + + + + +
Instances of OpenLayers.Map are interactive maps embedded in a web page.
The attribution control adds attribution from layers to the map display.
This class represents a screen coordinate, in x and y coordinates
on: function(object)
Convenience method for registering listeners with a common scope.
Class for coordinate transforms between coordinate systems.
Contains convenience functions for string manipulation.
Instances of this class represent bounding boxes.
destroy: function(setNewBaseLayer)
Destroy is a destructor: this is to alleviate cyclic references which the Javascript garbage cleaner can not take care of on its own.
clone: function (obj)
setName: function(newName)
Sets the new layer name for this layer.
addOptions: function (newOptions)
onMapResize: function()
This function can be implemented by subclasses
redraw: function()
Redraws the layer.
moveTo:function(bounds,
zoomChanged,
dragging)
setMap: function(map)
Set the map property for the layer.
afterAdd: function()
Called at the end of the map.addLayer sequence.
removeMap: function(map)
Just as setMap() allows each layer the possibility to take a personalized action on being added to the map, removeMap() allows each layer to take a personalized action on being removed from it.
getImageSize: function()
{OpenLayers.Size} The size that the image should be, taking into account gutters.
Instances of this class represent a width/height pair
setTileSize: function(size)
Set the tile size based on the map size.
getVisibility: function()
{Boolean} The layer should be displayed (if in range).
setVisibility: function(visibility)
Set the visibility flag for the layer and hide/show & redraw accordingly.
display: function(display)
Hide or show the Layer
calculateInRange: function()
{Boolean} The layer is displayable at the current map’s current resolution.
setIsBaseLayer: function(isBaseLayer)
initResolutions: function()
This method’s responsibility is to set up the ‘resolutions’ array for the layer -- this array is what the layer will use to interface between the zoom levels of the map and the resolution display of the layer.
getResolution: function()
{Float} The currently selected resolution of the map, taken from the resolutions array, indexed by current zoom level.
getExtent: function()
{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getZoomForExtent: function(extent,
closest)
getDataExtent: function ()
Calculates the max extent which includes all of the data for the layer.
getResolutionForZoom: function(zoom)
getZoomForResolution: function(resolution,
closest)
getLonLatFromViewPortPx: function (viewPortPx)
getViewPortPxFromLonLat: function (lonlat)
Returns a pixel location given a map location.
setOpacity: function(opacity)
Sets the opacity for the entire layer (all images)
getZIndex: function ()
{Integer} the z-index of this layer
setZIndex: function (zIndex)
adjustBounds: function (bounds)
This function will take a bounds, and if wrapDateLine option is set on the layer, it will return a bounds which is wrapped around the world.
setCenter: function(lonlat,
zoom,
dragging,
forceZoomChange)
Set the map center (and optionally, the zoom level).
{Array} A list of map resolutions (map units per pixel) in descending order.
{Boolean} Request map tiles that are completely outside of the max extent for this layer.
This class represents a longitude and latitude pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/ArcGIS93Rest-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/ArcGIS93Rest-js.html new file mode 100644 index 0000000..545b339 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/ArcGIS93Rest-js.html @@ -0,0 +1,71 @@ + + +OpenLayers.Layer.ArcGIS93Rest - OpenLayers + + + + + + + + + +

OpenLayers.Layer.ArcGIS93Rest

Instances of OpenLayers.Layer.ArcGIS93Rest are used to display data from ESRI ArcGIS Server 9.3 (and up?)  Mapping Services using the REST API.  Create a new ArcGIS93Rest layer with the OpenLayers.Layer.ArcGIS93Rest constructor.  More detail on the REST API is available at http://sampleserver1.arcgisonline.com/ArcGIS/SDK/REST/index.html ; specifically, the URL provided to this layer should be an export service URL: http://sampleserver1.arcgisonline.com/ArcGIS/SDK/REST/export.html

Inherits from

Summary
OpenLayers.Layer.ArcGIS93RestInstances of OpenLayers.Layer.ArcGIS93Rest are used to display data from ESRI ArcGIS Server 9.3 (and up?)
Constants
DEFAULT_PARAMS{Object} Hashtable of default parameter key/value pairs
Properties
isBaseLayer{Boolean} Default is true for ArcGIS93Rest layer
Constructor
OpenLayers.Layer.ArcGIS93RestCreate a new ArcGIS93Rest layer object.
Functions
destroyDestroy this layer
cloneCreate a clone of this layer
getURLReturn an image url this layer.
setLayerFilteraddTile creates a tile, initializes it, and adds it to the layer div.
clearLayerFilterClears layer filters, either from a specific layer, or all of them.
mergeNewParamsCatch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
addTileaddTile creates a tile, initializes it, and adds it to the layer div.
+ +

Constants

+ +

DEFAULT_PARAMS

{Object} Hashtable of default parameter key/value pairs

+ +

Properties

+ +

isBaseLayer

{Boolean} Default is true for ArcGIS93Rest layer

+ +

Constructor

+ +

OpenLayers.Layer.ArcGIS93Rest

Create a new ArcGIS93Rest layer object.

Example

var arcims = new OpenLayers.Layer.ArcGIS93Rest("MyName",
+                                   "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer",
+                                   {
+                                     layers: "0,1,2"
+                                   });

Parameters

name{String} A name for the layer
url{String} Base url for the ArcGIS server REST service
options{Object} An object with key/value pairs representing the options and option values.  Valid Options: format: {String} MIME type of desired image type. layers: {String} Comma-separated list of layers to display. srs: {String} Projection ID.
+ +

Functions

+ +

destroy

destroy: function()

Destroy this layer

+ +

clone

clone: function (obj)

Create a clone of this layer

Returns

{OpenLayers.Layer.ArcGIS93Rest} An exact clone of this layer

+ +

getURL

getURL: function (bounds)

Return an image url this layer.

Parameters

bounds{OpenLayers.Bounds} A bounds representing the bbox for the request.

Returns

{String} A string with the map image’s url.

+ +

setLayerFilter

setLayerFilter: function (id,
queryDef)

addTile creates a tile, initializes it, and adds it to the layer div.

Parameters

id{String} The id of the layer to which the filter applies.
queryDef{String} A sql-ish query filter, for more detail see the ESRI documentation at http://sampleserver1.arcgisonline.com/ArcGIS/SDK/REST/export.html
+ +

clearLayerFilter

clearLayerFilter: function (id)

Clears layer filters, either from a specific layer, or all of them.

Parameters

id{String} The id of the layer from which to remove any filter.  If unspecified/blank, all filters will be removed.
+ +

mergeNewParams

mergeNewParams:function(newParams)

Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.

Once params have been changed, the tiles will be reloaded with the new parameters.

Parameters

newParams{Object} Hashtable of new params to use
+ +

addTile

addTile:function(bounds,
position)

addTile creates a tile, initializes it, and adds it to the layer div.

Parameters

bounds{OpenLayers.Bounds}
position{OpenLayers.Pixel}

Returns

{OpenLayers.Tile.Image} The added OpenLayers.Tile.Image

+ +
+ + + + + + + + + + +
destroy: function()
Destroy this layer
clone: function (obj)
Create a clone of this layer
getURL: function (bounds)
Return an image url this layer.
setLayerFilter: function (id,
queryDef)
addTile creates a tile, initializes it, and adds it to the layer div.
clearLayerFilter: function (id)
Clears layer filters, either from a specific layer, or all of them.
mergeNewParams:function(newParams)
Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
Create a new ArcGIS93Rest layer object.
Base class for layers that use a lattice of tiles.
Instances of this class represent bounding boxes.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/ArcIMS-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/ArcIMS-js.html new file mode 100644 index 0000000..cba40f2 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/ArcIMS-js.html @@ -0,0 +1,99 @@ + + +OpenLayers.Layer.ArcIMS - OpenLayers + + + + + + + + + +

OpenLayers.Layer.ArcIMS

Instances of OpenLayers.Layer.ArcIMS are used to display data from ESRI ArcIMS Mapping Services.  Create a new ArcIMS layer with the OpenLayers.Layer.ArcIMS constructor.

Inherits from

Summary
OpenLayers.Layer.ArcIMSInstances of OpenLayers.Layer.ArcIMS are used to display data from ESRI ArcIMS Mapping Services.
Constants
DEFAULT_PARAMS{Object} Default query string parameters.
Properties
tileSize{OpenLayers.Size} Size for tiles.
featureCoordSys{String} Code for feature coordinate system.
filterCoordSys{String} Code for filter coordinate system.
layers{Array} An array of objects with layer properties.
async{Boolean} Request images asynchronously.
name{String} Layer name.
isBaseLayer{Boolean} The layer is a base layer.
Constants
DEFAULT_OPTIONS{Object} Default layers properties.
Constructor
OpenLayers.Layer.ArcIMSCreate a new ArcIMS layer object.
Functions
destroyDestroy this layer
getURLReturn an image url this layer.
getURLasyncGet an image url this layer asynchronously, and execute a callback when the image url is generated.
getUrlOrImageExtract a url or image from the ArcXML image output.
setLayerQuerySet the query definition on this layer.
getFeatureInfoGet feature information from ArcIMS.
addTileaddTile creates a tile, initializes it, and adds it to the layer div.
+ +

Constants

+ +

DEFAULT_PARAMS

{Object} Default query string parameters.

+ +

Properties

+ +

tileSize

{OpenLayers.Size} Size for tiles.  Default is 512x512.

+ +

featureCoordSys

{String} Code for feature coordinate system.  Default is “4326”.

+ +

filterCoordSys

{String} Code for filter coordinate system.  Default is “4326”.

+ +

layers

{Array} An array of objects with layer properties.

+ +

async

{Boolean} Request images asynchronously.  Default is true.

+ +

name

{String} Layer name.  Default is “ArcIMS”.

+ +

isBaseLayer

{Boolean} The layer is a base layer.  Default is true.

+ +

Constants

+ +

DEFAULT_OPTIONS

{Object} Default layers properties.

+ +

Constructor

+ +

OpenLayers.Layer.ArcIMS

Create a new ArcIMS layer object.

Example

var arcims = new OpenLayers.Layer.ArcIMS(
+    "Global Sample",
+    "http://sample.avencia.com/servlet/com.esri.esrimap.Esrimap",
+    {
+        service: "OpenLayers_Sample",
+        layers: [
+            // layers to manipulate
+            {id: "1", visible: true}
+        ]
+    }
+);

Parameters

name{String} A name for the layer
url{String} Base url for the ArcIMS server
options{Object} Optional object with properties to be set on the layer.
+ +

Functions

+ +

destroy

destroy: function()

Destroy this layer

+ +

getURL

getURL: function(bounds)

Return an image url this layer.

Parameters

bounds{OpenLayers.Bounds} A bounds representing the bbox for the request.

Returns

{String} A string with the map image’s url.

+ +

getURLasync

getURLasync: function(bounds,
scope,
prop,
callback)

Get an image url this layer asynchronously, and execute a callback when the image url is generated.

Parameters

bounds{OpenLayers.Bounds} A bounds representing the bbox for the request.
scope{Object} The scope of the callback method.
prop{String} The name of the property in the scoped object to recieve the image url.
callback{Function} Function to call when image url is retrieved.
+ +

getUrlOrImage

getUrlOrImage: function(output)

Extract a url or image from the ArcXML image output.

Parameters

output{Object} The image.output property of the object returned from the ArcXML format read method.

Returns

{String} A URL for an image (potentially with the data protocol).

+ +

setLayerQuery

setLayerQuery: function(id,
querydef)

Set the query definition on this layer.  Query definitions are used to render parts of the spatial data in an image, and can be used to filter features or layers in the ArcIMS service.

Parameters

id{String} The ArcIMS layer ID.
queryDef{Object} The query definition to apply to this layer.
+ +

getFeatureInfo

getFeatureInfo: function(geometry,
layer,
options)

Get feature information from ArcIMS.  Using the applied geometry, apply the options to the query (buffer, area/envelope intersection), and query the ArcIMS service.

A note about accuracy

ArcIMS interprets the accuracy attribute in feature requests to be something like the ‘modulus’ operator on feature coordinates, applied to the database geometry of the feature.  It doesn’t round, so your feature coordinates may be up to (1 x accuracy) offset from the actual feature coordinates.  If the accuracy of the layer is not specified, the accuracy will be computed to be approximately 1 feature coordinate per screen pixel.

Parameters

geometry{OpenLayers.LonLat} or {OpenLayers.Geometry.Polygon} The geometry to use when making the query.  This should be a closed polygon for behavior approximating a free selection.
layer{Object} The ArcIMS layer definition.  This is an anonymous object that looks like:
{
+    id: "ArcXML layer ID",  // the ArcXML layer ID
+    query: {
+        where: "STATE = 'PA'",  // the where clause of the query
+        accuracy: 100           // the accuracy of the returned feature
+    }
+}
options{Object} Object with non-default properties to set on the layer.  Supported properties are buffer, callback, scope, and any other properties applicable to the ArcXML format.  Set the ‘callback’ and ‘scope’ for an object and function to recieve the parsed features from ArcIMS.
+ +

addTile

addTile:function(bounds,
position)

addTile creates a tile, initializes it, and adds it to the layer div.

Parameters

bounds{OpenLayers.Bounds}
position{OpenLayers.Pixel}

Returns

{OpenLayers.Tile.Image} The added image tile.

+ +
+ + + + + + + + + + +
Instances of this class represent a width/height pair
destroy: function()
Destroy this layer
getURL: function(bounds)
Return an image url this layer.
getURLasync: function(bounds,
scope,
prop,
callback)
Get an image url this layer asynchronously, and execute a callback when the image url is generated.
getUrlOrImage: function(output)
Extract a url or image from the ArcXML image output.
setLayerQuery: function(id,
querydef)
Set the query definition on this layer.
getFeatureInfo: function(geometry,
layer,
options)
Get feature information from ArcIMS.
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
Create a new ArcIMS layer object.
Base class for layers that use a lattice of tiles.
Instances of this class represent bounding boxes.
This class represents a longitude and latitude pair
Polygon is a collection of Geometry.LinearRings.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/Boxes-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/Boxes-js.html new file mode 100644 index 0000000..5c3dd19 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/Boxes-js.html @@ -0,0 +1,49 @@ + + +OpenLayers.Layer.Boxes - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Boxes

Draw divs as ‘boxes’ on the layer.

Inherits from

Summary
OpenLayers.Layer.BoxesDraw divs as ‘boxes’ on the layer.
Constructor
OpenLayers.Layer.Boxes
Functions
drawMarkerCalculate the pixel location for the marker, create it, and add it to the layer’s div
removeMarker
+ +

Constructor

+ +

OpenLayers.Layer.Boxes

Parameters

name{String}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

drawMarker

drawMarker: function(marker)

Calculate the pixel location for the marker, create it, and add it to the layer’s div

Parameters

marker{OpenLayers.Marker.Box}
+ +

removeMarker

removeMarker: function(marker)

Parameters

marker{OpenLayers.Marker.Box}
+ +
+ + + + + + + + + + +
drawMarker: function(marker)
Calculate the pixel location for the marker, create it, and add it to the layer’s div
removeMarker: function(marker)
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/EventPane-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/EventPane-js.html new file mode 100644 index 0000000..3d7bbb5 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/EventPane-js.html @@ -0,0 +1,85 @@ + + +OpenLayers.Layer.EventPane - OpenLayers + + + + + + + + + +

OpenLayers.Layer.EventPane

Base class for 3rd party layers.  Create a new event pane layer with the OpenLayers.Layer.EventPane constructor.

Inherits from

Summary
OpenLayers.Layer.EventPaneBase class for 3rd party layers.
Properties
smoothDragPan{Boolean} smoothDragPan determines whether non-public/internal API methods are used for better performance while dragging EventPane layers.
isBaseLayer{Boolean} EventPaned layers are always base layers, by necessity.
isFixed{Boolean} EventPaned layers are fixed by default.
pane{DOMElement} A reference to the element that controls the events.
mapObject{Object} This is the object which will be used to load the 3rd party library in the case of the google layer, this will be of type GMap, in the case of the ve layer, this will be of type VEMap
Constructor
OpenLayers.Layer.EventPaneCreate a new event pane layer
Functions
destroyDeconstruct this layer.
setMapSet the map property for the layer.
removeMapOn being removed from the map, we’ll like to remove the invisible ‘pane’ div that we added to it on creation.
loadWarningMessageIf we can’t load the map lib, then display an error message to the user and tell them where to go for help.
getWarningHTMLTo be implemented by subclasses.
displaySet the display on the pane
setZIndexSet the z-index order for the pane.
moveToHandle calls to move the layer.
getLonLatFromViewPortPxGet a map location from a pixel location
getViewPortPxFromLonLatGet a pixel location from a map location
getOLLonLatFromMapObjectLonLatGet an OL style map location from a 3rd party style map location
getMapObjectLonLatFromOLLonLatGet a 3rd party map location from an OL map location.
getOLPixelFromMapObjectPixelGet an OL pixel location from a 3rd party pixel location.
getMapObjectPixelFromOLPixelGet a 3rd party pixel location from an OL pixel location
+ +

Properties

+ +

smoothDragPan

{Boolean} smoothDragPan determines whether non-public/internal API methods are used for better performance while dragging EventPane layers.  When not in sphericalMercator mode, the smoother dragging doesn’t actually move north/south directly with the number of pixels moved, resulting in a slight offset when you drag your mouse north south with this option on.  If this visual disparity bothers you, you should turn this option off, or use spherical mercator.  Default is on.

+ +

isBaseLayer

{Boolean} EventPaned layers are always base layers, by necessity.

+ +

isFixed

{Boolean} EventPaned layers are fixed by default.

+ +

pane

{DOMElement} A reference to the element that controls the events.

+ +

mapObject

{Object} This is the object which will be used to load the 3rd party library in the case of the google layer, this will be of type GMap, in the case of the ve layer, this will be of type VEMap

+ +

Constructor

+ +

OpenLayers.Layer.EventPane

Create a new event pane layer

Parameters

name{String}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

destroy

destroy: function()

Deconstruct this layer.

+ +

setMap

setMap: function(map)

Set the map property for the layer.  This is done through an accessor so that subclasses can override this and take special action once they have their map variable set.

Parameters

map{OpenLayers.Map}
+ +

removeMap

removeMap: function(map)

On being removed from the map, we’ll like to remove the invisible ‘pane’ div that we added to it on creation.

Parameters

map{OpenLayers.Map}
+ +

loadWarningMessage

loadWarningMessage:function()

If we can’t load the map lib, then display an error message to the user and tell them where to go for help.

This function sets up the layout for the warning message.  Each 3rd party layer must implement its own getWarningHTML() function to provide the actual warning message.

+ +

getWarningHTML

getWarningHTML:function()

To be implemented by subclasses.

Returns

{String} String with information on why layer is broken, how to get it working.

+ +

display

display: function(display)

Set the display on the pane

Parameters

display{Boolean}
+ +

setZIndex

setZIndex: function (zIndex)

Set the z-index order for the pane.

Parameters

zIndex{int}
+ +

moveTo

moveTo:function(bounds,
zoomChanged,
dragging)

Handle calls to move the layer.

Parameters

bounds{OpenLayers.Bounds}
zoomChanged{Boolean}
dragging{Boolean}
+ +

getLonLatFromViewPortPx

getLonLatFromViewPortPx: function (viewPortPx)

Get a map location from a pixel location

Parameters

viewPortPx{OpenLayers.Pixel}

Returns

{OpenLayers.LonLat} An OpenLayers.LonLat which is the passed-in view port OpenLayers.Pixel, translated into lon/lat by map lib If the map lib is not loaded or not centered, returns null

+ +

getViewPortPxFromLonLat

getViewPortPxFromLonLat: function (lonlat)

Get a pixel location from a map location

Parameters

lonlat{OpenLayers.LonLat}

Returns

{OpenLayers.Pixel} An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat, translated into view port pixels by map lib If map lib is not loaded or not centered, returns null

+ +

getOLLonLatFromMapObjectLonLat

getOLLonLatFromMapObjectLonLat: function(moLonLat)

Get an OL style map location from a 3rd party style map location

Parameters moLonLat - {Object}

Returns

{OpenLayers.LonLat} An OpenLayers.LonLat, translated from the passed in MapObject LonLat Returns null if null value is passed in

+ +

getMapObjectLonLatFromOLLonLat

getMapObjectLonLatFromOLLonLat: function(olLonLat)

Get a 3rd party map location from an OL map location.

Parameters

olLonLat{OpenLayers.LonLat}

Returns

{Object} A MapObject LonLat, translated from the passed in OpenLayers.LonLat Returns null if null value is passed in

+ +

getOLPixelFromMapObjectPixel

getOLPixelFromMapObjectPixel: function(moPixel)

Get an OL pixel location from a 3rd party pixel location.

Parameters

moPixel{Object}

Returns

{OpenLayers.Pixel} An OpenLayers.Pixel, translated from the passed in MapObject Pixel Returns null if null value is passed in

+ +

getMapObjectPixelFromOLPixel

getMapObjectPixelFromOLPixel: function(olPixel)

Get a 3rd party pixel location from an OL pixel location

Parameters

olPixel{OpenLayers.Pixel}

Returns

{Object} A MapObject Pixel, translated from the passed in OpenLayers.Pixel Returns null if null value is passed in

+ +
+ + + + + + + + + + +
destroy: function()
Deconstruct this layer.
setMap: function(map)
Set the map property for the layer.
removeMap: function(map)
On being removed from the map, we’ll like to remove the invisible ‘pane’ div that we added to it on creation.
loadWarningMessage:function()
If we can’t load the map lib, then display an error message to the user and tell them where to go for help.
getWarningHTML:function()
To be implemented by subclasses.
display: function(display)
Set the display on the pane
setZIndex: function (zIndex)
Set the z-index order for the pane.
moveTo:function(bounds,
zoomChanged,
dragging)
Handle calls to move the layer.
getLonLatFromViewPortPx: function (viewPortPx)
Get a map location from a pixel location
getViewPortPxFromLonLat: function (lonlat)
Get a pixel location from a map location
getOLLonLatFromMapObjectLonLat: function(moLonLat)
Get an OL style map location from a 3rd party style map location
getMapObjectLonLatFromOLLonLat: function(olLonLat)
Get a 3rd party map location from an OL map location.
getOLPixelFromMapObjectPixel: function(moPixel)
Get an OL pixel location from a 3rd party pixel location.
getMapObjectPixelFromOLPixel: function(olPixel)
Get a 3rd party pixel location from an OL pixel location
Create a new event pane layer
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Instances of this class represent bounding boxes.
This class represents a screen coordinate, in x and y coordinates
This class represents a longitude and latitude pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/FixedZoomLevels-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/FixedZoomLevels-js.html new file mode 100644 index 0000000..e131cb7 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/FixedZoomLevels-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Layer.FixedZoomLevels - OpenLayers + + + + + + + + + +

OpenLayers.Layer.FixedZoomLevels

Some Layers will already have established zoom levels (like google or ve).  Instead of trying to determine them and populate a resolutions[] Array with those values, we will hijack the resolution functionality here.

When you subclass FixedZoomLevels

The initResolutions() call gets nullified, meaning no resolutions[] array is set up.  Which would be a big problem getResolution() in Layer, since it merely takes map.zoom and indexes into resolutions[]... but....

The getResolution() call is also overridden.  Instead of using the resolutions[] array, we simply calculate the current resolution based on the current extent and the current map size.  But how will we be able to calculate the current extent without knowing the resolution...?

The getExtent() function is also overridden.  Instead of calculating extent based on the center point and the current resolution, we instead calculate the extent by getting the lonlats at the top-left and bottom-right by using the getLonLatFromViewPortPx() translation function, taken from the pixel locations (0,0) and the size of the map.  But how will we be able to do lonlat-px translation without resolution....?

The getZoomForResolution() method is overridden.  Instead of indexing into the resolutions[] array, we call OpenLayers.Layer.getExent(), passing in the desired resolution.  With this extent, we then call getZoomForExtent()

Whenever you implement a layer using OpenLayers.Layer.FixedZoomLevels, it is your responsibility to provide the following three functions:

  • getLonLatFromViewPortPx
  • getViewPortPxFromLonLat
  • getZoomForExtent

...those three functions should generally be provided by any reasonable API that you might be working from.

Summary
OpenLayers.Layer.FixedZoomLevelsSome Layers will already have established zoom levels (like google or ve).
Constructor
OpenLayers.Layer.FixedZoomLevelsCreate a new fixed zoom levels layer.
Functions
initResolutionsPopulate the resolutions array
getResolutionGet the current map resolution
getExtentCalculates using px-> lonlat translation functions on tl and br corners of viewport
getZoomForResolutionGet the zoom level for a given resolution
getOLZoomFromMapObjectZoomGet the OL zoom index from the map object zoom level
getMapObjectZoomFromOLZoomGet the map object zoom level from the OL zoom level
+ +

Constructor

+ +

OpenLayers.Layer.FixedZoomLevels

Create a new fixed zoom levels layer.

+ +

Functions

+ +

initResolutions

initResolutions: function()

Populate the resolutions array

+ +

getResolution

getResolution: function()

Get the current map resolution

Returns

{Float} Map units per Pixel

+ +

getExtent

getExtent: function ()

Calculates using px-> lonlat translation functions on tl and br corners of viewport

Returns

{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.

+ +

getZoomForResolution

getZoomForResolution: function(resolution)

Get the zoom level for a given resolution

Parameters

resolution{Float}

Returns

{Integer} A suitable zoom level for the specified resolution.  If no baselayer is set, returns null.

+ +

getOLZoomFromMapObjectZoom

getOLZoomFromMapObjectZoom: function(moZoom)

Get the OL zoom index from the map object zoom level

Parameters

moZoom{Integer}

Returns

{Integer} An OpenLayers Zoom level, translated from the passed in zoom Returns null if null value is passed in

+ +

getMapObjectZoomFromOLZoom

getMapObjectZoomFromOLZoom: function(olZoom)

Get the map object zoom level from the OL zoom level

Parameters

olZoom{Integer}

Returns

{Integer} A MapObject level, translated from the passed in olZoom Returns null if null value is passed in

+ +
+ + + + + + + + + + +
initResolutions: function()
Populate the resolutions array
getResolution: function()
Get the current map resolution
getExtent: function ()
Calculates using px-> lonlat translation functions on tl and br corners of viewport
getZoomForResolution: function(resolution)
Get the zoom level for a given resolution
getOLZoomFromMapObjectZoom: function(moZoom)
Get the OL zoom index from the map object zoom level
getMapObjectZoomFromOLZoom: function(olZoom)
Get the map object zoom level from the OL zoom level
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/GML-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/GML-js.html new file mode 100644 index 0000000..8df44c7 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/GML-js.html @@ -0,0 +1,65 @@ + + +OpenLayers.Layer.GML - OpenLayers + + + + + + + + + +

OpenLayers.Layer.GML

Create a vector layer by parsing a GML file.  The GML file is passed in as a parameter.

Inherits from

Summary
OpenLayers.Layer.GMLCreate a vector layer by parsing a GML file.
Properties
loaded{Boolean} Flag for whether the GML data has been loaded yet.
format{OpenLayers.Format} The format you want the data to be parsed with.
formatOptions{Object} Hash of options which should be passed to the format when it is created.
Constructor
OpenLayers.Layer.GMLLoad and parse a single file on the web, according to the format provided via the ‘format’ option, defaulting to GML.
Functions
setVisibilitySet the visibility flag for the layer and hide/show&redraw accordingly.
moveToIf layer is visible and GML has not been loaded, load GML, then load GML and call OpenLayers.Layer.Vector.moveTo() to redraw at the new location.
loadGML
setUrlChange the URL and reload the GML
requestSuccessProcess GML after it has been loaded.
requestFailureProcess a failed loading of GML.
+ +

Properties

+ +

loaded

{Boolean} Flag for whether the GML data has been loaded yet.

+ +

format

{OpenLayers.Format} The format you want the data to be parsed with.

+ +

formatOptions

{Object} Hash of options which should be passed to the format when it is created.  Must be passed in the constructor.

+ +

Constructor

+ +

OpenLayers.Layer.GML

Load and parse a single file on the web, according to the format provided via the ‘format’ option, defaulting to GML.

Parameters

name{String}
url{String} URL of a GML file.
options{Object} Hashtable of extra options to tag onto the layer.
+ +

Functions

+ +

setVisibility

setVisibility: function(visibility,
noEvent)

Set the visibility flag for the layer and hide/show&redraw accordingly.  Fire event unless otherwise specified GML will be loaded if the layer is being made visible for the first time.

Parameters

visible{Boolean} Whether or not to display the layer (if in range)
noEvent{Boolean}
+ +

moveTo

moveTo:function(bounds,
zoomChanged,
minor)

If layer is visible and GML has not been loaded, load GML, then load GML and call OpenLayers.Layer.Vector.moveTo() to redraw at the new location.

Parameters

bounds{Object}
zoomChanged{Object}
minor{Object}
+ +

loadGML

loadGML: function()
+ +

setUrl

setUrl:function(url)

Change the URL and reload the GML

Parameters

url{String} URL of a GML file.
+ +

requestSuccess

requestSuccess:function(request)

Process GML after it has been loaded.  Called by initialise() and loadUrl() after the GML has been loaded.

Parameters

request{String}
+ +

requestFailure

requestFailure: function(request)

Process a failed loading of GML.  Called by initialise() and loadUrl() if there was a problem loading GML.

Parameters

request{String}
+ +
+ + + + + + + + + + +
Base class for format reading/writing a variety of formats.
setVisibility: function(visibility,
noEvent)
Set the visibility flag for the layer and hide/show&redraw accordingly.
moveTo:function(bounds,
zoomChanged,
minor)
If layer is visible and GML has not been loaded, load GML, then load GML and call OpenLayers.Layer.Vector.moveTo() to redraw at the new location.
loadGML: function()
setUrl:function(url)
Change the URL and reload the GML
requestSuccess:function(request)
Process GML after it has been loaded.
requestFailure: function(request)
Process a failed loading of GML.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/GeoRSS-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/GeoRSS-js.html new file mode 100644 index 0000000..3394d64 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/GeoRSS-js.html @@ -0,0 +1,73 @@ + + +OpenLayers.Layer.GeoRSS - OpenLayers + + + + + + + + + +

OpenLayers.Layer.GeoRSS

Add GeoRSS Point features to your map.

Inherits from

Summary
OpenLayers.Layer.GeoRSSAdd GeoRSS Point features to your map.
Properties
location{String} store url of text file
features{Array(OpenLayers.Feature)}
formatOptions{Object} Hash of options which should be passed to the format when it is created.
selectedFeature{OpenLayers.Feature}
icon{OpenLayers.Icon}.
popupSize{OpenLayers.Size} This determines the size of GeoRSS popups.
useFeedTitle{Boolean} Set layer.name to the first <title> element in the feed.
Constructor
OpenLayers.Layer.GeoRSSCreate a GeoRSS Layer.
Functions
destroy
loadRSSStart the load of the RSS data.
moveToIf layer is visible and RSS has not been loaded, load RSS.
parseDataParse the data returned from the Events call.
markerClick
clearFeaturesDestroy all features in this layer.
+ +

Properties

+ +

location

{String} store url of text file

+ +

features

+ +

formatOptions

{Object} Hash of options which should be passed to the format when it is created.  Must be passed in the constructor.

+ +

selectedFeature

+ +

icon

{OpenLayers.Icon}.  This determines the Icon to be used on the map for this GeoRSS layer.

+ +

popupSize

{OpenLayers.Size} This determines the size of GeoRSS popups.  If not provided, defaults to 250px by 120px.

+ +

useFeedTitle

{Boolean} Set layer.name to the first <title> element in the feed.  Default is true.

+ +

Constructor

+ +

OpenLayers.Layer.GeoRSS

Create a GeoRSS Layer.

Parameters

name{String}
location{String}
options{Object}
+ +

Functions

+ +

destroy

destroy: function()
+ +

loadRSS

loadRSS: function()

Start the load of the RSS data.  Don’t do this when we first add the layer, since we may not be visible at any point, and it would therefore be a waste.

+ +

moveTo

moveTo:function(bounds,
zoomChanged,
minor)

If layer is visible and RSS has not been loaded, load RSS.

Parameters

bounds{Object}
zoomChanged{Object}
minor{Object}
+ +

parseData

parseData: function(ajaxRequest)

Parse the data returned from the Events call.

Parameters

ajaxRequest{OpenLayers.Request.XMLHttpRequest}
+ +

markerClick

markerClick: function(evt)

Parameters

evt{Event}
+ +

clearFeatures

clearFeatures: function()

Destroy all features in this layer.

+ +
+ + + + + + + + + + +
Features are combinations of geography and attributes.
The icon represents a graphical icon on the screen.
Instances of this class represent a width/height pair
destroy: function()
loadRSS: function()
Start the load of the RSS data.
moveTo:function(bounds,
zoomChanged,
minor)
If layer is visible and RSS has not been loaded, load RSS.
parseData: function(ajaxRequest)
Parse the data returned from the Events call.
markerClick: function(evt)
clearFeatures: function()
Destroy all features in this layer.
Standard-compliant (W3C) cross-browser implementation of the XMLHttpRequest object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/Google-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/Google-js.html new file mode 100644 index 0000000..7403911 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/Google-js.html @@ -0,0 +1,111 @@ + + +OpenLayers.Layer.Google - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Google

Inherits from

Summary
OpenLayers.Layer.Google
Constants
MIN_ZOOM_LEVEL{Integer} 0
MAX_ZOOM_LEVEL{Integer} 19
RESOLUTIONS{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
Properties
type{GMapType}
sphericalMercator{Boolean} Should the map act as a mercator-projected map? 
dragObject{GDraggableObject} Since 2.93, Google has exposed the ability to get the maps GDraggableObject.
termsOfUse{DOMElement} Div for Google’s copyright and terms of use link
poweredBy{DOMElement} Div for Google’s powered by logo and link
Constructor
OpenLayers.Layer.Google
Functions
loadMapObjectLoad the GMap and register appropriate event listeners.
setMapOverridden from EventPane because if a map type has been specified, we need to attach a listener for the first moveend -- this is how we will know that the map has been centered.
setMapTypeThe map has been centered, and a map type was specified, so we set the map type on the gmap object, then unregister the listener so that we dont keep doing this every time the map moves.
onMapResize
displayHide or show the layer
removeMapOn being removed from the map, also remove termsOfUse and poweredBy divs
getOLBoundsFromMapObjectBounds
getMapObjectBoundsFromOLBounds
addContainerPxFunctionHack-on function because GMAPS does not give it to us
getWarningHTML{String} String with information on why layer is broken, how to get it working.
setMapObjectCenterSet the mapObject to the specified center and zoom
dragPanMapObject
getMapObjectCenter{Object} The mapObject’s current center in Map Object format
getMapObjectZoom{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel
getMapObjectPixelFromMapObjectLonLat
getMapObjectZoomFromMapObjectBounds
getLongitudeFromMapObjectLonLat
getLatitudeFromMapObjectLonLat
getMapObjectLonLatFromLonLat
getXFromMapObjectPixel
getYFromMapObjectPixel
getMapObjectPixelFromXY
+ +

Constants

+ +

MIN_ZOOM_LEVEL

{Integer} 0

+ +

MAX_ZOOM_LEVEL

{Integer} 19

+ +

RESOLUTIONS

{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection

+ +

Properties

+ +

type

{GMapType}

+ +

sphericalMercator

{Boolean} Should the map act as a mercator-projected map?  This will cause all interactions with the map to be in the actual map projection, which allows support for vector drawing, overlaying other maps, etc.

+ +

dragObject

{GDraggableObject} Since 2.93, Google has exposed the ability to get the maps GDraggableObject.  We can now use this for smooth panning

+ +

termsOfUse

{DOMElement} Div for Google’s copyright and terms of use link

+ +

poweredBy

{DOMElement} Div for Google’s powered by logo and link

+ +

Constructor

+ +

OpenLayers.Layer.Google

Parameters

name{String} A name for the layer.
options{Object} An optional object whose properties will be set on the layer.
+ +

Functions

+ +

loadMapObject

loadMapObject:function()

Load the GMap and register appropriate event listeners.  If we can’t load GMap2, then display a warning message.

+ +

setMap

setMap: function(map)

Overridden from EventPane because if a map type has been specified, we need to attach a listener for the first moveend -- this is how we will know that the map has been centered.  Only once the map has been centered is it safe to change the gmap object’s map type.

Parameters

map{OpenLayers.Map}
+ +

setMapType

setMapType: function()

The map has been centered, and a map type was specified, so we set the map type on the gmap object, then unregister the listener so that we dont keep doing this every time the map moves.

+ +

onMapResize

onMapResize: function()

Parameters

evt{Event}
+ +

display

display: function(display)

Hide or show the layer

Parameters

display{Boolean}
+ +

removeMap

removeMap: function(map)

On being removed from the map, also remove termsOfUse and poweredBy divs

Parameters

map{OpenLayers.Map}
+ +

getOLBoundsFromMapObjectBounds

getOLBoundsFromMapObjectBounds: function(moBounds)

Parameters

moBounds{Object}

Returns

{OpenLayers.Bounds} An OpenLayers.Bounds, translated from the passed-in MapObject Bounds.  Returns null if null value is passed in.

+ +

getMapObjectBoundsFromOLBounds

getMapObjectBoundsFromOLBounds: function(olBounds)

Parameters

olBounds{OpenLayers.Bounds}

Returns

{Object} A MapObject Bounds, translated from olBounds Returns null if null value is passed in

+ +

addContainerPxFunction

addContainerPxFunction: function()

Hack-on function because GMAPS does not give it to us

Parameters

gLatLng{GLatLng}

Returns

{GPoint} A GPoint specifying gLatLng translated into “Container” coords

+ +

getWarningHTML

getWarningHTML:function()

Returns

{String} String with information on why layer is broken, how to get it working.

+ +

setMapObjectCenter

setMapObjectCenter: function(center,
zoom)

Set the mapObject to the specified center and zoom

Parameters

center{Object} MapObject LonLat format
zoom{int} MapObject zoom format
+ +

dragPanMapObject

dragPanMapObject: function(dX,
dY)

Parameters

dX{Integer}
dY{Integer}
+ +

getMapObjectCenter

getMapObjectCenter: function()

Returns

{Object} The mapObject’s current center in Map Object format

+ +

getMapObjectZoom

getMapObjectZoom: function()

Returns

{Integer} The mapObject’s current zoom, in Map Object format

+ +

getMapObjectLonLatFromMapObjectPixel

getMapObjectLonLatFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Object} MapObject LonLat translated from MapObject Pixel

+ +

getMapObjectPixelFromMapObjectLonLat

getMapObjectPixelFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Object} MapObject Pixel transtlated from MapObject LonLat

+ +

getMapObjectZoomFromMapObjectBounds

getMapObjectZoomFromMapObjectBounds: function(moBounds)

Parameters

moBounds{Object} MapObject Bounds format

Returns

{Object} MapObject Zoom for specified MapObject Bounds

+ +

getLongitudeFromMapObjectLonLat

getLongitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Longitude of the given MapObject LonLat

+ +

getLatitudeFromMapObjectLonLat

getLatitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Latitude of the given MapObject LonLat

+ +

getMapObjectLonLatFromLonLat

getMapObjectLonLatFromLonLat: function(lon,
lat)

Parameters

lon{Float}
lat{Float}

Returns

{Object} MapObject LonLat built from lon and lat params

+ +

getXFromMapObjectPixel

getXFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} X value of the MapObject Pixel

+ +

getYFromMapObjectPixel

getYFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} Y value of the MapObject Pixel

+ +

getMapObjectPixelFromXY

getMapObjectPixelFromXY: function(x,
y)

Parameters

x{Integer}
y{Integer}

Returns

{Object} MapObject Pixel from x and y parameters

+ +
+ + + + + + + + + + +
loadMapObject:function()
Load the GMap and register appropriate event listeners.
setMap: function(map)
Overridden from EventPane because if a map type has been specified, we need to attach a listener for the first moveend -- this is how we will know that the map has been centered.
setMapType: function()
The map has been centered, and a map type was specified, so we set the map type on the gmap object, then unregister the listener so that we dont keep doing this every time the map moves.
onMapResize: function()
display: function(display)
Hide or show the layer
removeMap: function(map)
On being removed from the map, also remove termsOfUse and poweredBy divs
getOLBoundsFromMapObjectBounds: function(moBounds)
getMapObjectBoundsFromOLBounds: function(olBounds)
addContainerPxFunction: function()
Hack-on function because GMAPS does not give it to us
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
dragPanMapObject: function(dX,
dY)
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectZoomFromMapObjectBounds: function(moBounds)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getXFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromXY: function(x,
y)
A mixin for layers that wraps up the pieces neccesary to have a coordinate conversion for working with commercial APIs which use a spherical mercator projection.
Base class for 3rd party layers.
Some Layers will already have established zoom levels (like google or ve).
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/Grid-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/Grid-js.html new file mode 100644 index 0000000..85c2009 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/Grid-js.html @@ -0,0 +1,99 @@ + + +OpenLayers.Layer.Grid - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Grid

Base class for layers that use a lattice of tiles.  Create a new grid layer with the OpenLayers.Layer.Grid constructor.

Inherits from

Summary
OpenLayers.Layer.GridBase class for layers that use a lattice of tiles.
Properties
tileSize{OpenLayers.Size}
grid{Array(Array(OpenLayers.Tile))} This is an array of rows, each row is an array of tiles.
singleTile{Boolean} Moves the layer into single-tile mode, meaning that one tile will be loaded.
ratio{Float} Used only when in single-tile mode, this specifies the ratio of the size of the single tile to the size of the map.
buffer{Integer} Used only when in gridded mode, this specifies the number of extra rows and colums of tiles on each side which will surround the minimum grid tiles to cover the map.
numLoadingTiles{Integer} How many tiles are still loading?
Constructor
OpenLayers.Layer.GridCreate a new grid layer
Functions
destroyDeconstruct the layer and clear the grid.
clearGridGo through and remove all tiles from the grid, calling destroy() on each of them to kill circular references
cloneCreate a clone of this layer
moveToThis function is called whenever the map is moved.
setTileSizeCheck if we are in singleTile mode and if so, set the size as a ratio of the map size (as specified by the layer’s ‘ratio’ property).
getGridBoundsDeprecated.
getTilesBoundsReturn the bounds of the tile grid.
initSingleTile
calculateGridLayoutGenerate parameters for the grid layout.
initGriddedTiles
spiralTileLoadStarts at the top right corner of the grid and proceeds in a spiral towards the center, adding tiles one at a time to the beginning of a queue.
addTileGives subclasses of Grid the opportunity to create an OpenLayer.Tile of their choosing.
addTileMonitoringHooksThis function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tiles.
removeTileMonitoringHooksThis function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks()
moveGriddedTiles
shiftRowShifty grid work
shiftColumnShift grid work in the other dimension
removeExcessTilesWhen the size of the map or the buffer changes, we may need to remove some excess rows and columns.
onMapResizeFor singleTile layers, this will set a new tile size according to the dimensions of the map pane.
getTileBoundsReturns The tile bounds for a layer given a pixel location.
+ +

Properties

+ +

tileSize

+ +

grid

{Array(Array(OpenLayers.Tile))} This is an array of rows, each row is an array of tiles.

+ +

singleTile

{Boolean} Moves the layer into single-tile mode, meaning that one tile will be loaded.  The tile’s size will be determined by the ‘ratio’ property.  When the tile is dragged such that it does not cover the entire viewport, it is reloaded.

+ +

ratio

{Float} Used only when in single-tile mode, this specifies the ratio of the size of the single tile to the size of the map.

+ +

buffer

{Integer} Used only when in gridded mode, this specifies the number of extra rows and colums of tiles on each side which will surround the minimum grid tiles to cover the map.

+ +

numLoadingTiles

{Integer} How many tiles are still loading?

+ +

Constructor

+ +

OpenLayers.Layer.Grid

Create a new grid layer

Parameters

name{String}
url{String}
params{Object}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

destroy

destroy: function()

Deconstruct the layer and clear the grid.

+ +

clearGrid

clearGrid:function()

Go through and remove all tiles from the grid, calling destroy() on each of them to kill circular references

+ +

clone

clone: function (obj)

Create a clone of this layer

Parameters

obj{Object} Is this ever used?

Returns

{OpenLayers.Layer.Grid} An exact clone of this OpenLayers.Layer.Grid

+ +

moveTo

moveTo:function(bounds,
zoomChanged,
dragging)

This function is called whenever the map is moved.  All the moving of actual ‘tiles’ is done by the map, but moveTo’s role is to accept a bounds and make sure the data that that bounds requires is pre-loaded.

Parameters

bounds{OpenLayers.Bounds}
zoomChanged{Boolean}
dragging{Boolean}
+ +

setTileSize

setTileSize: function(size)

Check if we are in singleTile mode and if so, set the size as a ratio of the map size (as specified by the layer’s ‘ratio’ property).

Parameters

size{OpenLayers.Size}
+ +

getGridBounds

getGridBounds: function()

Deprecated.  This function will be removed in 3.0.  Please use getTilesBounds() instead.

Returns

{OpenLayers.Bounds} A Bounds object representing the bounds of all the currently loaded tiles (including those partially or not at all seen onscreen)

+ +

getTilesBounds

getTilesBounds: function()

Return the bounds of the tile grid.

Returns

{OpenLayers.Bounds} A Bounds object representing the bounds of all the currently loaded tiles (including those partially or not at all seen onscreen).

+ +

initSingleTile

initSingleTile: function(bounds)

Parameters

bounds{OpenLayers.Bounds}
+ +

calculateGridLayout

calculateGridLayout: function(bounds,
extent,
resolution)

Generate parameters for the grid layout.  This

Parameters

bounds{<OpenLayers.Bound>}
extent{OpenLayers.Bounds}
resolution{Number}

Returns

Object containing properties tilelon, tilelat, tileoffsetlat, tileoffsetlat, tileoffsetx, tileoffsety

+ +

initGriddedTiles

initGriddedTiles:function(bounds)

Parameters

bounds{OpenLayers.Bounds}
+ +

spiralTileLoad

spiralTileLoad: function()

Starts at the top right corner of the grid and proceeds in a spiral towards the center, adding tiles one at a time to the beginning of a queue.

Once all the grid’s tiles have been added to the queue, we go back and iterate through the queue (thus reversing the spiral order from outside-in to inside-out), calling draw() on each tile.

+ +

addTile

addTile:function(bounds,
position)

Gives subclasses of Grid the opportunity to create an OpenLayer.Tile of their choosing.  The implementer should initialize the new tile and take whatever steps necessary to display it.

Parameters bounds - {OpenLayers.Bounds} position - {OpenLayers.Pixel}

Returns

{OpenLayers.Tile} The added OpenLayers.Tile

+ +

addTileMonitoringHooks

addTileMonitoringHooks: function(tile)

This function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tiles.

Parameters

tile{OpenLayers.Tile}
+ +

removeTileMonitoringHooks

removeTileMonitoringHooks: function(tile)

This function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks()

Parameters

tile{OpenLayers.Tile}
+ +

moveGriddedTiles

moveGriddedTiles: function(bounds)

Parameters

bounds{OpenLayers.Bounds}
+ +

shiftRow

shiftRow:function(prepend)

Shifty grid work

Parameters

prepend{Boolean} if true, prepend to beginning. if false, then append to end
+ +

shiftColumn

shiftColumn: function(prepend)

Shift grid work in the other dimension

Parameters

prepend{Boolean} if true, prepend to beginning. if false, then append to end
+ +

removeExcessTiles

removeExcessTiles: function(rows,
columns)

When the size of the map or the buffer changes, we may need to remove some excess rows and columns.

Parameters

rows{Integer} Maximum number of rows we want our grid to have.
colums{Integer} Maximum number of columns we want our grid to have.
+ +

onMapResize

onMapResize: function()

For singleTile layers, this will set a new tile size according to the dimensions of the map pane.

+ +

getTileBounds

getTileBounds: function(viewPortPx)

Returns The tile bounds for a layer given a pixel location.

Parameters

viewPortPx{OpenLayers.Pixel} The location in the viewport.

Returns

{OpenLayers.Bounds} Bounds of the tile at the given pixel location.

+ +
+ + + + + + + + + + +
Instances of this class represent a width/height pair
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
destroy: function()
Deconstruct the layer and clear the grid.
clearGrid:function()
Go through and remove all tiles from the grid, calling destroy() on each of them to kill circular references
clone: function (obj)
Create a clone of this layer
moveTo:function(bounds,
zoomChanged,
dragging)
This function is called whenever the map is moved.
setTileSize: function(size)
Check if we are in singleTile mode and if so, set the size as a ratio of the map size (as specified by the layer’s ‘ratio’ property).
getGridBounds: function()
Deprecated.
getTilesBounds: function()
Return the bounds of the tile grid.
initSingleTile: function(bounds)
calculateGridLayout: function(bounds,
extent,
resolution)
Generate parameters for the grid layout.
initGriddedTiles:function(bounds)
spiralTileLoad: function()
Starts at the top right corner of the grid and proceeds in a spiral towards the center, adding tiles one at a time to the beginning of a queue.
addTile:function(bounds,
position)
Gives subclasses of Grid the opportunity to create an OpenLayer.Tile of their choosing.
addTileMonitoringHooks: function(tile)
This function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tiles.
removeTileMonitoringHooks: function(tile)
This function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks()
moveGriddedTiles: function(bounds)
shiftRow:function(prepend)
Shifty grid work
shiftColumn: function(prepend)
Shift grid work in the other dimension
removeExcessTiles: function(rows,
columns)
When the size of the map or the buffer changes, we may need to remove some excess rows and columns.
onMapResize: function()
For singleTile layers, this will set a new tile size according to the dimensions of the map pane.
getTileBounds: function(viewPortPx)
Returns The tile bounds for a layer given a pixel location.
Create a new grid layer
Instances of this class represent bounding boxes.
This class represents a screen coordinate, in x and y coordinates
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/HTTPRequest-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/HTTPRequest-js.html new file mode 100644 index 0000000..6fbf21d --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/HTTPRequest-js.html @@ -0,0 +1,71 @@ + + +OpenLayers.Layer.HTTPRequest - OpenLayers + + + + + + + + + +

OpenLayers.Layer.HTTPRequest

Inherits from

Summary
OpenLayers.Layer.HTTPRequest
Constants
URL_HASH_FACTOR{Float} Used to hash URL param strings for multi-WMS server selection.
Properties
url{Array(String) or String} This is either an array of url strings or a single url string.
params{Object} Hashtable of key/value parameters
reprojectDeprecated.
Constructor
OpenLayers.Layer.HTTPRequest
Functions
destroy
clone
setUrl
mergeNewParams
redrawRedraws the layer.
selectUrlselectUrl() implements the standard floating-point multiplicative hash function described by Knuth, and hashes the contents of the given param string into a float between 0 and 1.
getFullRequestStringCombine url with layer’s params and these newParams.
+ +

Constants

+ +

URL_HASH_FACTOR

{Float} Used to hash URL param strings for multi-WMS server selection.  Set to the Golden Ratio per Knuth’s recommendation.

+ +

Properties

+ +

url

{Array(String) or String} This is either an array of url strings or a single url string.

+ +

params

{Object} Hashtable of key/value parameters

+ +

reproject

Deprecated.  See http://trac.openlayers.org/wiki/SpatialMercator for information on the replacement for this functionality.  {Boolean} Whether layer should reproject itself based on base layer locations.  This allows reprojection onto commercial layers.  Default is false: Most layers can’t reproject, but layers which can create non-square geographic pixels can, like WMS.

+ +

Constructor

+ +

OpenLayers.Layer.HTTPRequest

Parameters

name{String}
url{Array(String) or String}
params{Object}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

destroy

destroy: function()
+ +

clone

clone: function (obj)

Parameters

obj{Object}

Returns

{OpenLayers.Layer.HTTPRequest} An exact clone of this OpenLayers.Layer.HTTPRequest

+ +

setUrl

setUrl: function(newUrl)

Parameters

newUrl{String}
+ +

mergeNewParams

mergeNewParams:function(newParams)

Parameters

newParams{Object}

Returns

redrawn: {Boolean} whether the layer was actually redrawn.

+ +

redraw

redraw: function(force)

Redraws the layer.  Returns true if the layer was redrawn, false if not.

Parameters

force{Boolean} Force redraw by adding random parameter.

Returns

{Boolean} The layer was redrawn.

+ +

selectUrl

selectUrl: function(paramString,
urls)

selectUrl() implements the standard floating-point multiplicative hash function described by Knuth, and hashes the contents of the given param string into a float between 0 and 1.  This float is then scaled to the size of the provided urls array, and used to select a URL.

Parameters

paramString{String}
urls{Array(String)}

Returns

{String} An entry from the urls array, deterministically selected based on the paramString.

+ +

getFullRequestString

getFullRequestString:function(newParams,
altUrl)

Combine url with layer’s params and these newParams.

does checking on the serverPath variable, allowing for cases when it is supplied with trailing ? or &, as well as cases where not.

return in formatted string like this

”server?key1=value1&key2=value2&key3=value3”

WARNING: The altUrl parameter is deprecated and will be removed in 3.0.

Parameters

newParams{Object}
altUrl{String} Use this as the url instead of the layer’s url

Returns

{String}

+ +
+ + + + + + + + + + +
destroy: function()
clone: function (obj)
setUrl: function(newUrl)
mergeNewParams:function(newParams)
redraw: function(force)
Redraws the layer.
selectUrl: function(paramString,
urls)
selectUrl() implements the standard floating-point multiplicative hash function described by Knuth, and hashes the contents of the given param string into a float between 0 and 1.
getFullRequestString:function(newParams,
altUrl)
Combine url with layer’s params and these newParams.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/Image-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/Image-js.html new file mode 100644 index 0000000..ae15f36 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/Image-js.html @@ -0,0 +1,75 @@ + + +OpenLayers.Layer.Image - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Image

Instances of OpenLayers.Layer.Image are used to display data from a web accessible image as a map layer.  Create a new image layer with the OpenLayers.Layer.Image constructor.  Inherits from OpenLayers.Layer.

Summary
OpenLayers.Layer.ImageInstances of OpenLayers.Layer.Image are used to display data from a web accessible image as a map layer.
Properties
isBaseLayer{Boolean} The layer is a base layer.
url{String} URL of the image to use
extent{OpenLayers.Bounds} The image bounds in map units.
size{OpenLayers.Size} The image size in pixels
tile{OpenLayers.Tile.Image}
aspectRatio{Float} The ratio of height/width represented by a single pixel in the graphic
Constructor
OpenLayers.Layer.ImageCreate a new image layer
Functions
destroyDestroy this layer
cloneCreate a clone of this layer
setMap
moveToCreate the tile for the image or resize it for the new resolution
addTileMonitoringHooksThis function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tiles.
removeTileMonitoringHooksThis function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks.
setUrl
getURLThe url we return is always the same (the image itself never changes) so we can ignore the bounds parameter (it will always be the same, anyways)
+ +

Properties

+ +

isBaseLayer

{Boolean} The layer is a base layer.  Default is true.  Set this property in the layer options

+ +

url

{String} URL of the image to use

+ +

extent

{OpenLayers.Bounds} The image bounds in map units.  This extent will also be used as the default maxExtent for the layer.  If you wish to have a maxExtent that is different than the image extent, set the maxExtent property of the options argument (as with any other layer).

+ +

size

{OpenLayers.Size} The image size in pixels

+ + + +

aspectRatio

{Float} The ratio of height/width represented by a single pixel in the graphic

+ +

Constructor

+ +

OpenLayers.Layer.Image

Create a new image layer

Parameters

name{String} A name for the layer.
url{String} Relative or absolute path to the image
extent{OpenLayers.Bounds} The extent represented by the image
size{OpenLayers.Size} The size (in pixels) of the image
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

destroy

destroy: function()

Destroy this layer

+ +

clone

clone: function(obj)

Create a clone of this layer

Paramters

obj{Object} An optional layer (is this ever used?)

Returns

{OpenLayers.Layer.Image} An exact copy of this layer

+ +

setMap

setMap: function(map)

Parameters

map{OpenLayers.Map}
+ +

moveTo

moveTo:function(bounds,
zoomChanged,
dragging)

Create the tile for the image or resize it for the new resolution

Parameters

bounds{OpenLayers.Bounds}
zoomChanged{Boolean}
dragging{Boolean}
+ +

addTileMonitoringHooks

addTileMonitoringHooks: function(tile)

This function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tiles.

Parameters

tile{OpenLayers.Tile}
+ +

removeTileMonitoringHooks

removeTileMonitoringHooks: function(tile)

This function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks.

Parameters

tile{OpenLayers.Tile}
+ +

setUrl

setUrl: function(newUrl)

Parameters

newUrl{String}
+ +

getURL

getURL: function(bounds)

The url we return is always the same (the image itself never changes) so we can ignore the bounds parameter (it will always be the same, anyways)

Parameters

bounds{OpenLayers.Bounds}
+ +
+ + + + + + + + + + +
Instances of this class represent bounding boxes.
Instances of this class represent a width/height pair
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
destroy: function()
Destroy this layer
clone: function(obj)
Create a clone of this layer
setMap: function(map)
moveTo:function(bounds,
zoomChanged,
dragging)
Create the tile for the image or resize it for the new resolution
addTileMonitoringHooks: function(tile)
This function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tiles.
removeTileMonitoringHooks: function(tile)
This function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks.
setUrl: function(newUrl)
getURL: function(bounds)
The url we return is always the same (the image itself never changes) so we can ignore the bounds parameter (it will always be the same, anyways)
Create a new image layer
Instances of OpenLayers.Map are interactive maps embedded in a web page.
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/KaMap-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/KaMap-js.html new file mode 100644 index 0000000..8eb6a25 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/KaMap-js.html @@ -0,0 +1,67 @@ + + +OpenLayers.Layer.KaMap - OpenLayers + + + + + + + + + +

OpenLayers.Layer.KaMap

Inherits from

Summary
OpenLayers.Layer.KaMap
Properties
isBaseLayer{Boolean} KaMap Layer is always a base layer
units{?}
resolution{Float}
Constants
DEFAULT_PARAMS{Object} parameters set by default.
Constructor
OpenLayers.Layer.KaMap
Functions
getURL
addTile
calculateGridLayoutka-Map uses the center point of the map as an origin for its tiles.
clone
getTileBoundsReturns The tile bounds for a layer given a pixel location.
+ +

Properties

+ +

isBaseLayer

{Boolean} KaMap Layer is always a base layer

+ +

units

{?}

+ +

resolution

{Float}

+ +

Constants

+ +

DEFAULT_PARAMS

{Object} parameters set by default.  The default parameters set the format via the ‘i’ parameter to ‘jpeg’.

+ +

Constructor

+ +

OpenLayers.Layer.KaMap

Parameters

name{String}
url{String}
params{Object} Parameters to be sent to the HTTP server in the query string for the tile.  The format can be set via the ‘i’ parameter (defaults to jpg) , and the map should be set via the ‘map’ parameter.  It has been reported that ka-Map may behave inconsistently if your format parameter does not match the format parameter configured in your config.php.  (See ticket #327 for more information.)
options{Object} Additional options for the layer.  Any of the APIProperties listed on this layer, and any layer types it extends, can be overridden through the options parameter.
+ +

Functions

+ +

getURL

getURL: function (bounds)

Parameters

bounds{OpenLayers.Bounds}

Returns

{String} A string with the layer’s url and parameters and also the passed-in bounds and appropriate tile size specified as parameters

+ +

addTile

addTile:function(bounds,
position)

Parameters

bounds{OpenLayers.Bounds}
position{OpenLayers.Pixel}

Returns

{OpenLayers.Tile.Image}

+ +

calculateGridLayout

calculateGridLayout: function(bounds,
extent,
resolution)

ka-Map uses the center point of the map as an origin for its tiles.  Override calculateGridLayout to center tiles correctly for this case.

Parameters

bounds{<OpenLayers.Bound>}
extent{OpenLayers.Bounds}
resolution{Number}

Returns

Object containing properties tilelon, tilelat, tileoffsetlat, tileoffsetlat, tileoffsetx, tileoffsety

+ +

clone

clone: function (obj)

Parameters

obj{Object}

Returns

{<OpenLayers.Layer.Kamap>} An exact clone of this OpenLayers.Layer.KaMap

+ +

getTileBounds

getTileBounds: function(viewPortPx)

Returns The tile bounds for a layer given a pixel location.

Parameters

viewPortPx{OpenLayers.Pixel} The location in the viewport.

Returns

{OpenLayers.Bounds} Bounds of the tile at the given pixel location.

+ +
+ + + + + + + + + + +
getURL: function (bounds)
addTile:function(bounds,
position)
calculateGridLayout: function(bounds,
extent,
resolution)
ka-Map uses the center point of the map as an origin for its tiles.
clone: function (obj)
getTileBounds: function(viewPortPx)
Returns The tile bounds for a layer given a pixel location.
Base class for layers that use a lattice of tiles.
Instances of this class represent bounding boxes.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/KaMapCache-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/KaMapCache-js.html new file mode 100644 index 0000000..bfc2331 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/KaMapCache-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Layer.KaMapCache - OpenLayers + + + + + + + + + +

OpenLayers.Layer.KaMapCache

This class is designed to talk directly to a web-accessible ka-Map cache generated by the precache2.php script.

To create a a new KaMapCache layer, you must indicate also the “i” parameter (that will be used to calculate the file extension), and another special parameter, object names “metaTileSize”, with “h” (height) and “w” (width) properties.

// Create a new kaMapCache layer. var kamap_base = new OpenLayers.Layer.KaMapCache( “Satellite”, “http://www.example.org/web/acessible/cache”, {g: “satellite”, map: “world”, i: ‘png24’, metaTileSize: {w: 5, h: 5} } );

// Create an kaMapCache overlay layer (using “isBaseLayer: false”).  // Forces the output to be a “gif”, using the “i” parameter. var kamap_overlay = new OpenLayers.Layer.KaMapCache( “Streets”, “http://www.example.org/web/acessible/cache”, {g: “streets”, map: “world”, i: “gif”, metaTileSize: {w: 5, h: 5} }, {isBaseLayer: false} );

The cache URLs must look like

var/cache/World/50000/Group_Name/def/t-440320/l20480

This means that the cache generated via tile.php will not work with this class, and should instead use the KaMap layer.

More information is available in Ticket #1518.

Inherits from

Summary
OpenLayers.Layer.KaMapCacheThis class is designed to talk directly to a web-accessible ka-Map cache generated by the precache2.php script.
Constants
IMAGE_EXTENSIONS{Object} Simple hash map to convert format to extension.
DEFAULT_FORMAT{Object} Simple hash map to convert format to extension.
Constructor
OpenLayers.Layer.KaMapCache
Functions
getURL
+ +

Constants

+ +

IMAGE_EXTENSIONS

{Object} Simple hash map to convert format to extension.

+ +

DEFAULT_FORMAT

{Object} Simple hash map to convert format to extension.

+ +

Constructor

+ +

OpenLayers.Layer.KaMapCache

Parameters

name{String}
url{String}
params{Object} Parameters to be sent to the HTTP server in the query string for the tile.  The format can be set via the ‘i’ parameter (defaults to jpg) , and the map should be set via the ‘map’ parameter.  It has been reported that ka-Map may behave inconsistently if your format parameter does not match the format parameter configured in your config.php.  (See ticket #327 for more information.)
options{Object} Additional options for the layer.  Any of the APIProperties listed on this layer, and any layer types it extends, can be overridden through the options parameter.
+ +

Functions

+ +

getURL

getURL: function (bounds)

Parameters

bounds{OpenLayers.Bounds}

Returns

{String} A string with the layer’s url and parameters and also the passed-in bounds and appropriate tile size specified as parameters

+ +
+ + + + + + + + + + +
getURL: function (bounds)
Base class for layers that use a lattice of tiles.
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/MapGuide-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/MapGuide-js.html new file mode 100644 index 0000000..e013911 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/MapGuide-js.html @@ -0,0 +1,83 @@ + + +OpenLayers.Layer.MapGuide - OpenLayers + + + + + + + + + +

OpenLayers.Layer.MapGuide

Instances of OpenLayers.Layer.MapGuide are used to display data from a MapGuide OS instance.

Inherits from

Summary
OpenLayers.Layer.MapGuideInstances of OpenLayers.Layer.MapGuide are used to display data from a MapGuide OS instance.
Properties
isBaseLayer{Boolean} Treat this layer as a base layer.
useHttpTile{Boolean} use a tile cache exposed directly via a webserver rather than the via mapguide server.
singleTile{Boolean} use tile server or request single tile image.
useOverlay{Boolean} flag to indicate if the layer should be retrieved using GETMAPIMAGE (default) or using GETDYNAMICOVERLAY requests.
useAsyncOverlay{Boolean} indicates if the MapGuide site supports the asynchronous GETDYNAMICOVERLAY requests which is available in MapGuide Enterprise 2010 and MapGuide Open Source v2.0.3 or higher.
Constants
TILE_PARAMS{Object} Hashtable of default parameter key/value pairs for tiled layer
SINGLE_TILE_PARAMS{Object} Hashtable of default parameter key/value pairs for untiled layer
OVERLAY_PARAMS{Object} Hashtable of default parameter key/value pairs for untiled layer
FOLDER_PARAMS{Object} Hashtable of parameter key/value pairs which describe the folder structure for tiles as configured in the mapguide serverconfig.ini section [TileServiceProperties]
Properties
defaultSize{OpenLayers.Size} Tile size as produced by MapGuide server
Constructor
OpenLayers.Layer.MapGuideCreate a new Mapguide layer, either tiled or untiled.
Functions
cloneCreate a clone of this layer
addTileCreates a tile, initializes it, and adds it to the layer div.
getURLReturn a query string for this layer
getFullRequestStringgetFullRequestString on MapGuide layers is special, because we do a regular expression replace on ‘,’ in parameters to ‘+’.
getImageFilePathspecial handler to request mapguide tiles from an http exposed tilecache
calculateGridLayoutGenerate parameters for the grid layout.
+ +

Properties

+ +

isBaseLayer

{Boolean} Treat this layer as a base layer.  Default is true.

+ +

useHttpTile

{Boolean} use a tile cache exposed directly via a webserver rather than the via mapguide server.  This does require extra configuration on the Mapguide Server, and will only work when singleTile is false.  The url for the layer must be set to the webserver path rather than the Mapguide mapagent.  See http://trac.osgeo.org/mapguide/wiki/CodeSamples/Tiles/ServingTilesViaHttp

+ +

singleTile

{Boolean} use tile server or request single tile image.

+ +

useOverlay

{Boolean} flag to indicate if the layer should be retrieved using GETMAPIMAGE (default) or using GETDYNAMICOVERLAY requests.

+ +

useAsyncOverlay

{Boolean} indicates if the MapGuide site supports the asynchronous GETDYNAMICOVERLAY requests which is available in MapGuide Enterprise 2010 and MapGuide Open Source v2.0.3 or higher.  The newer versions of MG is called asynchronously, allows selections to be drawn separately from the map and offers styling options.

With older versions of MapGuide, set useAsyncOverlay=false.  Note that in this case a synchronous AJAX call is issued and the mapname and session parameters must be used to initialize the layer, not the mapdefinition parameter.  Also note that this will issue a synchronous AJAX request before the image request can be issued so the users browser may lock up if the MG Web tier does not respond in a timely fashion.

+ +

Constants

+ +

TILE_PARAMS

{Object} Hashtable of default parameter key/value pairs for tiled layer

+ +

SINGLE_TILE_PARAMS

{Object} Hashtable of default parameter key/value pairs for untiled layer

+ +

OVERLAY_PARAMS

{Object} Hashtable of default parameter key/value pairs for untiled layer

+ +

FOLDER_PARAMS

{Object} Hashtable of parameter key/value pairs which describe the folder structure for tiles as configured in the mapguide serverconfig.ini section [TileServiceProperties]

+ +

Properties

+ +

defaultSize

{OpenLayers.Size} Tile size as produced by MapGuide server

+ +

Constructor

+ +

OpenLayers.Layer.MapGuide

Create a new Mapguide layer, either tiled or untiled.

For tiled layers, the ‘groupName’ and ‘mapDefinition’ values must be specified as parameters in the constructor.

For untiled base layers, specify either combination of ‘mapName’ and ‘session’, or ‘mapDefinition’ and ‘locale’.

For older versions of MapGuide and overlay layers, set useAsyncOverlay to false and in this case mapName and session are required parameters for the constructor.

NOTE: MapGuide OS uses a DPI value and degrees to meters conversion factor that are different than the defaults used in OpenLayers, so these must be adjusted accordingly in your application.  See the MapGuide example for how to set these values for MGOS.

Parameters

name{String} Name of the layer displayed in the interface
url{String} Location of the MapGuide mapagent executable (e.g.  http://localhost:8008/mapguide/mapagent/mapagent.fcgi)
params{Object} hashtable of additional parameters to use.  Some parameters may require additional code on the server.  The ones that you may want to use are:
  • mapDefinition - {String} The MapGuide resource definition (e.g.  Library://Samples/Gmap/Maps/gmapTiled.MapDefinition)
  • locale - Locale setting (for untiled overlays layers only)
  • mapName - {String} Name of the map as stored in the MapGuide session.  (for untiled layers with a session parameter only)
  • session - { String} MapGuide session ID (for untiled overlays layers only)
  • basemaplayergroupname - {String} GroupName for tiled MapGuide layers only
  • format - Image format to be returned (for untiled overlay layers only)
  • showLayers - {String} A comma separated list of GUID’s for the layers to display eg: ‘cvc-xcv34,453-345-345sdf’.
  • hideLayers - {String} A comma separated list of GUID’s for the layers to hide eg: ‘cvc-xcv34,453-345-345sdf’.
  • showGroups - {String} A comma separated list of GUID’s for the groups to display eg: ‘cvc-xcv34,453-345-345sdf’.
  • hideGroups - {String} A comma separated list of GUID’s for the groups to hide eg: ‘cvc-xcv34,453-345-345sdf’
  • selectionXml - {String} A selection xml string Some server plumbing is required to read such a value.
options{Ojbect} Hashtable of extra options to tag onto the layer; will vary depending if tiled or untiled maps are being requested
+ +

Functions

+ +

clone

clone: function (obj)

Create a clone of this layer

Returns

{OpenLayers.Layer.MapGuide} An exact clone of this layer

+ +

addTile

addTile:function(bounds,
position)

Creates a tile, initializes it, and adds it to the layer div.

Parameters

bounds{OpenLayers.Bounds}
position{OpenLayers.Pixel}

Returns

{OpenLayers.Tile.Image} The added OpenLayers.Tile.Image

+ +

getURL

getURL: function (bounds)

Return a query string for this layer

Parameters

bounds{OpenLayers.Bounds} A bounds representing the bbox for the request

Returns

{String} A string with the layer’s url and parameters and also the passed-in bounds and appropriate tile size specified as parameters.

+ +

getFullRequestString

getFullRequestString:function(newParams,
altUrl)

getFullRequestString on MapGuide layers is special, because we do a regular expression replace on ‘,’ in parameters to ‘+’.  This is why it is subclassed here.

Parameters

altUrl{String} Alternative base URL to use.

Returns

{String} A string with the layer’s url appropriately encoded for MapGuide

+ +

getImageFilePath

getImageFilePath:function(newParams,
altUrl)

special handler to request mapguide tiles from an http exposed tilecache

Parameters

altUrl{String} Alternative base URL to use.

Returns

{String} A string with the url for the tile image

+ +

calculateGridLayout

calculateGridLayout: function(bounds,
extent,
resolution)

Generate parameters for the grid layout.  This

Parameters

bounds{<OpenLayers.Bound>}
extent{OpenLayers.Bounds}
resolution{Number}

Returns

Object containing properties tilelon, tilelat, tileoffsetlat, tileoffsetlat, tileoffsetx, tileoffsety

+ +
+ + + + + + + + + + +
Instances of this class represent a width/height pair
clone: function (obj)
Create a clone of this layer
addTile:function(bounds,
position)
Creates a tile, initializes it, and adds it to the layer div.
getURL: function (bounds)
Return a query string for this layer
getFullRequestString:function(newParams,
altUrl)
getFullRequestString on MapGuide layers is special, because we do a regular expression replace on ‘,’ in parameters to ‘+’.
getImageFilePath:function(newParams,
altUrl)
special handler to request mapguide tiles from an http exposed tilecache
calculateGridLayout: function(bounds,
extent,
resolution)
Generate parameters for the grid layout.
Base class for layers that use a lattice of tiles.
Create a new Mapguide layer, either tiled or untiled.
Instances of this class represent bounding boxes.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/MapServer-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/MapServer-js.html new file mode 100644 index 0000000..6513750 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/MapServer-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.Layer.MapServer - OpenLayers + + + + + + + + + +

OpenLayers.Layer.MapServer

Instances of OpenLayers.Layer.MapServer are used to display data from a MapServer CGI instance.

Inherits from

Summary
OpenLayers.Layer.MapServerInstances of OpenLayers.Layer.MapServer are used to display data from a MapServer CGI instance.
Constants
DEFAULT_PARAMS{Object} Hashtable of default parameter key/value pairs
Constructor
OpenLayers.Layer.MapServerCreate a new MapServer layer object
Functions
cloneCreate a clone of this layer
addTileCreates a tile, initializes it, and adds it to the layer div.
getURLReturn a query string for this layer
getFullRequestStringcombine the layer’s url with its params and these newParams.
+ +

Constants

+ +

DEFAULT_PARAMS

{Object} Hashtable of default parameter key/value pairs

+ +

Constructor

+ +

OpenLayers.Layer.MapServer

Create a new MapServer layer object

Parameters

name{String} A name for the layer
url{String} Base url for the MapServer CGI (e.g.  http://www2.dmsolutions.ca/cgi-bin/mapserv)
params{Object} An object with key/value pairs representing the GetMap query string parameters and parameter values.
options{Ojbect} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

clone

clone: function (obj)

Create a clone of this layer

Returns

{OpenLayers.Layer.MapServer} An exact clone of this layer

+ +

addTile

addTile:function(bounds,
position)

Creates a tile, initializes it, and adds it to the layer div.

Parameters

bounds{OpenLayers.Bounds}
position{OpenLayers.Pixel}

Returns

{OpenLayers.Tile.Image} The added OpenLayers.Tile.Image

+ +

getURL

getURL: function (bounds)

Return a query string for this layer

Parameters

bounds{OpenLayers.Bounds} A bounds representing the bbox for the request

Returns

{String} A string with the layer’s url and parameters and also the passed-in bounds and appropriate tile size specified as parameters.

+ +

getFullRequestString

getFullRequestString:function(newParams,
altUrl)

combine the layer’s url with its params and these newParams.

Parameter

newParams{Object} New parameters that should be added to the request string.
altUrl{String} (optional) Replace the URL in the full request string with the provided URL.

Returns

{String} A string with the layer’s url and parameters embedded in it.

+ +
+ + + + + + + + + + +
clone: function (obj)
Create a clone of this layer
addTile:function(bounds,
position)
Creates a tile, initializes it, and adds it to the layer div.
getURL: function (bounds)
Return a query string for this layer
getFullRequestString:function(newParams,
altUrl)
combine the layer’s url with its params and these newParams.
Base class for layers that use a lattice of tiles.
Create a new MapServer layer object
Instances of this class represent bounding boxes.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/MapServer/Untiled-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/MapServer/Untiled-js.html new file mode 100644 index 0000000..37eff12 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/MapServer/Untiled-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Layer.MapServer.Untiled - OpenLayers + + + + + + + + + +

OpenLayers.Layer.MapServer.Untiled

Deprecated.  To be removed in 3.0.  Instead use OpenLayers.Layer.MapServer and pass the option ‘singleTile’ as true.

Inherits from

Summary
OpenLayers.Layer.MapServer.UntiledDeprecated.
Properties
singleTile{singleTile} Always true for untiled.
Constructor
OpenLayers.Layer.MapServer.Untiled
Functions
cloneCreate a clone of this layer
+ +

Properties

+ +

singleTile

{singleTile} Always true for untiled.

+ +

Constructor

+ +

OpenLayers.Layer.MapServer.Untiled

Parameters

name{String}
url{String}
params{Object}
options{Object}
+ +

Functions

+ +

clone

clone: function (obj)

Create a clone of this layer

Returns

{OpenLayers.Layer.MapServer.Untiled} An exact clone of this layer

+ +
+ + + + + + + + + + +
clone: function (obj)
Create a clone of this layer
Instances of OpenLayers.Layer.MapServer are used to display data from a MapServer CGI instance.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/Markers-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/Markers-js.html new file mode 100644 index 0000000..7ae8810 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/Markers-js.html @@ -0,0 +1,69 @@ + + +OpenLayers.Layer.Markers - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Markers

Inherits from

Summary
OpenLayers.Layer.Markers
Properties
isBaseLayer{Boolean} Markers layer is never a base layer.
markers{Array(OpenLayers.Marker)} internal marker list
drawn{Boolean} internal state of drawing.
Constructor
OpenLayers.Layer.MarkersCreate a Markers layer.
Functions
destroy
setOpacitySets the opacity for all the markers.
moveTo
addMarker
removeMarker
clearMarkersThis method removes all markers from a layer.
drawMarkerCalculate the pixel location for the marker, create it, and add it to the layer’s div
getDataExtentCalculates the max extent which includes all of the markers.
+ +

Properties

+ +

isBaseLayer

{Boolean} Markers layer is never a base layer.

+ +

markers

{Array(OpenLayers.Marker)} internal marker list

+ +

drawn

{Boolean} internal state of drawing.  This is a workaround for the fact that the map does not call moveTo with a zoomChanged when the map is first starting up.  This lets us catch the case where we have never drawn the layer, and draw it even if the zoom hasn’t changed.

+ +

Constructor

+ +

OpenLayers.Layer.Markers

Create a Markers layer.

Parameters

name{String}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

destroy

destroy: function()
+ +

setOpacity

setOpacity: function(opacity)

Sets the opacity for all the markers.

Parameter

opacity{Float}
+ +

moveTo

moveTo:function(bounds,
zoomChanged,
dragging)

Parameters

bounds{OpenLayers.Bounds}
zoomChanged{Boolean}
dragging{Boolean}
+ +

addMarker

addMarker: function(marker)

Parameters

marker{OpenLayers.Marker}
+ +

removeMarker

removeMarker: function(marker)

Parameters

marker{OpenLayers.Marker}
+ +

clearMarkers

clearMarkers: function()

This method removes all markers from a layer.  The markers are not destroyed by this function, but are removed from the list of markers.

+ +

drawMarker

drawMarker: function(marker)

Calculate the pixel location for the marker, create it, and add it to the layer’s div

Parameters

marker{OpenLayers.Marker}
+ +

getDataExtent

getDataExtent: function ()

Calculates the max extent which includes all of the markers.

Returns

{OpenLayers.Bounds}

+ +
+ + + + + + + + + + +
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
destroy: function()
setOpacity: function(opacity)
Sets the opacity for all the markers.
moveTo:function(bounds,
zoomChanged,
dragging)
addMarker: function(marker)
removeMarker: function(marker)
clearMarkers: function()
This method removes all markers from a layer.
drawMarker: function(marker)
Calculate the pixel location for the marker, create it, and add it to the layer’s div
getDataExtent: function ()
Calculates the max extent which includes all of the markers.
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/MultiMap-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/MultiMap-js.html new file mode 100644 index 0000000..fbf5d62 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/MultiMap-js.html @@ -0,0 +1,83 @@ + + +OpenLayers.Layer.MultiMap - OpenLayers + + + + + + + + + +

OpenLayers.Layer.MultiMap

Note that MultiMap does not fully support the sphericalMercator option.  See Ticket #953 for more details.

Inherits from

Summary
OpenLayers.Layer.MultiMapNote that MultiMap does not fully support the sphericalMercator option.
Constants
MIN_ZOOM_LEVEL{Integer} 1
MAX_ZOOM_LEVEL{Integer} 17
RESOLUTIONS{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
Properties
type{?}
Constructor
OpenLayers.Layer.MultiMap
Functions
loadMapObject
getWarningHTML{String} String with information on why layer is broken, how to get it working.
setMapObjectCenterSet the mapObject to the specified center and zoom
getMapObjectCenter{Object} The mapObject’s current center in Map Object format
getMapObjectZoom{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel
getMapObjectPixelFromMapObjectLonLat
getLongitudeFromMapObjectLonLat
getLatitudeFromMapObjectLonLat
getMapObjectLonLatFromLonLat
getXFromMapObjectPixel
getYFromMapObjectPixel
getMapObjectPixelFromXY
+ +

Constants

+ +

MIN_ZOOM_LEVEL

{Integer} 1

+ +

MAX_ZOOM_LEVEL

{Integer} 17

+ +

RESOLUTIONS

{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection

+ +

Properties

+ +

type

{?}

+ +

Constructor

+ +

OpenLayers.Layer.MultiMap

Parameters

name{String}
options{Object}
+ +

Functions

+ +

loadMapObject

loadMapObject:function()
+ +

getWarningHTML

getWarningHTML:function()

Returns

{String} String with information on why layer is broken, how to get it working.

+ +

setMapObjectCenter

setMapObjectCenter: function(center,
zoom)

Set the mapObject to the specified center and zoom

Parameters

center{Object} MapObject LonLat format
zoom{int} MapObject zoom format
+ +

getMapObjectCenter

getMapObjectCenter: function()

Returns

{Object} The mapObject’s current center in Map Object format

+ +

getMapObjectZoom

getMapObjectZoom: function()

Returns

{Integer} The mapObject’s current zoom, in Map Object format

+ +

getMapObjectLonLatFromMapObjectPixel

getMapObjectLonLatFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Object} MapObject LonLat translated from MapObject Pixel

+ +

getMapObjectPixelFromMapObjectLonLat

getMapObjectPixelFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Object} MapObject Pixel transtlated from MapObject LonLat

+ +

getLongitudeFromMapObjectLonLat

getLongitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Longitude of the given MapObject LonLat

+ +

getLatitudeFromMapObjectLonLat

getLatitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Latitude of the given MapObject LonLat

+ +

getMapObjectLonLatFromLonLat

getMapObjectLonLatFromLonLat: function(lon,
lat)

Parameters

lon{Float}
lat{Float}

Returns

{Object} MapObject LonLat built from lon and lat params

+ +

getXFromMapObjectPixel

getXFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} X value of the MapObject Pixel

+ +

getYFromMapObjectPixel

getYFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} Y value of the MapObject Pixel

+ +

getMapObjectPixelFromXY

getMapObjectPixelFromXY: function(x,
y)

Parameters

x{Integer}
y{Integer}

Returns

{Object} MapObject Pixel from x and y parameters

+ +
+ + + + + + + + + + +
loadMapObject:function()
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getXFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromXY: function(x,
y)
Base class for 3rd party layers.
Some Layers will already have established zoom levels (like google or ve).
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/PointTrack-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/PointTrack-js.html new file mode 100644 index 0000000..5b5c392 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/PointTrack-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Layer.PointTrack - OpenLayers + + + + + + + + + +

OpenLayers.Layer.PointTrack

Vector layer to display ordered point features as a line, creating one LineString feature for each pair of two points.

Inherits from

Summary
OpenLayers.Layer.PointTrackVector layer to display ordered point features as a line, creating one LineString feature for each pair of two points.
Constructor
OpenLayers.PointTrackConstructor for a new OpenLayers.PointTrack instance.
Functions
addNodesAdds point features that will be used to create lines from, using point pairs.
Constants
OpenLayers.Layer.PointTrack.dataFrom{Object} with the following keys
+ +

Constructor

+ +

OpenLayers.PointTrack

Constructor for a new OpenLayers.PointTrack instance.

Parameters

name{String} name of the layer
options{Object} Optional object with properties to tag onto the instance.
+ +

Functions

+ +

addNodes

addNodes: function(pointFeatures)

Adds point features that will be used to create lines from, using point pairs.  The first point of a pair will be the source node, the second will be the target node.

Parameters

pointFeatures{Array(OpenLayers.Feature)}
+ +

Constants

+ +

OpenLayers.Layer.PointTrack.dataFrom

{Object} with the following keys

  • SOURCE_NODE: take data/attributes from the source node of the line
  • TARGET_NODE: take data/attributes from the target node of the line
+ +
+ + + + + + + + + + +
addNodes: function(pointFeatures)
Adds point features that will be used to create lines from, using point pairs.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Features are combinations of geography and attributes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/SphericalMercator-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/SphericalMercator-js.html new file mode 100644 index 0000000..46ea5e5 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/SphericalMercator-js.html @@ -0,0 +1,53 @@ + + +OpenLayers.Layer.SphericalMercator - OpenLayers + + + + + + + + + +

OpenLayers.Layer.SphericalMercator

A mixin for layers that wraps up the pieces neccesary to have a coordinate conversion for working with commercial APIs which use a spherical mercator projection.  Using this layer as a base layer, additional layers can be used as overlays if they are in the same projection.

A layer is given properties of this object by setting the sphericalMercator property to true.

More projection information

Proj4 Text

+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs

WKT

900913=PROJCS[“WGS84 / Simple Mercator”, GEOGCS[“WGS 84”, DATUM[“WGS_1984”, SPHEROID[“WGS_1984”, 6378137.0, 298.257223563]], PRIMEM[“Greenwich”, 0.0], UNIT[“degree”, 0.017453292519943295], AXIS[“Longitude”, EAST], AXIS[“Latitude”, NORTH]], PROJECTION[“Mercator_1SP_Google”], PARAMETER[“latitude_of_origin”, 0.0], PARAMETER[“central_meridian”, 0.0], PARAMETER[“scale_factor”, 1.0], PARAMETER[“false_easting”, 0.0], PARAMETER[“false_northing”, 0.0], UNIT[“m”, 1.0], AXIS[“x”, EAST], AXIS[“y”, NORTH], AUTHORITY[“EPSG”,”900913”]]

Summary
OpenLayers.Layer.SphericalMercatorA mixin for layers that wraps up the pieces neccesary to have a coordinate conversion for working with commercial APIs which use a spherical mercator projection.
Functions
getExtentGet the map’s extent.
initMercatorParametersSet up the mercator parameters on the layer: resolutions, projection, units.
forwardMercatorGiven a lon,lat in EPSG:4326, return a point in Spherical Mercator.
inverseMercatorGiven a x,y in Spherical Mercator, return a point in EPSG:4326.
projectForwardGiven an object with x and y properties in EPSG:4326, modify the x,y properties on the object to be the Spherical Mercator projected coordinates.
projectInverseGiven an object with x and y properties in Spherical Mercator, modify the x,y properties on the object to be the unprojected coordinates.
+ +

Functions

+ +

getExtent

getExtent: function()

Get the map’s extent.

Returns

{OpenLayers.Bounds} The map extent.

+ +

initMercatorParameters

initMercatorParameters: function()

Set up the mercator parameters on the layer: resolutions, projection, units.

+ +

forwardMercator

forwardMercator: function(lon,
lat)

Given a lon,lat in EPSG:4326, return a point in Spherical Mercator.

Parameters

lon{float}
lat{float}

Returns

{OpenLayers.LonLat} The coordinates transformed to Mercator.

+ +

inverseMercator

inverseMercator: function(x,
y)

Given a x,y in Spherical Mercator, return a point in EPSG:4326.

Parameters

x{float} A map x in Spherical Mercator.
y{float} A map y in Spherical Mercator.

Returns

{OpenLayers.LonLat} The coordinates transformed to EPSG:4326.

+ +

projectForward

projectForward: function(point)

Given an object with x and y properties in EPSG:4326, modify the x,y properties on the object to be the Spherical Mercator projected coordinates.

Parameters

point{Object} An object with x and y properties.

Returns

{Object} The point, with the x and y properties transformed to spherical mercator.

+ +

projectInverse

projectInverse: function(point)

Given an object with x and y properties in Spherical Mercator, modify the x,y properties on the object to be the unprojected coordinates.

Parameters

point{Object} An object with x and y properties.

Returns

{Object} The point, with the x and y properties transformed from spherical mercator to unprojected coordinates..

+ +
+ + + + + + + + + + +
getExtent: function()
Get the map’s extent.
initMercatorParameters: function()
Set up the mercator parameters on the layer: resolutions, projection, units.
forwardMercator: function(lon,
lat)
Given a lon,lat in EPSG:4326, return a point in Spherical Mercator.
inverseMercator: function(x,
y)
Given a x,y in Spherical Mercator, return a point in EPSG:4326.
projectForward: function(point)
Given an object with x and y properties in EPSG:4326, modify the x,y properties on the object to be the Spherical Mercator projected coordinates.
projectInverse: function(point)
Given an object with x and y properties in Spherical Mercator, modify the x,y properties on the object to be the unprojected coordinates.
Instances of this class represent bounding boxes.
This class represents a longitude and latitude pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/TMS-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/TMS-js.html new file mode 100644 index 0000000..5166cba --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/TMS-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Layer.TMS - OpenLayers + + + + + + + + + +

OpenLayers.Layer.TMS

Inherits from

Summary
OpenLayers.Layer.TMS
Properties
serviceVersion{String}
isBaseLayer{Boolean}
tileOrigin{OpenLayers.Pixel}
serverResolutions{Array} A list of all resolutions available on the server.
Constructor
OpenLayers.Layer.TMS
Functions
clone
getURL
addTileaddTile creates a tile, initializes it, and adds it to the layer div.
setMapWhen the layer is added to a map, then we can fetch our origin (if we don’t have one.)
+ +

Properties

+ +

serviceVersion

{String}

+ +

isBaseLayer

{Boolean}

+ +

tileOrigin

+ +

serverResolutions

{Array} A list of all resolutions available on the server.  Only set this property if the map resolutions differs from the server.

+ +

Constructor

+ +

OpenLayers.Layer.TMS

Parameters

name{String}
url{String}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

clone

clone: function (obj)

Parameters

obj{Object}

Returns

{OpenLayers.Layer.TMS} An exact clone of this OpenLayers.Layer.TMS

+ +

getURL

getURL: function (bounds)

Parameters

bounds{OpenLayers.Bounds}

Returns

{String} A string with the layer’s url and parameters and also the passed-in bounds and appropriate tile size specified as parameters

+ +

addTile

addTile:function(bounds,
position)

addTile creates a tile, initializes it, and adds it to the layer div.

Parameters

bounds{OpenLayers.Bounds}
position{OpenLayers.Pixel}

Returns

{OpenLayers.Tile.Image} The added OpenLayers.Tile.Image

+ +

setMap

setMap: function(map)

When the layer is added to a map, then we can fetch our origin (if we don’t have one.)

Parameters

map{OpenLayers.Map}
+ +
+ + + + + + + + + + +
This class represents a screen coordinate, in x and y coordinates
clone: function (obj)
getURL: function (bounds)
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
setMap: function(map)
When the layer is added to a map, then we can fetch our origin (if we don’t have one.)
Base class for layers that use a lattice of tiles.
Instances of this class represent bounding boxes.
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/Text-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/Text-js.html new file mode 100644 index 0000000..60fec7f --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/Text-js.html @@ -0,0 +1,68 @@ + + +OpenLayers.Layer.Text - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Text

This layer creates markers given data in a text file.  The location property of the layer (specified as a property of the options argument in the OpenLayers.Layer.Text constructor) points to a tab delimited file with data used to create markers.

The first row of the data file should be a header line with the column names of the data.  Each column should be delimited by a tab space.  The possible columns are:

  • point lat,lon of the point where a marker is to be placed
  • lat Latitude of the point where a marker is to be placed
  • lon Longitude of the point where a marker is to be placed
  • icon or image URL of marker icon to use.
  • iconSize Size of Icon to use.
  • iconOffset Where the top-left corner of the icon is to be placed relative to the latitude and longitude of the point.
  • title The text of the ‘title’ is placed inside an ‘h2’ marker inside a popup, which opens when the marker is clicked.
  • description The text of the ‘description’ is placed below the h2 in the popup. this can be plain text or HTML.

Example text file

lat  lon title   description iconSize    iconOffset  icon
+10   20  title   description 21,25       -10,-25     http://www.openlayers.org/dev/img/marker.png

Inherits from

Summary
OpenLayers.Layer.TextThis layer creates markers given data in a text file.
Properties
location{String} URL of text file.
features{Array(OpenLayers.Feature)}
formatOptions{Object} Hash of options which should be passed to the format when it is created.
selectedFeature{OpenLayers.Feature}
Constructor
OpenLayers.Layer.TextCreate a text layer.
Functions and Properties
destroy
loadTextStart the load of the Text data.
moveToIf layer is visible and Text has not been loaded, load Text.
parseData
markerClick
clearFeatures
+ +

Properties

+ +

location

{String} URL of text file.  Must be specified in the “options” argument of the constructor.  Can not be changed once passed in.

+ +

features

+ +

formatOptions

{Object} Hash of options which should be passed to the format when it is created.  Must be passed in the constructor.

+ +

selectedFeature

+ +

Constructor

+ +

OpenLayers.Layer.Text

Create a text layer.

Parameters

name{String}
options{Object} Object with properties to be set on the layer.  Must include location property.
+ +

Functions and Properties

+ +

destroy

destroy: function()
+ +

loadText

loadText: function()

Start the load of the Text data.  Don’t do this when we first add the layer, since we may not be visible at any point, and it would therefore be a waste.

+ +

moveTo

moveTo:function(bounds,
zoomChanged,
minor)

If layer is visible and Text has not been loaded, load Text.

Parameters

bounds{Object}
zoomChanged{Object}
minor{Object}
+ +

parseData

parseData: function(ajaxRequest)

Parameters

ajaxRequest{OpenLayers.Request.XMLHttpRequest}
+ +

markerClick

Parameters

evt{Event}
+ +

clearFeatures

clearFeatures: function()
+ +
+ + + + + + + + + + +
Features are combinations of geography and attributes.
destroy: function()
loadText: function()
Start the load of the Text data.
moveTo:function(bounds,
zoomChanged,
minor)
If layer is visible and Text has not been loaded, load Text.
parseData: function(ajaxRequest)
clearFeatures: function()
{String} URL of text file.
Create a text layer.
Standard-compliant (W3C) cross-browser implementation of the XMLHttpRequest object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/TileCache-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/TileCache-js.html new file mode 100644 index 0000000..00525c1 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/TileCache-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Layer.TileCache - OpenLayers + + + + + + + + + +

OpenLayers.Layer.TileCache

A read only TileCache layer.  Used to requests tiles cached by TileCache in a web accessible cache.  This means that you have to pre-populate your cache before this layer can be used.  It is meant only to read tiles created by TileCache, and not to make calls to TileCache for tile creation.  Create a new instance with the OpenLayers.Layer.TileCache constructor.

Inherits from

Summary
OpenLayers.Layer.TileCacheA read only TileCache layer.
Properties
isBaseLayer{Boolean} Treat this layer as a base layer.
format{String} Mime type of the images returned.
serverResolutions{Array} A list of all resolutions available on the server.
Constructor
OpenLayers.Layer.TileCacheCreate a new read only TileCache layer.
Functions
clone
getURL
addTileCreate a tile, initialize it, and add it to the layer div.
+ +

Properties

+ +

isBaseLayer

{Boolean} Treat this layer as a base layer.  Default is true.

+ +

format

{String} Mime type of the images returned.  Default is image/png.

+ +

serverResolutions

{Array} A list of all resolutions available on the server.  Only set this property if the map resolutions differs from the server.

+ +

Constructor

+ +

OpenLayers.Layer.TileCache

Create a new read only TileCache layer.

Parameters

name{String} Name of the layer displayed in the interface
url{String} Location of the web accessible cache (not the location of your tilecache script!)
layername{String} Layer name as defined in the TileCache configuration
options{Object} Optional object with properties to be set on the layer.  Note that you should speficy your resolutions to match your TileCache configuration.  This can be done by setting the resolutions array directly (here or on the map), by setting maxResolution and numZoomLevels, or by using scale based properties.
+ +

Functions

+ +

clone

clone: function (obj)
obj{Object}

Returns

{OpenLayers.Layer.TileCache} An exact clone of this OpenLayers.Layer.TileCache

+ +

getURL

getURL: function(bounds)

Parameters

bounds{OpenLayers.Bounds}

Returns

{String} A string with the layer’s url and parameters and also the passed-in bounds and appropriate tile size specified as parameters.

+ +

addTile

addTile:function(bounds,
position)

Create a tile, initialize it, and add it to the layer div.

Parameters

bounds{OpenLayers.Bounds}
position{OpenLayers.Pixel}

Returns

{OpenLayers.Tile.Image} The added OpenLayers.Tile.Image

+ +
+ + + + + + + + + + +
clone: function (obj)
getURL: function(bounds)
addTile:function(bounds,
position)
Create a tile, initialize it, and add it to the layer div.
Create a new read only TileCache layer.
Base class for layers that use a lattice of tiles.
Instances of this class represent bounding boxes.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/Vector-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/Vector-js.html new file mode 100644 index 0000000..ce5c773 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/Vector-js.html @@ -0,0 +1,123 @@ + + +OpenLayers.Layer.Vector - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Vector

Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.  Create a new vector layer with the OpenLayers.Layer.Vector constructor.

Inherits from

Summary
OpenLayers.Layer.VectorInstances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Constants
EVENT_TYPES{Array(String)} Supported application event types.
Properties
isBaseLayer{Boolean} The layer is a base layer.
isFixed{Boolean} Whether the layer remains in one place while dragging the map.
isVector{Boolean} Whether the layer is a vector layer.
features{Array(OpenLayers.Feature.Vector)}
selectedFeatures{Array(OpenLayers.Feature.Vector)}
unrenderedFeatures{Object} hash of features, keyed by feature.id, that the renderer failed to draw
reportError{Boolean} report friendly error message when loading of renderer fails.
style{Object} Default style for the layer
styleMap{OpenLayers.StyleMap}
strategies{Array(OpenLayers.Strategy})} Optional list of strategies for the layer.
protocol{OpenLayers.Protocol} Optional protocol for the layer.
renderers{Array(String)} List of supported Renderer classes.
renderer{OpenLayers.Renderer}
rendererOptions{Object} Options for the renderer.
geometryType{String} geometryType allows you to limit the types of geometries this layer supports.
drawn{Boolean} Whether the Vector Layer features have been drawn yet.
Constructor
OpenLayers.Layer.VectorCreate a new vector layer
Functions
destroyDestroy this layer
refreshAsk the layer to request features again and redraw them.
assignRendererIterates through the available renderer implementations and selects and assigns the first one whose “supported()” function returns true.
displayErrorLet the user know their browser isn’t supported.
setMapThe layer has been added to the map.
afterAddCalled at the end of the map.addLayer sequence.
removeMapThe layer has been removed from the map.
onMapResizeNotify the renderer of the change in size.
moveToReset the vector layer’s div so that it once again is lined up with the map.
displayHide or show the Layer
addFeaturesAdd Features to the layer.
removeFeaturesRemove features from the layer.
destroyFeaturesErase and destroy features on the layer.
drawFeatureDraw (or redraw) a feature on the layer.
eraseFeaturesErase features from the layer.
getFeatureFromEventGiven an event, return a feature if the event occurred over one.
getFeatureByIdGiven a feature id, return the feature if it exists in the features array
onFeatureInsertmethod called after a feature is inserted.
preFeatureInsertmethod called before a feature is inserted.
getDataExtentCalculates the max extent which includes all of the features.
+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

layer.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

All event objects have at least the following properties

object{Object} A reference to layer.events.object.
element{DOMElement} A reference to layer.events.element.

Supported map event types (in addition to those from OpenLayers.Layer)

beforefeatureaddedTriggered before a feature is added.  Listeners will receive an object with a feature property referencing the feature to be added.  To stop the feature from being added, a listener should return false.
beforefeaturesaddedTriggered before an array of features is added.  Listeners will receive an object with a features property referencing the feature to be added.  To stop the features from being added, a listener should return false.
featureaddedTriggered after a feature is added.  The event object passed to listeners will have a feature property with a reference to the added feature.
featuresaddedTriggered after features are added.  The event object passed to listeners will have a features property with a reference to an array of added features.
beforefeatureremovedTriggered before a feature is removed.  Listeners will receive an object with a feature property referencing the feature to be removed.
featureremovedTriggerd after a feature is removed.  The event object passed to listeners will have a feature property with a reference to the removed feature.
featuresremovedTriggered after features are removed.  The event object passed to listeners will have a features property with a reference to an array of removed features.
featureselectedTriggered after a feature is selected.  Listeners will receive an object with a feature property referencing the selected feature.
featureunselectedTriggered after a feature is unselected.  Listeners will receive an object with a feature property referencing the unselected feature.
beforefeaturemodifiedTriggered when a feature is selected to be modified.  Listeners will receive an object with a feature property referencing the selected feature.
featuremodifiedTriggered when a feature has been modified.  Listeners will receive an object with a feature property referencing the modified feature.
afterfeaturemodifiedTriggered when a feature is finished being modified.  Listeners will receive an object with a feature property referencing the modified feature.
vertexmodifiedTriggered when a vertex within any feature geometry has been modified.  Listeners will receive an object with a feature property referencing the modified feature, a vertex property referencing the vertex modified (always a point geometry), and a pixel property referencing the pixel location of the modification.
sketchstartedTriggered when a feature sketch bound for this layer is started.  Listeners will receive an object with a feature property referencing the new sketch feature and a vertex property referencing the creation point.
sketchmodifiedTriggered when a feature sketch bound for this layer is modified.  Listeners will receive an object with a vertex property referencing the modified vertex and a feature property referencing the sketch feature.
sketchcompleteTriggered when a feature sketch bound for this layer is complete.  Listeners will receive an object with a feature property referencing the sketch feature.  By returning false, a listener can stop the sketch feature from being added to the layer.
refreshTriggered when something wants a strategy to ask the protocol for a new set of features.
+ +

Properties

+ +

isBaseLayer

{Boolean} The layer is a base layer.  Default is true.  Set this property in the layer options

+ +

isFixed

{Boolean} Whether the layer remains in one place while dragging the map.

+ +

isVector

{Boolean} Whether the layer is a vector layer.

+ +

features

+ +

selectedFeatures

+ +

unrenderedFeatures

{Object} hash of features, keyed by feature.id, that the renderer failed to draw

+ +

reportError

{Boolean} report friendly error message when loading of renderer fails.

+ +

style

{Object} Default style for the layer

+ + + +

strategies

{Array(OpenLayers.Strategy})} Optional list of strategies for the layer.

+ +

protocol

{OpenLayers.Protocol} Optional protocol for the layer.

+ +

renderers

{Array(String)} List of supported Renderer classes.  Add to this list to add support for additional renderers.  This list is ordered: the first renderer which returns true for the ‘supported()’ method will be used, if not defined in the ‘renderer’ option.

+ + + +

rendererOptions

{Object} Options for the renderer.  See {OpenLayers.Renderer} for supported options.

+ +

geometryType

{String} geometryType allows you to limit the types of geometries this layer supports.  This should be set to something like “OpenLayers.Geometry.Point” to limit types.

+ +

drawn

{Boolean} Whether the Vector Layer features have been drawn yet.

+ +

Constructor

+ +

OpenLayers.Layer.Vector

Create a new vector layer

Parameters

name{String} A name for the layer
options{Object} Optional object with non-default properties to set on the layer.

Returns

{OpenLayers.Layer.Vector} A new vector layer

+ +

Functions

+ +

destroy

destroy: function()

Destroy this layer

+ +

refresh

refresh: function(obj)

Ask the layer to request features again and redraw them.  Triggers the refresh event if the layer is in range and visible.

Parameters

obj{Object} Optional object with properties for any listener of the refresh event.
+ +

assignRenderer

assignRenderer: function()

Iterates through the available renderer implementations and selects and assigns the first one whose “supported()” function returns true.

+ +

displayError

displayError: function()

Let the user know their browser isn’t supported.

+ +

setMap

setMap: function(map)

The layer has been added to the map.

If there is no renderer set, the layer can’t be used.  Remove it.  Otherwise, give the renderer a reference to the map and set its size.

Parameters

map{OpenLayers.Map}
+ +

afterAdd

afterAdd: function()

Called at the end of the map.addLayer sequence.  At this point, the map will have a base layer.  Any autoActivate strategies will be activated here.

+ +

removeMap

removeMap: function(map)

The layer has been removed from the map.

Parameters

map{OpenLayers.Map}
+ +

onMapResize

onMapResize: function()

Notify the renderer of the change in size.

+ +

moveTo

moveTo: function(bounds,
zoomChanged,
dragging)

Reset the vector layer’s div so that it once again is lined up with the map.  Notify the renderer of the change of extent, and in the case of a change of zoom level (resolution), have the renderer redraw features.

If the layer has not yet been drawn, cycle through the layer’s features and draw each one.

Parameters

bounds{OpenLayers.Bounds}
zoomChanged{Boolean}
dragging{Boolean}
+ +

display

display: function(display)

Hide or show the Layer

Parameters

display{Boolean}
+ +

addFeatures

addFeatures: function(features,
options)

Add Features to the layer.

Parameters

features{Array(OpenLayers.Feature.Vector)}
options{Object}
+ +

removeFeatures

removeFeatures: function(features,
options)

Remove features from the layer.  This erases any drawn features and removes them from the layer’s control.  The beforefeatureremoved and featureremoved events will be triggered for each feature.  The featuresremoved event will be triggered after all features have been removed.  To supress event triggering, use the silent option.

Parameters

features{Array(OpenLayers.Feature.Vector)} List of features to be removed.
options{Object} Optional properties for changing behavior of the removal.

Valid options

silent{Boolean} Supress event triggering.  Default is false.
+ +

destroyFeatures

destroyFeatures: function(features,
options)

Erase and destroy features on the layer.

Parameters

features{Array(OpenLayers.Feature.Vector)} An optional array of features to destroy.  If not supplied, all features on the layer will be destroyed.
options{Object}
+ +

drawFeature

drawFeature: function(feature,
style)

Draw (or redraw) a feature on the layer.  If the optional style argument is included, this style will be used.  If no style is included, the feature’s style will be used.  If the feature doesn’t have a style, the layer’s style will be used.

This function is not designed to be used when adding features to the layer (use addFeatures instead).  It is meant to be used when the style of a feature has changed, or in some other way needs to visually updated after it has already been added to a layer.  You must add the feature to the layer for most layer-related events to happen.

Parameters

feature{OpenLayers.Feature.Vector}
style{Object} Symbolizer hash or {String} renderIntent
+ +

eraseFeatures

eraseFeatures: function(features)

Erase features from the layer.

Parameters

features{Array(OpenLayers.Feature.Vector)}
+ +

getFeatureFromEvent

getFeatureFromEvent: function(evt)

Given an event, return a feature if the event occurred over one.  Otherwise, return null.

Parameters

evt{Event}

Returns

{OpenLayers.Feature.Vector} A feature if one was under the event.

+ +

getFeatureById

getFeatureById: function(featureId)

Given a feature id, return the feature if it exists in the features array

Parameters

featureId{String}

Returns

{OpenLayers.Feature.Vector} A feature corresponding to the given featureId

+ +

onFeatureInsert

onFeatureInsert: function(feature)

method called after a feature is inserted.  Does nothing by default.  Override this if you need to do something on feature updates.

Paarameters

feature{OpenLayers.Feature.Vector}
+ +

preFeatureInsert

preFeatureInsert: function(feature)

method called before a feature is inserted.  Does nothing by default.  Override this if you need to do something when features are first added to the layer, but before they are drawn, such as adjust the style.

Parameters

feature{OpenLayers.Feature.Vector}
+ +

getDataExtent

getDataExtent: function ()

Calculates the max extent which includes all of the features.

Returns

{OpenLayers.Bounds}

+ +
+ + + + + + + + + + +
Vector features use the OpenLayers.Geometry classes as geometry description.
Abstract vector layer strategy class.
Abstract vector layer protocol class.
This is the base class for all renderers.
destroy: function()
Destroy this layer
refresh: function(obj)
Ask the layer to request features again and redraw them.
assignRenderer: function()
Iterates through the available renderer implementations and selects and assigns the first one whose “supported()” function returns true.
displayError: function()
Let the user know their browser isn’t supported.
setMap: function(map)
The layer has been added to the map.
afterAdd: function()
Called at the end of the map.addLayer sequence.
removeMap: function(map)
The layer has been removed from the map.
onMapResize: function()
Notify the renderer of the change in size.
moveTo: function(bounds,
zoomChanged,
dragging)
Reset the vector layer’s div so that it once again is lined up with the map.
display: function(display)
Hide or show the Layer
addFeatures: function(features,
options)
Add Features to the layer.
removeFeatures: function(features,
options)
Remove features from the layer.
destroyFeatures: function(features,
options)
Erase and destroy features on the layer.
drawFeature: function(feature,
style)
Draw (or redraw) a feature on the layer.
eraseFeatures: function(features)
Erase features from the layer.
getFeatureFromEvent: function(evt)
Given an event, return a feature if the event occurred over one.
getFeatureById: function(featureId)
Given a feature id, return the feature if it exists in the features array
onFeatureInsert: function(feature)
method called after a feature is inserted.
preFeatureInsert: function(feature)
method called before a feature is inserted.
getDataExtent: function ()
Calculates the max extent which includes all of the features.
Create a new vector layer
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Instances of this class represent bounding boxes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/Vector/RootContainer-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/Vector/RootContainer-js.html new file mode 100644 index 0000000..8544e8b --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/Vector/RootContainer-js.html @@ -0,0 +1,65 @@ + + +OpenLayers.Layer.Vector.RootContainer - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Vector.RootContainer

A special layer type to combine multiple vector layers inside a single renderer root container.  This class is not supposed to be instantiated from user space, it is a helper class for controls that require event processing for multiple vector layers.

Inherits from

Summary
OpenLayers.Layer.Vector.RootContainerA special layer type to combine multiple vector layers inside a single renderer root container.
Properties
displayInLayerSwitcherSet to false for this layer type
layersLayers that are attached to this container.
Constructor
OpenLayers.Layer.Vector.RootContainerCreate a new root container for multiple vector layer.
Functions
display
getFeatureFromEventwalk through the layers to find the feature returned by the event
setMap
removeMap
collectRootsCollects the root nodes of all layers this control is configured with and moveswien the nodes to this control’s layer
resetRootsResets the root nodes back into the layers they belong to.
handleChangeLayerEvent handler for the map’s changelayer event.
+ +

Properties

+ +

displayInLayerSwitcher

Set to false for this layer type

+ +

layers

Layers that are attached to this container.  Required config option.

+ +

Constructor

+ +

OpenLayers.Layer.Vector.RootContainer

Create a new root container for multiple vector layer.  This constructor is not supposed to be used from user space, it is only to be used by controls that need feature selection across multiple vector layers.

Parameters

name{String} A name for the layer
options{Object} Optional object with non-default properties to set on the layer.

Required options properties

layers{Array(OpenLayers.Layer.Vector)} The layers managed by this container

Returns

{OpenLayers.Layer.Vector.RootContainer} A new vector layer root container

+ +

Functions

+ +

display

display: function()
+ +

getFeatureFromEvent

getFeatureFromEvent: function(evt)

walk through the layers to find the feature returned by the event

Parameters

evt{Object} event object with a feature property

Returns

{OpenLayers.Feature.Vector}

+ +

setMap

setMap: function(map)

Parameters

map{OpenLayers.Map}
+ +

removeMap

removeMap: function(map)

Parameters

map{OpenLayers.Map}
+ +

collectRoots

collectRoots: function()

Collects the root nodes of all layers this control is configured with and moveswien the nodes to this control’s layer

+ +

resetRoots

resetRoots: function()

Resets the root nodes back into the layers they belong to.

+ +

handleChangeLayer

handleChangeLayer: function(evt)

Event handler for the map’s changelayer event.  We need to rebuild this container’s layer dom if order of one of its layers changes.  This handler is added with the setMap method, and removed with the removeMap method.

Parameters

evt{Object}
+ +
+ + + + + + + + + + +
display: function()
getFeatureFromEvent: function(evt)
walk through the layers to find the feature returned by the event
setMap: function(map)
removeMap: function(map)
collectRoots: function()
Collects the root nodes of all layers this control is configured with and moveswien the nodes to this control’s layer
resetRoots: function()
Resets the root nodes back into the layers they belong to.
handleChangeLayer: function(evt)
Event handler for the map’s changelayer event.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Create a new root container for multiple vector layer.
Vector features use the OpenLayers.Geometry classes as geometry description.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/VirtualEarth-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/VirtualEarth-js.html new file mode 100644 index 0000000..cbe74ce --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/VirtualEarth-js.html @@ -0,0 +1,87 @@ + + +OpenLayers.Layer.VirtualEarth - OpenLayers + + + + + + + + + +

OpenLayers.Layer.VirtualEarth

Inherits from

Summary
OpenLayers.Layer.VirtualEarth
Constants
MIN_ZOOM_LEVEL{Integer} 1
MAX_ZOOM_LEVEL{Integer} 17
RESOLUTIONS{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
Properties
type{VEMapType}
sphericalMercator{Boolean} Should the map act as a mercator-projected map? 
Constructor
OpenLayers.Layer.VirtualEarth
Functions
loadMapObject
getWarningHTML{String} String with information on why layer is broken, how to get it working.
setMapObjectCenterSet the mapObject to the specified center and zoom
getMapObjectCenter{Object} The mapObject’s current center in Map Object format
dragPanMapObject
getMapObjectZoom{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel
getMapObjectPixelFromMapObjectLonLat
getLongitudeFromMapObjectLonLat
getLatitudeFromMapObjectLonLat
getMapObjectLonLatFromLonLat
getXFromMapObjectPixel
getYFromMapObjectPixel
getMapObjectPixelFromXY
+ +

Constants

+ +

MIN_ZOOM_LEVEL

{Integer} 1

+ +

MAX_ZOOM_LEVEL

{Integer} 17

+ +

RESOLUTIONS

{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection

+ +

Properties

+ +

type

{VEMapType}

+ +

sphericalMercator

{Boolean} Should the map act as a mercator-projected map?  This will cause all interactions with the map to be in the actual map projection, which allows support for vector drawing, overlaying other maps, etc.

+ +

Constructor

+ +

OpenLayers.Layer.VirtualEarth

Parameters

name{String}
options{Object}
+ +

Functions

+ +

loadMapObject

loadMapObject:function()
+ +

getWarningHTML

getWarningHTML:function()

Returns

{String} String with information on why layer is broken, how to get it working.

+ +

setMapObjectCenter

setMapObjectCenter: function(center,
zoom)

Set the mapObject to the specified center and zoom

Parameters

center{Object} MapObject LonLat format
zoom{int} MapObject zoom format
+ +

getMapObjectCenter

getMapObjectCenter: function()

Returns

{Object} The mapObject’s current center in Map Object format

+ +

dragPanMapObject

dragPanMapObject: function(dX,
dY)

Parameters

dX{Integer}
dY{Integer}
+ +

getMapObjectZoom

getMapObjectZoom: function()

Returns

{Integer} The mapObject’s current zoom, in Map Object format

+ +

getMapObjectLonLatFromMapObjectPixel

getMapObjectLonLatFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Object} MapObject LonLat translated from MapObject Pixel

+ +

getMapObjectPixelFromMapObjectLonLat

getMapObjectPixelFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Object} MapObject Pixel transtlated from MapObject LonLat

+ +

getLongitudeFromMapObjectLonLat

getLongitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Longitude of the given MapObject LonLat

+ +

getLatitudeFromMapObjectLonLat

getLatitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Latitude of the given MapObject LonLat

+ +

getMapObjectLonLatFromLonLat

getMapObjectLonLatFromLonLat: function(lon,
lat)

Parameters

lon{Float}
lat{Float}

Returns

{Object} MapObject LonLat built from lon and lat params

+ +

getXFromMapObjectPixel

getXFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} X value of the MapObject Pixel

+ +

getYFromMapObjectPixel

getYFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} Y value of the MapObject Pixel

+ +

getMapObjectPixelFromXY

getMapObjectPixelFromXY: function(x,
y)

Parameters

x{Integer}
y{Integer}

Returns

{Object} MapObject Pixel from x and y parameters

+ +
+ + + + + + + + + + +
loadMapObject:function()
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
dragPanMapObject: function(dX,
dY)
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getXFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromXY: function(x,
y)
Base class for 3rd party layers.
Some Layers will already have established zoom levels (like google or ve).
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/WFS-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/WFS-js.html new file mode 100644 index 0000000..6b2f25d --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/WFS-js.html @@ -0,0 +1,103 @@ + + +OpenLayers.Layer.WFS - OpenLayers + + + + + + + + + +

OpenLayers.Layer.WFS

Inherits from

Summary
OpenLayers.Layer.WFS
Properties
isBaseLayer{Boolean} WFS layer is not a base layer by default.
tile{OpenLayers.Tile.WFS}
ratio{Float} the ratio of image/tile size to map size (this is the untiled buffer)
DEFAULT_PARAMS{Object} Hashtable of default key/value parameters
featureClass{OpenLayers.Feature} If featureClass is defined, an old-style markers based WFS layer is created instead of a new-style vector layer.
format{OpenLayers.Format} The format you want the data to be parsed with.
formatObject{OpenLayers.Format} Internally created/managed format object, used by the Tile to parse data.
formatOptions{Object} Hash of options which should be passed to the format when it is created.
vectorMode{Boolean} Should be calculated automatically.
encodeBBOX{Boolean} Should the BBOX commas be encoded? 
extractAttributes{Boolean} Should the WFS layer parse attributes from the retrieved GML? 
Constructor
OpenLayers.Layer.WFS
Functions
destroy
setMap
moveTo
addTileMonitoringHooksThis function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tile (making sure to check that the tile is always the layer’s current tile before taking any action).
removeTileMonitoringHooksThis function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks()
onMapResizeCall the onMapResize method of the appropriate parent class.
displayCall the display method of the appropriate parent class.
mergeNewParamsModify parameters for the layer and redraw.
clone
getFullRequestStringcombine the layer’s url with its params and these newParams.
commitWrite out the data to a WFS server.
commitSuccessCalled when the Ajax request returns a response
commitFailureCalled when the Ajax request fails
commitReportCalled with a ‘success’ message if the commit succeeded, otherwise a failure message, and the full request text as a second parameter.
refreshRefreshes all the features of the layer
getDataExtentCalculates the max extent which includes all of the layer data.
setOpacityCall the setOpacity method of the appropriate parent class to set the opacity.
+ +

Properties

+ +

isBaseLayer

{Boolean} WFS layer is not a base layer by default.

+ + + +

ratio

{Float} the ratio of image/tile size to map size (this is the untiled buffer)

+ +

DEFAULT_PARAMS

{Object} Hashtable of default key/value parameters

+ +

featureClass

{OpenLayers.Feature} If featureClass is defined, an old-style markers based WFS layer is created instead of a new-style vector layer.  If sent, this should be a subclass of OpenLayers.Feature

+ +

format

{OpenLayers.Format} The format you want the data to be parsed with.  Must be passed in the constructor.  Should be a class, not an instance.  This option can only be used if no featureClass is passed / vectorMode is false: if a featureClass is passed, then this parameter is ignored.

+ +

formatObject

{OpenLayers.Format} Internally created/managed format object, used by the Tile to parse data.

+ +

formatOptions

{Object} Hash of options which should be passed to the format when it is created.  Must be passed in the constructor.

+ +

vectorMode

{Boolean} Should be calculated automatically.  Determines whether the layer is in vector mode or marker mode.

+ +

encodeBBOX

{Boolean} Should the BBOX commas be encoded?  The WMS spec says ‘no’, but some services want it that way.  Default false.

+ +

extractAttributes

{Boolean} Should the WFS layer parse attributes from the retrieved GML?  Defaults to false.  If enabled, parsing is slower, but attributes are available in the attributes property of layer features.

+ +

Constructor

+ +

OpenLayers.Layer.WFS

Parameters

name{String}
url{String}
params{Object}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

destroy

destroy: function()
+ +

setMap

setMap: function(map)

Parameters

map{OpenLayers.Map}
+ +

moveTo

moveTo:function(bounds,
zoomChanged,
dragging)

Parameters

bounds{OpenLayers.Bounds}
zoomChanged{Boolean}
dragging{Boolean}
+ +

addTileMonitoringHooks

addTileMonitoringHooks: function(tile)

This function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tile (making sure to check that the tile is always the layer’s current tile before taking any action).

Parameters

tile{OpenLayers.Tile}
+ +

removeTileMonitoringHooks

removeTileMonitoringHooks: function(tile)

This function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks()

Parameters

tile{OpenLayers.Tile}
+ +

onMapResize

onMapResize: function()

Call the onMapResize method of the appropriate parent class.

+ +

display

display: function()

Call the display method of the appropriate parent class.

+ +

mergeNewParams

mergeNewParams:function(newParams)

Modify parameters for the layer and redraw.

Parameters

newParams{Object}
+ +

clone

clone: function (obj)

Parameters

obj{Object}

Returns

{OpenLayers.Layer.WFS} An exact clone of this OpenLayers.Layer.WFS

+ +

getFullRequestString

getFullRequestString:function(newParams,
altUrl)

combine the layer’s url with its params and these newParams.

Add the SRS parameter from ‘projection’ -- this is probably more eloquently done via a setProjection() method, but this works for now and always.

Parameters

newParams{Object}
altUrl{String} Use this as the url instead of the layer’s url
+ +

commit

commit: function()

Write out the data to a WFS server.

+ +

commitSuccess

commitSuccess: function(request)

Called when the Ajax request returns a response

Parameters

response{XmlNode} from server
+ +

commitFailure

commitFailure: function(request)

Called when the Ajax request fails

Parameters

response{XmlNode} from server
+ +

commitReport

commitReport: function(string,
response)

Called with a ‘success’ message if the commit succeeded, otherwise a failure message, and the full request text as a second parameter.  Override this function to provide custom transaction reporting.

string{String} reporting string
response{String} full XML response
+ +

refresh

refresh: function()

Refreshes all the features of the layer

+ +

getDataExtent

getDataExtent: function ()

Calculates the max extent which includes all of the layer data.

Returns

{OpenLayers.Bounds}

+ +

setOpacity

setOpacity: function (opacity)

Call the setOpacity method of the appropriate parent class to set the opacity.

Parameter

opacity{Float}
+ +
+ + + + + + + + + + +
Instances of OpenLayers.Tile.WFS are used to manage the image tiles used by various layers.
Features are combinations of geography and attributes.
Base class for format reading/writing a variety of formats.
destroy: function()
setMap: function(map)
moveTo:function(bounds,
zoomChanged,
dragging)
addTileMonitoringHooks: function(tile)
This function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tile (making sure to check that the tile is always the layer’s current tile before taking any action).
removeTileMonitoringHooks: function(tile)
This function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks()
onMapResize: function()
Call the onMapResize method of the appropriate parent class.
display: function()
Call the display method of the appropriate parent class.
mergeNewParams:function(newParams)
Modify parameters for the layer and redraw.
clone: function (obj)
getFullRequestString:function(newParams,
altUrl)
combine the layer’s url with its params and these newParams.
commit: function()
Write out the data to a WFS server.
commitSuccess: function(request)
Called when the Ajax request returns a response
commitFailure: function(request)
Called when the Ajax request fails
commitReport: function(string,
response)
Called with a ‘success’ message if the commit succeeded, otherwise a failure message, and the full request text as a second parameter.
refresh: function()
Refreshes all the features of the layer
getDataExtent: function ()
Calculates the max extent which includes all of the layer data.
setOpacity: function (opacity)
Call the setOpacity method of the appropriate parent class to set the opacity.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Instances of this class represent bounding boxes.
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/WMS-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/WMS-js.html new file mode 100644 index 0000000..d5c7440 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/WMS-js.html @@ -0,0 +1,73 @@ + + +OpenLayers.Layer.WMS - OpenLayers + + + + + + + + + +

OpenLayers.Layer.WMS

Instances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.  Create a new WMS layer with the OpenLayers.Layer.WMS constructor.

Inherits from

Summary
OpenLayers.Layer.WMSInstances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.
Constants
DEFAULT_PARAMS{Object} Hashtable of default parameter key/value pairs
Properties
reprojectDeprecated.
isBaseLayer{Boolean} Default is true for WMS layer
encodeBBOX{Boolean} Should the BBOX commas be encoded? 
noMagic{Boolean} If true, the image format will not be automagicaly switched from image/jpeg to image/png or image/gif when using TRANSPARENT=TRUE.
Constructor
OpenLayers.Layer.WMSCreate a new WMS layer object
Functions
destroyDestroy this layer
cloneCreate a clone of this layer
getURLReturn a GetMap query string for this layer
addTileaddTile creates a tile, initializes it, and adds it to the layer div.
mergeNewParamsCatch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
getFullRequestStringCombine the layer’s url with its params and these newParams.
+ +

Constants

+ +

DEFAULT_PARAMS

{Object} Hashtable of default parameter key/value pairs

+ +

Properties

+ +

reproject

Deprecated.  See http://trac.openlayers.org/wiki/SphericalMercator for information on the replacement for this functionality.  {Boolean} Try to reproject this layer if its coordinate reference system is different than that of the base layer.  Default is true.  Set this in the layer options.  Should be set to false in most cases.

+ +

isBaseLayer

{Boolean} Default is true for WMS layer

+ +

encodeBBOX

{Boolean} Should the BBOX commas be encoded?  The WMS spec says ‘no’, but some services want it that way.  Default false.

+ +

noMagic

{Boolean} If true, the image format will not be automagicaly switched from image/jpeg to image/png or image/gif when using TRANSPARENT=TRUE.  Also isBaseLayer will not changed by the constructor.  Default false.

+ +

Constructor

+ +

OpenLayers.Layer.WMS

Create a new WMS layer object

Example

var wms = new OpenLayers.Layer.WMS("NASA Global Mosaic",
+                                   "http://wms.jpl.nasa.gov/wms.cgi",
+                                   {layers: "modis,global_mosaic"});

Parameters

name{String} A name for the layer
url{String} Base url for the WMS (e.g.  http://wms.jpl.nasa.gov/wms.cgi)
params{Object} An object with key/value pairs representing the GetMap query string parameters and parameter values.
options{Ojbect} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

destroy

destroy: function()

Destroy this layer

+ +

clone

clone: function (obj)

Create a clone of this layer

Returns

{OpenLayers.Layer.WMS} An exact clone of this layer

+ +

getURL

getURL: function (bounds)

Return a GetMap query string for this layer

Parameters

bounds{OpenLayers.Bounds} A bounds representing the bbox for the request.

Returns

{String} A string with the layer’s url and parameters and also the passed-in bounds and appropriate tile size specified as parameters.

+ +

addTile

addTile:function(bounds,
position)

addTile creates a tile, initializes it, and adds it to the layer div.

Parameters

bounds{OpenLayers.Bounds}
position{OpenLayers.Pixel}

Returns

{OpenLayers.Tile.Image} The added OpenLayers.Tile.Image

+ +

mergeNewParams

mergeNewParams:function(newParams)

Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.

Once params have been changed, the tiles will be reloaded with the new parameters.

Parameters

newParams{Object} Hashtable of new params to use
+ +

getFullRequestString

getFullRequestString:function(newParams,
altUrl)

Combine the layer’s url with its params and these newParams.

Add the SRS parameter from projection -- this is probably more eloquently done via a setProjection() method, but this works for now and always.

Parameters

newParams{Object}
altUrl{String} Use this as the url instead of the layer’s url

Returns

{String}

+ +
+ + + + + + + + + + +
destroy: function()
Destroy this layer
clone: function (obj)
Create a clone of this layer
getURL: function (bounds)
Return a GetMap query string for this layer
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
mergeNewParams:function(newParams)
Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
getFullRequestString:function(newParams,
altUrl)
Combine the layer’s url with its params and these newParams.
Create a new WMS layer object
Base class for layers that use a lattice of tiles.
Instances of this class represent bounding boxes.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/WMS/Untiled-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/WMS/Untiled-js.html new file mode 100644 index 0000000..4c9e200 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/WMS/Untiled-js.html @@ -0,0 +1,51 @@ + + +OpenLayers.Layer.WMS.Untiled - OpenLayers + + + + + + + + + +

OpenLayers.Layer.WMS.Untiled

Deprecated.  To be removed in 3.0.  Instead use OpenLayers.Layer.WMS and pass the option ‘singleTile’ as true.

Inherits from

Summary
OpenLayers.Layer.WMS.UntiledDeprecated.
Properties
singleTile{singleTile} Always true for untiled.
Constructor
OpenLayers.Layer.WMS.Untiled
Functions
cloneCreate a clone of this layer
+ +

Properties

+ +

singleTile

{singleTile} Always true for untiled.

+ +

Constructor

+ +

OpenLayers.Layer.WMS.Untiled

Parameters

name{String}
url{String}
params{Object}
options{Object}
+ +

Functions

+ +

clone

clone: function (obj)

Create a clone of this layer

Returns

{OpenLayers.Layer.WMS.Untiled} An exact clone of this layer

+ +
+ + + + + + + + + + +
clone: function (obj)
Create a clone of this layer
Instances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/WorldWind-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/WorldWind-js.html new file mode 100644 index 0000000..6edb451 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/WorldWind-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Layer.WorldWind - OpenLayers + + + + + + + + + +

OpenLayers.Layer.WorldWind

Inherits from

Summary
OpenLayers.Layer.WorldWind
Properties
isBaseLayerWorldWind layer is a base layer by default.
lzdLevelZeroTileSizeDegrees
zoomLevelsNumber of zoom levels.
Constructor
OpenLayers.Layer.WorldWind
Functions
addTile
getZoomConvert map zoom to WW zoom.
getURL
+ +

Properties

+ +

isBaseLayer

WorldWind layer is a base layer by default.

+ +

lzd

LevelZeroTileSizeDegrees

+ +

zoomLevels

Number of zoom levels.

+ +

Constructor

+ +

OpenLayers.Layer.WorldWind

Parameters

name{String} Name of Layer
url{String} Base URL
lzd{Float} Level zero tile size degrees
zoomLevels{Int} number of zoom levels
params{Object} additional parameters
options{Object} additional options
+ +

Functions

+ +

addTile

addTile:function(bounds,
position)

Parameters

bounds{OpenLayers.Bounds}
position{OpenLayers.Pixel}

Returns

{OpenLayers.Tile.Image} The added OpenLayers.Tile.Image

+ +

getZoom

getZoom: function ()

Convert map zoom to WW zoom.

+ +

getURL

getURL: function (bounds)

Parameters

bounds{OpenLayers.Bounds}

Returns

{String} A string with the layer’s url and parameters and also the passed-in bounds and appropriate tile size specified as parameters

+ +
+ + + + + + + + + + +
addTile:function(bounds,
position)
getZoom: function ()
Convert map zoom to WW zoom.
getURL: function (bounds)
Base class for layers that use a lattice of tiles.
Instances of this class represent bounding boxes.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/XYZ-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/XYZ-js.html new file mode 100644 index 0000000..f8608f0 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/XYZ-js.html @@ -0,0 +1,62 @@ + + +OpenLayers.Layer.XYZ - OpenLayers + + + + + + + + + +

OpenLayers.Layer.XYZ

The XYZ class is designed to make it easier for people who have tiles arranged by a standard XYZ grid.

Summary
OpenLayers.Layer.XYZThe XYZ class is designed to make it easier for people who have tiles arranged by a standard XYZ grid.
Properties
isBaseLayerDefault is true, as this is designed to be a base tile source.
sphericalMecatorWhether the tile extents should be set to the defaults for spherical mercator.
Constructor
OpenLayers.Layer.OSM
Functions
cloneCreate a clone of this layer
getUrl
addTileaddTile creates a tile, initializes it, and adds it to the layer div.
setMapWhen the layer is added to a map, then we can fetch our origin (if we don’t have one.)
OpenLayers.Layer.OSMA class to access OpenStreetMap tiles.
+ +

Properties

+ +

isBaseLayer

Default is true, as this is designed to be a base tile source.

+ +

sphericalMecator

Whether the tile extents should be set to the defaults for spherical mercator.  Useful for things like OpenStreetMap.  Default is false, except for the OSM subclass.

+ +

Constructor

+ +

OpenLayers.Layer.OSM

Parameters

name{String}
url{String}
options{Object} Hashtable of extra options to tag onto the layer
+ +

Functions

+ +

clone

clone: function (obj)

Create a clone of this layer

Parameters

obj{Object} Is this ever used?

Returns

{OpenLayers.Layer.Grid} An exact clone of this OpenLayers.Layer.Grid

+ +

getUrl

Parameters

bounds{OpenLayers.Bounds}

Returns

{String} A string with the layer’s url and parameters and also the passed-in bounds and appropriate tile size specified as parameters

+ +

addTile

addTile:function(bounds,
position)

addTile creates a tile, initializes it, and adds it to the layer div.

Parameters

bounds{OpenLayers.Bounds}
position{OpenLayers.Pixel}

Returns

{OpenLayers.Tile.Image} The added OpenLayers.Tile.Image

+ +

setMap

setMap: function(map)

When the layer is added to a map, then we can fetch our origin (if we don’t have one.)

Parameters

map{OpenLayers.Map}
+ +

OpenLayers.Layer.OSM

A class to access OpenStreetMap tiles.  By default, uses the OpenStreetMap hosted tile.openstreetmap.org ‘Mapnik’ tileset.  If you wish to use tiles@home / osmarender layer instead, you can pass a layer like:

new OpenLayers.Layer.OSM("t@h",
+  "http://tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png");

This layer defaults to Spherical Mercator.

+ +
+ + + + + + + + + + +
clone: function (obj)
Create a clone of this layer
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
setMap: function(map)
When the layer is added to a map, then we can fetch our origin (if we don’t have one.)
Base class for layers that use a lattice of tiles.
Instances of this class represent bounding boxes.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Layer/Yahoo-js.html b/openlayers/doc/devdocs/files/OpenLayers/Layer/Yahoo-js.html new file mode 100644 index 0000000..919df3e --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Layer/Yahoo-js.html @@ -0,0 +1,99 @@ + + +OpenLayers.Layer.Yahoo - OpenLayers + + + + + + + + + +

OpenLayers.Layer.Yahoo

Inherits from

Summary
OpenLayers.Layer.Yahoo
Constants
MIN_ZOOM_LEVEL{Integer} 0
MAX_ZOOM_LEVEL{Integer} 17
RESOLUTIONS{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
Properties
type{YahooMapType}
sphericalMercator{Boolean} Should the map act as a mercator-projected map? 
Constructor
OpenLayers.Layer.Yahoo
Functions
loadMapObject
onMapResize
setMapOverridden from EventPane because we need to remove this yahoo event pane which prohibits our drag and drop, and we can only do this once the map has been loaded and centered.
fixYahooEventPaneThe map has been centered, so the mysterious yahoo eventpane has been added.
getWarningHTML{String} String with information on why layer is broken, how to get it working.
getOLZoomFromMapObjectZoom
getMapObjectZoomFromOLZoom
setMapObjectCenterSet the mapObject to the specified center and zoom
getMapObjectCenter{Object} The mapObject’s current center in Map Object format
dragPanMapObject
getMapObjectZoom{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel
getMapObjectPixelFromMapObjectLonLat
getLongitudeFromMapObjectLonLat
getLatitudeFromMapObjectLonLat
getMapObjectLonLatFromLonLat
getXFromMapObjectPixel
getYFromMapObjectPixel
getMapObjectPixelFromXY
getMapObjectSizeFromOLSize
+ +

Constants

+ +

MIN_ZOOM_LEVEL

{Integer} 0

+ +

MAX_ZOOM_LEVEL

{Integer} 17

+ +

RESOLUTIONS

{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection

+ +

Properties

+ +

type

{YahooMapType}

+ +

sphericalMercator

{Boolean} Should the map act as a mercator-projected map?  This will cause all interactions with the map to be in the actual map projection, which allows support for vector drawing, overlaying other maps, etc.

+ +

Constructor

+ +

OpenLayers.Layer.Yahoo

Parameters

name{String}
options{Object}
+ +

Functions

+ +

loadMapObject

loadMapObject:function()
+ +

onMapResize

onMapResize: function()
+ +

setMap

setMap: function(map)

Overridden from EventPane because we need to remove this yahoo event pane which prohibits our drag and drop, and we can only do this once the map has been loaded and centered.

Parameters

map{OpenLayers.Map}
+ +

fixYahooEventPane

fixYahooEventPane: function()

The map has been centered, so the mysterious yahoo eventpane has been added. we remove it so that it doesnt mess with our event pane.

+ +

getWarningHTML

getWarningHTML:function()

Returns

{String} String with information on why layer is broken, how to get it working.

+ +

getOLZoomFromMapObjectZoom

getOLZoomFromMapObjectZoom: function(moZoom)

Parameters

gZoom{Integer}

Returns

{Integer} An OpenLayers Zoom level, translated from the passed in gZoom Returns null if null value is passed in.

+ +

getMapObjectZoomFromOLZoom

getMapObjectZoomFromOLZoom: function(olZoom)

Parameters

olZoom{Integer}

Returns

{Integer} A MapObject level, translated from the passed in olZoom Returns null if null value is passed in

+ +

setMapObjectCenter

setMapObjectCenter: function(center,
zoom)

Set the mapObject to the specified center and zoom

Parameters

center{Object} MapObject LonLat format
zoom{int} MapObject zoom format
+ +

getMapObjectCenter

getMapObjectCenter: function()

Returns

{Object} The mapObject’s current center in Map Object format

+ +

dragPanMapObject

dragPanMapObject: function(dX,
dY)

Parameters

dX{Integer}
dY{Integer}
+ +

getMapObjectZoom

getMapObjectZoom: function()

Returns

{Integer} The mapObject’s current zoom, in Map Object format

+ +

getMapObjectLonLatFromMapObjectPixel

getMapObjectLonLatFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Object} MapObject LonLat translated from MapObject Pixel

+ +

getMapObjectPixelFromMapObjectLonLat

getMapObjectPixelFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Object} MapObject Pixel transtlated from MapObject LonLat

+ +

getLongitudeFromMapObjectLonLat

getLongitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Longitude of the given MapObject LonLat

+ +

getLatitudeFromMapObjectLonLat

getLatitudeFromMapObjectLonLat: function(moLonLat)

Parameters

moLonLat{Object} MapObject LonLat format

Returns

{Float} Latitude of the given MapObject LonLat

+ +

getMapObjectLonLatFromLonLat

getMapObjectLonLatFromLonLat: function(lon,
lat)

Parameters

lon{Float}
lat{Float}

Returns

{Object} MapObject LonLat built from lon and lat params

+ +

getXFromMapObjectPixel

getXFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} X value of the MapObject Pixel

+ +

getYFromMapObjectPixel

getYFromMapObjectPixel: function(moPixel)

Parameters

moPixel{Object} MapObject Pixel format

Returns

{Integer} Y value of the MapObject Pixel

+ +

getMapObjectPixelFromXY

getMapObjectPixelFromXY: function(x,
y)

Parameters

x{Integer}
y{Integer}

Returns

{Object} MapObject Pixel from x and y parameters

+ +

getMapObjectSizeFromOLSize

getMapObjectSizeFromOLSize: function(olSize)

Parameters

olSize{OpenLayers.Size}

Returns

{Object} MapObject Size from olSize parameter

+ +
+ + + + + + + + + + +
loadMapObject:function()
onMapResize: function()
setMap: function(map)
Overridden from EventPane because we need to remove this yahoo event pane which prohibits our drag and drop, and we can only do this once the map has been loaded and centered.
fixYahooEventPane: function()
The map has been centered, so the mysterious yahoo eventpane has been added.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getOLZoomFromMapObjectZoom: function(moZoom)
getMapObjectZoomFromOLZoom: function(olZoom)
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
dragPanMapObject: function(dX,
dY)
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getXFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectSizeFromOLSize: function(olSize)
Base class for 3rd party layers.
Some Layers will already have established zoom levels (like google or ve).
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Instances of this class represent a width/height pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Map-js.html b/openlayers/doc/devdocs/files/OpenLayers/Map-js.html new file mode 100644 index 0000000..356fa6a --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Map-js.html @@ -0,0 +1,298 @@ + + +OpenLayers.Map - OpenLayers + + + + + + + + + +

OpenLayers.Map

Instances of OpenLayers.Map are interactive maps embedded in a web page.  Create a new map with the OpenLayers.Map constructor.

On their own maps do not provide much functionality.  To extend a map it’s necessary to add controls (OpenLayers.Control) and layers (OpenLayers.Layer) to the map.

Summary
OpenLayers.MapInstances of OpenLayers.Map are interactive maps embedded in a web page.
Constants
Z_INDEX_BASE{Object} Base z-indexes for different classes of thing
EVENT_TYPES{Array(String)} Supported application event types.
Properties
id{String} Unique identifier for the map
fractionalZoom{Boolean} For a base layer that supports it, allow the map resolution to be set to a value between one of the values in the resolutions array.
events{OpenLayers.Events} An events object that handles all events on the map
allOverlays{Boolean} Allow the map to function with “overlays” only.
div{DOMElement|String} The element that contains the map (or an id for that element).
dragging{Boolean} The map is currently being dragged.
size{OpenLayers.Size} Size of the main div (this.div)
viewPortDiv{HTMLDivElement} The element that represents the map viewport
layerContainerOrigin{OpenLayers.LonLat} The lonlat at which the later container was re-initialized (on-zoom)
layerContainerDiv{HTMLDivElement} The element that contains the layers.
layers{Array(OpenLayers.Layer)} Ordered list of layers in the map
controls{Array(OpenLayers.Control)} List of controls associated with the map.
popups{Array(OpenLayers.Popup)} List of popups associated with the map
baseLayer{OpenLayers.Layer} The currently selected base layer.
center{OpenLayers.LonLat} The current center of the map
resolution{Float} The resolution of the map.
zoom{Integer} The current zoom level of the map
panRatio{Float} The ratio of the current extent within which panning will tween.
viewRequestID{String} Used to store a unique identifier that changes when the map view changes.
tileSize{OpenLayers.Size} Set in the map options to override the default tile size for this map.
projection{String} Set in the map options to override the default projection string this map - also set maxExtent, maxResolution, and units if appropriate.
units{String} The map units.
resolutions{Array(Float)} A list of map resolutions (map units per pixel) in descending order.
maxResolution{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
minResolution{Float}
maxScale{Float}
minScale{Float}
maxExtent{OpenLayers.Bounds} The maximum extent for the map.
minExtent{OpenLayers.Bounds}
restrictedExtent{OpenLayers.Bounds} Limit map navigation to this extent where possible.
numZoomLevels{Integer} Number of zoom levels for the map.
theme{String} Relative path to a CSS file from which to load theme styles.
displayProjection{OpenLayers.Projection} Requires proj4js support.Projection used by several controls to display data to user.
fallThrough{Boolean} Should OpenLayers allow events on the map to fall through to other elements on the page, or should it swallow them? 
panTween{OpenLayers.Tween} Animated panning tween object, see panTo()
eventListeners{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
panMethod{Function} The Easing function to be used for tweening.
panDuration{Integer} The number of steps to be passed to the OpenLayers.Tween.start() method when the map is panned.
paddingForPopups{OpenLayers.Bounds} Outside margin of the popup.
Constructor
OpenLayers.MapConstructor for a new OpenLayers.Map instance.
Functions
renderRender the map to a specified container.
unloadDestroyFunction that is called to destroy the map on page unload.
updateSizeDestroyWhen the map is destroyed, we need to stop listening to updateSize events: this method stores the function we need to unregister in non-IE browsers.
destroyDestroy this map
setOptionsChange the map options
getTileSizeGet the tile size for the map
getByGet a list of objects given a property and a match item.
getLayersByGet a list of layers with properties matching the given criteria.
getLayersByNameGet a list of layers with names matching the given name.
getLayersByClassGet a list of layers of a given class (CLASS_NAME).
getControlsByGet a list of controls with properties matching the given criteria.
getControlsByClassGet a list of controls of a given class (CLASS_NAME).
getLayerGet a layer based on its id
setLayerZIndex
resetLayersZIndexReset each layer’s z-index based on layer’s array index
addLayer
addLayers
removeLayerRemoves a layer from the map by removing its visual element (the layer.div property), then removing it from the map’s internal list of layers, setting the layer’s map property to null.
getNumLayers{Int} The number of layers attached to the map.
getLayerIndex
setLayerIndexMove the given layer to the specified (zero-based) index in the layer list, changing its z-index in the map display.
raiseLayerChange the index of the given layer by delta.
setBaseLayerAllows user to specify one of the currently-loaded layers as the Map’s new base layer.
addControl
addControlToMap
getControl
removeControlRemove a control from the map.
addPopup
removePopup
getSize{OpenLayers.Size} An OpenLayers.Size object that represents the size, in pixels, of the div into which OpenLayers has been loaded.
updateSizeThis function should be called by any external code which dynamically changes the size of the map div (because mozilla wont let us catch the “onresize” for an element)
getCurrentSize{OpenLayers.Size} A new OpenLayers.Size object with the dimensions of the map div
calculateBounds
getCenter{OpenLayers.LonLat}
getZoom{Integer}
panAllows user to pan by a value of screen pixels
panToAllows user to pan to a new lonlat If the new lonlat is in the current extent the map will slide smoothly
setCenterSet the map center (and optionally, the zoom level).
moveTo
centerLayerContainerThis function takes care to recenter the layerContainerDiv.
isValidZoomLevel
isValidLonLat
getProjectionThis method returns a string representing the projection.
getProjectionObjectReturns the projection obect from the baselayer.
getMaxResolution{String} The Map’s Maximum Resolution
getMaxExtent
getNumZoomLevels{Integer} The total number of zoom levels that can be displayed by the current baseLayer.
getExtent{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getResolution{Float} The current resolution of the map.
getUnits{Float} The current units of the map.
getScale{Float} The current scale denominator of the map.
getZoomForExtent
getResolutionForZoom
getZoomForResolution
zoomToZoom to a specific zoom level
zoomIn
zoomOut
zoomToExtentZoom to the passed in bounds, recenter
zoomToMaxExtentZoom to the full extent and recenter.
zoomToScaleZoom to a specified scale
getLonLatFromViewPortPx
getViewPortPxFromLonLat
getLonLatFromPixel
getPixelFromLonLatReturns a pixel location given a map location.
getViewPortPxFromLayerPx
getLayerPxFromViewPortPx
getLonLatFromLayerPx
getLayerPxFromLonLat
Constants
TILE_WIDTH{Integer} 256 Default tile width (unless otherwise specified)
TILE_HEIGHT{Integer} 256 Default tile height (unless otherwise specified)
+ +

Constants

+ +

Z_INDEX_BASE

{Object} Base z-indexes for different classes of thing

+ +

EVENT_TYPES

{Array(String)} Supported application event types.  Register a listener for a particular event with the following syntax:

map.events.register(type, obj, listener);

Listeners will be called with a reference to an event object.  The properties of this event depends on exactly what happened.

All event objects have at least the following properties

  • object {Object} A reference to map.events.object.
  • element {DOMElement} A reference to map.events.element.

Browser events have the following additional properties

  • xy {OpenLayers.Pixel} The pixel location of the event (relative to the the map viewport).
  • other properties that come with browser events

Supported map event types

  • preaddlayer triggered before a layer has been added.  The event object will include a layer property that references the layer to be added.
  • addlayer triggered after a layer has been added.  The event object will include a layer property that references the added layer.
  • removelayer triggered after a layer has been removed.  The event object will include a layer property that references the removed layer.
  • changelayer triggered after a layer name change, order change, or visibility change (due to resolution thresholds).  Listeners will receive an event object with layer and property properties.  The layer property will be a reference to the changed layer.  The property property will be a key to the changed property (name, visibility, or order).
  • movestart triggered after the start of a drag, pan, or zoom
  • move triggered after each drag, pan, or zoom
  • moveend triggered after a drag, pan, or zoom completes
  • zoomend triggered after a zoom completes
  • addmarker triggered after a marker has been added
  • removemarker triggered after a marker has been removed
  • clearmarkers triggered after markers have been cleared
  • mouseover triggered after mouseover the map
  • mouseout triggered after mouseout the map
  • mousemove triggered after mousemove the map
  • dragstart Does not work.  Register for movestart instead.
  • drag Does not work.  Register for move instead.
  • dragend Does not work.  Register for moveend instead.
  • changebaselayer triggered after the base layer changes
+ +

Properties

+ +

id

{String} Unique identifier for the map

+ +

fractionalZoom

{Boolean} For a base layer that supports it, allow the map resolution to be set to a value between one of the values in the resolutions array.  Default is false.

When fractionalZoom is set to true, it is possible to zoom to an arbitrary extent.  This requires a base layer from a source that supports requests for arbitrary extents (i.e. not cached tiles on a regular lattice).  This means that fractionalZoom will not work with commercial layers (Google, Yahoo, VE), layers using TileCache, or any other pre-cached data sources.

If you are using fractionalZoom, then you should also use getResolutionForZoom instead of layer.resolutions[zoom] as the former works for non-integer zoom levels.

+ +

events

{OpenLayers.Events} An events object that handles all events on the map

+ +

allOverlays

{Boolean} Allow the map to function with “overlays” only.  Defaults to false.  If true, the lowest layer in the draw order will act as the base layer.  In addition, if set to true, all layers will have isBaseLayer set to false when they are added to the map.

Note

If you set map.allOverlays to true, then you cannot use map.setBaseLayer or layer.setIsBaseLayer.  With allOverlays true, the lowest layer in the draw layer is the base layer.  So, to change the base layer, use setLayerIndex or raiseLayer to set the layer index to 0.

+ +

div

{DOMElement|String} The element that contains the map (or an id for that element).  If the OpenLayers.Map constructor is called with two arguments, this should be provided as the first argument.  Alternatively, the map constructor can be called with the options object as the only argument.  In this case (one argument), a div property may or may not be provided.  If the div property is not provided, the map can be rendered to a container later using the render method.

Note: If you calling render after map construction, do not use maxResolution auto.  Instead, divide your maxExtent by your maximum expected dimension.

+ +

dragging

{Boolean} The map is currently being dragged.

+ +

size

{OpenLayers.Size} Size of the main div (this.div)

+ +

viewPortDiv

{HTMLDivElement} The element that represents the map viewport

+ +

layerContainerOrigin

{OpenLayers.LonLat} The lonlat at which the later container was re-initialized (on-zoom)

+ +

layerContainerDiv

{HTMLDivElement} The element that contains the layers.

+ +

layers

{Array(OpenLayers.Layer)} Ordered list of layers in the map

+ +

controls

{Array(OpenLayers.Control)} List of controls associated with the map.

If not provided in the map options at construction, the map will be given the following controls by default:

+ +

popups

{Array(OpenLayers.Popup)} List of popups associated with the map

+ +

baseLayer

{OpenLayers.Layer} The currently selected base layer.  This determines min/max zoom level, projection, etc.

+ +

center

{OpenLayers.LonLat} The current center of the map

+ +

resolution

{Float} The resolution of the map.

+ +

zoom

{Integer} The current zoom level of the map

+ +

panRatio

{Float} The ratio of the current extent within which panning will tween.

+ +

viewRequestID

{String} Used to store a unique identifier that changes when the map view changes. viewRequestID should be used when adding data asynchronously to the map: viewRequestID is incremented when you initiate your request (right now during changing of baselayers and changing of zooms).  It is stored here in the map and also in the data that will be coming back asynchronously.  Before displaying this data on request completion, we check that the viewRequestID of the data is still the same as that of the map.  Fix for #480

+ +

tileSize

{OpenLayers.Size} Set in the map options to override the default tile size for this map.

+ +

projection

{String} Set in the map options to override the default projection string this map - also set maxExtent, maxResolution, and units if appropriate.  Default is “EPSG:4326”.

+ +

units

{String} The map units.  Defaults to ‘degrees’.  Possible values are ‘degrees’ (or ‘dd’), ‘m’, ‘ft’, ‘km’, ‘mi’, ‘inches’.

+ +

resolutions

{Array(Float)} A list of map resolutions (map units per pixel) in descending order.  If this is not set in the layer constructor, it will be set based on other resolution related properties (maxExtent, maxResolution, maxScale, etc.).

+ +

maxResolution

{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.  Specify a different value in the map options if you are not using a geographic projection and displaying the whole world.

+ +

minResolution

{Float}

+ +

maxScale

{Float}

+ +

minScale

{Float}

+ +

maxExtent

{OpenLayers.Bounds} The maximum extent for the map.  Defaults to the whole world in decimal degrees (-180, -90, 180, 90).  Specify a different extent in the map options if you are not using a geographic projection and displaying the whole world.

+ + + +

restrictedExtent

{OpenLayers.Bounds} Limit map navigation to this extent where possible.  If a non-null restrictedExtent is set, panning will be restricted to the given bounds.  In addition, zooming to a resolution that displays more than the restricted extent will center the map on the restricted extent.  If you wish to limit the zoom level or resolution, use maxResolution.

+ +

numZoomLevels

{Integer} Number of zoom levels for the map.  Defaults to 16.  Set a different value in the map options if needed.

+ +

theme

{String} Relative path to a CSS file from which to load theme styles.  Specify null in the map options (e.g.  {theme: null}) if you want to get cascading style declarations - by putting links to stylesheets or style declarations directly in your page.

+ +

displayProjection

{OpenLayers.Projection} Requires proj4js support.Projection used by several controls to display data to user.  If this property is set, it will be set on any control which has a null displayProjection property at the time the control is added to the map.

+ +

fallThrough

{Boolean} Should OpenLayers allow events on the map to fall through to other elements on the page, or should it swallow them?  (#457) Default is to fall through.

+ +

panTween

{OpenLayers.Tween} Animated panning tween object, see panTo()

+ +

eventListeners

{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.  Object structure must be a listeners object as shown in the example for the events.on method.

+ +

panMethod

{Function} The Easing function to be used for tweening.  Default is OpenLayers.Easing.Expo.easeOut.  Setting this to ‘null’ turns off animated panning.

+ +

panDuration

{Integer} The number of steps to be passed to the OpenLayers.Tween.start() method when the map is panned.  Default is 50.

+ +

paddingForPopups

{OpenLayers.Bounds} Outside margin of the popup.  Used to prevent the popup from getting too close to the map border.

+ +

Constructor

+ +

OpenLayers.Map

Constructor for a new OpenLayers.Map instance.  There are two possible ways to call the map constructor.  See the examples below.

Parameters

div{String} Id of an element in your page that will contain the map.  May be omitted if the div option is provided or if you intend to use render later.
options{Object} Optional object with properties to tag onto the map.

Examples (method one)

// create a map with default options in an element with the id "map1"
+var map = new OpenLayers.Map("map1");
+
+// create a map with non-default options in an element with id "map2"
+var options = {
+    maxExtent: new OpenLayers.Bounds(-200000, -200000, 200000, 200000),
+    maxResolution: 156543,
+    units: 'm',
+    projection: "EPSG:41001"
+};
+var map = new OpenLayers.Map("map2", options);
Examples (method twosingle argument):
// create a map with non-default options
+var map = new OpenLayers.Map({
+    div: "map_id",
+    maxExtent: new OpenLayers.Bounds(-200000, -200000, 200000, 200000),
+    maxResolution: 156543,
+    units: 'm',
+    projection: "EPSG:41001"
+});
+
+// create a map without a reference to a container - call render later
+var map = new OpenLayers.Map({
+    maxExtent: new OpenLayers.Bounds(-200000, -200000, 200000, 200000),
+    maxResolution: 156543,
+    units: 'm',
+    projection: "EPSG:41001"
+});
+ +

Functions

+ +

render

render: function(div)

Render the map to a specified container.

Parameters

div{String|DOMElement} The container that the map should be rendered to.  If different than the current container, the map viewport will be moved from the current to the new container.
+ +

unloadDestroy

Function that is called to destroy the map on page unload. stored here so that if map is manually destroyed, we can unregister this.

+ +

updateSizeDestroy

When the map is destroyed, we need to stop listening to updateSize events: this method stores the function we need to unregister in non-IE browsers.

+ +

destroy

destroy:function()

Destroy this map

+ +

setOptions

setOptions: function(options)

Change the map options

Parameters

options{Object} Hashtable of options to tag to the map
+ +

getTileSize

getTileSize: function()

Get the tile size for the map

Returns

{OpenLayers.Size}

+ +

getBy

getBy: function(array,
property,
match)

Get a list of objects given a property and a match item.

Parameters

array{String} A property on the map whose value is an array.
property{String} A property on each item of the given array.
match{String | Object} A string to match.  Can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if match.test(map[array][i][property]) evaluates to true, the item will be included in the array returned.  If no items are found, an empty array is returned.

Returns

{Array} An array of items where the given property matches the given criteria.

+ +

getLayersBy

getLayersBy: function(property,
match)

Get a list of layers with properties matching the given criteria.

Parameter

property{String} A layer property to be matched.
match{String | Object} A string to match.  Can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if match.test(layer[property]) evaluates to true, the layer will be included in the array returned.  If no layers are found, an empty array is returned.

Returns

{Array(OpenLayers.Layer)} A list of layers matching the given criteria.  An empty array is returned if no matches are found.

+ +

getLayersByName

getLayersByName: function(match)

Get a list of layers with names matching the given name.

Parameter

match{String | Object} A layer name.  The name can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if name.test(layer.name) evaluates to true, the layer will be included in the list of layers returned.  If no layers are found, an empty array is returned.

Returns

{Array(OpenLayers.Layer)} A list of layers matching the given name.  An empty array is returned if no matches are found.

+ +

getLayersByClass

getLayersByClass: function(match)

Get a list of layers of a given class (CLASS_NAME).

Parameter

match{String | Object} A layer class name.  The match can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if type.test(layer.CLASS_NAME) evaluates to true, the layer will be included in the list of layers returned.  If no layers are found, an empty array is returned.

Returns

{Array(OpenLayers.Layer)} A list of layers matching the given class.  An empty array is returned if no matches are found.

+ +

getControlsBy

getControlsBy: function(property,
match)

Get a list of controls with properties matching the given criteria.

Parameter

property{String} A control property to be matched.
match{String | Object} A string to match.  Can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if match.test(layer[property]) evaluates to true, the layer will be included in the array returned.  If no layers are found, an empty array is returned.

Returns

{Array(OpenLayers.Control)} A list of controls matching the given criteria.  An empty array is returned if no matches are found.

+ +

getControlsByClass

getControlsByClass: function(match)

Get a list of controls of a given class (CLASS_NAME).

Parameter

match{String | Object} A control class name.  The match can also be a regular expression literal or object.  In addition, it can be any object with a method named test.  For reqular expressions or other, if type.test(control.CLASS_NAME) evaluates to true, the control will be included in the list of controls returned.  If no controls are found, an empty array is returned.

Returns

{Array(OpenLayers.Control)} A list of controls matching the given class.  An empty array is returned if no matches are found.

+ +

getLayer

getLayer: function(id)

Get a layer based on its id

Parameter

id{String} A layer id

Returns

{OpenLayers.Layer} The Layer with the corresponding id from the map’s layer collection, or null if not found.

+ +

setLayerZIndex

setLayerZIndex: function (layer,
zIdx)

Parameters

layer{OpenLayers.Layer}
zIdx{int}
+ +

resetLayersZIndex

resetLayersZIndex: function()

Reset each layer’s z-index based on layer’s array index

+ +

addLayer

addLayer: function (layer)

Parameters

layer{OpenLayers.Layer}
+ +

addLayers

addLayers: function (layers)

Parameters

layers{Array(OpenLayers.Layer)}
+ +

removeLayer

removeLayer: function(layer,
setNewBaseLayer)

Removes a layer from the map by removing its visual element (the layer.div property), then removing it from the map’s internal list of layers, setting the layer’s map property to null.

a “removelayer” event is triggered.

very worthy of mention is that simply removing a layer from a map will not cause the removal of any popups which may have been created by the layer. this is due to the fact that it was decided at some point that popups would not belong to layers. thus there is no way for us to know here to which layer the popup belongs.

A simple solution to this is simply to call destroy() on the layer. the default OpenLayers.Layer class’s destroy() function automatically takes care to remove itself from whatever map it has been attached to.

The correct solution is for the layer itself to register an event-handler on “removelayer” and when it is called, if it recognizes itself as the layer being removed, then it cycles through its own personal list of popups, removing them from the map.

Parameters

layer{OpenLayers.Layer}
setNewBaseLayer{Boolean} Default is true
+ +

getNumLayers

getNumLayers: function ()

Returns

{Int} The number of layers attached to the map.

+ +

getLayerIndex

getLayerIndex: function (layer)

Parameters

layer{OpenLayers.Layer}

Returns

{Integer} The current (zero-based) index of the given layer in the map’s layer stack.  Returns -1 if the layer isn’t on the map.

+ +

setLayerIndex

setLayerIndex: function (layer,
idx)

Move the given layer to the specified (zero-based) index in the layer list, changing its z-index in the map display.  Use map.getLayerIndex() to find out the current index of a layer.  Note that this cannot (or at least should not) be effectively used to raise base layers above overlays.

Parameters

layer{OpenLayers.Layer}
idx{int}
+ +

raiseLayer

raiseLayer: function (layer,
delta)

Change the index of the given layer by delta.  If delta is positive, the layer is moved up the map’s layer stack; if delta is negative, the layer is moved down.  Again, note that this cannot (or at least should not) be effectively used to raise base layers above overlays.

Paremeters

layer{OpenLayers.Layer}
delta{int}
+ +

setBaseLayer

setBaseLayer: function(newBaseLayer)

Allows user to specify one of the currently-loaded layers as the Map’s new base layer.

Parameters

newBaseLayer{OpenLayers.Layer}
+ +

addControl

addControl: function (control,
px)

Parameters

control{OpenLayers.Control}
px{OpenLayers.Pixel}
+ +

addControlToMap

addControlToMap: function (control,
px)

Parameters

control{OpenLayers.Control}
px{OpenLayers.Pixel}
+ +

getControl

getControl: function (id)

Parameters

id{String} ID of the control to return.

Returns

{OpenLayers.Control} The control from the map’s list of controls which has a matching ‘id’.  If none found, returns null.

+ +

removeControl

removeControl: function (control)

Remove a control from the map.  Removes the control both from the map object’s internal array of controls, as well as from the map’s viewPort (assuming the control was not added outsideViewport)

Parameters

control{OpenLayers.Control} The control to remove.
+ +

addPopup

addPopup: function(popup,
exclusive)

Parameters

popup{OpenLayers.Popup}
exclusive{Boolean} If true, closes all other popups first
+ +

removePopup

removePopup: function(popup)

Parameters

popup{OpenLayers.Popup}
+ +

getSize

getSize: function ()

Returns

{OpenLayers.Size} An OpenLayers.Size object that represents the size, in pixels, of the div into which OpenLayers has been loaded.  Note - A clone() of this locally cached variable is returned, so as not to allow users to modify it.

+ +

updateSize

updateSize: function()

This function should be called by any external code which dynamically changes the size of the map div (because mozilla wont let us catch the “onresize” for an element)

+ +

getCurrentSize

getCurrentSize: function()

Returns

{OpenLayers.Size} A new OpenLayers.Size object with the dimensions of the map div

+ +

calculateBounds

calculateBounds: function(center,
resolution)

Parameters

center{OpenLayers.LonLat} Default is this.getCenter()
resolution{float} Default is this.getResolution()

Returns

{OpenLayers.Bounds} A bounds based on resolution, center, and current mapsize.

+ +

getCenter

getCenter: function ()

Returns

{OpenLayers.LonLat}

+ +

getZoom

getZoom: function ()

Returns

{Integer}

+ +

pan

pan: function(dx,
dy,
options)

Allows user to pan by a value of screen pixels

Parameters

dx{Integer}
dy{Integer}
options{Object} Options to configure panning:
  • animate {Boolean} Use panTo instead of setCenter.  Default is true.
  • dragging {Boolean} Call setCenter with dragging true.  Default is false.
+ +

panTo

panTo: function(lonlat)

Allows user to pan to a new lonlat If the new lonlat is in the current extent the map will slide smoothly

Parameters

lonlat{<OpenLayers.Lonlat>}
+ +

setCenter

setCenter: function(lonlat,
zoom,
dragging,
forceZoomChange)

Set the map center (and optionally, the zoom level).

Parameters

lonlat{OpenLayers.LonLat} The new center location.
zoom{Integer} Optional zoom level.
dragging{Boolean} Specifies whether or not to trigger movestart/end events
forceZoomChange{Boolean} Specifies whether or not to trigger zoom change events (needed on baseLayer change)

TBD: reconsider forceZoomChange in 3.0

+ +

moveTo

moveTo: function(lonlat,
zoom,
options)

Parameters

lonlat{OpenLayers.LonLat}
zoom{Integer}
options{Object}
+ +

centerLayerContainer

centerLayerContainer: function (lonlat)

This function takes care to recenter the layerContainerDiv.

Parameters

lonlat{OpenLayers.LonLat}
+ +

isValidZoomLevel

isValidZoomLevel: function(zoomLevel)

Parameters

zoomLevel{Integer}

Returns

{Boolean} Whether or not the zoom level passed in is non-null and within the min/max range of zoom levels.

+ +

isValidLonLat

isValidLonLat: function(lonlat)

Parameters

lonlat{OpenLayers.LonLat}

Returns

{Boolean} Whether or not the lonlat passed in is non-null and within the maxExtent bounds

+ +

getProjection

getProjection: function()

This method returns a string representing the projection.  In the case of projection support, this will be the srsCode which is loaded -- otherwise it will simply be the string value that was passed to the projection at startup.

FIXME: In 3.0, we will remove getProjectionObject, and instead return a Projection object from this function.

Returns

{String} The Projection string from the base layer or null.

+ +

getProjectionObject

getProjectionObject: function()

Returns the projection obect from the baselayer.

Returns

{OpenLayers.Projection} The Projection of the base layer.

+ +

getMaxResolution

getMaxResolution: function()

Returns

{String} The Map’s Maximum Resolution

+ +

getMaxExtent

getMaxExtent: function (options)

Parameters

options{Object}

Allowed Options

restricted{Boolean} If true, returns restricted extent (if it is available.)

Returns

{OpenLayers.Bounds} The maxExtent property as set on the current baselayer, unless the ‘restricted’ option is set, in which case the ‘restrictedExtent’ option from the map is returned (if it is set).

+ +

getNumZoomLevels

getNumZoomLevels: function()

Returns

{Integer} The total number of zoom levels that can be displayed by the current baseLayer.

+ +

getExtent

getExtent: function ()

Returns

{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.  If no baselayer is set, returns null.

+ +

getResolution

getResolution: function ()

Returns

{Float} The current resolution of the map.  If no baselayer is set, returns null.

+ +

getUnits

getUnits: function ()

Returns

{Float} The current units of the map.  If no baselayer is set, returns null.

+ +

getScale

getScale: function ()

Returns

{Float} The current scale denominator of the map.  If no baselayer is set, returns null.

+ +

getZoomForExtent

getZoomForExtent: function (bounds,
closest)

Parameters

bounds{OpenLayers.Bounds}
closest{Boolean} Find the zoom level that most closely fits the specified bounds.  Note that this may result in a zoom that does not exactly contain the entire extent.  Default is false.

Returns

{Integer} A suitable zoom level for the specified bounds.  If no baselayer is set, returns null.

+ +

getResolutionForZoom

getResolutionForZoom: function(zoom)

Parameter

zoom{Float}

Returns

{Float} A suitable resolution for the specified zoom.  If no baselayer is set, returns null.

+ +

getZoomForResolution

getZoomForResolution: function(resolution,
closest)

Parameter

resolution{Float}
closest{Boolean} Find the zoom level that corresponds to the absolute closest resolution, which may result in a zoom whose corresponding resolution is actually smaller than we would have desired (if this is being called from a getZoomForExtent() call, then this means that the returned zoom index might not actually contain the entire extent specified... but it’ll be close).  Default is false.

Returns

{Integer} A suitable zoom level for the specified resolution.  If no baselayer is set, returns null.

+ +

zoomTo

zoomTo: function(zoom)

Zoom to a specific zoom level

Parameters

zoom{Integer}
+ +

zoomIn

zoomIn: function()

Parameters

zoom{int}
+ +

zoomOut

zoomOut: function()

Parameters

zoom{int}
+ +

zoomToExtent

zoomToExtent: function(bounds,
closest)

Zoom to the passed in bounds, recenter

Parameters

bounds{OpenLayers.Bounds}
closest{Boolean} Find the zoom level that most closely fits the specified bounds.  Note that this may result in a zoom that does not exactly contain the entire extent.  Default is false.
+ +

zoomToMaxExtent

zoomToMaxExtent: function(options)

Zoom to the full extent and recenter.

Parameters

options -

Allowed Options

restricted{Boolean} True to zoom to restricted extent if it is set.  Defaults to true.
+ +

zoomToScale

zoomToScale: function(scale,
closest)

Zoom to a specified scale

Parameters

scale{float}
closest{Boolean} Find the zoom level that most closely fits the specified scale.  Note that this may result in a zoom that does not exactly contain the entire extent.  Default is false.
+ +

getLonLatFromViewPortPx

getLonLatFromViewPortPx: function (viewPortPx)

Parameters

viewPortPx{OpenLayers.Pixel}

Returns

{OpenLayers.LonLat} An OpenLayers.LonLat which is the passed-in view port OpenLayers.Pixel, translated into lon/lat by the current base layer.

+ +

getViewPortPxFromLonLat

getViewPortPxFromLonLat: function (lonlat)

Parameters

lonlat{OpenLayers.LonLat}

Returns

{OpenLayers.Pixel} An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat, translated into view port pixels by the current base layer.

+ +

getLonLatFromPixel

getLonLatFromPixel: function (px)

Parameters

px{OpenLayers.Pixel}

Returns

{OpenLayers.LonLat} An OpenLayers.LonLat corresponding to the given OpenLayers.Pixel, translated into lon/lat by the current base layer

+ +

getPixelFromLonLat

getPixelFromLonLat: function (lonlat)

Returns a pixel location given a map location.  The map location is translated to an integer pixel location (in viewport pixel coordinates) by the current base layer.

Parameters

lonlat{OpenLayers.LonLat} A map location.

Returns

{OpenLayers.Pixel} An OpenLayers.Pixel corresponding to the OpenLayers.LonLat translated into view port pixels by the current base layer.

+ +

getViewPortPxFromLayerPx

getViewPortPxFromLayerPx:function(layerPx)

Parameters

layerPx{OpenLayers.Pixel}

Returns

{OpenLayers.Pixel} Layer Pixel translated into ViewPort Pixel coordinates

+ +

getLayerPxFromViewPortPx

getLayerPxFromViewPortPx:function(viewPortPx)

Parameters

viewPortPx{OpenLayers.Pixel}

Returns

{OpenLayers.Pixel} ViewPort Pixel translated into Layer Pixel coordinates

+ +

getLonLatFromLayerPx

getLonLatFromLayerPx: function (px)

Parameters

px{OpenLayers.Pixel}

Returns

{OpenLayers.LonLat}

+ +

getLayerPxFromLonLat

getLayerPxFromLonLat: function (lonlat)

Parameters

lonlat{OpenLayers.LonLat} lonlat

Returns

{OpenLayers.Pixel} An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat, translated into layer pixels by the current base layer

+ +

Constants

+ +

TILE_WIDTH

{Integer} 256 Default tile width (unless otherwise specified)

+ +

TILE_HEIGHT

{Integer} 256 Default tile height (unless otherwise specified)

+ +
+ + + + + + + + + + +
Instances of this class represent a width/height pair
This class represents a longitude and latitude pair
Controls affect the display or behavior of the map.
A popup is a small div that can opened and closed on the map.
Instances of this class represent bounding boxes.
Class for coordinate transforms between coordinate systems.
on: function(object)
Convenience method for registering listeners with a common scope.
render: function(div)
Render the map to a specified container.
destroy:function()
Destroy this map
setOptions: function(options)
Change the map options
getTileSize: function()
Get the tile size for the map
getBy: function(array,
property,
match)
Get a list of objects given a property and a match item.
getLayersBy: function(property,
match)
Get a list of layers with properties matching the given criteria.
getLayersByName: function(match)
Get a list of layers with names matching the given name.
getLayersByClass: function(match)
Get a list of layers of a given class (CLASS_NAME).
getControlsBy: function(property,
match)
Get a list of controls with properties matching the given criteria.
getControlsByClass: function(match)
Get a list of controls of a given class (CLASS_NAME).
getLayer: function(id)
Get a layer based on its id
setLayerZIndex: function (layer,
zIdx)
resetLayersZIndex: function()
Reset each layer’s z-index based on layer’s array index
addLayer: function (layer)
addLayers: function (layers)
removeLayer: function(layer,
setNewBaseLayer)
Removes a layer from the map by removing its visual element (the layer.div property), then removing it from the map’s internal list of layers, setting the layer’s map property to null.
getNumLayers: function ()
{Int} The number of layers attached to the map.
getLayerIndex: function (layer)
setLayerIndex: function (layer,
idx)
Move the given layer to the specified (zero-based) index in the layer list, changing its z-index in the map display.
raiseLayer: function (layer,
delta)
Change the index of the given layer by delta.
setBaseLayer: function(newBaseLayer)
Allows user to specify one of the currently-loaded layers as the Map’s new base layer.
addControl: function (control,
px)
addControlToMap: function (control,
px)
getControl: function (id)
removeControl: function (control)
Remove a control from the map.
addPopup: function(popup,
exclusive)
removePopup: function(popup)
getSize: function ()
{OpenLayers.Size} An OpenLayers.Size object that represents the size, in pixels, of the div into which OpenLayers has been loaded.
updateSize: function()
This function should be called by any external code which dynamically changes the size of the map div (because mozilla wont let us catch the “onresize” for an element)
getCurrentSize: function()
{OpenLayers.Size} A new OpenLayers.Size object with the dimensions of the map div
calculateBounds: function(center,
resolution)
getCenter: function ()
{OpenLayers.LonLat}
getZoom: function ()
{Integer}
pan: function(dx,
dy,
options)
Allows user to pan by a value of screen pixels
panTo: function(lonlat)
Allows user to pan to a new lonlat If the new lonlat is in the current extent the map will slide smoothly
setCenter: function(lonlat,
zoom,
dragging,
forceZoomChange)
Set the map center (and optionally, the zoom level).
moveTo: function(lonlat,
zoom,
options)
centerLayerContainer: function (lonlat)
This function takes care to recenter the layerContainerDiv.
isValidZoomLevel: function(zoomLevel)
isValidLonLat: function(lonlat)
getProjection: function()
This method returns a string representing the projection.
getProjectionObject: function()
Returns the projection obect from the baselayer.
getMaxResolution: function()
{String} The Map’s Maximum Resolution
getMaxExtent: function (options)
getNumZoomLevels: function()
{Integer} The total number of zoom levels that can be displayed by the current baseLayer.
getExtent: function ()
{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getResolution: function ()
{Float} The current resolution of the map.
getUnits: function ()
{Float} The current units of the map.
getScale: function ()
{Float} The current scale denominator of the map.
getZoomForExtent: function (bounds,
closest)
getResolutionForZoom: function(zoom)
getZoomForResolution: function(resolution,
closest)
zoomTo: function(zoom)
Zoom to a specific zoom level
zoomIn: function()
zoomOut: function()
zoomToExtent: function(bounds,
closest)
Zoom to the passed in bounds, recenter
zoomToMaxExtent: function(options)
Zoom to the full extent and recenter.
zoomToScale: function(scale,
closest)
Zoom to a specified scale
getLonLatFromViewPortPx: function (viewPortPx)
getViewPortPxFromLonLat: function (lonlat)
getLonLatFromPixel: function (px)
getPixelFromLonLat: function (lonlat)
Returns a pixel location given a map location.
getViewPortPxFromLayerPx:function(layerPx)
getLayerPxFromViewPortPx:function(viewPortPx)
getLonLatFromLayerPx: function (px)
getLayerPxFromLonLat: function (lonlat)
Constructor for a new OpenLayers.Map instance.
This class represents a screen coordinate, in x and y coordinates
{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
{OpenLayers.Bounds} The maximum extent for the map.
The navigation control handles map browsing with mouse events (dragging, double-clicking, and scrolling the wheel).
The PanZoom is a visible control, composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomPanel.
The ArgParser control adds location bar querystring parsing functionality to an OpenLayers Map.
The attribution control adds attribution from layers to the map display.
{DOMElement|String} The element that contains the map (or an id for that element).
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Marker-js.html b/openlayers/doc/devdocs/files/OpenLayers/Marker-js.html new file mode 100644 index 0000000..7cb0f04 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Marker-js.html @@ -0,0 +1,84 @@ + + +OpenLayers.Marker - OpenLayers + + + + + + + + + +

OpenLayers.Marker

Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.

Markers are generally added to a special layer called OpenLayers.Layer.Markers.

Example

var markers = new OpenLayers.Layer.Markers( "Markers" );
+map.addLayer(markers);
+
+var size = new OpenLayers.Size(10,17);
+var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
+var icon = new OpenLayers.Icon('http://boston.openguides.org/markers/AQUA.png',size,offset);
+markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0),icon));
+markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0),icon.clone()));

Note that if you pass an icon into the Marker constructor, it will take that icon and use it.  This means that you should not share icons between markers -- you use them once, but you should clone() for any additional markers using that same icon.

Summary
OpenLayers.MarkerInstances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
Properties
icon{OpenLayers.Icon} The icon used by this marker.
lonlat{OpenLayers.LonLat} location of object
events{OpenLayers.Events} the event handler.
map{OpenLayers.Map} the map this marker is attached to
Constructor
OpenLayers.Marker
Functions
destroyDestroy the marker.
drawCalls draw on the icon, and returns that output.
eraseErases any drawn elements for this marker.
moveToMove the marker to the new location.
isDrawn{Boolean} Whether or not the marker is drawn.
onScreen{Boolean} Whether or not the marker is currently visible on screen.
inflateEnglarges the markers icon by the specified ratio.
setOpacityChange the opacity of the marker by changin the opacity of its icon
setUrlChange URL of the Icon Image.
displayHide or show the icon
defaultIconCreates a default OpenLayers.Icon.
+ +

Properties

+ +

icon

{OpenLayers.Icon} The icon used by this marker.

+ +

lonlat

{OpenLayers.LonLat} location of object

+ +

events

{OpenLayers.Events} the event handler.

+ +

map

{OpenLayers.Map} the map this marker is attached to

+ +

Constructor

+ +

OpenLayers.Marker

Parameters

lonlat{OpenLayers.LonLat} the position of this marker
icon{OpenLayers.Icon} the icon for this marker
+ +

Functions

+ +

destroy

destroy: function()

Destroy the marker.  You must first remove the marker from any layer which it has been added to, or you will get buggy behavior.  (This can not be done within the marker since the marker does not know which layer it is attached to.)

+ +

draw

draw: function(px)

Calls draw on the icon, and returns that output.

Parameters

px{OpenLayers.Pixel}

Returns

{DOMElement} A new DOM Image with this marker’s icon set at the location passed-in

+ +

erase

erase: function()

Erases any drawn elements for this marker.

+ +

moveTo

moveTo: function (px)

Move the marker to the new location.

Parameters

px{OpenLayers.Pixel} the pixel position to move to
+ +

isDrawn

isDrawn: function()

Returns

{Boolean} Whether or not the marker is drawn.

+ +

onScreen

onScreen:function()

Returns

{Boolean} Whether or not the marker is currently visible on screen.

+ +

inflate

inflate: function(inflate)

Englarges the markers icon by the specified ratio.

Parameters

inflate{float} the ratio to enlarge the marker by (passing 2 will double the size).
+ +

setOpacity

setOpacity: function(opacity)

Change the opacity of the marker by changin the opacity of its icon

Parameters

opacity{float} Specified as fraction (0.4, etc)
+ +

setUrl

setUrl: function(url)

Change URL of the Icon Image.

url{String}
+ +

display

display: function(display)

Hide or show the icon

display{Boolean}
+ +

defaultIcon

OpenLayers.Marker.defaultIcon = function()

Creates a default OpenLayers.Icon.

Returns

{OpenLayers.Icon} A default OpenLayers.Icon to use for a marker

+ +
+ + + + + + + + + + +
This class represents a longitude and latitude pair
The icon represents a graphical icon on the screen.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
destroy: function()
Destroy the marker.
draw: function(px)
Calls draw on the icon, and returns that output.
erase: function()
Erases any drawn elements for this marker.
moveTo: function (px)
Move the marker to the new location.
isDrawn: function()
{Boolean} Whether or not the marker is drawn.
onScreen:function()
{Boolean} Whether or not the marker is currently visible on screen.
inflate: function(inflate)
Englarges the markers icon by the specified ratio.
setOpacity: function(opacity)
Change the opacity of the marker by changin the opacity of its icon
setUrl: function(url)
Change URL of the Icon Image.
display: function(display)
Hide or show the icon
OpenLayers.Marker.defaultIcon = function()
Creates a default OpenLayers.Icon.
This class represents a screen coordinate, in x and y coordinates
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Marker/Box-js.html b/openlayers/doc/devdocs/files/OpenLayers/Marker/Box-js.html new file mode 100644 index 0000000..11e927b --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Marker/Box-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Marker.Box - OpenLayers + + + + + + + + + +

OpenLayers.Marker.Box

Inherits from

Summary
OpenLayers.Marker.Box
Properties
bounds{OpenLayers.Bounds}
div{DOMElement}
Constructor
OpenLayers.Marker.Box
Functions
destroy
setBorderAllow the user to change the box’s color and border width
draw
onScreen{Boolean} Whether or not the marker is currently visible on screen.
displayHide or show the icon
+ +

Properties

+ + + +

div

{DOMElement}

+ +

Constructor

+ +

OpenLayers.Marker.Box

Parameters

bounds{OpenLayers.Bounds}
borderColor{String}
borderWidth{int}
+ +

Functions

+ +

destroy

destroy: function()
+ +

setBorder

setBorder: function (color,
width)

Allow the user to change the box’s color and border width

Parameters

color{String} Default is “red”
width{int} Default is 2
+ +

draw

draw: function(px,
sz)

Parameters

px{OpenLayers.Pixel}
sz{OpenLayers.Size}

Returns

{DOMElement} A new DOM Image with this marker´s icon set at the location passed-in

+ +

onScreen

onScreen:function()

Rreturn

{Boolean} Whether or not the marker is currently visible on screen.

+ +

display

display: function(display)

Hide or show the icon

Parameters

display{Boolean}
+ +
+ + + + + + + + + + +
Instances of this class represent bounding boxes.
destroy: function()
setBorder: function (color,
width)
Allow the user to change the box’s color and border width
draw: function(px,
sz)
onScreen:function()
{Boolean} Whether or not the marker is currently visible on screen.
display: function(display)
Hide or show the icon
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
This class represents a screen coordinate, in x and y coordinates
Instances of this class represent a width/height pair
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Popup-js.html b/openlayers/doc/devdocs/files/OpenLayers/Popup-js.html new file mode 100644 index 0000000..9d479a7 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Popup-js.html @@ -0,0 +1,159 @@ + + +OpenLayers.Popup - OpenLayers + + + + + + + + + +

OpenLayers.Popup

A popup is a small div that can opened and closed on the map.  Typically opened in response to clicking on a marker.  See OpenLayers.Marker.  Popup’s don’t require their own layer and are added the the map using the OpenLayers.Map.addPopup method.

Example

popup = new OpenLayers.Popup("chicken",
+                   new OpenLayers.LonLat(5,40),
+                   new OpenLayers.Size(200,200),
+                   "example popup",
+                   true);
+
+map.addPopup(popup);
Summary
OpenLayers.PopupA popup is a small div that can opened and closed on the map.
Properties
events{OpenLayers.Events} custom event manager
id{String} the unique identifier assigned to this popup.
lonlat{OpenLayers.LonLat} the position of this popup on the map
div{DOMElement} the div that contains this popup.
contentSize{OpenLayers.Size} the width and height of the content.
size{OpenLayers.Size} the width and height of the popup.
contentHTML{String} An HTML string for this popup to display.
backgroundColor{String} the background color used by the popup.
opacity{float} the opacity of this popup (between 0.0 and 1.0)
border{String} the border size of the popup.
contentDiv{DOMElement} a reference to the element that holds the content of the div.
groupDiv{DOMElement} First and only child of ‘div’.
closeDiv{DOMElement} the optional closer image
autoSize{Boolean} Resize the popup to auto-fit the contents.
minSize{OpenLayers.Size} Minimum size allowed for the popup’s contents.
maxSize{OpenLayers.Size} Maximum size allowed for the popup’s contents.
displayClass{String} The CSS class of the popup.
contentDisplayClass{String} The CSS class of the popup content div.
padding{int or OpenLayers.Bounds} An extra opportunity to specify internal padding of the content div inside the popup.
disableFirefoxOverflowHack{Boolean} The hack for overflow in Firefox causes all elements to be re-drawn, which causes Flash elements to be re-initialized, which is troublesome.
Functions
fixPaddingTo be removed in 3.0, this function merely helps us to deal with the case where the user may have set an integer value for padding, instead of an OpenLayers.Bounds object.
Properties
panMapIfOutOfView{Boolean} When drawn, pan map such that the entire popup is visible in the current viewport (if necessary).
keepInMap{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.
closeOnMove{Boolean} When map pans, close the popup.
map{OpenLayers.Map} this gets set in Map.js when the popup is added to the map
Constructor
OpenLayers.PopupCreate a popup.
Functions
destroynullify references to prevent circular references and memory leaks
drawConstructs the elements that make up the popup.
updatePositionif the popup has a lonlat and its map members set, then have it move itself to its proper position
moveTo
visible{Boolean} Boolean indicating whether or not the popup is visible
toggleToggles visibility of the popup.
showMakes the popup visible.
hideMakes the popup invisible.
setSizeUsed to adjust the size of the popup.
updateSizeAuto size the popup so that it precisely fits its contents (as determined by this.contentDiv.innerHTML).
setBackgroundColorSets the background color of the popup.
setOpacitySets the opacity of the popup.
setBorderSets the border style of the popup.
setContentHTMLAllows the user to set the HTML content of the popup.
registerImageListenersCalled when an image contained by the popup loaded.
getSafeContentSize
getContentDivPaddingGlorious, oh glorious hack in order to determine the css ‘padding’ of the contentDiv.
addCloseBox
panIntoViewPans the map such that the popup is totaly viewable (if necessary)
registerEventsRegisters events on the popup.
onmousedownWhen mouse goes down within the popup, make a note of it locally, and then do not propagate the mousedown (but do so safely so that user can select text inside)
onmousemoveIf the drag was started within the popup, then do not propagate the mousemove (but do so safely so that user can select text inside)
onmouseupWhen mouse comes up within the popup, after going down in it, reset the flag, and then (once again) do not propagate the event, but do so safely so that user can select text inside
onclickIgnore clicks, but allowing default browser handling
onmouseoutWhen mouse goes out of the popup set the flag to false so that if they let go and then drag back in, we won’t be confused.
ondblclickIgnore double-clicks, but allowing default browser handling
+ +

Properties

+ +

events

{OpenLayers.Events} custom event manager

+ +

id

{String} the unique identifier assigned to this popup.

+ +

lonlat

{OpenLayers.LonLat} the position of this popup on the map

+ +

div

{DOMElement} the div that contains this popup.

+ +

contentSize

{OpenLayers.Size} the width and height of the content.

+ +

size

{OpenLayers.Size} the width and height of the popup.

+ +

contentHTML

{String} An HTML string for this popup to display.

+ +

backgroundColor

{String} the background color used by the popup.

+ +

opacity

{float} the opacity of this popup (between 0.0 and 1.0)

+ +

border

{String} the border size of the popup.  (eg 2px)

+ +

contentDiv

{DOMElement} a reference to the element that holds the content of the div.

+ +

groupDiv

{DOMElement} First and only child of ‘div’.  The group Div contains the ‘contentDiv’ and the ‘closeDiv’.

+ +

closeDiv

{DOMElement} the optional closer image

+ +

autoSize

{Boolean} Resize the popup to auto-fit the contents.  Default is false.

+ +

minSize

{OpenLayers.Size} Minimum size allowed for the popup’s contents.

+ +

maxSize

{OpenLayers.Size} Maximum size allowed for the popup’s contents.

+ +

displayClass

{String} The CSS class of the popup.

+ +

contentDisplayClass

{String} The CSS class of the popup content div.

+ +

padding

{int or OpenLayers.Bounds} An extra opportunity to specify internal padding of the content div inside the popup.  This was originally confused with the css padding as specified in style.css’s ‘olPopupContent’ class.  We would like to get rid of this altogether, except that it does come in handy for the framed and anchoredbubble popups, who need to maintain yet another barrier between their content and the outer border of the popup itself.

Note that in order to not break API, we must continue to support this property being set as an integer.  Really, though, we’d like to have this specified as a Bounds object so that user can specify distinct left, top, right, bottom paddings.  With the 3.0 release we can make this only a bounds.

+ +

disableFirefoxOverflowHack

{Boolean} The hack for overflow in Firefox causes all elements to be re-drawn, which causes Flash elements to be re-initialized, which is troublesome.  With this property the hack can be disabled.

+ +

Functions

+ +

fixPadding

fixPadding: function()

To be removed in 3.0, this function merely helps us to deal with the case where the user may have set an integer value for padding, instead of an OpenLayers.Bounds object.

+ +

Properties

+ +

panMapIfOutOfView

{Boolean} When drawn, pan map such that the entire popup is visible in the current viewport (if necessary).  Default is false.

+ +

keepInMap

{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.  By default, this is not set on the base class.  If you are creating popups that are near map edges and not allowing pannning, and especially if you have a popup which has a fixedRelativePosition, setting this to false may be a smart thing to do.  Subclasses may want to override this setting.

Default is false.

+ +

closeOnMove

{Boolean} When map pans, close the popup.  Default is false.

+ +

map

{OpenLayers.Map} this gets set in Map.js when the popup is added to the map

+ +

Constructor

+ +

OpenLayers.Popup

Create a popup.

Parameters

id{String} a unqiue identifier for this popup.  If null is passed an identifier will be automatically generated.
lonlat{OpenLayers.LonLat} The position on the map the popup will be shown.
contentSize{OpenLayers.Size} The size of the content.
contentHTML{String} An HTML string to display inside the popup.
closeBox{Boolean} Whether to display a close box inside the popup.
closeBoxCallback{Function} Function to be called on closeBox click.
+ +

Functions

+ +

destroy

destroy: function()

nullify references to prevent circular references and memory leaks

+ +

draw

draw: function(px)

Constructs the elements that make up the popup.

Parameters

px{OpenLayers.Pixel} the position the popup in pixels.

Returns

{DOMElement} Reference to a div that contains the drawn popup

+ +

updatePosition

updatePosition: function()

if the popup has a lonlat and its map members set, then have it move itself to its proper position

+ +

moveTo

moveTo: function(px)

Parameters

px{OpenLayers.Pixel} the top and left position of the popup div.
+ +

visible

visible: function()

Returns

{Boolean} Boolean indicating whether or not the popup is visible

+ +

toggle

toggle: function()

Toggles visibility of the popup.

+ +

show

show: function()

Makes the popup visible.

+ +

hide

hide: function()

Makes the popup invisible.

+ +

setSize

setSize:function(contentSize)

Used to adjust the size of the popup.

Parameters

contentSize{OpenLayers.Size} the new size for the popup’s contents div (in pixels).
+ +

updateSize

updateSize: function()

Auto size the popup so that it precisely fits its contents (as determined by this.contentDiv.innerHTML).  Popup size will, of course, be limited by the available space on the current map

+ +

setBackgroundColor

setBackgroundColor:function(color)

Sets the background color of the popup.

Parameters

color{String} the background color.  eg “#FFBBBB”
+ +

setOpacity

setOpacity:function(opacity)

Sets the opacity of the popup.

Parameters

opacity{float} A value between 0.0 (transparent) and 1.0 (solid).
+ +

setBorder

setBorder:function(border)

Sets the border style of the popup.

Parameters

border{String} The border style value. eg 2px
+ +

setContentHTML

setContentHTML:function(contentHTML)

Allows the user to set the HTML content of the popup.

Parameters

contentHTML{String} HTML for the div.
+ +

registerImageListeners

registerImageListeners: function()

Called when an image contained by the popup loaded. this function updates the popup size, then unregisters the image load listener.

+ +

getSafeContentSize

getSafeContentSize: function(size)

Parameters

size{OpenLayers.Size} Desired size to make the popup.

Returns

{OpenLayers.Size} A size to make the popup which is neither smaller than the specified minimum size, nor bigger than the maximum size (which is calculated relative to the size of the viewport).

+ +

getContentDivPadding

getContentDivPadding: function()

Glorious, oh glorious hack in order to determine the css ‘padding’ of the contentDiv.  IE/Opera return null here unless we actually add the popup’s main ‘div’ element (which contains contentDiv) to the DOM.  So we make it invisible and then add it to the document temporarily.

Once we’ve taken the padding readings we need, we then remove it from the DOM (it will actually get added to the DOM in Map.js’s addPopup)

Returns

{OpenLayers.Bounds}

+ +

addCloseBox

addCloseBox: function(callback)

Parameters

callback{Function} The callback to be called when the close button is clicked.
+ +

panIntoView

panIntoView: function()

Pans the map such that the popup is totaly viewable (if necessary)

+ +

registerEvents

registerEvents:function()

Registers events on the popup.

Do this in a separate function so that subclasses can choose to override it if they wish to deal differently with mouse events

Note in the following handler functions that some special care is needed to deal correctly with mousing and popups.

Because the user might select the zoom-rectangle option and then drag it over a popup, we need a safe way to allow the mousemove and mouseup events to pass through the popup when they are initiated from outside.

Otherwise, we want to essentially kill the event propagation for all other events, though we have to do so carefully, without disabling basic html functionality, like clicking on hyperlinks or drag-selecting text.

+ +

onmousedown

onmousedown: function (evt)

When mouse goes down within the popup, make a note of it locally, and then do not propagate the mousedown (but do so safely so that user can select text inside)

Parameters

evt{Event}
+ +

onmousemove

onmousemove: function (evt)

If the drag was started within the popup, then do not propagate the mousemove (but do so safely so that user can select text inside)

Parameters

evt{Event}
+ +

onmouseup

onmouseup: function (evt)

When mouse comes up within the popup, after going down in it, reset the flag, and then (once again) do not propagate the event, but do so safely so that user can select text inside

Parameters

evt{Event}
+ +

onclick

onclick: function (evt)

Ignore clicks, but allowing default browser handling

Parameters

evt{Event}
+ +

onmouseout

onmouseout: function (evt)

When mouse goes out of the popup set the flag to false so that if they let go and then drag back in, we won’t be confused.

Parameters

evt{Event}
+ +

ondblclick

ondblclick: function (evt)

Ignore double-clicks, but allowing default browser handling

Parameters

evt{Event}
+ +
+ + + + + + + + + + +
This class represents a longitude and latitude pair
Instances of this class represent a width/height pair
Instances of this class represent bounding boxes.
fixPadding: function()
To be removed in 3.0, this function merely helps us to deal with the case where the user may have set an integer value for padding, instead of an OpenLayers.Bounds object.
Instances of OpenLayers.Map are interactive maps embedded in a web page.
destroy: function()
nullify references to prevent circular references and memory leaks
draw: function(px)
Constructs the elements that make up the popup.
updatePosition: function()
if the popup has a lonlat and its map members set, then have it move itself to its proper position
moveTo: function(px)
visible: function()
{Boolean} Boolean indicating whether or not the popup is visible
toggle: function()
Toggles visibility of the popup.
show: function()
Makes the popup visible.
hide: function()
Makes the popup invisible.
setSize:function(contentSize)
Used to adjust the size of the popup.
updateSize: function()
Auto size the popup so that it precisely fits its contents (as determined by this.contentDiv.innerHTML).
setBackgroundColor:function(color)
Sets the background color of the popup.
setOpacity:function(opacity)
Sets the opacity of the popup.
setBorder:function(border)
Sets the border style of the popup.
setContentHTML:function(contentHTML)
Allows the user to set the HTML content of the popup.
registerImageListeners: function()
Called when an image contained by the popup loaded.
getSafeContentSize: function(size)
getContentDivPadding: function()
Glorious, oh glorious hack in order to determine the css ‘padding’ of the contentDiv.
addCloseBox: function(callback)
panIntoView: function()
Pans the map such that the popup is totaly viewable (if necessary)
registerEvents:function()
Registers events on the popup.
onmousedown: function (evt)
When mouse goes down within the popup, make a note of it locally, and then do not propagate the mousedown (but do so safely so that user can select text inside)
onmousemove: function (evt)
If the drag was started within the popup, then do not propagate the mousemove (but do so safely so that user can select text inside)
onmouseup: function (evt)
When mouse comes up within the popup, after going down in it, reset the flag, and then (once again) do not propagate the event, but do so safely so that user can select text inside
onclick: function (evt)
Ignore clicks, but allowing default browser handling
onmouseout: function (evt)
When mouse goes out of the popup set the flag to false so that if they let go and then drag back in, we won’t be confused.
ondblclick: function (evt)
Ignore double-clicks, but allowing default browser handling
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
addPopup: function(popup,
exclusive)
This class represents a screen coordinate, in x and y coordinates
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Popup/Anchored-js.html b/openlayers/doc/devdocs/files/OpenLayers/Popup/Anchored-js.html new file mode 100644 index 0000000..b562b3f --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Popup/Anchored-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Popup.Anchored - OpenLayers + + + + + + + + + +

OpenLayers.Popup.Anchored

Inherits from

Summary
OpenLayers.Popup.Anchored
Properties
keepInMap{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.
Constructor
OpenLayers.Popup.Anchored
Functions
destroy
showOverridden from Popup since user might hide popup and then show() it in a new location (meaning we might want to update the relative position on the show)
moveToSince the popup is moving to a new px, it might need also to be moved relative to where the marker is.
setSize
calculateRelativePosition
updateRelativePositionThe popup has been moved to a new relative location, so we may want to make some cosmetic adjustments to it.
calculateNewPx
+ +

Properties

+ +

keepInMap

{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.  By default, this is set.  If you are creating popups that are near map edges and not allowing pannning, and especially if you have a popup which has a fixedRelativePosition, setting this to false may be a smart thing to do.

For anchored popups, default is true, since subclasses will usually want this functionality.

+ +

Constructor

+ +

OpenLayers.Popup.Anchored

Parameters

id{String}
lonlat{OpenLayers.LonLat}
contentSize{OpenLayers.Size}
contentHTML{String}
anchor{Object} Object which must expose a ‘size’ OpenLayers.Size and ‘offset’ OpenLayers.Pixel (generally an OpenLayers.Icon).
closeBox{Boolean}
closeBoxCallback{Function} Function to be called on closeBox click.
+ +

Functions

+ +

destroy

destroy: function()
+ +

show

show: function()

Overridden from Popup since user might hide popup and then show() it in a new location (meaning we might want to update the relative position on the show)

+ +

moveTo

moveTo: function(px)

Since the popup is moving to a new px, it might need also to be moved relative to where the marker is.  We first calculate the new relativePosition, and then we calculate the new px where we will put the popup, based on the new relative position.

If the relativePosition has changed, we must also call updateRelativePosition() to make any visual changes to the popup which are associated with putting it in a new relativePosition.

Parameters

px{OpenLayers.Pixel}
+ +

setSize

setSize:function(contentSize)

Parameters

contentSize{OpenLayers.Size} the new size for the popup’s contents div (in pixels).
+ +

calculateRelativePosition

calculateRelativePosition:function(px)

Parameters

px{OpenLayers.Pixel}

Returns

{String} The relative position (“br” “tr” “tl” “bl”) at which the popup should be placed.

+ +

updateRelativePosition

updateRelativePosition: function()

The popup has been moved to a new relative location, so we may want to make some cosmetic adjustments to it.

Note that in the classic Anchored popup, there is nothing to do here, since the popup looks exactly the same in all four positions.  Subclasses such as the AnchoredBubble and Framed, however, will want to do something special here.

+ +

calculateNewPx

calculateNewPx:function(px)

Parameters

px{OpenLayers.Pixel}

Returns

{OpenLayers.Pixel} The the new px position of the popup on the screen relative to the passed-in px.

+ +
+ + + + + + + + + + +
destroy: function()
show: function()
Overridden from Popup since user might hide popup and then show() it in a new location (meaning we might want to update the relative position on the show)
moveTo: function(px)
Since the popup is moving to a new px, it might need also to be moved relative to where the marker is.
setSize:function(contentSize)
calculateRelativePosition:function(px)
updateRelativePosition: function()
The popup has been moved to a new relative location, so we may want to make some cosmetic adjustments to it.
calculateNewPx:function(px)
A popup is a small div that can opened and closed on the map.
This class represents a longitude and latitude pair
Instances of this class represent a width/height pair
This class represents a screen coordinate, in x and y coordinates
The icon represents a graphical icon on the screen.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Popup/AnchoredBubble-js.html b/openlayers/doc/devdocs/files/OpenLayers/Popup/AnchoredBubble-js.html new file mode 100644 index 0000000..1e2f458 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Popup/AnchoredBubble-js.html @@ -0,0 +1,69 @@ + + +OpenLayers.Popup.AnchoredBubble - OpenLayers + + + + + + + + + +

OpenLayers.Popup.AnchoredBubble

Inherits from

Summary
OpenLayers.Popup.AnchoredBubble
Properties
rounded{Boolean} Has the popup been rounded yet?
Constructor
OpenLayers.Popup.AnchoredBubble
Functions
draw
updateRelativePositionThe popup has been moved to a new relative location, in which case we will want to re-do the rico corners.
setSize
setBackgroundColor
setOpacity
setBorderAlways sets border to 0.
setRicoCornersUpdate RICO corners according to the popup’s current relative postion.
getCornersToRound{String} The proper corners string (“tr tl bl br”) for rico to round.
Constants
CORNER_SIZE{Integer} 5.
+ +

Properties

+ +

rounded

{Boolean} Has the popup been rounded yet?

+ +

Constructor

+ +

OpenLayers.Popup.AnchoredBubble

Parameters

id{String}
lonlat{OpenLayers.LonLat}
contentSize{OpenLayers.Size}
contentHTML{String}
anchor{Object} Object to which we’ll anchor the popup.  Must expose a ‘size’ (OpenLayers.Size) and ‘offset’ (OpenLayers.Pixel) (Note that this is generally an OpenLayers.Icon).
closeBox{Boolean}
closeBoxCallback{Function} Function to be called on closeBox click.
+ +

Functions

+ +

draw

draw: function(px)

Parameters

px{OpenLayers.Pixel}

Returns

{DOMElement} Reference to a div that contains the drawn popup.

+ +

updateRelativePosition

updateRelativePosition: function()

The popup has been moved to a new relative location, in which case we will want to re-do the rico corners.

+ +

setSize

setSize:function(contentSize)

Parameters

contentSize{OpenLayers.Size} the new size for the popup’s contents div (in pixels).
+ +

setBackgroundColor

setBackgroundColor:function(color)

Parameters

color{String}
+ +

setOpacity

setOpacity:function(opacity)

Parameters

opacity{float}
+ +

setBorder

setBorder:function(border)

Always sets border to 0.  Bubble Popups can not have a border.

Parameters

border{Integer}
+ +

setRicoCorners

setRicoCorners:function()

Update RICO corners according to the popup’s current relative postion.

+ +

getCornersToRound

getCornersToRound:function()

Returns

{String} The proper corners string (“tr tl bl br”) for rico to round.

+ +

Constants

+ +

CORNER_SIZE

{Integer} 5.  Border space for the RICO corners.

+ +
+ + + + + + + + + + +
draw: function(px)
updateRelativePosition: function()
The popup has been moved to a new relative location, in which case we will want to re-do the rico corners.
setSize:function(contentSize)
setBackgroundColor:function(color)
setOpacity:function(opacity)
setBorder:function(border)
Always sets border to 0.
setRicoCorners:function()
Update RICO corners according to the popup’s current relative postion.
getCornersToRound:function()
{String} The proper corners string (“tr tl bl br”) for rico to round.
This class represents a longitude and latitude pair
Instances of this class represent a width/height pair
This class represents a screen coordinate, in x and y coordinates
The icon represents a graphical icon on the screen.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Popup/Framed-js.html b/openlayers/doc/devdocs/files/OpenLayers/Popup/Framed-js.html new file mode 100644 index 0000000..6d04285 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Popup/Framed-js.html @@ -0,0 +1,77 @@ + + +OpenLayers.Popup.Framed - OpenLayers + + + + + + + + + +

OpenLayers.Popup.Framed

Inherits from

Summary
OpenLayers.Popup.Framed
Properties
imageSrc{String} location of the image to be used as the popup frame
imageSize{OpenLayers.Size} Size (measured in pixels) of the image located by the ‘imageSrc’ property.
isAlphaImage{Boolean} The image has some alpha and thus needs to use the alpha image hack.
positionBlocks{Object} Hash of different position blocks (Object/Hashs).
blocks{Array[Object]} Array of objects, each of which is one “block” of the popup.
fixedRelativePosition{Boolean} We want the framed popup to work dynamically placed relative to its anchor but also in just one fixed position.
Constructor
OpenLayers.Popup.Framed
Functions
destroy
setBackgroundColor
setBorder
setOpacitySets the opacity of the popup.
setSizeOverridden here, because we need to update the blocks whenever the size of the popup has changed.
updateRelativePositionWhen the relative position changes, we need to set the new padding BBOX on the popup, reposition the close div, and update the blocks.
calculateNewPxBesides the standard offset as determined by the Anchored class, our Framed popups have a special ‘offset’ property for each of their positions, which is used to offset the popup relative to its anchor.
createBlocks
updateBlocksInternal method, called on initialize and when the popup’s relative position has changed.
+ +

Properties

+ +

imageSrc

{String} location of the image to be used as the popup frame

+ +

imageSize

{OpenLayers.Size} Size (measured in pixels) of the image located by the ‘imageSrc’ property.

+ +

isAlphaImage

{Boolean} The image has some alpha and thus needs to use the alpha image hack.  Note that setting this to true will have no noticeable effect in FF or IE7 browsers, but will all but crush the ie6 browser.  Default is false.

+ +

positionBlocks

{Object} Hash of different position blocks (Object/Hashs).  Each block will be keyed by a two-character ‘relativePosition’ code string (ie “tl”, “tr”, “bl”, “br”).  Block properties are ‘offset’, ‘padding’ (self-explanatory), and finally the ‘blocks’ parameter, which is an array of the block objects.

Each block object must have ‘size’, ‘anchor’, and ‘position’ properties.

Note that positionBlocks should never be modified at runtime.

+ +

blocks

{Array[Object]} Array of objects, each of which is one “block” of the popup.  Each block has a ‘div’ and an ‘image’ property, both of which are DOMElements, and the latter of which is appended to the former.  These are reused as the popup goes changing positions for great economy and elegance.

+ +

fixedRelativePosition

{Boolean} We want the framed popup to work dynamically placed relative to its anchor but also in just one fixed position.  A well designed framed popup will have the pixels and logic to display itself in any of the four relative positions, but (understandably), this will not be the case for all of them.  By setting this property to ‘true’, framed popup will not recalculate for the best placement each time it’s open, but will always open the same way.  Note that if this is set to true, it is generally advisable to also set the ‘panIntoView’ property to true so that the popup can be scrolled into view (since it will often be offscreen on open) Default is false.

+ +

Constructor

+ +

OpenLayers.Popup.Framed

Parameters

id{String}
lonlat{OpenLayers.LonLat}
contentSize{OpenLayers.Size}
contentHTML{String}
anchor{Object} Object to which we’ll anchor the popup.  Must expose a ‘size’ (OpenLayers.Size) and ‘offset’ (OpenLayers.Pixel) (Note that this is generally an OpenLayers.Icon).
closeBox{Boolean}
closeBoxCallback{Function} Function to be called on closeBox click.
+ +

Functions

+ +

destroy

destroy: function()
+ +

setBackgroundColor

setBackgroundColor:function(color)
+ +

setBorder

setBorder:function()
+ +

setOpacity

setOpacity:function(opacity)

Sets the opacity of the popup.

Parameters

opacity{float} A value between 0.0 (transparent) and 1.0 (solid).
+ +

setSize

setSize:function(contentSize)

Overridden here, because we need to update the blocks whenever the size of the popup has changed.

Parameters

contentSize{OpenLayers.Size} the new size for the popup’s contents div (in pixels).
+ +

updateRelativePosition

updateRelativePosition: function()

When the relative position changes, we need to set the new padding BBOX on the popup, reposition the close div, and update the blocks.

+ +

calculateNewPx

calculateNewPx:function(px)

Besides the standard offset as determined by the Anchored class, our Framed popups have a special ‘offset’ property for each of their positions, which is used to offset the popup relative to its anchor.

Parameters

px{OpenLayers.Pixel}

Returns

{OpenLayers.Pixel} The the new px position of the popup on the screen relative to the passed-in px.

+ +

createBlocks

createBlocks: function()
+ +

updateBlocks

updateBlocks: function()

Internal method, called on initialize and when the popup’s relative position has changed.  This function takes care of re-positioning the popup’s blocks in their appropropriate places.

+ +
+ + + + + + + + + + +
Instances of this class represent a width/height pair
destroy: function()
setBackgroundColor:function(color)
setBorder:function()
setOpacity:function(opacity)
Sets the opacity of the popup.
setSize:function(contentSize)
Overridden here, because we need to update the blocks whenever the size of the popup has changed.
updateRelativePosition: function()
When the relative position changes, we need to set the new padding BBOX on the popup, reposition the close div, and update the blocks.
calculateNewPx:function(px)
Besides the standard offset as determined by the Anchored class, our Framed popups have a special ‘offset’ property for each of their positions, which is used to offset the popup relative to its anchor.
createBlocks: function()
updateBlocks: function()
Internal method, called on initialize and when the popup’s relative position has changed.
This class represents a longitude and latitude pair
This class represents a screen coordinate, in x and y coordinates
The icon represents a graphical icon on the screen.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Popup/FramedCloud-js.html b/openlayers/doc/devdocs/files/OpenLayers/Popup/FramedCloud-js.html new file mode 100644 index 0000000..5a95939 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Popup/FramedCloud-js.html @@ -0,0 +1,67 @@ + + +OpenLayers.Popup.FramedCloud - OpenLayers + + + + + + + + + +

OpenLayers.Popup.FramedCloud

Inherits from

Summary
OpenLayers.Popup.FramedCloud
Properties
contentDisplayClass{String} The CSS class of the popup content div.
autoSize{Boolean} Framed Cloud is autosizing by default.
panMapIfOutOfView{Boolean} Framed Cloud does pan into view by default.
imageSize{OpenLayers.Size}
isAlphaImage{Boolean} The FramedCloud does not use an alpha image (in honor of the good ie6 folk out there)
fixedRelativePosition{Boolean} The Framed Cloud popup works in just one fixed position.
positionBlocks{Object} Hash of differen position blocks, keyed by relativePosition two-character code string (ie “tl”, “tr”, “bl”, “br”)
minSize{OpenLayers.Size}
maxSize{OpenLayers.Size}
Constructor
OpenLayers.Popup.FramedCloud
Functions
destroy
+ +

Properties

+ +

contentDisplayClass

{String} The CSS class of the popup content div.

+ +

autoSize

{Boolean} Framed Cloud is autosizing by default.

+ +

panMapIfOutOfView

{Boolean} Framed Cloud does pan into view by default.

+ +

imageSize

+ +

isAlphaImage

{Boolean} The FramedCloud does not use an alpha image (in honor of the good ie6 folk out there)

+ +

fixedRelativePosition

{Boolean} The Framed Cloud popup works in just one fixed position.

+ +

positionBlocks

{Object} Hash of differen position blocks, keyed by relativePosition two-character code string (ie “tl”, “tr”, “bl”, “br”)

+ + + + + +

Constructor

+ +

OpenLayers.Popup.FramedCloud

Parameters

id{String}
lonlat{OpenLayers.LonLat}
contentSize{OpenLayers.Size}
contentHTML{String}
anchor{Object} Object to which we’ll anchor the popup.  Must expose a ‘size’ (OpenLayers.Size) and ‘offset’ (OpenLayers.Pixel) (Note that this is generally an OpenLayers.Icon).
closeBox{Boolean}
closeBoxCallback{Function} Function to be called on closeBox click.
+ +

Functions

+ +

destroy

destroy: function()
+ +
+ + + + + + + + + + +
Instances of this class represent a width/height pair
destroy: function()
This class represents a longitude and latitude pair
This class represents a screen coordinate, in x and y coordinates
The icon represents a graphical icon on the screen.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Projection-js.html b/openlayers/doc/devdocs/files/OpenLayers/Projection-js.html new file mode 100644 index 0000000..39edd7e --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Projection-js.html @@ -0,0 +1,67 @@ + + +OpenLayers.Projection - OpenLayers + + + + + + + + + +

OpenLayers.Projection

Class for coordinate transforms between coordinate systems.  Depends on the proj4js library.  If proj4js is not available, then this is just an empty stub.

Summary
OpenLayers.ProjectionClass for coordinate transforms between coordinate systems.
Properties
proj{Object} Proj4js.Proj instance.
projCode{String}
Constructor
OpenLayers.ProjectionThis class offers several methods for interacting with a wrapped pro4js projection object.
Functions and Properties
getCodeGet the string SRS code.
getUnitsGet the units string for the projection -- returns null if proj4js is not available.
toStringConvert projection to string (getCode wrapper).
equalsTest equality of two projection instances.
destroyDestroy projection object.
transformsTransforms is an object, with from properties, each of which may have a to property.
addTransformSet a custom transform method between two projections.
transformTransform a point coordinate from one projection to another.
+ +

Properties

+ +

proj

{Object} Proj4js.Proj instance.

+ +

projCode

{String}

+ +

Constructor

+ +

OpenLayers.Projection

This class offers several methods for interacting with a wrapped pro4js projection object.

Parameters

projCode{String} A string identifying the Well Known Identifier for the projection.
options{Object} An optional object to set additional properties on the layer.

Returns

{OpenLayers.Projection} A projection object.

+ +

Functions and Properties

+ +

getCode

getCode: function()

Get the string SRS code.

Returns

{String} The SRS code.

+ +

getUnits

getUnits: function()

Get the units string for the projection -- returns null if proj4js is not available.

Returns

{String} The units abbreviation.

+ +

toString

toString: function()

Convert projection to string (getCode wrapper).

Returns

{String} The projection code.

+ +

equals

equals: function(projection)

Test equality of two projection instances.  Determines equality based soley on the projection code.

Returns

{Boolean} The two projections are equivalent.

+ +

destroy

destroy: function()

Destroy projection object.

+ +

transforms

Transforms is an object, with from properties, each of which may have a to property.  This allows you to define projections without requiring support for proj4js to be included.

This object has keys which correspond to a ‘source’ projection object.  The keys should be strings, corresponding to the projection.getCode() value.  Each source projection object should have a set of destination projection keys included in the object.

Each value in the destination object should be a transformation function, where the function is expected to be passed an object with a .x and a .y property.  The function should return the object, with the .x and .y transformed according to the transformation function.

NoteProperties on this object should not be set directly.  To add a transform method to this object, use the addTransform method.  For an example of usage, see the OpenLayers.Layer.SphericalMercator file.
+ +

addTransform

OpenLayers.Projection.addTransform = function(from,
to,
method)

Set a custom transform method between two projections.  Use this method in cases where the proj4js lib is not available or where custom projections need to be handled.

Parameters

from{String} The code for the source projection
to{String} the code for the destination projection
method{Function} A function that takes a point as an argument and transforms that point from the source to the destination projection in place.  The original point should be modified.
+ +

transform

OpenLayers.Projection.transform = function(point,
source,
dest)

Transform a point coordinate from one projection to another.  Note that the input point is transformed in place.

Parameters

point{{OpenLayers.Geometry.Point> | Object} An object with x and y properties representing coordinates in those dimensions.
sourceProj{OpenLayers.Projection} Source map coordinate system
destProj{OpenLayers.Projection} Destination map coordinate system

Returns

point{object} A transformed coordinate.  The original point is modified.
+ +
+ + + + + + + + + + +
getCode: function()
Get the string SRS code.
getUnits: function()
Get the units string for the projection -- returns null if proj4js is not available.
toString: function()
Convert projection to string (getCode wrapper).
equals: function(projection)
Test equality of two projection instances.
destroy: function()
Destroy projection object.
OpenLayers.Projection.addTransform = function(from,
to,
method)
Set a custom transform method between two projections.
OpenLayers.Projection.transform = function(point,
source,
dest)
Transform a point coordinate from one projection to another.
This class offers several methods for interacting with a wrapped pro4js projection object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Protocol-js.html b/openlayers/doc/devdocs/files/OpenLayers/Protocol-js.html new file mode 100644 index 0000000..f7a9a44 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Protocol-js.html @@ -0,0 +1,91 @@ + + +OpenLayers.Protocol - OpenLayers + + + + + + + + + +

OpenLayers.Protocol

Abstract vector layer protocol class.  Not to be instantiated directly.  Use one of the protocol subclasses instead.

Summary
OpenLayers.ProtocolAbstract vector layer protocol class.
Properties
format{OpenLayers.Format} The format used by this protocol.
options{Object} Any options sent to the constructor.
autoDestroy{Boolean} The creator of the protocol can set autoDestroy to false to fully control when the protocol is destroyed.
Constructor
OpenLayers.ProtocolAbstract class for vector protocols.
Functions
destroyClean up the protocol.
readConstruct a request for reading new features.
createConstruct a request for writing newly created features.
updateConstruct a request updating modified features.
deleteConstruct a request deleting a removed feature.
commitGo over the features and for each take action based on the feature state.
abortAbort an ongoing request.
OpenLayers.Protocol.ResponseProtocols return Response objects to their users.
Properties
code
requestType{String} The type of request this response corresponds to.
last
features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features returned in the response by the server.
reqFeatures{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features provided by the user and placed in the request by the protocol.
priv
Constructor
OpenLayers.Protocol.Response
Functions
success
+ +

Properties

+ +

format

{OpenLayers.Format} The format used by this protocol.

+ +

options

{Object} Any options sent to the constructor.

+ +

autoDestroy

{Boolean} The creator of the protocol can set autoDestroy to false to fully control when the protocol is destroyed.  Defaults to true.

+ +

Constructor

+ +

OpenLayers.Protocol

Abstract class for vector protocols.  Create instances of a subclass.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

destroy

destroy: function()

Clean up the protocol.

+ +

read

read: function()

Construct a request for reading new features.

Parameters

options{Object} Optional object for configuring the request.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, the same object will be passed to the callback function passed if one exists in the options object.

+ +

create

create: function()

Construct a request for writing newly created features.

Parameters

features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, the same object will be passed to the callback function passed if one exists in the options object.

+ +

update

update: function()

Construct a request updating modified features.

Parameters

features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, the same object will be passed to the callback function passed if one exists in the options object.

+ +

delete

"delete": function()

Construct a request deleting a removed feature.

Parameters

feature{OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, the same object will be passed to the callback function passed if one exists in the options object.

+ +

commit

commit: function()

Go over the features and for each take action based on the feature state.  Possible actions are create, update and delete.

Parameters

features{Array({OpenLayers.Feature.Vector})}
options{Object} Object whose possible keys are “create”, “update”, “delete”, “callback” and “scope”, the values referenced by the first three are objects as passed to the “create”, “update”, and “delete” methods, the value referenced by the “callback” key is a function which is called when the commit operation is complete using the scope referenced by the “scope” key.

Returns

{Array({OpenLayers.Protocol.Response})} An array of OpenLayers.Protocol.Response objects.

+ +

abort

abort: function(response)

Abort an ongoing request.

Parameters

response{OpenLayers.Protocol.Response}
+ +

OpenLayers.Protocol.Response

Protocols return Response objects to their users.

Summary
Properties
code
requestType{String} The type of request this response corresponds to.
last
features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features returned in the response by the server.
reqFeatures{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features provided by the user and placed in the request by the protocol.
priv
Constructor
OpenLayers.Protocol.Response
Functions
success
+ +

Properties

+ +

code

{Number}OpenLayers.Protocol.Response.SUCCESS or OpenLayers.Protocol.Response.FAILURE
+ +

requestType

{String} The type of request this response corresponds to.  Either “create”, “read”, “update” or “delete”.

+ +

last

{Boolean}true if this is the last response expected in a commit, false otherwise, defaults to true.
+ +

features

{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features returned in the response by the server.

+ +

reqFeatures

{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features provided by the user and placed in the request by the protocol.

+ +

priv

+ +

Constructor

+ +

OpenLayers.Protocol.Response

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

success

success: function()

Returns

{Boolean}true on success, false otherwise
+ +
+ + + + + + + + + + +
Base class for format reading/writing a variety of formats.
destroy: function()
Clean up the protocol.
read: function()
Construct a request for reading new features.
create: function()
Construct a request for writing newly created features.
update: function()
Construct a request updating modified features.
"delete": function()
Construct a request deleting a removed feature.
commit: function()
Go over the features and for each take action based on the feature state.
abort: function(response)
Abort an ongoing request.
Vector features use the OpenLayers.Geometry classes as geometry description.
success: function()
Protocols return Response objects to their users.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Protocol/HTTP-js.html b/openlayers/doc/devdocs/files/OpenLayers/Protocol/HTTP-js.html new file mode 100644 index 0000000..fef47db --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Protocol/HTTP-js.html @@ -0,0 +1,89 @@ + + +OpenLayers.Protocol.HTTP - OpenLayers + + + + + + + + + +

OpenLayers.Protocol.HTTP

A basic HTTP protocol for vector layers.  Create a new instance with the OpenLayers.Protocol.HTTP constructor.

Inherits from

Summary
OpenLayers.Protocol.HTTPA basic HTTP protocol for vector layers.
Properties
url{String} Service URL, read-only, set through the options passed to constructor.
headers{Object} HTTP request headers, read-only, set through the options passed to the constructor, Example: {‘Content-Type’: ‘plain/text’}
params{Object} Parameters of GET requests, read-only, set through the options passed to the constructor, Example: {‘bbox’: ‘5,5,5,5’}
callback{Object} Function to be called when the read, create, update, delete or commit operation completes, read-only, set through the options passed to the constructor.
scope{Object} Callback execution scope, read-only, set through the options passed to the constructor.
readWithPOST{Boolean} true if read operations are done with POST requests instead of GET, defaults to false.
Constructor
OpenLayers.Protocol.HTTPA class for giving layers generic HTTP protocol.
Functions
destroyClean up the protocol.
createCallbackReturns a function that applies the given public method with resp and options arguments.
readConstruct a request for reading new features.
handleReadIndividual callbacks are created for read, create and update, should a subclass need to override each one separately.
createConstruct a request for writing newly created features.
handleCreateCalled the the request issued by create is complete.
updateConstruct a request updating modified feature.
handleUpdateCalled the the request issued by update is complete.
deleteConstruct a request deleting a removed feature.
handleDeleteCalled the the request issued by delete is complete.
handleResponseCalled by CRUD specific handlers.
parseFeaturesRead HTTP response body and return features.
commitIterate over each feature and take action based on the feature state.
abortAbort an ongoing request, the response object passed to this method must come from this HTTP protocol (as a result of a create, read, update, delete or commit operation).
callUserCallbackThis method is used from within the commit method each time an an HTTP response is received from the server, it is responsible for calling the user-supplied callbacks.
+ +

Properties

+ +

url

{String} Service URL, read-only, set through the options passed to constructor.

+ +

headers

{Object} HTTP request headers, read-only, set through the options passed to the constructor, Example: {‘Content-Type’: ‘plain/text’}

+ +

params

{Object} Parameters of GET requests, read-only, set through the options passed to the constructor, Example: {‘bbox’: ‘5,5,5,5’}

+ +

callback

{Object} Function to be called when the read, create, update, delete or commit operation completes, read-only, set through the options passed to the constructor.

+ +

scope

{Object} Callback execution scope, read-only, set through the options passed to the constructor.

+ +

readWithPOST

{Boolean} true if read operations are done with POST requests instead of GET, defaults to false.

+ +

Constructor

+ +

OpenLayers.Protocol.HTTP

A class for giving layers generic HTTP protocol.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Valid options include

url{String}
headers{Object}
params{Object}
format{OpenLayers.Format}
callback{Function}
scope{Object}
+ +

Functions

+ +

destroy

destroy: function()

Clean up the protocol.

+ +

createCallback

createCallback: function(method,
response,
options)

Returns a function that applies the given public method with resp and options arguments.

Parameters

method{Function} The method to be applied by the callback.
response{OpenLayers.Protocol.Response} The protocol response object.
options{Object} Options sent to the protocol method (read, create, update, or delete).
+ +

read

read: function(options)

Construct a request for reading new features.

Parameters

options{Object} Optional object for configuring the request.  This object is modified and should not be reused.

Valid options

url{String} Url for the request.
params{Object} Parameters to get serialized as a query string.
headers{Object} Headers to be set on the request.
filter{<OpenLayers.Filter.BBOX>} If a bbox filter is sent, it will be serialized according to the OpenSearch Geo extension (bbox=minx,miny,maxx,maxy).  Note that a BBOX filter as the child of a logical filter will not be serialized.
readWithPOST{Boolean} If the request should be done with POST.

Returns

{OpenLayers.Protocol.Response} A response object, whose “priv” property references the HTTP request, this object is also passed to the callback function when the request completes, its “features” property is then populated with the the features received from the server.

+ +

handleRead

handleRead: function(resp,
options)

Individual callbacks are created for read, create and update, should a subclass need to override each one separately.

Parameters

resp{OpenLayers.Protocol.Response} The response object to pass to the user callback.
options{Object} The user options passed to the read call.
+ +

create

create: function(features,
options)

Construct a request for writing newly created features.

Parameters

features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.  This object is modified and should not be reused.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, whose “priv” property references the HTTP request, this object is also passed to the callback function when the request completes, its “features” property is then populated with the the features received from the server.

+ +

handleCreate

handleCreate: function(resp,
options)

Called the the request issued by create is complete.  May be overridden by subclasses.

Parameters

resp{OpenLayers.Protocol.Response} The response object to pass to any user callback.
options{Object} The user options passed to the create call.
+ +

update

update: function(feature,
options)

Construct a request updating modified feature.

Parameters

feature{OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.  This object is modified and should not be reused.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, whose “priv” property references the HTTP request, this object is also passed to the callback function when the request completes, its “features” property is then populated with the the feature received from the server.

+ +

handleUpdate

handleUpdate: function(resp,
options)

Called the the request issued by update is complete.  May be overridden by subclasses.

Parameters

resp{OpenLayers.Protocol.Response} The response object to pass to any user callback.
options{Object} The user options passed to the update call.
+ +

delete

"delete": function(feature,
options)

Construct a request deleting a removed feature.

Parameters

feature{OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.  This object is modified and should not be reused.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object, whose “priv” property references the HTTP request, this object is also passed to the callback function when the request completes.

+ +

handleDelete

handleDelete: function(resp,
options)

Called the the request issued by delete is complete.  May be overridden by subclasses.

Parameters

resp{OpenLayers.Protocol.Response} The response object to pass to any user callback.
options{Object} The user options passed to the delete call.
+ +

handleResponse

handleResponse: function(resp,
options)

Called by CRUD specific handlers.

Parameters

resp{OpenLayers.Protocol.Response} The response object to pass to any user callback.
options{Object} The user options passed to the create, read, update, or delete call.
+ +

parseFeatures

parseFeatures: function(request)

Read HTTP response body and return features.

Parameters

request{XMLHttpRequest} The request object

Returns

{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} Array of features or a single feature.

+ +

commit

commit: function(features,
options)

Iterate over each feature and take action based on the feature state.  Possible actions are create, update and delete.

Parameters

features{Array({OpenLayers.Feature.Vector})}
options{Object} Optional object for setting up intermediate commit callbacks.

Valid options

create{Object} Optional object to be passed to the create method.
update{Object} Optional object to be passed to the update method.
delete{Object} Optional object to be passed to the delete method.
callback{Function} Optional function to be called when the commit is complete.
scope{Object} Optional object to be set as the scope of the callback.

Returns

{Array(OpenLayers.Protocol.Response)} An array of response objects, one per request made to the server, each object’s “priv” property references the corresponding HTTP request.

+ +

abort

abort: function(response)

Abort an ongoing request, the response object passed to this method must come from this HTTP protocol (as a result of a create, read, update, delete or commit operation).

Parameters

response{OpenLayers.Protocol.Response}
+ +

callUserCallback

callUserCallback: function(resp,
options)

This method is used from within the commit method each time an an HTTP response is received from the server, it is responsible for calling the user-supplied callbacks.

Parameters

resp{OpenLayers.Protocol.Response}
options{Object} The map of options passed to the commit call.
+ +
+ + + + + + + + + + +
read: function(options)
Construct a request for reading new features.
create: function(features,
options)
Construct a request for writing newly created features.
update: function(feature,
options)
Construct a request updating modified feature.
"delete": function(feature,
options)
Construct a request deleting a removed feature.
commit: function(features,
options)
Iterate over each feature and take action based on the feature state.
destroy: function()
Clean up the protocol.
createCallback: function(method,
response,
options)
Returns a function that applies the given public method with resp and options arguments.
handleRead: function(resp,
options)
Individual callbacks are created for read, create and update, should a subclass need to override each one separately.
handleCreate: function(resp,
options)
Called the the request issued by create is complete.
handleUpdate: function(resp,
options)
Called the the request issued by update is complete.
handleDelete: function(resp,
options)
Called the the request issued by delete is complete.
handleResponse: function(resp,
options)
Called by CRUD specific handlers.
parseFeatures: function(request)
Read HTTP response body and return features.
abort: function(response)
Abort an ongoing request, the response object passed to this method must come from this HTTP protocol (as a result of a create, read, update, delete or commit operation).
callUserCallback: function(resp,
options)
This method is used from within the commit method each time an an HTTP response is received from the server, it is responsible for calling the user-supplied callbacks.
A class for giving layers generic HTTP protocol.
Abstract vector layer protocol class.
Base class for format reading/writing a variety of formats.
Protocols return Response objects to their users.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Protocol/SQL-js.html b/openlayers/doc/devdocs/files/OpenLayers/Protocol/SQL-js.html new file mode 100644 index 0000000..e9fdcd4 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Protocol/SQL-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Protocol.SQL - OpenLayers + + + + + + + + + +

OpenLayers.Protocol.SQL

Abstract SQL protocol class.  Not to be instantiated directly.  Use one of the SQL protocol subclasses instead.

Inherits from

Summary
OpenLayers.Protocol.SQLAbstract SQL protocol class.
Properties
databaseName{String}
tableNameName of the database table into which Features should be saved.
postReadFiltering{Boolean} Whether the filter (if there’s one) must be applied after the features have been read from the database; for example the BBOX strategy passes the read method a BBOX spatial filter, if postReadFiltering is true every feature read from the database will go through the BBOX spatial filter, which can be costly; defaults to true.
Constructor
OpenLayers.Protocol.SQL
Functions
destroyClean up the protocol.
supportedThis should be overridden by specific subclasses
evaluateFilterIf postReadFiltering is true evaluate the filter against the feature and return the result of the evaluation, otherwise return true.
+ +

Properties

+ +

databaseName

{String}

+ +

tableName

Name of the database table into which Features should be saved.

+ +

postReadFiltering

{Boolean} Whether the filter (if there’s one) must be applied after the features have been read from the database; for example the BBOX strategy passes the read method a BBOX spatial filter, if postReadFiltering is true every feature read from the database will go through the BBOX spatial filter, which can be costly; defaults to true.

+ +

Constructor

+ +

OpenLayers.Protocol.SQL

+ +

Functions

+ +

destroy

destroy: function()

Clean up the protocol.

+ +

supported

supported: function()

This should be overridden by specific subclasses

Returns

{Boolean} Whether or not the browser supports the SQL backend

+ +

evaluateFilter

evaluateFilter: function(feature,
filter)

If postReadFiltering is true evaluate the filter against the feature and return the result of the evaluation, otherwise return true.

Parameters

{OpenLayers.Feature.Vector} The feature.  {OpenLayers.Filter} The filter.

Returns

{Boolean} true if postReadFiltering if false, the result of the filter evaluation otherwise.

+ +
+ + + + + + + + + + +
destroy: function()
Clean up the protocol.
supported: function()
This should be overridden by specific subclasses
evaluateFilter: function(feature,
filter)
If postReadFiltering is true evaluate the filter against the feature and return the result of the evaluation, otherwise return true.
Abstract vector layer protocol class.
Vector features use the OpenLayers.Geometry classes as geometry description.
This class represents an OGC Filter.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Protocol/SQL/Gears-js.html b/openlayers/doc/devdocs/files/OpenLayers/Protocol/SQL/Gears-js.html new file mode 100644 index 0000000..68027a2 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Protocol/SQL/Gears-js.html @@ -0,0 +1,97 @@ + + +OpenLayers.Protocol.SQL.Gears - OpenLayers + + + + + + + + + +

OpenLayers.Protocol.SQL.Gears

This Protocol stores feature in the browser via the Gears Database module http://code.google.com/apis/gears/api_database.html.

The main advantage is that all the read, create, update and delete operations can be done offline.

Inherits from

Summary
OpenLayers.Protocol.SQL.GearsThis Protocol stores feature in the browser via the Gears Database module http://code.google.com/apis/gears/api_database.html.
Properties
FID_PREFIX{String}
NULL_GEOMETRY{String}
NULL_FEATURE_STATE{String}
jsonParser{OpenLayers.Format.JSON}
wktParser{OpenLayers.Format.WKT}
fidRegExp{RegExp} Regular expression to know whether a feature was created in offline mode.
saveFeatureState{Boolean} Whether to save the feature state (<OpenLayers.State>) into the database, defaults to true.
typeOfFid{String} The type of the feature identifier, either “number” or “string”, defaults to “string”.
db{GearsDatabase}
Constructor
OpenLayers.Protocol.SQL.Gears
Functions
initializeDatabase
destroyClean up the protocol.
supportedDetermine whether a browser supports Gears
readRead all features from the database and return a OpenLayers.Protocol.Response instance.
unfreezeFeature
extractFidFromField
createCreate new features into the database.
updateConstruct a request updating modified feature.
createOrUpdateConstruct a request for updating or creating features in the database.
freezeFeature
getFeatureStateForFreezeGet the state of the feature to store into the database.
deleteDelete features from the database.
createdOfflineReturns true if the feature had a feature id when it was created in the Gears database, false otherwise; this is determined by checking the form of the feature’s fid value.
commitGo over the features and for each take action based on the feature state.
clearRemoves all rows of the table.
callUserCallbackThis method is called from within commit each time a request is made to the database, it is responsible for calling the user-supplied callbacks.
+ +

Properties

+ +

FID_PREFIX

{String}

+ +

NULL_GEOMETRY

{String}

+ +

NULL_FEATURE_STATE

{String}

+ + + + + +

fidRegExp

{RegExp} Regular expression to know whether a feature was created in offline mode.

+ +

saveFeatureState

{Boolean} Whether to save the feature state (<OpenLayers.State>) into the database, defaults to true.

+ +

typeOfFid

{String} The type of the feature identifier, either “number” or “string”, defaults to “string”.

+ +

db

{GearsDatabase}

+ +

Constructor

+ +

OpenLayers.Protocol.SQL.Gears

+ +

Functions

+ +

initializeDatabase

initializeDatabase: function()
+ +

destroy

destroy: function()

Clean up the protocol.

+ +

supported

supported: function()

Determine whether a browser supports Gears

Returns

{Boolean} The browser supports Gears

+ +

read

read: function(options)

Read all features from the database and return a OpenLayers.Protocol.Response instance.  If the options parameter contains a callback attribute, the function is called with the response as a parameter.

Parameters

options{Object} Optional object for configuring the request; it can have the {Boolean} property “noFeatureStateReset” which specifies if the state of features read from the Gears database must be reset to null, if “noFeatureStateReset” is undefined or false then each feature’s state is reset to null, if “noFeatureStateReset” is true the feature state is preserved.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object.

+ +

unfreezeFeature

unfreezeFeature: function(row)

Parameters

row{ResultSet}

Returns

{OpenLayers.Feature.Vector}

+ +

extractFidFromField

extractFidFromField: function(field)

Parameters

field{String}

Returns {String} or {Number} The fid.

+ +

create

create: function(features,
options)

Create new features into the database.

Parameters

features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features to create in the database.
options{Object} Optional object for configuring the request.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object.

+ +

update

update: function(features,
options)

Construct a request updating modified feature.

Parameters

features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features to update in the database.
options{Object} Optional object for configuring the request.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object.

+ +

createOrUpdate

createOrUpdate: function(features)

Construct a request for updating or creating features in the database.

Parameters

features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The feature to create or update in the database.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object.

+ +

freezeFeature

freezeFeature: function(feature)

Parameters

feature{OpenLayers.Feature.Vector}
state{String} The feature state to store in the database.

Returns

{Array}

+ +

getFeatureStateForFreeze

getFeatureStateForFreeze: function(feature)

Get the state of the feature to store into the database.

Parameters

feature{OpenLayers.Feature.Vector} The feature.

Returns {String} The state

+ +

delete

"delete": function(features,
options)

Delete features from the database.

Parameters

features{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector}
options{Object} Optional object for configuring the request.  This object is modified and should not be reused.

Returns

{OpenLayers.Protocol.Response} An OpenLayers.Protocol.Response object.

+ +

createdOffline

createdOffline: function(feature)

Returns true if the feature had a feature id when it was created in the Gears database, false otherwise; this is determined by checking the form of the feature’s fid value.

Parameters

feature{OpenLayers.Feature.Vector}

Returns

{Boolean}

+ +

commit

commit: function(features,
options)

Go over the features and for each take action based on the feature state.  Possible actions are create, update and delete.

Parameters

features{Array({OpenLayers.Feature.Vector})}
options{Object} Object whose possible keys are “create”, “update”, “delete”, “callback” and “scope”, the values referenced by the first three are objects as passed to the “create”, “update”, and “delete” methods, the value referenced by the “callback” key is a function which is called when the commit operation is complete using the scope referenced by the “scope” key.

Returns

{Array({OpenLayers.Protocol.Response})} An array of OpenLayers.Protocol.Response objects, one per request made to the database.

+ +

clear

clear: function()

Removes all rows of the table.

+ +

callUserCallback

callUserCallback: function(options,
resp)

This method is called from within commit each time a request is made to the database, it is responsible for calling the user-supplied callbacks.

Parameters

options{Object} The map of options passed to the commit call.
resp{OpenLayers.Protocol.Response}
+ +
+ + + + + + + + + + +
A parser to read/write JSON safely.
Class for reading and writing Well-Known Text.
initializeDatabase: function()
destroy: function()
Clean up the protocol.
supported: function()
Determine whether a browser supports Gears
read: function(options)
Read all features from the database and return a OpenLayers.Protocol.Response instance.
Protocols return Response objects to their users.
unfreezeFeature: function(row)
extractFidFromField: function(field)
create: function(features,
options)
Create new features into the database.
update: function(features,
options)
Construct a request updating modified feature.
createOrUpdate: function(features)
Construct a request for updating or creating features in the database.
freezeFeature: function(feature)
getFeatureStateForFreeze: function(feature)
Get the state of the feature to store into the database.
"delete": function(features,
options)
Delete features from the database.
createdOffline: function(feature)
Returns true if the feature had a feature id when it was created in the Gears database, false otherwise; this is determined by checking the form of the feature’s fid value.
commit: function(features,
options)
Go over the features and for each take action based on the feature state.
clear: function()
Removes all rows of the table.
callUserCallback: function(options,
resp)
This method is called from within commit each time a request is made to the database, it is responsible for calling the user-supplied callbacks.
Abstract SQL protocol class.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS-js.html b/openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS-js.html new file mode 100644 index 0000000..3751172 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS-js.html @@ -0,0 +1,49 @@ + + +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/WFS.js - OpenLayers + + + + + + + + + +

WFS.js

Summary
WFS.js
Functions
OpenLayers.Protocol.WFSUsed to create a versioned WFS protocol.
OpenLayers.Protocol.WFS.fromWMSLayerConvenience function to create a WFS protocol from a WMS layer.
Constants
OpenLayers.Protocol.WFS.DEFAULTS
+ +

Functions

+ +

OpenLayers.Protocol.WFS

OpenLayers.Protocol.WFS = function(options)

Used to create a versioned WFS protocol.  Default version is 1.0.0.

Returns

{OpenLayers.Protocol} A WFS protocol of the given version.

+ +

OpenLayers.Protocol.WFS.fromWMSLayer

OpenLayers.Protocol.WFS.fromWMSLayer = function(layer,
options)

Convenience function to create a WFS protocol from a WMS layer.  This makes the assumption that a WFS requests can be issued at the same URL as WMS requests and that a WFS featureType exists with the same name as the WMS layer.

This function is designed to auto-configure <url>, <featureType>, <featurePrefix> and <srsName> for WFS <version> 1.1.0.  Note that srsName matching with the WMS layer will not work with WFS 1.0.0..

Parameters

layer{OpenLayers.Layer.WMS} WMS layer that has a matching WFS FeatureType at the same server url with the same typename.
options{Object} Default properties to be set on the protocol.
+ +

Constants

+ +

OpenLayers.Protocol.WFS.DEFAULTS

+ +
+ + + + + + + + + + +
OpenLayers.Protocol.WFS = function(options)
Used to create a versioned WFS protocol.
OpenLayers.Protocol.WFS.fromWMSLayer = function(layer,
options)
Convenience function to create a WFS protocol from a WMS layer.
Abstract vector layer protocol class.
Instances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS/v1-js.html b/openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS/v1-js.html new file mode 100644 index 0000000..5fd7e97 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS/v1-js.html @@ -0,0 +1,81 @@ + + +OpenLayers.Protocol.WFS.v1 - OpenLayers + + + + + + + + + +

OpenLayers.Protocol.WFS.v1

Abstract class for for v1.0.0 and v1.1.0 protocol.

Inherits from

Summary
OpenLayers.Protocol.WFS.v1Abstract class for for v1.0.0 and v1.1.0 protocol.
Properties
version{String} WFS version number.
srsName{String} Name of spatial reference system.
featureType{String} Local feature typeName.
featureNS{String} Feature namespace.
geometryName{String} Name of the geometry attribute for features.
schema{String} Optional schema location that will be included in the schemaLocation attribute value.
featurePrefix{String} Namespace alias for feature type.
formatOptions{Object} Optional options for the format.
Constructor
OpenLayers.Protocol.WFSA class for giving layers WFS protocol.
Functions
destroyClean up the protocol.
createCallbackReturns a function that applies the given public method with resp and options arguments.
readConstruct a request for reading new features.
handleReadDeal with response from the read request.
parseFeaturesRead HTTP response body and return features
commitGiven a list of feature, assemble a batch request for update, create, and delete transactions.
handleCommitCalled when the commit request returns.
filterDeleteSend a request that deletes all features by their filter.
abortAbort an ongoing request, the response object passed to this method must come from this protocol (as a result of a read, or commit operation).
+ +

Properties

+ +

version

{String} WFS version number.

+ +

srsName

{String} Name of spatial reference system.  Default is “EPSG:4326”.

+ +

featureType

{String} Local feature typeName.

+ +

featureNS

{String} Feature namespace.

+ +

geometryName

{String} Name of the geometry attribute for features.  Default is “the_geom”.

+ +

schema

{String} Optional schema location that will be included in the schemaLocation attribute value.  Note that the feature type schema is required for a strict XML validator (on transactions with an insert for example), but is not required by the WFS specification (since the server is supposed to know about feature type schemas).

+ +

featurePrefix

{String} Namespace alias for feature type.  Default is “feature”.

+ +

formatOptions

{Object} Optional options for the format.  If a format is not provided, this property can be used to extend the default format options.

+ +

Constructor

+ +

OpenLayers.Protocol.WFS

A class for giving layers WFS protocol.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Valid options properties

url{String} URL to send requests to (required).
featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (required, but can be autodetected for reading if featurePrefix is provided and identical to the prefix in the server response).
featurePrefix{String} Feature namespace alias (optional - only used for writing if featureNS is provided).  Default is ‘feature’.
geometryName{String} Name of geometry attribute.  Default is ‘the_geom’.
+ +

Functions

+ +

destroy

destroy: function()

Clean up the protocol.

+ +

createCallback

createCallback: function(method,
response,
options)

Returns a function that applies the given public method with resp and options arguments.

Parameters

method{Function} The method to be applied by the callback.
response{OpenLayers.Protocol.Response} The protocol response object.
options{Object} Options sent to the protocol method (read, create, update, or delete).
+ +

read

read: function(options)

Construct a request for reading new features.  Since WFS splits the basic CRUD operations into GetFeature requests (for read) and Transactions (for all others), this method does not make use of the format’s read method (that is only about reading transaction responses).

+ +

handleRead

handleRead: function(response,
options)

Deal with response from the read request.

Parameters

response{OpenLayers.Protocol.Response} The response object to pass to the user callback.
options{Object} The user options passed to the read call.
+ +

parseFeatures

parseFeatures: function(request)

Read HTTP response body and return features

Parameters

request{XMLHttpRequest} The request object

Returns

{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} Array of features or a single feature.

+ +

commit

commit: function(features,
options)

Given a list of feature, assemble a batch request for update, create, and delete transactions.  A commit call on the prototype amounts to writing a WFS transaction - so the write method on the format is used.

Parameters

features{Array(OpenLayers.Feature.Vector}

Returns

{OpenLayers.Protocol.Response} A response object with a features property containing any insertIds and a priv property referencing the XMLHttpRequest object.

+ +

handleCommit

handleCommit: function(response,
options)

Called when the commit request returns.

Parameters

response{OpenLayers.Protocol.Response} The response object to pass to the user callback.
options{Object} The user options passed to the commit call.
+ +

filterDelete

filterDelete: function(filter,
options)

Send a request that deletes all features by their filter.

Parameters

filter{OpenLayers.Filter} filter
+ +

abort

abort: function(response)

Abort an ongoing request, the response object passed to this method must come from this protocol (as a result of a read, or commit operation).

Parameters

response{OpenLayers.Protocol.Response}
+ +
+ + + + + + + + + + +
destroy: function()
Clean up the protocol.
createCallback: function(method,
response,
options)
Returns a function that applies the given public method with resp and options arguments.
read: function(options)
Construct a request for reading new features.
handleRead: function(response,
options)
Deal with response from the read request.
parseFeatures: function(request)
Read HTTP response body and return features
commit: function(features,
options)
Given a list of feature, assemble a batch request for update, create, and delete transactions.
handleCommit: function(response,
options)
Called when the commit request returns.
filterDelete: function(filter,
options)
Send a request that deletes all features by their filter.
abort: function(response)
Abort an ongoing request, the response object passed to this method must come from this protocol (as a result of a read, or commit operation).
Abstract vector layer protocol class.
Protocols return Response objects to their users.
Vector features use the OpenLayers.Geometry classes as geometry description.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS/v1_0_0-js.html b/openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS/v1_0_0-js.html new file mode 100644 index 0000000..89d3d97 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS/v1_0_0-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Protocol.WFS.v1_0_0 - OpenLayers + + + + + + + + + +

OpenLayers.Protocol.WFS.v1_0_0

A WFS v1.0.0 protocol for vector layers.  Create a new instance with the OpenLayers.Protocol.WFS.v1_0_0 constructor.

Inherits from

Summary
OpenLayers.Protocol.WFS.v1_0_0A WFS v1.0.0 protocol for vector layers.
Properties
version{String} WFS version number.
Constructor
OpenLayers.Protocol.WFS.v1_0_0A class for giving layers WFS v1.0.0 protocol.
+ +

Properties

+ +

version

{String} WFS version number.

+ +

Constructor

+ +

OpenLayers.Protocol.WFS.v1_0_0

A class for giving layers WFS v1.0.0 protocol.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Valid options properties

featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (optional).
featurePrefix{String} Feature namespace alias (optional - only used if featureNS is provided).  Default is ‘feature’.
geometryName{String} Name of geometry attribute.  Default is ‘the_geom’.
+ +
+ + + + + + + + + + +
A class for giving layers WFS v1.0.0 protocol.
Abstract class for for v1.0.0 and v1.1.0 protocol.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS/v1_1_0-js.html b/openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS/v1_1_0-js.html new file mode 100644 index 0000000..1f5f4d8 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Protocol/WFS/v1_1_0-js.html @@ -0,0 +1,47 @@ + + +OpenLayers.Protocol.WFS.v1_1_0 - OpenLayers + + + + + + + + + +

OpenLayers.Protocol.WFS.v1_1_0

A WFS v1.1.0 protocol for vector layers.  Create a new instance with the OpenLayers.Protocol.WFS.v1_1_0 constructor.

Differences from the v1.0.0 protocol

  • uses Filter Encoding 1.1.0 instead of 1.0.0
  • uses GML 3 instead of 2 if no format is provided

Inherits from

Summary
OpenLayers.Protocol.WFS.v1_1_0A WFS v1.1.0 protocol for vector layers.
Properties
version{String} WFS version number.
Constructor
OpenLayers.Protocol.WFS.v1_1_0A class for giving layers WFS v1.1.0 protocol.
+ +

Properties

+ +

version

{String} WFS version number.

+ +

Constructor

+ +

OpenLayers.Protocol.WFS.v1_1_0

A class for giving layers WFS v1.1.0 protocol.

Parameters

options{Object} Optional object whose properties will be set on the instance.

Valid options properties

featureType{String} Local (without prefix) feature typeName (required).
featureNS{String} Feature namespace (optional).
featurePrefix{String} Feature namespace alias (optional - only used if featureNS is provided).  Default is ‘feature’.
geometryName{String} Name of geometry attribute.  Default is ‘the_geom’.
+ +
+ + + + + + + + + + +
A class for giving layers WFS v1.1.0 protocol.
Abstract class for for v1.0.0 and v1.1.0 protocol.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Renderer-js.html b/openlayers/doc/devdocs/files/OpenLayers/Renderer-js.html new file mode 100644 index 0000000..5845ecb --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Renderer-js.html @@ -0,0 +1,91 @@ + + +OpenLayers.Renderer - OpenLayers + + + + + + + + + +

OpenLayers.Renderer

This is the base class for all renderers.

This is based on a merger code written by Paul Spencer and Bertil Chapuis.  It is largely composed of virtual functions that are to be implemented in technology-specific subclasses, but there is some generic code too.

The functions that are implemented here merely deal with the maintenance of the size and extent variables, as well as the cached ‘resolution’ value.

A note to the user that all subclasses should use getResolution() instead of directly accessing this.resolution in order to correctly use the cacheing system.

Summary
OpenLayers.RendererThis is the base class for all renderers.
Properties
container{DOMElement}
root{DOMElement}
extent{OpenLayers.Bounds}
locked{Boolean} If the renderer is currently in a state where many things are changing, the ‘locked’ property is set to true.
size{OpenLayers.Size}
resolution{Float} cache of current map resolution
map{OpenLayers.Map} Reference to the map -- this is set in Vector’s setMap()
Constructor
OpenLayers.Renderer
Functions
destroy
supportedThis should be overridden by specific subclasses
setExtentSet the visible part of the layer.
setSizeSets the size of the drawing surface.
getResolutionUses cached copy of resolution if available to minimize computing
drawFeatureDraw the feature.
drawGeometryDraw a geometry.
drawTextFunction for drawing text labels.
removeTextFunction for removing text labels.
clearClear all vectors from the renderer.
getFeatureIdFromEventReturns a feature id from an event on the renderer.
eraseFeaturesThis is called by the layer to erase features
eraseGeometryRemove a geometry from the renderer (by id).
moveRootmoves this renderer’s root to a (different) renderer.
getRenderLayerIdGets the layer that this renderer’s output appears on.
+ +

Properties

+ +

container

{DOMElement}

+ +

root

{DOMElement}

+ + + +

locked

{Boolean} If the renderer is currently in a state where many things are changing, the ‘locked’ property is set to true.  This means that renderers can expect at least one more drawFeature event to be called with the ‘locked’ property set to ‘true’: In some renderers, this might make sense to use as a ‘only update local information’ flag.

+ + + +

resolution

{Float} cache of current map resolution

+ +

map

{OpenLayers.Map} Reference to the map -- this is set in Vector’s setMap()

+ +

Constructor

+ +

OpenLayers.Renderer

Parameters

containerID{String}
options{Object} options for this renderer.  See sublcasses for supported options.
+ +

Functions

+ +

destroy

destroy: function()
+ +

supported

supported: function()

This should be overridden by specific subclasses

Returns

{Boolean} Whether or not the browser supports the renderer class

+ +

setExtent

setExtent: function(extent,
resolutionChanged)

Set the visible part of the layer.

Resolution has probably changed, so we nullify the resolution cache (this.resolution) -- this way it will be re-computed when next it is needed.  We nullify the resolution cache (this.resolution) if resolutionChanged is set to true - this way it will be re-computed on the next getResolution() request.

Parameters

extent{OpenLayers.Bounds}
resolutionChanged{Boolean}
+ +

setSize

setSize: function(size)

Sets the size of the drawing surface.

Resolution has probably changed, so we nullify the resolution cache (this.resolution) -- this way it will be re-computed when next it is needed.

Parameters

size{OpenLayers.Size}
+ +

getResolution

getResolution: function()

Uses cached copy of resolution if available to minimize computing

Returns

The current map’s resolution

+ +

drawFeature

drawFeature: function(feature,
style)

Draw the feature.  The optional style argument can be used to override the feature’s own style.  This method should only be called from layer.drawFeature().

Parameters

feature{OpenLayers.Feature.Vector}
style{<Object>}

Returns

{Boolean} true if the feature has been drawn completely, false if not, undefined if the feature had no geometry

+ +

drawGeometry

drawGeometry: function(geometry,
style,
featureId)

Draw a geometry.  This should only be called from the renderer itself.  Use layer.drawFeature() from outside the renderer. virtual function

Parameters

geometry{OpenLayers.Geometry}
style{Object}
featureId{String}
+ +

drawText

drawText: function(featureId,
style,
location)

Function for drawing text labels.  This method is only called by the renderer itself.

Parameters

featureId{String} style -
location{OpenLayers.Geometry.Point}
+ +

removeText

removeText: function(featureId)

Function for removing text labels.  This method is only called by the renderer itself.

Parameters

featureId{String}
+ +

clear

clear: function()

Clear all vectors from the renderer. virtual function.

+ +

getFeatureIdFromEvent

getFeatureIdFromEvent: function(evt)

Returns a feature id from an event on the renderer.  How this happens is specific to the renderer.  This should be called from layer.getFeatureFromEvent().  Virtual function.

Parameters

evt{OpenLayers.Event}

Returns

{String} A feature id or null.

+ +

eraseFeatures

eraseFeatures: function(features)

This is called by the layer to erase features

Parameters

features{Array(OpenLayers.Feature.Vector)}
+ +

eraseGeometry

eraseGeometry: function(geometry)

Remove a geometry from the renderer (by id). virtual function.

Parameters

geometry{OpenLayers.Geometry}
+ +

moveRoot

moveRoot: function(renderer)

moves this renderer’s root to a (different) renderer.  To be implemented by subclasses that require a common renderer root for feature selection.

Parameters

renderer{OpenLayers.Renderer} target renderer for the moved root
+ +

getRenderLayerId

getRenderLayerId: function()

Gets the layer that this renderer’s output appears on.  If moveRoot was used, this will be different from the id of the layer containing the features rendered by this renderer.

Returns

{String} the id of the output layer.

+ +
+ + + + + + + + + + +
Instances of this class represent bounding boxes.
Instances of this class represent a width/height pair
Instances of OpenLayers.Map are interactive maps embedded in a web page.
destroy: function()
supported: function()
This should be overridden by specific subclasses
setExtent: function(extent,
resolutionChanged)
Set the visible part of the layer.
setSize: function(size)
Sets the size of the drawing surface.
getResolution: function()
Uses cached copy of resolution if available to minimize computing
drawFeature: function(feature,
style)
Draw the feature.
drawGeometry: function(geometry,
style,
featureId)
Draw a geometry.
drawText: function(featureId,
style,
location)
Function for drawing text labels.
removeText: function(featureId)
Function for removing text labels.
clear: function()
Clear all vectors from the renderer.
getFeatureIdFromEvent: function(evt)
Returns a feature id from an event on the renderer.
eraseFeatures: function(features)
This is called by the layer to erase features
eraseGeometry: function(geometry)
Remove a geometry from the renderer (by id).
moveRoot: function(renderer)
moves this renderer’s root to a (different) renderer.
getRenderLayerId: function()
Gets the layer that this renderer’s output appears on.
Contains convenience functions for string manipulation.
Vector features use the OpenLayers.Geometry classes as geometry description.
A Geometry is a description of a geographic object.
Point geometry class.
Utility functions for event handling.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Renderer/Canvas-js.html b/openlayers/doc/devdocs/files/OpenLayers/Renderer/Canvas-js.html new file mode 100644 index 0000000..f94d6f2 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Renderer/Canvas-js.html @@ -0,0 +1,93 @@ + + +OpenLayers.Renderer.Canvas - OpenLayers + + + + + + + + + +

OpenLayers.Renderer.Canvas

A renderer based on the 2D ‘canvas’ drawing element.element

Inherits

Summary
OpenLayers.Renderer.CanvasA renderer based on the 2D ‘canvas’ drawing element.element
Properties
canvas{Canvas} The canvas context object.
features{Object} Internal object of feature/style pairs for use in redrawing the layer.
geometryMap{Object} Geometry -> Feature lookup table.
Constructor
OpenLayers.Renderer.Canvas
Functions
eraseGeometryErase a geometry from the renderer.
supported{Boolean} Whether or not the browser supports the renderer class
setExtentSet the visible part of the layer.
setSizeSets the size of the drawing surface.
drawFeatureDraw the feature.
drawGeometryUsed when looping (in redraw) over the features; draws the canvas.
drawExternalGraphicCalled to draw External graphics.
setCanvasStylePrepare the canvas for drawing by setting various global settings.
drawPointThis method is only called by the renderer itself.
drawLineStringThis method is only called by the renderer itself.
drawLinearRingThis method is only called by the renderer itself.
drawPolygonThis method is only called by the renderer itself.
drawTextThis method is only called by the renderer itself.
getLocalXYtransform geographic xy into pixel xy
clearClear all vectors from the renderer.
getFeatureIdFromEventReturns a feature id from an event on the renderer.
eraseFeaturesThis is called by the layer to erase features; removes the feature from the list, then redraws the layer.
redrawThe real ‘meat’ of the function: any time things have changed, redraw() can be called to loop over all the data and (you guessed it) redraw it.
Constants
OpenLayers.Renderer.Canvas.LABEL_ALIGN{Object}
+ +

Properties

+ +

canvas

{Canvas} The canvas context object.

+ +

features

{Object} Internal object of feature/style pairs for use in redrawing the layer.

+ +

geometryMap

{Object} Geometry -> Feature lookup table.  Used by eraseGeometry to lookup features to remove from our internal table (this.features) when erasing geoms.

+ +

Constructor

+ +

OpenLayers.Renderer.Canvas

Parameters

containerID{String}
+ +

Functions

+ +

eraseGeometry

eraseGeometry: function(geometry)

Erase a geometry from the renderer.  Because the Canvas renderer has ‘memory’ of the features that it has drawn, we have to remove the feature so it doesn’t redraw.

Parameters

geometry{OpenLayers.Geometry}
+ +

supported

supported: function()

Returns

{Boolean} Whether or not the browser supports the renderer class

+ +

setExtent

setExtent: function(extent)

Set the visible part of the layer.

Resolution has probably changed, so we nullify the resolution cache (this.resolution), then redraw.

Parameters

extent{OpenLayers.Bounds}
+ +

setSize

setSize: function(size)

Sets the size of the drawing surface.

Once the size is updated, redraw the canvas.

Parameters

size{OpenLayers.Size}
+ +

drawFeature

drawFeature: function(feature,
style)

Draw the feature.  Stores the feature in the features list, then redraws the layer.

Parameters

feature{OpenLayers.Feature.Vector}
style{<Object>}
+ +

drawGeometry

drawGeometry: function(geometry,
style)

Used when looping (in redraw) over the features; draws the canvas.

Parameters

geometry{OpenLayers.Geometry}
style{Object}
+ +

drawExternalGraphic

drawExternalGraphic: function(pt,
style)

Called to draw External graphics.

Parameters

geometry{OpenLayers.Geometry}
style{Object}
+ +

setCanvasStyle

setCanvasStyle: function(type,
style)

Prepare the canvas for drawing by setting various global settings.

Parameters

type{String} one of ‘stroke’, ‘fill’, or ‘reset’
style{Object} Symbolizer hash
+ +

drawPoint

drawPoint: function(geometry,
style)

This method is only called by the renderer itself.

Parameters

geometry{OpenLayers.Geometry}
style{Object}
+ +

drawLineString

drawLineString: function(geometry,
style)

This method is only called by the renderer itself.

Parameters

geometry{OpenLayers.Geometry}
style{Object}
+ +

drawLinearRing

drawLinearRing: function(geometry,
style)

This method is only called by the renderer itself.

Parameters

geometry{OpenLayers.Geometry}
style{Object}
+ +

drawPolygon

drawPolygon: function(geometry,
style)

This method is only called by the renderer itself.

Parameters

geometry{OpenLayers.Geometry}
style{Object}
+ +

drawText

drawText: function(location,
style)

This method is only called by the renderer itself.

Parameters

location{<OpenLayers.Point>}
style{Object}
+ +

getLocalXY

getLocalXY: function(point)

transform geographic xy into pixel xy

Parameters

point{OpenLayers.Geometry.Point}
+ +

clear

clear: function()

Clear all vectors from the renderer. virtual function.

+ +

getFeatureIdFromEvent

getFeatureIdFromEvent: function(evt)

Returns a feature id from an event on the renderer.

Parameters

evt{OpenLayers.Event}

Returns

{String} A feature id or null.

+ +

eraseFeatures

eraseFeatures: function(features)

This is called by the layer to erase features; removes the feature from the list, then redraws the layer.

Parameters

features{Array(OpenLayers.Feature.Vector)}
+ +

redraw

redraw: function()

The real ‘meat’ of the function: any time things have changed, redraw() can be called to loop over all the data and (you guessed it) redraw it.  Unlike Elements-based Renderers, we can’t interact with things once they’re drawn, to remove them, for example, so instead we have to just clear everything and draw from scratch.

+ +

Constants

+ +

OpenLayers.Renderer.Canvas.LABEL_ALIGN

{Object}

+ +
+ + + + + + + + + + +
eraseGeometry: function(geometry)
Erase a geometry from the renderer.
supported: function()
{Boolean} Whether or not the browser supports the renderer class
setExtent: function(extent)
Set the visible part of the layer.
setSize: function(size)
Sets the size of the drawing surface.
drawFeature: function(feature,
style)
Draw the feature.
drawGeometry: function(geometry,
style)
Used when looping (in redraw) over the features; draws the canvas.
drawExternalGraphic: function(pt,
style)
Called to draw External graphics.
setCanvasStyle: function(type,
style)
Prepare the canvas for drawing by setting various global settings.
drawPoint: function(geometry,
style)
This method is only called by the renderer itself.
drawLineString: function(geometry,
style)
This method is only called by the renderer itself.
drawLinearRing: function(geometry,
style)
This method is only called by the renderer itself.
drawPolygon: function(geometry,
style)
This method is only called by the renderer itself.
drawText: function(location,
style)
This method is only called by the renderer itself.
getLocalXY: function(point)
transform geographic xy into pixel xy
clear: function()
Clear all vectors from the renderer.
getFeatureIdFromEvent: function(evt)
Returns a feature id from an event on the renderer.
eraseFeatures: function(features)
This is called by the layer to erase features; removes the feature from the list, then redraws the layer.
redraw: function()
The real ‘meat’ of the function: any time things have changed, redraw() can be called to loop over all the data and (you guessed it) redraw it.
This is the base class for all renderers.
Contains convenience functions for string manipulation.
A Geometry is a description of a geographic object.
Instances of this class represent bounding boxes.
Instances of this class represent a width/height pair
Vector features use the OpenLayers.Geometry classes as geometry description.
Point geometry class.
Utility functions for event handling.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Renderer/Elements-js.html b/openlayers/doc/devdocs/files/OpenLayers/Renderer/Elements-js.html new file mode 100644 index 0000000..7a0a71e --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Renderer/Elements-js.html @@ -0,0 +1,161 @@ + + +OpenLayers.ElementsIndexer - OpenLayers + + + + + + + + + +

OpenLayers.ElementsIndexer

This class takes care of figuring out which order elements should be placed in the DOM based on given indexing methods.

Summary
OpenLayers.ElementsIndexerThis class takes care of figuring out which order elements should be placed in the DOM based on given indexing methods.
Properties
maxZIndex{Integer} This is the largest-most z-index value for a node contained within the indexer.
order{Array<String>} This is an array of node id’s stored in the order that they should show up on screen.
indices{Object} This is a hash that maps node ids to their z-index value stored in the indexer.
compare{Function} This is the function used to determine placement of of a new node within the indexer.
Functions
initializeCreate a new indexer with
insertInsert a new node into the indexer.
remove
clear
existsnode- {DOMElement} The node to test for existence.
getZIndexGet the z-index value for the current node from the node data itself.
determineZIndexDetermine the z-index for the current node if there isn’t one, and set the maximum value if we’ve found a new maximum.
getNextElementGet the next element in the order stack.
OpenLayers.ElementsIndexer.IndexingMethodsThese are the compare methods for figuring out where a new node should be placed within the indexer.
Functions
Z_ORDERThis compare method is used by other comparison methods.
Z_ORDER_DRAWING_ORDERThis method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the newest drawn will be the front most within that z-index.
Z_ORDER_Y_ORDERThis one should really be called Z_ORDER_Y_ORDER_DRAWING_ORDER, as it best describes which ordering methods have precedence (though, the name would be too long).
OpenLayers.Renderer.ElementsThis is another virtual class in that it should never be instantiated by itself as a Renderer.
Properties
rendererRoot{DOMElement}
root{DOMElement}
vectorRoot{DOMElement}
textRoot{DOMElement}
xmlns{String}
Indexer{<OpenLayers.ElementIndexer>} An instance of OpenLayers.ElementsIndexer created upon initialization if the zIndexing or yOrdering options passed to this renderer’s constructor are set to true.
Constants
BACKGROUND_ID_SUFFIX{String}
BACKGROUND_ID_SUFFIX{String}
Properties
minimumSymbolizer{Object}
Constructor
OpenLayers.Renderer.Elements
Functions
destroy
clearRemove all the elements from the root
getNodeTypeThis function is in charge of asking the specific renderer which type of node to create for the given geometry and style.
drawGeometryDraw the geometry, creating new nodes, setting paths, setting style, setting featureId on the node.
redrawNode
redrawBackgroundNodeRedraws the node using special ‘background’ style properties.
drawGeometryNodeGiven a node, draw a geometry on the specified layer.
postDrawThings that have do be done after the geometry node is appended to its parent node.
drawPointVirtual function for drawing Point Geometry.
drawLineStringVirtual function for drawing LineString Geometry.
drawLinearRingVirtual function for drawing LinearRing Geometry.
drawPolygonVirtual function for drawing Polygon Geometry.
drawRectangleVirtual function for drawing Rectangle Geometry.
drawCircleVirtual function for drawing Circle Geometry.
drawSurfaceVirtual function for drawing Surface Geometry.
removeTextRemoves a label
getFeatureIdFromEvent
eraseGeometryErase a geometry from the renderer.
nodeFactoryCreate new node of the specified type, with the (optional) specified id.
nodeTypeCompare
createNode
moveRootmoves this renderer’s root to a different renderer.
getRenderLayerIdGets the layer that this renderer’s output appears on.
isComplexSymbolDetermines if a symbol cannot be rendered using drawCircle
Constants
OpenLayers.Renderer.symbolCoordinate arrays for well known (named) symbols.
+ +

Properties

+ +

maxZIndex

{Integer} This is the largest-most z-index value for a node contained within the indexer.

+ +

order

{Array<String>} This is an array of node id’s stored in the order that they should show up on screen.  Id’s higher up in the array (higher array index) represent nodes with higher z-indeces.

+ +

indices

{Object} This is a hash that maps node ids to their z-index value stored in the indexer.  This is done to make finding a nodes z-index value O(1).

+ +

compare

{Function} This is the function used to determine placement of of a new node within the indexer.  If null, this defaults to to the Z_ORDER_DRAWING_ORDER comparison method.

+ +

Functions

+ +

initialize

initialize: function(yOrdering)

Create a new indexer with

Parameters

yOrdering{Boolean} Whether to use y-ordering.
+ +

insert

insert: function(newNode)

Insert a new node into the indexer.  In order to find the correct positioning for the node to be inserted, this method uses a binary search.  This makes inserting O(log(n)).

Parameters

newNode{DOMElement} The new node to be inserted.

Returns {DOMElement} the node before which we should insert our newNode, or null if newNode can just be appended.

+ +

remove

remove: function(node)

Parameters

node{DOMElement} The node to be removed.
+ +

clear

clear: function()
+ +

exists

exists: function(node)

Parameters

node- {DOMElement} The node to test for existence.

Returns

{Boolean} Whether or not the node exists in the indexer?

+ +

getZIndex

getZIndex: function(node)

Get the z-index value for the current node from the node data itself.

Parameters

node{DOMElement} The node whose z-index to get.

Returns

{Integer} The z-index value for the specified node (from the node data itself).

+ +

determineZIndex

determineZIndex: function(node)

Determine the z-index for the current node if there isn’t one, and set the maximum value if we’ve found a new maximum.

Parameters

node{DOMElement}
+ +

getNextElement

getNextElement: function(index)

Get the next element in the order stack.

Parameters

index{Integer} The index of the current node in this.order.

Returns

{DOMElement} the node following the index passed in, or null.

+ +

OpenLayers.ElementsIndexer.IndexingMethods

These are the compare methods for figuring out where a new node should be placed within the indexer.  These methods are very similar to general sorting methods in that they return -1, 0, and 1 to specify the direction in which new nodes fall in the ordering.

Summary
Functions
Z_ORDERThis compare method is used by other comparison methods.
Z_ORDER_DRAWING_ORDERThis method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the newest drawn will be the front most within that z-index.
Z_ORDER_Y_ORDERThis one should really be called Z_ORDER_Y_ORDER_DRAWING_ORDER, as it best describes which ordering methods have precedence (though, the name would be too long).
+ +

Functions

+ +

Z_ORDER

Z_ORDER: function(indexer,
newNode,
nextNode)

This compare method is used by other comparison methods.  It can be used individually for ordering, but is not recommended, because it doesn’t subscribe to drawing order.

Parameters

indexer{OpenLayers.ElementsIndexer}
newNode{DOMElement}
nextNode{DOMElement}

Returns

{Integer}

+ +

Z_ORDER_DRAWING_ORDER

Z_ORDER_DRAWING_ORDER: function(indexer,
newNode,
nextNode)

This method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the newest drawn will be the front most within that z-index.  This is the default indexing method.

Parameters

indexer{OpenLayers.ElementsIndexer}
newNode{DOMElement}
nextNode{DOMElement}

Returns

{Integer}

+ +

Z_ORDER_Y_ORDER

Z_ORDER_Y_ORDER: function(indexer,
newNode,
nextNode)

This one should really be called Z_ORDER_Y_ORDER_DRAWING_ORDER, as it best describes which ordering methods have precedence (though, the name would be too long).  This method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the nodes with the lower y position will be “closer” than those with a higher y position.  If two nodes have the exact same y position, however, then this method will revert to using drawing order to decide placement.

Parameters

indexer{OpenLayers.ElementsIndexer}
newNode{DOMElement}
nextNode{DOMElement}

Returns

{Integer}

+ +

OpenLayers.Renderer.Elements

This is another virtual class in that it should never be instantiated by itself as a Renderer.  It exists because there is tons of shared functionality between different vector libraries which use nodes/elements as a base for rendering vectors.

The highlevel bits of code that are implemented here are the adding and removing of geometries, which is essentially the same for any element-based renderer.  The details of creating each node and drawing the paths are of course different, but the machinery is the same.

Inherits

Summary
Properties
rendererRoot{DOMElement}
root{DOMElement}
vectorRoot{DOMElement}
textRoot{DOMElement}
xmlns{String}
Indexer{<OpenLayers.ElementIndexer>} An instance of OpenLayers.ElementsIndexer created upon initialization if the zIndexing or yOrdering options passed to this renderer’s constructor are set to true.
Constants
BACKGROUND_ID_SUFFIX{String}
BACKGROUND_ID_SUFFIX{String}
Properties
minimumSymbolizer{Object}
Constructor
OpenLayers.Renderer.Elements
Functions
destroy
clearRemove all the elements from the root
getNodeTypeThis function is in charge of asking the specific renderer which type of node to create for the given geometry and style.
drawGeometryDraw the geometry, creating new nodes, setting paths, setting style, setting featureId on the node.
redrawNode
redrawBackgroundNodeRedraws the node using special ‘background’ style properties.
drawGeometryNodeGiven a node, draw a geometry on the specified layer.
postDrawThings that have do be done after the geometry node is appended to its parent node.
drawPointVirtual function for drawing Point Geometry.
drawLineStringVirtual function for drawing LineString Geometry.
drawLinearRingVirtual function for drawing LinearRing Geometry.
drawPolygonVirtual function for drawing Polygon Geometry.
drawRectangleVirtual function for drawing Rectangle Geometry.
drawCircleVirtual function for drawing Circle Geometry.
drawSurfaceVirtual function for drawing Surface Geometry.
removeTextRemoves a label
getFeatureIdFromEvent
eraseGeometryErase a geometry from the renderer.
nodeFactoryCreate new node of the specified type, with the (optional) specified id.
nodeTypeCompare
createNode
moveRootmoves this renderer’s root to a different renderer.
getRenderLayerIdGets the layer that this renderer’s output appears on.
isComplexSymbolDetermines if a symbol cannot be rendered using drawCircle
Constants
OpenLayers.Renderer.symbolCoordinate arrays for well known (named) symbols.
+ +

Properties

+ +

rendererRoot

{DOMElement}

+ +

root

{DOMElement}

+ +

vectorRoot

{DOMElement}

+ +

textRoot

{DOMElement}

+ +

xmlns

{String}

+ +

Indexer

{<OpenLayers.ElementIndexer>} An instance of OpenLayers.ElementsIndexer created upon initialization if the zIndexing or yOrdering options passed to this renderer’s constructor are set to true.

+ +

Constants

+ +

BACKGROUND_ID_SUFFIX

{String}

+ +

BACKGROUND_ID_SUFFIX

{String}

+ +

Properties

+ +

minimumSymbolizer

{Object}

+ +

Constructor

+ +

OpenLayers.Renderer.Elements

Parameters

containerID{String}
options{Object} options for this renderer.  Supported options are:
  • yOrdering - {Boolean} Whether to use y-ordering
  • zIndexing - {Boolean} Whether to use z-indexing.  Will be ignored if yOrdering is set to true.
+ +

Functions

+ +

destroy

destroy: function()
+ +

clear

clear: function()

Remove all the elements from the root

+ +

getNodeType

getNodeType: function(geometry,
style)

This function is in charge of asking the specific renderer which type of node to create for the given geometry and style.  All geometries in an Elements-based renderer consist of one node and some attributes.  We have the nodeFactory() function which creates a node for us, but it takes a ‘type’ as input, and that is precisely what this function tells us.

Parameters

geometry{OpenLayers.Geometry}
style{Object}

Returns

{String} The corresponding node type for the specified geometry

+ +

drawGeometry

drawGeometry: function(geometry,
style,
featureId)

Draw the geometry, creating new nodes, setting paths, setting style, setting featureId on the node.  This method should only be called by the renderer itself.

Parameters

geometry{OpenLayers.Geometry}
style{Object}
featureId{String}

Returns

{Boolean} true if the geometry has been drawn completely; null if incomplete; false otherwise

+ +

redrawNode

redrawNode: function(id,
geometry,
style,
featureId)

Parameters

id{String}
geometry{OpenLayers.Geometry}
style{Object}
featureId{String}

Returns

{Boolean} true if the complete geometry could be drawn, null if parts of the geometry could not be drawn, false otherwise

+ +

redrawBackgroundNode

redrawBackgroundNode: function(id,
geometry,
style,
featureId)

Redraws the node using special ‘background’ style properties.  Basically just calls redrawNode(), but instead of directly using the ‘externalGraphic’, ‘graphicXOffset’, ‘graphicYOffset’, and ‘graphicZIndex’ properties directly from the specified ‘style’ parameter, we create a new style object and set those properties from the corresponding ‘background’-prefixed properties from specified ‘style’ parameter.

Parameters

id{String}
geometry{OpenLayers.Geometry}
style{Object}
featureId{String}

Returns

{Boolean} true if the complete geometry could be drawn, null if parts of the geometry could not be drawn, false otherwise

+ +

drawGeometryNode

drawGeometryNode: function(node,
geometry,
style)

Given a node, draw a geometry on the specified layer. node and geometry are required arguments, style is optional.  This method is only called by the render itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}
style{Object}

Returns

{Object} a hash with properties “node” (the drawn node) and “complete” (null if parts of the geometry could not be drawn, false if nothing could be drawn)

+ +

postDraw

postDraw: function(node)

Things that have do be done after the geometry node is appended to its parent node.  To be overridden by subclasses.

Parameters

node{DOMElement}
+ +

drawPoint

drawPoint: function(node,
geometry)

Virtual function for drawing Point Geometry.  Should be implemented by subclasses.  This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or false if the renderer could not draw the point

+ +

drawLineString

drawLineString: function(node,
geometry)

Virtual function for drawing LineString Geometry.  Should be implemented by subclasses.  This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or null if the renderer could not draw all components of the linestring, or false if nothing could be drawn

+ +

drawLinearRing

drawLinearRing: function(node,
geometry)

Virtual function for drawing LinearRing Geometry.  Should be implemented by subclasses.  This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or null if the renderer could not draw all components of the linear ring, or false if nothing could be drawn

+ +

drawPolygon

drawPolygon: function(node,
geometry)

Virtual function for drawing Polygon Geometry.  Should be implemented by subclasses.  This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or null if the renderer could not draw all components of the polygon, or false if nothing could be drawn

+ +

drawRectangle

drawRectangle: function(node,
geometry)

Virtual function for drawing Rectangle Geometry.  Should be implemented by subclasses.  This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or false if the renderer could not draw the rectangle

+ +

drawCircle

drawCircle: function(node,
geometry)

Virtual function for drawing Circle Geometry.  Should be implemented by subclasses.  This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or false if the renderer could not draw the circle

+ +

drawSurface

drawSurface: function(node,
geometry)

Virtual function for drawing Surface Geometry.  Should be implemented by subclasses.  This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or false if the renderer could not draw the surface

+ +

removeText

removeText: function(featureId)

Removes a label

Parameters

featureId{String}
+ +

getFeatureIdFromEvent

getFeatureIdFromEvent: function(evt)

Parameters

evt{Object} An OpenLayers.Event object

Returns

{OpenLayers.Geometry} A geometry from an event that happened on a layer.

+ +

eraseGeometry

eraseGeometry: function(geometry)

Erase a geometry from the renderer.  In the case of a multi-geometry, we cycle through and recurse on ourselves.  Otherwise, we look for a node with the geometry.id, destroy its geometry, and remove it from the DOM.

Parameters

geometry{OpenLayers.Geometry}
+ +

nodeFactory

nodeFactory: function(id,
type)

Create new node of the specified type, with the (optional) specified id.

If node already exists with same ID and a different type, we remove it and then call ourselves again to recreate it.

Parameters

id{String}
type{String} type Kind of node to draw.

Returns

{DOMElement} A new node of the given type and id.

+ +

nodeTypeCompare

nodeTypeCompare: function(node,
type)

Parameters

node{DOMElement}
type{String} Kind of node

Returns

{Boolean} Whether or not the specified node is of the specified type This function must be overridden by subclasses.

+ +

createNode

createNode: function(type,
id)

Parameters

type{String} Kind of node to draw.
id{String} Id for node.

Returns

{DOMElement} A new node of the given type and id.  This function must be overridden by subclasses.

+ +

moveRoot

moveRoot: function(renderer)

moves this renderer’s root to a different renderer.

Parameters

renderer{OpenLayers.Renderer} target renderer for the moved root
+ +

getRenderLayerId

getRenderLayerId: function()

Gets the layer that this renderer’s output appears on.  If moveRoot was used, this will be different from the id of the layer containing the features rendered by this renderer.

Returns

{String} the id of the output layer.

+ +

isComplexSymbol

isComplexSymbol: function(graphicName)

Determines if a symbol cannot be rendered using drawCircle

Parameters

graphicName{String}

Returns {Boolean} true if the symbol is complex, false if not

+ +

Constants

+ +

OpenLayers.Renderer.symbol

Coordinate arrays for well known (named) symbols.

+ +
+ + + + + + + + + + +
initialize: function(yOrdering)
Create a new indexer with
insert: function(newNode)
Insert a new node into the indexer.
remove: function(node)
clear: function()
exists: function(node)
node- {DOMElement} The node to test for existence.
getZIndex: function(node)
Get the z-index value for the current node from the node data itself.
determineZIndex: function(node)
Determine the z-index for the current node if there isn’t one, and set the maximum value if we’ve found a new maximum.
getNextElement: function(index)
Get the next element in the order stack.
Z_ORDER: function(indexer,
newNode,
nextNode)
This compare method is used by other comparison methods.
Z_ORDER_DRAWING_ORDER: function(indexer,
newNode,
nextNode)
This method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the newest drawn will be the front most within that z-index.
Z_ORDER_Y_ORDER: function(indexer,
newNode,
nextNode)
This one should really be called Z_ORDER_Y_ORDER_DRAWING_ORDER, as it best describes which ordering methods have precedence (though, the name would be too long).
destroy: function()
clear: function()
Remove all the elements from the root
getNodeType: function(geometry,
style)
This function is in charge of asking the specific renderer which type of node to create for the given geometry and style.
drawGeometry: function(geometry,
style,
featureId)
Draw the geometry, creating new nodes, setting paths, setting style, setting featureId on the node.
redrawNode: function(id,
geometry,
style,
featureId)
redrawBackgroundNode: function(id,
geometry,
style,
featureId)
Redraws the node using special ‘background’ style properties.
drawGeometryNode: function(node,
geometry,
style)
Given a node, draw a geometry on the specified layer.
postDraw: function(node)
Things that have do be done after the geometry node is appended to its parent node.
drawPoint: function(node,
geometry)
Virtual function for drawing Point Geometry.
drawLineString: function(node,
geometry)
Virtual function for drawing LineString Geometry.
drawLinearRing: function(node,
geometry)
Virtual function for drawing LinearRing Geometry.
drawPolygon: function(node,
geometry)
Virtual function for drawing Polygon Geometry.
drawRectangle: function(node,
geometry)
Virtual function for drawing Rectangle Geometry.
drawCircle: function(node,
geometry)
Virtual function for drawing Circle Geometry.
drawSurface: function(node,
geometry)
Virtual function for drawing Surface Geometry.
removeText: function(featureId)
Removes a label
getFeatureIdFromEvent: function(evt)
eraseGeometry: function(geometry)
Erase a geometry from the renderer.
nodeFactory: function(id,
type)
Create new node of the specified type, with the (optional) specified id.
nodeTypeCompare: function(node,
type)
createNode: function(type,
id)
moveRoot: function(renderer)
moves this renderer’s root to a different renderer.
getRenderLayerId: function()
Gets the layer that this renderer’s output appears on.
isComplexSymbol: function(graphicName)
Determines if a symbol cannot be rendered using drawCircle
This class takes care of figuring out which order elements should be placed in the DOM based on given indexing methods.
This is the base class for all renderers.
A Geometry is a description of a geographic object.
Utility functions for event handling.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Renderer/SVG-js.html b/openlayers/doc/devdocs/files/OpenLayers/Renderer/SVG-js.html new file mode 100644 index 0000000..b542eaf --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Renderer/SVG-js.html @@ -0,0 +1,123 @@ + + +OpenLayers.Renderer.SVG - OpenLayers + + + + + + + + + +

OpenLayers.Renderer.SVG

Inherits

Summary
OpenLayers.Renderer.SVG
Properties
xmlns{String}
xlinkns{String}
Constants
MAX_PIXEL{Integer} Firefox has a limitation where values larger or smaller than about 15000 in an SVG document lock the browser up.
Properties
translationParameters{Object} Hash with “x” and “y” properties
symbolSize{Object} Cache for symbol sizes according to their svg coordinate space
isGecko{Boolean}
Constructor
OpenLayers.Renderer.SVG
Functions
destroy
supported{Boolean} Whether or not the browser supports the SVG renderer
inValidRangeSee #669 for more information
setExtent
translateTransforms the SVG coordinate system
setSizeSets the size of the drawing surface.
getNodeType
setStyleUse to set all the style attributes to a SVG node.
dashStyle
createNode
nodeTypeCompare
createRenderRoot{DOMElement} The specific render engine’s root element
createRoot
createDefs{DOMElement} The element to which we’ll add the symbol definitions
drawPointThis method is only called by the renderer itself.
drawCircleThis method is only called by the renderer itself.
drawLineStringThis method is only called by the renderer itself.
drawLinearRingThis method is only called by the renderer itself.
drawPolygonThis method is only called by the renderer itself.
drawRectangleThis method is only called by the renderer itself.
drawSurfaceThis method is only called by the renderer itself.
drawTextThis method is only called by the renderer itself.
getComponentString
clipLineGiven two points (one inside the valid range, and one outside), clips the line betweeen the two points so that the new points are both inside the valid range.
getShortString
getPositionFinds the position of an svg node.
importSymboladd a new symbol definition from the rendererer’s symbol hash
Constants
OpenLayers.Renderer.SVG.LABEL_ALIGN{Object}
OpenLayers.Renderer.SVG.LABEL_VSHIFT{Object}
+ +

Properties

+ +

xmlns

{String}

+ +

xlinkns

{String}

+ +

Constants

+ +

MAX_PIXEL

{Integer} Firefox has a limitation where values larger or smaller than about 15000 in an SVG document lock the browser up.  This works around it.

+ +

Properties

+ +

translationParameters

{Object} Hash with “x” and “y” properties

+ +

symbolSize

{Object} Cache for symbol sizes according to their svg coordinate space

+ +

isGecko

{Boolean}

+ +

Constructor

+ +

OpenLayers.Renderer.SVG

Parameters

containerID{String}
+ +

Functions

+ +

destroy

destroy: function()
+ +

supported

supported: function()

Returns

{Boolean} Whether or not the browser supports the SVG renderer

+ +

inValidRange

inValidRange: function(x,
y,
xyOnly)

See #669 for more information

Parameters

x{Integer}
y{Integer}
xyOnly{Boolean} whether or not to just check for x and y, which means to not take the current translation parameters into account if true.

Returns

{Boolean} Whether or not the ‘x’ and ‘y’ coordinates are in the valid range.

+ +

setExtent

setExtent: function(extent,
resolutionChanged)

Parameters

extent{OpenLayers.Bounds}
resolutionChanged{Boolean}

Returns

{Boolean} true to notify the layer that the new extent does not exceed the coordinate range, and the features will not need to be redrawn.  False otherwise.

+ +

translate

translate: function(x,
y)

Transforms the SVG coordinate system

Parameters

x{Float}
y{Float}

Returns

{Boolean} true if the translation parameters are in the valid coordinates range, false otherwise.

+ +

setSize

setSize: function(size)

Sets the size of the drawing surface.

Parameters

size{OpenLayers.Size} The size of the drawing surface
+ +

getNodeType

getNodeType: function(geometry,
style)

Parameters

geometry{OpenLayers.Geometry}
style{Object}

Returns

{String} The corresponding node type for the specified geometry

+ +

setStyle

setStyle: function(node,
style,
options)

Use to set all the style attributes to a SVG node.

Takes care to adjust stroke width and point radius to be resolution-relative

Parameters

node{SVGDomElement} An SVG element to decorate
style{Object}
options{Object} Currently supported options include ‘isFilled’ {Boolean} and ‘isStroked’ {Boolean}
+ +

dashStyle

dashStyle: function(style,
widthFactor)

Parameters

style{Object}
widthFactor{Number}

Returns

{String} A SVG compliant ‘stroke-dasharray’ value

+ +

createNode

createNode: function(type,
id)

Parameters

type{String} Kind of node to draw
id{String} Id for node

Returns

{DOMElement} A new node of the given type and id

+ +

nodeTypeCompare

nodeTypeCompare: function(node,
type)

Parameters

node{SVGDomElement} An SVG element
type{String} Kind of node

Returns

{Boolean} Whether or not the specified node is of the specified type

+ +

createRenderRoot

createRenderRoot: function()

Returns

{DOMElement} The specific render engine’s root element

+ +

createRoot

createRoot: function(suffix)

Parameter

suffix{String} suffix to append to the id

Returns

{DOMElement}

+ +

createDefs

createDefs: function()

Returns

{DOMElement} The element to which we’ll add the symbol definitions

+ +

drawPoint

drawPoint: function(node,
geometry)

This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or false if the renderer could not draw the point

+ +

drawCircle

drawCircle: function(node,
geometry,
radius)

This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}
radius{Float}

Returns

{DOMElement} or false if the renderer could not draw the circle

+ +

drawLineString

drawLineString: function(node,
geometry)

This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or null if the renderer could not draw all components of the linestring, or false if nothing could be drawn

+ +

drawLinearRing

drawLinearRing: function(node,
geometry)

This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or null if the renderer could not draw all components of the linear ring, or false if nothing could be drawn

+ +

drawPolygon

drawPolygon: function(node,
geometry)

This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or null if the renderer could not draw all components of the polygon, or false if nothing could be drawn

+ +

drawRectangle

drawRectangle: function(node,
geometry)

This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or false if the renderer could not draw the rectangle

+ +

drawSurface

drawSurface: function(node,
geometry)

This method is only called by the renderer itself.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or false if the renderer could not draw the surface

+ +

drawText

drawText: function(featureId,
style,
location)

This method is only called by the renderer itself.

Parameters

featureId{String} style -
location{OpenLayers.Geometry.Point}
+ +

getComponentString

Parameters

components{Array(OpenLayers.Geometry.Point)} Array of points
separator{String} character between coordinate pairs.  Defaults to “,”

Returns

{Object} hash with properties “path” (the string created from the components and “complete” (false if the renderer was unable to draw all components)

+ +

clipLine

clipLine: function(badComponent,
goodComponent)

Given two points (one inside the valid range, and one outside), clips the line betweeen the two points so that the new points are both inside the valid range.

Parameters

badComponent{OpenLayers.Geometry.Point)} original geometry of the invalid point
goodComponent{OpenLayers.Geometry.Point)} original geometry of the valid point Returns {String} the SVG coordinate pair of the clipped point (like getShortString), or an empty string if both passed componets are at the same point.
+ +

getShortString

getShortString: function(point)

Parameters

point{OpenLayers.Geometry.Point}

Returns

{String} or false if point is outside the valid range

+ +

getPosition

getPosition: function(node)

Finds the position of an svg node.

Parameters

node{DOMElement}

Returns

{Object} hash with x and y properties, representing the coordinates within the svg coordinate system

+ +

importSymbol

importSymbol: function (graphicName)

add a new symbol definition from the rendererer’s symbol hash

Parameters

graphicName{String} name of the symbol to import

Returns

{String}id of the imported symbol
+ +

Constants

+ +

OpenLayers.Renderer.SVG.LABEL_ALIGN

{Object}

+ +

OpenLayers.Renderer.SVG.LABEL_VSHIFT

{Object}

+ +
+ + + + + + + + + + +
destroy: function()
supported: function()
{Boolean} Whether or not the browser supports the SVG renderer
inValidRange: function(x,
y,
xyOnly)
See #669 for more information
setExtent: function(extent,
resolutionChanged)
translate: function(x,
y)
Transforms the SVG coordinate system
setSize: function(size)
Sets the size of the drawing surface.
getNodeType: function(geometry,
style)
setStyle: function(node,
style,
options)
Use to set all the style attributes to a SVG node.
dashStyle: function(style,
widthFactor)
createNode: function(type,
id)
nodeTypeCompare: function(node,
type)
createRenderRoot: function()
{DOMElement} The specific render engine’s root element
createRoot: function(suffix)
createDefs: function()
{DOMElement} The element to which we’ll add the symbol definitions
drawPoint: function(node,
geometry)
This method is only called by the renderer itself.
drawCircle: function(node,
geometry,
radius)
This method is only called by the renderer itself.
drawLineString: function(node,
geometry)
This method is only called by the renderer itself.
drawLinearRing: function(node,
geometry)
This method is only called by the renderer itself.
drawPolygon: function(node,
geometry)
This method is only called by the renderer itself.
drawRectangle: function(node,
geometry)
This method is only called by the renderer itself.
drawSurface: function(node,
geometry)
This method is only called by the renderer itself.
drawText: function(featureId,
style,
location)
This method is only called by the renderer itself.
clipLine: function(badComponent,
goodComponent)
Given two points (one inside the valid range, and one outside), clips the line betweeen the two points so that the new points are both inside the valid range.
getShortString: function(point)
getPosition: function(node)
Finds the position of an svg node.
importSymbol: function (graphicName)
add a new symbol definition from the rendererer’s symbol hash
This is another virtual class in that it should never be instantiated by itself as a Renderer.
Instances of this class represent bounding boxes.
Instances of this class represent a width/height pair
A Geometry is a description of a geographic object.
Point geometry class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Renderer/VML-js.html b/openlayers/doc/devdocs/files/OpenLayers/Renderer/VML-js.html new file mode 100644 index 0000000..61e5318 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Renderer/VML-js.html @@ -0,0 +1,107 @@ + + +OpenLayers.Renderer.VML - OpenLayers + + + + + + + + + +

OpenLayers.Renderer.VML

Render vector features in browsers with VML capability.  Construct a new VML renderer with the OpenLayers.Renderer.VML constructor.

Note that for all calculations in this class, we use toFixed() to round a float value to an integer.  This is done because it seems that VML doesn’t support float values.

Inherits from

Summary
OpenLayers.Renderer.VMLRender vector features in browsers with VML capability.
Properties
xmlns{String} XML Namespace URN
symbolCache{DOMElement} node holding symbols.
offset{Object} Hash with “x” and “y” properties
Constructor
OpenLayers.Renderer.VMLCreate a new VML renderer.
Functions
destroyDeconstruct the renderer.
supportedDetermine whether a browser supports this renderer.
setExtentSet the renderer’s extent
setSizeSet the size of the drawing surface
getNodeTypeGet the node type for a geometry and style
setStyleUse to set all the style attributes to a VML node.
graphicRotateIf a point is to be styled with externalGraphic and rotation, VML fills cannot be used to display the graphic, because rotation of graphic fills is not supported by the VML implementation of Internet Explorer.
postDrawSome versions of Internet Explorer seem to be unable to set fillcolor and strokecolor to “none” correctly before the fill node is appended to a visible vml node.
setNodeDimensionGet the geometry’s bounds, convert it to our vml coordinate system, then set the node’s position, size, and local coordinate system.
dashStyle
createNodeCreate a new node
nodeTypeCompareDetermine whether a node is of a given type
createRenderRootCreate the renderer root
createRootCreate the main root element
drawPointRender a point
drawCircleRender a circle.
drawLineStringRender a linestring.
drawLinearRingRender a linearring
DrawLineRender a line.
drawPolygonRender a polygon
drawRectangleRender a rectangle
drawTextThis method is only called by the renderer itself.
drawSurface
moveRootmoves this renderer’s root to a different renderer.
importSymboladd a new symbol definition from the rendererer’s symbol hash
Constants
OpenLayers.Renderer.VML.LABEL_SHIFT{Object}
+ +

Properties

+ +

xmlns

{String} XML Namespace URN

+ +

symbolCache

{DOMElement} node holding symbols.  This hash is keyed by symbol name, and each value is a hash with a “path” and an “extent” property.

+ +

offset

{Object} Hash with “x” and “y” properties

+ +

Constructor

+ +

OpenLayers.Renderer.VML

Create a new VML renderer.

Parameters

containerID{String} The id for the element that contains the renderer
+ +

Functions

+ +

destroy

destroy: function()

Deconstruct the renderer.

+ +

supported

supported: function()

Determine whether a browser supports this renderer.

Returns

{Boolean} The browser supports the VML renderer

+ +

setExtent

setExtent: function(extent,
resolutionChanged)

Set the renderer’s extent

Parameters

extent{OpenLayers.Bounds}
resolutionChanged{Boolean}

Returns

{Boolean} true to notify the layer that the new extent does not exceed the coordinate range, and the features will not need to be redrawn.

+ +

setSize

setSize: function(size)

Set the size of the drawing surface

Parameters

size{OpenLayers.Size} the size of the drawing surface
+ +

getNodeType

getNodeType: function(geometry,
style)

Get the node type for a geometry and style

Parameters

geometry{OpenLayers.Geometry}
style{Object}

Returns

{String} The corresponding node type for the specified geometry

+ +

setStyle

setStyle: function(node,
style,
options,
geometry)

Use to set all the style attributes to a VML node.

Parameters

node{DOMElement} An VML element to decorate
style{Object}
options{Object} Currently supported options include ‘isFilled’ {Boolean} and ‘isStroked’ {Boolean}
geometry{OpenLayers.Geometry}
+ +

graphicRotate

graphicRotate: function(node,
xOffset,
yOffset)

If a point is to be styled with externalGraphic and rotation, VML fills cannot be used to display the graphic, because rotation of graphic fills is not supported by the VML implementation of Internet Explorer.  This method creates a olv:imagedata element inside the VML node, DXImageTransform.Matrix and BasicImage filters for rotation and opacity, and a 3-step hack to remove rendering artefacts from the graphic and preserve the ability of graphics to trigger events.  Finally, OpenLayers methods are used to determine the correct insertion point of the rotated image, because DXImageTransform.Matrix does the rotation without the ability to specify a rotation center point.

Parameters

node{DOMElement}
xOffset{Number} rotation center relative to image, x coordinate
yOffset{Number} rotation center relative to image, y coordinate
+ +

postDraw

postDraw: function(node)

Some versions of Internet Explorer seem to be unable to set fillcolor and strokecolor to “none” correctly before the fill node is appended to a visible vml node.  This method takes care of that and sets fillcolor and strokecolor again if needed.

Parameters

node{DOMElement}
+ +

setNodeDimension

setNodeDimension: function(node,
geometry)

Get the geometry’s bounds, convert it to our vml coordinate system, then set the node’s position, size, and local coordinate system.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}
+ +

dashStyle

dashStyle: function(style)

Parameters

style{Object}

Returns

{String} A VML compliant ‘stroke-dasharray’ value

+ +

createNode

createNode: function(type,
id)

Create a new node

Parameters

type{String} Kind of node to draw
id{String} Id for node

Returns

{DOMElement} A new node of the given type and id

+ +

nodeTypeCompare

nodeTypeCompare: function(node,
type)

Determine whether a node is of a given type

Parameters

node{DOMElement} An VML element
type{String} Kind of node

Returns

{Boolean} Whether or not the specified node is of the specified type

+ +

createRenderRoot

createRenderRoot: function()

Create the renderer root

Returns

{DOMElement} The specific render engine’s root element

+ +

createRoot

createRoot: function(suffix)

Create the main root element

Parameters

suffix{String} suffix to append to the id

Returns

{DOMElement}

+ +

drawPoint

drawPoint: function(node,
geometry)

Render a point

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement} or false if the point could not be drawn

+ +

drawCircle

drawCircle: function(node,
geometry,
radius)

Render a circle.  Size and Center a circle given geometry (x,y center) and radius

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}
radius{float}

Returns

{DOMElement} or false if the circle could not ne drawn

+ +

drawLineString

drawLineString: function(node,
geometry)

Render a linestring.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement}

+ +

drawLinearRing

drawLinearRing: function(node,
geometry)

Render a linearring

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement}

+ +

DrawLine

Render a line.

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}
closeLine{Boolean} Close the line?  (make it a ring?)

Returns

{DOMElement}

+ +

drawPolygon

drawPolygon: function(node,
geometry)

Render a polygon

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement}

+ +

drawRectangle

drawRectangle: function(node,
geometry)

Render a rectangle

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement}

+ +

drawText

drawText: function(featureId,
style,
location)

This method is only called by the renderer itself.

Parameters

featureId{String} style -
location{OpenLayers.Geometry.Point}
+ +

drawSurface

drawSurface: function(node,
geometry)

Parameters

node{DOMElement}
geometry{OpenLayers.Geometry}

Returns

{DOMElement}

+ +

moveRoot

moveRoot: function(renderer)

moves this renderer’s root to a different renderer.

Parameters

renderer{OpenLayers.Renderer} target renderer for the moved root
root{DOMElement} optional root node.  To be used when this renderer holds roots from multiple layers to tell this method which one to detach

Returns

{Boolean} true if successful, false otherwise

+ +

importSymbol

importSymbol: function (graphicName)

add a new symbol definition from the rendererer’s symbol hash

Parameters

graphicName{String} name of the symbol to import

Returns

{Object}hash of {DOMElement} “symbol” and {Number} “size”
+ +

Constants

+ +

OpenLayers.Renderer.VML.LABEL_SHIFT

{Object}

+ +
+ + + + + + + + + + +
destroy: function()
Deconstruct the renderer.
supported: function()
Determine whether a browser supports this renderer.
setExtent: function(extent,
resolutionChanged)
Set the renderer’s extent
setSize: function(size)
Set the size of the drawing surface
getNodeType: function(geometry,
style)
Get the node type for a geometry and style
setStyle: function(node,
style,
options,
geometry)
Use to set all the style attributes to a VML node.
graphicRotate: function(node,
xOffset,
yOffset)
If a point is to be styled with externalGraphic and rotation, VML fills cannot be used to display the graphic, because rotation of graphic fills is not supported by the VML implementation of Internet Explorer.
postDraw: function(node)
Some versions of Internet Explorer seem to be unable to set fillcolor and strokecolor to “none” correctly before the fill node is appended to a visible vml node.
setNodeDimension: function(node,
geometry)
Get the geometry’s bounds, convert it to our vml coordinate system, then set the node’s position, size, and local coordinate system.
dashStyle: function(style)
createNode: function(type,
id)
Create a new node
nodeTypeCompare: function(node,
type)
Determine whether a node is of a given type
createRenderRoot: function()
Create the renderer root
createRoot: function(suffix)
Create the main root element
drawPoint: function(node,
geometry)
Render a point
drawCircle: function(node,
geometry,
radius)
Render a circle.
drawLineString: function(node,
geometry)
Render a linestring.
drawLinearRing: function(node,
geometry)
Render a linearring
drawPolygon: function(node,
geometry)
Render a polygon
drawRectangle: function(node,
geometry)
Render a rectangle
drawText: function(featureId,
style,
location)
This method is only called by the renderer itself.
drawSurface: function(node,
geometry)
moveRoot: function(renderer)
moves this renderer’s root to a different renderer.
importSymbol: function (graphicName)
add a new symbol definition from the rendererer’s symbol hash
Create a new VML renderer.
This is another virtual class in that it should never be instantiated by itself as a Renderer.
Instances of this class represent bounding boxes.
Instances of this class represent a width/height pair
A Geometry is a description of a geographic object.
Point geometry class.
This is the base class for all renderers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Request-js.html b/openlayers/doc/devdocs/files/OpenLayers/Request-js.html new file mode 100644 index 0000000..d3b78ba --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Request-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Request - OpenLayers + + + + + + + + + +

OpenLayers.Request

The OpenLayers.Request namespace contains convenience methods for working with XMLHttpRequests.  These methods work with a cross-browser W3C compliant OpenLayers.Request.XMLHttpRequest class.

Summary
OpenLayers.RequestThe OpenLayers.Request namespace contains convenience methods for working with XMLHttpRequests.
Constants
DEFAULT_CONFIG{Object} Default configuration for all requests.
Properties
events{OpenLayers.Events} An events object that handles all events on the {OpenLayers.Request} object.
Functions
issueCreate a new XMLHttpRequest object, open it, set any headers, bind a callback to done state, and send any data.
GETSend an HTTP GET request.
POSTSend a POST request.
PUTSend an HTTP PUT request.
DELETESend an HTTP DELETE request.
HEADSend an HTTP HEAD request.
OPTIONSSend an HTTP OPTIONS request.
+ +

Constants

+ +

DEFAULT_CONFIG

{Object} Default configuration for all requests.

+ +

Properties

+ +

events

{OpenLayers.Events} An events object that handles all events on the {OpenLayers.Request} object.

All event listeners will receive an event object with three properties

request{OpenLayers.Request.XMLHttpRequest} The request object.
config{Object} The config object sent to the specific request method.
requestUrl{String} The request url.

Supported event types

completeTriggered when we have a response from the request, if a listener returns false, no further response processing will take place.
successTriggered when the HTTP response has a success code (200-299).
failureTriggered when the HTTP response does not have a success code.
+ +

Functions

+ +

issue

issue: function(config)

Create a new XMLHttpRequest object, open it, set any headers, bind a callback to done state, and send any data.  It is recommended that you use one GET, POST, PUT, DELETE, OPTIONS, or HEAD.  This method is only documented to provide detail on the configuration options available to all request methods.

Parameters

config{Object} Object containing properties for configuring the request.  Allowed configuration properties are described below.  This object is modified and should not be reused.

Allowed config properties

method{String} One of GET, POST, PUT, DELETE, HEAD, or OPTIONS.  Default is GET.
url{String} URL for the request.
async{Boolean} Open an asynchronous request.  Default is true.
user{String} User for relevant authentication scheme.  Set to null to clear current user.
password{String} Password for relevant authentication scheme.  Set to null to clear current password.
proxy{String} Optional proxy.  Defaults to <OpenLayers.ProxyHost>.
params{Object} Any key:value pairs to be appended to the url as a query string.  Assumes url doesn’t already include a query string or hash.  Typically, this is only appropriate for GET requests where the query string will be appended to the url.  Parameter values that are arrays will be concatenated with a comma (note that this goes against form-encoding) as is done with <OpenLayers.Util.getParameterString>.
headers{Object} Object with header:value pairs to be set on the request.
data{String | Document} Optional data to send with the request.  Typically, this is only used with POST and PUT requests.  Make sure to provide the appropriate “Content-Type” header for your data.  For POST and PUT requests, the content type defaults to “application-xml”.  If your data is a different content type, or if you are using a different HTTP method, set the “Content-Type” header to match your data type.
callback{Function} Function to call when request is done.  To determine if the request failed, check request.status (200 indicates success).
success{Function} Optional function to call if request status is in the 200s.  This will be called in addition to callback above and would typically only be used as an alternative.
failure{Function} Optional function to call if request status is not in the 200s.  This will be called in addition to callback above and would typically only be used as an alternative.
scope{Object} If callback is a public method on some object, set the scope to that object.

Returns

{XMLHttpRequest} Request object.  To abort the request before a response is received, call abort() on the request object.

+ +

GET

GET: function(config)

Send an HTTP GET request.  Additional configuration properties are documented in the issue method, with the method property set to GET.

Parameters

config{Object} Object with properties for configuring the request.  See the issue method for documentation of allowed properties.  This object is modified and should not be reused.

Returns

{XMLHttpRequest} Request object.

+ +

POST

POST: function(config)

Send a POST request.  Additional configuration properties are documented in the issue method, with the method property set to POST and “Content-Type” header set to “application/xml”.

Parameters

config{Object} Object with properties for configuring the request.  See the issue method for documentation of allowed properties.  The default “Content-Type” header will be set to “application-xml” if none is provided.  This object is modified and should not be reused.

Returns

{XMLHttpRequest} Request object.

+ +

PUT

PUT: function(config)

Send an HTTP PUT request.  Additional configuration properties are documented in the issue method, with the method property set to PUT and “Content-Type” header set to “application/xml”.

Parameters

config{Object} Object with properties for configuring the request.  See the issue method for documentation of allowed properties.  The default “Content-Type” header will be set to “application-xml” if none is provided.  This object is modified and should not be reused.

Returns

{XMLHttpRequest} Request object.

+ +

DELETE

DELETE: function(config)

Send an HTTP DELETE request.  Additional configuration properties are documented in the issue method, with the method property set to DELETE.

Parameters

config{Object} Object with properties for configuring the request.  See the issue method for documentation of allowed properties.  This object is modified and should not be reused.

Returns

{XMLHttpRequest} Request object.

+ +

HEAD

HEAD: function(config)

Send an HTTP HEAD request.  Additional configuration properties are documented in the issue method, with the method property set to HEAD.

Parameters

config{Object} Object with properties for configuring the request.  See the issue method for documentation of allowed properties.  This object is modified and should not be reused.

Returns

{XMLHttpRequest} Request object.

+ +

OPTIONS

OPTIONS: function(config)

Send an HTTP OPTIONS request.  Additional configuration properties are documented in the issue method, with the method property set to OPTIONS.

Parameters

config{Object} Object with properties for configuring the request.  See the issue method for documentation of allowed properties.  This object is modified and should not be reused.

Returns

{XMLHttpRequest} Request object.

+ +
+ + + + + + + + + + +
The OpenLayers.Request namespace contains convenience methods for working with XMLHttpRequests.
issue: function(config)
Create a new XMLHttpRequest object, open it, set any headers, bind a callback to done state, and send any data.
GET: function(config)
Send an HTTP GET request.
POST: function(config)
Send a POST request.
PUT: function(config)
Send an HTTP PUT request.
DELETE: function(config)
Send an HTTP DELETE request.
HEAD: function(config)
Send an HTTP HEAD request.
OPTIONS: function(config)
Send an HTTP OPTIONS request.
Standard-compliant (W3C) cross-browser implementation of the XMLHttpRequest object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Request/XMLHttpRequest-js.html b/openlayers/doc/devdocs/files/OpenLayers/Request/XMLHttpRequest-js.html new file mode 100644 index 0000000..4b6ac39 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Request/XMLHttpRequest-js.html @@ -0,0 +1,39 @@ + + +OpenLayers.Request.XMLHttpRequest - OpenLayers + + + + + + + + + +

OpenLayers.Request.XMLHttpRequest

Standard-compliant (W3C) cross-browser implementation of the XMLHttpRequest object.  From http://code.google.com/p/xmlhttprequest/.

+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Rule-js.html b/openlayers/doc/devdocs/files/OpenLayers/Rule-js.html new file mode 100644 index 0000000..9ad4b41 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Rule-js.html @@ -0,0 +1,75 @@ + + +OpenLayers.Rule - OpenLayers + + + + + + + + + +

OpenLayers.Rule

This class represents an SLD Rule, as being used for rule-based SLD styling.

Summary
OpenLayers.RuleThis class represents an SLD Rule, as being used for rule-based SLD styling.
Properties
id{String} A unique id for this session.
name{String} name of this rule
title{String} Title of this rule (set if included in SLD)
description{String} Description of this rule (set if abstract is included in SLD)
context{Object} An optional object with properties that the rule should be evaluated against.
filter{OpenLayers.Filter} Optional filter for the rule.
elseFilter{Boolean} Determines whether this rule is only to be applied only if no other rules match (ElseFilter according to the SLD specification).
symbolizer{Object} Symbolizer or hash of symbolizers for this rule.
minScaleDenominator{Number} or {String} minimum scale at which to draw the feature.
maxScaleDenominator{Number} or {String} maximum scale at which to draw the feature.
Constructor
OpenLayers.RuleCreates a Rule.
Functions
destroynullify references to prevent circular references and memory leaks
evaluateevaluates this rule for a specific feature
getContextGets the context for evaluating this rule
cloneClones this rule.
+ +

Properties

+ +

id

{String} A unique id for this session.

+ +

name

{String} name of this rule

+ +

title

{String} Title of this rule (set if included in SLD)

+ +

description

{String} Description of this rule (set if abstract is included in SLD)

+ +

context

{Object} An optional object with properties that the rule should be evaluated against.  If no context is specified, feature.attributes will be used.

+ +

filter

{OpenLayers.Filter} Optional filter for the rule.

+ +

elseFilter

{Boolean} Determines whether this rule is only to be applied only if no other rules match (ElseFilter according to the SLD specification).  Default is false.  For instances of OpenLayers.Rule, if elseFilter is false, the rule will always apply.  For subclasses, the else property is ignored.

+ +

symbolizer

{Object} Symbolizer or hash of symbolizers for this rule.  If hash of symbolizers, keys are one or more of [“Point”, “Line”, “Polygon”].  The latter if useful if it is required to style e.g. vertices of a line with a point symbolizer.  Note, however, that this is not implemented yet in OpenLayers, but it is the way how symbolizers are defined in SLD.

+ +

minScaleDenominator

{Number} or {String} minimum scale at which to draw the feature.  In the case of a String, this can be a combination of text and propertyNames in the form “literal ${propertyName}”

+ +

maxScaleDenominator

{Number} or {String} maximum scale at which to draw the feature.  In the case of a String, this can be a combination of text and propertyNames in the form “literal ${propertyName}”

+ +

Constructor

+ +

OpenLayers.Rule

Creates a Rule.

Parameters

options{Object} An optional object with properties to set on the rule

Returns

{OpenLayers.Rule}

+ +

Functions

+ +

destroy

destroy: function()

nullify references to prevent circular references and memory leaks

+ +

evaluate

evaluate: function(feature)

evaluates this rule for a specific feature

Parameters

feature{OpenLayers.Feature} feature to apply the rule to.

Returns

{Boolean} true if the rule applies, false if it does not.  This rule is the default rule and always returns true.

+ +

getContext

getContext: function(feature)

Gets the context for evaluating this rule

Paramters

feature{OpenLayers.Feature} feature to take the context from if none is specified.
+ +

clone

clone: function()

Clones this rule.

Returns

{OpenLayers.Rule} Clone of this rule.

+ +
+ + + + + + + + + + +
This class represents an OGC Filter.
destroy: function()
nullify references to prevent circular references and memory leaks
evaluate: function(feature)
evaluates this rule for a specific feature
getContext: function(feature)
Gets the context for evaluating this rule
clone: function()
Clones this rule.
Creates a Rule.
Features are combinations of geography and attributes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Strategy-js.html b/openlayers/doc/devdocs/files/OpenLayers/Strategy-js.html new file mode 100644 index 0000000..8145241 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Strategy-js.html @@ -0,0 +1,65 @@ + + +OpenLayers.Strategy - OpenLayers + + + + + + + + + +

OpenLayers.Strategy

Abstract vector layer strategy class.  Not to be instantiated directly.  Use one of the strategy subclasses instead.

Summary
OpenLayers.StrategyAbstract vector layer strategy class.
Properties
layer{OpenLayers.Layer.Vector} The layer this strategy belongs to.
options{Object} Any options sent to the constructor.
active{Boolean} The control is active.
autoActivate{Boolean} The creator of the strategy can set autoActivate to false to fully control when the protocol is activated and deactivated.
autoDestroy{Boolean} The creator of the strategy can set autoDestroy to false to fully control when the strategy is destroyed.
Constructor
OpenLayers.StrategyAbstract class for vector strategies.
Functions
destroyClean up the strategy.
setLayerCalled to set the layer property.
activateActivate the strategy.
deactivateDeactivate the strategy.
+ +

Properties

+ +

layer

{OpenLayers.Layer.Vector} The layer this strategy belongs to.

+ +

options

{Object} Any options sent to the constructor.

+ +

active

{Boolean} The control is active.

+ +

autoActivate

{Boolean} The creator of the strategy can set autoActivate to false to fully control when the protocol is activated and deactivated.  Defaults to true.

+ +

autoDestroy

{Boolean} The creator of the strategy can set autoDestroy to false to fully control when the strategy is destroyed.  Defaults to true.

+ +

Constructor

+ +

OpenLayers.Strategy

Abstract class for vector strategies.  Create instances of a subclass.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

destroy

destroy: function()

Clean up the strategy.

+ +

setLayer

setLayer: function(layer)

Called to set the layer property.

Parameters

{OpenLayers.Layer.Vector}

+ +

activate

activate: function()

Activate the strategy.  Register any listeners, do appropriate setup.

Returns

{Boolean} True if the strategy was successfully activated or false if the strategy was already active.

+ +

deactivate

deactivate: function()

Deactivate the strategy.  Unregister any listeners, do appropriate tear-down.

Returns

{Boolean} True if the strategy was successfully deactivated or false if the strategy was already inactive.

+ +
+ + + + + + + + + + +
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
destroy: function()
Clean up the strategy.
setLayer: function(layer)
Called to set the layer property.
{OpenLayers.Layer.Vector} The layer this strategy belongs to.
activate: function()
Activate the strategy.
deactivate: function()
Deactivate the strategy.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Strategy/BBOX-js.html b/openlayers/doc/devdocs/files/OpenLayers/Strategy/BBOX-js.html new file mode 100644 index 0000000..51e1af8 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Strategy/BBOX-js.html @@ -0,0 +1,75 @@ + + +OpenLayers.Strategy.BBOX - OpenLayers + + + + + + + + + +

OpenLayers.Strategy.BBOX

A simple strategy that reads new features when the viewport invalidates some bounds.

Inherits from

Summary
OpenLayers.Strategy.BBOXA simple strategy that reads new features when the viewport invalidates some bounds.
Properties
bounds{OpenLayers.Bounds} The current data bounds (in the same projection as the layer - not always the same projection as the map).
resolution{Float} The current data resolution.
ratio{Float} The ratio of the data bounds to the viewport bounds (in each dimension).
resFactor{Float} Optional factor used to determine when previously requested features are invalid.
response{OpenLayers.Protocol.Response} The protocol response object returned by the layer protocol.
Constructor
OpenLayers.Strategy.BBOXCreate a new BBOX strategy.
Functions
activateSet up strategy with regard to reading new batches of remote data.
deactivateTear down strategy with regard to reading new batches of remote data.
updateCallback function called on “moveend” or “refresh” layer events.
getMapBoundsGet the map bounds expressed in the same projection as this layer.
invalidBoundsDetermine whether the previously requested set of features is invalid.
calculateBounds
triggerRead{OpenLayers.Protocol.Response} The protocol response object returned by the layer protocol.
createFilterReturns {OpenLayers.Filter} The filter object.
mergeGiven a list of features, determine which ones to add to the layer.
+ +

Properties

+ +

bounds

{OpenLayers.Bounds} The current data bounds (in the same projection as the layer - not always the same projection as the map).

+ +

resolution

{Float} The current data resolution.

+ +

ratio

{Float} The ratio of the data bounds to the viewport bounds (in each dimension).  Default is 2.

+ +

resFactor

{Float} Optional factor used to determine when previously requested features are invalid.  If set, the resFactor will be compared to the resolution of the previous request to the current map resolution.  If resFactor > (old / new) and 1/resFactor < (old / new).  If you set a resFactor of 1, data will be requested every time the resolution changes.  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.  If the old bounds do not contain the new bounds new data will always be requested (with or without considering resFactor).

+ +

response

{OpenLayers.Protocol.Response} The protocol response object returned by the layer protocol.

+ +

Constructor

+ +

OpenLayers.Strategy.BBOX

Create a new BBOX strategy.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

activate

activate: function()

Set up strategy with regard to reading new batches of remote data.

Returns

{Boolean} The strategy was successfully activated.

+ +

deactivate

deactivate: function()

Tear down strategy with regard to reading new batches of remote data.

Returns

{Boolean} The strategy was successfully deactivated.

+ +

update

update: function(options)

Callback function called on “moveend” or “refresh” layer events.

Parameters

options{Object} An object with a property named “force”, this property references a boolean value indicating if new data must be incondtionally read.
+ +

getMapBounds

getMapBounds: function()

Get the map bounds expressed in the same projection as this layer.

Returns

{OpenLayers.Bounds} Map bounds in the projection of the layer.

+ +

invalidBounds

invalidBounds: function(mapBounds)

Determine whether the previously requested set of features is invalid.  This occurs when the new map bounds do not contain the previously requested bounds.  In addition, if resFactor is set, it will be considered.

Parameters

mapBounds{OpenLayers.Bounds} the current map extent, will be retrieved from the map object if not provided

Returns

{Boolean}

+ +

calculateBounds

calculateBounds: function(mapBounds)

Parameters

mapBounds{OpenLayers.Bounds} the current map extent, will be retrieved from the map object if not provided
+ +

triggerRead

triggerRead: function()

Returns

{OpenLayers.Protocol.Response} The protocol response object returned by the layer protocol.

+ +

createFilter

createFilter: function()

Returns {OpenLayers.Filter} The filter object.

+ +

merge

merge: function(resp)

Given a list of features, determine which ones to add to the layer.  If the layer projection differs from the map projection, features will be transformed from the layer projection to the map projection.

Parameters

resp{OpenLayers.Protocol.Response} The response object passed by the protocol.
+ +
+ + + + + + + + + + +
Instances of this class represent bounding boxes.
Protocols return Response objects to their users.
activate: function()
Set up strategy with regard to reading new batches of remote data.
deactivate: function()
Tear down strategy with regard to reading new batches of remote data.
update: function(options)
Callback function called on “moveend” or “refresh” layer events.
getMapBounds: function()
Get the map bounds expressed in the same projection as this layer.
invalidBounds: function(mapBounds)
Determine whether the previously requested set of features is invalid.
calculateBounds: function(mapBounds)
triggerRead: function()
{OpenLayers.Protocol.Response} The protocol response object returned by the layer protocol.
createFilter: function()
Returns {OpenLayers.Filter} The filter object.
This class represents an OGC Filter.
merge: function(resp)
Given a list of features, determine which ones to add to the layer.
Abstract vector layer strategy class.
{Float} Optional factor used to determine when previously requested features are invalid.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Strategy/Cluster-js.html b/openlayers/doc/devdocs/files/OpenLayers/Strategy/Cluster-js.html new file mode 100644 index 0000000..084d6c2 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Strategy/Cluster-js.html @@ -0,0 +1,77 @@ + + +OpenLayers.Strategy.Cluster - OpenLayers + + + + + + + + + +

OpenLayers.Strategy.Cluster

Strategy for vector feature clustering.

Inherits from

Summary
OpenLayers.Strategy.ClusterStrategy for vector feature clustering.
Properties
distance{Integer} Pixel distance between features that should be considered a single cluster.
threshold{Integer} Optional threshold below which original features will be added to the layer instead of clusters.
features{Array(OpenLayers.Feature.Vector)} Cached features.
clusters{Array(OpenLayers.Feature.Vector)} Calculated clusters.
clustering{Boolean} The strategy is currently clustering features.
resolution{Float} The resolution (map units per pixel) of the current cluster set.
Constructor
OpenLayers.Strategy.ClusterCreate a new clustering strategy.
Functions
activateActivate the strategy.
deactivateDeactivate the strategy.
cacheFeaturesCache features before they are added to the layer.
clearCacheClear out the cached features.
clusterCluster features based on some threshold distance.
clustersExistDetermine whether calculated clusters are already on the layer.
shouldClusterDetermine whether to include a feature in a given cluster.
addToClusterAdd a feature to a cluster.
createClusterGiven a feature, create a cluster.
+ +

Properties

+ +

distance

{Integer} Pixel distance between features that should be considered a single cluster.  Default is 20 pixels.

+ +

threshold

{Integer} Optional threshold below which original features will be added to the layer instead of clusters.  For example, a threshold of 3 would mean that any time there are 2 or fewer features in a cluster, those features will be added directly to the layer instead of a cluster representing those features.  Default is null (which is equivalent to 1 - meaning that clusters may contain just one feature).

+ +

features

{Array(OpenLayers.Feature.Vector)} Cached features.

+ +

clusters

{Array(OpenLayers.Feature.Vector)} Calculated clusters.

+ +

clustering

{Boolean} The strategy is currently clustering features.

+ +

resolution

{Float} The resolution (map units per pixel) of the current cluster set.

+ +

Constructor

+ +

OpenLayers.Strategy.Cluster

Create a new clustering strategy.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

activate

activate: function()

Activate the strategy.  Register any listeners, do appropriate setup.

Returns

{Boolean} The strategy was successfully activated.

+ +

deactivate

deactivate: function()

Deactivate the strategy.  Unregister any listeners, do appropriate tear-down.

Returns

{Boolean} The strategy was successfully deactivated.

+ +

cacheFeatures

cacheFeatures: function(event)

Cache features before they are added to the layer.

Parameters

event{Object} The event that this was listening for.  This will come with a batch of features to be clustered.

Returns

{Boolean} False to stop layer from being added to the layer.

+ +

clearCache

clearCache: function()

Clear out the cached features.

+ +

cluster

cluster: function(event)

Cluster features based on some threshold distance.

Parameters

event{Object} The event received when cluster is called as a result of a moveend event.
+ +

clustersExist

clustersExist: function()

Determine whether calculated clusters are already on the layer.

Returns

{Boolean} The calculated clusters are already on the layer.

+ +

shouldCluster

shouldCluster: function(cluster,
feature)

Determine whether to include a feature in a given cluster.

Parameters

cluster{OpenLayers.Feature.Vector} A cluster.
feature{OpenLayers.Feature.Vector} A feature.

Returns

{Boolean} The feature should be included in the cluster.

+ +

addToCluster

addToCluster: function(cluster,
feature)

Add a feature to a cluster.

Parameters

cluster{OpenLayers.Feature.Vector} A cluster.
feature{OpenLayers.Feature.Vector} A feature.
+ +

createCluster

createCluster: function(feature)

Given a feature, create a cluster.

Parameters

feature{OpenLayers.Feature.Vector}

Returns

{OpenLayers.Feature.Vector} A cluster.

+ +
+ + + + + + + + + + +
Vector features use the OpenLayers.Geometry classes as geometry description.
activate: function()
Activate the strategy.
deactivate: function()
Deactivate the strategy.
cacheFeatures: function(event)
Cache features before they are added to the layer.
clearCache: function()
Clear out the cached features.
cluster: function(event)
Cluster features based on some threshold distance.
clustersExist: function()
Determine whether calculated clusters are already on the layer.
shouldCluster: function(cluster,
feature)
Determine whether to include a feature in a given cluster.
addToCluster: function(cluster,
feature)
Add a feature to a cluster.
createCluster: function(feature)
Given a feature, create a cluster.
Abstract vector layer strategy class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Strategy/Fixed-js.html b/openlayers/doc/devdocs/files/OpenLayers/Strategy/Fixed-js.html new file mode 100644 index 0000000..ad2fa90 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Strategy/Fixed-js.html @@ -0,0 +1,59 @@ + + +OpenLayers.Strategy.Fixed - OpenLayers + + + + + + + + + +

OpenLayers.Strategy.Fixed

A simple strategy that requests features once and never requests new data.

Inherits from

Summary
OpenLayers.Strategy.FixedA simple strategy that requests features once and never requests new data.
Properties
preload{Boolean} Load data before layer made visible.
Constructor
OpenLayers.Strategy.FixedCreate a new Fixed strategy.
Functions
destroyClean up the strategy.
activateActivate the strategy: load data or add listener to load when visible
deactivateDeactivate the strategy.
loadTells protocol to load data and unhooks the visibilitychanged event
mergeAdd all features to the layer.
+ +

Properties

+ +

preload

{Boolean} Load data before layer made visible.  Enabling this may result in considerable overhead if your application loads many data layers that are not visible by default.  Default is true.

+ +

Constructor

+ +

OpenLayers.Strategy.Fixed

Create a new Fixed strategy.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

destroy

destroy: function()

Clean up the strategy.

+ +

activate

activate: function()

Activate the strategy: load data or add listener to load when visible

Returns

{Boolean} True if the strategy was successfully activated or false if the strategy was already active.

+ +

deactivate

deactivate: function()

Deactivate the strategy.  Undo what is done in activate.

Returns

{Boolean} The strategy was successfully deactivated.

+ +

load

load: function(options)

Tells protocol to load data and unhooks the visibilitychanged event

Parameters

options{Object} options to pass to protocol read.
+ +

merge

merge: function(resp)

Add all features to the layer.

+ +
+ + + + + + + + + + +
destroy: function()
Clean up the strategy.
activate: function()
Activate the strategy: load data or add listener to load when visible
deactivate: function()
Deactivate the strategy.
load: function(options)
Tells protocol to load data and unhooks the visibilitychanged event
merge: function(resp)
Add all features to the layer.
Abstract vector layer strategy class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Strategy/Paging-js.html b/openlayers/doc/devdocs/files/OpenLayers/Strategy/Paging-js.html new file mode 100644 index 0000000..5577e2b --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Strategy/Paging-js.html @@ -0,0 +1,75 @@ + + +OpenLayers.Strategy.Paging - OpenLayers + + + + + + + + + +

OpenLayers.Strategy.Paging

Strategy for vector feature paging

Inherits from

Summary
OpenLayers.Strategy.PagingStrategy for vector feature paging
Properties
features{Array(OpenLayers.Feature.Vector)} Cached features.
length{Integer} Number of features per page.
num{Integer} The currently displayed page number.
paging{Boolean} The strategy is currently changing pages.
Constructor
OpenLayers.Strategy.PagingCreate a new paging strategy.
Functions
activateActivate the strategy.
deactivateDeactivate the strategy.
cacheFeaturesCache features before they are added to the layer.
clearCacheClear out the cached features.
pageCountGet the total count of pages given the current cache of features.
pageNumGet the zero based page number.
pageLengthGets or sets page length.
pageNextDisplay the next page of features.
pagePreviousDisplay the previous page of features.
pageDisplay the page starting at the given index from the cache.
+ +

Properties

+ +

features

{Array(OpenLayers.Feature.Vector)} Cached features.

+ +

length

{Integer} Number of features per page.  Default is 10.

+ +

num

{Integer} The currently displayed page number.

+ +

paging

{Boolean} The strategy is currently changing pages.

+ +

Constructor

+ +

OpenLayers.Strategy.Paging

Create a new paging strategy.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

activate

activate: function()

Activate the strategy.  Register any listeners, do appropriate setup.

Returns

{Boolean} The strategy was successfully activated.

+ +

deactivate

deactivate: function()

Deactivate the strategy.  Unregister any listeners, do appropriate tear-down.

Returns

{Boolean} The strategy was successfully deactivated.

+ +

cacheFeatures

cacheFeatures: function(event)

Cache features before they are added to the layer.

Parameters

event{Object} The event that this was listening for.  This will come with a batch of features to be paged.
+ +

clearCache

clearCache: function()

Clear out the cached features.  This destroys features, assuming nothing else has a reference.

+ +

pageCount

pageCount: function()

Get the total count of pages given the current cache of features.

Returns

{Integer} The page count.

+ +

pageNum

pageNum: function()

Get the zero based page number.

Returns

{Integer} The current page number being displayed.

+ +

pageLength

pageLength: function(newLength)

Gets or sets page length.

Parameters

newLength: {Integer} Optional length to be set.

Returns

{Integer} The length of a page (number of features per page).

+ +

pageNext

pageNext: function(event)

Display the next page of features.

Returns

{Boolean} A new page was displayed.

+ +

pagePrevious

pagePrevious: function()

Display the previous page of features.

Returns

{Boolean} A new page was displayed.

+ +

page

page: function(start,
event)

Display the page starting at the given index from the cache.

Returns

{Boolean} A new page was displayed.

+ +
+ + + + + + + + + + +
Vector features use the OpenLayers.Geometry classes as geometry description.
activate: function()
Activate the strategy.
deactivate: function()
Deactivate the strategy.
cacheFeatures: function(event)
Cache features before they are added to the layer.
clearCache: function()
Clear out the cached features.
pageCount: function()
Get the total count of pages given the current cache of features.
pageNum: function()
Get the zero based page number.
pageLength: function(newLength)
Gets or sets page length.
pageNext: function(event)
Display the next page of features.
pagePrevious: function()
Display the previous page of features.
page: function(start,
event)
Display the page starting at the given index from the cache.
Abstract vector layer strategy class.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Strategy/Save-js.html b/openlayers/doc/devdocs/files/OpenLayers/Strategy/Save-js.html new file mode 100644 index 0000000..920bf05 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Strategy/Save-js.html @@ -0,0 +1,61 @@ + + +OpenLayers.Strategy.Save - OpenLayers + + + + + + + + + +

OpenLayers.Strategy.Save

A strategy that commits newly created or modified features.  By default the strategy waits for a call to save before persisting changes.  By configuring the strategy with the auto option, changes can be saved automatically.

Inherits from

Summary
OpenLayers.Strategy.SaveA strategy that commits newly created or modified features.
Properties
auto{Boolean | Number} Auto-save.
timer{Number} The id of the timer.
Constructor
OpenLayers.Strategy.SaveCreate a new Save strategy.
Functions
activateActivate the strategy.
deactivateDeactivate the strategy.
triggerSaveRegistered as a listener.
saveTell the layer protocol to commit unsaved features.
onCommitCalled after protocol commit.
+ +

Properties

+ +

auto

{Boolean | Number} Auto-save.  Default is false.  If true, features will be saved immediately after being added to the layer and with each modification or deletion.  If auto is a number, features will be saved on an interval provided by the value (in seconds).

+ +

timer

{Number} The id of the timer.

+ +

Constructor

+ +

OpenLayers.Strategy.Save

Create a new Save strategy.

Parameters

options{Object} Optional object whose properties will be set on the instance.
+ +

Functions

+ +

activate

activate: function()

Activate the strategy.  Register any listeners, do appropriate setup.

Returns

{Boolean} The strategy was successfully activated.

+ +

deactivate

deactivate: function()

Deactivate the strategy.  Unregister any listeners, do appropriate tear-down.

Returns

{Boolean} The strategy was successfully deactivated.

+ +

triggerSave

triggerSave: function(event)

Registered as a listener.  Calls save if a feature has insert, update, or delete state.

Parameters

event{Object} The event this function is listening for.
+ +

save

save: function(features)

Tell the layer protocol to commit unsaved features.  If the layer projection differs from the map projection, features will be transformed into the layer projection before being committed.

Parameters

features{Array} Features to be saved.  If null, then default is all features in the layer.  Features are assumed to be in the map projection.
+ +

onCommit

onCommit: function(response)

Called after protocol commit.

Parameters

response{OpenLayers.Protocol.Response} A response object.
+ +
+ + + + + + + + + + +
activate: function()
Activate the strategy.
deactivate: function()
Deactivate the strategy.
triggerSave: function(event)
Registered as a listener.
save: function(features)
Tell the layer protocol to commit unsaved features.
onCommit: function(response)
Called after protocol commit.
{Boolean | Number} Auto-save.
Abstract vector layer strategy class.
Protocols return Response objects to their users.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Style-js.html b/openlayers/doc/devdocs/files/OpenLayers/Style-js.html new file mode 100644 index 0000000..eb3207e --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Style-js.html @@ -0,0 +1,91 @@ + + +OpenLayers.Style - OpenLayers + + + + + + + + + +

OpenLayers.Style

This class represents a UserStyle obtained from a SLD, containing styling rules.

Summary
OpenLayers.StyleThis class represents a UserStyle obtained from a SLD, containing styling rules.
Properties
name{String}
title{String} Title of this style (set if included in SLD)
description{String} Description of this style (set if abstract is included in SLD)
layerName{String} name of the layer that this style belongs to, usually according to the NamedLayer attribute of an SLD document.
isDefault{Boolean}
rules{Array(OpenLayers.Rule)}
context{Object} An optional object with properties that symbolizers’ property values should be evaluated against.
defaultStyle{Object} hash of style properties to use as default for merging rule-based style symbolizers onto.
defaultsPerSymbolizer{Boolean} If set to true, the defaultStyle will extend the symbolizer of every rule.
propertyStyles{Hash of Boolean} cache of style properties that need to be parsed for propertyNames.
Constructor
OpenLayers.StyleCreates a UserStyle.
Functions
destroynullify references to prevent circular references and memory leaks
createSymbolizercreates a style by applying all feature-dependent rules to the base style.
applySymbolizer
createLiteralscreates literals for all style properties that have an entry in <this.propertyStyles>.
findPropertyStylesLooks into all rules for this style and the defaultStyle to collect all the style hash property names containing ${...}
addPropertyStyles
addRulesAdds rules to this style.
setDefaultStyleSets the default style for this style object.
getSymbolizerPrefixReturns the correct symbolizer prefix according to the geometry type of the passed geometry
createLiteralconverts a style value holding a combination of PropertyName and Literal into a Literal, taking the property values from the passed features.
Constants
OpenLayers.Style.SYMBOLIZER_PREFIXES{Array} prefixes of the sld symbolizers.
+ +

Properties

+ +

name

{String}

+ +

title

{String} Title of this style (set if included in SLD)

+ +

description

{String} Description of this style (set if abstract is included in SLD)

+ +

layerName

{String} name of the layer that this style belongs to, usually according to the NamedLayer attribute of an SLD document.

+ +

isDefault

{Boolean}

+ +

rules

+ +

context

{Object} An optional object with properties that symbolizers’ property values should be evaluated against.  If no context is specified, feature.attributes will be used

+ +

defaultStyle

{Object} hash of style properties to use as default for merging rule-based style symbolizers onto.  If no rules are defined, createSymbolizer will return this style.  If defaultsPerSymbolizer is set to true, the defaultStyle will only be taken into account if there are rules defined.

+ +

defaultsPerSymbolizer

{Boolean} If set to true, the defaultStyle will extend the symbolizer of every rule.  Properties of the defaultStyle will also be used to set missing symbolizer properties if the symbolizer has stroke, fill or graphic set to true.  Default is false.

+ +

propertyStyles

{Hash of Boolean} cache of style properties that need to be parsed for propertyNames.  Property names are keys, values won’t be used.

+ +

Constructor

+ +

OpenLayers.Style

Creates a UserStyle.

Parameters

style{Object} Optional hash of style properties that will be used as default style for this style object.  This style applies if no rules are specified.  Symbolizers defined in rules will extend this default style.
options{Object} An optional object with properties to set on the style.

Valid options

rules{Array(OpenLayers.Rule)} List of rules to be added to the style.

Return

{OpenLayers.Style}

+ +

Functions

+ +

destroy

destroy: function()

nullify references to prevent circular references and memory leaks

+ +

createSymbolizer

createSymbolizer: function(feature)

creates a style by applying all feature-dependent rules to the base style.

Parameters

feature{OpenLayers.Feature} feature to evaluate rules for

Returns

{Object} symbolizer hash

+ +

applySymbolizer

applySymbolizer: function(rule,
style,
feature)

Parameters

rule{OpenLayers.Rule}
style{Object}
feature{<OpenLayer.Feature.Vector>}

Returns

{Object} A style with new symbolizer applied.

+ +

createLiterals

createLiterals: function(style,
feature)

creates literals for all style properties that have an entry in <this.propertyStyles>.

Parameters

style{Object} style to create literals for.  Will be modified inline.
feature{Object}

Returns

{Object} the modified style

+ +

findPropertyStyles

findPropertyStyles: function()

Looks into all rules for this style and the defaultStyle to collect all the style hash property names containing ${...} strings that have to be replaced using the createLiteral method before returning them.

Returns

{Object} hash of property names that need createLiteral parsing.  The name of the property is the key, and the value is true;

+ +

addPropertyStyles

addPropertyStyles: function(propertyStyles,
symbolizer)

Parameters

propertyStyles{Object} hash to add new property styles to.  Will be modified inline
symbolizer{Object} search this symbolizer for property styles

Returns

{Object} propertyStyles hash

+ +

addRules

addRules: function(rules)

Adds rules to this style.

Parameters

rules{Array(OpenLayers.Rule)}
+ +

setDefaultStyle

setDefaultStyle: function(style)

Sets the default style for this style object.

Parameters

style{Object} Hash of style properties
+ +

getSymbolizerPrefix

getSymbolizerPrefix: function(geometry)

Returns the correct symbolizer prefix according to the geometry type of the passed geometry

Parameters

geometry {OpenLayers.Geometry}

Returns

{String} key of the according symbolizer

+ +

createLiteral

OpenLayers.Style.createLiteral = function(value,
context,
feature)

converts a style value holding a combination of PropertyName and Literal into a Literal, taking the property values from the passed features.

Parameters

value{String} value to parse.  If this string contains a construct like “foo ${bar}”, then “foo “ will be taken as literal, and “${bar}” will be replaced by the value of the “bar” attribute of the passed feature.
context{Object} context to take attribute values from
feature{OpenLayers.Feature.Vector} The feature that will be passed to OpenLayers.String.format for evaluating functions in the context.

Returns

{String} the parsed value.  In the example of the value parameter above, the result would be “foo valueOfBar”, assuming that the passed feature has an attribute named “bar” with the value “valueOfBar”.

+ +

Constants

+ +

OpenLayers.Style.SYMBOLIZER_PREFIXES

{Array} prefixes of the sld symbolizers.  These are the same as the main geometry types

+ +
+ + + + + + + + + + +
Contains convenience functions for string manipulation.
This class represents an SLD Rule, as being used for rule-based SLD styling.
{Object} hash of style properties to use as default for merging rule-based style symbolizers onto.
destroy: function()
nullify references to prevent circular references and memory leaks
createSymbolizer: function(feature)
creates a style by applying all feature-dependent rules to the base style.
applySymbolizer: function(rule,
style,
feature)
createLiterals: function(style,
feature)
creates literals for all style properties that have an entry in this.propertyStyles.
findPropertyStyles: function()
Looks into all rules for this style and the defaultStyle to collect all the style hash property names containing ${...}
addPropertyStyles: function(propertyStyles,
symbolizer)
addRules: function(rules)
Adds rules to this style.
setDefaultStyle: function(style)
Sets the default style for this style object.
getSymbolizerPrefix: function(geometry)
Returns the correct symbolizer prefix according to the geometry type of the passed geometry
OpenLayers.Style.createLiteral = function(value,
context,
feature)
converts a style value holding a combination of PropertyName and Literal into a Literal, taking the property values from the passed features.
{Boolean} If set to true, the defaultStyle will extend the symbolizer of every rule.
Creates a UserStyle.
Features are combinations of geography and attributes.
A Geometry is a description of a geographic object.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/StyleMap-js.html b/openlayers/doc/devdocs/files/OpenLayers/StyleMap-js.html new file mode 100644 index 0000000..bf71d51 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/StyleMap-js.html @@ -0,0 +1,57 @@ + + +OpenLayers.StyleMap - OpenLayers + + + + + + + + + +

OpenLayers.StyleMap

Summary
OpenLayers.StyleMap
Properties
stylesHash of {OpenLayers.Style}, keyed by names of well known rendering intents (e.g.
extendDefault{Boolean} if true, every render intent will extend the symbolizers specified for the “default” intent at rendering time.
Constructor
OpenLayers.StyleMap
Functions
destroy
createSymbolizerCreates the symbolizer for a feature for a render intent.
addUniqueValueRulesConvenience method to create comparison rules for unique values of a property.
+ +

Properties

+ +

styles

Hash of {OpenLayers.Style}, keyed by names of well known rendering intents (e.g.  “default”, “temporary”, “select”, “delete”).

+ +

extendDefault

{Boolean} if true, every render intent will extend the symbolizers specified for the “default” intent at rendering time.  Otherwise, every rendering intent will be treated as a completely independent style.

+ +

Constructor

+ +

OpenLayers.StyleMap

Parameters

style{Object} Optional.  Either a style hash, or a style object, or a hash of style objects (style hashes) keyed by rendering intent.  If just one style hash or style object is passed, this will be used for all known render intents (default, select, temporary)
options{Object} optional hash of additional options for this instance
+ +

Functions

+ +

destroy

destroy: function()
+ +

createSymbolizer

createSymbolizer: function(feature,
intent)

Creates the symbolizer for a feature for a render intent.

Parameters

feature{OpenLayers.Feature} The feature to evaluate the rules of the intended style against.
intent{String} The intent determines the symbolizer that will be used to draw the feature.  Well known intents are “default” (for just drawing the features), “select” (for selected features) and “temporary” (for drawing features).

Returns

{Object} symbolizer hash

+ +

addUniqueValueRules

addUniqueValueRules: function(renderIntent,
property,
symbolizers,
context)

Convenience method to create comparison rules for unique values of a property.  The rules will be added to the style object for a specified rendering intent.  This method is a shortcut for creating something like the “unique value legends” familiar from well known desktop GIS systems

Parameters

renderIntent{String} rendering intent to add the rules to
property{String} values of feature attributes to create the rules for
symbolizers{Object} Hash of symbolizers, keyed by the desired property values
context{Object} An optional object with properties that symbolizers’ property values should be evaluated against.  If no context is specified, feature.attributes will be used
+ +
+ + + + + + + + + + +
This class represents a UserStyle obtained from a SLD, containing styling rules.
destroy: function()
createSymbolizer: function(feature,
intent)
Creates the symbolizer for a feature for a render intent.
addUniqueValueRules: function(renderIntent,
property,
symbolizers,
context)
Convenience method to create comparison rules for unique values of a property.
Features are combinations of geography and attributes.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Tile-js.html b/openlayers/doc/devdocs/files/OpenLayers/Tile-js.html new file mode 100644 index 0000000..2f5a1f8 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Tile-js.html @@ -0,0 +1,83 @@ + + +OpenLayers.Tile - OpenLayers + + + + + + + + + +

OpenLayers.Tile

This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.  Tiles store information about themselves -- such as the URL that they are related to, and their size - but do not add themselves to the layer div automatically, for example.  Create a new tile with the OpenLayers.Tile constructor, or a subclass.

TBD 3.0remove reference to url in above paragraph
Summary
OpenLayers.TileThis is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
Constants
EVENT_TYPES{Array(String)} Supported application event types
Properties
events{OpenLayers.Events} An events object that handles all events on the tile.
id{String} null
layer{OpenLayers.Layer} layer the tile is attached to
url{String} url of the request.
bounds{OpenLayers.Bounds} null
size{OpenLayers.Size} null
position{OpenLayers.Pixel} Top Left pixel of the tile
isLoading{Boolean} Is the tile loading?
Functions
unloadCall immediately before destroying if you are listening to tile events, so that counters are properly handled if tile is still loading at destroy-time.
destroyNullify references to prevent circular references and memory leaks.
clone
drawClear whatever is currently in the tile, then return whether or not it should actually be re-drawn.
moveToReposition the tile.
clearClear the tile of any bounds/position-related data so that it can be reused in a new location.
getBoundsFromBaseLayerTake the pixel locations of the corner of the tile, and pass them to the base layer and ask for the location of those pixels, so that displaying tiles over Google works fine.
showTileShow the tile only if it should be drawn.
showShow the tile.
hideHide the tile.
+ +

Constants

+ +

EVENT_TYPES

{Array(String)} Supported application event types

+ +

Properties

+ +

events

{OpenLayers.Events} An events object that handles all events on the tile.

+ +

id

{String} null

+ +

layer

{OpenLayers.Layer} layer the tile is attached to

+ +

url

{String} url of the request.

TBD 3.0 Deprecated.  The base tile class does not need an url.  This should be handled in subclasses.  Does not belong here.

+ +

bounds

+ +

size

+ +

position

{OpenLayers.Pixel} Top Left pixel of the tile

+ +

isLoading

{Boolean} Is the tile loading?

+ +

Functions

+ +

unload

unload: function()

Call immediately before destroying if you are listening to tile events, so that counters are properly handled if tile is still loading at destroy-time.  Will only fire an event if the tile is still loading.

+ +

destroy

destroy:function()

Nullify references to prevent circular references and memory leaks.

+ +

clone

clone: function (obj)

Parameters

obj{OpenLayers.Tile} The tile to be cloned

Returns

{OpenLayers.Tile} An exact clone of this OpenLayers.Tile

+ +

draw

draw: function()

Clear whatever is currently in the tile, then return whether or not it should actually be re-drawn.

Returns

{Boolean} Whether or not the tile should actually be drawn.  Note that this is not really the best way of doing things, but such is the way the code has been developed.  Subclasses call this and depend on the return to know if they should draw or not.

+ +

moveTo

moveTo: function (bounds,
position,
redraw)

Reposition the tile.

Parameters

bounds{OpenLayers.Bounds}
position{OpenLayers.Pixel}
redraw{Boolean} Call draw method on tile after moving.  Default is true
+ +

clear

clear: function()

Clear the tile of any bounds/position-related data so that it can be reused in a new location.  To be implemented by subclasses.

+ +

getBoundsFromBaseLayer

getBoundsFromBaseLayer: function(position)

Take the pixel locations of the corner of the tile, and pass them to the base layer and ask for the location of those pixels, so that displaying tiles over Google works fine.

Parameters

position{OpenLayers.Pixel}

Returns

bounds{OpenLayers.Bounds}
+ +

showTile

showTile: function()

Show the tile only if it should be drawn.

+ +

show

show: function()

Show the tile.  To be implemented by subclasses.

+ +

hide

hide: function()

Hide the tile.  To be implemented by subclasses.

+ +
+ + + + + + + + + + +
Instances of this class represent bounding boxes.
Instances of this class represent a width/height pair
This class represents a screen coordinate, in x and y coordinates
unload: function()
Call immediately before destroying if you are listening to tile events, so that counters are properly handled if tile is still loading at destroy-time.
destroy:function()
Nullify references to prevent circular references and memory leaks.
clone: function (obj)
draw: function()
Clear whatever is currently in the tile, then return whether or not it should actually be re-drawn.
moveTo: function (bounds,
position,
redraw)
Reposition the tile.
clear: function()
Clear the tile of any bounds/position-related data so that it can be reused in a new location.
getBoundsFromBaseLayer: function(position)
Take the pixel locations of the corner of the tile, and pass them to the base layer and ask for the location of those pixels, so that displaying tiles over Google works fine.
showTile: function()
Show the tile only if it should be drawn.
show: function()
Show the tile.
hide: function()
Hide the tile.
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Tile/Image-js.html b/openlayers/doc/devdocs/files/OpenLayers/Tile/Image-js.html new file mode 100644 index 0000000..0454fd5 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Tile/Image-js.html @@ -0,0 +1,83 @@ + + +OpenLayers.Tile.Image - OpenLayers + + + + + + + + + +

OpenLayers.Tile.Image

Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.  Create a new image tile with the OpenLayers.Tile.Image constructor.

Inherits from

Summary
OpenLayers.Tile.ImageInstances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
Properties
url{String} The URL of the image being requested.
imgDiv{DOMElement} The div element which wraps the image.
frame{DOMElement} The image element is appended to the frame.
layerAlphaHack{Boolean} True if the png alpha hack needs to be applied on the layer’s div.
isBackBuffer{Boolean} Is this tile a back buffer tile?
lastRatio{Float} Used in transition code only.
isFirstDraw{Boolean} Is this the first time the tile is being drawn? 
backBufferTile{OpenLayers.Tile} A clone of the tile used to create transition effects when the tile is moved or changes resolution.
Functions
destroynullify references to prevent circular references and memory leaks
clone
drawCheck that a tile should be drawn, and draw it.
resetBackBufferTriggered by two different events, layer loadend, and tile loadend.
renderTileInternal function to actually initialize the image tile, position it correctly, and set its url.
positionImageUsing the properties currenty set on the layer, position the tile correctly.
clearClear the tile of any bounds/position-related data so that it can be reused in a new location.
initImgDivCreates the imgDiv property on the tile.
checkImgURLMake sure that the image that just loaded is the one this tile is meant to display, since panning/zooming might have changed the tile’s URL in the meantime.
startTransitionThis method is invoked on tiles that are backBuffers for tiles in the grid.
showShow the tile by showing its frame.
hideHide the tile by hiding its frame.
+ +

Properties

+ +

url

{String} The URL of the image being requested.  No default.  Filled in by layer.getURL() function.

+ +

imgDiv

{DOMElement} The div element which wraps the image.

+ +

frame

{DOMElement} The image element is appended to the frame.  Any gutter on the image will be hidden behind the frame.

+ +

layerAlphaHack

{Boolean} True if the png alpha hack needs to be applied on the layer’s div.

+ +

isBackBuffer

{Boolean} Is this tile a back buffer tile?

+ +

lastRatio

{Float} Used in transition code only.  This is the previous ratio of the back buffer tile resolution to the map resolution.  Compared with the current ratio to determine if zooming occurred.

+ +

isFirstDraw

{Boolean} Is this the first time the tile is being drawn?  This is used to force resetBackBuffer to synchronize the backBufferTile with the foreground tile the first time the foreground tile loads so that if the user zooms before the layer has fully loaded, the backBufferTile for tiles that have been loaded can be used.

+ +

backBufferTile

{OpenLayers.Tile} A clone of the tile used to create transition effects when the tile is moved or changes resolution.

+ +

Functions

+ +

destroy

destroy: function()

nullify references to prevent circular references and memory leaks

+ +

clone

clone: function (obj)

Parameters

obj{OpenLayers.Tile.Image} The tile to be cloned

Returns

{OpenLayers.Tile.Image} An exact clone of this OpenLayers.Tile.Image

+ +

draw

draw: function()

Check that a tile should be drawn, and draw it.

Returns

{Boolean} Always returns true.

+ +

resetBackBuffer

resetBackBuffer: function()

Triggered by two different events, layer loadend, and tile loadend.  In any of these cases, we check to see if we can hide the backBufferTile yet and update its parameters to match the foreground tile.

Basic logic

  • If the backBufferTile hasn’t been drawn yet, reset it
  • If layer is still loading, show foreground tile but don’t hide the backBufferTile yet
  • If layer is done loading, reset backBuffer tile and show foreground tile
+ +

renderTile

renderTile: function()

Internal function to actually initialize the image tile, position it correctly, and set its url.

+ +

positionImage

positionImage: function()

Using the properties currenty set on the layer, position the tile correctly.  This method is used both by the async and non-async versions of the Tile.Image code.

+ +

clear

clear: function()

Clear the tile of any bounds/position-related data so that it can be reused in a new location.

+ +

initImgDiv

initImgDiv: function()

Creates the imgDiv property on the tile.

+ +

checkImgURL

checkImgURL: function ()

Make sure that the image that just loaded is the one this tile is meant to display, since panning/zooming might have changed the tile’s URL in the meantime.  If the tile URL did change before the image loaded, set the imgDiv display to ‘none’, as either (a) it will be reset to visible when the new URL loads in the image, or (b) we don’t want to display this tile after all because its new bounds are outside our maxExtent.

This function should no longer be neccesary with the improvements to Grid.js in OpenLayers 2.3.  The lack of a good isEquivilantURL function caused problems in 2.2, but it’s possible that with the improved isEquivilant URL function, this might be neccesary at some point.

See discussion in the thread at http://openlayers.org/pipermail/dev/2007-January/000205.html

+ +

startTransition

startTransition: function()

This method is invoked on tiles that are backBuffers for tiles in the grid.  The grid tile is about to be cleared and a new tile source loaded.  This is where the transition effect needs to be started to provide visual continuity.

+ +

show

show: function()

Show the tile by showing its frame.

+ +

hide

hide: function()

Hide the tile by hiding its frame.

+ +
+ + + + + + + + + + +
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
destroy: function()
nullify references to prevent circular references and memory leaks
clone: function (obj)
draw: function()
Check that a tile should be drawn, and draw it.
resetBackBuffer: function()
Triggered by two different events, layer loadend, and tile loadend.
renderTile: function()
Internal function to actually initialize the image tile, position it correctly, and set its url.
positionImage: function()
Using the properties currenty set on the layer, position the tile correctly.
clear: function()
Clear the tile of any bounds/position-related data so that it can be reused in a new location.
initImgDiv: function()
Creates the imgDiv property on the tile.
checkImgURL: function ()
Make sure that the image that just loaded is the one this tile is meant to display, since panning/zooming might have changed the tile’s URL in the meantime.
startTransition: function()
This method is invoked on tiles that are backBuffers for tiles in the grid.
show: function()
Show the tile by showing its frame.
hide: function()
Hide the tile by hiding its frame.
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Tile/WFS-js.html b/openlayers/doc/devdocs/files/OpenLayers/Tile/WFS-js.html new file mode 100644 index 0000000..d4e7235 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Tile/WFS-js.html @@ -0,0 +1,63 @@ + + +OpenLayers.Tile.WFS - OpenLayers + + + + + + + + + +

OpenLayers.Tile.WFS

Instances of OpenLayers.Tile.WFS are used to manage the image tiles used by various layers.  Create a new image tile with the OpenLayers.Tile.WFS constructor.

Inherits from

Summary
OpenLayers.Tile.WFSInstances of OpenLayers.Tile.WFS are used to manage the image tiles used by various layers.
Properties
features{Array(OpenLayers.Feature)} list of features in this tile
url{String}
request{OpenLayers.Request.XMLHttpRequest}
Functions
destroynullify references to prevent circular references and memory leaks
clearClear the tile of any bounds/position-related data so that it can be reused in a new location.
drawCheck that a tile should be drawn, and load features for it.
loadFeaturesForRegionAbort any pending requests and issue another request for data.
requestSuccessCalled on return from request succcess.
addResultsConstruct new feature via layer featureClass constructor, and add to this.features.
destroyAllFeaturesIterate through and call destroy() on each feature, removing it from the local array
+ +

Properties

+ +

features

{Array(OpenLayers.Feature)} list of features in this tile

+ +

url

{String}

+ + + +

Functions

+ +

destroy

destroy: function()

nullify references to prevent circular references and memory leaks

+ +

clear

clear: function()

Clear the tile of any bounds/position-related data so that it can be reused in a new location.

+ +

draw

draw:function()

Check that a tile should be drawn, and load features for it.

+ +

loadFeaturesForRegion

loadFeaturesForRegion:function(success,
failure)

Abort any pending requests and issue another request for data.

Input are function pointers for what to do on success and failure.

Parameters

success{function}
failure{function}
+ +

requestSuccess

requestSuccess:function(request)

Called on return from request succcess.  Adds results via layer.addFeatures in vector mode, addResults otherwise.

Parameters

request{OpenLayers.Request.XMLHttpRequest}
+ +

addResults

addResults: function(results)

Construct new feature via layer featureClass constructor, and add to this.features.

Parameters

results{Object}
+ +

destroyAllFeatures

destroyAllFeatures: function()

Iterate through and call destroy() on each feature, removing it from the local array

+ +
+ + + + + + + + + + +
Features are combinations of geography and attributes.
Standard-compliant (W3C) cross-browser implementation of the XMLHttpRequest object.
destroy: function()
nullify references to prevent circular references and memory leaks
clear: function()
Clear the tile of any bounds/position-related data so that it can be reused in a new location.
draw:function()
Check that a tile should be drawn, and load features for it.
loadFeaturesForRegion:function(success,
failure)
Abort any pending requests and issue another request for data.
requestSuccess:function(request)
Called on return from request succcess.
addResults: function(results)
Construct new feature via layer featureClass constructor, and add to this.features.
destroyAllFeatures: function()
Iterate through and call destroy() on each feature, removing it from the local array
Instances of OpenLayers.Tile.WFS are used to manage the image tiles used by various layers.
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Tween-js.html b/openlayers/doc/devdocs/files/OpenLayers/Tween-js.html new file mode 100644 index 0000000..67bf652 --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Tween-js.html @@ -0,0 +1,105 @@ + + +OpenLayers.Tween - OpenLayers + + + + + + + + + +

OpenLayers.Tween

Summary
OpenLayers.Tween
Constants
INTERVAL{int} Interval in milliseconds between 2 steps
Properties
easing{<OpenLayers.Easing>(Function)} Easing equation used for the animation Defaultly set to OpenLayers.Easing.Expo.easeOut
begin{Object} Values to start the animation with
finish{Object} Values to finish the animation with
duration{int} duration of the tween (number of steps)
callbacks{Object} An object with start, eachStep and done properties whose values are functions to be call during the animation.
time{int} Step counter
interval{int} Interval id returned by window.setInterval
playing{Boolean} Tells if the easing is currently playing
Constructor
OpenLayers.TweenCreates a Tween.
Functions
startPlays the Tween, and calls the callback method on each step
stopStops the Tween, and calls the done callback Doesn’t do anything if animation is already finished
playCalls the appropriate easing method
OpenLayers.EasingEasing Equations by Robert Penner, http://www.robertpenner.com/easing/
OpenLayers.Easing.Linear
Functions
easeIn
easeOut
easeInOut
OpenLayers.Easing.Expo
Functions
easeIn
easeOut
easeInOut
OpenLayers.Easing.Quad
Functions
easeIn
easeOut
easeInOut
+ +

Constants

+ +

INTERVAL

{int} Interval in milliseconds between 2 steps

+ +

Properties

+ +

easing

{<OpenLayers.Easing>(Function)} Easing equation used for the animation Defaultly set to OpenLayers.Easing.Expo.easeOut

+ +

begin

{Object} Values to start the animation with

+ +

finish

{Object} Values to finish the animation with

+ +

duration

{int} duration of the tween (number of steps)

+ +

callbacks

{Object} An object with start, eachStep and done properties whose values are functions to be call during the animation.  They are passed the current computed value as argument.

+ +

time

{int} Step counter

+ +

interval

{int} Interval id returned by window.setInterval

+ +

playing

{Boolean} Tells if the easing is currently playing

+ +

Constructor

+ +

OpenLayers.Tween

Creates a Tween.

Parameters

easing{<OpenLayers.Easing>(Function)} easing function method to use
+ +

Functions

+ +

start

start: function(begin,
finish,
duration,
options)

Plays the Tween, and calls the callback method on each step

Parameters

begin{Object} values to start the animation with
finish{Object} values to finish the animation with
duration{int} duration of the tween (number of steps)
options{Object} hash of options (for example callbacks (start, eachStep, done))
+ +

stop

stop: function()

Stops the Tween, and calls the done callback Doesn’t do anything if animation is already finished

+ +

play

play: function()

Calls the appropriate easing method

+ +

OpenLayers.Easing

Credits

Easing Equations by Robert Penner, http://www.robertpenner.com/easing/

+ +

OpenLayers.Easing.Linear

+ +

Functions

+ +

easeIn

easeIn: function(t,
b,
c,
d)

Parameters

t{Float} time
b{Float} beginning position
c{Float} total change
d{Float} duration of the transition
+ +

easeOut

easeOut: function(t,
b,
c,
d)

Parameters

t{Float} time
b{Float} beginning position
c{Float} total change
d{Float} duration of the transition
+ +

easeInOut

easeInOut: function(t,
b,
c,
d)

Parameters

t{Float} time
b{Float} beginning position
c{Float} total change
d{Float} duration of the transition
+ +

OpenLayers.Easing.Expo

+ +

Functions

+ +

easeIn

easeIn: function(t,
b,
c,
d)

Parameters

t{Float} time
b{Float} beginning position
c{Float} total change
d{Float} duration of the transition
+ +

easeOut

easeOut: function(t,
b,
c,
d)

Parameters

t{Float} time
b{Float} beginning position
c{Float} total change
d{Float} duration of the transition
+ +

easeInOut

easeInOut: function(t,
b,
c,
d)

Parameters

t{Float} time
b{Float} beginning position
c{Float} total change
d{Float} duration of the transition
+ +

OpenLayers.Easing.Quad

+ +

Functions

+ +

easeIn

easeIn: function(t,
b,
c,
d)

Parameters

t{Float} time
b{Float} beginning position
c{Float} total change
d{Float} duration of the transition
+ +

easeOut

easeOut: function(t,
b,
c,
d)

Parameters

t{Float} time
b{Float} beginning position
c{Float} total change
d{Float} duration of the transition
+ +

easeInOut

easeInOut: function(t,
b,
c,
d)

Parameters

t{Float} time
b{Float} beginning position
c{Float} total change
d{Float} duration of the transition
+ +
+ + + + + + + + + + +
start: function(begin,
finish,
duration,
options)
Plays the Tween, and calls the callback method on each step
stop: function()
Stops the Tween, and calls the done callback Doesn’t do anything if animation is already finished
play: function()
Calls the appropriate easing method
easeIn: function(t,
b,
c,
d)
easeOut: function(t,
b,
c,
d)
easeInOut: function(t,
b,
c,
d)
easeIn: function(t,
b,
c,
d)
easeOut: function(t,
b,
c,
d)
easeInOut: function(t,
b,
c,
d)
easeIn: function(t,
b,
c,
d)
easeOut: function(t,
b,
c,
d)
easeInOut: function(t,
b,
c,
d)
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/files/OpenLayers/Util-js.html b/openlayers/doc/devdocs/files/OpenLayers/Util-js.html new file mode 100644 index 0000000..02e6bcd --- /dev/null +++ b/openlayers/doc/devdocs/files/OpenLayers/Util-js.html @@ -0,0 +1,143 @@ + + +Util - OpenLayers + + + + + + + + + +

Util

Summary
Util
Functions and Properties
getElementThis is the old $() from prototype
extendCopy all properties of a source object to a destination object.
removeItemRemove an object from an array.
clearArrayDeprecated.
indexOfSeems to exist already in FF, but not in MOZ.
modifyDOMElementModifies many properties of a DOM element all at once.
createDivCreates a new div and optionally set some standard attributes.
createImageCreates an img element with specific attribute values.
setOpacityDeprecated.
onImageLoadBound to image load events.
onImageLoadErrorColor{String} The color tiles with load errors will turn.
IMAGE_RELOAD_ATTEMPTS{Integer} How many times should we try to reload an image before giving up? 
onImageLoadError
alphaHackNeeded{Boolean} true if the png alpha hack is necessary and possible, false otherwise.
alphaHackChecks whether it’s necessary (and possible) to use the png alpha hack which allows alpha transparency for png images under Internet Explorer.
modifyAlphaImageDiv
createAlphaImageDiv
upperCaseObjectCreates a new hashtable and copies over all the keys from the passed-in object, but storing them under an uppercased version of the key at which they were stored.
applyDefaultsTakes an object and copies any properties that don’t exist from another properties, by analogy with OpenLayers.Util.extend() from Prototype.js.
getParameterString
ImgPath{String} Default is ‘’.
getImagesLocation{String} The fully formatted image location string
TryExecute functions until one of them doesn’t throw an error.
getNodesThese could/should be made namespace aware?
_getNodes
getTagText
getXmlNodeValue
mouseLeft
precision{Number} The number of significant digits to retain to avoid floating point precision errors.
toFloatConvenience method to cast an object to a Number, rounded to the desired floating point precision.
rad
distVincentyGiven two objects representing points with geographic coordinates, this calculates the distance between those points on the surface of an ellipsoid.
getParametersParse the parameters from a URL or from the current page itself into a JavaScript Object.
getArgsDeprecated.
lastSeqID{Integer} The ever-incrementing count variable.
createUniqueIDCreate a unique identifier for this session.
Constants
INCHES_PER_UNIT{Object} Constant inches per unit -- borrowed from MapServer mapscale.c derivation of nautical miles from http://en.wikipedia.org/wiki/Nautical_mile Includes the full set of units supported by CS-MAP (http://trac.osgeo.org/csmap/) and PROJ.4 (http://trac.osgeo.org/proj/) The hardcoded table is maintain in a CS-MAP source code module named CSdataU.c The hardcoded table of PROJ.4 units are in pj_units.c.
DOTS_PER_INCH{Integer} 72 (A sensible default)
Functions
normalizeScale
getResolutionFromScale
getScaleFromResolution
safeStopPropagationDeprecated.
pagePositonCalculates the position of an element on the page.
isEquivalentUrlTest two URLs for equivalence.
createUrlObject
removeTailTakes a url and removes everything after the ?
getBrowserName{String} A string which specifies which is the current browser in which we are running.
getRenderedDimensionsRenders the contentHTML offscreen to determine actual dimensions for popup sizing.
getScrollbarWidthThis function has been modified by the OpenLayers from the original version, written by Matthew Eernisse and released under the Apache 2 license here:
+ +

Functions and Properties

+ +

getElement

OpenLayers.Util.getElement = function()

This is the old $() from prototype

+ +

extend

OpenLayers.Util.extend = function(destination,
source)

Copy all properties of a source object to a destination object.  Modifies the passed in destination object.  Any properties on the source object that are set to undefined will not be (re)set on the destination object.

Parameters

destination{Object} The object that will be modified
source{Object} The object with properties to be set on the destination

Returns

{Object} The destination object.

+ +

removeItem

OpenLayers.Util.removeItem = function(array,
item)

Remove an object from an array.  Iterates through the array to find the item, then removes it.

Parameters

array{Array}
item{Object}

Return {Array} A reference to the array

+ +

clearArray

OpenLayers.Util.clearArray = function(array)

Deprecated.  This function will disappear in 3.0.  Please use “array.length = 0” instead.

Parameters

array{Array}
+ +

indexOf

OpenLayers.Util.indexOf = function(array,
obj)

Seems to exist already in FF, but not in MOZ.

Parameters

array{Array}
obj{Object}

Returns

{Integer} The index at, which the object was found in the array.  If not found, returns -1.

+ +

modifyDOMElement

OpenLayers.Util.modifyDOMElement = function(element,
id,
px,
sz,
position,
border,
overflow,
opacity)

Modifies many properties of a DOM element all at once.  Passing in null to an individual parameter will avoid setting the attribute.

Parameters

id{String} The element id attribute to set.
px{OpenLayers.Pixel} The left and top style position.
sz{OpenLayers.Size} The width and height style attributes.
position{String} The position attribute.  eg: absolute, relative, etc.
border{String} The style.border attribute.  eg: solid black 2px
overflow{String} The style.overview attribute.
opacity{Float} Fractional value (0.0 - 1.0)
+ +

createDiv

OpenLayers.Util.createDiv = function(id,
px,
sz,
imgURL,
position,
border,
overflow,
opacity)

Creates a new div and optionally set some standard attributes.  Null may be passed to each parameter if you do not wish to set a particular attribute.  Note - zIndex is NOT set on the resulting div.

Parameters

id{String} An identifier for this element.  If no id is passed an identifier will be created automatically.
px{OpenLayers.Pixel} The element left and top position.
sz{OpenLayers.Size} The element width and height.
imgURL{String} A url pointing to an image to use as a background image.
position{String} The style.position value. eg: absolute, relative etc.
border{String} The the style.border value. eg: 2px solid black
overflow{String} The style.overflow value.  Eg. hidden
opacity{Float} Fractional value (0.0 - 1.0)

Returns

{DOMElement} A DOM Div created with the specified attributes.

+ +

createImage

OpenLayers.Util.createImage = function(id,
px,
sz,
imgURL,
position,
border,
opacity,
delayDisplay)

Creates an img element with specific attribute values.

Parameters

id{String} The id field for the img.  If none assigned one will be automatically generated.
px{OpenLayers.Pixel} The left and top positions.
sz{OpenLayers.Size} The style.width and style.height values.
imgURL{String} The url to use as the image source.
position{String} The style.position value.
border{String} The border to place around the image.
opacity{Float} Fractional value (0.0 - 1.0)
delayDisplay{Boolean} If true waits until the image has been loaded.

Returns

{DOMElement} A DOM Image created with the specified attributes.

+ +

setOpacity

OpenLayers.Util.setOpacity = function(element,
opacity)

Deprecated.  This function has been deprecated.  Instead, please use <OpenLayers.Util.modifyDOMElement> or <OpenLayers.Util.modifyAlphaImageDiv>

Set the opacity of a DOM Element Note that for this function to work in IE, elements must “have layout” according to: http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/haslayout.asp

Parameters

element{DOMElement} Set the opacity on this DOM element
opacity{Float} Opacity value (0.0 - 1.0)
+ +

onImageLoad

OpenLayers.Util.onImageLoad = function()

Bound to image load events.  For all images created with createImage or createAlphaImageDiv, this function will be bound to the load event.

+ +

onImageLoadErrorColor

{String} The color tiles with load errors will turn.  Default is “pink”

+ +

IMAGE_RELOAD_ATTEMPTS

{Integer} How many times should we try to reload an image before giving up?  Default is 0

+ +

onImageLoadError

OpenLayers.Util.onImageLoadError = function()
+ +

alphaHackNeeded

{Boolean} true if the png alpha hack is necessary and possible, false otherwise.

+ +

alphaHack

OpenLayers.Util.alphaHack = function()

Checks whether it’s necessary (and possible) to use the png alpha hack which allows alpha transparency for png images under Internet Explorer.

Returns

{Boolean} true if the png alpha hack is necessary and possible, false otherwise.

+ +

modifyAlphaImageDiv

OpenLayers.Util.modifyAlphaImageDiv = function(div,
id,
px,
sz,
imgURL,
position,
border,
sizing,
opacity)
div{DOMElement} Div containing Alpha-adjusted Image
id{String}
px{OpenLayers.Pixel}
sz{OpenLayers.Size}
imgURL{String}
position{String}
border{String} sizing {String} ‘crop’, ‘scale’, or ‘image’.  Default is “scale”
opacity{Float} Fractional value (0.0 - 1.0)
+ +

createAlphaImageDiv

OpenLayers.Util.createAlphaImageDiv = function(id,
px,
sz,
imgURL,
position,
border,
sizing,
opacity,
delayDisplay)
id{String}
px{OpenLayers.Pixel}
sz{OpenLayers.Size}
imgURL{String}
position{String}
border{String}
sizing{String} ‘crop’, ‘scale’, or ‘image’.  Default is “scale”
opacity{Float} Fractional value (0.0 - 1.0)
delayDisplay{Boolean} If true waits until the image has been loaded.

Returns

{DOMElement} A DOM Div created with a DOM Image inside it.  If the hack is needed for transparency in IE, it is added.

+ +

upperCaseObject

OpenLayers.Util.upperCaseObject = function (object)

Creates a new hashtable and copies over all the keys from the passed-in object, but storing them under an uppercased version of the key at which they were stored.

Parameters

object{Object}

Returns

{Object} A new Object with all the same keys but uppercased

+ +

applyDefaults

OpenLayers.Util.applyDefaults = function (to,
from)

Takes an object and copies any properties that don’t exist from another properties, by analogy with OpenLayers.Util.extend() from Prototype.js.

Parameters

to{Object} The destination object.
from{Object} The source object.  Any properties of this object that are undefined in the to object will be set on the to object.

Returns

{Object} A reference to the to object.  Note that the to argument is modified in place and returned by this function.

+ +

getParameterString

OpenLayers.Util.getParameterString = function(params)

Parameters

params{Object}

Returns

{String} A concatenation of the properties of an object in http parameter notation.  (ex.  <i>”key1=value1&key2=value2&key3=value3”</i>) If a parameter is actually a list, that parameter will then be set to a comma-seperated list of values (foo,bar) instead of being URL escaped (foo%3Abar).

+ +

ImgPath

{String} Default is ‘’.

+ +

getImagesLocation

OpenLayers.Util.getImagesLocation = function()

Returns

{String} The fully formatted image location string

+ +

Try

OpenLayers.Util.Try = function()

Execute functions until one of them doesn’t throw an error.  Capitalized because “try” is a reserved word in JavaScript.  Taken directly from OpenLayers.Util.Try()

Parameters

[*]{Function} Any number of parameters may be passed to Try() It will attempt to execute each of them until one of them successfully executes.  If none executes successfully, returns null.

Returns

{*} The value returned by the first successfully executed function.

+ +

getNodes

OpenLayers.Util.getNodes=function(p,
tagName)

These could/should be made namespace aware?

Parameters

p{}
tagName{String}

Returns

{Array}

+ +

_getNodes

OpenLayers.Util._getNodes=function(nodes,
tagName)

Parameters

nodes{Array}
tagName{String}

Returns

{Array}

+ +

getTagText

OpenLayers.Util.getTagText = function (parent,
item,
index)

Parameters

parent{}
item{String}
index{Integer}

Returns

{String}

+ +

getXmlNodeValue

OpenLayers.Util.getXmlNodeValue = function(node)

Parameters

node{XMLNode}

Returns

{String} The text value of the given node, without breaking in firefox or IE

+ +

mouseLeft

OpenLayers.Util.mouseLeft = function (evt,
div)

Parameters

evt{Event}
div{HTMLDivElement}

Returns

{Boolean}

+ +

precision

{Number} The number of significant digits to retain to avoid floating point precision errors.

We use 14 as a “safe” default because, although IEEE 754 double floats (standard on most modern operating systems) support up to about 16 significant digits, 14 significant digits are sufficient to represent sub-millimeter accuracy in any coordinate system that anyone is likely to use with OpenLayers.

If DEFAULT_PRECISION is set to 0, the original non-truncating behavior of OpenLayers <2.8 is preserved.  Be aware that this will cause problems with certain projections, e.g. spherical Mercator.

+ +

toFloat

OpenLayers.Util.toFloat = function (number,
precision)

Convenience method to cast an object to a Number, rounded to the desired floating point precision.

Parameters

number{Number} The number to cast and round.
precision{Number} An integer suitable for use with Number.toPrecision().  Defaults to OpenLayers.Util.DEFAULT_PRECISION.  If set to 0, no rounding is performed.

Returns

{Number} The cast, rounded number.

+ +

rad

OpenLayers.Util.rad = function(x)

Parameters

x{Float}

Returns

{Float}

+ +

distVincenty

OpenLayers.Util.distVincenty=function(p1,
p2)

Given two objects representing points with geographic coordinates, this calculates the distance between those points on the surface of an ellipsoid.

Parameters

p1{OpenLayers.LonLat} (or any object with both .lat, .lon properties)
p2{OpenLayers.LonLat} (or any object with both .lat, .lon properties)

Returns

{Float} The distance (in km) between the two input points as measured on an ellipsoid.  Note that the input point objects must be in geographic coordinates (decimal degrees) and the return distance is in kilometers.

+ +

getParameters

OpenLayers.Util.getParameters = function(url)

Parse the parameters from a URL or from the current page itself into a JavaScript Object.  Note that parameter values with commas are separated out into an Array.

Parameters

url{String} Optional url used to extract the query string.  If null, query string is taken from page location.

Returns

{Object} An object of key/value pairs from the query string.

+ +

getArgs

OpenLayers.Util.getArgs = function(url)

Deprecated.  Will be removed in 3.0.  Please use instead <OpenLayers.Util.getParameters>

Parameters

url{String} Optional url used to extract the query string.  If null, query string is taken from page location.

Returns

{Object} An object of key/value pairs from the query string.

+ +

lastSeqID

{Integer} The ever-incrementing count variable.  Used for generating unique ids.

+ +

createUniqueID

OpenLayers.Util.createUniqueID = function(prefix)

Create a unique identifier for this session.  Each time this function is called, a counter is incremented.  The return will be the optional prefix (defaults to “id_”) appended with the counter value.

Parameters

prefix {String} Optionsal string to prefix unique id.  Default is “id_”.

Returns

{String} A unique id string, built on the passed in prefix.

+ +

Constants

+ +

INCHES_PER_UNIT

{Object} Constant inches per unit -- borrowed from MapServer mapscale.c derivation of nautical miles from http://en.wikipedia.org/wiki/Nautical_mile Includes the full set of units supported by CS-MAP (http://trac.osgeo.org/csmap/) and PROJ.4 (http://trac.osgeo.org/proj/) The hardcoded table is maintain in a CS-MAP source code module named CSdataU.c The hardcoded table of PROJ.4 units are in pj_units.c.

+ +

DOTS_PER_INCH

{Integer} 72 (A sensible default)

+ +

Functions

+ +

normalizeScale

OpenLayers.Util.normalizeScale = function (scale)

Parameters

scale{float}

Returns

{Float} A normalized scale value, in 1 / X format.  This means that if a value less than one ( already 1/x) is passed in, it just returns scale directly.  Otherwise, it returns 1 / scale

+ +

getResolutionFromScale

OpenLayers.Util.getResolutionFromScale = function (scale,
units)

Parameters

scale{Float}
units{String} Index into OpenLayers.INCHES_PER_UNIT hashtable.  Default is degrees

Returns

{Float} The corresponding resolution given passed-in scale and unit parameters.

+ +

getScaleFromResolution

OpenLayers.Util.getScaleFromResolution = function (resolution,
units)

Parameters

resolution{Float}
units{String} Index into OpenLayers.INCHES_PER_UNIT hashtable.  Default is degrees

Returns

{Float} The corresponding scale given passed-in resolution and unit parameters.

+ +

safeStopPropagation

OpenLayers.Util.safeStopPropagation = function(evt)

Deprecated.  This function has been deprecated.  Please use directly OpenLayers.Event.stop passing ‘true’ as the 2nd argument (preventDefault)

Safely stop the propagation of an event without preventing the default browser action from occurring.

Parameter

evt{Event}
+ +

pagePositon

Calculates the position of an element on the page.

Parameters

forElement{DOMElement}

Returns

{Array} two item array, L value then T value.

+ +

isEquivalentUrl

OpenLayers.Util.isEquivalentUrl = function(url1,
url2,
options)

Test two URLs for equivalence.

Setting ‘ignoreCase’ allows for case-independent comparison.

Comparison is based on

  • Protocol
  • Host (evaluated without the port)
  • Port (set ‘ignorePort80’ to ignore “80” values)
  • Hash ( set ‘ignoreHash’ to disable)
  • Pathname (for relative <-> absolute comparison)
  • Arguments (so they can be out of order)

Parameters

url1{String}
url2{String}
options{Object} Allows for customization of comparison:
’ignoreCase’Default is True
’ignorePort80’Default is True
’ignoreHash’Default is True

Returns

{Boolean} Whether or not the two URLs are equivalent

+ +

createUrlObject

OpenLayers.Util.createUrlObject = function(url,
options)

Parameters

url{String}
options{Object} A hash of options.  Can be one of: ignoreCase: lowercase url, ignorePort80: don’t include explicit port if port is 80, ignoreHash: Don’t include part of url after the hash (#).

Returns

{Object} An object with separate url, a, port, host, and args parsed out and ready for comparison

+ +

removeTail

OpenLayers.Util.removeTail = function(url)

Takes a url and removes everything after the ? and #

Parameters

url{String} The url to process

Returns

{String} The string with all queryString and Hash removed

+ +

getBrowserName

OpenLayers.Util.getBrowserName = function()

Returns

{String} A string which specifies which is the current browser in which we are running.

Currently-supported browser detection and codes

  • ’opera’ -- Opera
  • ’msie’ -- Internet Explorer
  • ’safari’ -- Safari
  • ’firefox’ -- FireFox
  • ’mozilla’ -- Mozilla

If we are unable to property identify the browser, we return an empty string.

+ +

getRenderedDimensions

OpenLayers.Util.getRenderedDimensions = function(contentHTML,
size,
options)

Renders the contentHTML offscreen to determine actual dimensions for popup sizing.  As we need layout to determine dimensions the content is rendered -9999px to the left and absolute to ensure the scrollbars do not flicker

Parameters

contentHTML size - {OpenLayers.Size} If either the ‘w’ or ‘h’ properties is specified, we fix that dimension of the div to be measured.  This is useful in the case where we have a limit in one dimension and must therefore meaure the flow in the other dimension. options - {Object} displayClass - {String} Optional parameter.  A CSS class name(s) string to provide the CSS context of the rendered content. containerElement - {DOMElement} Optional parameter.  Insert the HTML to this node instead of the body root when calculating dimensions.

Returns

{OpenLayers.Size}

+ +

getScrollbarWidth

OpenLayers.Util.getScrollbarWidth = function()

This function has been modified by the OpenLayers from the original version, written by Matthew Eernisse and released under the Apache 2 license here:

http://www.fleegix.org/articles/2006/05/30/getting-the-scrollbar-width-in-pixels

It has been modified simply to cache its value, since it is physically impossible that this code could ever run in more than one browser at once.

Returns

{Integer}

+ +
+ + + + + + + + + + +
OpenLayers.Util.getElement = function()
This is the old $() from prototype
OpenLayers.Util.extend = function(destination,
source)
Copy all properties of a source object to a destination object.
OpenLayers.Util.removeItem = function(array,
item)
Remove an object from an array.
OpenLayers.Util.clearArray = function(array)
Deprecated.
OpenLayers.Util.indexOf = function(array,
obj)
Seems to exist already in FF, but not in MOZ.
OpenLayers.Util.modifyDOMElement = function(element,
id,
px,
sz,
position,
border,
overflow,
opacity)
Modifies many properties of a DOM element all at once.
OpenLayers.Util.createDiv = function(id,
px,
sz,
imgURL,
position,
border,
overflow,
opacity)
Creates a new div and optionally set some standard attributes.
OpenLayers.Util.createImage = function(id,
px,
sz,
imgURL,
position,
border,
opacity,
delayDisplay)
Creates an img element with specific attribute values.
OpenLayers.Util.setOpacity = function(element,
opacity)
Deprecated.
OpenLayers.Util.onImageLoad = function()
Bound to image load events.
OpenLayers.Util.onImageLoadError = function()
OpenLayers.Util.alphaHack = function()
Checks whether it’s necessary (and possible) to use the png alpha hack which allows alpha transparency for png images under Internet Explorer.
OpenLayers.Util.modifyAlphaImageDiv = function(div,
id,
px,
sz,
imgURL,
position,
border,
sizing,
opacity)
OpenLayers.Util.createAlphaImageDiv = function(id,
px,
sz,
imgURL,
position,
border,
sizing,
opacity,
delayDisplay)
OpenLayers.Util.upperCaseObject = function (object)
Creates a new hashtable and copies over all the keys from the passed-in object, but storing them under an uppercased version of the key at which they were stored.
OpenLayers.Util.applyDefaults = function (to,
from)
Takes an object and copies any properties that don’t exist from another properties, by analogy with OpenLayers.Util.extend() from Prototype.js.
OpenLayers.Util.getParameterString = function(params)
OpenLayers.Util.getImagesLocation = function()
{String} The fully formatted image location string
OpenLayers.Util.Try = function()
Execute functions until one of them doesn’t throw an error.
OpenLayers.Util.getNodes=function(p,
tagName)
These could/should be made namespace aware?
OpenLayers.Util._getNodes=function(nodes,
tagName)
OpenLayers.Util.getTagText = function (parent,
item,
index)
OpenLayers.Util.getXmlNodeValue = function(node)
OpenLayers.Util.mouseLeft = function (evt,
div)
OpenLayers.Util.toFloat = function (number,
precision)
Convenience method to cast an object to a Number, rounded to the desired floating point precision.
OpenLayers.Util.rad = function(x)
OpenLayers.Util.distVincenty=function(p1,
p2)
Given two objects representing points with geographic coordinates, this calculates the distance between those points on the surface of an ellipsoid.
OpenLayers.Util.getParameters = function(url)
Parse the parameters from a URL or from the current page itself into a JavaScript Object.
OpenLayers.Util.getArgs = function(url)
Deprecated.
OpenLayers.Util.createUniqueID = function(prefix)
Create a unique identifier for this session.
OpenLayers.Util.normalizeScale = function (scale)
OpenLayers.Util.getResolutionFromScale = function (scale,
units)
OpenLayers.Util.getScaleFromResolution = function (resolution,
units)
OpenLayers.Util.safeStopPropagation = function(evt)
Deprecated.
OpenLayers.Util.isEquivalentUrl = function(url1,
url2,
options)
Test two URLs for equivalence.
OpenLayers.Util.createUrlObject = function(url,
options)
OpenLayers.Util.removeTail = function(url)
Takes a url and removes everything after the ?
OpenLayers.Util.getBrowserName = function()
{String} A string which specifies which is the current browser in which we are running.
OpenLayers.Util.getRenderedDimensions = function(contentHTML,
size,
options)
Renders the contentHTML offscreen to determine actual dimensions for popup sizing.
OpenLayers.Util.getScrollbarWidth = function()
This function has been modified by the OpenLayers from the original version, written by Matthew Eernisse and released under the Apache 2 license here:
This class represents a screen coordinate, in x and y coordinates
Instances of this class represent a width/height pair
This class represents a longitude and latitude pair
stop: function(event,
allowDefault)
Stops an event from propagating.
+ + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index.html b/openlayers/doc/devdocs/index.html new file mode 100644 index 0000000..acf03fb --- /dev/null +++ b/openlayers/doc/devdocs/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Classes.html b/openlayers/doc/devdocs/index/Classes.html new file mode 100644 index 0000000..487f4e6 --- /dev/null +++ b/openlayers/doc/devdocs/index/Classes.html @@ -0,0 +1,34 @@ + + +Class Index - OpenLayers + + + + + + + + + +
Class Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
O
 OpenLayers
 OpenLayers.Ajax
 OpenLayers.Ajax.Base
 OpenLayers.Ajax.Request
 OpenLayers.Ajax.Responders
 OpenLayers.Ajax.Response
 OpenLayers.Array
 OpenLayers.Bounds
 OpenLayers.Console
 OpenLayers.Control
 OpenLayers.Control.ArgParser
 OpenLayers.Control.Attribution
 OpenLayers.Control.Button
 OpenLayers.Control.DragFeature
 OpenLayers.Control.DragPan
 OpenLayers.Control.DrawFeature
 OpenLayers.Control.EditingToolbar
 OpenLayers.Control.GetFeature
 OpenLayers.Control.KeyboardDefaults
 OpenLayers.Control.LayerSwitcher
 OpenLayers.Control.Measure
 OpenLayers.Control.ModifyFeature
 OpenLayers.Control.MouseDefaults
 OpenLayers.Control.MousePosition
 OpenLayers.Control.MouseToolbar
 OpenLayers.Control.Navigation
 OpenLayers.Control.NavigationHistory
 OpenLayers.Control.NavToolbar
 OpenLayers.Control.OverviewMap
 OpenLayers.Control.Pan
 OpenLayers.Control.Panel
 OpenLayers.Control.PanPanel
 OpenLayers.Control.PanZoom
 OpenLayers.Control.PanZoomBar
 OpenLayers.Control.Permalink
 OpenLayers.Control.Scale
 OpenLayers.Control.ScaleLine
 OpenLayers.Control.SelectFeature
 OpenLayers.Control.Snapping
 OpenLayers.Control.Split
 OpenLayers.Control.WMSGetFeatureInfo
 OpenLayers.Control.ZoomBox
 OpenLayers.Control.ZoomIn
 OpenLayers.Control.ZoomOut
 OpenLayers.Control.ZoomPanel
 OpenLayers.Control.ZoomToMaxExtent
 OpenLayers.Easing
 OpenLayers.Easing.Expo
 OpenLayers.Easing.Linear
 OpenLayers.Easing.Quad
 OpenLayers.Element
 OpenLayers.ElementsIndexer
 OpenLayers.ElementsIndexer.IndexingMethods
 OpenLayers.Event
 OpenLayers.Events
 OpenLayers.Feature
 OpenLayers.Feature.Vector
 OpenLayers.Feature.WFS
 OpenLayers.Filter
 OpenLayers.Filter.Comparison
 OpenLayers.Filter.FeatureId
 OpenLayers.Filter.Logical
 OpenLayers.Filter.Spatial
 OpenLayers.Format
 OpenLayers.Format.ArcXML
 OpenLayers.Format.ArcXML.Features
 OpenLayers.Format.Filter
 OpenLayers.Format.Filter.v1
 OpenLayers.Format.Filter.v1_0_0
 OpenLayers.Format.Filter.v1_1_0
 OpenLayers.Format.GeoJSON
 OpenLayers.Format.GeoRSS
 OpenLayers.Format.GML
 OpenLayers.Format.GML.Base
 OpenLayers.Format.GML.v2
 OpenLayers.Format.GML.v3
 OpenLayers.Format.GPX
 OpenLayers.Format.JSON
 OpenLayers.Format.KML
 OpenLayers.Format.OSM
 OpenLayers.Format.SLD
 OpenLayers.Format.SLD.v1
 OpenLayers.Format.SLD.v1_0_0
 OpenLayers.Format.Text
 OpenLayers.Format.WFS
 OpenLayers.Format.WFSCapabilities
 OpenLayers.Format.WFSCapabilities.v1
 OpenLayers.Format.WFSCapabilities/v1_0_0
 OpenLayers.Format.WFSCapabilities/v1_1_0
 OpenLayers.Format.WFST.v1
 OpenLayers.Format.WFST.v1_0_0
 OpenLayers.Format.WFST.v1_1_0
 OpenLayers.Format.WKT
 OpenLayers.Format.WMC
 OpenLayers.Format.WMC.v1
 OpenLayers.Format.WMC.v1_0_0
 OpenLayers.Format.WMC.v1_1_0
 OpenLayers.Format.WMSCapabilities
 OpenLayers.Format.WMSCapabilities.v1_1
 OpenLayers.Format.WMSCapabilities/v1_1_0
 OpenLayers.Format.WMSCapabilities/v1_1_1
 OpenLayers.Format.WMSDescribeLayer
 OpenLayers.Format.WMSDescribeLayer.v1_1
 OpenLayers.Format.WMSGetFeatureInfo
 OpenLayers.Format.XML
 OpenLayers.Function
 OpenLayers.Geometry
 OpenLayers.Geometry.Collection
 OpenLayers.Geometry.Curve
 OpenLayers.Geometry.LinearRing
 OpenLayers.Geometry.LineString
 OpenLayers.Geometry.MultiLineString
 OpenLayers.Geometry.MultiPoint
 OpenLayers.Geometry.MultiPolygon
 OpenLayers.Geometry.Point
 OpenLayers.Geometry.Polygon
 OpenLayers.Geometry.Rectangle
 OpenLayers.Handler
 OpenLayers.Handler.Box
 OpenLayers.Handler.Click
 OpenLayers.Handler.Drag
 OpenLayers.Handler.Feature
 OpenLayers.Handler.Hover
 OpenLayers.handler.Keyboard
 OpenLayers.Handler.MouseWheel
 OpenLayers.Handler.Path
 OpenLayers.Handler.Point
 OpenLayers.Handler.Polygon
 OpenLayers.Handler.RegularPolygon
 OpenLayers.Icon
 OpenLayers.Lang
 OpenLayers.Lang[“ca”]
 OpenLayers.Lang[“cs-CZ”]
 OpenLayers.Lang[“da-DK”]
 OpenLayers.Lang[“de”]
 OpenLayers.Lang[“en”]
 OpenLayers.Lang[“en-CA”]
 OpenLayers.Lang[“es”]
 OpenLayers.Lang[“fr”]
 OpenLayers.Lang[“it”]
 OpenLayers.Lang[“nb”]
 OpenLayers.Lang[“nl”]
 OpenLayers.Lang[“pt-BR”]
 OpenLayers.Lang[“sv-SE”]
 OpenLayers.Lang[“zh-CN”]
 OpenLayers.Lang[“zh-TW”]
 OpenLayers.Layer
 OpenLayers.Layer.ArcGIS93Rest
 OpenLayers.Layer.ArcIMS
 OpenLayers.Layer.Boxes
 OpenLayers.Layer.EventPane
 OpenLayers.Layer.FixedZoomLevels
 OpenLayers.Layer.GeoRSS
 OpenLayers.Layer.GML
 OpenLayers.Layer.Google
 OpenLayers.Layer.Grid
 OpenLayers.Layer.HTTPRequest
 OpenLayers.Layer.Image
 OpenLayers.Layer.KaMap
 OpenLayers.Layer.KaMapCache
 OpenLayers.Layer.MapGuide
 OpenLayers.Layer.MapServer
 OpenLayers.Layer.MapServer.Untiled
 OpenLayers.Layer.Markers
 OpenLayers.Layer.MultiMap
 OpenLayers.Layer.OSM
 OpenLayers.Layer.PointTrack
 OpenLayers.Layer.SphericalMercator
 OpenLayers.Layer.Text
 OpenLayers.Layer.TileCache
 OpenLayers.Layer.TMS
 OpenLayers.Layer.Vector
 OpenLayers.Layer.Vector.RootContainer
 OpenLayers.Layer.VirtualEarth
 OpenLayers.Layer.WFS
 OpenLayers.Layer.WMS
 OpenLayers.Layer.WMS.Untiled
 OpenLayers.Layer.WorldWind
 OpenLayers.Layer.XYZ
 OpenLayers.Layer.Yahoo
 OpenLayers.LonLat
 OpenLayers.Map
 OpenLayers.Marker
 OpenLayers.Marker.Box
 OpenLayers.Number
 OpenLayers.Pixel
 OpenLayers.Popup
 OpenLayers.Popup.Anchored
 OpenLayers.Popup.AnchoredBubble
 OpenLayers.Popup.Framed
 OpenLayers.Popup.FramedCloud
 OpenLayers.Projection
 OpenLayers.Protocol
 OpenLayers.Protocol.HTTP
 OpenLayers.Protocol.Response
 OpenLayers.Protocol.SQL
 OpenLayers.Protocol.SQL.Gears
 OpenLayers.Protocol.WFS.v1
 OpenLayers.Protocol.WFS.v1_0_0
 OpenLayers.Protocol.WFS.v1_1_0
 OpenLayers.Renderer
 OpenLayers.Renderer.Canvas
 OpenLayers.Renderer.Elements
 OpenLayers.Renderer.SVG
 OpenLayers.Renderer.VML
 OpenLayers.Request
 OpenLayers.Request.XMLHttpRequest
 OpenLayers.Rule
 OpenLayers.Size
 OpenLayers.Strategy
 OpenLayers.Strategy.BBOX
 OpenLayers.Strategy.Cluster
 OpenLayers.Strategy.Fixed
 OpenLayers.Strategy.Paging
 OpenLayers.Strategy.Save
 OpenLayers.String
 OpenLayers.Style
 OpenLayers.StyleMap
 OpenLayers.Tile
 OpenLayers.Tile.Image
 OpenLayers.Tile.WFS
 OpenLayers.Tween
+ +
The OpenLayers object provides a namespace for all things OpenLayers
Deprecated.
{Object}
Contains convenience functions for array manipulation.
Instances of this class represent bounding boxes.
The OpenLayers.Console namespace is used for debugging and error logging.
Controls affect the display or behavior of the map.
The ArgParser control adds location bar querystring parsing functionality to an OpenLayers Map.
The attribution control adds attribution from layers to the map display.
The Button control is a very simple push-button, for use with OpenLayers.Control.Panel.
The DragFeature control moves a feature with a drag of the mouse.
The DragPan control pans the map with a drag of the mouse.
The DrawFeature control draws point, line or polygon features on a vector layer when active.
The EditingToolbar is a panel of 4 controls to draw polygons, lines, points, or to navigate the map by panning.
Gets vector features for locations underneath the mouse cursor.
The KeyboardDefaults control adds panning and zooming functions, controlled with the keyboard.
The LayerSwitcher control displays a table of contents for the map.
Allows for drawing of features for measurements.
Control to modify features.
This class is DEPRECATED in 2.4 and will be removed by 3.0.
The MousePosition control displays geographic coordinates of the mouse pointer, as it is moved about the map.
This class is DEPRECATED in 2.4 and will be removed by 3.0.
The navigation control handles map browsing with mouse events (dragging, double-clicking, and scrolling the wheel).
A navigation history control.
This Toolbar is an alternative to the Navigation control that displays the state of the control, and provides a UI for changing state to use the zoomBox via a Panel control.
The OverMap control creates a small overview map, useful to display the extent of a zoomed map and your main map and provide additional navigation options to the User.
The Pan control is a single button to pan the map in one direction.
The Panel control is a container for other controls.
The PanPanel is visible control for panning the map North, South, East or West in small steps.
The PanZoom is a visible control, composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomPanel.
The PanZoomBar is a visible control composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomBar.
The Permalink control is hyperlink that will return the user to the current map view.
The Scale control displays the current map scale as a ratio (e.g.
The ScaleLine displays a small line indicator representing the current map scale on the map.
The SelectFeature control selects vector features from a given layer on click or hover.
Acts as a snapping agent while editing vector features.
Acts as a split feature agent while editing vector features.
The WMSGetFeatureInfo control uses a WMS query to get information about a point on the map.
The ZoomBox control enables zooming directly to a given extent, by drawing a box on the map.
The ZoomIn control is a button to increase the zoom level of a map.
The ZoomOut control is a button to decrease the zoom level of a map.
The ZoomPanel control is a compact collecton of 3 zoom controls: a OpenLayers.Control.ZoomIn, a OpenLayers.Control.ZoomToMaxExtent, and a OpenLayers.Control.ZoomOut.
The ZoomToMaxExtent control is a button that zooms out to the maximum extent of the map.
Easing Equations by Robert Penner, http://www.robertpenner.com/easing/
This class takes care of figuring out which order elements should be placed in the DOM based on given indexing methods.
These are the compare methods for figuring out where a new node should be placed within the indexer.
Utility functions for event handling.
Features are combinations of geography and attributes.
Vector features use the OpenLayers.Geometry classes as geometry description.
WFS handling class, for use as a featureClass on the WFS layer for handling ‘point’ WFS types.
This class represents an OGC Filter.
This class represents a comparison filter.
This class represents a ogc:FeatureId Filter, as being used for rule-based SLD styling
This class represents ogc:And, ogc:Or and ogc:Not rules.
This class represents a spatial filter.
Base class for format reading/writing a variety of formats.
Read/Wite ArcXML.
Read/Wite ArcXML features.
Read/Wite ogc:Filter.
Superclass for Filter version 1 parsers.
Write ogc:Filter version 1.0.0.
Write ogc:Filter version 1.1.0.
Read and write GeoJSON.
Read/write GeoRSS parser.
Read/Wite GML.
Superclass for GML parsers.
Parses GML version 2.
Parses GML version 3.
Read/write GPX parser.
A parser to read/write JSON safely.
Read/Wite KML.
OSM parser.
Read/Wite SLD.
Superclass for SLD version 1 parsers.
Write SLD version 1.0.0.
Read Text format.
Read/Write WFS.
Read WFS Capabilities.
Abstract class not to be instantiated directly.
Read WMS Capabilities version 1.0.0.
Read WFS Capabilities version 1.1.0.
Superclass for WFST parsers.
A format for creating WFS v1.0.0 transactions.
A format for creating WFS v1.1.0 transactions.
Class for reading and writing Well-Known Text.
Read and write Web Map Context documents.
Superclass for WMC version 1 parsers.
Read and write WMC version 1.0.0.
Read and write WMC version 1.1.0.
Read WMS Capabilities.
Abstract class not to be instantiated directly.
Read WMS Capabilities version 1.1.0.
Read WMS Capabilities version 1.1.1.
Read SLD WMS DescribeLayer response DescribeLayer is meant to couple WMS to WFS and WCS
Read SLD WMS DescribeLayer response for WMS 1.1.X WMS 1.1.X is tightly coupled to SLD 1.0.0
Class to read GetFeatureInfo responses from Web Mapping Services
Read and write XML.
Contains convenience functions for function manipulation.
A Geometry is a description of a geographic object.
A Collection is exactly what it sounds like: A collection of different Geometries.
A Curve is a MultiPoint, whose points are assumed to be connected.
A Linear Ring is a special LineString which is closed.
A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
A MultiLineString is a geometry with multiple OpenLayers.Geometry.LineString components.
MultiPoint is a collection of Points.
MultiPolygon is a geometry with multiple OpenLayers.Geometry.Polygon components.
Point geometry class.
Polygon is a collection of Geometry.LinearRings.
This class is not supported, and probably isn’t what you’re looking for.
Base class to construct a higher-level handler for event sequences.
Handler for dragging a rectangle across the map.
A handler for mouse clicks.
The drag handler is used to deal with sequences of browser events related to dragging.
Handler to respond to mouse events related to a drawn feature.
The hover handler is to be used to emulate mouseovers on objects on the map that aren’t DOM elements.
A handler for keyboard events.
Handler for wheel up/down events.
Handler to draw a path on the map.
Handler to draw a point on the map.
Handler to draw a polygon on the map.
Handler to draw a regular polygon on the map.
The icon represents a graphical icon on the screen.
Internationalization namespace.
Dictionary for Catalan, UTF8 encoding.
Dictionary for Czech.
Dictionary for Danish.
Dictionary for German.
Dictionary for English.
Dictionary for English-CA.
Dictionary for Spanish, UTF8 encoding.
Dictionary for French.
Dictionary for Italian.
Dictionary for norwegian bokmål (Norway).
Dictionary for Dutch.
Dictionary for Brazilian Portuguese.
Dictionary for swedish (Sweden).
Dictionary for Simplified Chinese.
Dictionary for Traditional Chinese.
Instances of OpenLayers.Layer.ArcGIS93Rest are used to display data from ESRI ArcGIS Server 9.3 (and up?)
Instances of OpenLayers.Layer.ArcIMS are used to display data from ESRI ArcIMS Mapping Services.
Draw divs as ‘boxes’ on the layer.
Base class for 3rd party layers.
Some Layers will already have established zoom levels (like google or ve).
Add GeoRSS Point features to your map.
Create a vector layer by parsing a GML file.
Base class for layers that use a lattice of tiles.
Instances of OpenLayers.Layer.Image are used to display data from a web accessible image as a map layer.
This class is designed to talk directly to a web-accessible ka-Map cache generated by the precache2.php script.
Instances of OpenLayers.Layer.MapGuide are used to display data from a MapGuide OS instance.
Instances of OpenLayers.Layer.MapServer are used to display data from a MapServer CGI instance.
Deprecated.
Note that MultiMap does not fully support the sphericalMercator option.
A class to access OpenStreetMap tiles.
Vector layer to display ordered point features as a line, creating one LineString feature for each pair of two points.
A mixin for layers that wraps up the pieces neccesary to have a coordinate conversion for working with commercial APIs which use a spherical mercator projection.
This layer creates markers given data in a text file.
A read only TileCache layer.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
A special layer type to combine multiple vector layers inside a single renderer root container.
Instances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.
Deprecated.
The XYZ class is designed to make it easier for people who have tiles arranged by a standard XYZ grid.
This class represents a longitude and latitude pair
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
Contains convenience functions for manipulating numbers.
This class represents a screen coordinate, in x and y coordinates
A popup is a small div that can opened and closed on the map.
Class for coordinate transforms between coordinate systems.
Abstract vector layer protocol class.
A basic HTTP protocol for vector layers.
Protocols return Response objects to their users.
Abstract SQL protocol class.
This Protocol stores feature in the browser via the Gears Database module http://code.google.com/apis/gears/api_database.html.
Abstract class for for v1.0.0 and v1.1.0 protocol.
A WFS v1.0.0 protocol for vector layers.
A WFS v1.1.0 protocol for vector layers.
This is the base class for all renderers.
A renderer based on the 2D ‘canvas’ drawing element.element
This is another virtual class in that it should never be instantiated by itself as a Renderer.
Render vector features in browsers with VML capability.
The OpenLayers.Request namespace contains convenience methods for working with XMLHttpRequests.
Standard-compliant (W3C) cross-browser implementation of the XMLHttpRequest object.
This class represents an SLD Rule, as being used for rule-based SLD styling.
Instances of this class represent a width/height pair
Abstract vector layer strategy class.
A simple strategy that reads new features when the viewport invalidates some bounds.
Strategy for vector feature clustering.
A simple strategy that requests features once and never requests new data.
Strategy for vector feature paging
A strategy that commits newly created or modified features.
Contains convenience functions for string manipulation.
This class represents a UserStyle obtained from a SLD, containing styling rules.
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
Instances of OpenLayers.Tile.WFS are used to manage the image tiles used by various layers.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Classes2.html b/openlayers/doc/devdocs/index/Classes2.html new file mode 100644 index 0000000..4c9b1f3 --- /dev/null +++ b/openlayers/doc/devdocs/index/Classes2.html @@ -0,0 +1,34 @@ + + +Class Index - OpenLayers + + + + + + + + + +
Class Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
U
 Util
+ + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Constants.html b/openlayers/doc/devdocs/index/Constants.html new file mode 100644 index 0000000..805b68a --- /dev/null +++ b/openlayers/doc/devdocs/index/Constants.html @@ -0,0 +1,102 @@ + + +Constant Index - OpenLayers + + + + + + + + + +
Constant Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
B
 BACKGROUND_ID_SUFFIX, OpenLayers.Renderer.Elements
 BROWSER_EVENTS, OpenLayers.Events
C
 CORNER_SIZE, OpenLayers.Popup.AnchoredBubble
D
 dataFrom, OpenLayers.Layer.PointTrack.OpenLayers.Layer.PointTrack
 DEFAULT_CONFIG, OpenLayers.Request
 DEFAULT_FORMAT, OpenLayers.Layer.KaMapCache
 DEFAULT_OPTIONS, OpenLayers.Layer.ArcIMS
 DEFAULT_PARAMS
 DEFAULTS
 DOTS_PER_INCH, Util
 DRAG, OpenLayers.Control.ModifyFeature
E
 EVENT_TYPES
F
 FOLDER_PARAMS, OpenLayers.Layer.MapGuide
I
 IMAGE_EXTENSIONS, OpenLayers.Layer.KaMapCache
 INCHES_PER_UNIT, Util
 INTERVAL, OpenLayers.Tween
K
 KEY_BACKSPACE, OpenLayers.Event
 KEY_DELETE, OpenLayers.Event
 KEY_DOWN, OpenLayers.Event
 KEY_ESC, OpenLayers.Event
 KEY_EVENTS, OpenLayers.handler.Keyboard
 KEY_LEFT, OpenLayers.Event
 KEY_RETURN, OpenLayers.Event
 KEY_RIGHT, OpenLayers.Event
 KEY_TAB, OpenLayers.Event
 KEY_UP, OpenLayers.Event
L
 LABEL_ALIGN
 LABEL_SHIFT, OpenLayers.Renderer.VML.OpenLayers.Renderer.VML
 LABEL_VSHIFT, OpenLayers.Renderer.SVG.OpenLayers.Renderer.SVG
M
 MAX_PIXEL, OpenLayers.Renderer.SVG
 MAX_ZOOM_LEVEL
 MIN_ZOOM_LEVEL
 MOD_ALT, OpenLayers.Handler.OpenLayers.Handler
 MOD_CTRL, OpenLayers.Handler.OpenLayers.Handler
 MOD_NONE, OpenLayers.Handler.OpenLayers.Handler
 MOD_SHIFT, OpenLayers.Handler.OpenLayers.Handler
O
 OVERLAY_PARAMS, OpenLayers.Layer.MapGuide
R
 RESHAPE, OpenLayers.Control.ModifyFeature
 RESIZE, OpenLayers.Control.ModifyFeature
 RESOLUTIONS
 ROTATE, OpenLayers.Control.ModifyFeature
S
 SINGLE_TILE_PARAMS, OpenLayers.Layer.MapGuide
 style, OpenLayers.Feature.Vector.OpenLayers.Feature.Vector
 symbol, OpenLayers.Renderer.Elements.OpenLayers.Renderer
 SYMBOLIZER_PREFIXES, OpenLayers.Style.OpenLayers.Style
T
 TILE_HEIGHT, OpenLayers.Map
 TILE_PARAMS, OpenLayers.Layer.MapGuide
 TILE_WIDTH, OpenLayers.Map
U
 URL_HASH_FACTOR, OpenLayers.Layer.HTTPRequest
V
 VERSION
 VERSION_NUMBER, OpenLayers
X
 X, OpenLayers.Control.PanZoom
Y
 Y, OpenLayers.Control.PanZoom
Z
 Z_INDEX_BASE, OpenLayers.Map
+ +
{String}
{Array(String)} supported events
+ + + +
{Integer} 5.
+ + + +
{Object} with the following keys
{Object} Default configuration for all requests.
{Object} Simple hash map to convert format to extension.
{Object} Default layers properties.
{Object} Hashtable of default parameter key/value pairs
{Object} Default query string parameters.
{Object} parameters set by default.
{Object} Hashtable of default parameter key/value pairs
{Object} Hashtable of default parameter key/value pairs
Default target properties.
{Object} Default properties for the WFST format.
{Integer} 72 (A sensible default)
{Integer} Constant used to make the control work in drag mode
+ + + +
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types
+ + + +
{Object} Hashtable of parameter key/value pairs which describe the folder structure for tiles as configured in the mapguide serverconfig.ini section [TileServiceProperties]
+ + + +
{Object} Simple hash map to convert format to extension.
{Object} Constant inches per unit -- borrowed from MapServer mapscale.c derivation of nautical miles from http://en.wikipedia.org/wiki/Nautical_mile Includes the full set of units supported by CS-MAP (http://trac.osgeo.org/csmap/) and PROJ.4 (http://trac.osgeo.org/proj/) The hardcoded table is maintain in a CS-MAP source code module named CSdataU.c The hardcoded table of PROJ.4 units are in pj_units.c.
{int} Interval in milliseconds between 2 steps
+ + + +
{int}
{int}
{int}
{int}
keydown, keypress, keyup
{int}
{int}
{int}
{int}
{int}
+ + + +
{Object}
{Object}
{Object}
{Object}
+ + + +
{Integer} Firefox has a limitation where values larger or smaller than about 15000 in an SVG document lock the browser up.
{Integer} 19
{Integer} 17
{Integer} 17
{Integer} 17
{Integer} 0
{Integer} 1
{Integer} 1
{Integer} 0
If set as the keyMask, checkModifiers returns false if Alt is down.
If set as the keyMask, checkModifiers returns false if Ctrl is down.
If set as the keyMask, checkModifiers returns false if any key is down.
If set as the keyMask, checkModifiers returns false if Shift is down.
+ + + +
{Object} Hashtable of default parameter key/value pairs for untiled layer
+ + + +
{Integer} Constant used to make the control work in reshape mode
{Integer} Constant used to make the control work in resize mode
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Integer} Constant used to make the control work in rotate mode
+ + + +
{Object} Hashtable of default parameter key/value pairs for untiled layer
OpenLayers features can have a number of style attributes.
Coordinate arrays for well known (named) symbols.
{Array} prefixes of the sld symbolizers.
+ + + +
{Integer} 256 Default tile height (unless otherwise specified)
{Object} Hashtable of default parameter key/value pairs for tiled layer
{Integer} 256 Default tile width (unless otherwise specified)
+ + + +
{Float} Used to hash URL param strings for multi-WMS server selection.
+ + + +
{String} 1.0.0
{String} 1.1.0
{String} 1.0.0
{String} 1.0.0
{String} 1.1.0
+ + + +
{Integer}
+ + + +
{Integer}
+ + + +
{Object} Base z-indexes for different classes of thing
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Constructor.html b/openlayers/doc/devdocs/index/Constructor.html new file mode 100644 index 0000000..584af09 --- /dev/null +++ b/openlayers/doc/devdocs/index/Constructor.html @@ -0,0 +1,98 @@ + + +Constructor Index - OpenLayers + + + + + + + + + +
Constructor Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
A
 Anchored, OpenLayers.Popup.Anchored.OpenLayers.Popup
 AnchoredBubble, OpenLayers.Popup.AnchoredBubble.OpenLayers.Popup
 ArcGIS93Rest, OpenLayers.Layer.ArcGIS93Rest.OpenLayers.Layer
 ArcIMS, OpenLayers.Layer.ArcIMS.OpenLayers.Layer
 ArcXML, OpenLayers.Format.ArcXML.OpenLayers.Format
 ArgParser, OpenLayers.Control.ArgParser.OpenLayers.Control
 Attribution, OpenLayers.Control.Attribution.OpenLayers.Control
B
 Base
 BBOX, OpenLayers.Strategy.BBOX.OpenLayers.Strategy
 Bounds, OpenLayers.Bounds.OpenLayers
 Box
 Boxes, OpenLayers.Layer.Boxes.OpenLayers.Layer
C
 Canvas, OpenLayers.Renderer.Canvas.OpenLayers.Renderer
 Class, OpenLayers
 Click, OpenLayers.Handler.Click.OpenLayers.Handler
 Cluster, OpenLayers.Strategy.Cluster.OpenLayers.Strategy
 Collection, OpenLayers.Geometry.Collection.OpenLayers.Geometry
 Comparison, OpenLayers.Filter.Comparison.OpenLayers.Filter
 Control, OpenLayers.Control.OpenLayers
 Curve, OpenLayers.Geometry.Curve.OpenLayers.Geometry
D
 Drag, OpenLayers.Handler.Drag.OpenLayers.Handler
 DragFeature, OpenLayers.Control.DragFeature.OpenLayers.Control
 DrawFeature, OpenLayers.Control.DrawFeature.OpenLayers.Control
E
 EditingToolbar, OpenLayers.Control.EditingToolbar.OpenLayers.Control
 Elements, OpenLayers.Renderer.Elements.OpenLayers.Renderer
 EventPane, OpenLayers.Layer.EventPane.OpenLayers.Layer
 Events, OpenLayers.Events.OpenLayers
F
 Feature
 FeatureId, OpenLayers.Filter.FeatureId.OpenLayers.Filter
 Features, OpenLayers.Format.ArcXML.Features.OpenLayers.Format.ArcXML
 Filter
 Fixed, OpenLayers.Strategy.Fixed.OpenLayers.Strategy
 FixedZoomLevels, OpenLayers.Layer.FixedZoomLevels.OpenLayers.Layer
 Format, OpenLayers.Format.OpenLayers
 Framed, OpenLayers.Popup.Framed.OpenLayers.Popup
 FramedCloud, OpenLayers.Popup.FramedCloud.OpenLayers.Popup
G
 Gears, OpenLayers.Protocol.SQL.Gears.OpenLayers.Protocol.SQL
 GeoJSON, OpenLayers.Format.GeoJSON.OpenLayers.Format
 Geometry, OpenLayers.Geometry.OpenLayers
 GeoRSS
 GetFeature, OpenLayers.Control.GetFeature.OpenLayers.Control
 GML
 Google, OpenLayers.Layer.Google.OpenLayers.Layer
 GPX, OpenLayers.Format.GPX.OpenLayers.Format
 Grid, OpenLayers.Layer.Grid.OpenLayers.Layer
H
 Handler, OpenLayers.Handler.OpenLayers
 Hover, OpenLayers.Handler.Hover.OpenLayers.Handler
 HTTP, OpenLayers.Protocol.HTTP.OpenLayers.Protocol
 HTTPRequest, OpenLayers.Layer.HTTPRequest.OpenLayers.Layer
I
 Icon, OpenLayers.Icon.OpenLayers
 Image, OpenLayers.Layer.Image.OpenLayers.Layer
J
 JSON, OpenLayers.Format.JSON.OpenLayers.Format
K
 KaMap, OpenLayers.Layer.KaMap.OpenLayers.Layer
 KaMapCache, OpenLayers.Layer.KaMapCache.OpenLayers.Layer
 Keyboard, OpenLayers.handler.Keyboard.OpenLayers.Handler
 KeyboardDefaults, OpenLayers.Control.KeyboardDefaults.OpenLayers.Control
 KML, OpenLayers.Format.KML.OpenLayers.Format
L
 Layer, OpenLayers.Layer.OpenLayers
 LayerSwitcher, OpenLayers.Control.LayerSwitcher.OpenLayers.Control
 LinearRing, OpenLayers.Geometry.LinearRing.OpenLayers.Geometry
 LineString, OpenLayers.Geometry.LineString.OpenLayers.Geometry
 Logical, OpenLayers.Filter.Logical.OpenLayers.Filter
 LonLat, OpenLayers.LonLat.OpenLayers
M
 Map, OpenLayers.Map.OpenLayers
 MapGuide, OpenLayers.Layer.MapGuide.OpenLayers.Layer
 MapServer, OpenLayers.Layer.MapServer.OpenLayers.Layer
 Marker, OpenLayers.Marker.OpenLayers
 Markers, OpenLayers.Layer.Markers.OpenLayers.Layer
 Measure, OpenLayers.Control.Measure.OpenLayers.Control
 ModifyFeature, OpenLayers.Control.ModifyFeature.OpenLayers.Control
 MouseDefaults, OpenLayers.Control.MouseDefaults.OpenLayers.Control
 MousePosition, OpenLayers.Control.MousePosition.OpenLayers.Control
 MouseToolbar, OpenLayers.Control.MouseToolbar.OpenLayers.Control
 MouseWheel, OpenLayers.Handler.MouseWheel.OpenLayers.Handler
 MultiLineString, OpenLayers.Geometry.MultiLineString.OpenLayers.Geometry
 MultiMap, OpenLayers.Layer.MultiMap.OpenLayers.Layer
 MultiPoint, OpenLayers.Geometry.MultiPoint.OpenLayers.Geometry
 MultiPolygon, OpenLayers.Geometry.MultiPolygon.OpenLayers.Geometry
N
 Navigation, OpenLayers.Control.Navigation.OpenLayers.Control
 NavigationHistory, OpenLayers.Control.NavigationHistory.OpenLayers.Control
 NavToolbar, OpenLayers.Control.NavToolbar.OpenLayers.Control
O
 OSM
 OverviewMap, OpenLayers.Control.OverviewMap.OpenLayers.Control
P
 Paging, OpenLayers.Strategy.Paging.OpenLayers.Strategy
 Pan, OpenLayers.Control.Pan.OpenLayers.Control
 Panel, OpenLayers.Control.Panel.OpenLayers.Control
 PanPanel, OpenLayers.Control.PanPanel.OpenLayers.Control
 PanZoom, OpenLayers.Control.PanZoom.OpenLayers.Control
 PanZoomBar, OpenLayers.Control.PanZoomBar.OpenLayers.Control
 Path, OpenLayers.Handler.Path.OpenLayers.Handler
 Permalink, OpenLayers.Control.Permalink.OpenLayers.Control
 Pixel, OpenLayers.Pixel.OpenLayers
 Point
 PointTrack, OpenLayers.Layer.PointTrack.OpenLayers
 Polygon
 Popup, OpenLayers.Popup.OpenLayers
 Projection, OpenLayers.Projection.OpenLayers
 Protocol, OpenLayers.Protocol.OpenLayers
R
 Rectangle, OpenLayers.Geometry.Rectangle.OpenLayers.Geometry
 RegularPolygon, OpenLayers.Handler.RegularPolygon.OpenLayers.Handler
 Renderer, OpenLayers.Renderer.OpenLayers
 Request, OpenLayers.Ajax.Request.OpenLayers.Ajax
 Response
 RootContainer, OpenLayers.Layer.Vector.RootContainer.OpenLayers.Layer.Vector
 Rule, OpenLayers.Rule.OpenLayers
+ +
Create a new ArcGIS93Rest layer object.
Create a new ArcIMS layer object.
Create a new parser/writer for ArcXML.
+ + + +
Instances of this class are not created directly.
Create a new BBOX strategy.
Construct a new bounds object.
+ + + +
Base class used to construct all other classes.
Create a new click handler.
Create a new clustering strategy.
Creates a Geometry Collection -- a list of geoms.
Creates a comparison rule.
Create an OpenLayers Control.
+ + + +
Returns OpenLayers.Handler.Drag
Create a new control to drag features.
+ + + +
Create an editing toolbar for a given layer.
Create a new event pane layer
Construct an OpenLayers.Events object.
+ + + +
Constructor for features.
Creates an ogc:FeatureId rule.
Create a new parser/writer for ArcXML Features.
This is an abstract class.
Create a new parser for Filter.
Create a new Fixed strategy.
Create a new fixed zoom levels layer.
Instances of this class are not useful.
+ + + +
Create a new parser for GeoJSON.
Creates a geometry object.
Create a new parser for GeoRSS.
Create a GeoRSS Layer.
Create a new control for fetching remote features.
Create a new parser for GML.
Load and parse a single file on the web, according to the format provided via the ‘format’ option, defaulting to GML.
Create a new parser for GPX.
Create a new grid layer
+ + + +
Construct a handler.
Construct a hover handler.
A class for giving layers generic HTTP protocol.
+ + + +
Creates an icon, which is an image tag in a div.
Create a new image layer
+ + + +
Create a new parser for JSON.
+ + + +
Returns a new keyboard handler.
Create a new parser for KML.
+ + + +
Linear rings are constructed with an array of points.
Create a new LineString geometry
Creates a logical filter (And, Or, Not).
Create a new map location.
+ + + +
Constructor for a new OpenLayers.Map instance.
Create a new Mapguide layer, either tiled or untiled.
Create a new MapServer layer object
Create a Markers layer.
Create a new modify feature control.
Constructor for a MultiLineString Geometry.
Create a new MultiPoint Geometry
Create a new MultiPolygon geometry
+ + + +
Create a new navigation control
Add our two mousedefaults controls.
+ + + +
Create a new parser for OSM.
Create a new overview map
+ + + +
Create a new paging strategy.
Control which handles the panning (in any of the cardinal directions) of the map by a set px distance.
Create a new control panel.
Add the four directional pan buttons.
Create a new path hander
Create a new OpenLayers.Pixel instance
Construct a point geometry.
Create a new point handler.
Constructor for a new OpenLayers.PointTrack instance.
Constructor for a Polygon geometry.
Create a Polygon Handler.
Create a popup.
This class offers several methods for interacting with a wrapped pro4js projection object.
Abstract class for vector protocols.
+ + + +
Create a new regular polygon handler.
Create a new root container for multiple vector layer.
Creates a Rule.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Constructor2.html b/openlayers/doc/devdocs/index/Constructor2.html new file mode 100644 index 0000000..45a1268 --- /dev/null +++ b/openlayers/doc/devdocs/index/Constructor2.html @@ -0,0 +1,62 @@ + + +Constructor Index - OpenLayers + + + + + + + + + +
Constructor Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
S
 Save, OpenLayers.Strategy.Save.OpenLayers.Strategy
 Scale, OpenLayers.Control.Scale.OpenLayers.Control
 ScaleLine, OpenLayers.Control.ScaleLine.OpenLayers.Control
 SelectFeature, OpenLayers.Control.SelectFeature.OpenLayers.Control
 Size, OpenLayers.Size.OpenLayers
 SLD, OpenLayers.Format.SLD.OpenLayers.Format
 Snapping, OpenLayers.Control.Snapping.OpenLayers.Control
 Spatial, OpenLayers.Filter.Spatial.OpenLayers.Filter
 Split, OpenLayers.Control.Split.OpenLayers.Control
 SQL, OpenLayers.Protocol.SQL.OpenLayers.Protocol
 Strategy, OpenLayers.Strategy.OpenLayers
 Style, OpenLayers.Style.OpenLayers
 StyleMap, OpenLayers.StyleMap.OpenLayers
 SVG, OpenLayers.Renderer.SVG.OpenLayers.Renderer
T
 Text
 TileCache, OpenLayers.Layer.TileCache.OpenLayers.Layer
 TMS, OpenLayers.Layer.TMS.OpenLayers.Layer
 Tween, OpenLayers.Tween.OpenLayers
U
 Untiled
V
 v1
 v1_0_0
 v1_1
 v1_1_0
 v1_1_1, OpenLayers.Format.WMSCapabilities/v1_1_1.OpenLayers.Format.WMSCapabilities
 v2, OpenLayers.Format.GML.v2.OpenLayers.Format.GML
 v3, OpenLayers.Format.GML.v3.OpenLayers.Format.GML
 Vector
 VirtualEarth, OpenLayers.Layer.VirtualEarth.OpenLayers.Layer
 VML, OpenLayers.Renderer.VML.OpenLayers.Renderer
W
 WFS
 WFSCapabilities, OpenLayers.Format.WFSCapabilities.OpenLayers.Format
 WFSDescribeFeatureType, OpenLayers.Format
 WKT, OpenLayers.Format.WKT.OpenLayers.Format
 WMC, OpenLayers.Format.WMC.OpenLayers.Format
 WMS, OpenLayers.Layer.WMS.OpenLayers.Layer
 WMSCapabilities, OpenLayers.Format.WMSCapabilities.OpenLayers.Format
 WMSDescribeLayer
 WMSGetFeatureInfo, OpenLayers.Format.WMSGetFeatureInfo.OpenLayers.Format
 WMSGetFeatureInfo>, OpenLayers.Control.WMSGetFeatureInfo.<OpenLayers.Control
 WorldWind, OpenLayers.Layer.WorldWind.OpenLayers.Layer
X
 XML, OpenLayers.Format.XML.OpenLayers.Format
Y
 Yahoo, OpenLayers.Layer.Yahoo.OpenLayers.Layer
Z
 ZoomPanel, OpenLayers.Control.ZoomPanel.OpenLayers.Control
+ +
Create a new Save strategy.
Create a new scale line control.
Create a new control for selecting features.
Create an instance of OpenLayers.Size
Create a new parser for SLD.
Creates a new snapping control.
Creates a spatial filter.
Creates a new split control.
Abstract class for vector strategies.
Creates a UserStyle.
+ + + +
Create a new parser for TSV Text.
Create a text layer.
Create a new read only TileCache layer.
Creates a Tween.
+ + + + + + + +
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Create a new parser for WFS capabilities version 1.0.0.
A class for parsing and generating WFS v1.0.0 transactions.
Instances of this class are not created directly.
A class for giving layers WFS v1.0.0 protocol.
Create an instance of one of the subclasses.
Create an instance of one of the subclasses.
Instances of this class are not created directly.
Create a new parser for WFS capabilities version 1.1.0.
A class for parsing and generating WFS v1.1.0 transactions.
Instances of this class are not created directly.
Create a new parser for WMS capabilities version 1.1.0.
A class for giving layers WFS v1.1.0 protocol.
Create a new parser for WMS capabilities version 1.1.1.
Create a parser for GML v2.
Create a parser for GML v3.
Create a vector feature.
Create a new vector layer
Create a new VML renderer.
+ + + +
Create a WFS feature.
Create a WFS-T formatter.
A class for giving layers WFS protocol.
Create a new parser for WFS capabilities.
Create a new parser for WFS DescribeFeatureType responses.
Create a new parser for WKT
Create a new parser for WMC docs.
Create a new WMS layer object
Create a new parser for WMS capabilities.
Create a new parser for WMS DescribeLayer responses.
Create a new parser for WMS DescribeLayer responses.
Create a new parser for WMS GetFeatureInfo responses
+ + + +
Construct an XML parser.
+ + + + + + + +
Add the three zooming controls.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Files.html b/openlayers/doc/devdocs/index/Files.html new file mode 100644 index 0000000..1a9ce71 --- /dev/null +++ b/openlayers/doc/devdocs/index/Files.html @@ -0,0 +1,46 @@ + + +File Index - OpenLayers + + + + + + + + + +
File Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
A
 Ajax.js
C
 Class.js
O
 OpenLayers Base Types
W
 WFS.js
 WFSDescribeFeatureType.js
 WFST.js
+ + + + + + + + + +
OpenLayers custom string, number and function functions are described here.
+ + + + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions.html b/openlayers/doc/devdocs/index/Functions.html new file mode 100644 index 0000000..442959c --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions.html @@ -0,0 +1,38 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
$#!
 _addButton
 _addZoomBar, OpenLayers.Control.PanZoomBar
 _getNodes, Util
 _getScriptLocation, OpenLayers
 _removeButton, OpenLayers.Control.PanZoom
 _removeElementObservers, OpenLayers.Event
 _removeZoomBar, OpenLayers.Control.PanZoomBar
A
 abort
 activate
 activateControl, OpenLayers.Control.Panel
 add
 addClass, OpenLayers.Element
 addCloseBox, OpenLayers.Popup
 addComponent
 addComponents, OpenLayers.Geometry.Collection
 addContainerPxFunction, OpenLayers.Layer.Google
 addControl, OpenLayers.Map
 addControls, OpenLayers.Control.Panel
 addControlToMap, OpenLayers.Map
 addCoordSys, OpenLayers.Format.ArcXML
 addEventType, OpenLayers.Events
 addFeatures, OpenLayers.Layer.Vector
 addImageSize, OpenLayers.Format.ArcXML
 addLayer, OpenLayers.Map
 addLayers
 addMarker, OpenLayers.Layer.Markers
 addNodes, OpenLayers.Layer.PointTrack
 addOptions, OpenLayers.Layer
 addPoint
 addPopup, OpenLayers.Map
 addPropertyStyles, OpenLayers.Style
 addResults, OpenLayers.Tile.WFS
 addRules, OpenLayers.Style
 addTarget, OpenLayers.Control.Snapping
 addTargetLayer, OpenLayers.Control.Snapping
 addTile
 addTileMonitoringHooks
 addToCluster, OpenLayers.Strategy.Cluster
 addTransform, OpenLayers.Projection
 addUniqueValueRules, OpenLayers.StyleMap
 adjustBounds, OpenLayers.Layer
 afterAdd
 afterFeatureModified, OpenLayers.Control.Split
 alphaHack, Util
 applyDefaults, Util
 applySymbolizer, OpenLayers.Style
 array, OpenLayers.Format.JSON.serialize
 assert, OpenLayers.Console
 assignRenderer, OpenLayers.Layer.Vector
 atPoint
 attachToElement, OpenLayers.Events
+ +
_addButton:function(id,
img,
activeImg,
xy,
sz,
title)
_addButton:function(id,
img,
xy,
sz)
_addZoomBar:function(centered)
OpenLayers.Util._getNodes=function(nodes,
tagName)
_getScriptLocation: function ()
Return the path to this script.
_removeButton: function(btn)
_removeElementObservers: function(elementObservers)
_removeZoomBar: function()
+ + + +
abort: function(response)
Abort an ongoing request.
abort: function(response)
Abort an ongoing request, the response object passed to this method must come from this HTTP protocol (as a result of a create, read, update, delete or commit operation).
abort: function(response)
Abort an ongoing request, the response object passed to this method must come from this protocol (as a result of a read, or commit operation).
activate: function ()
Explicitly activates a control and it’s associated handler if one has been set.
activate: function()
Activate the control and the feature handler.
activate: function ()
Activates the control.
activate: function()
Activate the control.
activate: function()
activate: function()
Activate the control.
activate: function()
activate: function ()
Activates the control.
activate: function()
Activate the control.
activate: function()
Activate the control.
activate: function ()
Activates the control.
activate: function()
Turn on the handler.
activate: function ()
activate: function()
Activate the handler.
activate: function()
Turn on the handler.
activate: function()
activate: function (evt)
activate: function()
turn on the handler
activate: function()
Turn on the handler.
activate: function()
Activate the strategy.
activate: function()
Set up strategy with regard to reading new batches of remote data.
activate: function()
Activate the strategy.
activate: function()
Activate the strategy: load data or add listener to load when visible
activate: function()
Activate the strategy.
activate: function()
Activate the strategy.
activateControl: function (control)
add:function(x,
y)
add:function(lon,
lat)
add:function(x,
y)
addClass: function(element,
name)
Add a CSS class name to an element.
addCloseBox: function(callback)
addComponent: function(component,
index)
Add a new component (geometry) to the collection.
addComponent: function(point,
index)
Adds a point to geometry components.
addComponents: function(components)
Add components to this geometry.
addContainerPxFunction: function()
Hack-on function because GMAPS does not give it to us
addControl: function (control,
px)
addControls: function(controls)
To build a toolbar, you add a set of controls to it.
addControlToMap: function (control,
px)
addCoordSys: function(featOrFilt,
fsys)
Add the coordinate system information to an object.
addEventType: function(eventName)
Add a new event type to this events object.
addFeatures: function(features,
options)
Add Features to the layer.
addImageSize: function(imsize,
olsize)
Set the size of the requested image.
addLayer: function (layer)
addLayers: function(ll,
lyrs)
Add a collection of layers to another collection of layers.
addLayers: function (layers)
addMarker: function(marker)
addNodes: function(pointFeatures)
Adds point features that will be used to create lines from, using point pairs.
addOptions: function (newOptions)
addPoint: function(point,
index)
Wrapper for OpenLayers.Geometry.Collection.addComponent
addPoint: function(pixel)
Add point to geometry.
addPopup: function(popup,
exclusive)
addPropertyStyles: function(propertyStyles,
symbolizer)
addResults: function(results)
Construct new feature via layer featureClass constructor, and add to this.features.
addRules: function(rules)
Adds rules to this style.
addTarget: function(target)
Add a configured target layer.
addTargetLayer: function(layer)
Add a target layer with the default target config.
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
addTile:function(bounds,
position)
Gives subclasses of Grid the opportunity to create an OpenLayer.Tile of their choosing.
addTile:function(bounds,
position)
addTile:function(bounds,
position)
Creates a tile, initializes it, and adds it to the layer div.
addTile:function(bounds,
position)
Creates a tile, initializes it, and adds it to the layer div.
addTile:function(bounds,
position)
Create a tile, initialize it, and add it to the layer div.
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
addTile:function(bounds,
position)
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
addTileMonitoringHooks: function(tile)
This function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tiles.
addTileMonitoringHooks: function(tile)
This function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tiles.
addTileMonitoringHooks: function(tile)
This function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tile (making sure to check that the tile is always the layer’s current tile before taking any action).
addToCluster: function(cluster,
feature)
Add a feature to a cluster.
OpenLayers.Projection.addTransform = function(from,
to,
method)
Set a custom transform method between two projections.
addUniqueValueRules: function(renderIntent,
property,
symbolizers,
context)
Convenience method to create comparison rules for unique values of a property.
adjustBounds: function (bounds)
This function will take a bounds, and if wrapDateLine option is set on the layer, it will return a bounds which is wrapped around the world.
afterAdd: function()
Called at the end of the map.addLayer sequence.
afterAdd: function()
Called at the end of the map.addLayer sequence.
afterFeatureModified: function(event)
Registered as a listener for the afterfeaturemodified event on the editable layer.
OpenLayers.Util.alphaHack = function()
Checks whether it’s necessary (and possible) to use the png alpha hack which allows alpha transparency for png images under Internet Explorer.
OpenLayers.Util.applyDefaults = function (to,
from)
Takes an object and copies any properties that don’t exist from another properties, by analogy with OpenLayers.Util.extend() from Prototype.js.
applySymbolizer: function(rule,
style,
feature)
Transform an array into a JSON string.
assert: function()
Tests that an expression is true.
assignRenderer: function()
Iterates through the available renderer implementations and selects and assigns the first one whose “supported()” function returns true.
atPoint: function(lonlat,
toleranceLon,
toleranceLat)
Determins whether the feature intersects with the specified location.
atPoint: function(lonlat,
toleranceLon,
toleranceLat)
attachToElement: function (element)
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions10.html b/openlayers/doc/devdocs/index/Functions10.html new file mode 100644 index 0000000..6c73dc1 --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions10.html @@ -0,0 +1,38 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
P
 page, OpenLayers.Strategy.Paging
 pageCount, OpenLayers.Strategy.Paging
 pageLength, OpenLayers.Strategy.Paging
 pageNext, OpenLayers.Strategy.Paging
 pageNum, OpenLayers.Strategy.Paging
 pagePositon, Util
 pagePrevious, OpenLayers.Strategy.Paging
 pan, OpenLayers.Map
 panIntoView, OpenLayers.Popup
 panMap, OpenLayers.Control.DragPan
 panMapDone, OpenLayers.Control.DragPan
 panTo, OpenLayers.Map
 parseAttributes
 parseData
 parseEnvelope, OpenLayers.Format.ArcXML
 parseExtendedData, OpenLayers.Format.KML
 parseFeature
 parseFeatures
 parseGeometry
 parseLinks, OpenLayers.Format.KML
 parsePointGeometry, OpenLayers.Format.ArcXML
 parseProperty, OpenLayers.Format.KML
 parseResponse, OpenLayers.Format.ArcXML
 parseStyle, OpenLayers.Format.KML
 parseStyleMaps, OpenLayers.Format.KML
 parseStyles, OpenLayers.Format.KML
 parseXMLString
 passesTolerance
 passEventToSlider, OpenLayers.Control.PanZoomBar
 pixelToBounds, OpenLayers.Control.GetFeature
 play, OpenLayers.Tween
 point
 polygon
 positionImage, OpenLayers.Tile.Image
 POST, OpenLayers.Request
 postDraw
 preFeatureInsert, OpenLayers.Layer.Vector
 previousTrigger, OpenLayers.Control.NavigationHistory
 processXMLNode, OpenLayers.Feature.WFS
 profile, OpenLayers.Console
 profileEnd, OpenLayers.Console
 projectForward, OpenLayers.Layer.SphericalMercator
 projectInverse, OpenLayers.Layer.SphericalMercator
 PUT, OpenLayers.Request
R
 rad, Util
 raiseLayer, OpenLayers.Map
 read
 read_cap_Abstract
 read_cap_Capability, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_DCPType, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_FeatureType, OpenLayers.Format.WFSCapabilities.v1
 read_cap_FeatureTypeList, OpenLayers.Format.WFSCapabilities.v1
 read_cap_Format, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_GetMap, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_LatLonBoundingBox, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_Layer, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_LegendURL, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_Name
 read_cap_OnlineResource, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_Request, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_ScaleHint, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_Service, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_Style, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_Title
 read_FeatureInfoResponse, OpenLayers.Format.WMSGetFeatureInfo
 read_msGMLOutput, OpenLayers.Format.WMSGetFeatureInfo
 read_ol_displayInLayerSwitcher, OpenLayers.Format.WMC.v1
 read_ol_isBaseLayer, OpenLayers.Format.WMC.v1
 read_ol_maxExtent, OpenLayers.Format.WMC.v1
 read_ol_numZoomLevels, OpenLayers.Format.WMC.v1
 read_ol_opacity, OpenLayers.Format.WMC.v1
 read_ol_singleTile, OpenLayers.Format.WMC.v1
 read_ol_transparent, OpenLayers.Format.WMC.v1
 read_ol_units, OpenLayers.Format.WMC.v1
 read_sld_MaxScaleDenominator, OpenLayers.Format.WMC.v1_1_0
 read_sld_MinScaleDenominator, OpenLayers.Format.WMC.v1_1_0
 read_sld_StyledLayerDescriptor, OpenLayers.Format.WMC.v1
 read_wmc_Abstract, OpenLayers.Format.WMC.v1
 read_wmc_BoundingBox, OpenLayers.Format.WMC.v1
 read_wmc_Extension, OpenLayers.Format.WMC.v1
 read_wmc_Format, OpenLayers.Format.WMC.v1
 read_wmc_FormatList, OpenLayers.Format.WMC.v1
 read_wmc_General, OpenLayers.Format.WMC.v1
 read_wmc_LatLonBoundingBox, OpenLayers.Format.WMC.v1
 read_wmc_Layer, OpenLayers.Format.WMC.v1
 read_wmc_LayerList, OpenLayers.Format.WMC.v1
 read_wmc_LegendURL, OpenLayers.Format.WMC.v1
 read_wmc_MetadataURL, OpenLayers.Format.WMC.v1
 read_wmc_Name, OpenLayers.Format.WMC.v1
 read_wmc_OnlineResource, OpenLayers.Format.WMC.v1
 read_wmc_Server, OpenLayers.Format.WMC.v1
 read_wmc_SLD, OpenLayers.Format.WMC.v1
 read_wmc_Style, OpenLayers.Format.WMC.v1
 read_wmc_StyleList, OpenLayers.Format.WMC.v1
 read_wmc_Title, OpenLayers.Format.WMC.v1
 readChildNodes, OpenLayers.Format.XML
 readNode, OpenLayers.Format.XML
 readOgcExpression, OpenLayers.Format.Filter.v1
 readRestriction
 readSpatial, OpenLayers.Format.Filter.v1
 rectDrag, OpenLayers.Control.OverviewMap
 redraw
 redrawBackgroundNode, OpenLayers.Renderer.Elements
 redrawNode, OpenLayers.Renderer.Elements
 refresh
 regex2value, OpenLayers.Filter.Comparison
 register
 registerEvents, OpenLayers.Popup
 registerImageListeners, OpenLayers.Popup
 registerPriority, OpenLayers.Events
 registerWheelEvents, OpenLayers.Control.MouseDefaults
 remove
 removeBox, OpenLayers.Handler.Box
 removeButtons, OpenLayers.Control.PanZoom
 removeByGeometry, OpenLayers.Control.Split
 removeClass, OpenLayers.Element
 removeComponent
 removeComponents, OpenLayers.Geometry.Collection
 removeControl, OpenLayers.Map
 removeExcessTiles, OpenLayers.Layer.Grid
 removeFeatures, OpenLayers.Layer.Vector
 removeItem, Util
 removeLayer, OpenLayers.Map
 removeMap
 removeMarker
 removePoint
 removePopup, OpenLayers.Map
 removeTail, Util
 removeTarget, OpenLayers.Control.Snapping
 removeTargetLayer, OpenLayers.Control.Snapping
 removeText
 removeTileMonitoringHooks
 removeTimeout, OpenLayers.Handler.Drag
 removeZoomBox, OpenLayers.Control.MouseDefaults
 render, OpenLayers.Map
 renderTile, OpenLayers.Tile.Image
 request
 requestFailure, OpenLayers.Layer.GML
 requestSuccess
 resetBackBuffer, OpenLayers.Tile.Image
 resetLayersZIndex, OpenLayers.Map
 resetRoots, OpenLayers.Layer.Vector.RootContainer
 resetVertices, OpenLayers.Control.ModifyFeature
 resize
 respondToReadyState, OpenLayers.Ajax.Request
 restore, OpenLayers.Control.NavigationHistory
 rightclick, OpenLayers.Handler.Click
 rotate
 runChildNodes
+ +
page: function(start,
event)
Display the page starting at the given index from the cache.
pageCount: function()
Get the total count of pages given the current cache of features.
pageLength: function(newLength)
Gets or sets page length.
pageNext: function(event)
Display the next page of features.
pageNum: function()
Get the zero based page number.
Calculates the position of an element on the page.
pagePrevious: function()
Display the previous page of features.
pan: function(dx,
dy,
options)
Allows user to pan by a value of screen pixels
panIntoView: function()
Pans the map such that the popup is totaly viewable (if necessary)
panMap: function(xy)
panMapDone: function(xy)
Finish the panning operation.
panTo: function(lonlat)
Allows user to pan to a new lonlat If the new lonlat is in the current extent the map will slide smoothly
parseAttributes: function(node,
type)
parseAttributes: function(node)
parseAttributes: function(node)
parseAttributes: function(node)
parseAttributes: function(node)
parseData: function(data,
options)
Read data from a string, and return a list of features.
parseData: function(ajaxRequest)
Parse the data returned from the Events call.
parseData: function(ajaxRequest)
parseEnvelope: function(env,
arr)
Parse an array of coordinates into an ArcXML envelope structure.
parseExtendedData: function(node)
Parse ExtendedData from KML.
parseFeature: function(obj)
Convert a feature object from GeoJSON into an OpenLayers.Feature.Vector.
parseFeature: function(node)
This function is the core of the GML parsing code in OpenLayers.
parseFeature: function(node)
This function is the core of the KML parsing code in OpenLayers.
parseFeatures: function(nodes,
options)
Loop through all Placemark nodes and parse them.
parseFeatures: function(request)
Read HTTP response body and return features.
parseFeatures: function(request)
Read HTTP response body and return features
parseGeometry: function(obj)
Convert a geometry object from GeoJSON into an OpenLayers.Geometry.
parseGeometry: function(node)
Parse the geometry out of the node using Format.GML
parseLinks: function(nodes,
options)
Finds URLs of linked KML documents and fetches them
parsePointGeometry: function(node)
parseProperty: function(xmlNode,
namespace,
tagName)
Convenience method to find a node and return its value
parseResponse: function(data)
Take an ArcXML response, and parse in into this object’s internal properties.
parseStyle: function(node)
Parses the children of a Style node and builds the style hash accordingly
parseStyleMaps: function(nodes,
options)
Looks for Style nodes in the data and parses them Also parses StyleMap nodes, but only uses the ‘normal’ key
parseStyles: function(nodes,
options)
Looks for Style nodes in the data and parses them Also parses StyleMap nodes, but only uses the ‘normal’ key
OpenLayers.parseXMLString = function(text)
Parse XML into a doc structure
passesTolerance: function(evt)
Determine whether the event is within the optional pixel tolerance.
passesTolerance: function(px)
Determine whether the mouse move is within the optional pixel tolerance.
passEventToSlider:function(evt)
This function is used to pass events that happen on the div, or the map, through to the slider, which then does its moving thing.
pixelToBounds: function(pixel)
Takes a pixel as argument and creates bounds after adding the clickTolerance.
play: function()
Calls the appropriate easing method
Return an array of coordinates from a point.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
Given an OpenLayers point geometry, create a GML point.
Given a GML node representing a point geometry, create an OpenLayers point geometry.
Given an OpenLayers point geometry, create a KML point.
Given a KML node representing a point geometry, create an OpenLayers point geometry.
Return an array of linear ring arrays from a polygon.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
Given an OpenLayers polygon geometry, create a GML polygon.
Given a GML node representing a polygon geometry, create an OpenLayers polygon geometry.
Given an OpenLayers polygon geometry, create a KML polygon.
Given a KML node representing a polygon geometry, create an OpenLayers polygon geometry.
positionImage: function()
Using the properties currenty set on the layer, position the tile correctly.
POST: function(config)
Send a POST request.
postDraw: function(node)
Things that have do be done after the geometry node is appended to its parent node.
postDraw: function(node)
Some versions of Internet Explorer seem to be unable to set fillcolor and strokecolor to “none” correctly before the fill node is appended to a visible vml node.
preFeatureInsert: function(feature)
method called before a feature is inserted.
previousTrigger: function()
Restore the previous state.
processXMLNode: function(xmlNode)
When passed an xmlNode, parses it for a GML point, and passes back an object describing that point.
profile: function()
Turns on the JavaScript profiler.
profileEnd: function()
Turns off the JavaScript profiler and prints its report.
projectForward: function(point)
Given an object with x and y properties in EPSG:4326, modify the x,y properties on the object to be the Spherical Mercator projected coordinates.
projectInverse: function(point)
Given an object with x and y properties in Spherical Mercator, modify the x,y properties on the object to be the unprojected coordinates.
PUT: function(config)
Send an HTTP PUT request.
+ + + +
OpenLayers.Util.rad = function(x)
raiseLayer: function (layer,
delta)
Change the index of the given layer by delta.
read: function(data)
read: function(data)
Read data from a string, and return an object whose type depends on the subclass.
read: function(data)
Read data from a string, and return an response.
read: function(data)
Read data from a string of ArcXML, and return a set of OpenLayers features.
read: function(data)
Read and Filter doc and return an object representing the Filter.
read: function(data)
read: function(json,
type,
filter)
Deserialize a GeoJSON string.
read: function(data)
Read data from a string, and return a list of features.
read: function(data)
read: function(doc)
Return a list of features from a GPX doc
read: function(json,
filter)
Deserialize a json string.
read: function(data)
Read data from a string, and return a list of features.
read: function(data,
options)
Read and SLD doc and return an object representing the SLD.
read: function(data,
options)
read: function(text)
Return a list of features from a Tab Seperated Values text string.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Parse the response from a transaction.
read: function(wkt)
Deserialize a WKT string and return a vector feature or an array of vector features.
read: function(data,
options)
Read WMC data from a string, and return an object with map properties and a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read DescribeLayer data from a string, and return the response.
read: function(data)
Read DescribeLayer data from a string, and return the response.
read: function(data)
Read WMS GetFeatureInfo data from a string, and return an array of features
read: function()
Construct a request for reading new features.
read: function(options)
Construct a request for reading new features.
read: function(options)
Read all features from the database and return a OpenLayers.Protocol.Response instance.
read: function(options)
Construct a request for reading new features.
read_cap_Abstract: function(obj,
node)
read_cap_Abstract: function(obj,
node)
read_cap_Capability: function(capabilities,
node)
read_cap_DCPType: function(obj,
node)
Super simplified HTTP href extractor.
read_cap_FeatureType: function(featureTypeList,
node,
parentLayer)
read_cap_FeatureTypeList: function(request,
node)
read_cap_Format: function(obj,
node)
read_cap_GetMap: function(request,
node)
read_cap_LatLonBoundingBox: function(layer,
node)
read_cap_Layer: function(capability,
node,
parentLayer)
read_cap_LegendURL: function(style,
node)
read_cap_Name: function(obj,
node)
read_cap_Name: function(obj,
node)
read_cap_OnlineResource: function(obj,
node)
read_cap_Request: function(obj,
node)
read_cap_ScaleHint: function(layer,
node)
The Layer ScaleHint element has min and max attributes that relate to the minimum and maximum resolution that the server supports.
read_cap_Service: function(capabilities,
node)
read_cap_Style: function(layer,
node)
read_cap_Title: function(obj,
node)
read_cap_Title: function(obj,
node)
read_FeatureInfoResponse: function(data)
Parse FeatureInfoResponse nodes.
read_msGMLOutput: function(data)
Parse msGMLOutput nodes.
read_ol_displayInLayerSwitcher: function(layerInfo,
node)
read_ol_isBaseLayer: function(layerInfo,
node)
read_ol_maxExtent: function(obj,
node)
read_ol_numZoomLevels: function(layerInfo,
node)
read_ol_opacity: function(layerInfo,
node)
read_ol_singleTile: function(layerInfo,
node)
read_ol_transparent: function(layerInfo,
node)
read_ol_units: function(layerInfo,
node)
read_sld_MaxScaleDenominator: function(layerInfo,
node)
Read a sld:MaxScaleDenominator node.
read_sld_MinScaleDenominator: function(layerInfo,
node)
Read a sld:MinScaleDenominator node.
read_sld_StyledLayerDescriptor: function(sld,
node)
read_wmc_Abstract: function(obj,
node)
read_wmc_BoundingBox: function(context,
node)
read_wmc_Extension: function(obj,
node)
read_wmc_Format: function(layerInfo,
node)
read_wmc_FormatList: function(layerInfo,
node)
read_wmc_General: function(context,
node)
read_wmc_LatLonBoundingBox: function(layer,
node)
read_wmc_Layer: function(context,
node)
read_wmc_LayerList: function(context,
node)
read_wmc_LegendURL: function(style,
node)
read_wmc_MetadataURL: function(layerInfo,
node)
read_wmc_Name: function(obj,
node)
read_wmc_OnlineResource: function(obj,
node)
read_wmc_Server: function(layerInfo,
node)
read_wmc_SLD: function(style,
node)
read_wmc_Style: function(layerInfo,
node)
read_wmc_StyleList: function(layerInfo,
node)
read_wmc_Title: function(obj,
node)
readChildNodes: function(node,
obj)
Shorthand for applying the named readers to all children of a node.
readNode: function(node,
obj)
Shorthand for applying one of the named readers given the node namespace and local name.
readOgcExpression: function(node)
Limited support for OGC expressions.
readRestriction: function(node,
obj)
Reads restriction defined in the child nodes of a restriction element
readSpatial: function(node,
obj,
type)
Read a {OpenLayers.Filter.Spatial} filter.
rectDrag: function(px)
Handle extent rectangle drag
redraw: function()
Goes through and takes the current state of the Map and rebuilds the control to display that state.
redraw: function(evt)
redraw: function()
redraw: function()
clear the div and start over.
redraw: function()
Redraws the layer.
redraw: function(force)
Redraws the layer.
redraw: function()
The real ‘meat’ of the function: any time things have changed, redraw() can be called to loop over all the data and (you guessed it) redraw it.
redrawBackgroundNode: function(id,
geometry,
style,
featureId)
Redraws the node using special ‘background’ style properties.
redrawNode: function(id,
geometry,
style,
featureId)
refresh: function(obj)
Ask the layer to request features again and redraw them.
refresh: function()
Refreshes all the features of the layer
regex2value: function()
Convert the value of this rule from a regular expression string into an ogc literal string using a wildCard of *, a singleChar of ., and an escape of !.
register: function(responderToAdd)
register: function (type,
obj,
func)
Register an event on the events object.
register: function (name,
method)
register an event on the map
registerEvents:function()
Registers events on the popup.
registerImageListeners: function()
Called when an image contained by the popup loaded.
registerPriority: function (type,
obj,
func)
Same as register() but adds the new listener to the front of the events queue instead of to the end.
registerWheelEvents: function()
remove: function(element)
Remove the specified element from the DOM.
remove: function(node)
remove: function(type)
Remove all listeners for a given event type.
remove: function(feature)
Takes a feature, and generates a WFS-T Transaction “Delete”
removeBox: function()
Remove the zoombox from the screen and nullify our reference to it.
removeButtons: function()
removeByGeometry: function(features,
geometry)
Remove a feature from a list based on the given geometry.
removeClass: function(element,
name)
Remove a CSS class name from an element.
removeComponent: function(component)
Remove a component from this geometry.
removeComponent: function(point)
Removes a point from geometry components.
removeComponent: function(point)
Only allows removal of a point if there are three or more points in the linestring.
removeComponents: function(components)
Remove components from this geometry.
removeControl: function (control)
Remove a control from the map.
removeExcessTiles: function(rows,
columns)
When the size of the map or the buffer changes, we may need to remove some excess rows and columns.
removeFeatures: function(features,
options)
Remove features from the layer.
OpenLayers.Util.removeItem = function(array,
item)
Remove an object from an array.
removeLayer: function(layer,
setNewBaseLayer)
Removes a layer from the map by removing its visual element (the layer.div property), then removing it from the map’s internal list of layers, setting the layer’s map property to null.
removeMap: function(map)
Just as setMap() allows each layer the possibility to take a personalized action on being added to the map, removeMap() allows each layer to take a personalized action on being removed from it.
removeMap: function(map)
On being removed from the map, we’ll like to remove the invisible ‘pane’ div that we added to it on creation.
removeMap: function(map)
On being removed from the map, also remove termsOfUse and poweredBy divs
removeMap: function(map)
The layer has been removed from the map.
removeMap: function(map)
removeMarker: function(marker)
removeMarker: function(marker)
removePoint: function(point)
Wrapper for OpenLayers.Geometry.Collection.removeComponent
removePoint: function()
Destroy the temporary point.
removePopup: function(popup)
OpenLayers.Util.removeTail = function(url)
Takes a url and removes everything after the ?
removeTarget: function(target)
Remove a target.
removeTargetLayer: function(layer)
Remove a target layer.
removeText: function(featureId)
Function for removing text labels.
removeText: function(featureId)
Removes a label
removeTileMonitoringHooks: function(tile)
This function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks()
removeTileMonitoringHooks: function(tile)
This function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks.
removeTileMonitoringHooks: function(tile)
This function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks()
removeTimeout: function()
Private.
removeZoomBox: function()
Remove the zoombox from the screen and nullify our reference to it.
render: function(div)
Render the map to a specified container.
renderTile: function()
Internal function to actually initialize the image tile, position it correctly, and set its url.
request: function(url)
request: function(bounds,
options)
Sends a GetFeature request to the WFS
request: function(clickPosition,
options)
Sends a GetFeatureInfo request to the WMS
requestFailure: function(request)
Process a failed loading of GML.
requestSuccess:function(request)
Process GML after it has been loaded.
requestSuccess:function(request)
Called on return from request succcess.
resetBackBuffer: function()
Triggered by two different events, layer loadend, and tile loadend.
resetLayersZIndex: function()
Reset each layer’s z-index based on layer’s array index
resetRoots: function()
Resets the root nodes back into the layers they belong to.
resetVertices: function()
resize: function(scale,
origin,
ratio)
Resize a geometry relative to some origin.
resize: function(scale,
origin,
ratio)
Resize a geometry relative to some origin.
resize: function(scale,
origin,
ratio)
Resize a point relative to some origin.
respondToReadyState: function(readyState)
restore: function(state)
Update the state with the given object.
rightclick: function(evt)
Handle rightclick.
rotate: function(angle,
origin)
Rotate a geometry around some origin
rotate: function(angle,
origin)
Rotate a geometry around some origin
rotate: function(angle,
origin)
Rotate a point around another.
runChildNodes: function(obj,
node)
runChildNodes: function(obj,
node)
runChildNodes: function(obj,
node)
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions11.html b/openlayers/doc/devdocs/index/Functions11.html new file mode 100644 index 0000000..495b720 --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions11.html @@ -0,0 +1,34 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
S
 safeStopPropagation, Util
 save, OpenLayers.Strategy.Save
 scale, OpenLayers.Bounds
 schemaLocationAttr, OpenLayers.Format.WFST.v1
 segmentsIntersect, OpenLayers.Geometry.OpenLayers.Geometry
 select
 selectBestFeature, OpenLayers.Control.GetFeature
 selectBox
 selectFeature, OpenLayers.Control.ModifyFeature
 selectSingle, OpenLayers.Control.GetFeature
 selectUrl, OpenLayers.Layer.HTTPRequest
 serializeTags, OpenLayers.Format.OSM
 serializeXMLToString, OpenLayers.Ajax.Response
 setAttributeNS, OpenLayers.Format.XML
 setAttributes
 setBackgroundColor
 setBaseLayer, OpenLayers.Map
 setBorder
 setCanvasStyle, OpenLayers.Renderer.Canvas
 setCenter
 setCode, OpenLayers.Lang
 setContentHTML, OpenLayers.Popup
 setDefaultStyle, OpenLayers.Style
 setEvent, OpenLayers.Handler
 setExtent
 setFeatureState, OpenLayers.Control.ModifyFeature
 setFilterProperty, OpenLayers.Format.WFST.v1
 setGeometryTypes
 setIsBaseLayer, OpenLayers.Layer
 setLayer
 setLayerFilter, OpenLayers.Layer.ArcGIS93Rest
 setLayerIndex, OpenLayers.Map
 setLayerQuery, OpenLayers.Layer.ArcIMS
 setLayerZIndex, OpenLayers.Map
 setListeners, OpenLayers.Control.NavigationHistory
 setMap
 setMapObjectCenter
 setMapType, OpenLayers.Layer.Google
 setModifiers, OpenLayers.Control.GetFeature
 setName, OpenLayers.Layer
 setNamespace, OpenLayers.Format.XML
 setNodeDimension, OpenLayers.Renderer.VML
 setOpacity
 setOptions
 setRectPxBounds, OpenLayers.Control.OverviewMap
 setRequestHeaders, OpenLayers.Ajax.Request
 setRicoCorners, OpenLayers.Popup.AnchoredBubble
 setSize
 setSource, OpenLayers.Control.Split
 setState, OpenLayers.Format.OSM
 setStyle
 setTargets, OpenLayers.Control.Snapping
 setTileSize
 setUrl
 setVisibility
 setZIndex
 shiftColumn, OpenLayers.Layer.Grid
 shiftRow, OpenLayers.Layer.Grid
 shouldCluster, OpenLayers.Strategy.Cluster
 show
 showControls, OpenLayers.Control.LayerSwitcher
 showTile, OpenLayers.Tile
 showToggle, OpenLayers.Control.OverviewMap
 spiralTileLoad, OpenLayers.Layer.Grid
 split
 splitWith
 splitWithSegment, OpenLayers.Geometry.LineString
 start, OpenLayers.Tween
 startBox, OpenLayers.Handler.Box
 startsWith
 startTransition, OpenLayers.Tile.Image
 stop
 stopObserving, OpenLayers.Event
 stopObservingElement, OpenLayers.Event
 string, OpenLayers.Format.JSON.serialize
 success
 supported
 switchModeTo, OpenLayers.Control.MouseToolbar
+ +
OpenLayers.Util.safeStopPropagation = function(evt)
Deprecated.
save: function(features)
Tell the layer protocol to commit unsaved features.
scale: function(ratio,
origin)
Scales the bounds around a pixel or lonlat.
schemaLocationAttr: function(options)
Generate the xsi:schemaLocation attribute value.
OpenLayers.Geometry.segmentsIntersect = function(seg1,
seg2,
options)
Determine whether two line segments intersect.
select: function(features)
Add feature to the hash of selected features and trigger the featureselected event.
select: function(feature)
Add feature to the layer’s selectedFeature array, render the feature as selected, and call the onSelect function.
selectBestFeature: function(features,
clickPosition,
options)
Selects the feature from an array of features that is the best match for the click position.
selectBox: function(position)
Callback from the handlers.box set up when box selection is on
selectBox: function(position)
Callback from the handlers.box set up when box selection is true on.
selectFeature: function(feature)
Called when the select feature control selects a feature.
selectSingle: function(evt)
Called on click
selectUrl: function(paramString,
urls)
selectUrl() implements the standard floating-point multiplicative hash function described by Knuth, and hashes the contents of the given param string into a float between 0 and 1.
serializeTags: function(feature,
node)
Given a feature, serialize the attributes onto the given node.
OpenLayers.Ajax.serializeXMLToString = function(xmldom)
Wrapper function around XMLSerializer, which doesn’t exist/work in IE/Safari.
setAttributeNS: function(node,
uri,
name,
value)
Adds a new attribute or changes the value of an attribute with the given namespace and name.
setAttributes: function(node,
obj)
Set multiple attributes given key value pairs from an object.
setAttributes: function(node,
obj)
Set multiple attributes given key value pairs from an object.
setBackgroundColor:function(color)
Sets the background color of the popup.
setBackgroundColor:function(color)
setBackgroundColor:function(color)
setBaseLayer: function(newBaseLayer)
Allows user to specify one of the currently-loaded layers as the Map’s new base layer.
setBorder: function (color,
width)
Allow the user to change the box’s color and border width
setBorder:function(border)
Sets the border style of the popup.
setBorder:function(border)
Always sets border to 0.
setBorder:function()
setCanvasStyle: function(type,
style)
Prepare the canvas for drawing by setting various global settings.
setCenter: function()
As soon as a baseLayer has been loaded, we center and zoom ...and remove the handler.
setCenter: function(lonlat,
zoom,
dragging,
forceZoomChange)
Set the map center (and optionally, the zoom level).
setCode: function(code)
Set the language code for string translation.
setContentHTML:function(contentHTML)
Allows the user to set the HTML content of the popup.
setDefaultStyle: function(style)
Sets the default style for this style object.
setEvent: function(evt)
With each registered browser event, the handler sets its own evt property.
setExtent: function(extent,
resolutionChanged)
Set the visible part of the layer.
setExtent: function(extent)
Set the visible part of the layer.
setExtent: function(extent,
resolutionChanged)
setExtent: function(extent,
resolutionChanged)
Set the renderer’s extent
setFeatureState: function()
Called when the feature is modified.
setFilterProperty: function(filter)
Set the property of each spatial filter.
setGeometryTypes: function()
Sets the geometryTypes mapping.
setGeometryTypes: function()
Sets the geometryTypes mapping.
setIsBaseLayer: function(isBaseLayer)
setLayer: function(layer)
Set the editable layer.
setLayer: function(layer)
Called to set the layer property.
setLayerFilter: function (id,
queryDef)
addTile creates a tile, initializes it, and adds it to the layer div.
setLayerIndex: function (layer,
idx)
Move the given layer to the specified (zero-based) index in the layer list, changing its z-index in the map display.
setLayerQuery: function(id,
querydef)
Set the query definition on this layer.
setLayerZIndex: function (layer,
zIdx)
setListeners: function()
Sets functions to be registered in the listeners object.
setMap: function(map)
Set the map property for the control.
setMap: function(map)
Set the map property for the control.
setMap: function(map)
Set the map property for the control and all handlers.
setMap: function(map)
Set the map property for the control.
setMap: function(map)
setMap: function(map)
Set the map property for the control and all handlers.
setMap: function()
setMap: function(map)
Set the map property for the control and previous and next child controls.
setMap: function(map)
setMap: function(map)
Set the map property for the control.
setMap: function(map)
Set the map property for the control.
setMap: function(map)
Set the map property for the control.
setMap: function (map)
setMap: function (map)
setMap: function(map)
Set the map property for the layer.
setMap: function(map)
Set the map property for the layer.
setMap: function(map)
Overridden from EventPane because if a map type has been specified, we need to attach a listener for the first moveend -- this is how we will know that the map has been centered.
setMap: function(map)
setMap: function(map)
When the layer is added to a map, then we can fetch our origin (if we don’t have one.)
setMap: function(map)
The layer has been added to the map.
setMap: function(map)
setMap: function(map)
setMap: function(map)
When the layer is added to a map, then we can fetch our origin (if we don’t have one.)
setMap: function(map)
Overridden from EventPane because we need to remove this yahoo event pane which prohibits our drag and drop, and we can only do this once the map has been loaded and centered.
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapType: function()
The map has been centered, and a map type was specified, so we set the map type on the gmap object, then unregister the listener so that we dont keep doing this every time the map moves.
setModifiers: function(evt)
Sets the multiple and toggle modifiers according to the current event
setName: function(newName)
Sets the new layer name for this layer.
setNamespace: function(alias,
uri)
Set a namespace alias and URI for the format.
setNodeDimension: function(node,
geometry)
Get the geometry’s bounds, convert it to our vml coordinate system, then set the node’s position, size, and local coordinate system.
setOpacity: function(opacity)
Change the icon’s opacity
setOpacity: function(opacity)
Sets the opacity for the entire layer (all images)
setOpacity: function(opacity)
Sets the opacity for all the markers.
setOpacity: function (opacity)
Call the setOpacity method of the appropriate parent class to set the opacity.
setOpacity: function(opacity)
Change the opacity of the marker by changin the opacity of its icon
setOpacity:function(opacity)
Sets the opacity of the popup.
setOpacity:function(opacity)
setOpacity:function(opacity)
Sets the opacity of the popup.
OpenLayers.Util.setOpacity = function(element,
opacity)
Deprecated.
setOptions: function (newOptions)
setOptions: function(options)
Change the map options
setRectPxBounds: function(pxBounds)
Set extent rectangle pixel bounds.
setRequestHeaders: function()
setRicoCorners:function()
Update RICO corners according to the popup’s current relative postion.
setSize: function(size)
setSize:function(contentSize)
Used to adjust the size of the popup.
setSize:function(contentSize)
setSize:function(contentSize)
setSize:function(contentSize)
Overridden here, because we need to update the blocks whenever the size of the popup has changed.
setSize: function(size)
Sets the size of the drawing surface.
setSize: function(size)
Sets the size of the drawing surface.
setSize: function(size)
Sets the size of the drawing surface.
setSize: function(size)
Set the size of the drawing surface
setSource: function(layer)
Set the source layer for edits layer.
setState: function(feature,
node)
OpenStreetMap has a convention that ‘state’ is stored for modification or deletion.
setStyle: function(node,
style,
options)
Use to set all the style attributes to a SVG node.
setStyle: function(node,
style,
options,
geometry)
Use to set all the style attributes to a VML node.
setTargets: function(targets)
Set the targets for the snapping agent.
setTileSize: function(size)
Set the tile size based on the map size.
setTileSize: function(size)
Check if we are in singleTile mode and if so, set the size as a ratio of the map size (as specified by the layer’s ‘ratio’ property).
setUrl: function(url)
setUrl:function(url)
Change the URL and reload the GML
setUrl: function(newUrl)
setUrl: function(newUrl)
setUrl: function(url)
Change URL of the Icon Image.
setVisibility: function(visibility)
Set the visibility flag for the layer and hide/show & redraw accordingly.
setVisibility: function(visibility,
noEvent)
Set the visibility flag for the layer and hide/show&redraw accordingly.
setZIndex: function (zIndex)
setZIndex: function (zIndex)
Set the z-index order for the pane.
shiftColumn: function(prepend)
Shift grid work in the other dimension
shiftRow:function(prepend)
Shifty grid work
shouldCluster: function(cluster,
feature)
Determine whether to include a feature in a given cluster.
show: function()
Show element(s) passed in
show: function()
Makes the popup visible.
show: function()
Overridden from Popup since user might hide popup and then show() it in a new location (meaning we might want to update the relative position on the show)
show: function()
Show the tile.
show: function()
Show the tile by showing its frame.
showControls: function(minimize)
Hide/Show all LayerSwitcher controls depending on whether we are minimized or not
showTile: function()
Show the tile only if it should be drawn.
showToggle: function(minimize)
Hide/Show the toggle depending on whether the control is minimized
spiralTileLoad: function()
Starts at the top right corner of the grid and proceeds in a spiral towards the center, adding tiles one at a time to the beginning of a queue.
split: function(target,
options)
Use this geometry (the source) to attempt to split a target geometry.
split: function(geometry,
options)
Use this geometry (the source) to attempt to split a target geometry.
splitWith: function(geometry,
options)
Split this geometry (the target) with the given geometry (the source).
splitWith: function(geometry,
options)
Split this geometry (the target) with the given geometry (the source).
splitWithSegment: function(seg,
options)
Split this geometry with the given segment.
start: function(begin,
finish,
duration,
options)
Plays the Tween, and calls the callback method on each step
startBox: function (xy)
startsWith: function(str,
sub)
Test whether a string starts with another string.
Deprecated.
startTransition: function()
This method is invoked on tiles that are backBuffers for tiles in the grid.
stop: function(event,
allowDefault)
Stops an event from propagating.
stop: function()
Stops the Tween, and calls the done callback Doesn’t do anything if animation is already finished
stopObserving: function(elementParam,
name,
observer,
useCapture)
stopObservingElement: function(elementParam)
Given the id of an element to stop observing, cycle through the element’s cached observers, calling stopObserving on each one, skipping those entries which can no longer be removed.
Transform a string into a JSON string.
success: function()
{Boolean} -
success: function()
supported: function()
This should be overridden by specific subclasses
supported: function()
Determine whether a browser supports Gears
supported: function()
This should be overridden by specific subclasses
supported: function()
{Boolean} Whether or not the browser supports the renderer class
supported: function()
{Boolean} Whether or not the browser supports the SVG renderer
supported: function()
Determine whether a browser supports this renderer.
switchModeTo: function(mode)
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions12.html b/openlayers/doc/devdocs/index/Functions12.html new file mode 100644 index 0000000..3dbd53f --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions12.html @@ -0,0 +1,34 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
T
 testTarget, OpenLayers.Control.Snapping
 time, OpenLayers.Console
 timeEnd, OpenLayers.Console
 toArray, OpenLayers.Bounds
 toBBOX, OpenLayers.Bounds
 toFloat, Util
 toGeometry, OpenLayers.Bounds
 toggle
 toggleClass, OpenLayers.Element
 toggleSelect, OpenLayers.Control.SelectFeature
 toShortString
 toState, OpenLayers.Feature.Vector
 toString
 trace, OpenLayers.Console
 transform
 translate
 trigger
 triggerCallback, OpenLayers.Handler.Feature
 triggerEvent, OpenLayers.Events
 triggerRead, OpenLayers.Strategy.BBOX
 triggerSave, OpenLayers.Strategy.Save
 trim
 Try, Util
+ +
testTarget: function(target,
loc)
time: function()
Creates a new timer under the given name.
timeEnd: function()
Stops a timer created by a call to OpenLayers.Console.time(name) and writes the time elapsed.
toArray: function()
{Array} array of left, bottom, right, top
toBBOX:function(decimal)
OpenLayers.Util.toFloat = function (number,
precision)
Convenience method to cast an object to a Number, rounded to the desired floating point precision.
toGeometry: function()
Create a new polygon geometry based on this bounds.
toggle: function()
Toggle the visibility of element(s) passed in
toggle: function()
Toggles visibility of the popup.
toggleClass: function(element,
name)
Remove a CSS class name from an element if it exists.
toggleSelect: function()
Event should toggle the selected state of a feature based on toggle property and toggleKey event modifier.
toShortString: function()
{String} Shortened String representation of Point object.
toShortString:function()
{String} Shortened String representation of OpenLayers.LonLat object.
toState: function(state)
Sets the new state
toString:function()
{String} String representation of bounds object.
toString: function()
Returns the Well-Known Text representation of a geometry
toString:function()
Return a readable string version of the lonlat
toString:function()
Cast this object into a string
toString: function()
Convert projection to string (getCode wrapper).
toString:function()
Return the string representation of a size object
trace: function()
Prints an interactive stack trace of JavaScript execution at the point where it is called.
transform: function(source,
dest)
Transform the Bounds object from source to dest.
transform: function(source,
dest)
Reproject the components geometry from source to dest.
transform: function(source,
dest)
Reproject the components geometry from source to dest.
transform: function(source,
dest)
Translate the x,y properties of the point from source to dest.
transform: function(source,
dest)
Transform the LonLat object from source to dest.
OpenLayers.Projection.transform = function(point,
source,
dest)
Transform a point coordinate from one projection to another.
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
translate: function(x,
y)
Transforms the SVG coordinate system
trigger: function()
Called by a control panel when the button is clicked.
trigger: function()
trigger: function()
trigger: function()
trigger: function()
Do the zoom.
triggerCallback: function(type,
mode,
args)
Call the callback keyed in the event map with the supplied arguments.
triggerEvent: function (type,
evt)
Trigger a specified registered event.
triggerRead: function()
{OpenLayers.Protocol.Response} The protocol response object returned by the layer protocol.
triggerSave: function(event)
Registered as a listener.
trim: function(str)
Removes leading and trailing whitespace characters from a string.
Deprecated.
OpenLayers.Util.Try = function()
Execute functions until one of them doesn’t throw an error.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions13.html b/openlayers/doc/devdocs/index/Functions13.html new file mode 100644 index 0000000..f5beb27 --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions13.html @@ -0,0 +1,38 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
U
 un, OpenLayers.Events
 unfreezeFeature, OpenLayers.Protocol.SQL.Gears
 unhighlight, OpenLayers.Control.SelectFeature
 unload, OpenLayers.Tile
 unloadCache, OpenLayers.Event
 unloadDestroy, OpenLayers.Map
 unregister
 unselect
 unselectAll
 unselectFeature, OpenLayers.Control.ModifyFeature
 up
 update
 updateAttribution, OpenLayers.Control.Attribution
 updateBlocks, OpenLayers.Popup.Framed
 updateHandler, OpenLayers.Control.Measure
 updateLink, OpenLayers.Control.Permalink
 updateMap, OpenLayers.Control.LayerSwitcher
 updateMapToRect, OpenLayers.Control.OverviewMap
 updatePosition, OpenLayers.Popup
 updateRectToMap, OpenLayers.Control.OverviewMap
 updateRelativePosition
 updateScale, OpenLayers.Control.Scale
 updateSize
 updateSizeDestroy, OpenLayers.Map
 upFeature, OpenLayers.Control.DragFeature
 upperCaseObject, Util
 urlMatches, OpenLayers.Control.WMSGetFeatureInfo
 userError, OpenLayers.Console
V
 value2regex, OpenLayers.Filter.Comparison
 visible
+ +
un: function(object)
Convenience method for unregistering listeners with a common scope.
unfreezeFeature: function(row)
unhighlight: function(feature)
Redraw feature with the “default” style
unload: function()
Call immediately before destroying if you are listening to tile events, so that counters are properly handled if tile is still loading at destroy-time.
unloadCache: function()
Cycle through all the element entries in the events cache and call stopObservingElement on each.
Function that is called to destroy the map on page unload.
unregister: function(responderToRemove)
unregister: function (type,
obj,
func)
unregister: function (name,
method)
unregister an event from the map
unselect: function(feature)
Remove feature from the hash of selected features and trigger the featureunselected event.
unselect: function(feature)
Remove feature from the layer’s selectedFeature array, render the feature as normal, and call the onUnselect function.
unselectAll: function(options)
Unselect all selected features.
unselectAll: function(options)
Unselect all selected features.
unselectFeature: function(feature)
Called when the select feature control unselects a feature.
up: function(evt)
This method is called during the handling of the mouse up event.
up: function(evt)
Finish drawing the feature
update: function()
Update the overview map after layers move.
update: function()
Update the size of the bars, and the labels they contain.
update: function(feature)
Takes a feature, and generates a WFS-T Transaction “Update”
update: function()
Construct a request updating modified features.
update: function(feature,
options)
Construct a request updating modified feature.
update: function(features,
options)
Construct a request updating modified feature.
update: function(options)
Callback function called on “moveend” or “refresh” layer events.
updateAttribution: function()
Update attribution string.
updateBlocks: function()
Internal method, called on initialize and when the popup’s relative position has changed.
updateHandler: function(handler,
options)
updateLink: function()
updateMap: function()
Cycles through the loaded data and base layer input arrays and makes the necessary calls to the Map object such that that the map’s visual state corresponds to what the user has selected in the control.
updateMapToRect: function()
Updates the map extent to match the extent rectangle position and size
updatePosition: function()
if the popup has a lonlat and its map members set, then have it move itself to its proper position
updateRectToMap: function()
Updates the extent rectangle position and size to match the map extent
updateRelativePosition: function()
The popup has been moved to a new relative location, so we may want to make some cosmetic adjustments to it.
updateRelativePosition: function()
The popup has been moved to a new relative location, in which case we will want to re-do the rico corners.
updateRelativePosition: function()
When the relative position changes, we need to set the new padding BBOX on the popup, reposition the close div, and update the blocks.
updateScale: function()
updateSize: function()
This function should be called by any external code which dynamically changes the size of the map div (because mozilla wont let us catch the “onresize” for an element)
updateSize: function()
Auto size the popup so that it precisely fits its contents (as determined by this.contentDiv.innerHTML).
When the map is destroyed, we need to stop listening to updateSize events: this method stores the function we need to unregister in non-IE browsers.
upFeature: function(pixel)
Called when the drag handler detects a mouse-up.
OpenLayers.Util.upperCaseObject = function (object)
Creates a new hashtable and copies over all the keys from the passed-in object, but storing them under an uppercased version of the key at which they were stored.
urlMatches: function(url)
Test to see if the provided url matches either the control url or one of the layerUrls.
userError: function(error)
A single interface for showing error messages to the user.
+ + + +
value2regex: function(wildCard,
singleChar,
escapeChar)
Converts the value of this rule into a regular expression string, according to the wildcard characters specified.
visible: function(element)
visible: function()
{Boolean} Boolean indicating whether or not the popup is visible
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions14.html b/openlayers/doc/devdocs/index/Functions14.html new file mode 100644 index 0000000..2b0761d --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions14.html @@ -0,0 +1,38 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
W
 warn, OpenLayers.Console
 WFS, OpenLayers.Protocol
 WFST, OpenLayers.Format
 wheelChange, OpenLayers.Control.Navigation
 wheelDown, OpenLayers.Control.Navigation
 wheelUp, OpenLayers.Control.Navigation
 wheelZoom, OpenLayers.Handler.MouseWheel
 wrapDateLine
 write
 write_ol_MapExtension, OpenLayers.Format.WMC.v1
 write_wmc_FormatList, OpenLayers.Format.WMC.v1
 write_wmc_General, OpenLayers.Format.WMC.v1
 write_wmc_Layer
 write_wmc_LayerExtension, OpenLayers.Format.WMC.v1
 write_wmc_LayerList, OpenLayers.Format.WMC.v1
 write_wmc_MetadataURL, OpenLayers.Format.WMC.v1
 write_wmc_OnlineResource, OpenLayers.Format.WMC.v1
 write_wmc_Server, OpenLayers.Format.WMC.v1
 write_wmc_StyleList, OpenLayers.Format.WMC.v1
 writeIndent, OpenLayers.Format.JSON
 writeNewline, OpenLayers.Format.JSON
 writeNode, OpenLayers.Format.XML
 writeSpace, OpenLayers.Format.JSON
 writeSpatial
Z
 Z_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
 Z_ORDER_DRAWING_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
 Z_ORDER_Y_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
 zoomBarDown, OpenLayers.Control.PanZoomBar
 zoomBarDrag, OpenLayers.Control.PanZoomBar
 zoomBarUp, OpenLayers.Control.PanZoomBar
 zoomBox, OpenLayers.Control.ZoomBox
 zoomBoxEnd, OpenLayers.Control.MouseDefaults
 zoomIn, OpenLayers.Map
 zoomOut, OpenLayers.Map
 zoomTo, OpenLayers.Map
 zoomToExtent, OpenLayers.Map
 zoomToMaxExtent, OpenLayers.Map
 zoomToScale, OpenLayers.Map
+ +
warn: function()
Writes a message to the console with the visual “warning” icon and color coding and a hyperlink to the line where it was called.
OpenLayers.Protocol.WFS = function(options)
Used to create a versioned WFS protocol.
OpenLayers.Format.WFST = function(options)
Used to create a versioned WFS protocol.
wheelChange: function(evt,
deltaZ)
wheelDown: function(evt)
User spun scroll wheel down
wheelUp: function(evt)
User spun scroll wheel up
wheelZoom: function(e)
Given the wheel event, we carry out the appropriate zooming in or out, based on the ‘wheelDelta’ or ‘detail’ property of the event.
wrapDateLine: function(maxExtent,
options)
wrapDateLine: function(maxExtent)
write: function(object)
Accept an object, and return a string.
write: function(request)
Generate an ArcXml document string for sending to an ArcIMS server.
write: function(filter,
options)
Write an ogc:Filter given a filter object.
write: function(filter)
write: function(obj,
pretty)
Serialize a feature, geometry, array of features into a GeoJSON string.
write: function(features)
Accept Feature Collection, and return a string.
write: function(features)
Generate a GML document string given a list of features.
write: function(features)
write: function(features)
write: function(features)
write: function(value,
pretty)
Serialize an object into a JSON string.
write: function(features)
Accept Feature Collection, and return a string.
write: function(features)
Takes a list of features, returns a serialized OSM format file for use in tools like JOSM.
write: function(sld,
options)
Write a SLD document given a list of styles.
write: function(sld)
write: function(features)
Takes a feature list, and generates a WFS-T Transaction
write: function(features)
Given an array of features, write a WFS transaction.
write: function(features)
Serialize a feature or array of features into a WKT string.
write: function(obj,
options)
Write a WMC document given a map.
write: function(context,
options)
write: function(node)
Serialize a DOM node into a XML string.
write_ol_MapExtension: function(context)
write_wmc_FormatList: function(layer)
Create a FormatList node given a layer.
write_wmc_General: function(context)
Create a General node given an context object.
write_wmc_Layer: function(layer)
Create a Layer node given a layer object.
write_wmc_Layer: function(layer)
Create a Layer node given a layer object.
write_wmc_LayerExtension: function(layer)
Add OpenLayers specific layer parameters to an Extension element.
write_wmc_LayerList: function(context)
Create a LayerList node given an context object.
write_wmc_MetadataURL: function(layer)
Create a MetadataURL node given a layer object.
write_wmc_OnlineResource: function(href)
Create an OnlineResource node given a URL.
write_wmc_Server: function(layer)
Create a Server node given a layer object.
write_wmc_StyleList: function(layer)
Create a StyleList node given a layer.
writeIndent: function()
Output an indentation string depending on the indentation level.
writeNewline: function()
Output a string representing a newline if in pretty printing mode.
writeNode: function(name,
obj,
parent)
Shorthand for applying one of the named writers and appending the results to a node.
writeSpace: function()
Output a string representing a space if in pretty printing mode.
writeSpatial: function(filter,
name)
Read a {OpenLayers.Filter.Spatial} filter and converts it into XML.
writeSpatial: function(filter,
name)
Read a {OpenLayers.Filter.Spatial} filter and converts it into XML.
+ + + +
Z_ORDER: function(indexer,
newNode,
nextNode)
This compare method is used by other comparison methods.
Z_ORDER_DRAWING_ORDER: function(indexer,
newNode,
nextNode)
This method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the newest drawn will be the front most within that z-index.
Z_ORDER_Y_ORDER: function(indexer,
newNode,
nextNode)
This one should really be called Z_ORDER_Y_ORDER_DRAWING_ORDER, as it best describes which ordering methods have precedence (though, the name would be too long).
zoomBarDown:function(evt)
event listener for clicks on the slider
zoomBarDrag:function(evt)
This is what happens when a click has occurred, and the client is dragging.
zoomBarUp:function(evt)
Perform cleanup when a mouseup event is received -- discover new zoom level and switch to it.
zoomBox: function (position)
zoomBoxEnd: function(evt)
Zoombox function.
zoomIn: function()
zoomOut: function()
zoomTo: function(zoom)
Zoom to a specific zoom level
zoomToExtent: function(bounds,
closest)
Zoom to the passed in bounds, recenter
zoomToMaxExtent: function(options)
Zoom to the full extent and recenter.
zoomToScale: function(scale,
closest)
Zoom to a specified scale
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions2.html b/openlayers/doc/devdocs/index/Functions2.html new file mode 100644 index 0000000..06e4fcb --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions2.html @@ -0,0 +1,34 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
B
 baseLayerDraw, OpenLayers.Control.OverviewMap
 beforeSelectFeature, OpenLayers.Control.ModifyFeature
 bind
 bindAsEventListener
 boolean, OpenLayers.Format.JSON.serialize
 bounds, OpenLayers.Format.GML.buildGeometry
 box, OpenLayers.Format.GeoJSON.parseCoords
 buildCoordinates, OpenLayers.Format.GML
 buildCoordinatesNode
 buildGeometryNode
 buttonDown
 buttonUp, OpenLayers.Control.MouseToolbar
+ +
baseLayerDraw: function()
beforeSelectFeature: function(feature)
Called before a feature is selected.
bind: function(func,
object)
Bind a function to an object.
Deprecated.
bindAsEventListener: function(func,
object)
Bind a function to an object, and configure it to receive the event object as first parameter when called.
Deprecated.
Transform a boolean into a JSON string.
Given an OpenLayers bounds, create a GML box.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
buildCoordinatesNode: function(geometry)
builds the coordinates XmlNode
buildCoordinatesNode: function(geometry)
buildCoordinatesNode: function(geometry)
Builds and returns the KML coordinates node with the given geometry coordinates...</coordinates>
buildGeometryNode: function(geometry)
builds a GeoRSS node with a given geometry
buildGeometryNode: function(geometry)
buildGeometryNode: function(geometry)
Builds and returns a KML geometry node with the given geometry.
buttonDown: function(evt)
buttonDown: function (evt)
buttonUp: function(evt)
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions3.html b/openlayers/doc/devdocs/index/Functions3.html new file mode 100644 index 0000000..6791e9b --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions3.html @@ -0,0 +1,34 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
C
 cacheFeatures
 calculateAngle, OpenLayers.Handler.RegularPolygon
 calculateBounds
 calculateGridLayout
 calculateInRange, OpenLayers.Layer
 calculateNewPx
 calculateRelativePosition, OpenLayers.Popup.Anchored
 callback
 callUserCallback
 camelize
 cancel
 cancelHover
 centerLayerContainer, OpenLayers.Map
 checkImgURL, OpenLayers.Tile.Image
 checkModifiers, OpenLayers.Handler
 checkRedraw, OpenLayers.Control.LayerSwitcher
 clear
 clearArray, Util
 clearBounds, OpenLayers.Geometry
 clearCache
 clearFeatures
 clearGrid, OpenLayers.Layer.Grid
 clearLayerFilter, OpenLayers.Layer.ArcGIS93Rest
 clearLayersArray, OpenLayers.Control.LayerSwitcher
 clearMarkers, OpenLayers.Layer.Markers
 clearMouseCache, OpenLayers.Events
 clearMouseListener, OpenLayers.Events
 clearTimer
 click
 clickFeature, OpenLayers.Control.SelectFeature
 clickoutFeature, OpenLayers.Control.SelectFeature
 clipLine, OpenLayers.Renderer.SVG
 clone
 cluster, OpenLayers.Strategy.Cluster
 clustersExist, OpenLayers.Strategy.Cluster
 collectDragHandle, OpenLayers.Control.ModifyFeature
 collection
 collectRadiusHandle, OpenLayers.Control.ModifyFeature
 collectRoots, OpenLayers.Layer.Vector.RootContainer
 collectVertices, OpenLayers.Control.ModifyFeature
 commit
 commitFailure, OpenLayers.Layer.WFS
 commitReport, OpenLayers.Layer.WFS
 commitSuccess, OpenLayers.Layer.WFS
 concatChildValues, OpenLayers.Format.XML
 configureLayers, OpenLayers.Control.ArgParser
 considerSnapping, OpenLayers.Control.Snapping
 considerSplit, OpenLayers.Control.Split
 contains
 containsBounds, OpenLayers.Bounds
 containsLonLat, OpenLayers.Bounds
 containsPixel, OpenLayers.Bounds
 containsPoint
 contentType, OpenLayers.Format.XML
 contextToMap, OpenLayers.Format.WMC
 count, OpenLayers.Console
 create
 createAlphaImageDiv, Util
 createBlocks, OpenLayers.Popup.Framed
 createCallback
 createCluster, OpenLayers.Strategy.Cluster
 createCRSObject, OpenLayers.Format.GeoJSON
 createDefs, OpenLayers.Renderer.SVG
 createDiv, Util
 createdOffline, OpenLayers.Protocol.SQL.Gears
 createElementDefaultNS, OpenLayers.Format.WMC.v1
 createElementNS, OpenLayers.Format.XML
 createElementNSPlus, OpenLayers.Format.XML
 createFeature
 createFeatureFromItem, OpenLayers.Format.GeoRSS
 createFeatureNodes, OpenLayers.Format.OSM
 createFeatureXML
 createFilter, OpenLayers.Strategy.BBOX
 createFolderXML, OpenLayers.Format.KML
 createGeometry, OpenLayers.Handler.RegularPolygon
 createGeometryFromItem, OpenLayers.Format.GeoRSS
 createImage, Util
 createLiteral, OpenLayers.Style
 createLiterals, OpenLayers.Style
 createMap, OpenLayers.Control.OverviewMap
 createMarker
 createNode
 createOLPropertyNode, OpenLayers.Format.WMC.v1
 createOrUpdate, OpenLayers.Protocol.SQL.Gears
 createParams, OpenLayers.Control.Permalink
 createPlacemarkXML, OpenLayers.Format.KML
 createPopup
 createRegularPolygon, OpenLayers.Geometry.Polygon
 createRenderRoot
 createRoot
 createSymbolizer
 createTextNode, OpenLayers.Format.XML
 createUniqueID, Util
 createUrlObject, Util
 createXML, OpenLayers.Format.OSM
+ +
cacheFeatures: function(event)
Cache features before they are added to the layer.
cacheFeatures: function(event)
Cache features before they are added to the layer.
calculateAngle: function(point,
evt)
Calculate the angle based on settings.
calculateBounds: function()
Recalculate the bounds for the geometry.
calculateBounds: function()
Recalculate the bounds by iterating through the components and calling calling extendBounds() on each item.
calculateBounds: function ()
Create a new Bounds based on the lon/lat
calculateBounds: function()
Recalculate the bounds for the geometry.
calculateBounds: function(center,
resolution)
calculateBounds: function(mapBounds)
calculateGridLayout: function(bounds,
extent,
resolution)
Generate parameters for the grid layout.
calculateGridLayout: function(bounds,
extent,
resolution)
ka-Map uses the center point of the map as an origin for its tiles.
calculateGridLayout: function(bounds,
extent,
resolution)
Generate parameters for the grid layout.
calculateInRange: function()
{Boolean} The layer is displayable at the current map’s current resolution.
calculateNewPx:function(px)
calculateNewPx:function(px)
Besides the standard offset as determined by the Anchored class, our Framed popups have a special ‘offset’ property for each of their positions, which is used to offset the popup relative to its anchor.
calculateRelativePosition:function(px)
callback: function (name,
args)
Trigger the control’s named callback with the given arguments
callback: function (name,
args)
Trigger the control’s named callback with the given arguments
callUserCallback: function(resp,
options)
This method is used from within the commit method each time an an HTTP response is received from the server, it is responsible for calling the user-supplied callbacks.
callUserCallback: function(options,
resp)
This method is called from within commit each time a request is made to the database, it is responsible for calling the user-supplied callbacks.
camelize: function(str)
Camel-case a hyphenated string.
Deprecated.
cancel: function()
Called when the drag handler detects a mouse-out (from the map viewport).
cancel: function()
Stop the control from measuring.
cancel: function()
Finish the geometry and call the “cancel” callback.
cancel: function()
Finish the geometry and call the “cancel” callback.
cancelHover: function()
Callback from the handlers.hover set up when hover selection is on
cancelHover: function()
Cancel callback for the hover handler
centerLayerContainer: function (lonlat)
This function takes care to recenter the layerContainerDiv.
checkImgURL: function ()
Make sure that the image that just loaded is the one this tile is meant to display, since panning/zooming might have changed the tile’s URL in the meantime.
checkModifiers: function (evt)
Check the keyMask on the handler.
checkRedraw: function()
Checks if the layer state has changed since the last redraw() call.
clear: function()
Clear history.
clear: function()
clear: function()
Clear any rendered features on the temporary layer.
clear: function()
Removes all rows of the table.
clear: function()
Clear all vectors from the renderer.
clear: function()
Clear all vectors from the renderer.
clear: function()
Remove all the elements from the root
clear: function()
Clear the tile of any bounds/position-related data so that it can be reused in a new location.
clear: function()
Clear the tile of any bounds/position-related data so that it can be reused in a new location.
clear: function()
Clear the tile of any bounds/position-related data so that it can be reused in a new location.
OpenLayers.Util.clearArray = function(array)
Deprecated.
clearBounds: function()
Nullify this components bounds and that of its parent as well.
clearCache: function()
Clear out the cached features.
clearCache: function()
Clear out the cached features.
clearFeatures: function()
Destroy all features in this layer.
clearFeatures: function()
clearGrid:function()
Go through and remove all tiles from the grid, calling destroy() on each of them to kill circular references
clearLayerFilter: function (id)
Clears layer filters, either from a specific layer, or all of them.
clearLayersArray: function(layersType)
User specifies either “base” or “data”.
clearMarkers: function()
This method removes all markers from a layer.
clearMouseCache: function()
Clear cached data about the mouse position.
A version of clearMouseCache that is bound to this instance so that it can be used with OpenLayers.Event.observe and OpenLayers.Event.stopObserving.
clearTimer: function()
Clear the timer and set timerId to null.
clearTimer: function()
Clear the timer and set timerId to null.
click: function(evt)
Handle click.
click: function (evt)
The drag handler captures the click event.
click: function(evt)
Handle click.
click: function(evt)
Handle clicks.
clickFeature: function(feature)
Called on click in a feature Only responds if this.hover is false.
clickoutFeature: function(feature)
Called on click outside a previously clicked (selected) feature.
clipLine: function(badComponent,
goodComponent)
Given two points (one inside the valid range, and one outside), clips the line betweeen the two points so that the new points are both inside the valid range.
clone:function()
Create a cloned instance of this bounds.
clone: function ()
Create a clone of this vector feature.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Create a clone of this geometry.
clone: function()
Clone this geometry.
clone: function(obj)
{OpenLayers.Geometry.Point} An exact clone of this OpenLayers.Geometry.Point
clone: function()
{OpenLayers.Icon} A fresh copy of the icon.
clone: function (obj)
clone: function (obj)
Create a clone of this layer
clone: function (obj)
Create a clone of this layer
clone: function (obj)
clone: function(obj)
Create a clone of this layer
clone: function (obj)
clone: function (obj)
Create a clone of this layer
clone: function (obj)
Create a clone of this layer
clone: function (obj)
Create a clone of this layer
clone: function (obj)
clone: function (obj)
clone: function (obj)
clone: function (obj)
Create a clone of this layer
clone: function (obj)
Create a clone of this layer
clone: function (obj)
Create a clone of this layer
clone:function()
{OpenLayers.LonLat} New OpenLayers.LonLat object with the same lon and lat values
clone:function()
Return a clone of this pixel object
clone: function()
Clones this rule.
clone:function()
Create a clone of this size object
clone: function (obj)
clone: function (obj)
cluster: function(event)
Cluster features based on some threshold distance.
clustersExist: function()
Determine whether calculated clusters are already on the layer.
collectDragHandle: function()
Collect the drag handle for the selected geometry.
Return an array of geometries from a geometry collection.
Given an OpenLayers geometry collection, create a KML MultiGeometry.
collectRadiusHandle: function()
Collect the radius handle for the selected geometry.
collectRoots: function()
Collects the root nodes of all layers this control is configured with and moveswien the nodes to this control’s layer
collectVertices: function()
Collect the vertices from the modifiable feature’s geometry and push them on to the control’s vertices array.
commit: function()
Write out the data to a WFS server.
commit: function()
Go over the features and for each take action based on the feature state.
commit: function(features,
options)
Iterate over each feature and take action based on the feature state.
commit: function(features,
options)
Go over the features and for each take action based on the feature state.
commit: function(features,
options)
Given a list of feature, assemble a batch request for update, create, and delete transactions.
commitFailure: function(request)
Called when the Ajax request fails
commitReport: function(string,
response)
Called with a ‘success’ message if the commit succeeded, otherwise a failure message, and the full request text as a second parameter.
commitSuccess: function(request)
Called when the Ajax request returns a response
concatChildValues: function(node,
def)
Deprecated.
configureLayers: function()
As soon as all the layers are loaded, cycle through them and hide or show them.
considerSnapping: function(point,
loc)
considerSplit: function(feature)
Decide whether or not to split target features with the supplied feature.
contains:function(x,
y,
inclusive)
contains: function(str,
sub)
Test whether a string contains another string.
Deprecated.
containsBounds:function(bounds,
partial,
inclusive)
Determine whether the target bounds is contained within this bounds.
containsLonLat:function(ll,
inclusive)
containsPixel:function(px,
inclusive)
containsPoint: function(point)
Test if a point is inside a linear ring.
containsPoint: function(point)
Test if a point is inside a polygon.
contentType: function(node)
Determine the content type for a given node.
contextToMap: function(context,
id)
Create a map given a context object.
count: function()
Writes the number of times that the line of code where count was called was executed.
Deprecated.
create: function()
Construct a request for writing newly created features.
create: function(features,
options)
Construct a request for writing newly created features.
create: function(features,
options)
Create new features into the database.
OpenLayers.Util.createAlphaImageDiv = function(id,
px,
sz,
imgURL,
position,
border,
sizing,
opacity,
delayDisplay)
createBlocks: function()
createCallback: function(method,
response,
options)
Returns a function that applies the given public method with resp and options arguments.
createCallback: function(method,
response,
options)
Returns a function that applies the given public method with resp and options arguments.
createCluster: function(feature)
Given a feature, create a cluster.
createCRSObject: function(object)
Create the CRS object for an object.
createDefs: function()
{DOMElement} The element to which we’ll add the symbol definitions
OpenLayers.Util.createDiv = function(id,
px,
sz,
imgURL,
position,
border,
overflow,
opacity)
Creates a new div and optionally set some standard attributes.
createdOffline: function(feature)
Returns true if the feature had a feature id when it was created in the Gears database, false otherwise; this is determined by checking the form of the feature’s fid value.
createElementDefaultNS: function(name,
childValue,
attributes)
Shorthand for createElementNS with namespace from defaultPrefix.
createElementNS: function(uri,
name)
Create a new element with namespace.
createElementNSPlus: function(name,
options)
Shorthand for creating namespaced elements with optional attributes and child text nodes.
createFeature: function(pixel)
Add temporary geometries
createFeature: function(pixel)
Add temporary features
createFeature: function(pixel)
Add temporary geometries
createFeatureFromItem: function(item)
Return a feature from a GeoRSS Item.
createFeatureNodes: function(feature)
Takes a feature, returns a list of nodes from size 0->n.
createFeatureXML: function(feature)
Accept an OpenLayers.Feature.Vector, and build a geometry for it.
createFeatureXML: function(feature)
Accept an OpenLayers.Feature.Vector, and build a GML node for it.
createFeatureXML: function(feature)
createFilter: function()
Returns {OpenLayers.Filter} The filter object.
createFolderXML: function()
Creates and returns a KML folder node
createGeometry: function()
Create the new polygon geometry.
createGeometryFromItem: function(item)
Return a geometry from a GeoRSS Item.
OpenLayers.Util.createImage = function(id,
px,
sz,
imgURL,
position,
border,
opacity,
delayDisplay)
Creates an img element with specific attribute values.
OpenLayers.Style.createLiteral = function(value,
context,
feature)
converts a style value holding a combination of PropertyName and Literal into a Literal, taking the property values from the passed features.
createLiterals: function(style,
feature)
creates literals for all style properties that have an entry in this.propertyStyles.
createMap: function()
Construct the map that this control contains
createMarker: function()
Based on the data associated with the Feature, create and return a marker object.
createMarker: function()
createNode: function(type,
id)
createNode: function(type,
id)
createNode: function(type,
id)
Create a new node
createOLPropertyNode: function(obj,
prop)
Create a node representing an OpenLayers property.
createOrUpdate: function(features)
Construct a request for updating or creating features in the database.
createParams: function(center,
zoom,
layers)
Creates the parameters that need to be encoded into the permalink url.
createPlacemarkXML: function(feature)
Creates and returns a KML placemark node representing the given feature.
createPopup: function(closeBox)
Creates a popup object created from the ‘lonlat’, ‘popupSize’, and ‘popupContentHTML’ properties set in this.data.
createPopup: function()
OpenLayers.Geometry.Polygon.createRegularPolygon = function(origin,
radius,
sides,
rotation)
Create a regular polygon around a radius.
createRenderRoot: function()
{DOMElement} The specific render engine’s root element
createRenderRoot: function()
Create the renderer root
createRoot: function(suffix)
createRoot: function(suffix)
Create the main root element
createSymbolizer: function(feature)
creates a style by applying all feature-dependent rules to the base style.
createSymbolizer: function(feature,
intent)
Creates the symbolizer for a feature for a render intent.
createTextNode: function(text)
Create a text node.
OpenLayers.Util.createUniqueID = function(prefix)
Create a unique identifier for this session.
OpenLayers.Util.createUrlObject = function(url,
options)
createXML:
Takes a feature, returns a list of nodes from size 0->n.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions4.html b/openlayers/doc/devdocs/index/Functions4.html new file mode 100644 index 0000000..5ef24e6 --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions4.html @@ -0,0 +1,34 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
D
 dashStyle
 dblclick
 deactivate
 debug, OpenLayers.Console
 defaultClick
 defaultDblClick
 defaultDblRightClick, OpenLayers.Control.Navigation
 defaultIcon, OpenLayers.Marker
 defaultKeyPress, OpenLayers.Control.KeyboardDefaults
 defaultMouseDown
 defaultMouseMove
 defaultMouseOut
 defaultMouseUp
 defaultWheelDown, OpenLayers.Control.MouseDefaults
 defaultWheelUp, OpenLayers.Control.MouseDefaults
 delayedCall
 delayedRightCall, OpenLayers.Handler.Click
 delete
 DELETE, OpenLayers.Request
 destroy
OpenLayers.ControlOpenLayers.Control.AttributionOpenLayers.Control.DragFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.OverviewMapOpenLayers.Control.PanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.SelectFeatureOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Feature.WFSOpenLayers.FilterOpenLayers.Filter.LogicalOpenLayers.FormatOpenLayers.Format.WFSOpenLayers.Format.XMLOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.HandlerOpenLayers.handler.KeyboardOpenLayers.Handler.MouseWheelOpenLayers.IconOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.EventPaneOpenLayers.Layer.GeoRSSOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.MarkersOpenLayers.Layer.TextOpenLayers.Layer.VectorOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.MapOpenLayers.MarkerOpenLayers.Marker.BoxOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProjectionOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.RendererOpenLayers.Renderer.ElementsOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RuleOpenLayers.StrategyOpenLayers.Strategy.FixedOpenLayers.StyleOpenLayers.StyleMapOpenLayers.TileOpenLayers.Tile.ImageOpenLayers.Tile.WFS
 destroyAllFeatures, OpenLayers.Tile.WFS
 destroyFeature
 destroyFeatures, OpenLayers.Layer.Vector
 destroyMarker
 destroyPopup
 determineQuadrant, OpenLayers.Bounds
 determineZIndex, OpenLayers.ElementsIndexer
 dir, OpenLayers.Console
 dirxml, OpenLayers.Console
 disableZoomWheel, OpenLayers.Control.Navigation
 dispatch, OpenLayers.Ajax.Responders
 dispatchException, OpenLayers.Ajax.Request
 display
 displayError, OpenLayers.Layer.Vector
 distanceTo
 distanceToSegment, OpenLayers.Geometry.OpenLayers.Geometry
 distVincenty, Util
 divClick, OpenLayers.Control.PanZoomBar
 doneDragging, OpenLayers.Control.DragFeature
 doubleClick, OpenLayers.Control.PanZoom
 down
 downFeature, OpenLayers.Control.DragFeature
 dragComplete, OpenLayers.Control.ModifyFeature
 dragPanMapObject
 dragStart, OpenLayers.Control.ModifyFeature
 dragVertex, OpenLayers.Control.ModifyFeature
 draw
 drawCircle
 drawExternalGraphic, OpenLayers.Renderer.Canvas
 drawFeature
 drawGeometry
 drawGeometryNode, OpenLayers.Renderer.Elements
 DrawLine, OpenLayers.Renderer.VML
 drawLinearRing
 drawLineString
 drawMarker
 drawPoint
 drawPolygon
 drawRectangle
 drawSurface
 drawText
+ +
dashStyle: function(style,
widthFactor)
dashStyle: function(style)
dblclick: function(evt)
Handle dblclick.
dblclick: function(evt)
Handle dblclick.
dblclick: function(evt)
Handle double-clicks.
dblclick: function(evt)
Handle double-clicks.
dblclick: function(evt)
Handle double-clicks.
deactivate: function ()
Deactivates a control and it’s associated handler if any.
deactivate: function()
Deactivate the control and all handlers.
deactivate: function ()
Deactivates the control.
deactivate: function()
Deactivate the control.
deactivate: function()
deactivate: function()
Deactivate the control.
deactivate: function()
deactivate: function ()
Deactivates the control.
deactivate: function()
Deactivate the control.
deactivate: function()
Deactivate the control.
deactivate: function ()
Deactivates the control.
deactivate: function()
Turn off the handler.
deactivate: function ()
deactivate: function()
Deactivate the handler.
deactivate: function()
Deactivate the handler.
deactivate: function()
Turn off the handler.
deactivate: function()
Deactivate the handler.
deactivate: function()
deactivate: function (evt)
deactivate: function()
turn off the handler
deactivate: function()
Turn off the handler.
deactivate: function()
Deactivate the strategy.
deactivate: function()
Tear down strategy with regard to reading new batches of remote data.
deactivate: function()
Deactivate the strategy.
deactivate: function()
Deactivate the strategy.
deactivate: function()
Deactivate the strategy.
deactivate: function()
Deactivate the strategy.
debug: function()
Writes a message to the console, including a hyperlink to the line where it was called.
defaultClick: function (evt)
defaultClick: function (evt)
defaultDblClick: function (evt)
defaultDblClick: function (evt)
defaultDblClick: function (evt)
defaultDblRightClick: function (evt)
OpenLayers.Marker.defaultIcon = function()
Creates a default OpenLayers.Icon.
defaultKeyPress: function (evt)
When handling the key event, we only use evt.keyCode.
defaultMouseDown: function (evt)
defaultMouseDown: function (evt)
defaultMouseMove: function (evt)
defaultMouseMove: function (evt)
defaultMouseOut: function (evt)
defaultMouseOut: function (evt)
defaultMouseUp: function (evt)
defaultMouseUp: function (evt)
defaultWheelDown: function(evt)
User spun scroll wheel down
defaultWheelUp: function(evt)
User spun scroll wheel up
delayedCall: function(evt)
Sets timerId to null.
delayedCall: function(evt)
Triggers pause callback.
delayedRightCall: function(evt)
Sets rightclickTimerId to null.
"delete": function()
Construct a request deleting a removed feature.
"delete": function(feature,
options)
Construct a request deleting a removed feature.
"delete": function(features,
options)
Delete features from the database.
DELETE: function(config)
Send an HTTP DELETE request.
destroy: function ()
The destroy method is used to perform any clean up before the control is dereferenced.
destroy: function()
Destroy control.
destroy: function()
Take care of things that are not handled in superclass
destroy: function()
destroy: function()
destroy: function()
Take care of things that are not handled in superclass.
destroy: function()
destroy: function()
destroy: function()
destroy: function()
The destroy method is used to perform any clean up before the control is dereferenced.
destroy: function()
Destroy the control.
destroy: function()
Deconstruct the control
destroy: function()
destroy: function()
destroy: function()
destroy: function()
destroy: function()
destroy: function()
Clean up the control.
destroy: function()
Clean up the control.
destroy: function ()
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
Remove reference to anything added.
destroy: function()
Remove reference to child filters.
destroy: function()
Clean up.
destroy: function()
Remove ciruclar ref to layer
destroy: function()
Clean up.
destroy: function()
Destroy this geometry.
destroy: function ()
Destroy this geometry.
destroy: function ()
Deconstruct the handler.
destroy: function()
destroy: function()
destroy: function()
Nullify references and remove event listeners to prevent circular references and memory leaks
destroy: function(setNewBaseLayer)
Destroy is a destructor: this is to alleviate cyclic references which the Javascript garbage cleaner can not take care of on its own.
destroy: function()
Destroy this layer
destroy: function()
Destroy this layer
destroy: function()
Deconstruct this layer.
destroy: function()
destroy: function()
Deconstruct the layer and clear the grid.
destroy: function()
destroy: function()
Destroy this layer
destroy: function()
destroy: function()
destroy: function()
Destroy this layer
destroy: function()
destroy: function()
Destroy this layer
destroy:function()
Destroy this map
destroy: function()
Destroy the marker.
destroy: function()
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
destroy: function()
destroy: function()
destroy: function()
Destroy projection object.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
destroy: function()
destroy: function()
destroy: function()
Deconstruct the renderer.
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
Clean up the strategy.
destroy: function()
Clean up the strategy.
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
destroy:function()
Nullify references to prevent circular references and memory leaks.
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
nullify references to prevent circular references and memory leaks
destroyAllFeatures: function()
Iterate through and call destroy() on each feature, removing it from the local array
destroyFeature: function()
Destroy temporary geometries
destroyFeature: function()
Destroy the temporary geometries
destroyFeature: function()
Destroy temporary geometries
destroyFeatures: function(features,
options)
Erase and destroy features on the layer.
destroyMarker: function()
Destroys marker.
destroyMarker: function()
destroyPopup: function()
Destroys the popup created via createPopup.
destroyPopup: function()
determineQuadrant: function(lonlat)
determineZIndex: function(node)
Determine the z-index for the current node if there isn’t one, and set the maximum value if we’ve found a new maximum.
dir: function()
Prints an interactive listing of all properties of the object.
dirxml: function()
Prints the XML source tree of an HTML or XML element.
disableZoomWheel : function()
dispatch: function(callback,
request,
transport)
dispatchException: function(exception)
If the optional onException function is set, execute it and then dispatch the call to any other listener registered for onException.
display: function(display)
Hide or show the icon
display: function(display)
Hide or show the Layer
display: function(display)
Set the display on the pane
display: function(display)
Hide or show the layer
display: function(display)
Hide or show the Layer
display: function()
display: function()
Call the display method of the appropriate parent class.
display: function(display)
Hide or show the icon
display: function(display)
Hide or show the icon
displayError: function()
Let the user know their browser isn’t supported.
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
OpenLayers.Geometry.distanceToSegment = function(point,
segment)
OpenLayers.Util.distVincenty=function(p1,
p2)
Given two objects representing points with geographic coordinates, this calculates the distance between those points on the surface of an ellipsoid.
divClick: function (evt)
Picks up on clicks directly on the zoombar div and sets the zoom level appropriately.
doneDragging: function(pixel)
Called when the drag handler is done dragging.
doubleClick: function (evt)
down: function(evt)
This method is called during the handling of the mouse down event.
down: function(evt)
Start drawing a new feature
downFeature: function(pixel)
Called when the drag handler detects a mouse-down.
dragComplete: function(vertex)
Called by the drag feature control when the feature dragging is complete.
dragPanMapObject: function(dX,
dY)
dragPanMapObject: function(dX,
dY)
dragPanMapObject: function(dX,
dY)
dragStart: function(feature,
pixel)
Called by the drag feature control with before a feature is dragged.
dragVertex: function(vertex,
pixel)
Called by the drag feature control with each drag move of a vertex.
draw: function (px)
The draw method is called when the control is ready to be displayed on the page.
draw: function()
Initialize control.
draw: function()
Creates a Drag handler, using panMap and panMapDone as callbacks.
draw: function()
calls the default draw, and then activates mouse defaults.
draw: function()
Create handler.
draw: function()
{DOMElement} A reference to the DIV DOMElement containing the switcher tabs.
draw: function()
draw: function()
{DOMElement}
draw: function()
draw: function()
draw: function()
Called when the control is added to the map.
draw: function()
calls the default draw, and then activates mouse defaults.
draw: function()
Render the control in the browser.
draw: function()
{DOMElement}
draw: function(px)
draw: function(px)
draw: function()
{DOMElement}
draw: function()
{DOMElement}
draw: function()
{DOMElement}
draw: function()
draw: function(px)
Move the div to the given pixel.
draw: function(px)
Calls draw on the icon, and returns that output.
draw: function(px,
sz)
draw: function(px)
Constructs the elements that make up the popup.
draw: function(px)
draw: function()
Clear whatever is currently in the tile, then return whether or not it should actually be re-drawn.
draw: function()
Check that a tile should be drawn, and draw it.
draw:function()
Check that a tile should be drawn, and load features for it.
drawCircle: function(node,
geometry)
Virtual function for drawing Circle Geometry.
drawCircle: function(node,
geometry,
radius)
This method is only called by the renderer itself.
drawCircle: function(node,
geometry,
radius)
Render a circle.
drawExternalGraphic: function(pt,
style)
Called to draw External graphics.
drawFeature: function(geometry)
drawFeature: function()
Render geometries on the temporary layer.
drawFeature: function()
Render features on the temporary layer.
drawFeature: function()
Render geometries on the temporary layer.
drawFeature: function(feature,
style)
Draw (or redraw) a feature on the layer.
drawFeature: function(feature,
style)
Draw the feature.
drawFeature: function(feature,
style)
Draw the feature.
drawGeometry: function(geometry,
style,
featureId)
Draw a geometry.
drawGeometry: function(geometry,
style)
Used when looping (in redraw) over the features; draws the canvas.
drawGeometry: function(geometry,
style,
featureId)
Draw the geometry, creating new nodes, setting paths, setting style, setting featureId on the node.
drawGeometryNode: function(node,
geometry,
style)
Given a node, draw a geometry on the specified layer.
Render a line.
drawLinearRing: function(geometry,
style)
This method is only called by the renderer itself.
drawLinearRing: function(node,
geometry)
Virtual function for drawing LinearRing Geometry.
drawLinearRing: function(node,
geometry)
This method is only called by the renderer itself.
drawLinearRing: function(node,
geometry)
Render a linearring
drawLineString: function(geometry,
style)
This method is only called by the renderer itself.
drawLineString: function(node,
geometry)
Virtual function for drawing LineString Geometry.
drawLineString: function(node,
geometry)
This method is only called by the renderer itself.
drawLineString: function(node,
geometry)
Render a linestring.
drawMarker: function(marker)
Calculate the pixel location for the marker, create it, and add it to the layer’s div
drawMarker: function(marker)
Calculate the pixel location for the marker, create it, and add it to the layer’s div
drawPoint: function(geometry,
style)
This method is only called by the renderer itself.
drawPoint: function(node,
geometry)
Virtual function for drawing Point Geometry.
drawPoint: function(node,
geometry)
This method is only called by the renderer itself.
drawPoint: function(node,
geometry)
Render a point
drawPolygon: function(geometry,
style)
This method is only called by the renderer itself.
drawPolygon: function(node,
geometry)
Virtual function for drawing Polygon Geometry.
drawPolygon: function(node,
geometry)
This method is only called by the renderer itself.
drawPolygon: function(node,
geometry)
Render a polygon
drawRectangle: function(node,
geometry)
Virtual function for drawing Rectangle Geometry.
drawRectangle: function(node,
geometry)
This method is only called by the renderer itself.
drawRectangle: function(node,
geometry)
Render a rectangle
drawSurface: function(node,
geometry)
Virtual function for drawing Surface Geometry.
drawSurface: function(node,
geometry)
This method is only called by the renderer itself.
drawSurface: function(node,
geometry)
drawText: function(featureId,
style,
location)
Function for drawing text labels.
drawText: function(location,
style)
This method is only called by the renderer itself.
drawText: function(featureId,
style,
location)
This method is only called by the renderer itself.
drawText: function(featureId,
style,
location)
This method is only called by the renderer itself.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions5.html b/openlayers/doc/devdocs/index/Functions5.html new file mode 100644 index 0000000..60e3756 --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions5.html @@ -0,0 +1,38 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
E
 easeIn
 easeInOut
 easeOut
 element, OpenLayers.Event
 emptyFunction, OpenLayers.Ajax
 enableZoomWheel, OpenLayers.Control.Navigation
 endBox, OpenLayers.Handler.Box
 equals
 erase
 eraseFeatures
 eraseGeometry
 error, OpenLayers.Console
 evaluate
 evaluateFilter, OpenLayers.Protocol.SQL
 exists, OpenLayers.ElementsIndexer
 extend
 extendBounds, OpenLayers.Geometry
 extractFidFromField, OpenLayers.Protocol.SQL.Gears
 extractSegment, OpenLayers.Format.GPX
F
 feature, OpenLayers.Format.GeoJSON.extract
 fetchLink, OpenLayers.Format.KML
 filter, OpenLayers.Array
 filterDelete, OpenLayers.Protocol.WFS.v1
 finalize
 findElement, OpenLayers.Event
 findLayers, OpenLayers.Control.WMSGetFeatureInfo
 findPropertyStyles, OpenLayers.Style
 fixPadding, OpenLayers.Popup
 fixYahooEventPane, OpenLayers.Layer.Yahoo
 format
 formatOutput, OpenLayers.Control.MousePosition
 forwardMercator, OpenLayers.Layer.SphericalMercator
 freehandMode, OpenLayers.Handler.Path
 freezeFeature, OpenLayers.Protocol.SQL.Gears
 fromArray, OpenLayers.Bounds
 fromSize, OpenLayers.Bounds
 fromString
 fromWKT, OpenLayers.Geometry.OpenLayers.Geometry
 fromWMSLayer, OpenLayers.Protocol.WFS
+ +
easeIn: function(t,
b,
c,
d)
easeIn: function(t,
b,
c,
d)
easeIn: function(t,
b,
c,
d)
easeInOut: function(t,
b,
c,
d)
easeInOut: function(t,
b,
c,
d)
easeInOut: function(t,
b,
c,
d)
easeOut: function(t,
b,
c,
d)
easeOut: function(t,
b,
c,
d)
easeOut: function(t,
b,
c,
d)
element: function(event)
Cross browser event element detection.
emptyFunction: function ()
enableZoomWheel : function()
endBox: function(end)
equals:function(bounds)
Test a two bounds for equivalence.
equals: function(geometry)
Determine whether another geometry is equivalent to this one.
equals: function(geom)
Determine whether another geometry is equivalent to this one.
equals:function(ll)
equals:function(px)
Determine whether one pixel is equivalent to another
equals: function(projection)
Test equality of two projection instances.
equals:function(sz)
Determine where this size is equal to another
erase: function()
Erase the underlying image element.
erase: function()
Erases any drawn elements for this marker.
eraseFeatures: function(features)
Erase features from the layer.
eraseFeatures: function(features)
This is called by the layer to erase features
eraseFeatures: function(features)
This is called by the layer to erase features; removes the feature from the list, then redraws the layer.
eraseGeometry: function(geometry)
Remove a geometry from the renderer (by id).
eraseGeometry: function(geometry)
Erase a geometry from the renderer.
eraseGeometry: function(geometry)
Erase a geometry from the renderer.
error: function()
Writes a message to the console with the visual “error” icon and color coding and a hyperlink to the line where it was called.
evaluate: function(context)
Evaluates this filter in a specific context.
evaluate: function(context)
Evaluates this filter in a specific context.
evaluate: function(feature)
evaluates this rule for a specific feature
evaluate: function(context)
Evaluates this filter in a specific context.
evaluate: function(feature)
Evaluates this filter for a specific feature.
evaluate: function(feature)
evaluates this rule for a specific feature
evaluateFilter: function(feature,
filter)
If postReadFiltering is true evaluate the filter against the feature and return the result of the evaluation, otherwise return true.
exists: function(node)
node- {DOMElement} The node to test for existence.
extend:function(object)
Extend the bounds to include the point, lonlat, or bounds specified.
OpenLayers.Util.extend = function(destination,
source)
Copy all properties of a source object to a destination object.
extendBounds: function(newBounds)
Extend the existing bounds to include the new bounds.
extractFidFromField: function(field)
extractSegment: function(segment,
segmentType)
+ + + +
Return a partial GeoJSON object representing a single feature.
fetchLink: function(href)
Fetches a URL and returns the result
filter: function(array,
callback,
caller)
Filter an array.
filterDelete: function(filter,
options)
Send a request that deletes all features by their filter.
finalize: function(cancel)
Finish the geometry and call the “done” callback.
finalize: function()
Finish the geometry and call the “done” callback.
findElement: function(event,
tagName)
findLayers: function()
Internal method to get the layers, independent of whether we are inspecting the map or using a client-provided array
findPropertyStyles: function()
Looks into all rules for this style and the defaultStyle to collect all the style hash property names containing ${...}
fixPadding: function()
To be removed in 3.0, this function merely helps us to deal with the case where the user may have set an integer value for padding, instead of an OpenLayers.Bounds object.
fixYahooEventPane: function()
The map has been centered, so the mysterious yahoo eventpane has been added.
format: function(num,
dec,
tsep,
dsep)
Formats a number for output.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
formatOutput: function(lonLat)
Override to provide custom display output
forwardMercator: function(lon,
lat)
Given a lon,lat in EPSG:4326, return a point in Spherical Mercator.
freehandMode: function(evt)
Determine whether to behave in freehand mode or not.
freezeFeature: function(feature)
OpenLayers.Bounds.fromArray = function(bbox)
Alternative constructor that builds a new OpenLayers.Bounds from an array
OpenLayers.Bounds.fromSize = function(size)
Alternative constructor that builds a new OpenLayers.Bounds from a size
OpenLayers.Bounds.fromString = function(str)
Alternative constructor that builds a new OpenLayers.Bounds from a parameter string
OpenLayers.LonLat.fromString = function(str)
Alternative constructor that builds a new OpenLayers.LonLat from a parameter string
OpenLayers.Geometry.fromWKT = function(wkt)
Generate a geometry given a Well-Known Text string.
OpenLayers.Protocol.WFS.fromWMSLayer = function(layer,
options)
Convenience function to create a WFS protocol from a WMS layer.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions6.html b/openlayers/doc/devdocs/index/Functions6.html new file mode 100644 index 0000000..476d901 --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions6.html @@ -0,0 +1,34 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 geometry, OpenLayers.Format.GeoJSON.extract
 geometryClone, OpenLayers.Handler.Point
 geometryTypeMatches, OpenLayers.Handler.Feature
 geomsToFeatures, OpenLayers.Control.Split
 GET, OpenLayers.Request
 getArea
 getArgs, Util
 getAttributeNodeNS, OpenLayers.Format.XML
 getAttributeNS, OpenLayers.Format.XML
 getBarLen, OpenLayers.Control.ScaleLine
 getBestArea, OpenLayers.Control.Measure
 getBestLength, OpenLayers.Control.Measure
 getBounds, OpenLayers.Geometry
 getBoundsFromBaseLayer, OpenLayers.Tile
 getBrowserName, Util
 getBy, OpenLayers.Map
 getCenter, OpenLayers.Map
 getCenterLonLat, OpenLayers.Bounds
 getCenterPixel, OpenLayers.Bounds
 getCentroid
 getCharacteristics, OpenLayers.Handler.Box
 getChildEl, OpenLayers.Format.XML
 getChildValue
 getCode
 getComponentsString, OpenLayers.Geometry.Collection
 getComponentString, OpenLayers.Renderer.SVG
 getContentDivPadding, OpenLayers.Popup
 getContext, OpenLayers.Rule
 getControl, OpenLayers.Map
 getControlsBy
 getControlsByClass
 getControlsByName, OpenLayers.Control.Panel
 getCornersToRound, OpenLayers.Popup.AnchoredBubble
 getCssProperty, OpenLayers.Format.SLD.v1
 getCurrentSize, OpenLayers.Map
 getDataExtent
 getDimensions, OpenLayers.Element
 getElement, Util
 getElementsByTagNameNS
 getExtent
 getFeatureById, OpenLayers.Layer.Vector
 getFeatureFromEvent
 getFeatureIdFromEvent
 getFeatureInfo, OpenLayers.Layer.ArcIMS
 getFeatureStateForFreeze, OpenLayers.Protocol.SQL.Gears
 getFilterType, OpenLayers.Format.Filter.v1
 getFullRequestString
 getGeodesicArea
 getGeodesicLength
 getGeometry
 getGeoTolerance, OpenLayers.Control.Snapping
 getGraphicFormat, OpenLayers.Format.SLD.v1
 getGridBounds, OpenLayers.Layer.Grid
 getHeader
 getHeight
 getImageFilePath, OpenLayers.Layer.MapGuide
 getImageSize, OpenLayers.Layer
 getImagesLocation, Util
 getInfoForClick, OpenLayers.Control.WMSGetFeatureInfo
 getInfoForHover, OpenLayers.Control.WMSGetFeatureInfo
 getLatitudeFromMapObjectLonLat
 getLayer, OpenLayers.Map
 getLayerFromInfo, OpenLayers.Format.WMC.v1
 getLayerIndex, OpenLayers.Map
 getLayerPxFromLonLat, OpenLayers.Map
 getLayerPxFromViewPortPx, OpenLayers.Map
 getLayersBy, OpenLayers.Map
 getLayersByClass, OpenLayers.Map
 getLayersByName, OpenLayers.Map
 getLength
 getLocalXY, OpenLayers.Renderer.Canvas
 getLongitudeFromMapObjectLonLat
 getLonLatFromLayerPx, OpenLayers.Map
 getLonLatFromOverviewPx, OpenLayers.Control.OverviewMap
 getLonLatFromPixel, OpenLayers.Map
 getLonLatFromViewPortPx
 getMapBounds, OpenLayers.Strategy.BBOX
 getMapBoundsFromRectBounds, OpenLayers.Control.OverviewMap
 getMapObjectBoundsFromOLBounds, OpenLayers.Layer.Google
 getMapObjectCenter
 getMapObjectLonLatFromLonLat
 getMapObjectLonLatFromMapObjectPixel
 getMapObjectLonLatFromOLLonLat, OpenLayers.Layer.EventPane
 getMapObjectPixelFromMapObjectLonLat
 getMapObjectPixelFromOLPixel, OpenLayers.Layer.EventPane
 getMapObjectPixelFromXY
 getMapObjectSizeFromOLSize, OpenLayers.Layer.Yahoo
 getMapObjectZoom
 getMapObjectZoomFromMapObjectBounds, OpenLayers.Layer.Google
 getMapObjectZoomFromOLZoom
 getMaxExtent, OpenLayers.Map
 getMaxResolution, OpenLayers.Map
 getMousePosition, OpenLayers.Events
 getNamespacePrefix, OpenLayers.Format.WMC.v1
 getNextEl, OpenLayers.Format.XML
 getNextElement, OpenLayers.ElementsIndexer
 getNodes
 getNodeType
 getNumLayers, OpenLayers.Map
 getNumZoomLevels, OpenLayers.Map
 getOLBoundsFromMapObjectBounds, OpenLayers.Layer.Google
 getOLLonLatFromMapObjectLonLat, OpenLayers.Layer.EventPane
 getOLPixelFromMapObjectPixel, OpenLayers.Layer.EventPane
 getOLZoomFromMapObjectZoom
 getOverviewPxFromLonLat, OpenLayers.Control.OverviewMap
 getParameters, Util
 getParameterString, Util
 getPixelFromLonLat, OpenLayers.Map
 getPosition, OpenLayers.Renderer.SVG
 getProjection, OpenLayers.Map
 getProjectionObject, OpenLayers.Map
 getRectBoundsFromMapBounds, OpenLayers.Control.OverviewMap
 getRenderedDimensions, Util
 getRenderLayerId
 getResolution
 getResolutionForZoom
 getResolutionFromScale, Util
 getResponseHeader, OpenLayers.Ajax.Response
 getSafeContentSize, OpenLayers.Popup
 getScale, OpenLayers.Map
 getScaleFromResolution, Util
 getScrollbarWidth, Util
 getShortString, OpenLayers.Renderer.SVG
 getSiblingNodesByTagCriteria, OpenLayers.Format.WMSGetFeatureInfo
 getSize
 getSketch
 getSortedSegments, OpenLayers.Geometry.LineString
 getSrsName, OpenLayers.Format.WFST.v1
 getStatus
 getStatustext, OpenLayers.Ajax.Response
 getStyle
 getSymbolizerPrefix, OpenLayers.Style
 getTags, OpenLayers.Format.OSM
 getTagText, Util
 getThisOrNextEl, OpenLayers.Format.XML
 getTileBounds
 getTilesBounds, OpenLayers.Layer.Grid
 getTileSize, OpenLayers.Map
 getTransport, OpenLayers.Ajax
 getUnits
 getUrl, OpenLayers.Layer.XYZ
 getURL
 getURLasync, OpenLayers.Layer.ArcIMS
 getUrlOrImage, OpenLayers.Layer.ArcIMS
 getVertices
 getViewPortPxFromLayerPx, OpenLayers.Map
 getViewPortPxFromLonLat
 getVisibility, OpenLayers.Layer
 getWarningHTML
 getWays, OpenLayers.Format.OSM
 getWidth, OpenLayers.Bounds
 getXFromMapObjectPixel
 getXmlNodeValue, Util
 getYFromMapObjectPixel
 getZIndex
 getZoom
 getZoomForExtent
 getZoomForResolution
 graphicRotate, OpenLayers.Renderer.VML
 group, OpenLayers.Console
 groupEnd, OpenLayers.Console
+ +
Return a GeoJSON object representing a single geometry.
geometryClone: function()
Return a clone of the relevant geometry.
geometryTypeMatches: function(feature)
Return true if the geometry type of the passed feature matches one of the geometry types in the geometryTypes array.
geomsToFeatures: function(feature,
geoms)
Create new features given a template feature and a list of geometries.
GET: function(config)
Send an HTTP GET request.
getArea: function(geometry,
units)
getArea: function()
Calculate the area of this geometry.
getArea: function()
Calculate the area of this geometry.
getArea: function()
getArea: function()
Calculated by subtracting the areas of the internal holes from the area of the outer hole.
getArea: function()
{Float} The area of the geometry
OpenLayers.Util.getArgs = function(url)
Deprecated.
getAttributeNodeNS: function(node,
uri,
name)
Get an attribute node given the namespace URI and local name.
getAttributeNS: function(node,
uri,
name)
Get an attribute value given the namespace URI and local name.
getBarLen: function(maxLen)
Given a number, round it down to the nearest 1,2,5 times a power of 10.
getBestArea: function(geometry)
Based on the displaySystem returns the area of a geometry.
getBestLength: function(geometry)
Based on the displaySystem returns the length of a geometry.
getBounds: function()
Get the bounds for this Geometry.
getBoundsFromBaseLayer: function(position)
Take the pixel locations of the corner of the tile, and pass them to the base layer and ask for the location of those pixels, so that displaying tiles over Google works fine.
OpenLayers.Util.getBrowserName = function()
{String} A string which specifies which is the current browser in which we are running.
getBy: function(array,
property,
match)
Get a list of objects given a property and a match item.
getCenter: function ()
{OpenLayers.LonLat}
getCenterLonLat:function()
{OpenLayers.LonLat} The center of the bounds in map space.
getCenterPixel:function()
{OpenLayers.Pixel} The center of the bounds in pixel space.
getCentroid: function()
Calculate the centroid of this geometry.
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
Determines offset and box model for a box.
getChildEl: function(node,
name,
uri)
Get the first child element.
getChildValue: function(node,
nsuri,
name,
def)
getChildValue: function(node,
def)
Get the textual value of the node if it exists, or return an optional default string.
getCode: function()
Get the current language code.
getCode: function()
Get the string SRS code.
getComponentsString: function()
Get a string representing the components for this collection
getContentDivPadding: function()
Glorious, oh glorious hack in order to determine the css ‘padding’ of the contentDiv.
getContext: function(feature)
Gets the context for evaluating this rule
getControl: function (id)
getControlsBy: function(property,
match)
Get a list of controls with properties matching the given criteria.
getControlsBy: function(property,
match)
Get a list of controls with properties matching the given criteria.
getControlsByClass: function(match)
Get a list of controls of a given type (CLASS_NAME).
getControlsByClass: function(match)
Get a list of controls of a given class (CLASS_NAME).
getControlsByName: function(match)
Get a list of contorls with names matching the given name.
getCornersToRound:function()
{String} The proper corners string (“tr tl bl br”) for rico to round.
getCssProperty: function(sym)
Given a symbolizer property, get the corresponding CSS property from the cssMap.
getCurrentSize: function()
{OpenLayers.Size} A new OpenLayers.Size object with the dimensions of the map div
getDataExtent: function ()
Calculates the max extent which includes all of the data for the layer.
getDataExtent: function ()
Calculates the max extent which includes all of the markers.
getDataExtent: function ()
Calculates the max extent which includes all of the features.
getDataExtent: function ()
Calculates the max extent which includes all of the layer data.
getDimensions: function(element)
OpenLayers.Util.getElement = function()
This is the old $() from prototype
OpenLayers.Ajax.getElementsByTagNameNS = function(parentnode,
nsuri,
nsprefix,
tagname)
getElementsByTagNameNS: function(node,
uri,
name)
Get a list of elements on a node given the namespace URI and local name.
getExtent: function()
{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getExtent: function ()
Calculates using px-> lonlat translation functions on tl and br corners of viewport
getExtent: function()
Get the map’s extent.
getExtent: function ()
{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getFeatureById: function(featureId)
Given a feature id, return the feature if it exists in the features array
getFeatureFromEvent: function(evt)
Given an event, return a feature if the event occurred over one.
getFeatureFromEvent: function(evt)
walk through the layers to find the feature returned by the event
getFeatureIdFromEvent: function(evt)
Returns a feature id from an event on the renderer.
getFeatureIdFromEvent: function(evt)
Returns a feature id from an event on the renderer.
getFeatureIdFromEvent: function(evt)
getFeatureInfo: function(geometry,
layer,
options)
Get feature information from ArcIMS.
getFeatureStateForFreeze: function(feature)
Get the state of the feature to store into the database.
getFilterType: function(filter)
getFullRequestString:function(newParams,
altUrl)
Combine url with layer’s params and these newParams.
getFullRequestString:function(newParams,
altUrl)
getFullRequestString on MapGuide layers is special, because we do a regular expression replace on ‘,’ in parameters to ‘+’.
getFullRequestString:function(newParams,
altUrl)
combine the layer’s url with its params and these newParams.
getFullRequestString:function(newParams,
altUrl)
combine the layer’s url with its params and these newParams.
getFullRequestString:function(newParams,
altUrl)
Combine the layer’s url with its params and these newParams.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getGeodesicLength: function(projection)
Calculate the approximate length of the geometry were it projected onto the earth.
getGeodesicLength: function(projection)
Calculate the approximate length of the geometry were it projected onto the earth.
getGeometry: function()
Return the sketch geometry.
getGeometry: function()
Return the sketch geometry.
getGeometry: function()
Return the sketch geometry.
getGeoTolerance: function(tolerance)
Calculate a tolerance in map units given a tolerance in pixels.
getGraphicFormat: function(href)
Given a href for an external graphic, try to determine the mime-type.
getGridBounds: function()
Deprecated.
getHeader: function(name)
getHeight:function()
{Float} The height of the bounds (top minus bottom).
getHeight: function(element)
getImageFilePath:function(newParams,
altUrl)
special handler to request mapguide tiles from an http exposed tilecache
getImageSize: function()
{OpenLayers.Size} The size that the image should be, taking into account gutters.
OpenLayers.Util.getImagesLocation = function()
{String} The fully formatted image location string
getInfoForClick: function(evt)
Called on click
getInfoForHover: function(evt)
Pause callback for the hover handler
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLayer: function(id)
Get a layer based on its id
getLayerFromInfo: function(layerInfo)
Create a WMS layer from a layerInfo object.
getLayerIndex: function (layer)
getLayerPxFromLonLat: function (lonlat)
getLayerPxFromViewPortPx:function(viewPortPx)
getLayersBy: function(property,
match)
Get a list of layers with properties matching the given criteria.
getLayersByClass: function(match)
Get a list of layers of a given class (CLASS_NAME).
getLayersByName: function(match)
Get a list of layers with names matching the given name.
getLength: function(geometry,
units)
getLength: function()
Calculate the length of this geometry.
getLength: function()
Calculate the length of this geometry
getLength: function()
{Float} The length of the curve
getLength: function()
{Float} The length of the geometry
getLocalXY: function(point)
transform geographic xy into pixel xy
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLonLatFromLayerPx: function (px)
getLonLatFromOverviewPx: function(overviewMapPx)
Get a map location from a pixel location
getLonLatFromPixel: function (px)
getLonLatFromViewPortPx: function (viewPortPx)
getLonLatFromViewPortPx: function (viewPortPx)
Get a map location from a pixel location
getLonLatFromViewPortPx: function (viewPortPx)
getMapBounds: function()
Get the map bounds expressed in the same projection as this layer.
getMapBoundsFromRectBounds: function(pxBounds)
Get the map bounds from the rect bounds.
getMapObjectBoundsFromOLBounds: function(olBounds)
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromOLLonLat: function(olLonLat)
Get a 3rd party map location from an OL map location.
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromOLPixel: function(olPixel)
Get a 3rd party pixel location from an OL pixel location
getMapObjectPixelFromXY: function(x,
y)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectSizeFromOLSize: function(olSize)
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoomFromMapObjectBounds: function(moBounds)
getMapObjectZoomFromOLZoom: function(olZoom)
Get the map object zoom level from the OL zoom level
getMapObjectZoomFromOLZoom: function(olZoom)
getMaxExtent: function (options)
getMaxResolution: function()
{String} The Map’s Maximum Resolution
getMousePosition: function (evt)
getNamespacePrefix: function(uri)
Get the namespace prefix for a given uri from the namespaces object.
getNextEl: function(node,
name,
uri)
Get the next sibling element.
getNextElement: function(index)
Get the next element in the order stack.
getNodes: function(doc)
Return the node items from a doc.
OpenLayers.Util.getNodes=function(p,
tagName)
These could/should be made namespace aware?
getNodeType: function(geometry,
style)
This function is in charge of asking the specific renderer which type of node to create for the given geometry and style.
getNodeType: function(geometry,
style)
getNodeType: function(geometry,
style)
Get the node type for a geometry and style
getNumLayers: function ()
{Int} The number of layers attached to the map.
getNumZoomLevels: function()
{Integer} The total number of zoom levels that can be displayed by the current baseLayer.
getOLBoundsFromMapObjectBounds: function(moBounds)
getOLLonLatFromMapObjectLonLat: function(moLonLat)
Get an OL style map location from a 3rd party style map location
getOLPixelFromMapObjectPixel: function(moPixel)
Get an OL pixel location from a 3rd party pixel location.
getOLZoomFromMapObjectZoom: function(moZoom)
Get the OL zoom index from the map object zoom level
getOLZoomFromMapObjectZoom: function(moZoom)
getOverviewPxFromLonLat: function(lonlat)
Get a pixel location from a map location
OpenLayers.Util.getParameters = function(url)
Parse the parameters from a URL or from the current page itself into a JavaScript Object.
OpenLayers.Util.getParameterString = function(params)
getPixelFromLonLat: function (lonlat)
Returns a pixel location given a map location.
getPosition: function(node)
Finds the position of an svg node.
getProjection: function()
This method returns a string representing the projection.
getProjectionObject: function()
Returns the projection obect from the baselayer.
getRectBoundsFromMapBounds: function(lonLatBounds)
Get the rect bounds from the map bounds.
OpenLayers.Util.getRenderedDimensions = function(contentHTML,
size,
options)
Renders the contentHTML offscreen to determine actual dimensions for popup sizing.
getRenderLayerId: function()
Gets the layer that this renderer’s output appears on.
getRenderLayerId: function()
Gets the layer that this renderer’s output appears on.
getResolution: function()
{Float} The currently selected resolution of the map, taken from the resolutions array, indexed by current zoom level.
getResolution: function()
Get the current map resolution
getResolution: function ()
{Float} The current resolution of the map.
getResolution: function()
Uses cached copy of resolution if available to minimize computing
getResolutionForZoom: function(zoom)
getResolutionForZoom: function(zoom)
OpenLayers.Util.getResolutionFromScale = function (scale,
units)
getResponseHeader: function(name)
getSafeContentSize: function(size)
getScale: function ()
{Float} The current scale denominator of the map.
OpenLayers.Util.getScaleFromResolution = function (resolution,
units)
OpenLayers.Util.getScrollbarWidth = function()
This function has been modified by the OpenLayers from the original version, written by Matthew Eernisse and released under the Apache 2 license here:
getShortString: function(point)
getSiblingNodesByTagCriteria: function(node,
criteria)
Recursively searches passed xml node and all it’s descendant levels for nodes whose tagName contains the passed search string.
getSize:function()
{OpenLayers.Size} The size of the box.
getSize: function ()
{OpenLayers.Size} An OpenLayers.Size object that represents the size, in pixels, of the div into which OpenLayers has been loaded.
getSketch: function()
Return the sketch feature.
getSketch: function()
Return the sketch feature.
getSortedSegments: function()
{Array} An array of segment objects.
getSrsName: function(feature,
options)
getStatus: function()
getStyle: function(element,
style)
getStyle: function(styleUrl,
options)
Retrieves a style from a style hash using styleUrl as the key If the styleUrl doesn’t exist yet, we try to fetch it Internet
getSymbolizerPrefix: function(geometry)
Returns the correct symbolizer prefix according to the geometry type of the passed geometry
getTags: function(dom_node,
interesting_tags)
Return the tags list attached to a specific DOM element.
OpenLayers.Util.getTagText = function (parent,
item,
index)
getThisOrNextEl: function(node,
name,
uri)
Return this node or the next element node.
getTileBounds: function(viewPortPx)
Returns The tile bounds for a layer given a pixel location.
getTileBounds: function(viewPortPx)
Returns The tile bounds for a layer given a pixel location.
getTilesBounds: function()
Return the bounds of the tile grid.
getTileSize: function()
Get the tile size for the map
getTransport: function()
{Object} Transport mechanism for whichever browser we’re in, or false if none available.
getUnits: function ()
{Float} The current units of the map.
getUnits: function()
Get the units string for the projection -- returns null if proj4js is not available.
getURL: function (bounds)
Return an image url this layer.
getURL: function(bounds)
Return an image url this layer.
getURL: function(bounds)
The url we return is always the same (the image itself never changes) so we can ignore the bounds parameter (it will always be the same, anyways)
getURL: function (bounds)
getURL: function (bounds)
getURL: function (bounds)
Return a query string for this layer
getURL: function (bounds)
Return a query string for this layer
getURL: function(bounds)
getURL: function (bounds)
getURL: function (bounds)
Return a GetMap query string for this layer
getURL: function (bounds)
getURLasync: function(bounds,
scope,
prop,
callback)
Get an image url this layer asynchronously, and execute a callback when the image url is generated.
getUrlOrImage: function(output)
Extract a url or image from the ArcXML image output.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getViewPortPxFromLayerPx:function(layerPx)
getViewPortPxFromLonLat: function (lonlat)
Returns a pixel location given a map location.
getViewPortPxFromLonLat: function (lonlat)
Get a pixel location from a map location
getViewPortPxFromLonLat: function (lonlat)
getVisibility: function()
{Boolean} The layer should be displayed (if in range).
getWarningHTML:function()
To be implemented by subclasses.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWays: function(doc)
Return the way items from a doc.
getWidth:function()
{Float} The width of the bounds
getXFromMapObjectPixel: function(moPixel)
getXFromMapObjectPixel: function(moPixel)
getXFromMapObjectPixel: function(moPixel)
getXFromMapObjectPixel: function(moPixel)
OpenLayers.Util.getXmlNodeValue = function(node)
getYFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getZIndex: function(node)
Get the z-index value for the current node from the node data itself.
getZIndex: function ()
{Integer} the z-index of this layer
getZoom: function ()
Convert map zoom to WW zoom.
getZoom: function ()
{Integer}
getZoomForExtent: function(extent,
closest)
getZoomForExtent: function (bounds,
closest)
getZoomForResolution: function(resolution,
closest)
getZoomForResolution: function(resolution)
Get the zoom level for a given resolution
getZoomForResolution: function(resolution,
closest)
graphicRotate: function(node,
xOffset,
yOffset)
If a point is to be styled with externalGraphic and rotation, VML fills cannot be used to display the graphic, because rotation of graphic fills is not supported by the VML implementation of Internet Explorer.
group: function()
Writes a message to the console and opens a nested block to indent all future messages sent to the console.
groupEnd: function()
Closes the most recently opened block created by a call to OpenLayers.Console.group
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions7.html b/openlayers/doc/devdocs/index/Functions7.html new file mode 100644 index 0000000..be8962e --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions7.html @@ -0,0 +1,42 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
H
 handle, OpenLayers.Handler.Feature
 handleBrowserEvent, OpenLayers.Events
 handleChangeLayer, OpenLayers.Layer.Vector.RootContainer
 handleCommit, OpenLayers.Protocol.WFS.v1
 handleCreate, OpenLayers.Protocol.HTTP
 handleDelete, OpenLayers.Protocol.HTTP
 handleKeyEvent, OpenLayers.handler.Keyboard
 handleKeypress, OpenLayers.Control.ModifyFeature
 handleRead
 handleResponse
 handleUpdate, OpenLayers.Protocol.HTTP
 hasAttributeNS, OpenLayers.Format.XML
 hasClass, OpenLayers.Element
 HEAD, OpenLayers.Request
 hide
 highlight, OpenLayers.Control.SelectFeature
 hoverSelect, OpenLayers.Control.GetFeature
I
 i18n, OpenLayers.Lang.OpenLayers
 ignoreEvent, OpenLayers.Control.LayerSwitcher
 importSymbol
 indexOf, Util
 inflate, OpenLayers.Marker
 info, OpenLayers.Console
 inherit
 initGriddedTiles, OpenLayers.Layer.Grid
 initialize, OpenLayers.ElementsIndexer
 initializeDatabase, OpenLayers.Protocol.SQL.Gears
 initImgDiv, OpenLayers.Tile.Image
 initMercatorParameters, OpenLayers.Layer.SphericalMercator
 initResolutions
 initSingleTile, OpenLayers.Layer.Grid
 initStack, OpenLayers.Control.NavigationHistory
 insert
 intersects
 intersectsBounds, OpenLayers.Bounds
 invalidBounds, OpenLayers.Strategy.BBOX
 inValidRange, OpenLayers.Renderer.SVG
 inverseMercator, OpenLayers.Layer.SphericalMercator
 isComplexSymbol, OpenLayers.Renderer.Elements
 isDrawn
 isEligible, OpenLayers.Control.Split
 isEquivalentUrl, Util
 iserror, OpenLayers.Format.ArcXML
 isLeftClick, OpenLayers.Event
 isNumeric, OpenLayers.String.OpenLayers.String
 isRightClick, OpenLayers.Event
 isSimpleContent, OpenLayers.Format.XML
 issue, OpenLayers.Request
 isSuitableOverview, OpenLayers.Control.OverviewMap
 isValidLonLat, OpenLayers.Map
 isValidType, OpenLayers.Format.GeoJSON
 isValidZoomLevel, OpenLayers.Map
 isWayArea, OpenLayers.Format.OSM
L
 leaveMode, OpenLayers.Control.MouseToolbar
 limitSigDigs
 linearring
 linestring
 load, OpenLayers.Strategy.Fixed
 loadContents, OpenLayers.Control.LayerSwitcher
 loadFeaturesForRegion, OpenLayers.Tile.WFS
 loadGML, OpenLayers.Layer.GML
 loadMapObject
 loadRSS, OpenLayers.Layer.GeoRSS
 loadText, OpenLayers.Layer.Text
 loadURL
 loadWarningMessage, OpenLayers.Layer.EventPane
 log, OpenLayers.Console
 lookupNamespaceURI
+ +
handle: function(evt)
handleBrowserEvent: function (evt)
Basically just a wrapper to the triggerEvent() function, but takes care to set a property ‘xy’ on the event with the current mouse position.
handleChangeLayer: function(evt)
Event handler for the map’s changelayer event.
handleCommit: function(response,
options)
Called when the commit request returns.
handleCreate: function(resp,
options)
Called the the request issued by create is complete.
handleDelete: function(resp,
options)
Called the the request issued by delete is complete.
handleKeyEvent: function (evt)
handleKeypress: function(evt)
Called by the feature handler on keypress.
handleRead: function(resp,
options)
Individual callbacks are created for read, create and update, should a subclass need to override each one separately.
handleRead: function(response,
options)
Deal with response from the read request.
handleResponse: function(xy,
request)
Handler for the GetFeatureInfo response.
handleResponse: function(resp,
options)
Called by CRUD specific handlers.
handleUpdate: function(resp,
options)
Called the the request issued by update is complete.
hasAttributeNS: function(node,
uri,
name)
Determine whether a node has a particular attribute matching the given name and namespace.
hasClass: function(element,
name)
Tests if an element has the given CSS class name.
HEAD: function(config)
Send an HTTP HEAD request.
hide: function()
Hide element(s) passed in
hide: function()
Makes the popup invisible.
hide: function()
Hide the tile.
hide: function()
Hide the tile by hiding its frame.
highlight: function(feature)
Redraw feature with the select style.
hoverSelect: function(feature)
Sets/unsets the hoverFeature
+ + + +
Alias for OpenLayers.Lang.translate.
ignoreEvent: function(evt)
importSymbol: function (graphicName)
add a new symbol definition from the rendererer’s symbol hash
importSymbol: function (graphicName)
add a new symbol definition from the rendererer’s symbol hash
OpenLayers.Util.indexOf = function(array,
obj)
Seems to exist already in FF, but not in MOZ.
inflate: function(inflate)
Englarges the markers icon by the specified ratio.
info: function()
Writes a message to the console with the visual “info” icon and color coding and a hyperlink to the line where it was called.
OpenLayers.Class.inherit = function ()
Deprecated.
initGriddedTiles:function(bounds)
initialize: function(yOrdering)
Create a new indexer with
initializeDatabase: function()
initImgDiv: function()
Creates the imgDiv property on the tile.
initMercatorParameters: function()
Set up the mercator parameters on the layer: resolutions, projection, units.
initResolutions: function()
This method’s responsibility is to set up the ‘resolutions’ array for the layer -- this array is what the layer will use to interface between the zoom levels of the map and the resolution display of the layer.
initResolutions: function()
Populate the resolutions array
initSingleTile: function(bounds)
initStack: function()
Called after the control is activated if the previous history stack is empty.
insert: function(newNode)
Insert a new node into the indexer.
insert: function(feature)
Takes a feature, and generates a WFS-T Transaction “Insert”
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersects: function(geometry)
Test for instersection between two geometries.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersectsBounds:function(bounds,
inclusive)
Determine whether the target bounds intersects this bounds.
invalidBounds: function(mapBounds)
Determine whether the previously requested set of features is invalid.
inValidRange: function(x,
y,
xyOnly)
See #669 for more information
inverseMercator: function(x,
y)
Given a x,y in Spherical Mercator, return a point in EPSG:4326.
isComplexSymbol: function(graphicName)
Determines if a symbol cannot be rendered using drawCircle
isDrawn: function()
{Boolean} Whether or not the icon is drawn.
isDrawn: function()
{Boolean} Whether or not the marker is drawn.
isEligible: function(target)
Test if a target feature is eligible for splitting.
OpenLayers.Util.isEquivalentUrl = function(url1,
url2,
options)
Test two URLs for equivalence.
iserror: function(data)
Check to see if the response from the server was an error.
isLeftClick: function(event)
Determine whether event was caused by a left click.
Determine whether a string contains only a numeric value.
isRightClick: function(event)
Determine whether event was caused by a right mouse click.
isSimpleContent: function(node)
Test if the given node has only simple content (i.e.
issue: function(config)
Create a new XMLHttpRequest object, open it, set any headers, bind a callback to done state, and send any data.
isSuitableOverview: function()
Determines if the overview map is suitable given the extent and resolution of the main map.
isValidLonLat: function(lonlat)
isValidType: function(obj,
type)
Check if a GeoJSON object is a valid representative of the given type.
isValidZoomLevel: function(zoomLevel)
isWayArea: function(way)
Given a way object from getWays, check whether the tags and geometry indicate something is an area.
+ + + +
leaveMode: function()
limitSigDigs: function(num,
sig)
Limit the number of significant digits on a float.
Deprecated.
Given an OpenLayers linearring geometry, create a GML linearring.
Given an OpenLayers linearring geometry, create a KML linearring.
Return an array of coordinate arrays from a linestring.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
Given an OpenLayers linestring geometry, create a GML linestring.
Given a GML node representing a linestring geometry, create an OpenLayers linestring geometry.
Given an OpenLayers linestring geometry, create a KML linestring.
Given a KML node representing a linestring geometry, create an OpenLayers linestring geometry.
load: function(options)
Tells protocol to load data and unhooks the visibilitychanged event
loadContents: function()
Set up the labels and divs for the control
loadFeaturesForRegion:function(success,
failure)
Abort any pending requests and issue another request for data.
loadGML: function()
loadMapObject:function()
Load the GMap and register appropriate event listeners.
loadMapObject:function()
loadMapObject:function()
loadMapObject:function()
loadRSS: function()
Start the load of the RSS data.
loadText: function()
Start the load of the Text data.
OpenLayers.loadURL = function(uri,
params,
caller,
onComplete,
onFailure)
Background load a document.
loadWarningMessage:function()
If we can’t load the map lib, then display an error message to the user and tell them where to go for help.
log: function()
Log an object in the console.
lookupNamespaceURI: function(node,
prefix)
Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions8.html b/openlayers/doc/devdocs/index/Functions8.html new file mode 100644 index 0000000..e7bcaff --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions8.html @@ -0,0 +1,34 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
M
 mapDivClick, OpenLayers.Control.OverviewMap
 mapToContext, OpenLayers.Format.WMC
 markerClick, OpenLayers.Layer.GeoRSS
 maximizeControl
 measure, OpenLayers.Control.Measure
 measureComplete, OpenLayers.Control.Measure
 measurePartial, OpenLayers.Control.Measure
 merge
 mergeContextToMap, OpenLayers.Format.WMC
 mergeNewParams
 minimizeControl
 modifyAlphaImageDiv, Util
 modifyDOMElement, Util
 modifyFeature
 modifyGeometry, OpenLayers.Handler.RegularPolygon
 mousedown
 mouseDown, OpenLayers.Control.LayerSwitcher
 mouseLeft, Util
 mousemove
 mouseout
 mouseup
 mouseUp, OpenLayers.Control.LayerSwitcher
 move
 moveBox, OpenLayers.Handler.Box
 moveFeature, OpenLayers.Control.DragFeature
 moveGriddedTiles, OpenLayers.Layer.Grid
 moveLayerBack, OpenLayers.Handler.Feature
 moveLayerToTop, OpenLayers.Handler.Feature
 moveRoot
 moveTo
 moveZoomBar, OpenLayers.Control.PanZoomBar
 multigeometry, OpenLayers.Format.KML.parseGeometry
 multilinestring
 multipleSelect, OpenLayers.Control.SelectFeature
 multipoint
 multipolygon
+ +
mapDivClick: function(evt)
Handle browser events
mapToContext: function(map)
Create a context object given a map.
markerClick: function(evt)
maximizeControl: function(e)
Set up the labels and divs for the control
maximizeControl: function(e)
Unhide the control.
measure: function(geometry,
eventType)
measureComplete: function(geometry)
Called when the measurement sketch is done.
measurePartial: function(point,
geometry)
Called each time a new point is added to the measurement sketch.
merge: function(resp)
Given a list of features, determine which ones to add to the layer.
merge: function(resp)
Add all features to the layer.
mergeContextToMap: function(context,
map)
Add layers from a context object to a map.
mergeNewParams:function(newParams)
Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
mergeNewParams:function(newParams)
mergeNewParams:function(newParams)
Modify parameters for the layer and redraw.
mergeNewParams:function(newParams)
Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
minimizeControl: function(e)
Hide all the contents of the control, shrink the size, add the maximize icon
minimizeControl: function(e)
Hide all the contents of the control, shrink the size, add the maximize icon
OpenLayers.Util.modifyAlphaImageDiv = function(div,
id,
px,
sz,
imgURL,
position,
border,
sizing,
opacity)
OpenLayers.Util.modifyDOMElement = function(element,
id,
px,
sz,
position,
border,
overflow,
opacity)
Modifies many properties of a DOM element all at once.
modifyFeature: function(pixel)
Modify the existing geometry given the new point
modifyFeature: function(pixel)
Modify the existing geometry given a pixel location.
modifyGeometry: function()
Modify the polygon geometry in place.
Handle mousedown.
mousedown: function (evt)
Handle mousedown events
mousedown: function(evt)
Handle mouse down.
mousedown: function(evt)
Handle mouse down.
mousedown: function(evt)
Handle mouse down.
mouseDown: function(evt)
Register a local ‘mouseDown’ flag so that we’ll know whether or not to ignore a mouseUp event
OpenLayers.Util.mouseLeft = function (evt,
div)
mousemove: function (evt)
Handle mousemove events
mousemove: function(evt)
Handle mouse moves.
mousemove: function(evt)
Called when the mouse moves on the map.
mousemove: function (evt)
Update the stored mousePosition on every move.
mousemove: function (evt)
Handle mouse move.
mousemove: function (evt)
Handle mouse move.
mouseout: function (evt)
Handle mouseout events
mouseout: function(evt)
Called when the mouse goes out of the map.
mouseup: function (evt)
Handle mouseup.
mouseup: function (evt)
Handle mouseup events
mouseup: function(evt)
Handle mouse up.
mouseup: function (evt)
Handle mouse up.
mouseup: function (evt)
Handle mouse up.
mouseUp: function(evt)
If the ‘isMouseDown’ flag has been set, that means that the drag was started from within the LayerSwitcher control, and thus we can ignore the mouseup.
move: function(location)
Moves the feature and redraws it at its new location
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
move: function(evt)
This method is called during the handling of the mouse move event.
move: function(evt)
Respond to drag move events
moveBox: function (xy)
moveFeature: function(pixel)
Called when the drag handler detects a mouse-move.
moveGriddedTiles: function(bounds)
moveLayerBack: function()
Moves the layer back to the position determined by the map’s layers array.
moveLayerToTop: function()
Moves the layer for this handler to the top, so mouse events can reach it.
moveRoot: function(renderer)
moves this renderer’s root to a (different) renderer.
moveRoot: function(renderer)
moves this renderer’s root to a different renderer.
moveRoot: function(renderer)
moves this renderer’s root to a different renderer.
moveTo: function (px)
Sets the left and top style attributes to the passed in pixel coordinates.
moveTo: function (px)
move icon to passed in px.
moveTo:function(bounds,
zoomChanged,
dragging)
moveTo:function(bounds,
zoomChanged,
dragging)
Handle calls to move the layer.
moveTo:function(bounds,
zoomChanged,
minor)
If layer is visible and RSS has not been loaded, load RSS.
moveTo:function(bounds,
zoomChanged,
minor)
If layer is visible and GML has not been loaded, load GML, then load GML and call OpenLayers.Layer.Vector.moveTo() to redraw at the new location.
moveTo:function(bounds,
zoomChanged,
dragging)
This function is called whenever the map is moved.
moveTo:function(bounds,
zoomChanged,
dragging)
Create the tile for the image or resize it for the new resolution
moveTo:function(bounds,
zoomChanged,
dragging)
moveTo:function(bounds,
zoomChanged,
minor)
If layer is visible and Text has not been loaded, load Text.
moveTo: function(bounds,
zoomChanged,
dragging)
Reset the vector layer’s div so that it once again is lined up with the map.
moveTo:function(bounds,
zoomChanged,
dragging)
moveTo: function(lonlat,
zoom,
options)
moveTo: function (px)
Move the marker to the new location.
moveTo: function(px)
moveTo: function(px)
Since the popup is moving to a new px, it might need also to be moved relative to where the marker is.
moveTo: function (bounds,
position,
redraw)
Reposition the tile.
moveZoomBar:function()
Change the location of the slider to match the current zoom level.
Given a KML node representing a multigeometry, create an OpenLayers geometry collection.
Return an array of linestring arrays from a linestring.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
Given an OpenLayers multilinestring geometry, create a GML multilinestring.
Given a GML node representing a multilinestring geometry, create an OpenLayers multilinestring geometry.
Given an OpenLayers multilinestring geometry, create a KML GeometryCollection.
multipleSelect: function()
Allow for multiple selected features based on multiple property and multipleKey event modifier.
Return an array of point coordinates from a multipoint.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
Given an OpenLayers multipoint geometry, create a GML multipoint.
Given a GML node representing a multipoint geometry, create an OpenLayers multipoint geometry.
Given an OpenLayers multipoint geometry, create a KML GeometryCollection.
Return an array of polygon arrays from a multipolygon.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
Given an OpenLayers multipolygon geometry, create a GML multipolygon.
Given a GML node representing a multipolygon geometry, create an OpenLayers multipolygon geometry.
Given an OpenLayers multipolygon geometry, create a KML GeometryCollection.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Functions9.html b/openlayers/doc/devdocs/index/Functions9.html new file mode 100644 index 0000000..471e02e --- /dev/null +++ b/openlayers/doc/devdocs/index/Functions9.html @@ -0,0 +1,38 @@ + + +Function Index - OpenLayers + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
N
 nextTrigger, OpenLayers.Control.NavigationHistory
 nodeFactory, OpenLayers.Renderer.Elements
 nodeTypeCompare
 normalizeScale, Util
 nullHandler, OpenLayers
 number, OpenLayers.Format.JSON.serialize
 numericIf, OpenLayers.String
O
 object, OpenLayers.Format.JSON.serialize
 observe, OpenLayers.Event
 offset, OpenLayers.Pixel
 on, OpenLayers.Events
 onclick, OpenLayers.Popup
 onClick, OpenLayers.Control.Panel
 onCommit, OpenLayers.Strategy.Save
 onComplete, OpenLayers.Ajax.Responders
 onCreate, OpenLayers.Ajax.Responders
 ondblclick, OpenLayers.Popup
 onFeatureInsert, OpenLayers.Layer.Vector
 onImageLoad, Util
 onImageLoadError, Util
 onLayerClick, OpenLayers.Control.LayerSwitcher
 onMapResize
 onmousedown, OpenLayers.Popup
 onmousemove, OpenLayers.Popup
 onmouseout, OpenLayers.Popup
 onmouseup, OpenLayers.Popup
 onNextChange, OpenLayers.Control.NavigationHistory
 onPreviousChange, OpenLayers.Control.NavigationHistory
 onScreen
 onSketchComplete, OpenLayers.Control.Split
 onSketchModified, OpenLayers.Control.Snapping
 onStateChange, OpenLayers.Ajax.Request
 onVertexModified, OpenLayers.Control.Snapping
 onWheelEvent
 oppositeQuadrant, OpenLayers.Bounds
 OPTIONS, OpenLayers.Request
 out
 outFeature
 overFeature
+ +
nextTrigger: function()
Restore the next state.
nodeFactory: function(id,
type)
Create new node of the specified type, with the (optional) specified id.
nodeTypeCompare: function(node,
type)
nodeTypeCompare: function(node,
type)
nodeTypeCompare: function(node,
type)
Determine whether a node is of a given type
OpenLayers.Util.normalizeScale = function (scale)
OpenLayers.nullHandler = function(request)
@param {} request
Transform a number into a JSON string.
numericIf: function(value)
Converts a string that appears to be a numeric value into a number.
+ + + +
Transform an object into a JSON string.
observe: function(elementParam,
name,
observer,
useCapture)
offset:function(px)
Parameters px - {OpenLayers.Pixel}
on: function(object)
Convenience method for registering listeners with a common scope.
onclick: function (evt)
Ignore clicks, but allowing default browser handling
onClick: function (ctrl,
evt)
onCommit: function(response)
Called after protocol commit.
onComplete: function()
onCreate: function()
ondblclick: function (evt)
Ignore double-clicks, but allowing default browser handling
onFeatureInsert: function(feature)
method called after a feature is inserted.
OpenLayers.Util.onImageLoad = function()
Bound to image load events.
OpenLayers.Util.onImageLoadError = function()
onLayerClick: function(e)
Need to update the map accordingly whenever user clicks in either of the layers.
onMapResize: function()
This function can be implemented by subclasses
onMapResize: function()
onMapResize: function()
For singleTile layers, this will set a new tile size according to the dimensions of the map pane.
onMapResize: function()
Notify the renderer of the change in size.
onMapResize: function()
Call the onMapResize method of the appropriate parent class.
onMapResize: function()
onmousedown: function (evt)
When mouse goes down within the popup, make a note of it locally, and then do not propagate the mousedown (but do so safely so that user can select text inside)
onmousemove: function (evt)
If the drag was started within the popup, then do not propagate the mousemove (but do so safely so that user can select text inside)
onmouseout: function (evt)
When mouse goes out of the popup set the flag to false so that if they let go and then drag back in, we won’t be confused.
onmouseup: function (evt)
When mouse comes up within the popup, after going down in it, reset the flag, and then (once again) do not propagate the event, but do so safely so that user can select text inside
onNextChange: function(state,
length)
Called when the next history stack changes.
onPreviousChange: function(state,
length)
Called when the previous history stack changes.
onScreen:function()
{Boolean} Whether or not the feature is currently visible on screen (based on its ‘lonlat’ property)
onScreen:function(boundsOnly)
Determine whether the feature is within the map viewport.
onScreen:function()
{Boolean} Whether or not the marker is currently visible on screen.
onScreen:function()
{Boolean} Whether or not the marker is currently visible on screen.
onSketchComplete: function(event)
Registered as a listener for the sketchcomplete event on the editable layer.
onSketchModified: function(event)
Registered as a listener for the sketchmodified event on the editable layer.
onStateChange: function()
onVertexModified: function(event)
Registered as a listener for the vertexmodified event on the editable layer.
onWheelEvent: function(e)
Catch the wheel event and handle it xbrowserly
onWheelEvent: function(e)
Catch the wheel event and handle it xbrowserly
OpenLayers.Bounds.oppositeQuadrant = function(quadrant)
Get the opposite quadrant for a given quadrant string.
OPTIONS: function(config)
Send an HTTP OPTIONS request.
out: function(evt)
This method is called during the handling of the mouse out event.
out: function(evt)
Finish drawing the feature.
outFeature: function(feature)
Called when the feature handler detects a mouse-out on a feature.
outFeature: function(feature)
Called on out of a selected feature.
overFeature: function(feature)
Called when the feature handler detects a mouse-over on a feature.
overFeature: function(feature)
Called on over a feature.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General.html b/openlayers/doc/devdocs/index/General.html new file mode 100644 index 0000000..375985b --- /dev/null +++ b/openlayers/doc/devdocs/index/General.html @@ -0,0 +1,38 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
$#!
 _addButton
 _addZoomBar, OpenLayers.Control.PanZoomBar
 _complete, OpenLayers.Ajax.Request
 _getNodes, Util
 _getScriptLocation, OpenLayers
 _removeButton, OpenLayers.Control.PanZoom
 _removeElementObservers, OpenLayers.Event
 _removeZoomBar, OpenLayers.Control.PanZoomBar
 _scriptName, OpenLayers
A
 abort
 activate
 activateControl, OpenLayers.Control.Panel
 activateOnDraw, OpenLayers.Control.NavigationHistory
 active
 activeColor, OpenLayers.Control.LayerSwitcher
 activeRequestCount, OpenLayers.Ajax
 add
 addClass, OpenLayers.Element
 addCloseBox, OpenLayers.Popup
 addComponent
 addComponents, OpenLayers.Geometry.Collection
 addContainerPxFunction, OpenLayers.Layer.Google
 addControl, OpenLayers.Map
 addControls, OpenLayers.Control.Panel
 addControlToMap, OpenLayers.Map
 addCoordSys, OpenLayers.Format.ArcXML
 addEventType, OpenLayers.Events
 addFeatures, OpenLayers.Layer.Vector
 addImageSize, OpenLayers.Format.ArcXML
 addLayer, OpenLayers.Map
 addLayers
 addMarker, OpenLayers.Layer.Markers
 addNodes, OpenLayers.Layer.PointTrack
 addOptions, OpenLayers.Layer
 addPoint
 addPopup, OpenLayers.Map
 addPropertyStyles, OpenLayers.Style
 addResults, OpenLayers.Tile.WFS
 addRules, OpenLayers.Style
 addTarget, OpenLayers.Control.Snapping
 addTargetLayer, OpenLayers.Control.Snapping
 addTile
 addTileMonitoringHooks
 addToCluster, OpenLayers.Strategy.Cluster
 addTransform, OpenLayers.Projection
 addUniqueValueRules, OpenLayers.StyleMap
 adjustBounds, OpenLayers.Layer
 afterAdd
 afterFeatureModified, OpenLayers.Control.Split
 Ajax.js
 allOverlays, OpenLayers.Map
 allowSelection, OpenLayers.Control
 alpha, OpenLayers.Layer
 alphaHack, Util
 alphaHackNeeded, Util
 alwaysInRange, OpenLayers.Layer
 alwaysZoom, OpenLayers.Control.ZoomBox
 Anchored, OpenLayers.Popup.Anchored.OpenLayers.Popup
 AnchoredBubble, OpenLayers.Popup.AnchoredBubble.OpenLayers.Popup
 angle, OpenLayers.Handler.RegularPolygon
 applyDefaults, Util
 applySymbolizer, OpenLayers.Style
 ArcGIS93Rest, OpenLayers.Layer.ArcGIS93Rest.OpenLayers.Layer
 ArcIMS, OpenLayers.Layer.ArcIMS.OpenLayers.Layer
 ArcXML, OpenLayers.Format.ArcXML.OpenLayers.Format
 areaTags, OpenLayers.Format.OSM
 ArgParser, OpenLayers.Control.ArgParser.OpenLayers.Control
 argParserClass, OpenLayers.Control.Permalink
 array, OpenLayers.Format.JSON.serialize
 ascending, OpenLayers.Control.LayerSwitcher
 aspectRatio, OpenLayers.Layer.Image
 assert, OpenLayers.Console
 assignRenderer, OpenLayers.Layer.Vector
 async, OpenLayers.Layer.ArcIMS
 atPoint
 attachToElement, OpenLayers.Events
 attributes, OpenLayers.Feature.Vector
 attribution, OpenLayers.Layer
 Attribution, OpenLayers.Control.Attribution.OpenLayers.Control
 auto, OpenLayers.Strategy.Save
 autoActivate, OpenLayers.Strategy
 autoDestroy
 autoPan, OpenLayers.Control.OverviewMap
 autoSize
+ +
_addButton:function(id,
img,
activeImg,
xy,
sz,
title)
_addButton:function(id,
img,
xy,
sz)
_addZoomBar:function(centered)
{Boolean}
OpenLayers.Util._getNodes=function(nodes,
tagName)
_getScriptLocation: function ()
Return the path to this script.
_removeButton: function(btn)
_removeElementObservers: function(elementObservers)
_removeZoomBar: function()
{String} Relative path of this script.
+ + + +
abort: function(response)
Abort an ongoing request.
abort: function(response)
Abort an ongoing request, the response object passed to this method must come from this HTTP protocol (as a result of a create, read, update, delete or commit operation).
abort: function(response)
Abort an ongoing request, the response object passed to this method must come from this protocol (as a result of a read, or commit operation).
activate: function ()
Explicitly activates a control and it’s associated handler if one has been set.
activate: function()
Activate the control and the feature handler.
activate: function ()
Activates the control.
activate: function()
Activate the control.
activate: function()
activate: function()
Activate the control.
activate: function()
activate: function ()
Activates the control.
activate: function()
Activate the control.
activate: function()
Activate the control.
activate: function ()
Activates the control.
activate: function()
Turn on the handler.
activate: function ()
activate: function()
Activate the handler.
activate: function()
Turn on the handler.
activate: function()
activate: function (evt)
activate: function()
turn on the handler
activate: function()
Turn on the handler.
activate: function()
Activate the strategy.
activate: function()
Set up strategy with regard to reading new batches of remote data.
activate: function()
Activate the strategy.
activate: function()
Activate the strategy: load data or add listener to load when visible
activate: function()
Activate the strategy.
activate: function()
Activate the strategy.
activateControl: function (control)
{Boolean} Activate the control when it is first added to the map.
{Boolean} The control is active.
{Boolean}
{Boolean} The control is active.
{String}
{Integer}
add:function(x,
y)
add:function(lon,
lat)
add:function(x,
y)
addClass: function(element,
name)
Add a CSS class name to an element.
addCloseBox: function(callback)
addComponent: function(component,
index)
Add a new component (geometry) to the collection.
addComponent: function(point,
index)
Adds a point to geometry components.
addComponents: function(components)
Add components to this geometry.
addContainerPxFunction: function()
Hack-on function because GMAPS does not give it to us
addControl: function (control,
px)
addControls: function(controls)
To build a toolbar, you add a set of controls to it.
addControlToMap: function (control,
px)
addCoordSys: function(featOrFilt,
fsys)
Add the coordinate system information to an object.
addEventType: function(eventName)
Add a new event type to this events object.
addFeatures: function(features,
options)
Add Features to the layer.
addImageSize: function(imsize,
olsize)
Set the size of the requested image.
addLayer: function (layer)
addLayers: function(ll,
lyrs)
Add a collection of layers to another collection of layers.
addLayers: function (layers)
addMarker: function(marker)
addNodes: function(pointFeatures)
Adds point features that will be used to create lines from, using point pairs.
addOptions: function (newOptions)
addPoint: function(point,
index)
Wrapper for OpenLayers.Geometry.Collection.addComponent
addPoint: function(pixel)
Add point to geometry.
addPopup: function(popup,
exclusive)
addPropertyStyles: function(propertyStyles,
symbolizer)
addResults: function(results)
Construct new feature via layer featureClass constructor, and add to this.features.
addRules: function(rules)
Adds rules to this style.
addTarget: function(target)
Add a configured target layer.
addTargetLayer: function(layer)
Add a target layer with the default target config.
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
addTile:function(bounds,
position)
Gives subclasses of Grid the opportunity to create an OpenLayer.Tile of their choosing.
addTile:function(bounds,
position)
addTile:function(bounds,
position)
Creates a tile, initializes it, and adds it to the layer div.
addTile:function(bounds,
position)
Creates a tile, initializes it, and adds it to the layer div.
addTile:function(bounds,
position)
Create a tile, initialize it, and add it to the layer div.
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
addTile:function(bounds,
position)
addTile:function(bounds,
position)
addTile creates a tile, initializes it, and adds it to the layer div.
addTileMonitoringHooks: function(tile)
This function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tiles.
addTileMonitoringHooks: function(tile)
This function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tiles.
addTileMonitoringHooks: function(tile)
This function takes a tile as input and adds the appropriate hooks to the tile so that the layer can keep track of the loading tile (making sure to check that the tile is always the layer’s current tile before taking any action).
addToCluster: function(cluster,
feature)
Add a feature to a cluster.
OpenLayers.Projection.addTransform = function(from,
to,
method)
Set a custom transform method between two projections.
addUniqueValueRules: function(renderIntent,
property,
symbolizers,
context)
Convenience method to create comparison rules for unique values of a property.
adjustBounds: function (bounds)
This function will take a bounds, and if wrapDateLine option is set on the layer, it will return a bounds which is wrapped around the world.
afterAdd: function()
Called at the end of the map.addLayer sequence.
afterAdd: function()
Called at the end of the map.addLayer sequence.
afterFeatureModified: function(event)
Registered as a listener for the afterfeaturemodified event on the editable layer.
{Boolean} Allow the map to function with “overlays” only.
{Boolean} By deafault, controls do not allow selection, because it may interfere with map dragging.
{Boolean} The layer’s images have an alpha channel.
OpenLayers.Util.alphaHack = function()
Checks whether it’s necessary (and possible) to use the png alpha hack which allows alpha transparency for png images under Internet Explorer.
{Boolean} true if the png alpha hack is necessary and possible, false otherwise.
{Boolean} If a layer’s display should not be scale-based, this should be set to true.
{Boolean} Always zoom in/out, when box drawed
{Float} The angle from the origin (mouse down) to the current mouse position, in radians.
OpenLayers.Util.applyDefaults = function (to,
from)
Takes an object and copies any properties that don’t exist from another properties, by analogy with OpenLayers.Util.extend() from Prototype.js.
applySymbolizer: function(rule,
style,
feature)
Create a new ArcGIS93Rest layer object.
Create a new ArcIMS layer object.
Create a new parser/writer for ArcXML.
{Array} List of tags indicating that something is an area.
{Class} The ArgParser control class (not instance) to use with this control.
Transform an array into a JSON string.
{Boolean}
{Float} The ratio of height/width represented by a single pixel in the graphic
assert: function()
Tests that an expression is true.
assignRenderer: function()
Iterates through the available renderer implementations and selects and assigns the first one whose “supported()” function returns true.
{Boolean} Request images asynchronously.
atPoint: function(lonlat,
toleranceLon,
toleranceLat)
Determins whether the feature intersects with the specified location.
atPoint: function(lonlat,
toleranceLon,
toleranceLat)
attachToElement: function (element)
{Object} This object holds arbitrary properties that describe the feature.
{String} Attribution string, displayed when an OpenLayers.Control.Attribution has been added to the map.
{Boolean | Number} Auto-save.
{Boolean} The creator of the strategy can set autoActivate to false to fully control when the protocol is activated and deactivated.
{Boolean} The creator of the protocol can set autoDestroy to false to fully control when the protocol is destroyed.
{Boolean} The creator of the strategy can set autoDestroy to false to fully control when the strategy is destroyed.
{Boolean} Always pan the overview map, so the extent marker remains in the center.
{Boolean} Resize the popup to auto-fit the contents.
{Boolean} Framed Cloud is autosizing by default.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General10.html b/openlayers/doc/devdocs/index/General10.html new file mode 100644 index 0000000..c13d70a --- /dev/null +++ b/openlayers/doc/devdocs/index/General10.html @@ -0,0 +1,38 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
J
 JSON, OpenLayers.Format.JSON.OpenLayers.Format
 jsonParser, OpenLayers.Protocol.SQL.Gears
K
 KaMap, OpenLayers.Layer.KaMap.OpenLayers.Layer
 KaMapCache, OpenLayers.Layer.KaMapCache.OpenLayers.Layer
 keepData, OpenLayers.Format
 keepInMap
 KEY_BACKSPACE, OpenLayers.Event
 KEY_DELETE, OpenLayers.Event
 KEY_DOWN, OpenLayers.Event
 KEY_ESC, OpenLayers.Event
 KEY_EVENTS, OpenLayers.handler.Keyboard
 KEY_LEFT, OpenLayers.Event
 KEY_RETURN, OpenLayers.Event
 KEY_RIGHT, OpenLayers.Event
 KEY_TAB, OpenLayers.Event
 KEY_UP, OpenLayers.Event
 Keyboard, OpenLayers.handler.Keyboard.OpenLayers.Handler
 KeyboardDefaults, OpenLayers.Control.KeyboardDefaults.OpenLayers.Control
 keyMask, OpenLayers.Handler
 KML, OpenLayers.Format.KML.OpenLayers.Format
 kmlns, OpenLayers.Format.KML
+ +
Create a new parser for JSON.
{OpenLayers.Format.JSON}
+ + + +
{Object} Maintain a reference (data) to the most recently read data.
{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.
{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.
{int}
{int}
{int}
{int}
keydown, keypress, keyup
{int}
{int}
{int}
{int}
{int}
Returns a new keyboard handler.
{Integer} Use bitwise operators and one or more of the OpenLayers.Handler constants to construct a keyMask.
Create a new parser for KML.
{String} KML Namespace to use.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General11.html b/openlayers/doc/devdocs/index/General11.html new file mode 100644 index 0000000..6c71891 --- /dev/null +++ b/openlayers/doc/devdocs/index/General11.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
L
 LABEL_ALIGN
 LABEL_SHIFT, OpenLayers.Renderer.VML.OpenLayers.Renderer.VML
 LABEL_VSHIFT, OpenLayers.Renderer.SVG.OpenLayers.Renderer.SVG
 last
 lastDown, OpenLayers.Handler.Point
 lastFeature, OpenLayers.Handler.Feature
 lastPixel, OpenLayers.Control.DragFeature
 lastRatio, OpenLayers.Tile.Image
 lastSeqID, Util
 lastUp, OpenLayers.Handler.Point
 lastXy, OpenLayers.Control.MousePosition
 lat, OpenLayers.LonLat
 layer
 Layer, OpenLayers.Layer.OpenLayers
 layerAlphaHack, OpenLayers.Tile.Image
 layerContainerDiv, OpenLayers.Map
 layerContainerOrigin, OpenLayers.Map
 layerIdentifier, OpenLayers.Format.WMSGetFeatureInfo
 layerName
 layerOptions
 layerParams, OpenLayers.Format.WMC
 layers
 layersDiv, OpenLayers.Control.LayerSwitcher
 layerStates, OpenLayers.Control.LayerSwitcher
 LayerSwitcher, OpenLayers.Control.LayerSwitcher.OpenLayers.Control
 layerUrls, OpenLayers.Control.WMSGetFeatureInfo
 leaveMode, OpenLayers.Control.MouseToolbar
 left, OpenLayers.Bounds
 length, OpenLayers.Strategy.Paging
 level, OpenLayers.Format.JSON
 limit, OpenLayers.Control.NavigationHistory
 limitSigDigs
 line, OpenLayers.Handler.Path
 linearring
 LinearRing, OpenLayers.Geometry.LinearRing.OpenLayers.Geometry
 linestring
 LineString, OpenLayers.Geometry.LineString.OpenLayers.Geometry
 listeners
 load, OpenLayers.Strategy.Fixed
 loadContents, OpenLayers.Control.LayerSwitcher
 loaded, OpenLayers.Layer.GML
 loadFeaturesForRegion, OpenLayers.Tile.WFS
 loadGML, OpenLayers.Layer.GML
 loadMapObject
 loadRSS, OpenLayers.Layer.GeoRSS
 loadText, OpenLayers.Layer.Text
 loadURL
 loadWarningMessage, OpenLayers.Layer.EventPane
 location
 locked, OpenLayers.Renderer
 log, OpenLayers.Console
 Logical, OpenLayers.Filter.Logical.OpenLayers.Filter
 lon, OpenLayers.LonLat
 lonlat
 LonLat, OpenLayers.LonLat.OpenLayers
 lookupNamespaceURI
 lowerBoundary, OpenLayers.Filter.Comparison
 lzd, OpenLayers.Layer.WorldWind
+ +
{Object}
{Object}
{Object}
{Object}
{OpenLayers.Pixel} The last pixel location of the drag.
{OpenLayers.Pixel} Location of the last mouse down
{OpenLayers.Feature.Vector} The last feature that was handled.
{OpenLayers.Pixel}
{Float} Used in transition code only.
{Integer} The ever-incrementing count variable.
{OpenLayers.Pixel}
{OpenLayers.Pixel}
{Float} The y-axis coordinate in map units
{OpenLayers.Layer.Vector}
{OpenLayers.Layer.Vector}
{OpenLayers.Layer.Vector}
{OpenLayers.Layer.Vector} The vector layer with a common renderer root for all layers this control is configured with (if an array of layers was passed to the constructor), or the vector layer the control was configured with (if a single layer was passed to the constructor).
{OpenLayers.Layer.Vector} The current editable layer.
{OpenLayers.Layer.Vector} The target layer with features to be split.
{OpenLayers.Layer}
{OpenLayers.Layer.Vector} The temporary drawing layer
{OpenLayers.Layer.Vector} The temporary drawing layer
{OpenLayers.Layer.Vector} The layer this strategy belongs to.
{OpenLayers.Layer} layer the tile is attached to
{Boolean} True if the png alpha hack needs to be applied on the layer’s div.
{HTMLDivElement} The element that contains the layers.
{OpenLayers.LonLat} The lonlat at which the later container was re-initialized (on-zoom)
{String} All xml nodes containing this search criteria will populate an internal array of layer nodes.
{String} Name of data layer.
{String} name of the layer that this style belongs to, usually according to the NamedLayer attribute of an SLD document.
{Object} Default options for layers created by the parser.
{Object} Any optional properties to be set on the sketch layer.
{Object} Default parameters for layers created by the parser.
{Array(OpenLayers.Layer)} Ordered list of layers in the overview map.
{Array(OpenLayers.Layer.Vector} The layers this control will work on, or null if the control was configured with a single layer
{Array(OpenLayers.Layer.WMS)} The layers to query for feature info.
{Array} An array of objects with layer properties.
Layers that are attached to this container.
{Array(OpenLayers.Layer)} Ordered list of layers in the map
{DOMElement}
{Array(Object)} Basically a copy of the “state” of the map’s layers the last time the control was drawn.
{Array(String)} Optional list of urls for layers that should be queried.
leaveMode: function()
{Number} Minimum horizontal coordinate.
{Integer} Number of features per page.
{Integer} For “pretty” printing, this is incremented/decremented during serialization.
{Integer} Optional limit on the number of history items to retain.
limitSigDigs: function(num,
sig)
Limit the number of significant digits on a float.
Deprecated.
{OpenLayers.Feature.Vector}
Given an OpenLayers linearring geometry, create a GML linearring.
Given an OpenLayers linearring geometry, create a KML linearring.
Linear rings are constructed with an array of points.
Return an array of coordinate arrays from a linestring.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
Given an OpenLayers linestring geometry, create a GML linestring.
Given a GML node representing a linestring geometry, create an OpenLayers linestring geometry.
Given an OpenLayers linestring geometry, create a KML linestring.
Given a KML node representing a linestring geometry, create an OpenLayers linestring geometry.
Create a new LineString geometry
{Object} An object containing properties corresponding to event types.
{Object} Hashtable of Array(Function): events listener functions
load: function(options)
Tells protocol to load data and unhooks the visibilitychanged event
loadContents: function()
Set up the labels and divs for the control
{Boolean} Flag for whether the GML data has been loaded yet.
loadFeaturesForRegion:function(success,
failure)
Abort any pending requests and issue another request for data.
loadGML: function()
loadMapObject:function()
Load the GMap and register appropriate event listeners.
loadMapObject:function()
loadMapObject:function()
loadMapObject:function()
loadRSS: function()
Start the load of the RSS data.
loadText: function()
Start the load of the Text data.
OpenLayers.loadURL = function(uri,
params,
caller,
onComplete,
onFailure)
Background load a document.
loadWarningMessage:function()
If we can’t load the map lib, then display an error message to the user and tell them where to go for help.
{String} store url of text file
{String} URL of text file.
{Boolean} If the renderer is currently in a state where many things are changing, the ‘locked’ property is set to true.
log: function()
Log an object in the console.
Creates a logical filter (And, Or, Not).
{Float} The x-axis coodinate in map units
{OpenLayers.LonLat}
{OpenLayers.LonLat} location of object
{OpenLayers.LonLat} the position of this popup on the map
Create a new map location.
lookupNamespaceURI: function(node,
prefix)
Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
{Number} or {String} lower boundary for between comparisons.
LevelZeroTileSizeDegrees
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General12.html b/openlayers/doc/devdocs/index/General12.html new file mode 100644 index 0000000..38b83b2 --- /dev/null +++ b/openlayers/doc/devdocs/index/General12.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
M
 map
 Map, OpenLayers.Map.OpenLayers
 mapDivClick, OpenLayers.Control.OverviewMap
 MapGuide, OpenLayers.Layer.MapGuide.OpenLayers.Layer
 mapObject, OpenLayers.Layer.EventPane
 mapOptions, OpenLayers.Control.OverviewMap
 MapServer, OpenLayers.Layer.MapServer.OpenLayers.Layer
 mapToContext, OpenLayers.Format.WMC
 marker, OpenLayers.Feature
 Marker, OpenLayers.Marker.OpenLayers
 markerClick
 markers, OpenLayers.Layer.Markers
 Markers, OpenLayers.Layer.Markers.OpenLayers.Layer
 matchCase, OpenLayers.Filter.Comparison
 MAX_PIXEL, OpenLayers.Renderer.SVG
 MAX_ZOOM_LEVEL
 maxDepth, OpenLayers.Format.KML
 maxExtent
 maxFeatures
 maximizeControl
 maximizeDiv, OpenLayers.Control.LayerSwitcher
 maxRatio, OpenLayers.Control.OverviewMap
 maxResolution
 maxScale
 maxScaleDenominator, OpenLayers.Rule
 maxSize
 maxWidth, OpenLayers.Control.ScaleLine
 maxZIndex, OpenLayers.ElementsIndexer
 measure, OpenLayers.Control.Measure
 Measure, OpenLayers.Control.Measure.OpenLayers.Control
 measureComplete, OpenLayers.Control.Measure
 measurePartial, OpenLayers.Control.Measure
 merge
 mergeContextToMap, OpenLayers.Format.WMC
 mergeNewParams
 MIN_ZOOM_LEVEL
 minExtent
 minimizeControl
 minimizeDiv, OpenLayers.Control.LayerSwitcher
 minimumSymbolizer, OpenLayers.Renderer.Elements
 minRatio, OpenLayers.Control.OverviewMap
 minRectDisplayClass, OpenLayers.Control.OverviewMap
 minRectSize, OpenLayers.Control.OverviewMap
 minResolution
 minScale
 minScaleDenominator, OpenLayers.Rule
 minSize
 MOD_ALT, OpenLayers.Handler.OpenLayers.Handler
 MOD_CTRL, OpenLayers.Handler.OpenLayers.Handler
 MOD_NONE, OpenLayers.Handler.OpenLayers.Handler
 MOD_SHIFT, OpenLayers.Handler.OpenLayers.Handler
 mode
 modified, OpenLayers.Control.ModifyFeature
 modifiers, OpenLayers.Control.GetFeature
 modifyAlphaImageDiv, Util
 modifyDOMElement, Util
 modifyFeature
 ModifyFeature, OpenLayers.Control.ModifyFeature.OpenLayers.Control
 modifyGeometry, OpenLayers.Handler.RegularPolygon
 MouseDefaults, OpenLayers.Control.MouseDefaults.OpenLayers.Control
 mousedown
 mouseDown
 mouseLeft, Util
 mousemove
 mouseout
 mousePosition, OpenLayers.Handler.MouseWheel
 MousePosition, OpenLayers.Control.MousePosition.OpenLayers.Control
 MouseToolbar, OpenLayers.Control.MouseToolbar.OpenLayers.Control
 mouseup
 mouseUp, OpenLayers.Control.LayerSwitcher
 MouseWheel, OpenLayers.Handler.MouseWheel.OpenLayers.Handler
 move
 moveBox, OpenLayers.Handler.Box
 moveFeature, OpenLayers.Control.DragFeature
 moveGriddedTiles, OpenLayers.Layer.Grid
 moveLayerBack, OpenLayers.Handler.Feature
 moveLayerToTop, OpenLayers.Handler.Feature
 moveRoot
 moveTo
 moveZoomBar, OpenLayers.Control.PanZoomBar
 multi, OpenLayers.Handler.Point
 multiCurve, OpenLayers.Format.GML.v3
 multigeometry, OpenLayers.Format.KML.parseGeometry
 multilinestring
 MultiLineString, OpenLayers.Geometry.MultiLineString.OpenLayers.Geometry
 MultiMap, OpenLayers.Layer.MultiMap.OpenLayers.Layer
 multiple
 multipleKey
 multipleSelect, OpenLayers.Control.SelectFeature
 multipoint
 MultiPoint, OpenLayers.Geometry.MultiPoint.OpenLayers.Geometry
 multipolygon
 MultiPolygon, OpenLayers.Geometry.MultiPolygon.OpenLayers.Geometry
 multiSurface, OpenLayers.Format.GML.v3
 mutual, OpenLayers.Control.Split
+ +
{OpenLayers.Map} this gets set in the addControl() function in OpenLayers.Map
{OpenLayers.Map}
{OpenLayers.Map} This variable is set when the layer is added to the map, via the accessor function setMap().
{OpenLayers.Map} the map this marker is attached to
{OpenLayers.Map} this gets set in Map.js when the popup is added to the map
{OpenLayers.Map} Reference to the map -- this is set in Vector’s setMap()
Constructor for a new OpenLayers.Map instance.
mapDivClick: function(evt)
Handle browser events
Create a new Mapguide layer, either tiled or untiled.
{Object} This is the object which will be used to load the 3rd party library in the case of the google layer, this will be of type GMap, in the case of the ve layer, this will be of type VEMap
{Object} An object containing any non-default properties to be sent to the overview map’s map constructor.
Create a new MapServer layer object
mapToContext: function(map)
Create a context object given a map.
{OpenLayers.Marker}
markerClick: function(evt)
{Array(OpenLayers.Marker)} internal marker list
Create a Markers layer.
{Boolean} Force case sensitive searches for EQUAL_TO and NOT_EQUAL_TO comparisons.
{Integer} Firefox has a limitation where values larger or smaller than about 15000 in an SVG document lock the browser up.
{Integer} 19
{Integer} 17
{Integer} 17
{Integer} 17
{Integer} Maximum depth for recursive loading external KML URLs Defaults to 0: do no external fetching
{OpenLayers.Bounds} The center of these bounds will not stray outside of the viewport extent during panning.
{OpenLayers.Bounds} The maximum extent for the map.
{Integer} Maximum number of features to return from a query, if supported by the protocol.
{Integer} Maximum number of features to return from a WMS query.
maximizeControl: function(e)
Set up the labels and divs for the control
maximizeControl: function(e)
Unhide the control.
{DOMElement}
{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther in on the overview map.
{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
{Float}
{Float}
{Number} or {String} maximum scale at which to draw the feature.
{OpenLayers.Size} Maximum size allowed for the popup’s contents.
{OpenLayers.Size}
{Integer} Maximum width of the scale line in pixels.
{Integer} This is the largest-most z-index value for a node contained within the indexer.
measure: function(geometry,
eventType)
measureComplete: function(geometry)
Called when the measurement sketch is done.
measurePartial: function(point,
geometry)
Called each time a new point is added to the measurement sketch.
merge: function(resp)
Given a list of features, determine which ones to add to the layer.
merge: function(resp)
Add all features to the layer.
mergeContextToMap: function(context,
map)
Add layers from a context object to a map.
mergeNewParams:function(newParams)
Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
mergeNewParams:function(newParams)
mergeNewParams:function(newParams)
Modify parameters for the layer and redraw.
mergeNewParams:function(newParams)
Catch changeParams and uppercase the new params to be merged in before calling changeParams on the super class.
{Integer} 0
{Integer} 1
{Integer} 1
{Integer} 0
{OpenLayers.Bounds}
{OpenLayers.Bounds}
minimizeControl: function(e)
Hide all the contents of the control, shrink the size, add the maximize icon
minimizeControl: function(e)
Hide all the contents of the control, shrink the size, add the maximize icon
{DOMElement}
{Object}
{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther out on the overview map.
{String} Replacement style class name for the extent rectangle when minRectSize is reached.
{Integer} The minimum width or height (in pixels) of the extent rectangle on the overview map.
{Float}
{Float}
{Float}
{Float}
{Number} or {String} minimum scale at which to draw the feature.
{OpenLayers.Size} Minimum size allowed for the popup’s contents.
{OpenLayers.Size}
If set as the keyMask, checkModifiers returns false if Alt is down.
If set as the keyMask, checkModifiers returns false if Ctrl is down.
If set as the keyMask, checkModifiers returns false if any key is down.
If set as the keyMask, checkModifiers returns false if Shift is down.
{Integer} Bitfields specifying the modification mode.
{Boolean} The currently selected feature has been modified.
{Object} The event modifiers to use, according to the current event being handled by this control’s handlers
OpenLayers.Util.modifyAlphaImageDiv = function(div,
id,
px,
sz,
imgURL,
position,
border,
sizing,
opacity)
OpenLayers.Util.modifyDOMElement = function(element,
id,
px,
sz,
position,
border,
overflow,
opacity)
Modifies many properties of a DOM element all at once.
modifyFeature: function(pixel)
Modify the existing geometry given the new point
modifyFeature: function(pixel)
Modify the existing geometry given a pixel location.
Create a new modify feature control.
modifyGeometry: function()
Modify the polygon geometry in place.
Handle mousedown.
mousedown: function (evt)
Handle mousedown events
mousedown: function(evt)
Handle mouse down.
mousedown: function(evt)
Handle mouse down.
mousedown: function(evt)
Handle mouse down.
mouseDown: function(evt)
Register a local ‘mouseDown’ flag so that we’ll know whether or not to ignore a mouseUp event
{Boolean} The mouse is down
OpenLayers.Util.mouseLeft = function (evt,
div)
mousemove: function (evt)
Handle mousemove events
mousemove: function(evt)
Handle mouse moves.
mousemove: function(evt)
Called when the mouse moves on the map.
mousemove: function (evt)
Update the stored mousePosition on every move.
mousemove: function (evt)
Handle mouse move.
mousemove: function (evt)
Handle mouse move.
mouseout: function (evt)
Handle mouseout events
mouseout: function(evt)
Called when the mouse goes out of the map.
{OpenLayers.Pixel} mousePosition is necessary because evt.clientX/Y is buggy in Moz on wheel events, so we cache and use the value from the last mousemove.
mouseup: function (evt)
Handle mouseup.
mouseup: function (evt)
Handle mouseup events
mouseup: function(evt)
Handle mouse up.
mouseup: function (evt)
Handle mouse up.
mouseup: function (evt)
Handle mouse up.
mouseUp: function(evt)
If the ‘isMouseDown’ flag has been set, that means that the drag was started from within the LayerSwitcher control, and thus we can ignore the mouseup.
move: function(location)
Moves the feature and redraws it at its new location
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
move: function(x,
y)
Moves a geometry by the given displacement along positive x and y axes.
move: function(evt)
This method is called during the handling of the mouse move event.
move: function(evt)
Respond to drag move events
moveBox: function (xy)
moveFeature: function(pixel)
Called when the drag handler detects a mouse-move.
moveGriddedTiles: function(bounds)
moveLayerBack: function()
Moves the layer back to the position determined by the map’s layers array.
moveLayerToTop: function()
Moves the layer for this handler to the top, so mouse events can reach it.
moveRoot: function(renderer)
moves this renderer’s root to a (different) renderer.
moveRoot: function(renderer)
moves this renderer’s root to a different renderer.
moveRoot: function(renderer)
moves this renderer’s root to a different renderer.
moveTo: function (px)
Sets the left and top style attributes to the passed in pixel coordinates.
moveTo: function (px)
move icon to passed in px.
moveTo:function(bounds,
zoomChanged,
dragging)
moveTo:function(bounds,
zoomChanged,
dragging)
Handle calls to move the layer.
moveTo:function(bounds,
zoomChanged,
minor)
If layer is visible and RSS has not been loaded, load RSS.
moveTo:function(bounds,
zoomChanged,
minor)
If layer is visible and GML has not been loaded, load GML, then load GML and call OpenLayers.Layer.Vector.moveTo() to redraw at the new location.
moveTo:function(bounds,
zoomChanged,
dragging)
This function is called whenever the map is moved.
moveTo:function(bounds,
zoomChanged,
dragging)
Create the tile for the image or resize it for the new resolution
moveTo:function(bounds,
zoomChanged,
dragging)
moveTo:function(bounds,
zoomChanged,
minor)
If layer is visible and Text has not been loaded, load Text.
moveTo: function(bounds,
zoomChanged,
dragging)
Reset the vector layer’s div so that it once again is lined up with the map.
moveTo:function(bounds,
zoomChanged,
dragging)
moveTo: function(lonlat,
zoom,
options)
moveTo: function (px)
Move the marker to the new location.
moveTo: function(px)
moveTo: function(px)
Since the popup is moving to a new px, it might need also to be moved relative to where the marker is.
moveTo: function (bounds,
position,
redraw)
Reposition the tile.
moveZoomBar:function()
Change the location of the slider to match the current zoom level.
{Boolean} Cast features to multi-part geometries before passing to the layer.
{Boolean} Write gml:MultiCurve instead of gml:MultiLineString.
Given a KML node representing a multigeometry, create an OpenLayers geometry collection.
Return an array of linestring arrays from a linestring.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
Given an OpenLayers multilinestring geometry, create a GML multilinestring.
Given a GML node representing a multilinestring geometry, create an OpenLayers multilinestring geometry.
Given an OpenLayers multilinestring geometry, create a KML GeometryCollection.
Constructor for a MultiLineString Geometry.
{Boolean} Allow selection of multiple geometries.
{Boolean} Allow selection of multiple geometries.
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the multiple property to true.
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the multiple property to true.
multipleSelect: function()
Allow for multiple selected features based on multiple property and multipleKey event modifier.
Return an array of point coordinates from a multipoint.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
Given an OpenLayers multipoint geometry, create a GML multipoint.
Given a GML node representing a multipoint geometry, create an OpenLayers multipoint geometry.
Given an OpenLayers multipoint geometry, create a KML GeometryCollection.
Create a new MultiPoint Geometry
Return an array of polygon arrays from a multipolygon.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
Given an OpenLayers multipolygon geometry, create a GML multipolygon.
Given a GML node representing a multipolygon geometry, create an OpenLayers multipolygon geometry.
Given an OpenLayers multipolygon geometry, create a KML GeometryCollection.
Create a new MultiPolygon geometry
{Boolean} Write gml:multiSurface instead of gml:MultiPolygon.
{Boolean} If source and target layers are the same, split source features and target features where they intersect.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General13.html b/openlayers/doc/devdocs/index/General13.html new file mode 100644 index 0000000..de6a985 --- /dev/null +++ b/openlayers/doc/devdocs/index/General13.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
N
 name
 namedLayersAsArray, OpenLayers.Format.SLD
 namespaceAlias, OpenLayers.Format.XML
 namespaces
 Navigation, OpenLayers.Control.Navigation.OpenLayers.Control
 NavigationHistory, OpenLayers.Control.NavigationHistory.OpenLayers.Control
 NavToolbar, OpenLayers.Control.NavToolbar.OpenLayers.Control
 newline, OpenLayers.Format.JSON
 next, OpenLayers.Control.NavigationHistory
 nextOptions, OpenLayers.Control.NavigationHistory
 nextStack, OpenLayers.Control.NavigationHistory
 nextTrigger, OpenLayers.Control.NavigationHistory
 nodeFactory, OpenLayers.Renderer.Elements
 nodeTypeCompare
 noMagic, OpenLayers.Layer.WMS
 normalizeScale, Util
 NULL_FEATURE_STATE, OpenLayers.Protocol.SQL.Gears
 NULL_GEOMETRY, OpenLayers.Protocol.SQL.Gears
 nullHandler, OpenLayers
 num, OpenLayers.Strategy.Paging
 number, OpenLayers.Format.JSON.serialize
 numberRegEx, OpenLayers.String.OpenLayers.String
 numDigits, OpenLayers.Control.MousePosition
 numericIf, OpenLayers.String
 numLoadingTiles, OpenLayers.Layer.Grid
 numZoomLevels
+ +
{String}
{String} Layer name.
{String} name of this rule
{String}
{Boolean} Generate a namedLayers array.
{Object} Mapping of namespace URI to namespace alias.
{Object} Mapping of namespace aliases to namespace URIs.
{Object} Mapping of namespace aliases to namespace URIs.
{Object} Mapping of namespace aliases to namespace URIs.
{Object} Mapping of namespace aliases to namespace URIs.
{Object} Mapping of namespace aliases to namespace URIs.
{Object} Mapping of namespace aliases to namespace URIs.
{Object} Mapping of namespace aliases to namespace URIs.
Create a new navigation control
Add our two mousedefaults controls.
{String} For “pretty” printing, the newline string will be used at the end of each name/value pair or array item.
{OpenLayers.Control} A button type control whose trigger method restores the next state managed by this control.
{Object} Set this property on the options argument of the constructor to set optional properties on the next control.
{Array} Array of items in the history.
nextTrigger: function()
Restore the next state.
nodeFactory: function(id,
type)
Create new node of the specified type, with the (optional) specified id.
nodeTypeCompare: function(node,
type)
nodeTypeCompare: function(node,
type)
nodeTypeCompare: function(node,
type)
Determine whether a node is of a given type
{Boolean} If true, the image format will not be automagicaly switched from image/jpeg to image/png or image/gif when using TRANSPARENT=TRUE.
OpenLayers.Util.normalizeScale = function (scale)
{String}
{String}
OpenLayers.nullHandler = function(request)
@param {} request
{Integer} The currently displayed page number.
Transform a number into a JSON string.
Used to test strings as numbers.
{Integer}
numericIf: function(value)
Converts a string that appears to be a numeric value into a number.
{Integer} How many tiles are still loading?
{Integer}
{Integer} Number of zoom levels for the map.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General14.html b/openlayers/doc/devdocs/index/General14.html new file mode 100644 index 0000000..f579963 --- /dev/null +++ b/openlayers/doc/devdocs/index/General14.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
O
 object
 observe, OpenLayers.Event
 observers, OpenLayers.Event
 offset
 ogcns, OpenLayers.Format.WFS
 oldOnselectstart, OpenLayers.Handler.Drag
 on, OpenLayers.Events
 onBeforeSelect, OpenLayers.Control.SelectFeature
 onclick, OpenLayers.Popup
 onClick, OpenLayers.Control.Panel
 onCommit, OpenLayers.Strategy.Save
 onComplete
 onCreate, OpenLayers.Ajax.Responders
 ondblclick, OpenLayers.Popup
 onDrag, OpenLayers.Control.DragFeature
 onFeatureInsert, OpenLayers.Layer.Vector
 onImageLoad, Util
 onImageLoadError, Util
 onImageLoadErrorColor, Util
 onLayerClick, OpenLayers.Control.LayerSwitcher
 onMapResize
 onModification, OpenLayers.Control.ModifyFeature
 onModificationEnd, OpenLayers.Control.ModifyFeature
 onModificationStart, OpenLayers.Control.ModifyFeature
 onmousedown, OpenLayers.Popup
 onmousemove, OpenLayers.Popup
 onmouseout, OpenLayers.Popup
 onmouseup, OpenLayers.Popup
 onNextChange, OpenLayers.Control.NavigationHistory
 onPreviousChange, OpenLayers.Control.NavigationHistory
 onScreen
 onSelect, OpenLayers.Control.SelectFeature
 onSketchComplete, OpenLayers.Control.Split
 onSketchModified, OpenLayers.Control.Snapping
 onStart, OpenLayers.Control.DragFeature
 onStateChange, OpenLayers.Ajax.Request
 onUnselect, OpenLayers.Control.SelectFeature
 onVertexModified, OpenLayers.Control.Snapping
 onWheelEvent
 opacity
 OpenLayers
 OpenLayers Base Types
 OpenLayers.Ajax
 OpenLayers.Ajax.Base
 OpenLayers.Ajax.Request
 OpenLayers.Ajax.Responders
 OpenLayers.Ajax.Response
 OpenLayers.Array
 OpenLayers.Bounds
 OpenLayers.Console
 OpenLayers.Control
 OpenLayers.Control.ArgParser
 OpenLayers.Control.Attribution
 OpenLayers.Control.Button
 OpenLayers.Control.DragFeature
 OpenLayers.Control.DragPan
 OpenLayers.Control.DrawFeature
 OpenLayers.Control.EditingToolbar
 OpenLayers.Control.GetFeature
 OpenLayers.Control.KeyboardDefaults
 OpenLayers.Control.LayerSwitcher
 OpenLayers.Control.Measure
 OpenLayers.Control.ModifyFeature
 OpenLayers.Control.MouseDefaults
 OpenLayers.Control.MousePosition
 OpenLayers.Control.MouseToolbar
 OpenLayers.Control.Navigation
 OpenLayers.Control.NavigationHistory
 OpenLayers.Control.NavToolbar
 OpenLayers.Control.OverviewMap
 OpenLayers.Control.Pan
 OpenLayers.Control.Panel
 OpenLayers.Control.PanPanel
 OpenLayers.Control.PanZoom
 OpenLayers.Control.PanZoomBar
 OpenLayers.Control.Permalink
 OpenLayers.Control.Scale
 OpenLayers.Control.ScaleLine
 OpenLayers.Control.SelectFeature
 OpenLayers.Control.Snapping
 OpenLayers.Control.Split
 OpenLayers.Control.WMSGetFeatureInfo
 OpenLayers.Control.ZoomBox
 OpenLayers.Control.ZoomIn
 OpenLayers.Control.ZoomOut
 OpenLayers.Control.ZoomPanel
 OpenLayers.Control.ZoomToMaxExtent
 OpenLayers.Easing
 OpenLayers.Easing.Expo
 OpenLayers.Easing.Linear
 OpenLayers.Easing.Quad
 OpenLayers.Element
 OpenLayers.ElementsIndexer
 OpenLayers.ElementsIndexer.IndexingMethods
 OpenLayers.Event
 OpenLayers.Events
 OpenLayers.Feature
 OpenLayers.Feature.Vector
 OpenLayers.Feature.WFS
 OpenLayers.Filter
 OpenLayers.Filter.Comparison
 OpenLayers.Filter.FeatureId
 OpenLayers.Filter.Logical
 OpenLayers.Filter.Spatial
 OpenLayers.Format
 OpenLayers.Format.ArcXML
 OpenLayers.Format.ArcXML.Features
 OpenLayers.Format.Filter
 OpenLayers.Format.Filter.v1
 OpenLayers.Format.Filter.v1_0_0
 OpenLayers.Format.Filter.v1_1_0
 OpenLayers.Format.GeoJSON
 OpenLayers.Format.GeoRSS
 OpenLayers.Format.GML
 OpenLayers.Format.GML.Base
 OpenLayers.Format.GML.v2
 OpenLayers.Format.GML.v3
 OpenLayers.Format.GPX
 OpenLayers.Format.JSON
 OpenLayers.Format.KML
 OpenLayers.Format.OSM
 OpenLayers.Format.SLD
 OpenLayers.Format.SLD.v1
 OpenLayers.Format.SLD.v1_0_0
 OpenLayers.Format.Text
 OpenLayers.Format.WFS
 OpenLayers.Format.WFSCapabilities
 OpenLayers.Format.WFSCapabilities.v1
 OpenLayers.Format.WFSCapabilities/v1_0_0
 OpenLayers.Format.WFSCapabilities/v1_1_0
 OpenLayers.Format.WFST.v1
 OpenLayers.Format.WFST.v1_0_0
 OpenLayers.Format.WFST.v1_1_0
 OpenLayers.Format.WKT
 OpenLayers.Format.WMC
 OpenLayers.Format.WMC.v1
 OpenLayers.Format.WMC.v1_0_0
 OpenLayers.Format.WMC.v1_1_0
 OpenLayers.Format.WMSCapabilities
 OpenLayers.Format.WMSCapabilities.v1_1
 OpenLayers.Format.WMSCapabilities/v1_1_0
 OpenLayers.Format.WMSCapabilities/v1_1_1
 OpenLayers.Format.WMSDescribeLayer
 OpenLayers.Format.WMSDescribeLayer.v1_1
 OpenLayers.Format.WMSGetFeatureInfo
 OpenLayers.Format.XML
 OpenLayers.Function
 OpenLayers.Geometry
 OpenLayers.Geometry.Collection
 OpenLayers.Geometry.Curve
 OpenLayers.Geometry.LinearRing
 OpenLayers.Geometry.LineString
 OpenLayers.Geometry.MultiLineString
 OpenLayers.Geometry.MultiPoint
 OpenLayers.Geometry.MultiPolygon
 OpenLayers.Geometry.Point
 OpenLayers.Geometry.Polygon
 OpenLayers.Geometry.Rectangle
 OpenLayers.Handler
 OpenLayers.Handler.Box
 OpenLayers.Handler.Click
 OpenLayers.Handler.Drag
 OpenLayers.Handler.Feature
 OpenLayers.Handler.Hover
 OpenLayers.handler.Keyboard
 OpenLayers.Handler.MouseWheel
 OpenLayers.Handler.Path
 OpenLayers.Handler.Point
 OpenLayers.Handler.Polygon
 OpenLayers.Handler.RegularPolygon
 OpenLayers.Icon
 OpenLayers.Lang
 OpenLayers.Lang[“ca”]
 OpenLayers.Lang[“cs-CZ”]
 OpenLayers.Lang[“da-DK”]
 OpenLayers.Lang[“de”]
 OpenLayers.Lang[“en”]
 OpenLayers.Lang[“en-CA”]
 OpenLayers.Lang[“es”]
 OpenLayers.Lang[“fr”]
 OpenLayers.Lang[“it”]
 OpenLayers.Lang[“nb”]
 OpenLayers.Lang[“nl”]
 OpenLayers.Lang[“pt-BR”]
 OpenLayers.Lang[“sv-SE”]
 OpenLayers.Lang[“zh-CN”]
 OpenLayers.Lang[“zh-TW”]
 OpenLayers.Layer
 OpenLayers.Layer.ArcGIS93Rest
 OpenLayers.Layer.ArcIMS
 OpenLayers.Layer.Boxes
 OpenLayers.Layer.EventPane
 OpenLayers.Layer.FixedZoomLevels
 OpenLayers.Layer.GeoRSS
 OpenLayers.Layer.GML
 OpenLayers.Layer.Google
 OpenLayers.Layer.Grid
 OpenLayers.Layer.HTTPRequest
 OpenLayers.Layer.Image
 OpenLayers.Layer.KaMap
 OpenLayers.Layer.KaMapCache
 OpenLayers.Layer.MapGuide
 OpenLayers.Layer.MapServer
 OpenLayers.Layer.MapServer.Untiled
 OpenLayers.Layer.Markers
 OpenLayers.Layer.MultiMap
 OpenLayers.Layer.OSM
 OpenLayers.Layer.PointTrack
 OpenLayers.Layer.SphericalMercator
 OpenLayers.Layer.Text
 OpenLayers.Layer.TileCache
 OpenLayers.Layer.TMS
 OpenLayers.Layer.Vector
 OpenLayers.Layer.Vector.RootContainer
 OpenLayers.Layer.VirtualEarth
 OpenLayers.Layer.WFS
 OpenLayers.Layer.WMS
 OpenLayers.Layer.WMS.Untiled
 OpenLayers.Layer.WorldWind
 OpenLayers.Layer.XYZ
 OpenLayers.Layer.Yahoo
 OpenLayers.LonLat
 OpenLayers.Map
 OpenLayers.Marker
 OpenLayers.Marker.Box
 OpenLayers.Number
 OpenLayers.Pixel
 OpenLayers.Popup
 OpenLayers.Popup.Anchored
 OpenLayers.Popup.AnchoredBubble
 OpenLayers.Popup.Framed
 OpenLayers.Popup.FramedCloud
 OpenLayers.Projection
 OpenLayers.Protocol
 OpenLayers.Protocol.HTTP
 OpenLayers.Protocol.Response
 OpenLayers.Protocol.SQL
 OpenLayers.Protocol.SQL.Gears
 OpenLayers.Protocol.WFS.v1
 OpenLayers.Protocol.WFS.v1_0_0
 OpenLayers.Protocol.WFS.v1_1_0
 OpenLayers.Renderer
 OpenLayers.Renderer.Canvas
 OpenLayers.Renderer.Elements
 OpenLayers.Renderer.SVG
 OpenLayers.Renderer.VML
 OpenLayers.Request
 OpenLayers.Request.XMLHttpRequest
 OpenLayers.Rule
 OpenLayers.Size
 OpenLayers.Strategy
 OpenLayers.Strategy.BBOX
 OpenLayers.Strategy.Cluster
 OpenLayers.Strategy.Fixed
 OpenLayers.Strategy.Paging
 OpenLayers.Strategy.Save
 OpenLayers.String
 OpenLayers.Style
 OpenLayers.StyleMap
 OpenLayers.Tile
 OpenLayers.Tile.Image
 OpenLayers.Tile.WFS
 OpenLayers.Tween
 oppositeQuadrant, OpenLayers.Bounds
 options
 OPTIONS, OpenLayers.Request
 order, OpenLayers.ElementsIndexer
 origin, OpenLayers.Handler.RegularPolygon
 OSM
 out
 outFeature
 overFeature
 OVERLAY_PARAMS, OpenLayers.Layer.MapGuide
 OverviewMap, OpenLayers.Control.OverviewMap.OpenLayers.Control
 ovmap, OpenLayers.Control.OverviewMap
+ +
{Object} the code object issuing application events
Transform an object into a JSON string.
observe: function(elementParam,
name,
observer,
useCapture)
{Object} A hashtable cache of the event observers.
{OpenLayers.Pixel} distance in pixels to offset the image when being rendered
offset:function(px)
Parameters px - {OpenLayers.Pixel}
{Object} Hash with “x” and “y” properties
{Function}
on: function(object)
Convenience method for registering listeners with a common scope.
{Function} Optional function to be called before a feature is selected.
onclick: function (evt)
Ignore clicks, but allowing default browser handling
onClick: function (ctrl,
evt)
onCommit: function(response)
Called after protocol commit.
onComplete: function()
{Function} Define this function if you want to know when a feature is done dragging.
onCreate: function()
ondblclick: function (evt)
Ignore double-clicks, but allowing default browser handling
{Function} Define this function if you want to know about each move of a feature.
onFeatureInsert: function(feature)
method called after a feature is inserted.
OpenLayers.Util.onImageLoad = function()
Bound to image load events.
OpenLayers.Util.onImageLoadError = function()
{String} The color tiles with load errors will turn.
onLayerClick: function(e)
Need to update the map accordingly whenever user clicks in either of the layers.
onMapResize: function()
This function can be implemented by subclasses
onMapResize: function()
onMapResize: function()
For singleTile layers, this will set a new tile size according to the dimensions of the map pane.
onMapResize: function()
Notify the renderer of the change in size.
onMapResize: function()
Call the onMapResize method of the appropriate parent class.
onMapResize: function()
{Function} Deprecated.
{Function} Deprecated.
{Function} Deprecated.
onmousedown: function (evt)
When mouse goes down within the popup, make a note of it locally, and then do not propagate the mousedown (but do so safely so that user can select text inside)
onmousemove: function (evt)
If the drag was started within the popup, then do not propagate the mousemove (but do so safely so that user can select text inside)
onmouseout: function (evt)
When mouse goes out of the popup set the flag to false so that if they let go and then drag back in, we won’t be confused.
onmouseup: function (evt)
When mouse comes up within the popup, after going down in it, reset the flag, and then (once again) do not propagate the event, but do so safely so that user can select text inside
onNextChange: function(state,
length)
Called when the next history stack changes.
onPreviousChange: function(state,
length)
Called when the previous history stack changes.
onScreen:function()
{Boolean} Whether or not the feature is currently visible on screen (based on its ‘lonlat’ property)
onScreen:function(boundsOnly)
Determine whether the feature is within the map viewport.
onScreen:function()
{Boolean} Whether or not the marker is currently visible on screen.
onScreen:function()
{Boolean} Whether or not the marker is currently visible on screen.
{Function} Optional function to be called when a feature is selected.
onSketchComplete: function(event)
Registered as a listener for the sketchcomplete event on the editable layer.
onSketchModified: function(event)
Registered as a listener for the sketchmodified event on the editable layer.
{Function} Define this function if you want to know when a drag starts.
onStateChange: function()
{Function} Optional function to be called when a feature is unselected.
onVertexModified: function(event)
Registered as a listener for the vertexmodified event on the editable layer.
onWheelEvent: function(e)
Catch the wheel event and handle it xbrowserly
onWheelEvent: function(e)
Catch the wheel event and handle it xbrowserly
{Float} The layer’s opacity.
{float} the opacity of this popup (between 0.0 and 1.0)
The OpenLayers object provides a namespace for all things OpenLayers
OpenLayers custom string, number and function functions are described here.
Deprecated.
{Object}
Contains convenience functions for array manipulation.
Instances of this class represent bounding boxes.
The OpenLayers.Console namespace is used for debugging and error logging.
Controls affect the display or behavior of the map.
The ArgParser control adds location bar querystring parsing functionality to an OpenLayers Map.
The attribution control adds attribution from layers to the map display.
The Button control is a very simple push-button, for use with OpenLayers.Control.Panel.
The DragFeature control moves a feature with a drag of the mouse.
The DragPan control pans the map with a drag of the mouse.
The DrawFeature control draws point, line or polygon features on a vector layer when active.
The EditingToolbar is a panel of 4 controls to draw polygons, lines, points, or to navigate the map by panning.
Gets vector features for locations underneath the mouse cursor.
The KeyboardDefaults control adds panning and zooming functions, controlled with the keyboard.
The LayerSwitcher control displays a table of contents for the map.
Allows for drawing of features for measurements.
Control to modify features.
This class is DEPRECATED in 2.4 and will be removed by 3.0.
The MousePosition control displays geographic coordinates of the mouse pointer, as it is moved about the map.
This class is DEPRECATED in 2.4 and will be removed by 3.0.
The navigation control handles map browsing with mouse events (dragging, double-clicking, and scrolling the wheel).
A navigation history control.
This Toolbar is an alternative to the Navigation control that displays the state of the control, and provides a UI for changing state to use the zoomBox via a Panel control.
The OverMap control creates a small overview map, useful to display the extent of a zoomed map and your main map and provide additional navigation options to the User.
The Pan control is a single button to pan the map in one direction.
The Panel control is a container for other controls.
The PanPanel is visible control for panning the map North, South, East or West in small steps.
The PanZoom is a visible control, composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomPanel.
The PanZoomBar is a visible control composed of a OpenLayers.Control.PanPanel and a OpenLayers.Control.ZoomBar.
The Permalink control is hyperlink that will return the user to the current map view.
The Scale control displays the current map scale as a ratio (e.g.
The ScaleLine displays a small line indicator representing the current map scale on the map.
The SelectFeature control selects vector features from a given layer on click or hover.
Acts as a snapping agent while editing vector features.
Acts as a split feature agent while editing vector features.
The WMSGetFeatureInfo control uses a WMS query to get information about a point on the map.
The ZoomBox control enables zooming directly to a given extent, by drawing a box on the map.
The ZoomIn control is a button to increase the zoom level of a map.
The ZoomOut control is a button to decrease the zoom level of a map.
The ZoomPanel control is a compact collecton of 3 zoom controls: a OpenLayers.Control.ZoomIn, a OpenLayers.Control.ZoomToMaxExtent, and a OpenLayers.Control.ZoomOut.
The ZoomToMaxExtent control is a button that zooms out to the maximum extent of the map.
Easing Equations by Robert Penner, http://www.robertpenner.com/easing/
This class takes care of figuring out which order elements should be placed in the DOM based on given indexing methods.
These are the compare methods for figuring out where a new node should be placed within the indexer.
Utility functions for event handling.
Features are combinations of geography and attributes.
Vector features use the OpenLayers.Geometry classes as geometry description.
WFS handling class, for use as a featureClass on the WFS layer for handling ‘point’ WFS types.
This class represents an OGC Filter.
This class represents a comparison filter.
This class represents a ogc:FeatureId Filter, as being used for rule-based SLD styling
This class represents ogc:And, ogc:Or and ogc:Not rules.
This class represents a spatial filter.
Base class for format reading/writing a variety of formats.
Read/Wite ArcXML.
Read/Wite ArcXML features.
Read/Wite ogc:Filter.
Superclass for Filter version 1 parsers.
Write ogc:Filter version 1.0.0.
Write ogc:Filter version 1.1.0.
Read and write GeoJSON.
Read/write GeoRSS parser.
Read/Wite GML.
Superclass for GML parsers.
Parses GML version 2.
Parses GML version 3.
Read/write GPX parser.
A parser to read/write JSON safely.
Read/Wite KML.
OSM parser.
Read/Wite SLD.
Superclass for SLD version 1 parsers.
Write SLD version 1.0.0.
Read Text format.
Read/Write WFS.
Read WFS Capabilities.
Abstract class not to be instantiated directly.
Read WMS Capabilities version 1.0.0.
Read WFS Capabilities version 1.1.0.
Superclass for WFST parsers.
A format for creating WFS v1.0.0 transactions.
A format for creating WFS v1.1.0 transactions.
Class for reading and writing Well-Known Text.
Read and write Web Map Context documents.
Superclass for WMC version 1 parsers.
Read and write WMC version 1.0.0.
Read and write WMC version 1.1.0.
Read WMS Capabilities.
Abstract class not to be instantiated directly.
Read WMS Capabilities version 1.1.0.
Read WMS Capabilities version 1.1.1.
Read SLD WMS DescribeLayer response DescribeLayer is meant to couple WMS to WFS and WCS
Read SLD WMS DescribeLayer response for WMS 1.1.X WMS 1.1.X is tightly coupled to SLD 1.0.0
Class to read GetFeatureInfo responses from Web Mapping Services
Read and write XML.
Contains convenience functions for function manipulation.
A Geometry is a description of a geographic object.
A Collection is exactly what it sounds like: A collection of different Geometries.
A Curve is a MultiPoint, whose points are assumed to be connected.
A Linear Ring is a special LineString which is closed.
A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
A MultiLineString is a geometry with multiple OpenLayers.Geometry.LineString components.
MultiPoint is a collection of Points.
MultiPolygon is a geometry with multiple OpenLayers.Geometry.Polygon components.
Point geometry class.
Polygon is a collection of Geometry.LinearRings.
This class is not supported, and probably isn’t what you’re looking for.
Base class to construct a higher-level handler for event sequences.
Handler for dragging a rectangle across the map.
A handler for mouse clicks.
The drag handler is used to deal with sequences of browser events related to dragging.
Handler to respond to mouse events related to a drawn feature.
The hover handler is to be used to emulate mouseovers on objects on the map that aren’t DOM elements.
A handler for keyboard events.
Handler for wheel up/down events.
Handler to draw a path on the map.
Handler to draw a point on the map.
Handler to draw a polygon on the map.
Handler to draw a regular polygon on the map.
The icon represents a graphical icon on the screen.
Internationalization namespace.
Dictionary for Catalan, UTF8 encoding.
Dictionary for Czech.
Dictionary for Danish.
Dictionary for German.
Dictionary for English.
Dictionary for English-CA.
Dictionary for Spanish, UTF8 encoding.
Dictionary for French.
Dictionary for Italian.
Dictionary for norwegian bokmål (Norway).
Dictionary for Dutch.
Dictionary for Brazilian Portuguese.
Dictionary for swedish (Sweden).
Dictionary for Simplified Chinese.
Dictionary for Traditional Chinese.
Instances of OpenLayers.Layer.ArcGIS93Rest are used to display data from ESRI ArcGIS Server 9.3 (and up?)
Instances of OpenLayers.Layer.ArcIMS are used to display data from ESRI ArcIMS Mapping Services.
Draw divs as ‘boxes’ on the layer.
Base class for 3rd party layers.
Some Layers will already have established zoom levels (like google or ve).
Add GeoRSS Point features to your map.
Create a vector layer by parsing a GML file.
Base class for layers that use a lattice of tiles.
Instances of OpenLayers.Layer.Image are used to display data from a web accessible image as a map layer.
This class is designed to talk directly to a web-accessible ka-Map cache generated by the precache2.php script.
Instances of OpenLayers.Layer.MapGuide are used to display data from a MapGuide OS instance.
Instances of OpenLayers.Layer.MapServer are used to display data from a MapServer CGI instance.
Deprecated.
Note that MultiMap does not fully support the sphericalMercator option.
A class to access OpenStreetMap tiles.
Vector layer to display ordered point features as a line, creating one LineString feature for each pair of two points.
A mixin for layers that wraps up the pieces neccesary to have a coordinate conversion for working with commercial APIs which use a spherical mercator projection.
This layer creates markers given data in a text file.
A read only TileCache layer.
Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
A special layer type to combine multiple vector layers inside a single renderer root container.
Instances of OpenLayers.Layer.WMS are used to display data from OGC Web Mapping Services.
Deprecated.
The XYZ class is designed to make it easier for people who have tiles arranged by a standard XYZ grid.
This class represents a longitude and latitude pair
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Instances of OpenLayers.Marker are a combination of a OpenLayers.LonLat and an OpenLayers.Icon.
Contains convenience functions for manipulating numbers.
This class represents a screen coordinate, in x and y coordinates
A popup is a small div that can opened and closed on the map.
Class for coordinate transforms between coordinate systems.
Abstract vector layer protocol class.
A basic HTTP protocol for vector layers.
Protocols return Response objects to their users.
Abstract SQL protocol class.
This Protocol stores feature in the browser via the Gears Database module http://code.google.com/apis/gears/api_database.html.
Abstract class for for v1.0.0 and v1.1.0 protocol.
A WFS v1.0.0 protocol for vector layers.
A WFS v1.1.0 protocol for vector layers.
This is the base class for all renderers.
A renderer based on the 2D ‘canvas’ drawing element.element
This is another virtual class in that it should never be instantiated by itself as a Renderer.
Render vector features in browsers with VML capability.
The OpenLayers.Request namespace contains convenience methods for working with XMLHttpRequests.
Standard-compliant (W3C) cross-browser implementation of the XMLHttpRequest object.
This class represents an SLD Rule, as being used for rule-based SLD styling.
Instances of this class represent a width/height pair
Abstract vector layer strategy class.
A simple strategy that reads new features when the viewport invalidates some bounds.
Strategy for vector feature clustering.
A simple strategy that requests features once and never requests new data.
Strategy for vector feature paging
A strategy that commits newly created or modified features.
Contains convenience functions for string manipulation.
This class represents a UserStyle obtained from a SLD, containing styling rules.
This is a class designed to designate a single tile, however it is explicitly designed to do relatively little.
Instances of OpenLayers.Tile.Image are used to manage the image tiles used by various layers.
Instances of OpenLayers.Tile.WFS are used to manage the image tiles used by various layers.
OpenLayers.Bounds.oppositeQuadrant = function(quadrant)
Get the opposite quadrant for a given quadrant string.
{Object} A reference to options passed to the constructor.
{Object} An optional object whose properties will be set on the layer.
{Object} Any options sent to the constructor.
{Object} Any options sent to the constructor.
OPTIONS: function(config)
Send an HTTP OPTIONS request.
{Array<String>} This is an array of node id’s stored in the order that they should show up on screen.
{OpenLayers.Geometry.Point} Location of the first mouse down
Create a new parser for OSM.
{Boolean} Should the control be used for zooming out?
out: function(evt)
This method is called during the handling of the mouse out event.
out: function(evt)
Finish drawing the feature.
outFeature: function(feature)
Called when the feature handler detects a mouse-out on a feature.
outFeature: function(feature)
Called on out of a selected feature.
overFeature: function(feature)
Called when the feature handler detects a mouse-over on a feature.
overFeature: function(feature)
Called on over a feature.
{Object} Hashtable of default parameter key/value pairs for untiled layer
Create a new overview map
{OpenLayers.Map} A reference to the overview map itself.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General15.html b/openlayers/doc/devdocs/index/General15.html new file mode 100644 index 0000000..fc6af81 --- /dev/null +++ b/openlayers/doc/devdocs/index/General15.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
P
 padding, OpenLayers.Popup
 paddingForPopups, OpenLayers.Map
 page, OpenLayers.Strategy.Paging
 pageCount, OpenLayers.Strategy.Paging
 pageLength, OpenLayers.Strategy.Paging
 pageNext, OpenLayers.Strategy.Paging
 pageNum, OpenLayers.Strategy.Paging
 pagePositon, Util
 pagePrevious, OpenLayers.Strategy.Paging
 paging, OpenLayers.Strategy.Paging
 Paging, OpenLayers.Strategy.Paging.OpenLayers.Strategy
 pan, OpenLayers.Map
 Pan, OpenLayers.Control.Pan.OpenLayers.Control
 panDuration, OpenLayers.Map
 pane, OpenLayers.Layer.EventPane
 Panel, OpenLayers.Control.Panel.OpenLayers.Control
 panIntoView, OpenLayers.Popup
 panMap, OpenLayers.Control.DragPan
 panMapDone, OpenLayers.Control.DragPan
 panMapIfOutOfView
 panMethod, OpenLayers.Map
 panned, OpenLayers.Control.DragPan
 PanPanel, OpenLayers.Control.PanPanel.OpenLayers.Control
 panRatio, OpenLayers.Map
 panTo, OpenLayers.Map
 panTween, OpenLayers.Map
 PanZoom, OpenLayers.Control.PanZoom.OpenLayers.Control
 PanZoomBar, OpenLayers.Control.PanZoomBar.OpenLayers.Control
 params
 parent, OpenLayers.Geometry
 parseAttributes
 parseCoords, OpenLayers.Format.GeoJSON
 parseData
 parseEnvelope, OpenLayers.Format.ArcXML
 parseExtendedData, OpenLayers.Format.KML
 parseFeature
 parseFeatures
 parseGeometry
 parseLinks, OpenLayers.Format.KML
 parsePointGeometry, OpenLayers.Format.ArcXML
 parseProperty, OpenLayers.Format.KML
 parser
 parseResponse, OpenLayers.Format.ArcXML
 parseStyle, OpenLayers.Format.KML
 parseStyleMaps, OpenLayers.Format.KML
 parseStyles, OpenLayers.Format.KML
 parseXMLString
 passesTolerance
 passEventToSlider, OpenLayers.Control.PanZoomBar
 Path, OpenLayers.Handler.Path.OpenLayers.Handler
 performedDrag, OpenLayers.Control.MouseDefaults
 Permalink, OpenLayers.Control.Permalink.OpenLayers.Control
 persist
 Pixel, OpenLayers.Pixel.OpenLayers
 pixelToBounds, OpenLayers.Control.GetFeature
 pixelTolerance
 placemarksDesc, OpenLayers.Format.KML
 play, OpenLayers.Tween
 playing, OpenLayers.Tween
 point
 Point
 PointTrack, OpenLayers.Layer.PointTrack.OpenLayers
 polygon
 Polygon
 popup, OpenLayers.Feature
 Popup, OpenLayers.Popup.OpenLayers
 popupClass, OpenLayers.Feature
 popups, OpenLayers.Map
 popupSize, OpenLayers.Layer.GeoRSS
 position
 positionBlocks
 positionImage, OpenLayers.Tile.Image
 POST, OpenLayers.Request
 postDraw
 postReadFiltering, OpenLayers.Protocol.SQL
 poweredBy, OpenLayers.Layer.Google
 precedence, OpenLayers.Control.Snapping
 precision, Util
 preFeatureInsert, OpenLayers.Layer.Vector
 prefix, OpenLayers.Control.MousePosition
 preload, OpenLayers.Strategy.Fixed
 pretty, OpenLayers.Format.JSON
 previous, OpenLayers.Control.NavigationHistory
 previousOptions, OpenLayers.Control.NavigationHistory
 previousStack, OpenLayers.Control.NavigationHistory
 previousTrigger, OpenLayers.Control.NavigationHistory
 priv, OpenLayers.Protocol.Response
 processXMLNode, OpenLayers.Feature.WFS
 profile, OpenLayers.Console
 profileEnd, OpenLayers.Console
 proj, OpenLayers.Projection
 projCode, OpenLayers.Projection
 projectForward, OpenLayers.Layer.SphericalMercator
 projectInverse, OpenLayers.Layer.SphericalMercator
 projection
 Projection, OpenLayers.Projection.OpenLayers
 Properties
GlobalOpenLayersOpenLayers.AjaxOpenLayers.Ajax.RequestOpenLayers.Ajax.RespondersOpenLayers.Ajax.ResponseOpenLayers.BoundsOpenLayers.ControlOpenLayers.Control.ArgParserOpenLayers.Control.AttributionOpenLayers.Control.ButtonOpenLayers.Control.DragFeatureOpenLayers.Control.DragPanOpenLayers.Control.DrawFeatureOpenLayers.Control.GetFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.MeasureOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.OverviewMapOpenLayers.Control.PanOpenLayers.Control.PanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.ScaleLineOpenLayers.Control.SelectFeatureOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.Control.WMSGetFeatureInfoOpenLayers.Control.ZoomBoxOpenLayers.Control.ZoomInOpenLayers.Control.ZoomOutOpenLayers.Control.ZoomToMaxExtentOpenLayers.ElementsIndexerOpenLayers.EventOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Filter.ComparisonOpenLayers.Filter.FeatureIdOpenLayers.Filter.LogicalOpenLayers.Filter.SpatialOpenLayers.FormatOpenLayers.Format.ArcXMLOpenLayers.Format.FilterOpenLayers.Format.Filter.v1OpenLayers.Format.Filter.v1_0_0OpenLayers.Format.Filter.v1_1_0OpenLayers.Format.GeoJSONOpenLayers.Format.GeoRSSOpenLayers.Format.GMLOpenLayers.Format.GML.BaseOpenLayers.Format.GML.v2OpenLayers.Format.GML.v3OpenLayers.Format.GPXOpenLayers.Format.JSONOpenLayers.Format.KMLOpenLayers.Format.OSMOpenLayers.Format.SLDOpenLayers.Format.SLD.v1OpenLayers.Format.SLD.v1_0_0OpenLayers.Format.TextOpenLayers.Format.WFSOpenLayers.Format.WFSCapabilitiesOpenLayers.Format.WFST.v1OpenLayers.Format.WFST.v1_0_0OpenLayers.Format.WFST.v1_1_0OpenLayers.Format.WMCOpenLayers.Format.WMC.v1_0_0OpenLayers.Format.WMC.v1_1_0OpenLayers.Format.WMSCapabilitiesOpenLayers.Format.WMSCapabilities/v1_1_0OpenLayers.Format.WMSCapabilities/v1_1_1OpenLayers.Format.WMSDescribeLayerOpenLayers.Format.WMSGetFeatureInfoOpenLayers.Format.XMLOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.Geometry.CurveOpenLayers.Geometry.LinearRingOpenLayers.Geometry.MultiLineStringOpenLayers.Geometry.MultiPointOpenLayers.Geometry.MultiPolygonOpenLayers.Geometry.PointOpenLayers.Geometry.PolygonOpenLayers.Geometry.RectangleOpenLayers.HandlerOpenLayers.Handler.BoxOpenLayers.Handler.ClickOpenLayers.Handler.DragOpenLayers.Handler.FeatureOpenLayers.Handler.HoverOpenLayers.handler.KeyboardOpenLayers.Handler.MouseWheelOpenLayers.Handler.PathOpenLayers.Handler.PointOpenLayers.Handler.RegularPolygonOpenLayers.IconOpenLayers.LangOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.EventPaneOpenLayers.Layer.GeoRSSOpenLayers.Layer.GMLOpenLayers.Layer.GoogleOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.KaMapOpenLayers.Layer.MapGuideOpenLayers.Layer.MapServer.UntiledOpenLayers.Layer.MarkersOpenLayers.Layer.MultiMapOpenLayers.Layer.TextOpenLayers.Layer.TileCacheOpenLayers.Layer.TMSOpenLayers.Layer.VectorOpenLayers.Layer.Vector.RootContainerOpenLayers.Layer.VirtualEarthOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.Layer.WMS.UntiledOpenLayers.Layer.WorldWindOpenLayers.Layer.XYZOpenLayers.Layer.YahooOpenLayers.LonLatOpenLayers.MapOpenLayers.MarkerOpenLayers.Marker.BoxOpenLayers.NumberOpenLayers.PixelOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.AnchoredBubbleOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProjectionOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.ResponseOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.Protocol.WFS.v1_0_0OpenLayers.Protocol.WFS.v1_1_0OpenLayers.RendererOpenLayers.Renderer.CanvasOpenLayers.Renderer.ElementsOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RequestOpenLayers.RuleOpenLayers.SizeOpenLayers.StrategyOpenLayers.Strategy.BBOXOpenLayers.Strategy.ClusterOpenLayers.Strategy.FixedOpenLayers.Strategy.PagingOpenLayers.Strategy.SaveOpenLayers.StringOpenLayers.StyleOpenLayers.StyleMapOpenLayers.TileOpenLayers.Tile.ImageOpenLayers.Tile.WFSOpenLayers.Tween
 Properties and Functions
 property
 propertyStyles, OpenLayers.Style
 protocol
 Protocol, OpenLayers.Protocol.OpenLayers
 PUT, OpenLayers.Request
 px
+ +
{int or OpenLayers.Bounds} An extra opportunity to specify internal padding of the content div inside the popup.
{OpenLayers.Bounds} Outside margin of the popup.
page: function(start,
event)
Display the page starting at the given index from the cache.
pageCount: function()
Get the total count of pages given the current cache of features.
pageLength: function(newLength)
Gets or sets page length.
pageNext: function(event)
Display the next page of features.
pageNum: function()
Get the zero based page number.
Calculates the position of an element on the page.
pagePrevious: function()
Display the previous page of features.
{Boolean} The strategy is currently changing pages.
Create a new paging strategy.
pan: function(dx,
dy,
options)
Allows user to pan by a value of screen pixels
Control which handles the panning (in any of the cardinal directions) of the map by a set px distance.
{Integer} The number of steps to be passed to the OpenLayers.Tween.start() method when the map is panned.
{DOMElement} A reference to the element that controls the events.
Create a new control panel.
panIntoView: function()
Pans the map such that the popup is totaly viewable (if necessary)
panMap: function(xy)
panMapDone: function(xy)
Finish the panning operation.
{Boolean} When drawn, pan map such that the entire popup is visible in the current viewport (if necessary).
{Boolean} Framed Cloud does pan into view by default.
{Function} The Easing function to be used for tweening.
{Boolean} The map moved.
Add the four directional pan buttons.
{Float} The ratio of the current extent within which panning will tween.
panTo: function(lonlat)
Allows user to pan to a new lonlat If the new lonlat is in the current extent the map will slide smoothly
{OpenLayers.Tween} Animated panning tween object, see panTo()
{Object} Hashtable of key/value parameters
{Object} Parameters of GET requests, read-only, set through the options passed to the constructor, Example: {‘bbox’: ‘5,5,5,5’}
{OpenLayers.Geometry}This is set when a Geometry is added as component of another geometry
parseAttributes: function(node,
type)
parseAttributes: function(node)
parseAttributes: function(node)
parseAttributes: function(node)
parseAttributes: function(node)
Object with properties corresponding to the GeoJSON geometry types.
parseData: function(data,
options)
Read data from a string, and return a list of features.
parseData: function(ajaxRequest)
Parse the data returned from the Events call.
parseData: function(ajaxRequest)
parseEnvelope: function(env,
arr)
Parse an array of coordinates into an ArcXML envelope structure.
parseExtendedData: function(node)
Parse ExtendedData from KML.
parseFeature: function(obj)
Convert a feature object from GeoJSON into an OpenLayers.Feature.Vector.
parseFeature: function(node)
This function is the core of the GML parsing code in OpenLayers.
parseFeature: function(node)
This function is the core of the KML parsing code in OpenLayers.
parseFeatures: function(nodes,
options)
Loop through all Placemark nodes and parse them.
parseFeatures: function(request)
Read HTTP response body and return features.
parseFeatures: function(request)
Read HTTP response body and return features
parseGeometry: function(obj)
Convert a geometry object from GeoJSON into an OpenLayers.Geometry.
Properties of this object are the functions that parse geometries based on their type.
Properties of this object are the functions that parse geometries based on their type.
parseGeometry: function(node)
Parse the geometry out of the node using Format.GML
parseLinks: function(nodes,
options)
Finds URLs of linked KML documents and fetches them
parsePointGeometry: function(node)
parseProperty: function(xmlNode,
namespace,
tagName)
Convenience method to find a node and return its value
{Object} Instance of the versioned parser.
{Object} Instance of the versioned parser.
{Object} Instance of the versioned parser.
{OpenLayers.Format} A cached versioned format used for reading.
parseResponse: function(data)
Take an ArcXML response, and parse in into this object’s internal properties.
parseStyle: function(node)
Parses the children of a Style node and builds the style hash accordingly
parseStyleMaps: function(nodes,
options)
Looks for Style nodes in the data and parses them Also parses StyleMap nodes, but only uses the ‘normal’ key
parseStyles: function(nodes,
options)
Looks for Style nodes in the data and parses them Also parses StyleMap nodes, but only uses the ‘normal’ key
OpenLayers.parseXMLString = function(text)
Parse XML into a doc structure
passesTolerance: function(evt)
Determine whether the event is within the optional pixel tolerance.
passesTolerance: function(px)
Determine whether the mouse move is within the optional pixel tolerance.
passEventToSlider:function(evt)
This function is used to pass events that happen on the div, or the map, through to the slider, which then does its moving thing.
Create a new path hander
{Boolean}
{Boolean} Keep the temporary measurement sketch drawn after the measurement is complete.
{Boolean} Leave the feature rendered until destroyFeature is called.
{Boolean} Leave the feature rendered until clear is called.
Create a new OpenLayers.Pixel instance
pixelToBounds: function(pixel)
Takes a pixel as argument and creates bounds after adding the clickTolerance.
{Number} Maximum number of pixels between mouseup and mousedown for an event to be considered a click.
{String} Name of the placemarks.
play: function()
Calls the appropriate easing method
{Boolean} Tells if the easing is currently playing
{OpenLayers.Geometry.Point} The currently snapped vertex.
Return an array of coordinates from a point.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
Given an OpenLayers point geometry, create a GML point.
Given a GML node representing a point geometry, create an OpenLayers point geometry.
Given an OpenLayers point geometry, create a KML point.
Given a KML node representing a point geometry, create an OpenLayers point geometry.
{OpenLayers.Feature.Vector} The currently drawn point
Construct a point geometry.
Create a new point handler.
Constructor for a new OpenLayers.PointTrack instance.
Return an array of linear ring arrays from a polygon.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
Given an OpenLayers polygon geometry, create a GML polygon.
Given a GML node representing a polygon geometry, create an OpenLayers polygon geometry.
Given an OpenLayers polygon geometry, create a KML polygon.
Given a KML node representing a polygon geometry, create an OpenLayers polygon geometry.
Constructor for a Polygon geometry.
Create a Polygon Handler.
{OpenLayers.Popup}
Create a popup.
{OpenLayers.Class} The class which will be used to instantiate a new Popup.
{Array(OpenLayers.Popup)} List of popups associated with the map
{OpenLayers.Size} This determines the size of GeoRSS popups.
{OpenLayers.Pixel}
{OpenLayers.Pixel} Top Left pixel of the tile
{Object} Hash of different position blocks (Object/Hashs).
{Object} Hash of differen position blocks, keyed by relativePosition two-character code string (ie “tl”, “tr”, “bl”, “br”)
positionImage: function()
Using the properties currenty set on the layer, position the tile correctly.
POST: function(config)
Send a POST request.
postDraw: function(node)
Things that have do be done after the geometry node is appended to its parent node.
postDraw: function(node)
Some versions of Internet Explorer seem to be unable to set fillcolor and strokecolor to “none” correctly before the fill node is appended to a visible vml node.
{Boolean} Whether the filter (if there’s one) must be applied after the features have been read from the database; for example the BBOX strategy passes the read method a BBOX spatial filter, if postReadFiltering is true every feature read from the database will go through the BBOX spatial filter, which can be costly; defaults to true.
{DOMElement} Div for Google’s powered by logo and link
{Array} List representing precedence of different snapping types.
{Number} The number of significant digits to retain to avoid floating point precision errors.
preFeatureInsert: function(feature)
method called before a feature is inserted.
{String}
{Boolean} Load data before layer made visible.
{Boolean} Serialize with extra whitespace for structure.
{OpenLayers.Control} A button type control whose trigger method restores the previous state managed by this control.
{Object} Set this property on the options argument of the constructor to set optional properties on the previous control.
{Array} List of items in the history.
previousTrigger: function()
Restore the previous state.
processXMLNode: function(xmlNode)
When passed an xmlNode, parses it for a GML point, and passes back an object describing that point.
profile: function()
Turns on the JavaScript profiler.
profileEnd: function()
Turns off the JavaScript profiler and prints its report.
{Object} Proj4js.Proj instance.
{String}
projectForward: function(point)
Given an object with x and y properties in EPSG:4326, modify the x,y properties on the object to be the Spherical Mercator projected coordinates.
projectInverse: function(point)
Given an object with x and y properties in Spherical Mercator, modify the x,y properties on the object to be the unprojected coordinates.
{OpenLayers.Projection} or {String} Set in the layer options to override the default projection string this layer - also set maxExtent, maxResolution, and units if appropriate.
{String} Set in the map options to override the default projection string this map - also set maxExtent, maxResolution, and units if appropriate.
This class offers several methods for interacting with a wrapped pro4js projection object.
{String} name of the context property to compare
{String} Name of the context property to compare.
{Hash of Boolean} cache of style properties that need to be parsed for propertyNames.
{OpenLayers.Protocol} Required.
{OpenLayers.Protocol} Optional protocol for the layer.
Abstract class for vector protocols.
PUT: function(config)
Send an HTTP PUT request.
{OpenLayers.Pixel}
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General16.html b/openlayers/doc/devdocs/index/General16.html new file mode 100644 index 0000000..d87eee7 --- /dev/null +++ b/openlayers/doc/devdocs/index/General16.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
Q
 queryVisible, OpenLayers.Control.WMSGetFeatureInfo
+ +
{Boolean} If true, filter out hidden layers when searching the map for layers to query.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General17.html b/openlayers/doc/devdocs/index/General17.html new file mode 100644 index 0000000..0abce10 --- /dev/null +++ b/openlayers/doc/devdocs/index/General17.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
R
 rad, Util
 radius, OpenLayers.Handler.RegularPolygon
 radiusHandle, OpenLayers.Control.ModifyFeature
 raiseLayer, OpenLayers.Map
 ratio
 read
 read_cap_Abstract
 read_cap_Capability, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_DCPType, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_FeatureType, OpenLayers.Format.WFSCapabilities.v1
 read_cap_FeatureTypeList, OpenLayers.Format.WFSCapabilities.v1
 read_cap_Format, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_GetMap, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_LatLonBoundingBox, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_Layer, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_LegendURL, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_Name
 read_cap_OnlineResource, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_Request, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_ScaleHint, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_Service, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_Style, OpenLayers.Format.WMSCapabilities.v1_1
 read_cap_Title
 read_FeatureInfoResponse, OpenLayers.Format.WMSGetFeatureInfo
 read_msGMLOutput, OpenLayers.Format.WMSGetFeatureInfo
 read_ol_displayInLayerSwitcher, OpenLayers.Format.WMC.v1
 read_ol_isBaseLayer, OpenLayers.Format.WMC.v1
 read_ol_maxExtent, OpenLayers.Format.WMC.v1
 read_ol_numZoomLevels, OpenLayers.Format.WMC.v1
 read_ol_opacity, OpenLayers.Format.WMC.v1
 read_ol_singleTile, OpenLayers.Format.WMC.v1
 read_ol_transparent, OpenLayers.Format.WMC.v1
 read_ol_units, OpenLayers.Format.WMC.v1
 read_sld_MaxScaleDenominator, OpenLayers.Format.WMC.v1_1_0
 read_sld_MinScaleDenominator, OpenLayers.Format.WMC.v1_1_0
 read_sld_StyledLayerDescriptor, OpenLayers.Format.WMC.v1
 read_wmc_Abstract, OpenLayers.Format.WMC.v1
 read_wmc_BoundingBox, OpenLayers.Format.WMC.v1
 read_wmc_Extension, OpenLayers.Format.WMC.v1
 read_wmc_Format, OpenLayers.Format.WMC.v1
 read_wmc_FormatList, OpenLayers.Format.WMC.v1
 read_wmc_General, OpenLayers.Format.WMC.v1
 read_wmc_LatLonBoundingBox, OpenLayers.Format.WMC.v1
 read_wmc_Layer, OpenLayers.Format.WMC.v1
 read_wmc_LayerList, OpenLayers.Format.WMC.v1
 read_wmc_LegendURL, OpenLayers.Format.WMC.v1
 read_wmc_MetadataURL, OpenLayers.Format.WMC.v1
 read_wmc_Name, OpenLayers.Format.WMC.v1
 read_wmc_OnlineResource, OpenLayers.Format.WMC.v1
 read_wmc_Server, OpenLayers.Format.WMC.v1
 read_wmc_SLD, OpenLayers.Format.WMC.v1
 read_wmc_Style, OpenLayers.Format.WMC.v1
 read_wmc_StyleList, OpenLayers.Format.WMC.v1
 read_wmc_Title, OpenLayers.Format.WMC.v1
 readChildNodes, OpenLayers.Format.XML
 readers
 readNode, OpenLayers.Format.XML
 readOgcExpression, OpenLayers.Format.Filter.v1
 readRestriction
 readSpatial, OpenLayers.Format.Filter.v1
 readWithPOST, OpenLayers.Protocol.HTTP
 Rectangle, OpenLayers.Geometry.Rectangle.OpenLayers.Geometry
 rectDrag, OpenLayers.Control.OverviewMap
 redraw
 redrawBackgroundNode, OpenLayers.Renderer.Elements
 redrawNode, OpenLayers.Renderer.Elements
 refresh
 regex2value, OpenLayers.Filter.Comparison
 regExes
 register
 registerEvents, OpenLayers.Popup
 registerImageListeners, OpenLayers.Popup
 registerPriority, OpenLayers.Events
 registerWheelEvents, OpenLayers.Control.MouseDefaults
 registry, OpenLayers.Control.NavigationHistory
 RegularPolygon, OpenLayers.Handler.RegularPolygon.OpenLayers.Handler
 remove
 removeBox, OpenLayers.Handler.Box
 removeButtons, OpenLayers.Control.PanZoom
 removeByGeometry, OpenLayers.Control.Split
 removeClass, OpenLayers.Element
 removeComponent
 removeComponents, OpenLayers.Geometry.Collection
 removeControl, OpenLayers.Map
 removeExcessTiles, OpenLayers.Layer.Grid
 removeFeatures, OpenLayers.Layer.Vector
 removeItem, Util
 removeLayer, OpenLayers.Map
 removeMap
 removeMarker
 removePoint
 removePopup, OpenLayers.Map
 removeTail, Util
 removeTarget, OpenLayers.Control.Snapping
 removeTargetLayer, OpenLayers.Control.Snapping
 removeText
 removeTileMonitoringHooks
 removeTimeout, OpenLayers.Handler.Drag
 removeZoomBox, OpenLayers.Control.MouseDefaults
 render, OpenLayers.Map
 renderer, OpenLayers.Layer.Vector
 Renderer, OpenLayers.Renderer.OpenLayers
 rendererOptions, OpenLayers.Layer.Vector
 rendererRoot, OpenLayers.Renderer.Elements
 renderers, OpenLayers.Layer.Vector
 renderIntent
 renderTile, OpenLayers.Tile.Image
 reportError, OpenLayers.Layer.Vector
 reproject
 reqFeatures, OpenLayers.Protocol.Response
 request
 Request, OpenLayers.Ajax.Request.OpenLayers.Ajax
 requestFailure, OpenLayers.Layer.GML
 requestSuccess
 requestType, OpenLayers.Protocol.Response
 resetBackBuffer, OpenLayers.Tile.Image
 resetLayersZIndex, OpenLayers.Map
 resetRoots, OpenLayers.Layer.Vector.RootContainer
 resetVertices, OpenLayers.Control.ModifyFeature
 resFactor, OpenLayers.Strategy.BBOX
 RESHAPE, OpenLayers.Control.ModifyFeature
 resize
 RESIZE, OpenLayers.Control.ModifyFeature
 resolution
 resolutionFactor, OpenLayers.Control.OverviewMap
 resolutions
 RESOLUTIONS
 responders, OpenLayers.Ajax.Responders
 respondToReadyState, OpenLayers.Ajax.Request
 response
 Response
 restore, OpenLayers.Control.NavigationHistory
 restoring, OpenLayers.Control.NavigationHistory
 restrictedExtent, OpenLayers.Map
 right, OpenLayers.Bounds
 rightclick, OpenLayers.Handler.Click
 rightclickTimerId, OpenLayers.Handler.Click
 root
 RootContainer, OpenLayers.Layer.Vector.RootContainer.OpenLayers.Layer.Vector
 rootPrefix, OpenLayers.Format.WMC.v1
 rotate
 ROTATE, OpenLayers.Control.ModifyFeature
 rounded, OpenLayers.Popup.AnchoredBubble
 rssns, OpenLayers.Format.GeoRSS
 Rule, OpenLayers.Rule.OpenLayers
 rules, OpenLayers.Style
 runChildNodes
+ +
OpenLayers.Util.rad = function(x)
{Float} Optional radius in map units of the regular polygon.
{OpenLayers.Feature.Vector} A handle for rotating/resizing a feature.
raiseLayer: function (layer,
delta)
Change the index of the given layer by delta.
{Float} Used only when in single-tile mode, this specifies the ratio of the size of the single tile to the size of the map.
{Float} the ratio of image/tile size to map size (this is the untiled buffer)
{Float} The ratio of the data bounds to the viewport bounds (in each dimension).
read: function(data)
read: function(data)
Read data from a string, and return an object whose type depends on the subclass.
read: function(data)
Read data from a string, and return an response.
read: function(data)
Read data from a string of ArcXML, and return a set of OpenLayers features.
read: function(data)
Read and Filter doc and return an object representing the Filter.
read: function(data)
read: function(json,
type,
filter)
Deserialize a GeoJSON string.
read: function(data)
Read data from a string, and return a list of features.
read: function(data)
read: function(doc)
Return a list of features from a GPX doc
read: function(json,
filter)
Deserialize a json string.
read: function(data)
Read data from a string, and return a list of features.
read: function(data,
options)
Read and SLD doc and return an object representing the SLD.
read: function(data,
options)
read: function(text)
Return a list of features from a Tab Seperated Values text string.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Parse the response from a transaction.
read: function(wkt)
Deserialize a WKT string and return a vector feature or an array of vector features.
read: function(data,
options)
Read WMC data from a string, and return an object with map properties and a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read capabilities data from a string, and return a list of layers.
read: function(data)
Read DescribeLayer data from a string, and return the response.
read: function(data)
Read DescribeLayer data from a string, and return the response.
read: function(data)
Read WMS GetFeatureInfo data from a string, and return an array of features
read: function()
Construct a request for reading new features.
read: function(options)
Construct a request for reading new features.
read: function(options)
Read all features from the database and return a OpenLayers.Protocol.Response instance.
read: function(options)
Construct a request for reading new features.
read_cap_Abstract: function(obj,
node)
read_cap_Abstract: function(obj,
node)
read_cap_Capability: function(capabilities,
node)
read_cap_DCPType: function(obj,
node)
Super simplified HTTP href extractor.
read_cap_FeatureType: function(featureTypeList,
node,
parentLayer)
read_cap_FeatureTypeList: function(request,
node)
read_cap_Format: function(obj,
node)
read_cap_GetMap: function(request,
node)
read_cap_LatLonBoundingBox: function(layer,
node)
read_cap_Layer: function(capability,
node,
parentLayer)
read_cap_LegendURL: function(style,
node)
read_cap_Name: function(obj,
node)
read_cap_Name: function(obj,
node)
read_cap_OnlineResource: function(obj,
node)
read_cap_Request: function(obj,
node)
read_cap_ScaleHint: function(layer,
node)
The Layer ScaleHint element has min and max attributes that relate to the minimum and maximum resolution that the server supports.
read_cap_Service: function(capabilities,
node)
read_cap_Style: function(layer,
node)
read_cap_Title: function(obj,
node)
read_cap_Title: function(obj,
node)
read_FeatureInfoResponse: function(data)
Parse FeatureInfoResponse nodes.
read_msGMLOutput: function(data)
Parse msGMLOutput nodes.
read_ol_displayInLayerSwitcher: function(layerInfo,
node)
read_ol_isBaseLayer: function(layerInfo,
node)
read_ol_maxExtent: function(obj,
node)
read_ol_numZoomLevels: function(layerInfo,
node)
read_ol_opacity: function(layerInfo,
node)
read_ol_singleTile: function(layerInfo,
node)
read_ol_transparent: function(layerInfo,
node)
read_ol_units: function(layerInfo,
node)
read_sld_MaxScaleDenominator: function(layerInfo,
node)
Read a sld:MaxScaleDenominator node.
read_sld_MinScaleDenominator: function(layerInfo,
node)
Read a sld:MinScaleDenominator node.
read_sld_StyledLayerDescriptor: function(sld,
node)
read_wmc_Abstract: function(obj,
node)
read_wmc_BoundingBox: function(context,
node)
read_wmc_Extension: function(obj,
node)
read_wmc_Format: function(layerInfo,
node)
read_wmc_FormatList: function(layerInfo,
node)
read_wmc_General: function(context,
node)
read_wmc_LatLonBoundingBox: function(layer,
node)
read_wmc_Layer: function(context,
node)
read_wmc_LayerList: function(context,
node)
read_wmc_LegendURL: function(style,
node)
read_wmc_MetadataURL: function(layerInfo,
node)
read_wmc_Name: function(obj,
node)
read_wmc_OnlineResource: function(obj,
node)
read_wmc_Server: function(layerInfo,
node)
read_wmc_SLD: function(style,
node)
read_wmc_Style: function(layerInfo,
node)
read_wmc_StyleList: function(layerInfo,
node)
read_wmc_Title: function(obj,
node)
readChildNodes: function(node,
obj)
Shorthand for applying the named readers to all children of a node.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
readNode: function(node,
obj)
Shorthand for applying one of the named readers given the node namespace and local name.
readOgcExpression: function(node)
Limited support for OGC expressions.
readRestriction: function(node,
obj)
Reads restriction defined in the child nodes of a restriction element
readSpatial: function(node,
obj,
type)
Read a {OpenLayers.Filter.Spatial} filter.
{Boolean} true if read operations are done with POST requests instead of GET, defaults to false.
rectDrag: function(px)
Handle extent rectangle drag
redraw: function()
Goes through and takes the current state of the Map and rebuilds the control to display that state.
redraw: function(evt)
redraw: function()
redraw: function()
clear the div and start over.
redraw: function()
Redraws the layer.
redraw: function(force)
Redraws the layer.
redraw: function()
The real ‘meat’ of the function: any time things have changed, redraw() can be called to loop over all the data and (you guessed it) redraw it.
redrawBackgroundNode: function(id,
geometry,
style,
featureId)
Redraws the node using special ‘background’ style properties.
redrawNode: function(id,
geometry,
style,
featureId)
refresh: function(obj)
Ask the layer to request features again and redraw them.
refresh: function()
Refreshes all the features of the layer
regex2value: function()
Convert the value of this rule from a regular expression string into an ogc literal string using a wildCard of *, a singleChar of ., and an escape of !.
Compiled regular expressions for manipulating strings.
Compiled regular expressions for manipulating strings.
register: function(responderToAdd)
register: function (type,
obj,
func)
Register an event on the events object.
register: function (name,
method)
register an event on the map
registerEvents:function()
Registers events on the popup.
registerImageListeners: function()
Called when an image contained by the popup loaded.
registerPriority: function (type,
obj,
func)
Same as register() but adds the new listener to the front of the events queue instead of to the end.
registerWheelEvents: function()
{Object} An object with keys corresponding to event types.
Create a new regular polygon handler.
remove: function(element)
Remove the specified element from the DOM.
remove: function(node)
remove: function(type)
Remove all listeners for a given event type.
remove: function(feature)
Takes a feature, and generates a WFS-T Transaction “Delete”
removeBox: function()
Remove the zoombox from the screen and nullify our reference to it.
removeButtons: function()
removeByGeometry: function(features,
geometry)
Remove a feature from a list based on the given geometry.
removeClass: function(element,
name)
Remove a CSS class name from an element.
removeComponent: function(component)
Remove a component from this geometry.
removeComponent: function(point)
Removes a point from geometry components.
removeComponent: function(point)
Only allows removal of a point if there are three or more points in the linestring.
removeComponents: function(components)
Remove components from this geometry.
removeControl: function (control)
Remove a control from the map.
removeExcessTiles: function(rows,
columns)
When the size of the map or the buffer changes, we may need to remove some excess rows and columns.
removeFeatures: function(features,
options)
Remove features from the layer.
OpenLayers.Util.removeItem = function(array,
item)
Remove an object from an array.
removeLayer: function(layer,
setNewBaseLayer)
Removes a layer from the map by removing its visual element (the layer.div property), then removing it from the map’s internal list of layers, setting the layer’s map property to null.
removeMap: function(map)
Just as setMap() allows each layer the possibility to take a personalized action on being added to the map, removeMap() allows each layer to take a personalized action on being removed from it.
removeMap: function(map)
On being removed from the map, we’ll like to remove the invisible ‘pane’ div that we added to it on creation.
removeMap: function(map)
On being removed from the map, also remove termsOfUse and poweredBy divs
removeMap: function(map)
The layer has been removed from the map.
removeMap: function(map)
removeMarker: function(marker)
removeMarker: function(marker)
removePoint: function(point)
Wrapper for OpenLayers.Geometry.Collection.removeComponent
removePoint: function()
Destroy the temporary point.
removePopup: function(popup)
OpenLayers.Util.removeTail = function(url)
Takes a url and removes everything after the ?
removeTarget: function(target)
Remove a target.
removeTargetLayer: function(layer)
Remove a target layer.
removeText: function(featureId)
Function for removing text labels.
removeText: function(featureId)
Removes a label
removeTileMonitoringHooks: function(tile)
This function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks()
removeTileMonitoringHooks: function(tile)
This function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks.
removeTileMonitoringHooks: function(tile)
This function takes a tile as input and removes the tile hooks that were added in addTileMonitoringHooks()
removeTimeout: function()
Private.
removeZoomBox: function()
Remove the zoombox from the screen and nullify our reference to it.
render: function(div)
Render the map to a specified container.
{OpenLayers.Renderer}
{Object} Options for the renderer.
{DOMElement}
{Array(String)} List of supported Renderer classes.
{String} key used to retrieve the select style from the layer’s style map.
{String} rendering intent currently being used
renderTile: function()
Internal function to actually initialize the image tile, position it correctly, and set its url.
{Boolean} report friendly error message when loading of renderer fails.
Deprecated.
Deprecated.
{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features provided by the user and placed in the request by the protocol.
request: function(url)
request: function(bounds,
options)
Sends a GetFeature request to the WFS
request: function(clickPosition,
options)
Sends a GetFeatureInfo request to the WMS
A get_image request destined for an ArcIMS server.
{OpenLayers.Request.XMLHttpRequest}
requestFailure: function(request)
Process a failed loading of GML.
requestSuccess:function(request)
Process GML after it has been loaded.
requestSuccess:function(request)
Called on return from request succcess.
{String} The type of request this response corresponds to.
resetBackBuffer: function()
Triggered by two different events, layer loadend, and tile loadend.
resetLayersZIndex: function()
Reset each layer’s z-index based on layer’s array index
resetRoots: function()
Resets the root nodes back into the layers they belong to.
resetVertices: function()
{Float} Optional factor used to determine when previously requested features are invalid.
{Integer} Constant used to make the control work in reshape mode
resize: function(scale,
origin,
ratio)
Resize a geometry relative to some origin.
resize: function(scale,
origin,
ratio)
Resize a geometry relative to some origin.
resize: function(scale,
origin,
ratio)
Resize a point relative to some origin.
{Integer} Constant used to make the control work in resize mode
{Float} The map resolution for the previously considered snap.
{Float}
{Float} The resolution of the map.
{Float} cache of current map resolution
{Float} The current data resolution.
{Float} The resolution (map units per pixel) of the current cluster set.
{Object}
{Array} A list of map resolutions (map units per pixel) in descending order.
{Array(Float)} A list of map resolutions (map units per pixel) in descending order.
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Array(Float)} Hardcode these resolutions so that they are more closely tied with the standard wms projection
{Array}
respondToReadyState: function(readyState)
A parsed response from an ArcIMS server.
{OpenLayers.Protocol.Response} The protocol response object returned by the layer protocol.
restore: function(state)
Update the state with the given object.
{Boolean} Currently restoring a history state.
{OpenLayers.Bounds} Limit map navigation to this extent where possible.
{Number} Maximum horizontal coordinate.
rightclick: function(evt)
Handle rightclick.
{Number} The id of the right mouse timeout waiting to clear the delayedEvent.
{DOMElement}
{DOMElement}
Create a new root container for multiple vector layer.
{String} Prefix on the root node that maps to the context namespace URI.
rotate: function(angle,
origin)
Rotate a geometry around some origin
rotate: function(angle,
origin)
Rotate a geometry around some origin
rotate: function(angle,
origin)
Rotate a point around another.
{Integer} Constant used to make the control work in rotate mode
{Boolean} Has the popup been rounded yet?
{String} RSS namespace to use.
Creates a Rule.
{Array(OpenLayers.Rule)}
runChildNodes: function(obj,
node)
runChildNodes: function(obj,
node)
runChildNodes: function(obj,
node)
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General18.html b/openlayers/doc/devdocs/index/General18.html new file mode 100644 index 0000000..1eab125 --- /dev/null +++ b/openlayers/doc/devdocs/index/General18.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
S
 safeStopPropagation, Util
 save, OpenLayers.Strategy.Save
 Save, OpenLayers.Strategy.Save.OpenLayers.Strategy
 saveFeatureState, OpenLayers.Protocol.SQL.Gears
 scale, OpenLayers.Bounds
 Scale, OpenLayers.Control.Scale.OpenLayers.Control
 ScaleLine, OpenLayers.Control.ScaleLine.OpenLayers.Control
 scales, OpenLayers.Layer
 schema, OpenLayers.Protocol.WFS.v1
 schemaLocation
 schemaLocationAttr, OpenLayers.Format.WFST.v1
 schemaLocations
 scope
 segmentsIntersect, OpenLayers.Geometry.OpenLayers.Geometry
 select
 selectBestFeature, OpenLayers.Control.GetFeature
 selectBox
 selectControl, OpenLayers.Control.ModifyFeature
 selectedFeature
 selectedFeatures, OpenLayers.Layer.Vector
 selectFeature, OpenLayers.Control.ModifyFeature
 SelectFeature, OpenLayers.Control.SelectFeature.OpenLayers.Control
 selectSingle, OpenLayers.Control.GetFeature
 selectStyle, OpenLayers.Control.SelectFeature
 selectUrl, OpenLayers.Layer.HTTPRequest
 separator, OpenLayers.Control.MousePosition
 seperator, OpenLayers.Control.Attribution
 serialize, OpenLayers.Format.JSON
 serializeTags, OpenLayers.Format.OSM
 serializeXMLToString, OpenLayers.Ajax.Response
 serverResolutions
 serviceVersion, OpenLayers.Layer.TMS
 setAttributeNS, OpenLayers.Format.XML
 setAttributes
 setBackgroundColor
 setBaseLayer, OpenLayers.Map
 setBorder
 setCanvasStyle, OpenLayers.Renderer.Canvas
 setCenter
 setCode, OpenLayers.Lang
 setContentHTML, OpenLayers.Popup
 setDefaultStyle, OpenLayers.Style
 setEvent, OpenLayers.Handler
 setExtent
 setFeatureState, OpenLayers.Control.ModifyFeature
 setFilterProperty, OpenLayers.Format.WFST.v1
 setGeometryTypes
 setIsBaseLayer, OpenLayers.Layer
 setLayer
 setLayerFilter, OpenLayers.Layer.ArcGIS93Rest
 setLayerIndex, OpenLayers.Map
 setLayerQuery, OpenLayers.Layer.ArcIMS
 setLayerZIndex, OpenLayers.Map
 setListeners, OpenLayers.Control.NavigationHistory
 setMap
 setMapObjectCenter
 setMapType, OpenLayers.Layer.Google
 setModifiers, OpenLayers.Control.GetFeature
 setName, OpenLayers.Layer
 setNamespace, OpenLayers.Format.XML
 setNodeDimension, OpenLayers.Renderer.VML
 setOpacity
 setOptions
 setRectPxBounds, OpenLayers.Control.OverviewMap
 setRequestHeaders, OpenLayers.Ajax.Request
 setRicoCorners, OpenLayers.Popup.AnchoredBubble
 setSize
 setSource, OpenLayers.Control.Split
 setState, OpenLayers.Format.OSM
 setStyle
 setTargets, OpenLayers.Control.Snapping
 setTileSize
 setUrl
 setVisibility
 setZIndex
 shiftColumn, OpenLayers.Layer.Grid
 shiftRow, OpenLayers.Layer.Grid
 shouldCluster, OpenLayers.Strategy.Cluster
 show
 showControls, OpenLayers.Control.LayerSwitcher
 showTile, OpenLayers.Tile
 showToggle, OpenLayers.Control.OverviewMap
 sides, OpenLayers.Handler.RegularPolygon
 single, OpenLayers.Handler.Click
 SINGLE_TILE_PARAMS, OpenLayers.Layer.MapGuide
 singleFeatureType, OpenLayers.Format.GML.Base
 singleTile
 size
 Size, OpenLayers.Size.OpenLayers
 SLD, OpenLayers.Format.SLD.OpenLayers.Format
 slideFactor
 slider, OpenLayers.Control.PanZoomBar
 slideRatio, OpenLayers.Control.PanZoom
 sliderEvents, OpenLayers.Control.PanZoomBar
 smoothDragPan, OpenLayers.Layer.EventPane
 snapAngle, OpenLayers.Handler.RegularPolygon
 Snapping, OpenLayers.Control.Snapping.OpenLayers.Control
 snapToggle, OpenLayers.Handler.RegularPolygon
 source, OpenLayers.Control.Split
 sourceFilter, OpenLayers.Control.Split
 sourceOptions, OpenLayers.Control.Split
 space, OpenLayers.Format.JSON
 Spatial, OpenLayers.Filter.Spatial.OpenLayers.Filter
 sphericalMecator, OpenLayers.Layer.XYZ
 sphericalMercator
 spiralTileLoad, OpenLayers.Layer.Grid
 split
 Split, OpenLayers.Control.Split.OpenLayers.Control
 splitWith
 splitWithSegment, OpenLayers.Geometry.LineString
 SQL, OpenLayers.Protocol.SQL.OpenLayers.Protocol
 srsName
 start
 startBox, OpenLayers.Handler.Box
 started, OpenLayers.Handler.Drag
 startsWith
 startTransition, OpenLayers.Tile.Image
 state, OpenLayers.Feature.Vector
 stateName, OpenLayers.Format.WFST.v1
 status, OpenLayers.Ajax.Response
 statusText, OpenLayers.Ajax.Response
 stop
 stopClick, OpenLayers.Handler.Feature
 stopDouble, OpenLayers.Handler.Click
 stopDown
 stopMove, OpenLayers.Handler.Hover
 stopObserving, OpenLayers.Event
 stopObservingElement, OpenLayers.Event
 stopSingle, OpenLayers.Handler.Click
 stopUp, OpenLayers.Handler.Feature
 strategies, OpenLayers.Layer.Vector
 Strategy, OpenLayers.Strategy.OpenLayers
 string, OpenLayers.Format.JSON.serialize
 style
 Style, OpenLayers.Style.OpenLayers
 styleBaseUrl, OpenLayers.Format.KML
 styleMap, OpenLayers.Layer.Vector
 StyleMap, OpenLayers.StyleMap.OpenLayers
 styles
 success
 suffix, OpenLayers.Control.MousePosition
 supported
 SUPPORTED_TRANSITIONS, OpenLayers.Layer
 surface, OpenLayers.Format.GML.v3
 SVG, OpenLayers.Renderer.SVG.OpenLayers.Renderer
 switchModeTo, OpenLayers.Control.MouseToolbar
 symbol, OpenLayers.Renderer.Elements.OpenLayers.Renderer
 symbolCache, OpenLayers.Renderer.VML
 symbolizer, OpenLayers.Rule
 SYMBOLIZER_PREFIXES, OpenLayers.Style.OpenLayers.Style
 symbolSize, OpenLayers.Renderer.SVG
+ +
OpenLayers.Util.safeStopPropagation = function(evt)
Deprecated.
save: function(features)
Tell the layer protocol to commit unsaved features.
Create a new Save strategy.
{Boolean} Whether to save the feature state (OpenLayers.State) into the database, defaults to true.
scale: function(ratio,
origin)
Scales the bounds around a pixel or lonlat.
Create a new scale line control.
{Array} An array of map scales in descending order.
{String} Optional schema location that will be included in the schemaLocation attribute value.
{String} Schema location for a particular minor version.
{String} http://www.opengis.net/ogc/filter/1.0.0/filter.xsd
{String} http://www.opengis.net/ogc/filter/1.1.0/filter.xsd
{String} Schema location for a particular minor version.
{String} Schema location for a particular minor version.
{String} Schema location for a particular minor version.
{String} Schema location for a particular minor version.
{String} http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd
{String} Schema location for a particular minor version.
{String} Schema location for a particular minor version.
{String} http://www.opengis.net/context http://schemas.opengis.net/context/1.0.0/context.xsd
{String} http://www.opengis.net/context http://schemas.opengis.net/context/1.1.0/context.xsd
schemaLocationAttr: function(options)
Generate the xsi:schemaLocation attribute value.
{Object} Properties are namespace aliases, values are schema locations.
{Object} Properties are namespace aliases, values are schema locations.
{Object} The scope to use with the onBeforeSelect, onSelect, onUnselect callbacks.
{Object} Callback execution scope, read-only, set through the options passed to the constructor.
OpenLayers.Geometry.segmentsIntersect = function(seg1,
seg2,
options)
Determine whether two line segments intersect.
select: function(features)
Add feature to the hash of selected features and trigger the featureselected event.
select: function(feature)
Add feature to the layer’s selectedFeature array, render the feature as selected, and call the onSelect function.
selectBestFeature: function(features,
clickPosition,
options)
Selects the feature from an array of features that is the best match for the click position.
selectBox: function(position)
Callback from the handlers.box set up when box selection is on
selectBox: function(position)
Callback from the handlers.box set up when box selection is true on.
{OpenLayers.Control.SelectFeature}
{OpenLayers.Feature}
{OpenLayers.Feature}
{Array(OpenLayers.Feature.Vector)}
selectFeature: function(feature)
Called when the select feature control selects a feature.
Create a new control for selecting features.
selectSingle: function(evt)
Called on click
{Object} Hash of styles
selectUrl: function(paramString,
urls)
selectUrl() implements the standard floating-point multiplicative hash function described by Knuth, and hashes the contents of the given param string into a float between 0 and 1.
{String}
{String} String used to seperate layers.
Object with properties corresponding to the serializable data types.
serializeTags: function(feature,
node)
Given a feature, serialize the attributes onto the given node.
OpenLayers.Ajax.serializeXMLToString = function(xmldom)
Wrapper function around XMLSerializer, which doesn’t exist/work in IE/Safari.
{Array} A list of all resolutions available on the server.
{Array} A list of all resolutions available on the server.
{String}
setAttributeNS: function(node,
uri,
name,
value)
Adds a new attribute or changes the value of an attribute with the given namespace and name.
setAttributes: function(node,
obj)
Set multiple attributes given key value pairs from an object.
setAttributes: function(node,
obj)
Set multiple attributes given key value pairs from an object.
setBackgroundColor:function(color)
Sets the background color of the popup.
setBackgroundColor:function(color)
setBackgroundColor:function(color)
setBaseLayer: function(newBaseLayer)
Allows user to specify one of the currently-loaded layers as the Map’s new base layer.
setBorder: function (color,
width)
Allow the user to change the box’s color and border width
setBorder:function(border)
Sets the border style of the popup.
setBorder:function(border)
Always sets border to 0.
setBorder:function()
setCanvasStyle: function(type,
style)
Prepare the canvas for drawing by setting various global settings.
setCenter: function()
As soon as a baseLayer has been loaded, we center and zoom ...and remove the handler.
setCenter: function(lonlat,
zoom,
dragging,
forceZoomChange)
Set the map center (and optionally, the zoom level).
setCode: function(code)
Set the language code for string translation.
setContentHTML:function(contentHTML)
Allows the user to set the HTML content of the popup.
setDefaultStyle: function(style)
Sets the default style for this style object.
setEvent: function(evt)
With each registered browser event, the handler sets its own evt property.
setExtent: function(extent,
resolutionChanged)
Set the visible part of the layer.
setExtent: function(extent)
Set the visible part of the layer.
setExtent: function(extent,
resolutionChanged)
setExtent: function(extent,
resolutionChanged)
Set the renderer’s extent
setFeatureState: function()
Called when the feature is modified.
setFilterProperty: function(filter)
Set the property of each spatial filter.
setGeometryTypes: function()
Sets the geometryTypes mapping.
setGeometryTypes: function()
Sets the geometryTypes mapping.
setIsBaseLayer: function(isBaseLayer)
setLayer: function(layer)
Set the editable layer.
setLayer: function(layer)
Called to set the layer property.
setLayerFilter: function (id,
queryDef)
addTile creates a tile, initializes it, and adds it to the layer div.
setLayerIndex: function (layer,
idx)
Move the given layer to the specified (zero-based) index in the layer list, changing its z-index in the map display.
setLayerQuery: function(id,
querydef)
Set the query definition on this layer.
setLayerZIndex: function (layer,
zIdx)
setListeners: function()
Sets functions to be registered in the listeners object.
setMap: function(map)
Set the map property for the control.
setMap: function(map)
Set the map property for the control.
setMap: function(map)
Set the map property for the control and all handlers.
setMap: function(map)
Set the map property for the control.
setMap: function(map)
setMap: function(map)
Set the map property for the control and all handlers.
setMap: function()
setMap: function(map)
Set the map property for the control and previous and next child controls.
setMap: function(map)
setMap: function(map)
Set the map property for the control.
setMap: function(map)
Set the map property for the control.
setMap: function(map)
Set the map property for the control.
setMap: function (map)
setMap: function (map)
setMap: function(map)
Set the map property for the layer.
setMap: function(map)
Set the map property for the layer.
setMap: function(map)
Overridden from EventPane because if a map type has been specified, we need to attach a listener for the first moveend -- this is how we will know that the map has been centered.
setMap: function(map)
setMap: function(map)
When the layer is added to a map, then we can fetch our origin (if we don’t have one.)
setMap: function(map)
The layer has been added to the map.
setMap: function(map)
setMap: function(map)
setMap: function(map)
When the layer is added to a map, then we can fetch our origin (if we don’t have one.)
setMap: function(map)
Overridden from EventPane because we need to remove this yahoo event pane which prohibits our drag and drop, and we can only do this once the map has been loaded and centered.
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapObjectCenter: function(center,
zoom)
Set the mapObject to the specified center and zoom
setMapType: function()
The map has been centered, and a map type was specified, so we set the map type on the gmap object, then unregister the listener so that we dont keep doing this every time the map moves.
setModifiers: function(evt)
Sets the multiple and toggle modifiers according to the current event
setName: function(newName)
Sets the new layer name for this layer.
setNamespace: function(alias,
uri)
Set a namespace alias and URI for the format.
setNodeDimension: function(node,
geometry)
Get the geometry’s bounds, convert it to our vml coordinate system, then set the node’s position, size, and local coordinate system.
setOpacity: function(opacity)
Change the icon’s opacity
setOpacity: function(opacity)
Sets the opacity for the entire layer (all images)
setOpacity: function(opacity)
Sets the opacity for all the markers.
setOpacity: function (opacity)
Call the setOpacity method of the appropriate parent class to set the opacity.
setOpacity: function(opacity)
Change the opacity of the marker by changin the opacity of its icon
setOpacity:function(opacity)
Sets the opacity of the popup.
setOpacity:function(opacity)
setOpacity:function(opacity)
Sets the opacity of the popup.
OpenLayers.Util.setOpacity = function(element,
opacity)
Deprecated.
setOptions: function (newOptions)
setOptions: function(options)
Change the map options
setRectPxBounds: function(pxBounds)
Set extent rectangle pixel bounds.
setRequestHeaders: function()
setRicoCorners:function()
Update RICO corners according to the popup’s current relative postion.
setSize: function(size)
setSize:function(contentSize)
Used to adjust the size of the popup.
setSize:function(contentSize)
setSize:function(contentSize)
setSize:function(contentSize)
Overridden here, because we need to update the blocks whenever the size of the popup has changed.
setSize: function(size)
Sets the size of the drawing surface.
setSize: function(size)
Sets the size of the drawing surface.
setSize: function(size)
Sets the size of the drawing surface.
setSize: function(size)
Set the size of the drawing surface
setSource: function(layer)
Set the source layer for edits layer.
setState: function(feature,
node)
OpenStreetMap has a convention that ‘state’ is stored for modification or deletion.
setStyle: function(node,
style,
options)
Use to set all the style attributes to a SVG node.
setStyle: function(node,
style,
options,
geometry)
Use to set all the style attributes to a VML node.
setTargets: function(targets)
Set the targets for the snapping agent.
setTileSize: function(size)
Set the tile size based on the map size.
setTileSize: function(size)
Check if we are in singleTile mode and if so, set the size as a ratio of the map size (as specified by the layer’s ‘ratio’ property).
setUrl: function(url)
setUrl:function(url)
Change the URL and reload the GML
setUrl: function(newUrl)
setUrl: function(newUrl)
setUrl: function(url)
Change URL of the Icon Image.
setVisibility: function(visibility)
Set the visibility flag for the layer and hide/show & redraw accordingly.
setVisibility: function(visibility,
noEvent)
Set the visibility flag for the layer and hide/show&redraw accordingly.
setZIndex: function (zIndex)
setZIndex: function (zIndex)
Set the z-index order for the pane.
shiftColumn: function(prepend)
Shift grid work in the other dimension
shiftRow:function(prepend)
Shifty grid work
shouldCluster: function(cluster,
feature)
Determine whether to include a feature in a given cluster.
show: function()
Show element(s) passed in
show: function()
Makes the popup visible.
show: function()
Overridden from Popup since user might hide popup and then show() it in a new location (meaning we might want to update the relative position on the show)
show: function()
Show the tile.
show: function()
Show the tile by showing its frame.
showControls: function(minimize)
Hide/Show all LayerSwitcher controls depending on whether we are minimized or not
showTile: function()
Show the tile only if it should be drawn.
showToggle: function(minimize)
Hide/Show the toggle depending on whether the control is minimized
{Integer} Number of sides for the regular polygon.
{Boolean} Handle single clicks.
{Object} Hashtable of default parameter key/value pairs for untiled layer
{Boolean} True if there is only 1 featureType, and not an array of featuretypes.
{Boolean} Moves the layer into single-tile mode, meaning that one tile will be loaded.
{Boolean} use tile server or request single tile image.
{singleTile} Always true for untiled.
{singleTile} Always true for untiled.
{OpenLayers.Size} The overvew map size in pixels.
{OpenLayers.Size}
{OpenLayers.Size} The image size in pixels
{OpenLayers.Size} Size of the main div (this.div)
{OpenLayers.Size} the width and height of the popup.
{OpenLayers.Size}
{OpenLayers.Size} null
Create an instance of OpenLayers.Size
Create a new parser for SLD.
Pixels to slide by.
{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
{Number} The fraction of map width/height by which we’ll pan the map on clicking the arrow buttons.
{OpenLayers.Events}
{Boolean} smoothDragPan determines whether non-public/internal API methods are used for better performance while dragging EventPane layers.
{Float} If set to a non-zero value, the handler will snap the polygon rotation to multiples of the snapAngle.
Creates a new snapping control.
{String} If set, snapToggle is checked on mouse events and will set the snap mode to the opposite of what it currently is.
{OpenLayers.Layer.Vector} Optional source layer.
{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
{Options} If a temporary sketch layer is created, these layer options will be applied.
{String} For “pretty” printing, the space string will be used after the “:” separating a name/value pair.
Creates a spatial filter.
Whether the tile extents should be set to the defaults for spherical mercator.
{Boolean} Should the map act as a mercator-projected map? 
{Boolean} Should the map act as a mercator-projected map? 
{Boolean} Should the map act as a mercator-projected map? 
spiralTileLoad: function()
Starts at the top right corner of the grid and proceeds in a spiral towards the center, adding tiles one at a time to the beginning of a queue.
split: function(target,
options)
Use this geometry (the source) to attempt to split a target geometry.
split: function(geometry,
options)
Use this geometry (the source) to attempt to split a target geometry.
Creates a new split control.
splitWith: function(geometry,
options)
Split this geometry (the target) with the given geometry (the source).
splitWith: function(geometry,
options)
Split this geometry (the target) with the given geometry (the source).
splitWithSegment: function(seg,
options)
Split this geometry with the given segment.
{String} URI for spatial reference system.
{String} URI for spatial reference system.
{String} Name of spatial reference system.
{OpenLayers.Pixel} The first pixel location of the drag.
start: function(begin,
finish,
duration,
options)
Plays the Tween, and calls the callback method on each step
startBox: function (xy)
{Boolean} When a mousedown event is received, we want to record it, but not set ‘dragging’ until the mouse moves after starting.
startsWith: function(str,
sub)
Test whether a string starts with another string.
Deprecated.
startTransition: function()
This method is invoked on tiles that are backBuffers for tiles in the grid.
{String}
{Object} Maps feature states to node names.
{Integer}
{String}
stop: function(event,
allowDefault)
Stops an event from propagating.
stop: function()
Stops the Tween, and calls the done callback Doesn’t do anything if animation is already finished
{Boolean} If stopClick is set to true, handled clicks do not propagate to other click listeners.
{Boolean} Stop other listeners from being notified of double-clicks.
{Boolean} Stop propagation of mousedown events from getting to listeners on the same element.
{Boolean} If stopDown is set to true, handled mousedowns do not propagate to other mousedown listeners.
stopObserving: function(elementParam,
name,
observer,
useCapture)
stopObservingElement: function(elementParam)
Given the id of an element to stop observing, cycle through the element’s cached observers, calling stopObserving on each one, skipping those entries which can no longer be removed.
{Boolean} Stop other listeners from being notified of clicks.
{Boolean} If stopUp is set to true, handled mouseups do not propagate to other mouseup listeners.
{Array(OpenLayers.Strategy})} Optional list of strategies for the layer.
Abstract class for vector strategies.
Transform a string into a JSON string.
{Object}
OpenLayers features can have a number of style attributes.
{Object} Default style for the layer
Creates a UserStyle.
{String}
{OpenLayers.StyleMap}
{Object} Storage of style objects
Hash of {OpenLayers.Style}, keyed by names of well known rendering intents (e.g.
success: function()
{Boolean} -
success: function()
{String}
supported: function()
This should be overridden by specific subclasses
supported: function()
Determine whether a browser supports Gears
supported: function()
This should be overridden by specific subclasses
supported: function()
{Boolean} Whether or not the browser supports the renderer class
supported: function()
{Boolean} Whether or not the browser supports the SVG renderer
supported: function()
Determine whether a browser supports this renderer.
{Array} An immutable (that means don’t change it!)
{Boolean} Write gml:Surface instead of gml:Polygon elements.
switchModeTo: function(mode)
Coordinate arrays for well known (named) symbols.
{DOMElement} node holding symbols.
{Object} Symbolizer or hash of symbolizers for this rule.
{Array} prefixes of the sld symbolizers.
{Object} Cache for symbol sizes according to their svg coordinate space
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General19.html b/openlayers/doc/devdocs/index/General19.html new file mode 100644 index 0000000..767aa9b --- /dev/null +++ b/openlayers/doc/devdocs/index/General19.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
T
 tableName, OpenLayers.Protocol.SQL
 targetFilter, OpenLayers.Control.Split
 termsOfUse, OpenLayers.Layer.Google
 testTarget, OpenLayers.Control.Snapping
 Text
 textRoot, OpenLayers.Renderer.Elements
 theme, OpenLayers.Map
 thousandsSeparator, OpenLayers.Number
 threshold, OpenLayers.Strategy.Cluster
 tile
 TILE_HEIGHT, OpenLayers.Map
 TILE_PARAMS, OpenLayers.Layer.MapGuide
 TILE_WIDTH, OpenLayers.Map
 TileCache, OpenLayers.Layer.TileCache.OpenLayers.Layer
 tileOrigin, OpenLayers.Layer.TMS
 tileSize
 time
 timeEnd, OpenLayers.Console
 timeoutId, OpenLayers.Handler.Drag
 timer, OpenLayers.Strategy.Save
 timerId
 title
 TMS, OpenLayers.Layer.TMS.OpenLayers.Layer
 toArray, OpenLayers.Bounds
 toBBOX, OpenLayers.Bounds
 toFloat, Util
 toGeometry, OpenLayers.Bounds
 toggle
 toggleClass, OpenLayers.Element
 toggleKey
 toggleSelect, OpenLayers.Control.SelectFeature
 tokenRegEx, OpenLayers.String.OpenLayers.String
 tolerance, OpenLayers.Control.Split
 top, OpenLayers.Bounds
 topInUnits, OpenLayers.Control.ScaleLine
 topOutUnits, OpenLayers.Control.ScaleLine
 toShortString
 toState, OpenLayers.Feature.Vector
 toString
 trace, OpenLayers.Console
 transform
 transforms, OpenLayers.Projection
 transitionEffect, OpenLayers.Layer
 translate
 translationParameters, OpenLayers.Renderer.SVG
 trigger
 triggerCallback, OpenLayers.Handler.Feature
 triggerEvent, OpenLayers.Events
 triggerRead, OpenLayers.Strategy.BBOX
 triggerSave, OpenLayers.Strategy.Save
 trim
 Try, Util
 Tween, OpenLayers.Tween.OpenLayers
 type
 typeOfFid, OpenLayers.Protocol.SQL.Gears
+ +
Name of the database table into which Features should be saved.
{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
{DOMElement} Div for Google’s copyright and terms of use link
testTarget: function(target,
loc)
Create a new parser for TSV Text.
Create a text layer.
{DOMElement}
{String} Relative path to a CSS file from which to load theme styles.
Thousands separator to use when formatting numbers.
{Integer} Optional threshold below which original features will be added to the layer instead of clusters.
{OpenLayers.Tile.Image}
{OpenLayers.Tile.WFS}
{Integer} 256 Default tile height (unless otherwise specified)
{Object} Hashtable of default parameter key/value pairs for tiled layer
{Integer} 256 Default tile width (unless otherwise specified)
Create a new read only TileCache layer.
{OpenLayers.Pixel}
{OpenLayers.Size} Size for tiles.
{OpenLayers.Size}
{OpenLayers.Size} Set in the map options to override the default tile size for this map.
time: function()
Creates a new timer under the given name.
{int} Step counter
timeEnd: function()
Stops a timer created by a call to OpenLayers.Console.time(name) and writes the time elapsed.
{String} The id of the timeout used for the mousedown interval.
{Number} The id of the timer.
{Number} The id of the timeout waiting to clear the delayedCall.
{string} This property is used for showing a tooltip over the Control.
{String} Title of this rule (set if included in SLD)
{String} Title of this style (set if included in SLD)
toArray: function()
{Array} array of left, bottom, right, top
toBBOX:function(decimal)
OpenLayers.Util.toFloat = function (number,
precision)
Convenience method to cast an object to a Number, rounded to the desired floating point precision.
toGeometry: function()
Create a new polygon geometry based on this bounds.
{Boolean} Unselect a selected feature on click.
{Boolean} Unselect a selected feature on click.
{Boolean} Unselect a selected feature on click.
toggle: function()
Toggle the visibility of element(s) passed in
toggle: function()
Toggles visibility of the popup.
toggleClass: function(element,
name)
Remove a CSS class name from an element if it exists.
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the toggle property to true.
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the toggle property to true.
toggleSelect: function()
Event should toggle the selected state of a feature based on toggle property and toggleKey event modifier.
Used to find tokens in a string.
{Number} Distance between the calculated intersection and a vertex on the source geometry below which the existing vertex will be used for the split.
{Number} Maximum vertical coordinate.
{String} Units for zoomed in on top bar.
{String} Units for zoomed out on top bar.
toShortString: function()
{String} Shortened String representation of Point object.
toShortString:function()
{String} Shortened String representation of OpenLayers.LonLat object.
toState: function(state)
Sets the new state
toString:function()
{String} String representation of bounds object.
toString: function()
Returns the Well-Known Text representation of a geometry
toString:function()
Return a readable string version of the lonlat
toString:function()
Cast this object into a string
toString: function()
Convert projection to string (getCode wrapper).
toString:function()
Return the string representation of a size object
trace: function()
Prints an interactive stack trace of JavaScript execution at the point where it is called.
transform: function(source,
dest)
Transform the Bounds object from source to dest.
transform: function(source,
dest)
Reproject the components geometry from source to dest.
transform: function(source,
dest)
Reproject the components geometry from source to dest.
transform: function(source,
dest)
Translate the x,y properties of the point from source to dest.
transform: function(source,
dest)
Transform the LonLat object from source to dest.
OpenLayers.Projection.transform = function(point,
source,
dest)
Transform a point coordinate from one projection to another.
Transforms is an object, with from properties, each of which may have a to property.
{String} The transition effect to use when the map is panned or zoomed.
translate: function(key,
context)
Looks up a key from a dictionary based on the current language string.
translate: function(x,
y)
Transforms the SVG coordinate system
{Object} Hash with “x” and “y” properties
trigger: function()
Called by a control panel when the button is clicked.
trigger: function()
trigger: function()
trigger: function()
trigger: function()
Do the zoom.
triggerCallback: function(type,
mode,
args)
Call the callback keyed in the event map with the supplied arguments.
triggerEvent: function (type,
evt)
Trigger a specified registered event.
triggerRead: function()
{OpenLayers.Protocol.Response} The protocol response object returned by the layer protocol.
triggerSave: function(event)
Registered as a listener.
trim: function(str)
Removes leading and trailing whitespace characters from a string.
Deprecated.
OpenLayers.Util.Try = function()
Execute functions until one of them doesn’t throw an error.
Creates a Tween.
{OpenLayers.Control.TYPES} Controls can have a ‘type’.
{Integer} OpenLayers.Control.TYPE_BUTTON.
{OpenLayers.Control.TYPES}
{String} Note that this control is not intended to be added directly to a control panel.
{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.
{OpenLayers.Control.TYPE}
{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.
{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.
{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.
{String} type: type of the comparison.
{String} Type of spatial filter.
{GMapType}
{?}
{VEMapType}
{YahooMapType}
{String} The type of the feature identifier, either “number” or “string”, defaults to “string”.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General2.html b/openlayers/doc/devdocs/index/General2.html new file mode 100644 index 0000000..5ed37c9 --- /dev/null +++ b/openlayers/doc/devdocs/index/General2.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
B
 backBufferTile, OpenLayers.Tile.Image
 BACKGROUND_ID_SUFFIX, OpenLayers.Renderer.Elements
 backgroundColor, OpenLayers.Popup
 base, OpenLayers.Control.Permalink
 Base
 baseLayer, OpenLayers.Map
 baseLayerDraw, OpenLayers.Control.OverviewMap
 baseLayers, OpenLayers.Control.LayerSwitcher
 baseLayersDiv, OpenLayers.Control.LayerSwitcher
 BBOX, OpenLayers.Strategy.BBOX.OpenLayers.Strategy
 beforeSelectFeature, OpenLayers.Control.ModifyFeature
 begin, OpenLayers.Tween
 bind
 bindAsEventListener
 blocks, OpenLayers.Popup.Framed
 boolean, OpenLayers.Format.JSON.serialize
 border, OpenLayers.Popup
 bottom, OpenLayers.Bounds
 bottomInUnits, OpenLayers.Control.ScaleLine
 bottomOutUnits, OpenLayers.Control.ScaleLine
 bounds
 Bounds, OpenLayers.Bounds.OpenLayers
 box
 Box
 boxCharacteristics, OpenLayers.Handler.Box
 boxDivClassName, OpenLayers.Handler.Box
 Boxes, OpenLayers.Layer.Boxes.OpenLayers.Layer
 BROWSER_EVENTS, OpenLayers.Events
 buffer, OpenLayers.Layer.Grid
 buildCoordinates, OpenLayers.Format.GML
 buildCoordinatesNode
 buildGeometry
 buildGeometryNode
 buttonClicked, OpenLayers.Control.MouseToolbar
 buttonDown
 buttons
 buttonUp, OpenLayers.Control.MouseToolbar
+ +
{OpenLayers.Tile} A clone of the tile used to create transition effects when the tile is moved or changes resolution.
{String}
{String} the background color used by the popup.
{String}
Instances of this class are not created directly.
{OpenLayers.Layer} The currently selected base layer.
baseLayerDraw: function()
{Array(OpenLayers.Layer)}
{DOMElement}
Create a new BBOX strategy.
beforeSelectFeature: function(feature)
Called before a feature is selected.
{Object} Values to start the animation with
bind: function(func,
object)
Bind a function to an object.
Deprecated.
bindAsEventListener: function(func,
object)
Bind a function to an object, and configure it to receive the event object as first parameter when called.
Deprecated.
{Array[Object]} Array of objects, each of which is one “block” of the popup.
Transform a boolean into a JSON string.
{String} the border size of the popup.
{Number} Minimum vertical coordinate.
{String} Units for zoomed in on bottom bar.
{String} Units for zoomed out on bottom bar.
{OpenLayers.Bounds} The box bounding that feature’s geometry, that property can be set by an OpenLayers.Format object when deserializing the feature, so in most cases it represents an information set by the server.
Given an OpenLayers bounds, create a GML box.
{OpenLayers.Bounds} The bounds of this geometry
{OpenLayers.Bounds}
{OpenLayers.Bounds} The current data bounds (in the same projection as the layer - not always the same projection as the map).
{OpenLayers.Bounds} null
Construct a new bounds object.
{Boolean} Allow feature selection by drawing a box.
{Boolean} Allow feature selection by drawing a box.
Convert a coordinate array from GeoJSON into an OpenLayers.Geometry.
{Object} Caches some box characteristics from css.
{String} The CSS class to use for drawing the box.
{Array(String)} supported events
{Integer} Used only when in gridded mode, this specifies the number of extra rows and colums of tiles on each side which will surround the minimum grid tiles to cover the map.
buildCoordinatesNode: function(geometry)
builds the coordinates XmlNode
buildCoordinatesNode: function(geometry)
buildCoordinatesNode: function(geometry)
Builds and returns the KML coordinates node with the given geometry coordinates...</coordinates>
Object containing methods to do the actual geometry node building based on geometry type.
Object containing methods to do the actual geometry node building based on geometry type.
buildGeometryNode: function(geometry)
builds a GeoRSS node with a given geometry
buildGeometryNode: function(geometry)
buildGeometryNode: function(geometry)
Builds and returns a KML geometry node with the given geometry.
{String}
buttonDown: function(evt)
buttonDown: function (evt)
{Array(DOMElement)} Array of Button Divs
buttonUp: function(evt)
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General20.html b/openlayers/doc/devdocs/index/General20.html new file mode 100644 index 0000000..69622aa --- /dev/null +++ b/openlayers/doc/devdocs/index/General20.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
U
 un, OpenLayers.Events
 unfreezeFeature, OpenLayers.Protocol.SQL.Gears
 unhighlight, OpenLayers.Control.SelectFeature
 units
 unload, OpenLayers.Tile
 unloadCache, OpenLayers.Event
 unloadDestroy, OpenLayers.Map
 unregister
 unrenderedFeatures, OpenLayers.Layer.Vector
 unselect
 unselectAll
 unselectFeature, OpenLayers.Control.ModifyFeature
 Untiled
 up
 update
 updateAttribution, OpenLayers.Control.Attribution
 updateBlocks, OpenLayers.Popup.Framed
 updateHandler, OpenLayers.Control.Measure
 updateLink, OpenLayers.Control.Permalink
 updateMap, OpenLayers.Control.LayerSwitcher
 updateMapToRect, OpenLayers.Control.OverviewMap
 updatePosition, OpenLayers.Popup
 updateRectToMap, OpenLayers.Control.OverviewMap
 updateRelativePosition
 updateScale, OpenLayers.Control.Scale
 updateSize
 updateSizeDestroy, OpenLayers.Map
 upFeature, OpenLayers.Control.DragFeature
 upperBoundary, OpenLayers.Filter.Comparison
 upperCaseObject, Util
 url
 URL_HASH_FACTOR, OpenLayers.Layer.HTTPRequest
 urlMatches, OpenLayers.Control.WMSGetFeatureInfo
 useAsyncOverlay, OpenLayers.Layer.MapGuide
 useFeedTitle, OpenLayers.Layer.GeoRSS
 useHttpTile, OpenLayers.Layer.MapGuide
 useOverlay, OpenLayers.Layer.MapGuide
 userError, OpenLayers.Console
 Util
+ +
un: function(object)
Convenience method for unregistering listeners with a common scope.
unfreezeFeature: function(row)
unhighlight: function(feature)
Redraw feature with the “default” style
{String} The layer map units.
{?}
{String} The map units.
unload: function()
Call immediately before destroying if you are listening to tile events, so that counters are properly handled if tile is still loading at destroy-time.
unloadCache: function()
Cycle through all the element entries in the events cache and call stopObservingElement on each.
Function that is called to destroy the map on page unload.
unregister: function(responderToRemove)
unregister: function (type,
obj,
func)
unregister: function (name,
method)
unregister an event from the map
{Object} hash of features, keyed by feature.id, that the renderer failed to draw
unselect: function(feature)
Remove feature from the hash of selected features and trigger the featureunselected event.
unselect: function(feature)
Remove feature from the layer’s selectedFeature array, render the feature as normal, and call the onUnselect function.
unselectAll: function(options)
Unselect all selected features.
unselectAll: function(options)
Unselect all selected features.
unselectFeature: function(feature)
Called when the select feature control unselects a feature.
up: function(evt)
This method is called during the handling of the mouse up event.
{OpenLayers.Pixel} The location of the last mouseup.
up: function(evt)
Finish drawing the feature
update: function()
Update the overview map after layers move.
update: function()
Update the size of the bars, and the labels they contain.
update: function(feature)
Takes a feature, and generates a WFS-T Transaction “Update”
update: function()
Construct a request updating modified features.
update: function(feature,
options)
Construct a request updating modified feature.
update: function(features,
options)
Construct a request updating modified feature.
update: function(options)
Callback function called on “moveend” or “refresh” layer events.
updateAttribution: function()
Update attribution string.
updateBlocks: function()
Internal method, called on initialize and when the popup’s relative position has changed.
updateHandler: function(handler,
options)
updateLink: function()
updateMap: function()
Cycles through the loaded data and base layer input arrays and makes the necessary calls to the Map object such that that the map’s visual state corresponds to what the user has selected in the control.
updateMapToRect: function()
Updates the map extent to match the extent rectangle position and size
updatePosition: function()
if the popup has a lonlat and its map members set, then have it move itself to its proper position
updateRectToMap: function()
Updates the extent rectangle position and size to match the map extent
updateRelativePosition: function()
The popup has been moved to a new relative location, so we may want to make some cosmetic adjustments to it.
updateRelativePosition: function()
The popup has been moved to a new relative location, in which case we will want to re-do the rico corners.
updateRelativePosition: function()
When the relative position changes, we need to set the new padding BBOX on the popup, reposition the close div, and update the blocks.
updateScale: function()
updateSize: function()
This function should be called by any external code which dynamically changes the size of the map div (because mozilla wont let us catch the “onresize” for an element)
updateSize: function()
Auto size the popup so that it precisely fits its contents (as determined by this.contentDiv.innerHTML).
When the map is destroyed, we need to stop listening to updateSize events: this method stores the function we need to unregister in non-IE browsers.
upFeature: function(pixel)
Called when the drag handler detects a mouse-up.
{Number} or {String} upper boundary for between comparisons.
OpenLayers.Util.upperCaseObject = function (object)
Creates a new hashtable and copies over all the keys from the passed-in object, but storing them under an uppercased version of the key at which they were stored.
{String} The URL of the WMS service to use.
{String} image url
{Array(String) or String} This is either an array of url strings or a single url string.
{String} URL of the image to use
{String} Service URL, read-only, set through the options passed to constructor.
{String} url of the request.
{String} The URL of the image being requested.
{String}
{Float} Used to hash URL param strings for multi-WMS server selection.
urlMatches: function(url)
Test to see if the provided url matches either the control url or one of the layerUrls.
{Boolean} indicates if the MapGuide site supports the asynchronous GETDYNAMICOVERLAY requests which is available in MapGuide Enterprise 2010 and MapGuide Open Source v2.0.3 or higher.
{Boolean} Set layer.name to the first title element in the feed.
{Boolean} use a tile cache exposed directly via a webserver rather than the via mapguide server.
{Boolean} flag to indicate if the layer should be retrieved using GETMAPIMAGE (default) or using GETDYNAMICOVERLAY requests.
userError: function(error)
A single interface for showing error messages to the user.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General21.html b/openlayers/doc/devdocs/index/General21.html new file mode 100644 index 0000000..e411574 --- /dev/null +++ b/openlayers/doc/devdocs/index/General21.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
V
 v1
 v1_0_0
 v1_1
 v1_1_0
 v1_1_1, OpenLayers.Format.WMSCapabilities/v1_1_1.OpenLayers.Format.WMSCapabilities
 v2, OpenLayers.Format.GML.v2.OpenLayers.Format.GML
 v3, OpenLayers.Format.GML.v3.OpenLayers.Format.GML
 value
 value2regex, OpenLayers.Filter.Comparison
 Vector
 vectorMode, OpenLayers.Layer.WFS
 vectorRoot, OpenLayers.Renderer.Elements
 vendorParams, OpenLayers.Control.WMSGetFeatureInfo
 version
 VERSION
 VERSION_NUMBER, OpenLayers
 vertices, OpenLayers.Control.ModifyFeature
 viewPortDiv, OpenLayers.Map
 viewRequestID, OpenLayers.Map
 VirtualEarth, OpenLayers.Layer.VirtualEarth.OpenLayers.Layer
 virtualStyle, OpenLayers.Control.ModifyFeature
 virtualVertices, OpenLayers.Control.ModifyFeature
 visibility, OpenLayers.Layer
 visible
 VML, OpenLayers.Renderer.VML.OpenLayers.Renderer
+ +
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Instances of this class are not created directly.
Create a new parser for WFS capabilities version 1.0.0.
A class for parsing and generating WFS v1.0.0 transactions.
Instances of this class are not created directly.
A class for giving layers WFS v1.0.0 protocol.
Create an instance of one of the subclasses.
Create an instance of one of the subclasses.
Instances of this class are not created directly.
Create a new parser for WFS capabilities version 1.1.0.
A class for parsing and generating WFS v1.1.0 transactions.
Instances of this class are not created directly.
Create a new parser for WMS capabilities version 1.1.0.
A class for giving layers WFS v1.1.0 protocol.
Create a new parser for WMS capabilities version 1.1.1.
Create a parser for GML v2.
Create a parser for GML v3.
{Number} or {String} comparison value for binary comparisons.
{OpenLayers.Bounds || OpenLayers.Geometry} The bounds or geometry to be used by the filter.
value2regex: function(wildCard,
singleChar,
escapeChar)
Converts the value of this rule into a regular expression string, according to the wildcard characters specified.
Create a vector feature.
Create a new vector layer
{Boolean} Should be calculated automatically.
{DOMElement}
{Object} Additional parameters that will be added to the request, for WMS implementations that support them.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} WFS version number.
{String} WFS version number.
{String} WFS version number.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} The specific parser version.
{String} The specific parser version.
{String} Specify a version string if one is known.
{String} WFS version number.
{String} WFS version number.
{String} WFS version number.
{String} 1.0.0
{String} 1.1.0
{String} 1.0.0
{String} 1.0.0
{String} 1.1.0
{Array(OpenLayers.Feature.Vector)} Verticies currently available for dragging.
{HTMLDivElement} The element that represents the map viewport
{String} Used to store a unique identifier that changes when the map view changes.
{Object} A symbolizer to be used for virtual vertices.
{Array(OpenLayers.Feature.Vector)} Virtual vertices in the middle of each edge.
{Boolean} The layer should be displayed in the map.
visible: function(element)
visible: function()
{Boolean} Boolean indicating whether or not the popup is visible
Create a new VML renderer.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General22.html b/openlayers/doc/devdocs/index/General22.html new file mode 100644 index 0000000..b43aa4e --- /dev/null +++ b/openlayers/doc/devdocs/index/General22.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
W
 w, OpenLayers.Size
 warn, OpenLayers.Console
 WFS
 WFS.js
 WFSCapabilities, OpenLayers.Format.WFSCapabilities.OpenLayers.Format
 WFSDescribeFeatureType, OpenLayers.Format
 WFSDescribeFeatureType.js
 wfsns, OpenLayers.Format.WFS
 WFST, OpenLayers.Format
 WFST.js
 wheelChange, OpenLayers.Control.Navigation
 wheelDown, OpenLayers.Control.Navigation
 wheelListener, OpenLayers.Handler.MouseWheel
 wheelObserver, OpenLayers.Control.MouseDefaults
 wheelUp, OpenLayers.Control.Navigation
 wheelZoom, OpenLayers.Handler.MouseWheel
 width, OpenLayers.Geometry.Rectangle
 WKT, OpenLayers.Format.WKT.OpenLayers.Format
 wktParser, OpenLayers.Protocol.SQL.Gears
 WMC, OpenLayers.Format.WMC.OpenLayers.Format
 WMS, OpenLayers.Layer.WMS.OpenLayers.Layer
 WMSCapabilities, OpenLayers.Format.WMSCapabilities.OpenLayers.Format
 WMSDescribeLayer
 WMSGetFeatureInfo, OpenLayers.Format.WMSGetFeatureInfo.OpenLayers.Format
 WMSGetFeatureInfo>, OpenLayers.Control.WMSGetFeatureInfo.<OpenLayers.Control
 WorldWind, OpenLayers.Layer.WorldWind.OpenLayers.Layer
 wrapDateLine
 write
 write_ol_MapExtension, OpenLayers.Format.WMC.v1
 write_wmc_FormatList, OpenLayers.Format.WMC.v1
 write_wmc_General, OpenLayers.Format.WMC.v1
 write_wmc_Layer
 write_wmc_LayerExtension, OpenLayers.Format.WMC.v1
 write_wmc_LayerList, OpenLayers.Format.WMC.v1
 write_wmc_MetadataURL, OpenLayers.Format.WMC.v1
 write_wmc_OnlineResource, OpenLayers.Format.WMC.v1
 write_wmc_Server, OpenLayers.Format.WMC.v1
 write_wmc_StyleList, OpenLayers.Format.WMC.v1
 writeIndent, OpenLayers.Format.JSON
 writeNewline, OpenLayers.Format.JSON
 writeNode, OpenLayers.Format.XML
 writers
 writeSpace, OpenLayers.Format.JSON
 writeSpatial
+ +
{Number} width
warn: function()
Writes a message to the console with the visual “warning” icon and color coding and a hyperlink to the line where it was called.
Create a WFS feature.
Create a WFS-T formatter.
OpenLayers.Protocol.WFS = function(options)
Used to create a versioned WFS protocol.
A class for giving layers WFS protocol.
Create a new parser for WFS capabilities.
Create a new parser for WFS DescribeFeatureType responses.
OpenLayers.Format.WFST = function(options)
Used to create a versioned WFS protocol.
wheelChange: function(evt,
deltaZ)
wheelDown: function(evt)
User spun scroll wheel down
{function}
{Function}
wheelUp: function(evt)
User spun scroll wheel up
wheelZoom: function(e)
Given the wheel event, we carry out the appropriate zooming in or out, based on the ‘wheelDelta’ or ‘detail’ property of the event.
{Float}
Create a new parser for WKT
{OpenLayers.Format.WKT}
Create a new parser for WMC docs.
Create a new WMS layer object
Create a new parser for WMS capabilities.
Create a new parser for WMS DescribeLayer responses.
Create a new parser for WMS DescribeLayer responses.
Create a new parser for WMS GetFeatureInfo responses
wrapDateLine: function(maxExtent,
options)
{Boolean} #487 for more info.
wrapDateLine: function(maxExtent)
write: function(object)
Accept an object, and return a string.
write: function(request)
Generate an ArcXml document string for sending to an ArcIMS server.
write: function(filter,
options)
Write an ogc:Filter given a filter object.
write: function(filter)
write: function(obj,
pretty)
Serialize a feature, geometry, array of features into a GeoJSON string.
write: function(features)
Accept Feature Collection, and return a string.
write: function(features)
Generate a GML document string given a list of features.
write: function(features)
write: function(features)
write: function(features)
write: function(value,
pretty)
Serialize an object into a JSON string.
write: function(features)
Accept Feature Collection, and return a string.
write: function(features)
Takes a list of features, returns a serialized OSM format file for use in tools like JOSM.
write: function(sld,
options)
Write a SLD document given a list of styles.
write: function(sld)
write: function(features)
Takes a feature list, and generates a WFS-T Transaction
write: function(features)
Given an array of features, write a WFS transaction.
write: function(features)
Serialize a feature or array of features into a WKT string.
write: function(obj,
options)
Write a WMC document given a map.
write: function(context,
options)
write: function(node)
Serialize a DOM node into a XML string.
write_ol_MapExtension: function(context)
write_wmc_FormatList: function(layer)
Create a FormatList node given a layer.
write_wmc_General: function(context)
Create a General node given an context object.
write_wmc_Layer: function(layer)
Create a Layer node given a layer object.
write_wmc_Layer: function(layer)
Create a Layer node given a layer object.
write_wmc_LayerExtension: function(layer)
Add OpenLayers specific layer parameters to an Extension element.
write_wmc_LayerList: function(context)
Create a LayerList node given an context object.
write_wmc_MetadataURL: function(layer)
Create a MetadataURL node given a layer object.
write_wmc_OnlineResource: function(href)
Create an OnlineResource node given a URL.
write_wmc_Server: function(layer)
Create a Server node given a layer object.
write_wmc_StyleList: function(layer)
Create a StyleList node given a layer.
writeIndent: function()
Output an indentation string depending on the indentation level.
writeNewline: function()
Output a string representing a newline if in pretty printing mode.
writeNode: function(name,
obj,
parent)
Shorthand for applying one of the named writers and appending the results to a node.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
writeSpace: function()
Output a string representing a space if in pretty printing mode.
writeSpatial: function(filter,
name)
Read a {OpenLayers.Filter.Spatial} filter and converts it into XML.
writeSpatial: function(filter,
name)
Read a {OpenLayers.Filter.Spatial} filter and converts it into XML.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General23.html b/openlayers/doc/devdocs/index/General23.html new file mode 100644 index 0000000..8e743a8 --- /dev/null +++ b/openlayers/doc/devdocs/index/General23.html @@ -0,0 +1,42 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
X
 x
 X, OpenLayers.Control.PanZoom
 xlinkns, OpenLayers.Renderer.SVG
 XML, OpenLayers.Format.XML.OpenLayers.Format
 xmldom, OpenLayers.Format.XML
 xmlns
 xy
Y
 y
 Y, OpenLayers.Control.PanZoom
 Yahoo, OpenLayers.Layer.Yahoo.OpenLayers.Layer
Z
 Z_INDEX_BASE, OpenLayers.Map
 Z_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
 Z_ORDER_DRAWING_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
 Z_ORDER_Y_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
 zoom, OpenLayers.Map
 zoomBarDiv, OpenLayers.Control.PanZoomBar
 zoomBarDown, OpenLayers.Control.PanZoomBar
 zoomBarDrag, OpenLayers.Control.PanZoomBar
 zoomBarUp, OpenLayers.Control.PanZoomBar
 zoomBox
 zoomBoxEnd, OpenLayers.Control.MouseDefaults
 zoomBoxKeyMask, OpenLayers.Control.Navigation
 zoomIn, OpenLayers.Map
 zoomLevels, OpenLayers.Layer.WorldWind
 zoomOut, OpenLayers.Map
 ZoomPanel, OpenLayers.Control.ZoomPanel.OpenLayers.Control
 zoomStopHeight, OpenLayers.Control.PanZoomBar
 zoomStopWidth, OpenLayers.Control.PanZoomBar
 zoomTo, OpenLayers.Map
 zoomToExtent, OpenLayers.Map
 zoomToMaxExtent, OpenLayers.Map
 zoomToScale, OpenLayers.Map
 zoomWheelEnabled, OpenLayers.Control.Navigation
 zoomWorldIcon, OpenLayers.Control.PanZoomBar
+ +
{float}
{Float}
{Number} The x coordinate
{Integer}
{String}
Construct an XML parser.
{XMLDom} If this browser uses ActiveX, this will be set to a XMLDOM object.
{String}
{String}
{String} XML Namespace URN
{Boolean} Order of the GML coordinate: true:(x,y) or false:(y,x) For GeoRSS the default is (y,x), therefore: false
{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
+ + + +
{float}
{Float}
{Number} The y coordinate
{Integer}
+ + + +
{Object} Base z-indexes for different classes of thing
Z_ORDER: function(indexer,
newNode,
nextNode)
This compare method is used by other comparison methods.
Z_ORDER_DRAWING_ORDER: function(indexer,
newNode,
nextNode)
This method orders nodes by their z-index, but does so in a way that, if there are other nodes with the same z-index, the newest drawn will be the front most within that z-index.
Z_ORDER_Y_ORDER: function(indexer,
newNode,
nextNode)
This one should really be called Z_ORDER_Y_ORDER_DRAWING_ORDER, as it best describes which ordering methods have precedence (though, the name would be too long).
{Integer} The current zoom level of the map
{DOMElement}
zoomBarDown:function(evt)
event listener for clicks on the slider
zoomBarDrag:function(evt)
This is what happens when a click has occurred, and the client is dragging.
zoomBarUp:function(evt)
Perform cleanup when a mouseup event is received -- discover new zoom level and switch to it.
{OpenLayers.Control.ZoomBox}
zoomBox: function (position)
zoomBoxEnd: function(evt)
Zoombox function.
{Integer} OpenLayers.Handler key code of the key, which has to be pressed, while drawing the zoom box with the mouse on the screen.
zoomIn: function()
Number of zoom levels.
zoomOut: function()
Add the three zooming controls.
zoomTo: function(zoom)
Zoom to a specific zoom level
zoomToExtent: function(bounds,
closest)
Zoom to the passed in bounds, recenter
zoomToMaxExtent: function(options)
Zoom to the full extent and recenter.
zoomToScale: function(scale,
closest)
Zoom to a specified scale
{Boolean} Whether the mousewheel should zoom the map
{Boolean}
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General3.html b/openlayers/doc/devdocs/index/General3.html new file mode 100644 index 0000000..dd5d8a5 --- /dev/null +++ b/openlayers/doc/devdocs/index/General3.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
C
 cacheFeatures
 calculateAngle, OpenLayers.Handler.RegularPolygon
 calculateBounds
 calculateGridLayout
 calculateInRange, OpenLayers.Layer
 calculateNewPx
 calculateOffset, OpenLayers.Icon
 calculateRelativePosition, OpenLayers.Popup.Anchored
 callback
 callbacks
 callUserCallback
 camelize
 cancel
 cancelHover
 canvas, OpenLayers.Renderer.Canvas
 Canvas, OpenLayers.Renderer.Canvas.OpenLayers.Renderer
 center, OpenLayers.Map
 centerLayerContainer, OpenLayers.Map
 centerLonLat, OpenLayers.Bounds
 checkImgURL, OpenLayers.Tile.Image
 checkModifiers, OpenLayers.Handler
 checkRedraw, OpenLayers.Control.LayerSwitcher
 checkTags, OpenLayers.Format.OSM
 Class, OpenLayers
 Class.js
 clear
 clearArray, Util
 clearBounds, OpenLayers.Geometry
 clearCache
 clearFeatures
 clearGrid, OpenLayers.Layer.Grid
 clearLayerFilter, OpenLayers.Layer.ArcGIS93Rest
 clearLayersArray, OpenLayers.Control.LayerSwitcher
 clearMarkers, OpenLayers.Layer.Markers
 clearMouseCache, OpenLayers.Events
 clearMouseListener, OpenLayers.Events
 clearOnDeactivate, OpenLayers.Control.NavigationHistory
 clearTimer
 click
 Click, OpenLayers.Handler.Click.OpenLayers.Handler
 clickFeature, OpenLayers.Control.SelectFeature
 clickout
 clickoutFeature, OpenLayers.Control.SelectFeature
 clickTolerance
 clipLine, OpenLayers.Renderer.SVG
 clone
 closeDiv, OpenLayers.Popup
 closeOnMove, OpenLayers.Popup
 cluster, OpenLayers.Strategy.Cluster
 Cluster, OpenLayers.Strategy.Cluster.OpenLayers.Strategy
 clustering, OpenLayers.Strategy.Cluster
 clusters, OpenLayers.Strategy.Cluster
 clustersExist, OpenLayers.Strategy.Cluster
 code
 collectDragHandle, OpenLayers.Control.ModifyFeature
 collection
 Collection, OpenLayers.Geometry.Collection.OpenLayers.Geometry
 collectionName, OpenLayers.Format.GML
 collectRadiusHandle, OpenLayers.Control.ModifyFeature
 collectRoots, OpenLayers.Layer.Vector.RootContainer
 collectVertices, OpenLayers.Control.ModifyFeature
 commit
 commitFailure, OpenLayers.Layer.WFS
 commitReport, OpenLayers.Layer.WFS
 commitSuccess, OpenLayers.Layer.WFS
 compare, OpenLayers.ElementsIndexer
 Comparison, OpenLayers.Filter.Comparison.OpenLayers.Filter
 components, OpenLayers.Geometry.Collection
 componentTypes
 concatChildValues, OpenLayers.Format.XML
 configureLayers, OpenLayers.Control.ArgParser
 considerSnapping, OpenLayers.Control.Snapping
 considerSplit, OpenLayers.Control.Split
 Constants
 Constructor
GlobalOpenLayers.Ajax.BaseOpenLayers.Ajax.RequestOpenLayers.Ajax.ResponseOpenLayers.BoundsOpenLayers.ControlOpenLayers.Control.ArgParserOpenLayers.Control.AttributionOpenLayers.Control.DragFeatureOpenLayers.Control.DrawFeatureOpenLayers.Control.EditingToolbarOpenLayers.Control.GetFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.MeasureOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.NavToolbarOpenLayers.Control.OverviewMapOpenLayers.Control.PanOpenLayers.Control.PanelOpenLayers.Control.PanPanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.ScaleOpenLayers.Control.ScaleLineOpenLayers.Control.SelectFeatureOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.Control.WMSGetFeatureInfoOpenLayers.Control.ZoomPanelOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Feature.WFSOpenLayers.FilterOpenLayers.Filter.ComparisonOpenLayers.Filter.FeatureIdOpenLayers.Filter.LogicalOpenLayers.Filter.SpatialOpenLayers.FormatOpenLayers.Format.ArcXMLOpenLayers.Format.ArcXML.FeaturesOpenLayers.Format.FilterOpenLayers.Format.Filter.v1OpenLayers.Format.Filter.v1_0_0OpenLayers.Format.Filter.v1_1_0OpenLayers.Format.GeoJSONOpenLayers.Format.GeoRSSOpenLayers.Format.GMLOpenLayers.Format.GML.BaseOpenLayers.Format.GML.v2OpenLayers.Format.GML.v3OpenLayers.Format.GPXOpenLayers.Format.JSONOpenLayers.Format.KMLOpenLayers.Format.OSMOpenLayers.Format.SLDOpenLayers.Format.SLD.v1OpenLayers.Format.SLD.v1_0_0OpenLayers.Format.TextOpenLayers.Format.WFSOpenLayers.Format.WFSCapabilitiesOpenLayers.Format.WFSCapabilities.v1OpenLayers.Format.WFSCapabilities/v1_0_0OpenLayers.Format.WFSCapabilities/v1_1_0OpenLayers.Format.WFST.v1OpenLayers.Format.WFST.v1_0_0OpenLayers.Format.WFST.v1_1_0OpenLayers.Format.WKTOpenLayers.Format.WMCOpenLayers.Format.WMC.v1OpenLayers.Format.WMC.v1_0_0OpenLayers.Format.WMC.v1_1_0OpenLayers.Format.WMSCapabilitiesOpenLayers.Format.WMSCapabilities.v1_1OpenLayers.Format.WMSCapabilities/v1_1_0OpenLayers.Format.WMSCapabilities/v1_1_1OpenLayers.Format.WMSDescribeLayerOpenLayers.Format.WMSDescribeLayer.v1_1OpenLayers.Format.WMSGetFeatureInfoOpenLayers.Format.XMLOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.Geometry.CurveOpenLayers.Geometry.LinearRingOpenLayers.Geometry.LineStringOpenLayers.Geometry.MultiLineStringOpenLayers.Geometry.MultiPointOpenLayers.Geometry.MultiPolygonOpenLayers.Geometry.PointOpenLayers.Geometry.PolygonOpenLayers.Geometry.RectangleOpenLayers.HandlerOpenLayers.Handler.BoxOpenLayers.Handler.ClickOpenLayers.Handler.DragOpenLayers.Handler.FeatureOpenLayers.Handler.HoverOpenLayers.handler.KeyboardOpenLayers.Handler.MouseWheelOpenLayers.Handler.PathOpenLayers.Handler.PointOpenLayers.Handler.PolygonOpenLayers.Handler.RegularPolygonOpenLayers.IconOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.BoxesOpenLayers.Layer.EventPaneOpenLayers.Layer.FixedZoomLevelsOpenLayers.Layer.GeoRSSOpenLayers.Layer.GMLOpenLayers.Layer.GoogleOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.KaMapOpenLayers.Layer.KaMapCacheOpenLayers.Layer.MapGuideOpenLayers.Layer.MapServerOpenLayers.Layer.MapServer.UntiledOpenLayers.Layer.MarkersOpenLayers.Layer.MultiMapOpenLayers.Layer.PointTrackOpenLayers.Layer.TextOpenLayers.Layer.TileCacheOpenLayers.Layer.TMSOpenLayers.Layer.VectorOpenLayers.Layer.Vector.RootContainerOpenLayers.Layer.VirtualEarthOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.Layer.WMS.UntiledOpenLayers.Layer.WorldWindOpenLayers.Layer.XYZOpenLayers.Layer.YahooOpenLayers.LonLatOpenLayers.MapOpenLayers.MarkerOpenLayers.Marker.BoxOpenLayers.PixelOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.AnchoredBubbleOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProjectionOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.ResponseOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.Protocol.WFS.v1_0_0OpenLayers.Protocol.WFS.v1_1_0OpenLayers.RendererOpenLayers.Renderer.CanvasOpenLayers.Renderer.ElementsOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RuleOpenLayers.SizeOpenLayers.StrategyOpenLayers.Strategy.BBOXOpenLayers.Strategy.ClusterOpenLayers.Strategy.FixedOpenLayers.Strategy.PagingOpenLayers.Strategy.SaveOpenLayers.StyleOpenLayers.StyleMapOpenLayers.Tween
 container, OpenLayers.Renderer
 contains
 containsBounds, OpenLayers.Bounds
 containsLonLat, OpenLayers.Bounds
 containsPixel, OpenLayers.Bounds
 containsPoint
 contentDisplayClass
 contentDiv, OpenLayers.Popup
 contentHTML, OpenLayers.Popup
 contentSize, OpenLayers.Popup
 contentType, OpenLayers.Format.XML
 context
 contextToMap, OpenLayers.Format.WMC
 control, OpenLayers.Handler
 Control, OpenLayers.Control.OpenLayers
 controls
 CORNER_SIZE, OpenLayers.Popup.AnchoredBubble
 count, OpenLayers.Console
 create
 createAlphaImageDiv, Util
 createBlocks, OpenLayers.Popup.Framed
 createCallback
 createCluster, OpenLayers.Strategy.Cluster
 createCRSObject, OpenLayers.Format.GeoJSON
 createDefs, OpenLayers.Renderer.SVG
 createDiv, Util
 createdOffline, OpenLayers.Protocol.SQL.Gears
 createElementDefaultNS, OpenLayers.Format.WMC.v1
 createElementNS, OpenLayers.Format.XML
 createElementNSPlus, OpenLayers.Format.XML
 createFeature
 createFeatureFromItem, OpenLayers.Format.GeoRSS
 createFeatureNodes, OpenLayers.Format.OSM
 createFeatureXML
 createFilter, OpenLayers.Strategy.BBOX
 createFolderXML, OpenLayers.Format.KML
 createGeometry, OpenLayers.Handler.RegularPolygon
 createGeometryFromItem, OpenLayers.Format.GeoRSS
 createImage, Util
 createLiteral, OpenLayers.Style
 createLiterals, OpenLayers.Style
 createMap, OpenLayers.Control.OverviewMap
 createMarker
 createNode
 createOLPropertyNode, OpenLayers.Format.WMC.v1
 createOrUpdate, OpenLayers.Protocol.SQL.Gears
 createParams, OpenLayers.Control.Permalink
 createPlacemarkXML, OpenLayers.Format.KML
 createPopup
 createRegularPolygon, OpenLayers.Geometry.Polygon
 createRenderRoot
 createRoot
 createSymbolizer
 createTextNode, OpenLayers.Format.XML
 createUniqueID, Util
 createUrlObject, Util
 createXML, OpenLayers.Format.OSM
 cssMap, OpenLayers.Format.SLD.v1
 curve, OpenLayers.Format.GML.v3
 Curve, OpenLayers.Geometry.Curve.OpenLayers.Geometry
+ +
cacheFeatures: function(event)
Cache features before they are added to the layer.
cacheFeatures: function(event)
Cache features before they are added to the layer.
calculateAngle: function(point,
evt)
Calculate the angle based on settings.
calculateBounds: function()
Recalculate the bounds for the geometry.
calculateBounds: function()
Recalculate the bounds by iterating through the components and calling calling extendBounds() on each item.
calculateBounds: function ()
Create a new Bounds based on the lon/lat
calculateBounds: function()
Recalculate the bounds for the geometry.
calculateBounds: function(center,
resolution)
calculateBounds: function(mapBounds)
calculateGridLayout: function(bounds,
extent,
resolution)
Generate parameters for the grid layout.
calculateGridLayout: function(bounds,
extent,
resolution)
ka-Map uses the center point of the map as an origin for its tiles.
calculateGridLayout: function(bounds,
extent,
resolution)
Generate parameters for the grid layout.
calculateInRange: function()
{Boolean} The layer is displayable at the current map’s current resolution.
calculateNewPx:function(px)
calculateNewPx:function(px)
Besides the standard offset as determined by the Anchored class, our Framed popups have a special ‘offset’ property for each of their positions, which is used to offset the popup relative to its anchor.
{OpenLayers.Pixel} Function to calculate the offset (based on the size)
calculateRelativePosition:function(px)
callback: function (name,
args)
Trigger the control’s named callback with the given arguments
callback: function (name,
args)
Trigger the control’s named callback with the given arguments
{Object} Function to be called when the read, create, update, delete or commit operation completes, read-only, set through the options passed to the constructor.
{Object} The functions that are sent to the handler for callback
{Object} The functions that are sent to the handler for callback
{Object} The functions that are sent to the handlers.feature for callback
{Object} An object with start, eachStep and done properties whose values are functions to be call during the animation.
callUserCallback: function(resp,
options)
This method is used from within the commit method each time an an HTTP response is received from the server, it is responsible for calling the user-supplied callbacks.
callUserCallback: function(options,
resp)
This method is called from within commit each time a request is made to the database, it is responsible for calling the user-supplied callbacks.
camelize: function(str)
Camel-case a hyphenated string.
Deprecated.
cancel: function()
Called when the drag handler detects a mouse-out (from the map viewport).
cancel: function()
Stop the control from measuring.
cancel: function()
Finish the geometry and call the “cancel” callback.
cancel: function()
Finish the geometry and call the “cancel” callback.
cancelHover: function()
Callback from the handlers.hover set up when hover selection is on
cancelHover: function()
Cancel callback for the hover handler
{Canvas} The canvas context object.
{OpenLayers.LonLat} The current center of the map
centerLayerContainer: function (lonlat)
This function takes care to recenter the layerContainerDiv.
{OpenLayers.LonLat} A cached center location.
checkImgURL: function ()
Make sure that the image that just loaded is the one this tile is meant to display, since panning/zooming might have changed the tile’s URL in the meantime.
checkModifiers: function (evt)
Check the keyMask on the handler.
checkRedraw: function()
Checks if the layer state has changed since the last redraw() call.
{Boolean} Should tags be checked to determine whether something should be treated as a seperate node.
Base class used to construct all other classes.
clear: function()
Clear history.
clear: function()
clear: function()
Clear any rendered features on the temporary layer.
clear: function()
Removes all rows of the table.
clear: function()
Clear all vectors from the renderer.
clear: function()
Clear all vectors from the renderer.
clear: function()
Remove all the elements from the root
clear: function()
Clear the tile of any bounds/position-related data so that it can be reused in a new location.
clear: function()
Clear the tile of any bounds/position-related data so that it can be reused in a new location.
clear: function()
Clear the tile of any bounds/position-related data so that it can be reused in a new location.
OpenLayers.Util.clearArray = function(array)
Deprecated.
clearBounds: function()
Nullify this components bounds and that of its parent as well.
clearCache: function()
Clear out the cached features.
clearCache: function()
Clear out the cached features.
clearFeatures: function()
Destroy all features in this layer.
clearFeatures: function()
clearGrid:function()
Go through and remove all tiles from the grid, calling destroy() on each of them to kill circular references
clearLayerFilter: function (id)
Clears layer filters, either from a specific layer, or all of them.
clearLayersArray: function(layersType)
User specifies either “base” or “data”.
clearMarkers: function()
This method removes all markers from a layer.
clearMouseCache: function()
Clear cached data about the mouse position.
A version of clearMouseCache that is bound to this instance so that it can be used with OpenLayers.Event.observe and OpenLayers.Event.stopObserving.
{Boolean} Clear the history when the control is deactivated.
clearTimer: function()
Clear the timer and set timerId to null.
clearTimer: function()
Clear the timer and set timerId to null.
{Boolean} Use a click handler for selecting/unselecting features.
click: function(evt)
Handle click.
click: function (evt)
The drag handler captures the click event.
click: function(evt)
Handle click.
click: function(evt)
Handle clicks.
Create a new click handler.
clickFeature: function(feature)
Called on click in a feature Only responds if this.hover is false.
{Boolean} Unselect features when clicking outside any feature.
{Boolean} Unselect features when clicking outside any feature.
{Boolean} Unselect features when clicking outside any feature.
clickoutFeature: function(feature)
Called on click outside a previously clicked (selected) feature.
{Integer} Tolerance for the BBOX query in pixels.
{Number} The number of pixels the mouse can move between mousedown and mouseup for the event to still be considered a click.
clipLine: function(badComponent,
goodComponent)
Given two points (one inside the valid range, and one outside), clips the line betweeen the two points so that the new points are both inside the valid range.
clone:function()
Create a cloned instance of this bounds.
clone: function ()
Create a clone of this vector feature.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Clones this filter.
clone: function()
Create a clone of this geometry.
clone: function()
Clone this geometry.
clone: function(obj)
{OpenLayers.Geometry.Point} An exact clone of this OpenLayers.Geometry.Point
clone: function()
{OpenLayers.Icon} A fresh copy of the icon.
clone: function (obj)
clone: function (obj)
Create a clone of this layer
clone: function (obj)
Create a clone of this layer
clone: function (obj)
clone: function(obj)
Create a clone of this layer
clone: function (obj)
clone: function (obj)
Create a clone of this layer
clone: function (obj)
Create a clone of this layer
clone: function (obj)
Create a clone of this layer
clone: function (obj)
clone: function (obj)
clone: function (obj)
clone: function (obj)
Create a clone of this layer
clone: function (obj)
Create a clone of this layer
clone: function (obj)
Create a clone of this layer
clone:function()
{OpenLayers.LonLat} New OpenLayers.LonLat object with the same lon and lat values
clone:function()
Return a clone of this pixel object
clone: function()
Clones this rule.
clone:function()
Create a clone of this size object
clone: function (obj)
clone: function (obj)
{DOMElement} the optional closer image
{Boolean} When map pans, close the popup.
cluster: function(event)
Cluster features based on some threshold distance.
Create a new clustering strategy.
{Boolean} The strategy is currently clustering features.
{Array(OpenLayers.Feature.Vector)} Calculated clusters.
clustersExist: function()
Determine whether calculated clusters are already on the layer.
{String} Current language code to use in OpenLayers.
collectDragHandle: function()
Collect the drag handle for the selected geometry.
Return an array of geometries from a geometry collection.
Given an OpenLayers geometry collection, create a KML MultiGeometry.
Creates a Geometry Collection -- a list of geoms.
{String} Name of featureCollection element.
collectRadiusHandle: function()
Collect the radius handle for the selected geometry.
collectRoots: function()
Collects the root nodes of all layers this control is configured with and moveswien the nodes to this control’s layer
collectVertices: function()
Collect the vertices from the modifiable feature’s geometry and push them on to the control’s vertices array.
commit: function()
Write out the data to a WFS server.
commit: function()
Go over the features and for each take action based on the feature state.
commit: function(features,
options)
Iterate over each feature and take action based on the feature state.
commit: function(features,
options)
Go over the features and for each take action based on the feature state.
commit: function(features,
options)
Given a list of feature, assemble a batch request for update, create, and delete transactions.
commitFailure: function(request)
Called when the Ajax request fails
commitReport: function(string,
response)
Called with a ‘success’ message if the commit succeeded, otherwise a failure message, and the full request text as a second parameter.
commitSuccess: function(request)
Called when the Ajax request returns a response
{Function} This is the function used to determine placement of of a new node within the indexer.
Creates a comparison rule.
{Array(OpenLayers.Geometry)} The component parts of this geometry
{Array(String)} An array of class names representing the types of components that the collection can include.
{Array(String)} An array of class names representing the types of components that the collection can include.
{Array(String)} An array of class names representing the types of components that the collection can include.
{Array(String)} An array of class names representing the types of components that the collection can include.
{Array(String)} An array of class names representing the types of components that the collection can include.
{Array(String)} An array of class names representing the types of components that the collection can include.
{Array(String)} An array of class names representing the types of components that the collection can include.
concatChildValues: function(node,
def)
Deprecated.
configureLayers: function()
As soon as all the layers are loaded, cycle through them and hide or show them.
considerSnapping: function(point,
loc)
considerSplit: function(feature)
Decide whether or not to split target features with the supplied feature.
{DOMElement}
contains:function(x,
y,
inclusive)
contains: function(str,
sub)
Test whether a string contains another string.
Deprecated.
containsBounds:function(bounds,
partial,
inclusive)
Determine whether the target bounds is contained within this bounds.
containsLonLat:function(ll,
inclusive)
containsPixel:function(px,
inclusive)
containsPoint: function(point)
Test if a point is inside a linear ring.
containsPoint: function(point)
Test if a point is inside a polygon.
{String} The CSS class of the popup content div.
{String} The CSS class of the popup content div.
{DOMElement} a reference to the element that holds the content of the div.
{String} An HTML string for this popup to display.
{OpenLayers.Size} the width and height of the content.
contentType: function(node)
Determine the content type for a given node.
{Object} An optional object with properties that the rule should be evaluated against.
{Object} An optional object with properties that symbolizers’ property values should be evaluated against.
contextToMap: function(context,
id)
Create a map given a context object.
{OpenLayers.Control}.
Create an OpenLayers Control.
{Array(OpenLayers.Control)}
{Array(OpenLayers.Control)} List of controls associated with the map.
{Integer} 5.
count: function()
Writes the number of times that the line of code where count was called was executed.
Deprecated.
create: function()
Construct a request for writing newly created features.
create: function(features,
options)
Construct a request for writing newly created features.
create: function(features,
options)
Create new features into the database.
OpenLayers.Util.createAlphaImageDiv = function(id,
px,
sz,
imgURL,
position,
border,
sizing,
opacity,
delayDisplay)
createBlocks: function()
createCallback: function(method,
response,
options)
Returns a function that applies the given public method with resp and options arguments.
createCallback: function(method,
response,
options)
Returns a function that applies the given public method with resp and options arguments.
createCluster: function(feature)
Given a feature, create a cluster.
createCRSObject: function(object)
Create the CRS object for an object.
createDefs: function()
{DOMElement} The element to which we’ll add the symbol definitions
OpenLayers.Util.createDiv = function(id,
px,
sz,
imgURL,
position,
border,
overflow,
opacity)
Creates a new div and optionally set some standard attributes.
createdOffline: function(feature)
Returns true if the feature had a feature id when it was created in the Gears database, false otherwise; this is determined by checking the form of the feature’s fid value.
createElementDefaultNS: function(name,
childValue,
attributes)
Shorthand for createElementNS with namespace from defaultPrefix.
createElementNS: function(uri,
name)
Create a new element with namespace.
createElementNSPlus: function(name,
options)
Shorthand for creating namespaced elements with optional attributes and child text nodes.
createFeature: function(pixel)
Add temporary geometries
createFeature: function(pixel)
Add temporary features
createFeature: function(pixel)
Add temporary geometries
createFeatureFromItem: function(item)
Return a feature from a GeoRSS Item.
createFeatureNodes: function(feature)
Takes a feature, returns a list of nodes from size 0->n.
createFeatureXML: function(feature)
Accept an OpenLayers.Feature.Vector, and build a geometry for it.
createFeatureXML: function(feature)
Accept an OpenLayers.Feature.Vector, and build a GML node for it.
createFeatureXML: function(feature)
createFilter: function()
Returns {OpenLayers.Filter} The filter object.
createFolderXML: function()
Creates and returns a KML folder node
createGeometry: function()
Create the new polygon geometry.
createGeometryFromItem: function(item)
Return a geometry from a GeoRSS Item.
OpenLayers.Util.createImage = function(id,
px,
sz,
imgURL,
position,
border,
opacity,
delayDisplay)
Creates an img element with specific attribute values.
OpenLayers.Style.createLiteral = function(value,
context,
feature)
converts a style value holding a combination of PropertyName and Literal into a Literal, taking the property values from the passed features.
createLiterals: function(style,
feature)
creates literals for all style properties that have an entry in this.propertyStyles.
createMap: function()
Construct the map that this control contains
createMarker: function()
Based on the data associated with the Feature, create and return a marker object.
createMarker: function()
createNode: function(type,
id)
createNode: function(type,
id)
createNode: function(type,
id)
Create a new node
createOLPropertyNode: function(obj,
prop)
Create a node representing an OpenLayers property.
createOrUpdate: function(features)
Construct a request for updating or creating features in the database.
createParams: function(center,
zoom,
layers)
Creates the parameters that need to be encoded into the permalink url.
createPlacemarkXML: function(feature)
Creates and returns a KML placemark node representing the given feature.
createPopup: function(closeBox)
Creates a popup object created from the ‘lonlat’, ‘popupSize’, and ‘popupContentHTML’ properties set in this.data.
createPopup: function()
OpenLayers.Geometry.Polygon.createRegularPolygon = function(origin,
radius,
sides,
rotation)
Create a regular polygon around a radius.
createRenderRoot: function()
{DOMElement} The specific render engine’s root element
createRenderRoot: function()
Create the renderer root
createRoot: function(suffix)
createRoot: function(suffix)
Create the main root element
createSymbolizer: function(feature)
creates a style by applying all feature-dependent rules to the base style.
createSymbolizer: function(feature,
intent)
Creates the symbolizer for a feature for a render intent.
createTextNode: function(text)
Create a text node.
OpenLayers.Util.createUniqueID = function(prefix)
Create a unique identifier for this session.
OpenLayers.Util.createUrlObject = function(url,
options)
createXML:
Takes a feature, returns a list of nodes from size 0->n.
{Object} Object mapping supported css property names to OpenLayers symbolizer property names.
{Boolean} Write gml:Curve instead of gml:LineString elements.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General4.html b/openlayers/doc/devdocs/index/General4.html new file mode 100644 index 0000000..8514fa9 --- /dev/null +++ b/openlayers/doc/devdocs/index/General4.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
D
 dashStyle
 data
 databaseName, OpenLayers.Protocol.SQL
 dataFrom, OpenLayers.Layer.PointTrack.OpenLayers.Layer.PointTrack
 dataLayers, OpenLayers.Control.LayerSwitcher
 dataLayersDiv, OpenLayers.Control.LayerSwitcher
 dataLbl, OpenLayers.Control.LayerSwitcher
 db, OpenLayers.Protocol.SQL.Gears
 dblclick
 deactivate
 debug, OpenLayers.Console
 decimalSeparator, OpenLayers.Number
 DEFAULT_CONFIG, OpenLayers.Request
 DEFAULT_FORMAT, OpenLayers.Layer.KaMapCache
 DEFAULT_OPTIONS, OpenLayers.Layer.ArcIMS
 DEFAULT_PARAMS
 defaultClick
 defaultCode, OpenLayers.Lang
 defaultControl, OpenLayers.Control.Panel
 defaultDblClick
 defaultDblRightClick, OpenLayers.Control.Navigation
 defaultGraphicFormat, OpenLayers.Format.SLD.v1
 defaultIcon, OpenLayers.Marker
 defaultKeyPress, OpenLayers.Control.KeyboardDefaults
 defaultMouseDown
 defaultMouseMove
 defaultMouseOut
 defaultMouseUp
 defaultPrefix
 DEFAULTS
 defaultSize, OpenLayers.Layer.MapGuide
 defaultsPerSymbolizer, OpenLayers.Style
 defaultStyle
 defaultStyleName, OpenLayers.Format.WMC.v1
 defaultStyleTitle, OpenLayers.Format.WMC.v1
 defaultSymbolizer, OpenLayers.Format.SLD.v1
 defaultVersion
 defaultWheelDown, OpenLayers.Control.MouseDefaults
 defaultWheelUp, OpenLayers.Control.MouseDefaults
 deferDelete, OpenLayers.Control.Split
 delay
 delayedCall
 delayedRightCall, OpenLayers.Handler.Click
 delayedTrigger, OpenLayers.Control.Measure
 delete
 DELETE, OpenLayers.Request
 deleteCodes, OpenLayers.Control.ModifyFeature
 description
 destroy
OpenLayers.ControlOpenLayers.Control.AttributionOpenLayers.Control.DragFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.OverviewMapOpenLayers.Control.PanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.SelectFeatureOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Feature.WFSOpenLayers.FilterOpenLayers.Filter.LogicalOpenLayers.FormatOpenLayers.Format.WFSOpenLayers.Format.XMLOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.HandlerOpenLayers.handler.KeyboardOpenLayers.Handler.MouseWheelOpenLayers.IconOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.EventPaneOpenLayers.Layer.GeoRSSOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.MarkersOpenLayers.Layer.TextOpenLayers.Layer.VectorOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.MapOpenLayers.MarkerOpenLayers.Marker.BoxOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProjectionOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.RendererOpenLayers.Renderer.ElementsOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RuleOpenLayers.StrategyOpenLayers.Strategy.FixedOpenLayers.StyleOpenLayers.StyleMapOpenLayers.TileOpenLayers.Tile.ImageOpenLayers.Tile.WFS
 destroyAllFeatures, OpenLayers.Tile.WFS
 destroyFeature
 destroyFeatures, OpenLayers.Layer.Vector
 destroyMarker
 destroyPopup
 determineQuadrant, OpenLayers.Bounds
 determineZIndex, OpenLayers.ElementsIndexer
 dir, OpenLayers.Console
 direction
 dirxml, OpenLayers.Console
 disableFirefoxOverflowHack, OpenLayers.Popup
 disableZoomWheel, OpenLayers.Control.Navigation
 dispatch, OpenLayers.Ajax.Responders
 dispatchException, OpenLayers.Ajax.Request
 display
 displayClass
 displayError, OpenLayers.Layer.Vector
 displayInLayerSwitcher
 displayOutsideMaxExtent, OpenLayers.Layer
 displayProjection
 displaySystem, OpenLayers.Control.Measure
 displaySystemUnits, OpenLayers.Control.Measure
 distance
 distanceTo
 distanceToSegment, OpenLayers.Geometry.OpenLayers.Geometry
 distanceUnits, OpenLayers.Filter.Spatial
 distVincenty, Util
 div
 divClick, OpenLayers.Control.PanZoomBar
 divEvents, OpenLayers.Control.PanZoomBar
 doneDragging, OpenLayers.Control.DragFeature
 DOTS_PER_INCH, Util
 double, OpenLayers.Handler.Click
 doubleClick, OpenLayers.Control.PanZoom
 down
 downFeature, OpenLayers.Control.DragFeature
 Drag, OpenLayers.Handler.Drag.OpenLayers.Handler
 DRAG, OpenLayers.Control.ModifyFeature
 dragCallbacks, OpenLayers.Control.DragFeature
 dragComplete, OpenLayers.Control.ModifyFeature
 dragControl, OpenLayers.Control.ModifyFeature
 DragFeature, OpenLayers.Control.DragFeature.OpenLayers.Control
 dragging
 dragHandle, OpenLayers.Control.ModifyFeature
 dragHandler, OpenLayers.Handler.Box
 dragObject, OpenLayers.Layer.Google
 dragPan, OpenLayers.Control.Navigation
 dragPanMapObject
 dragStart, OpenLayers.Control.ModifyFeature
 dragVertex, OpenLayers.Control.ModifyFeature
 draw
 drawCircle
 drawExternalGraphic, OpenLayers.Renderer.Canvas
 drawFeature
 DrawFeature, OpenLayers.Control.DrawFeature.OpenLayers.Control
 drawGeometry
 drawGeometryNode, OpenLayers.Renderer.Elements
 drawing, OpenLayers.Handler.Point
 DrawLine, OpenLayers.Renderer.VML
 drawLinearRing
 drawLineString
 drawMarker
 drawn
 drawPoint
 drawPolygon
 drawRectangle
 drawSurface
 drawText
 duration, OpenLayers.Tween
+ +
dashStyle: function(style,
widthFactor)
dashStyle: function(style)
{Object}
{Object} When keepData is true, this is the parsed string sent to read.
{String}
{Object} with the following keys
{Array(OpenLayers.Layer)}
{DOMElement}
{DOMElement}
{GearsDatabase}
dblclick: function(evt)
Handle dblclick.
dblclick: function(evt)
Handle dblclick.
dblclick: function(evt)
Handle double-clicks.
dblclick: function(evt)
Handle double-clicks.
dblclick: function(evt)
Handle double-clicks.
deactivate: function ()
Deactivates a control and it’s associated handler if any.
deactivate: function()
Deactivate the control and all handlers.
deactivate: function ()
Deactivates the control.
deactivate: function()
Deactivate the control.
deactivate: function()
deactivate: function()
Deactivate the control.
deactivate: function()
deactivate: function ()
Deactivates the control.
deactivate: function()
Deactivate the control.
deactivate: function()
Deactivate the control.
deactivate: function ()
Deactivates the control.
deactivate: function()
Turn off the handler.
deactivate: function ()
deactivate: function()
Deactivate the handler.
deactivate: function()
Deactivate the handler.
deactivate: function()
Turn off the handler.
deactivate: function()
Deactivate the handler.
deactivate: function()
deactivate: function (evt)
deactivate: function()
turn off the handler
deactivate: function()
Turn off the handler.
deactivate: function()
Deactivate the strategy.
deactivate: function()
Tear down strategy with regard to reading new batches of remote data.
deactivate: function()
Deactivate the strategy.
deactivate: function()
Deactivate the strategy.
deactivate: function()
Deactivate the strategy.
deactivate: function()
Deactivate the strategy.
debug: function()
Writes a message to the console, including a hyperlink to the line where it was called.
Decimal separator to use when formatting numbers.
{Object} Default configuration for all requests.
{Object} Simple hash map to convert format to extension.
{Object} Default layers properties.
{Object} Hashtable of default parameter key/value pairs
{Object} Default query string parameters.
{Object} parameters set by default.
{Object} Hashtable of default parameter key/value pairs
{Object} Hashtable of default key/value parameters
{Object} Hashtable of default parameter key/value pairs
defaultClick: function (evt)
defaultClick: function (evt)
{String} Default language to use when a specific language can’t be found.
{OpenLayers.Control} The control which is activated when the control is activated (turned on), which also happens at instantiation.
defaultDblClick: function (evt)
defaultDblClick: function (evt)
defaultDblClick: function (evt)
defaultDblRightClick: function (evt)
{String} If none other can be determined from getGraphicFormat, this default will be returned.
OpenLayers.Marker.defaultIcon = function()
Creates a default OpenLayers.Icon.
defaultKeyPress: function (evt)
When handling the key event, we only use evt.keyCode.
defaultMouseDown: function (evt)
defaultMouseDown: function (evt)
defaultMouseMove: function (evt)
defaultMouseMove: function (evt)
defaultMouseOut: function (evt)
defaultMouseOut: function (evt)
defaultMouseUp: function (evt)
defaultMouseUp: function (evt)
{String} The default namespace alias for creating element nodes.
Default target properties.
{Object} Default properties for the WFST format.
{OpenLayers.Size} Tile size as produced by MapGuide server
{Boolean} If set to true, the defaultStyle will extend the symbolizer of every rule.
defaultStyle allows one to control the default styling of the features.
{Object} hash of style properties to use as default for merging rule-based style symbolizers onto.
{String} Style name used if layer has no style param.
{String} Default style title.
{Object} A symbolizer with the SLD defaults.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
defaultWheelDown: function(evt)
User spun scroll wheel down
defaultWheelUp: function(evt)
User spun scroll wheel up
{Boolean} Instead of removing features from the layer, set feature states of split features to DELETE.
{Number} Number of milliseconds between clicks before the event is considered a double-click.
{Number} Number of milliseconds between clicks before the event is considered a double-click.
delayedCall: function(evt)
Sets timerId to null.
delayedCall: function(evt)
Triggers pause callback.
delayedRightCall: function(evt)
Sets rightclickTimerId to null.
{Number} Timeout id of trigger for measurepartial.
"delete": function()
Construct a request deleting a removed feature.
"delete": function(feature,
options)
Construct a request deleting a removed feature.
"delete": function(features,
options)
Delete features from the database.
DELETE: function(config)
Send an HTTP DELETE request.
{Array(Integer)} Keycodes for deleting verticies.
{String} Description of this rule (set if abstract is included in SLD)
{String} Description of this style (set if abstract is included in SLD)
destroy: function ()
The destroy method is used to perform any clean up before the control is dereferenced.
destroy: function()
Destroy control.
destroy: function()
Take care of things that are not handled in superclass
destroy: function()
destroy: function()
destroy: function()
Take care of things that are not handled in superclass.
destroy: function()
destroy: function()
destroy: function()
destroy: function()
The destroy method is used to perform any clean up before the control is dereferenced.
destroy: function()
Destroy the control.
destroy: function()
Deconstruct the control
destroy: function()
destroy: function()
destroy: function()
destroy: function()
destroy: function()
destroy: function()
Clean up the control.
destroy: function()
Clean up the control.
destroy: function ()
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
Remove reference to anything added.
destroy: function()
Remove reference to child filters.
destroy: function()
Clean up.
destroy: function()
Remove ciruclar ref to layer
destroy: function()
Clean up.
destroy: function()
Destroy this geometry.
destroy: function ()
Destroy this geometry.
destroy: function ()
Deconstruct the handler.
destroy: function()
destroy: function()
destroy: function()
Nullify references and remove event listeners to prevent circular references and memory leaks
destroy: function(setNewBaseLayer)
Destroy is a destructor: this is to alleviate cyclic references which the Javascript garbage cleaner can not take care of on its own.
destroy: function()
Destroy this layer
destroy: function()
Destroy this layer
destroy: function()
Deconstruct this layer.
destroy: function()
destroy: function()
Deconstruct the layer and clear the grid.
destroy: function()
destroy: function()
Destroy this layer
destroy: function()
destroy: function()
destroy: function()
Destroy this layer
destroy: function()
destroy: function()
Destroy this layer
destroy:function()
Destroy this map
destroy: function()
Destroy the marker.
destroy: function()
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
destroy: function()
destroy: function()
destroy: function()
Destroy projection object.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
Clean up the protocol.
destroy: function()
destroy: function()
destroy: function()
destroy: function()
Deconstruct the renderer.
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
Clean up the strategy.
destroy: function()
Clean up the strategy.
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
destroy:function()
Nullify references to prevent circular references and memory leaks.
destroy: function()
nullify references to prevent circular references and memory leaks
destroy: function()
nullify references to prevent circular references and memory leaks
destroyAllFeatures: function()
Iterate through and call destroy() on each feature, removing it from the local array
destroyFeature: function()
Destroy temporary geometries
destroyFeature: function()
Destroy the temporary geometries
destroyFeature: function()
Destroy temporary geometries
destroyFeatures: function(features,
options)
Erase and destroy features on the layer.
destroyMarker: function()
Destroys marker.
destroyMarker: function()
destroyPopup: function()
Destroys the popup created via createPopup.
destroyPopup: function()
determineQuadrant: function(lonlat)
determineZIndex: function(node)
Determine the z-index for the current node if there isn’t one, and set the maximum value if we’ve found a new maximum.
dir: function()
Prints an interactive listing of all properties of the object.
{String} ‘vertical’ or ‘horizontal’
{String} in {‘North’, ‘South’, ‘East’, ‘West’}
dirxml: function()
Prints the XML source tree of an HTML or XML element.
{Boolean} The hack for overflow in Firefox causes all elements to be re-drawn, which causes Flash elements to be re-initialized, which is troublesome.
disableZoomWheel : function()
dispatch: function(callback,
request,
transport)
dispatchException: function(exception)
If the optional onException function is set, execute it and then dispatch the call to any other listener registered for onException.
display: function(display)
Hide or show the icon
display: function(display)
Hide or show the Layer
display: function(display)
Set the display on the pane
display: function(display)
Hide or show the layer
display: function(display)
Hide or show the Layer
display: function()
display: function()
Call the display method of the appropriate parent class.
display: function(display)
Hide or show the icon
display: function(display)
Hide or show the icon
{string} This property is used for CSS related to the drawing of the Control.
{String} The CSS class of the popup.
displayError: function()
Let the user know their browser isn’t supported.
{Boolean} Display the layer’s name in the layer switcher.
Set to false for this layer type
{Boolean} Request map tiles that are completely outside of the max extent for this layer.
{OpenLayers.Projection} Requires proj4js support.
{OpenLayers.Projection} The projection in which the mouse position is displayed
{OpenLayers.Projection} Requires proj4js support.
{OpenLayers.Projection} Requires proj4js support.Projection used by several controls to display data to user.
{String} Display system for output measurements.
{Object} Units for various measurement systems.
{Number} The distance to use in a DWithin spatial filter.
{Integer} Pixel distance between features that should be considered a single cluster.
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
distanceTo: function(geometry,
options)
Calculate the closest distance between two geometries (on the x-y plane).
OpenLayers.Geometry.distanceToSegment = function(point,
segment)
{String} The units to use for the distance, e.g.
OpenLayers.Util.distVincenty=function(p1,
p2)
Given two objects representing points with geographic coordinates, this calculates the distance between those points on the surface of an ellipsoid.
{DOMElement}
{DOMElement}
{DOMElement|String} The element that contains the map (or an id for that element).
{DOMElement}
{DOMElement} the div that contains this popup.
divClick: function (evt)
Picks up on clicks directly on the zoombar div and sets the zoom level appropriately.
{OpenLayers.Events}
doneDragging: function(pixel)
Called when the drag handler is done dragging.
{Integer} 72 (A sensible default)
{Boolean} Handle double-clicks.
doubleClick: function (evt)
{OpenLayers.Pixel} The pixel location of the last mousedown.
down: function(evt)
This method is called during the handling of the mouse down event.
{OpenLayers.Pixel} The location of the last mousedown.
down: function(evt)
Start drawing a new feature
downFeature: function(pixel)
Called when the drag handler detects a mouse-down.
Returns OpenLayers.Handler.Drag
{Integer} Constant used to make the control work in drag mode
{Object} The functions that are sent to the drag handler for callback.
dragComplete: function(vertex)
Called by the drag feature control when the feature dragging is complete.
{OpenLayers.Control.DragFeature}
Create a new control to drag features.
{Boolean}
{Boolean} The map is currently being dragged.
{OpenLayers.Feature.Vector} A handle for dragging a feature.
{OpenLayers.Handler.Drag}
{GDraggableObject} Since 2.93, Google has exposed the ability to get the maps GDraggableObject.
{OpenLayers.Control.DragPan}
dragPanMapObject: function(dX,
dY)
dragPanMapObject: function(dX,
dY)
dragPanMapObject: function(dX,
dY)
dragStart: function(feature,
pixel)
Called by the drag feature control with before a feature is dragged.
dragVertex: function(vertex,
pixel)
Called by the drag feature control with each drag move of a vertex.
draw: function (px)
The draw method is called when the control is ready to be displayed on the page.
draw: function()
Initialize control.
draw: function()
Creates a Drag handler, using panMap and panMapDone as callbacks.
draw: function()
calls the default draw, and then activates mouse defaults.
draw: function()
Create handler.
draw: function()
{DOMElement} A reference to the DIV DOMElement containing the switcher tabs.
draw: function()
draw: function()
{DOMElement}
draw: function()
draw: function()
draw: function()
Called when the control is added to the map.
draw: function()
calls the default draw, and then activates mouse defaults.
draw: function()
Render the control in the browser.
draw: function()
{DOMElement}
draw: function(px)
draw: function(px)
draw: function()
{DOMElement}
draw: function()
{DOMElement}
draw: function()
{DOMElement}
draw: function()
draw: function(px)
Move the div to the given pixel.
draw: function(px)
Calls draw on the icon, and returns that output.
draw: function(px,
sz)
draw: function(px)
Constructs the elements that make up the popup.
draw: function(px)
draw: function()
Clear whatever is currently in the tile, then return whether or not it should actually be re-drawn.
draw: function()
Check that a tile should be drawn, and draw it.
draw:function()
Check that a tile should be drawn, and load features for it.
drawCircle: function(node,
geometry)
Virtual function for drawing Circle Geometry.
drawCircle: function(node,
geometry,
radius)
This method is only called by the renderer itself.
drawCircle: function(node,
geometry,
radius)
Render a circle.
drawExternalGraphic: function(pt,
style)
Called to draw External graphics.
drawFeature: function(geometry)
drawFeature: function()
Render geometries on the temporary layer.
drawFeature: function()
Render features on the temporary layer.
drawFeature: function()
Render geometries on the temporary layer.
drawFeature: function(feature,
style)
Draw (or redraw) a feature on the layer.
drawFeature: function(feature,
style)
Draw the feature.
drawFeature: function(feature,
style)
Draw the feature.
drawGeometry: function(geometry,
style,
featureId)
Draw a geometry.
drawGeometry: function(geometry,
style)
Used when looping (in redraw) over the features; draws the canvas.
drawGeometry: function(geometry,
style,
featureId)
Draw the geometry, creating new nodes, setting paths, setting style, setting featureId on the node.
drawGeometryNode: function(node,
geometry,
style)
Given a node, draw a geometry on the specified layer.
{Boolean} A point is being drawn
Render a line.
drawLinearRing: function(geometry,
style)
This method is only called by the renderer itself.
drawLinearRing: function(node,
geometry)
Virtual function for drawing LinearRing Geometry.
drawLinearRing: function(node,
geometry)
This method is only called by the renderer itself.
drawLinearRing: function(node,
geometry)
Render a linearring
drawLineString: function(geometry,
style)
This method is only called by the renderer itself.
drawLineString: function(node,
geometry)
Virtual function for drawing LineString Geometry.
drawLineString: function(node,
geometry)
This method is only called by the renderer itself.
drawLineString: function(node,
geometry)
Render a linestring.
drawMarker: function(marker)
Calculate the pixel location for the marker, create it, and add it to the layer’s div
drawMarker: function(marker)
Calculate the pixel location for the marker, create it, and add it to the layer’s div
{Boolean} internal state of drawing.
{Boolean} Whether the Vector Layer features have been drawn yet.
drawPoint: function(geometry,
style)
This method is only called by the renderer itself.
drawPoint: function(node,
geometry)
Virtual function for drawing Point Geometry.
drawPoint: function(node,
geometry)
This method is only called by the renderer itself.
drawPoint: function(node,
geometry)
Render a point
drawPolygon: function(geometry,
style)
This method is only called by the renderer itself.
drawPolygon: function(node,
geometry)
Virtual function for drawing Polygon Geometry.
drawPolygon: function(node,
geometry)
This method is only called by the renderer itself.
drawPolygon: function(node,
geometry)
Render a polygon
drawRectangle: function(node,
geometry)
Virtual function for drawing Rectangle Geometry.
drawRectangle: function(node,
geometry)
This method is only called by the renderer itself.
drawRectangle: function(node,
geometry)
Render a rectangle
drawSurface: function(node,
geometry)
Virtual function for drawing Surface Geometry.
drawSurface: function(node,
geometry)
This method is only called by the renderer itself.
drawSurface: function(node,
geometry)
drawText: function(featureId,
style,
location)
Function for drawing text labels.
drawText: function(location,
style)
This method is only called by the renderer itself.
drawText: function(featureId,
style,
location)
This method is only called by the renderer itself.
drawText: function(featureId,
style,
location)
This method is only called by the renderer itself.
{int} duration of the tween (number of steps)
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General5.html b/openlayers/doc/devdocs/index/General5.html new file mode 100644 index 0000000..d50b181 --- /dev/null +++ b/openlayers/doc/devdocs/index/General5.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
E
 easeIn
 easeInOut
 easeOut
 easing, OpenLayers.Tween
 eBottom, OpenLayers.Control.ScaleLine
 edge, OpenLayers.Control.Split
 EditingToolbar, OpenLayers.Control.EditingToolbar.OpenLayers.Control
 element
 Elements, OpenLayers.Renderer.Elements.OpenLayers.Renderer
 elseFilter, OpenLayers.Rule
 emptyFunction, OpenLayers.Ajax
 enableZoomWheel, OpenLayers.Control.Navigation
 encodeBBOX
 endBox, OpenLayers.Handler.Box
 equals
 erase
 eraseFeatures
 eraseGeometry
 error, OpenLayers.Console
 eTop, OpenLayers.Control.ScaleLine
 evaluate
 evaluateFilter, OpenLayers.Protocol.SQL
 EVENT_TYPES
 eventHandler, OpenLayers.Events
 eventListener, OpenLayers.handler.Keyboard
 eventListeners
 EVENTMAP, OpenLayers.Handler.Feature
 EventPane, OpenLayers.Layer.EventPane.OpenLayers.Layer
 events
 Events
 eventTypes, OpenLayers.Events
 evt, OpenLayers.Handler
 exists, OpenLayers.ElementsIndexer
 extend
 extendBounds, OpenLayers.Geometry
 extendDefault, OpenLayers.StyleMap
 extent
 externalProjection, OpenLayers.Format
 extract, OpenLayers.Format.GeoJSON
 extractAttributes
 extractFidFromField, OpenLayers.Protocol.SQL.Gears
 extractRoutes, OpenLayers.Format.GPX
 extractSegment, OpenLayers.Format.GPX
 extractStyles
 extractTracks, OpenLayers.Format.GPX
 extractWaypoints, OpenLayers.Format.GPX
+ +
easeIn: function(t,
b,
c,
d)
easeIn: function(t,
b,
c,
d)
easeIn: function(t,
b,
c,
d)
easeInOut: function(t,
b,
c,
d)
easeInOut: function(t,
b,
c,
d)
easeInOut: function(t,
b,
c,
d)
easeOut: function(t,
b,
c,
d)
easeOut: function(t,
b,
c,
d)
easeOut: function(t,
b,
c,
d)
{<OpenLayers.Easing>(Function)} Easing equation used for the animation Defaultly set to OpenLayers.Easing.Expo.easeOut
{DOMElement}
{Boolean} Allow splits given intersection of edges only.
Create an editing toolbar for a given layer.
{DOMElement}
{DOMElement} The DOM element that contains the overview map
{DOMElement}
element: function(event)
Cross browser event element detection.
{DOMElement} the DOM element receiving browser events
{Boolean} Determines whether this rule is only to be applied only if no other rules match (ElseFilter according to the SLD specification).
emptyFunction: function ()
enableZoomWheel : function()
{Boolean} Should the BBOX commas be encoded? 
{Boolean} Should the BBOX commas be encoded? 
endBox: function(end)
equals:function(bounds)
Test a two bounds for equivalence.
equals: function(geometry)
Determine whether another geometry is equivalent to this one.
equals: function(geom)
Determine whether another geometry is equivalent to this one.
equals:function(ll)
equals:function(px)
Determine whether one pixel is equivalent to another
equals: function(projection)
Test equality of two projection instances.
equals:function(sz)
Determine where this size is equal to another
erase: function()
Erase the underlying image element.
erase: function()
Erases any drawn elements for this marker.
eraseFeatures: function(features)
Erase features from the layer.
eraseFeatures: function(features)
This is called by the layer to erase features
eraseFeatures: function(features)
This is called by the layer to erase features; removes the feature from the list, then redraws the layer.
eraseGeometry: function(geometry)
Remove a geometry from the renderer (by id).
eraseGeometry: function(geometry)
Erase a geometry from the renderer.
eraseGeometry: function(geometry)
Erase a geometry from the renderer.
error: function()
Writes a message to the console with the visual “error” icon and color coding and a hyperlink to the line where it was called.
{DOMElement}
evaluate: function(context)
Evaluates this filter in a specific context.
evaluate: function(context)
Evaluates this filter in a specific context.
evaluate: function(feature)
evaluates this rule for a specific feature
evaluate: function(context)
Evaluates this filter in a specific context.
evaluate: function(feature)
Evaluates this filter for a specific feature.
evaluate: function(feature)
evaluates this rule for a specific feature
evaluateFilter: function(feature,
filter)
If postReadFiltering is true evaluate the filter against the feature and return the result of the evaluation, otherwise return true.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types.
{Array(String)} Supported application event types
{Function} bound event handler attached to elements
{Function}
{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
{Object} A object mapping the browser events to objects with callback keys for in and out.
Create a new event pane layer
{OpenLayers.Events} Events instance for triggering control specific events.
{OpenLayers.Events}
{OpenLayers.Events} An events object that handles all events on the map
{OpenLayers.Events} the event handler.
{OpenLayers.Events} custom event manager
{OpenLayers.Events} An events object that handles all events on the {OpenLayers.Request} object.
{OpenLayers.Events} An events object that handles all events on the tile.
{Array(String)}
Construct an OpenLayers.Events object.
{Array(String)} list of support application events
{Event} This property references the last event handled by the handler.
exists: function(node)
node- {DOMElement} The node to test for existence.
extend:function(object)
Extend the bounds to include the point, lonlat, or bounds specified.
OpenLayers.Util.extend = function(destination,
source)
Copy all properties of a source object to a destination object.
extendBounds: function(newBounds)
Extend the existing bounds to include the new bounds.
{Boolean} if true, every render intent will extend the symbolizers specified for the “default” intent at rendering time.
{OpenLayers.Bounds} The image bounds in map units.
{OpenLayers.Bounds}
{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.
Object with properties corresponding to the GeoJSON types.
{Boolean} Extract attributes from GML.
{Boolean} Extract attributes from GML.
{Boolean} Extract feature attributes from GPX.
{Boolean} Extract attributes from KML.
{Boolean} Extract attributes from GML.
{Boolean} Should the WFS layer parse attributes from the retrieved GML? 
extractFidFromField: function(field)
{Boolean} Extract routes from GPX.
extractSegment: function(segment,
segmentType)
{Boolean} Extract styles from KML.
set to true to extract styles from the TSV files, using information from the image or icon, iconSize and iconOffset fields.
{Boolean} Extract tracks from GPX.
{Boolean} Extract waypoints from GPX.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General6.html b/openlayers/doc/devdocs/index/General6.html new file mode 100644 index 0000000..efebeb7 --- /dev/null +++ b/openlayers/doc/devdocs/index/General6.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
F
 fallThrough
 feature
 Feature
 featureAdded, OpenLayers.Control.DrawFeature
 featureCallbacks, OpenLayers.Control.DragFeature
 featureClass, OpenLayers.Layer.WFS
 featureCoordSys, OpenLayers.Layer.ArcIMS
 featureDescription, OpenLayers.Format.GeoRSS
 FeatureId, OpenLayers.Filter.FeatureId.OpenLayers.Filter
 featureIdentifier, OpenLayers.Format.WMSGetFeatureInfo
 featureName, OpenLayers.Format.GML
 featurens, OpenLayers.Format.GeoRSS
 featureNS
 featurePrefix
 features
 Features, OpenLayers.Format.ArcXML.Features.OpenLayers.Format.ArcXML
 featureTitle, OpenLayers.Format.GeoRSS
 featureType
 fetched, OpenLayers.Format.KML
 fetchLink, OpenLayers.Format.KML
 fid, OpenLayers.Feature.Vector
 FID_PREFIX, OpenLayers.Protocol.SQL.Gears
 fidRegExp, OpenLayers.Protocol.SQL.Gears
 fids, OpenLayers.Filter.FeatureId
 filter
 Filter
 filterCoordSys, OpenLayers.Layer.ArcIMS
 filterDelete, OpenLayers.Protocol.WFS.v1
 filterMap, OpenLayers.Format.Filter.v1
 filters, OpenLayers.Filter.Logical
 finalize
 findElement, OpenLayers.Event
 findLayers, OpenLayers.Control.WMSGetFeatureInfo
 findPropertyStyles, OpenLayers.Style
 finish, OpenLayers.Tween
 Fixed, OpenLayers.Strategy.Fixed.OpenLayers.Strategy
 fixedRadius, OpenLayers.Handler.RegularPolygon
 fixedRelativePosition
 FixedZoomLevels, OpenLayers.Layer.FixedZoomLevels.OpenLayers.Layer
 fixPadding, OpenLayers.Popup
 fixYahooEventPane, OpenLayers.Layer.Yahoo
 FOLDER_PARAMS, OpenLayers.Layer.MapGuide
 foldersDesc, OpenLayers.Format.KML
 foldersName, OpenLayers.Format.KML
 fontStyleKeys, OpenLayers.Format.ArcXML
 format
 Format, OpenLayers.Format.OpenLayers
 formatObject, OpenLayers.Layer.WFS
 formatOptions
 formatOutput, OpenLayers.Control.MousePosition
 forwardMercator, OpenLayers.Layer.SphericalMercator
 fractionalZoom, OpenLayers.Map
 frame, OpenLayers.Tile.Image
 Framed, OpenLayers.Popup.Framed.OpenLayers.Popup
 FramedCloud, OpenLayers.Popup.FramedCloud.OpenLayers.Popup
 freehand, OpenLayers.Handler.Path
 freehandMode, OpenLayers.Handler.Path
 freehandToggle, OpenLayers.Handler.Path
 freezeFeature, OpenLayers.Protocol.SQL.Gears
 fromArray, OpenLayers.Bounds
 fromSize, OpenLayers.Bounds
 fromString
 fromWKT, OpenLayers.Geometry.OpenLayers.Geometry
 fromWMSLayer, OpenLayers.Protocol.WFS
 Functions
GlobalOpenLayersOpenLayers.AjaxOpenLayers.Ajax.RequestOpenLayers.Ajax.RespondersOpenLayers.Ajax.ResponseOpenLayers.ArrayOpenLayers.BoundsOpenLayers.ConsoleOpenLayers.ControlOpenLayers.Control.ArgParserOpenLayers.Control.AttributionOpenLayers.Control.ButtonOpenLayers.Control.DragFeatureOpenLayers.Control.DragPanOpenLayers.Control.DrawFeatureOpenLayers.Control.EditingToolbarOpenLayers.Control.GetFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.MeasureOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.NavToolbarOpenLayers.Control.OverviewMapOpenLayers.Control.PanOpenLayers.Control.PanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.ScaleOpenLayers.Control.ScaleLineOpenLayers.Control.SelectFeatureOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.Control.WMSGetFeatureInfoOpenLayers.Control.ZoomBoxOpenLayers.Control.ZoomInOpenLayers.Control.ZoomOutOpenLayers.Control.ZoomToMaxExtentOpenLayers.Easing.ExpoOpenLayers.Easing.LinearOpenLayers.Easing.QuadOpenLayers.ElementOpenLayers.ElementsIndexerOpenLayers.ElementsIndexer.IndexingMethodsOpenLayers.EventOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Feature.WFSOpenLayers.FilterOpenLayers.Filter.ComparisonOpenLayers.Filter.FeatureIdOpenLayers.Filter.LogicalOpenLayers.Filter.SpatialOpenLayers.FormatOpenLayers.Format.ArcXMLOpenLayers.Format.ArcXML.FeaturesOpenLayers.Format.FilterOpenLayers.Format.Filter.v1_0_0OpenLayers.Format.Filter.v1_1_0OpenLayers.Format.GeoJSONOpenLayers.Format.GeoRSSOpenLayers.Format.GPXOpenLayers.Format.JSONOpenLayers.Format.KMLOpenLayers.Format.OSMOpenLayers.Format.SLDOpenLayers.Format.TextOpenLayers.Format.WFSOpenLayers.Format.WFSCapabilitiesOpenLayers.Format.WFSCapabilities.v1OpenLayers.Format.WKTOpenLayers.Format.WMCOpenLayers.Format.WMC.v1OpenLayers.Format.WMC.v1_1_0OpenLayers.Format.WMSCapabilitiesOpenLayers.Format.WMSCapabilities.v1_1OpenLayers.Format.WMSDescribeLayerOpenLayers.Format.WMSDescribeLayer.v1_1OpenLayers.Format.WMSGetFeatureInfoOpenLayers.Format.XMLOpenLayers.FunctionOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.Geometry.CurveOpenLayers.Geometry.LinearRingOpenLayers.Geometry.LineStringOpenLayers.Geometry.MultiLineStringOpenLayers.Geometry.MultiPointOpenLayers.Geometry.PointOpenLayers.Geometry.PolygonOpenLayers.Geometry.RectangleOpenLayers.HandlerOpenLayers.Handler.BoxOpenLayers.Handler.ClickOpenLayers.Handler.DragOpenLayers.Handler.FeatureOpenLayers.Handler.HoverOpenLayers.handler.KeyboardOpenLayers.Handler.MouseWheelOpenLayers.Handler.PathOpenLayers.Handler.PointOpenLayers.Handler.PolygonOpenLayers.Handler.RegularPolygonOpenLayers.IconOpenLayers.LangOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.BoxesOpenLayers.Layer.EventPaneOpenLayers.Layer.FixedZoomLevelsOpenLayers.Layer.GeoRSSOpenLayers.Layer.GMLOpenLayers.Layer.GoogleOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.KaMapOpenLayers.Layer.KaMapCacheOpenLayers.Layer.MapGuideOpenLayers.Layer.MapServerOpenLayers.Layer.MapServer.UntiledOpenLayers.Layer.MarkersOpenLayers.Layer.MultiMapOpenLayers.Layer.PointTrackOpenLayers.Layer.SphericalMercatorOpenLayers.Layer.TileCacheOpenLayers.Layer.TMSOpenLayers.Layer.VectorOpenLayers.Layer.Vector.RootContainerOpenLayers.Layer.VirtualEarthOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.Layer.WMS.UntiledOpenLayers.Layer.WorldWindOpenLayers.Layer.XYZOpenLayers.Layer.YahooOpenLayers.LonLatOpenLayers.MapOpenLayers.MarkerOpenLayers.Marker.BoxOpenLayers.NumberOpenLayers.PixelOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.AnchoredBubbleOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.ResponseOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.RendererOpenLayers.Renderer.CanvasOpenLayers.Renderer.ElementsOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RequestOpenLayers.RuleOpenLayers.SizeOpenLayers.StrategyOpenLayers.Strategy.BBOXOpenLayers.Strategy.ClusterOpenLayers.Strategy.FixedOpenLayers.Strategy.PagingOpenLayers.Strategy.SaveOpenLayers.StringOpenLayers.StyleOpenLayers.StyleMapOpenLayers.TileOpenLayers.Tile.ImageOpenLayers.Tile.WFSOpenLayers.TweenUtil
 Functions and Properties
+ +
{Boolean}
{Boolean} Should OpenLayers allow events on the map to fall through to other elements on the page, or should it swallow them? 
{OpenLayers.Feature.Vector}
{OpenLayers.Feature.Vector} Feature currently available for modification.
{OpenLayers.Feature.Vector} The current editable feature.
Return a partial GeoJSON object representing a single feature.
{OpenLayers.Feature.Vector} The last feature that was hovered.
{OpenLayers.Feature.Vector} The currently drawn polygon feature
Constructor for features.
{Function} Called after each feature is added
{Object} The functions that are sent to the feature handler for callback.
{OpenLayers.Feature} If featureClass is defined, an old-style markers based WFS layer is created instead of a new-style vector layer.
{String} Code for feature coordinate system.
{String} Default description for features.
Creates an ogc:FeatureId rule.
{String} All xml nodes containing this search criteria will populate an internal array of feature nodes for each layer node found.
{String} Element name for features.
{String} Feature Attributes namespace.
{String} Namespace used for feature attributes.
{String} The feature namespace.
{String} Feature namespace.
{String} Namespace alias (or prefix) for feature nodes.
{String} Namespace alias for feature type.
{Object} Hash of {OpenLayers.Feature.Vector}, keyed by fid, holding the currently selected features
{Array} Array of features
{Array(OpenLayers.Feature)}
{Array(OpenLayers.Feature)}
{Array(OpenLayers.Feature.Vector)}
{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features returned in the response by the server.
{Object} Internal object of feature/style pairs for use in redrawing the layer.
{Array(OpenLayers.Feature.Vector)} Cached features.
{Array(OpenLayers.Feature.Vector)} Cached features.
{Array(OpenLayers.Feature)} list of features in this tile
Create a new parser/writer for ArcXML Features.
{String} Default title for features.
{Array(String) or String} The local (without prefix) feature typeName(s).
{String} Local feature typeName.
{Object} Storage of KML URLs that have been fetched before in order to prevent reloading them.
fetchLink: function(href)
Fetches a URL and returns the result
{String}
{String}
{RegExp} Regular expression to know whether a feature was created in offline mode.
{Array(String)} Feature Ids to evaluate this rule against.
filter: function(array,
callback,
caller)
Filter an array.
{OpenLayers.Filter} Optional filter for the rule.
This is an abstract class.
Create a new parser for Filter.
{String} Code for filter coordinate system.
filterDelete: function(filter,
options)
Send a request that deletes all features by their filter.
{Object} Contains a member for each filter type.
{Array(OpenLayers.Filter)} Child filters for this filter.
finalize: function(cancel)
Finish the geometry and call the “done” callback.
finalize: function()
Finish the geometry and call the “done” callback.
findElement: function(event,
tagName)
findLayers: function()
Internal method to get the layers, independent of whether we are inspecting the map or using a client-provided array
findPropertyStyles: function()
Looks into all rules for this style and the defaultStyle to collect all the style hash property names containing ${...}
{Object} Values to finish the animation with
Create a new Fixed strategy.
{Boolean} The polygon has a fixed radius.
{Boolean} We want the framed popup to work dynamically placed relative to its anchor but also in just one fixed position.
{Boolean} The Framed Cloud popup works in just one fixed position.
Create a new fixed zoom levels layer.
fixPadding: function()
To be removed in 3.0, this function merely helps us to deal with the case where the user may have set an integer value for padding, instead of an OpenLayers.Bounds object.
fixYahooEventPane: function()
The map has been centered, so the mysterious yahoo eventpane has been added.
{Object} Hashtable of parameter key/value pairs which describe the folder structure for tiles as configured in the mapguide serverconfig.ini section [TileServiceProperties]
{String} Description of the folders.
{String} Name of the folders.
{Array} List of keys used in font styling.
{OpenLayers.Format} A format for parsing GetFeatureInfo responses.
{OpenLayers.Format} The format you want the data to be parsed with.
{String} Mime type of the images returned.
{OpenLayers.Format} The format you want the data to be parsed with.
format: function(num,
dec,
tsep,
dsep)
Formats a number for output.
{OpenLayers.Format} The format used by this protocol.
format: function(template,
context,
args)
Given a string with tokens in the form ${token}, return a string with tokens replaced with properties from the given context object.
Instances of this class are not useful.
{OpenLayers.Format} Internally created/managed format object, used by the Tile to parse data.
{Object} Optional properties to set on the format (if one is not provided in the format property.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Optional options for the format.
formatOutput: function(lonLat)
Override to provide custom display output
forwardMercator: function(lon,
lat)
Given a lon,lat in EPSG:4326, return a point in Spherical Mercator.
{Boolean} For a base layer that supports it, allow the map resolution to be set to a value between one of the values in the resolutions array.
{DOMElement} The image element is appended to the frame.
{Boolean} In freehand mode, the handler starts the path on mouse down, adds a point for every mouse move, and finishes the path on mouse up.
freehandMode: function(evt)
Determine whether to behave in freehand mode or not.
{String} If set, freehandToggle is checked on mouse events and will set the freehand mode to the opposite of this.freehand.
freezeFeature: function(feature)
OpenLayers.Bounds.fromArray = function(bbox)
Alternative constructor that builds a new OpenLayers.Bounds from an array
OpenLayers.Bounds.fromSize = function(size)
Alternative constructor that builds a new OpenLayers.Bounds from a size
OpenLayers.Bounds.fromString = function(str)
Alternative constructor that builds a new OpenLayers.Bounds from a parameter string
OpenLayers.LonLat.fromString = function(str)
Alternative constructor that builds a new OpenLayers.LonLat from a parameter string
OpenLayers.Geometry.fromWKT = function(wkt)
Generate a geometry given a Well-Known Text string.
OpenLayers.Protocol.WFS.fromWMSLayer = function(layer,
options)
Convenience function to create a WFS protocol from a WMS layer.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General7.html b/openlayers/doc/devdocs/index/General7.html new file mode 100644 index 0000000..85284ec --- /dev/null +++ b/openlayers/doc/devdocs/index/General7.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 Gears, OpenLayers.Protocol.SQL.Gears.OpenLayers.Protocol.SQL
 geodesic, OpenLayers.Control.Measure
 GeoJSON, OpenLayers.Format.GeoJSON.OpenLayers.Format
 geometry
 Geometry, OpenLayers.Geometry.OpenLayers
 geometryClone, OpenLayers.Handler.Point
 geometryMap, OpenLayers.Renderer.Canvas
 geometryName
 geometryType, OpenLayers.Layer.Vector
 geometryTypeMatches, OpenLayers.Handler.Feature
 geometryTypes
 geomsToFeatures, OpenLayers.Control.Split
 geons, OpenLayers.Format.GeoRSS
 GeoRSS
 georssns, OpenLayers.Format.GeoRSS
 geoToleranceCache, OpenLayers.Control.Snapping
 GET, OpenLayers.Request
 getArea
 getArgs, Util
 getAttributeNodeNS, OpenLayers.Format.XML
 getAttributeNS, OpenLayers.Format.XML
 getBarLen, OpenLayers.Control.ScaleLine
 getBestArea, OpenLayers.Control.Measure
 getBestLength, OpenLayers.Control.Measure
 getBounds, OpenLayers.Geometry
 getBoundsFromBaseLayer, OpenLayers.Tile
 getBrowserName, Util
 getBy, OpenLayers.Map
 getCenter, OpenLayers.Map
 getCenterLonLat, OpenLayers.Bounds
 getCenterPixel, OpenLayers.Bounds
 getCentroid
 getCharacteristics, OpenLayers.Handler.Box
 getChildEl, OpenLayers.Format.XML
 getChildValue
 getCode
 getComponentsString, OpenLayers.Geometry.Collection
 getComponentString, OpenLayers.Renderer.SVG
 getContentDivPadding, OpenLayers.Popup
 getContext, OpenLayers.Rule
 getControl, OpenLayers.Map
 getControlsBy
 getControlsByClass
 getControlsByName, OpenLayers.Control.Panel
 getCornersToRound, OpenLayers.Popup.AnchoredBubble
 getCssProperty, OpenLayers.Format.SLD.v1
 getCurrentSize, OpenLayers.Map
 getDataExtent
 getDimensions, OpenLayers.Element
 getElement, Util
 getElementsByTagNameNS
 getExtent
 GetFeature, OpenLayers.Control.GetFeature.OpenLayers.Control
 getFeatureById, OpenLayers.Layer.Vector
 getFeatureFromEvent
 getFeatureIdFromEvent
 getFeatureInfo, OpenLayers.Layer.ArcIMS
 getFeatureStateForFreeze, OpenLayers.Protocol.SQL.Gears
 getFilterType, OpenLayers.Format.Filter.v1
 getFullRequestString
 getGeodesicArea
 getGeodesicLength
 getGeometry
 getGeoTolerance, OpenLayers.Control.Snapping
 getGraphicFormat, OpenLayers.Format.SLD.v1
 getGridBounds, OpenLayers.Layer.Grid
 getHeader
 getHeight
 getImageFilePath, OpenLayers.Layer.MapGuide
 getImageSize, OpenLayers.Layer
 getImagesLocation, Util
 getInfoForClick, OpenLayers.Control.WMSGetFeatureInfo
 getInfoForHover, OpenLayers.Control.WMSGetFeatureInfo
 getLatitudeFromMapObjectLonLat
 getLayer, OpenLayers.Map
 getLayerFromInfo, OpenLayers.Format.WMC.v1
 getLayerIndex, OpenLayers.Map
 getLayerPxFromLonLat, OpenLayers.Map
 getLayerPxFromViewPortPx, OpenLayers.Map
 getLayersBy, OpenLayers.Map
 getLayersByClass, OpenLayers.Map
 getLayersByName, OpenLayers.Map
 getLength
 getLocalXY, OpenLayers.Renderer.Canvas
 getLongitudeFromMapObjectLonLat
 getLonLatFromLayerPx, OpenLayers.Map
 getLonLatFromOverviewPx, OpenLayers.Control.OverviewMap
 getLonLatFromPixel, OpenLayers.Map
 getLonLatFromViewPortPx
 getMapBounds, OpenLayers.Strategy.BBOX
 getMapBoundsFromRectBounds, OpenLayers.Control.OverviewMap
 getMapObjectBoundsFromOLBounds, OpenLayers.Layer.Google
 getMapObjectCenter
 getMapObjectLonLatFromLonLat
 getMapObjectLonLatFromMapObjectPixel
 getMapObjectLonLatFromOLLonLat, OpenLayers.Layer.EventPane
 getMapObjectPixelFromMapObjectLonLat
 getMapObjectPixelFromOLPixel, OpenLayers.Layer.EventPane
 getMapObjectPixelFromXY
 getMapObjectSizeFromOLSize, OpenLayers.Layer.Yahoo
 getMapObjectZoom
 getMapObjectZoomFromMapObjectBounds, OpenLayers.Layer.Google
 getMapObjectZoomFromOLZoom
 getMaxExtent, OpenLayers.Map
 getMaxResolution, OpenLayers.Map
 getMousePosition, OpenLayers.Events
 getNamespacePrefix, OpenLayers.Format.WMC.v1
 getNextEl, OpenLayers.Format.XML
 getNextElement, OpenLayers.ElementsIndexer
 getNodes
 getNodeType
 getNumLayers, OpenLayers.Map
 getNumZoomLevels, OpenLayers.Map
 getOLBoundsFromMapObjectBounds, OpenLayers.Layer.Google
 getOLLonLatFromMapObjectLonLat, OpenLayers.Layer.EventPane
 getOLPixelFromMapObjectPixel, OpenLayers.Layer.EventPane
 getOLZoomFromMapObjectZoom
 getOverviewPxFromLonLat, OpenLayers.Control.OverviewMap
 getParameters, Util
 getParameterString, Util
 getPixelFromLonLat, OpenLayers.Map
 getPosition, OpenLayers.Renderer.SVG
 getProjection, OpenLayers.Map
 getProjectionObject, OpenLayers.Map
 getRectBoundsFromMapBounds, OpenLayers.Control.OverviewMap
 getRenderedDimensions, Util
 getRenderLayerId
 getResolution
 getResolutionForZoom
 getResolutionFromScale, Util
 getResponseHeader, OpenLayers.Ajax.Response
 getSafeContentSize, OpenLayers.Popup
 getScale, OpenLayers.Map
 getScaleFromResolution, Util
 getScrollbarWidth, Util
 getShortString, OpenLayers.Renderer.SVG
 getSiblingNodesByTagCriteria, OpenLayers.Format.WMSGetFeatureInfo
 getSize
 getSketch
 getSortedSegments, OpenLayers.Geometry.LineString
 getSrsName, OpenLayers.Format.WFST.v1
 getStatus
 getStatustext, OpenLayers.Ajax.Response
 getStyle
 getSymbolizerPrefix, OpenLayers.Style
 getTags, OpenLayers.Format.OSM
 getTagText, Util
 getThisOrNextEl, OpenLayers.Format.XML
 getTileBounds
 getTilesBounds, OpenLayers.Layer.Grid
 getTileSize, OpenLayers.Map
 getTransport, OpenLayers.Ajax
 getUnits
 getUrl, OpenLayers.Layer.XYZ
 getURL
 getURLasync, OpenLayers.Layer.ArcIMS
 getUrlOrImage, OpenLayers.Layer.ArcIMS
 getVertices
 getViewPortPxFromLayerPx, OpenLayers.Map
 getViewPortPxFromLonLat
 getVisibility, OpenLayers.Layer
 getWarningHTML
 getWays, OpenLayers.Format.OSM
 getWidth, OpenLayers.Bounds
 getXFromMapObjectPixel
 getXmlNodeValue, Util
 getYFromMapObjectPixel
 getZIndex
 getZoom
 getZoomForExtent
 getZoomForResolution
 GML
 gmlFormat, OpenLayers.Format.WMSGetFeatureInfo
 gmlns, OpenLayers.Format.GML
 gmlParse, OpenLayers.Format.GeoRSS
 Google, OpenLayers.Layer.Google.OpenLayers.Layer
 GPX, OpenLayers.Format.GPX.OpenLayers.Format
 granularity, OpenLayers.Control.MousePosition
 graphicFormats, OpenLayers.Format.SLD.v1
 graphicRotate, OpenLayers.Renderer.VML
 greedy, OpenLayers.Control.Snapping
 grid, OpenLayers.Layer.Grid
 Grid, OpenLayers.Layer.Grid.OpenLayers.Layer
 group, OpenLayers.Console
 groupDiv, OpenLayers.Popup
 groupEnd, OpenLayers.Console
 gutter, OpenLayers.Layer
+ +
{Boolean} Calculate geodesic metrics instead of planar metrics.
Create a new parser for GeoJSON.
{OpenLayers.Geometry}
Return a GeoJSON object representing a single geometry.
{String} Name of geometry element.
Creates a geometry object.
geometryClone: function()
Return a clone of the relevant geometry.
{Object} Geometry -> Feature lookup table.
{String} Name of geometry element.
{String} Name of the geometry attribute for features.
{String} geometryType allows you to limit the types of geometries this layer supports.
geometryTypeMatches: function(feature)
Return true if the geometry type of the passed feature matches one of the geometry types in the geometryTypes array.
{Array(String)} To restrict dragging to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
{Array(String)} To restrict modification to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
{Array(String)} To restrict selecting to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
{Object} Maps OpenLayers geometry class names to GML element names.
To restrict dragging to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
geomsToFeatures: function(feature,
geoms)
Create new features given a template feature and a list of geometries.
{String} W3C Geo namespace to use.
Create a new parser for GeoRSS.
Create a GeoRSS Layer.
{String} GeoRSS namespace to use.
{Object} A cache of geo-tolerances.
GET: function(config)
Send an HTTP GET request.
getArea: function(geometry,
units)
getArea: function()
Calculate the area of this geometry.
getArea: function()
Calculate the area of this geometry.
getArea: function()
getArea: function()
Calculated by subtracting the areas of the internal holes from the area of the outer hole.
getArea: function()
{Float} The area of the geometry
OpenLayers.Util.getArgs = function(url)
Deprecated.
getAttributeNodeNS: function(node,
uri,
name)
Get an attribute node given the namespace URI and local name.
getAttributeNS: function(node,
uri,
name)
Get an attribute value given the namespace URI and local name.
getBarLen: function(maxLen)
Given a number, round it down to the nearest 1,2,5 times a power of 10.
getBestArea: function(geometry)
Based on the displaySystem returns the area of a geometry.
getBestLength: function(geometry)
Based on the displaySystem returns the length of a geometry.
getBounds: function()
Get the bounds for this Geometry.
getBoundsFromBaseLayer: function(position)
Take the pixel locations of the corner of the tile, and pass them to the base layer and ask for the location of those pixels, so that displaying tiles over Google works fine.
OpenLayers.Util.getBrowserName = function()
{String} A string which specifies which is the current browser in which we are running.
getBy: function(array,
property,
match)
Get a list of objects given a property and a match item.
getCenter: function ()
{OpenLayers.LonLat}
getCenterLonLat:function()
{OpenLayers.LonLat} The center of the bounds in map space.
getCenterPixel:function()
{OpenLayers.Pixel} The center of the bounds in pixel space.
getCentroid: function()
Calculate the centroid of this geometry.
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
getCentroid: function()
{OpenLayers.Geometry.Point} The centroid of the collection
Determines offset and box model for a box.
getChildEl: function(node,
name,
uri)
Get the first child element.
getChildValue: function(node,
nsuri,
name,
def)
getChildValue: function(node,
def)
Get the textual value of the node if it exists, or return an optional default string.
getCode: function()
Get the current language code.
getCode: function()
Get the string SRS code.
getComponentsString: function()
Get a string representing the components for this collection
getContentDivPadding: function()
Glorious, oh glorious hack in order to determine the css ‘padding’ of the contentDiv.
getContext: function(feature)
Gets the context for evaluating this rule
getControl: function (id)
getControlsBy: function(property,
match)
Get a list of controls with properties matching the given criteria.
getControlsBy: function(property,
match)
Get a list of controls with properties matching the given criteria.
getControlsByClass: function(match)
Get a list of controls of a given type (CLASS_NAME).
getControlsByClass: function(match)
Get a list of controls of a given class (CLASS_NAME).
getControlsByName: function(match)
Get a list of contorls with names matching the given name.
getCornersToRound:function()
{String} The proper corners string (“tr tl bl br”) for rico to round.
getCssProperty: function(sym)
Given a symbolizer property, get the corresponding CSS property from the cssMap.
getCurrentSize: function()
{OpenLayers.Size} A new OpenLayers.Size object with the dimensions of the map div
getDataExtent: function ()
Calculates the max extent which includes all of the data for the layer.
getDataExtent: function ()
Calculates the max extent which includes all of the markers.
getDataExtent: function ()
Calculates the max extent which includes all of the features.
getDataExtent: function ()
Calculates the max extent which includes all of the layer data.
getDimensions: function(element)
OpenLayers.Util.getElement = function()
This is the old $() from prototype
OpenLayers.Ajax.getElementsByTagNameNS = function(parentnode,
nsuri,
nsprefix,
tagname)
getElementsByTagNameNS: function(node,
uri,
name)
Get a list of elements on a node given the namespace URI and local name.
getExtent: function()
{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
getExtent: function ()
Calculates using px-> lonlat translation functions on tl and br corners of viewport
getExtent: function()
Get the map’s extent.
getExtent: function ()
{OpenLayers.Bounds} A Bounds object which represents the lon/lat bounds of the current viewPort.
Create a new control for fetching remote features.
getFeatureById: function(featureId)
Given a feature id, return the feature if it exists in the features array
getFeatureFromEvent: function(evt)
Given an event, return a feature if the event occurred over one.
getFeatureFromEvent: function(evt)
walk through the layers to find the feature returned by the event
getFeatureIdFromEvent: function(evt)
Returns a feature id from an event on the renderer.
getFeatureIdFromEvent: function(evt)
Returns a feature id from an event on the renderer.
getFeatureIdFromEvent: function(evt)
getFeatureInfo: function(geometry,
layer,
options)
Get feature information from ArcIMS.
getFeatureStateForFreeze: function(feature)
Get the state of the feature to store into the database.
getFilterType: function(filter)
getFullRequestString:function(newParams,
altUrl)
Combine url with layer’s params and these newParams.
getFullRequestString:function(newParams,
altUrl)
getFullRequestString on MapGuide layers is special, because we do a regular expression replace on ‘,’ in parameters to ‘+’.
getFullRequestString:function(newParams,
altUrl)
combine the layer’s url with its params and these newParams.
getFullRequestString:function(newParams,
altUrl)
combine the layer’s url with its params and these newParams.
getFullRequestString:function(newParams,
altUrl)
Combine the layer’s url with its params and these newParams.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getGeodesicArea: function(projection)
Calculate the approximate area of the polygon were it projected onto the earth.
getGeodesicLength: function(projection)
Calculate the approximate length of the geometry were it projected onto the earth.
getGeodesicLength: function(projection)
Calculate the approximate length of the geometry were it projected onto the earth.
getGeometry: function()
Return the sketch geometry.
getGeometry: function()
Return the sketch geometry.
getGeometry: function()
Return the sketch geometry.
getGeoTolerance: function(tolerance)
Calculate a tolerance in map units given a tolerance in pixels.
getGraphicFormat: function(href)
Given a href for an external graphic, try to determine the mime-type.
getGridBounds: function()
Deprecated.
getHeader: function(name)
getHeight:function()
{Float} The height of the bounds (top minus bottom).
getHeight: function(element)
getImageFilePath:function(newParams,
altUrl)
special handler to request mapguide tiles from an http exposed tilecache
getImageSize: function()
{OpenLayers.Size} The size that the image should be, taking into account gutters.
OpenLayers.Util.getImagesLocation = function()
{String} The fully formatted image location string
getInfoForClick: function(evt)
Called on click
getInfoForHover: function(evt)
Pause callback for the hover handler
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLatitudeFromMapObjectLonLat: function(moLonLat)
getLayer: function(id)
Get a layer based on its id
getLayerFromInfo: function(layerInfo)
Create a WMS layer from a layerInfo object.
getLayerIndex: function (layer)
getLayerPxFromLonLat: function (lonlat)
getLayerPxFromViewPortPx:function(viewPortPx)
getLayersBy: function(property,
match)
Get a list of layers with properties matching the given criteria.
getLayersByClass: function(match)
Get a list of layers of a given class (CLASS_NAME).
getLayersByName: function(match)
Get a list of layers with names matching the given name.
getLength: function(geometry,
units)
getLength: function()
Calculate the length of this geometry.
getLength: function()
Calculate the length of this geometry
getLength: function()
{Float} The length of the curve
getLength: function()
{Float} The length of the geometry
getLocalXY: function(point)
transform geographic xy into pixel xy
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLongitudeFromMapObjectLonLat: function(moLonLat)
getLonLatFromLayerPx: function (px)
getLonLatFromOverviewPx: function(overviewMapPx)
Get a map location from a pixel location
getLonLatFromPixel: function (px)
getLonLatFromViewPortPx: function (viewPortPx)
getLonLatFromViewPortPx: function (viewPortPx)
Get a map location from a pixel location
getLonLatFromViewPortPx: function (viewPortPx)
getMapBounds: function()
Get the map bounds expressed in the same projection as this layer.
getMapBoundsFromRectBounds: function(pxBounds)
Get the map bounds from the rect bounds.
getMapObjectBoundsFromOLBounds: function(olBounds)
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectCenter: function()
{Object} The mapObject’s current center in Map Object format
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromLonLat: function(lon,
lat)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromMapObjectPixel: function(moPixel)
getMapObjectLonLatFromOLLonLat: function(olLonLat)
Get a 3rd party map location from an OL map location.
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromMapObjectLonLat: function(moLonLat)
getMapObjectPixelFromOLPixel: function(olPixel)
Get a 3rd party pixel location from an OL pixel location
getMapObjectPixelFromXY: function(x,
y)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectPixelFromXY: function(x,
y)
getMapObjectSizeFromOLSize: function(olSize)
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoom: function()
{Integer} The mapObject’s current zoom, in Map Object format
getMapObjectZoomFromMapObjectBounds: function(moBounds)
getMapObjectZoomFromOLZoom: function(olZoom)
Get the map object zoom level from the OL zoom level
getMapObjectZoomFromOLZoom: function(olZoom)
getMaxExtent: function (options)
getMaxResolution: function()
{String} The Map’s Maximum Resolution
getMousePosition: function (evt)
getNamespacePrefix: function(uri)
Get the namespace prefix for a given uri from the namespaces object.
getNextEl: function(node,
name,
uri)
Get the next sibling element.
getNextElement: function(index)
Get the next element in the order stack.
getNodes: function(doc)
Return the node items from a doc.
OpenLayers.Util.getNodes=function(p,
tagName)
These could/should be made namespace aware?
getNodeType: function(geometry,
style)
This function is in charge of asking the specific renderer which type of node to create for the given geometry and style.
getNodeType: function(geometry,
style)
getNodeType: function(geometry,
style)
Get the node type for a geometry and style
getNumLayers: function ()
{Int} The number of layers attached to the map.
getNumZoomLevels: function()
{Integer} The total number of zoom levels that can be displayed by the current baseLayer.
getOLBoundsFromMapObjectBounds: function(moBounds)
getOLLonLatFromMapObjectLonLat: function(moLonLat)
Get an OL style map location from a 3rd party style map location
getOLPixelFromMapObjectPixel: function(moPixel)
Get an OL pixel location from a 3rd party pixel location.
getOLZoomFromMapObjectZoom: function(moZoom)
Get the OL zoom index from the map object zoom level
getOLZoomFromMapObjectZoom: function(moZoom)
getOverviewPxFromLonLat: function(lonlat)
Get a pixel location from a map location
OpenLayers.Util.getParameters = function(url)
Parse the parameters from a URL or from the current page itself into a JavaScript Object.
OpenLayers.Util.getParameterString = function(params)
getPixelFromLonLat: function (lonlat)
Returns a pixel location given a map location.
getPosition: function(node)
Finds the position of an svg node.
getProjection: function()
This method returns a string representing the projection.
getProjectionObject: function()
Returns the projection obect from the baselayer.
getRectBoundsFromMapBounds: function(lonLatBounds)
Get the rect bounds from the map bounds.
OpenLayers.Util.getRenderedDimensions = function(contentHTML,
size,
options)
Renders the contentHTML offscreen to determine actual dimensions for popup sizing.
getRenderLayerId: function()
Gets the layer that this renderer’s output appears on.
getRenderLayerId: function()
Gets the layer that this renderer’s output appears on.
getResolution: function()
{Float} The currently selected resolution of the map, taken from the resolutions array, indexed by current zoom level.
getResolution: function()
Get the current map resolution
getResolution: function ()
{Float} The current resolution of the map.
getResolution: function()
Uses cached copy of resolution if available to minimize computing
getResolutionForZoom: function(zoom)
getResolutionForZoom: function(zoom)
OpenLayers.Util.getResolutionFromScale = function (scale,
units)
getResponseHeader: function(name)
getSafeContentSize: function(size)
getScale: function ()
{Float} The current scale denominator of the map.
OpenLayers.Util.getScaleFromResolution = function (resolution,
units)
OpenLayers.Util.getScrollbarWidth = function()
This function has been modified by the OpenLayers from the original version, written by Matthew Eernisse and released under the Apache 2 license here:
getShortString: function(point)
getSiblingNodesByTagCriteria: function(node,
criteria)
Recursively searches passed xml node and all it’s descendant levels for nodes whose tagName contains the passed search string.
getSize:function()
{OpenLayers.Size} The size of the box.
getSize: function ()
{OpenLayers.Size} An OpenLayers.Size object that represents the size, in pixels, of the div into which OpenLayers has been loaded.
getSketch: function()
Return the sketch feature.
getSketch: function()
Return the sketch feature.
getSortedSegments: function()
{Array} An array of segment objects.
getSrsName: function(feature,
options)
getStatus: function()
getStyle: function(element,
style)
getStyle: function(styleUrl,
options)
Retrieves a style from a style hash using styleUrl as the key If the styleUrl doesn’t exist yet, we try to fetch it Internet
getSymbolizerPrefix: function(geometry)
Returns the correct symbolizer prefix according to the geometry type of the passed geometry
getTags: function(dom_node,
interesting_tags)
Return the tags list attached to a specific DOM element.
OpenLayers.Util.getTagText = function (parent,
item,
index)
getThisOrNextEl: function(node,
name,
uri)
Return this node or the next element node.
getTileBounds: function(viewPortPx)
Returns The tile bounds for a layer given a pixel location.
getTileBounds: function(viewPortPx)
Returns The tile bounds for a layer given a pixel location.
getTilesBounds: function()
Return the bounds of the tile grid.
getTileSize: function()
Get the tile size for the map
getTransport: function()
{Object} Transport mechanism for whichever browser we’re in, or false if none available.
getUnits: function ()
{Float} The current units of the map.
getUnits: function()
Get the units string for the projection -- returns null if proj4js is not available.
getURL: function (bounds)
Return an image url this layer.
getURL: function(bounds)
Return an image url this layer.
getURL: function(bounds)
The url we return is always the same (the image itself never changes) so we can ignore the bounds parameter (it will always be the same, anyways)
getURL: function (bounds)
getURL: function (bounds)
getURL: function (bounds)
Return a query string for this layer
getURL: function (bounds)
Return a query string for this layer
getURL: function(bounds)
getURL: function (bounds)
getURL: function (bounds)
Return a GetMap query string for this layer
getURL: function (bounds)
getURLasync: function(bounds,
scope,
prop,
callback)
Get an image url this layer asynchronously, and execute a callback when the image url is generated.
getUrlOrImage: function(output)
Extract a url or image from the ArcXML image output.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
getViewPortPxFromLayerPx:function(layerPx)
getViewPortPxFromLonLat: function (lonlat)
Returns a pixel location given a map location.
getViewPortPxFromLonLat: function (lonlat)
Get a pixel location from a map location
getViewPortPxFromLonLat: function (lonlat)
getVisibility: function()
{Boolean} The layer should be displayed (if in range).
getWarningHTML:function()
To be implemented by subclasses.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWarningHTML:function()
{String} String with information on why layer is broken, how to get it working.
getWays: function(doc)
Return the way items from a doc.
getWidth:function()
{Float} The width of the bounds
getXFromMapObjectPixel: function(moPixel)
getXFromMapObjectPixel: function(moPixel)
getXFromMapObjectPixel: function(moPixel)
getXFromMapObjectPixel: function(moPixel)
OpenLayers.Util.getXmlNodeValue = function(node)
getYFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getYFromMapObjectPixel: function(moPixel)
getZIndex: function(node)
Get the z-index value for the current node from the node data itself.
getZIndex: function ()
{Integer} the z-index of this layer
getZoom: function ()
Convert map zoom to WW zoom.
getZoom: function ()
{Integer}
getZoomForExtent: function(extent,
closest)
getZoomForExtent: function (bounds,
closest)
getZoomForResolution: function(resolution,
closest)
getZoomForResolution: function(resolution)
Get the zoom level for a given resolution
getZoomForResolution: function(resolution,
closest)
Create a new parser for GML.
Load and parse a single file on the web, according to the format provided via the ‘format’ option, defaulting to GML.
{OpenLayers.Format.GML} internal GML format for parsing geometries in msGMLOutput
{String} GML Namespace.
{Object} GML Format object for parsing features Non-API and only created if necessary
Create a new parser for GPX.
{Integer}
{Object} Mapping of image mime-types to regular extensions matching well-known file extensions.
graphicRotate: function(node,
xOffset,
yOffset)
If a point is to be styled with externalGraphic and rotation, VML fills cannot be used to display the graphic, because rotation of graphic fills is not supported by the VML implementation of Internet Explorer.
{Boolean} Snap to closest feature in first layer with an eligible feature.
{Array(Array(OpenLayers.Tile))} This is an array of rows, each row is an array of tiles.
Create a new grid layer
group: function()
Writes a message to the console and opens a nested block to indent all future messages sent to the console.
{DOMElement} First and only child of ‘div’.
groupEnd: function()
Closes the most recently opened block created by a call to OpenLayers.Console.group
{Integer} Determines the width (in pixels) of the gutter around image tiles to ignore.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General8.html b/openlayers/doc/devdocs/index/General8.html new file mode 100644 index 0000000..01b0af3 --- /dev/null +++ b/openlayers/doc/devdocs/index/General8.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
H
 h, OpenLayers.Size
 handle, OpenLayers.Handler.Feature
 handleBrowserEvent, OpenLayers.Events
 handleChangeLayer, OpenLayers.Layer.Vector.RootContainer
 handleCommit, OpenLayers.Protocol.WFS.v1
 handleCreate, OpenLayers.Protocol.HTTP
 handleDelete, OpenLayers.Protocol.HTTP
 handleKeyEvent, OpenLayers.handler.Keyboard
 handleKeypress, OpenLayers.Control.ModifyFeature
 handler
 Handler, OpenLayers.Handler.OpenLayers
 handleRead
 handleResponse
 handleRightClicks, OpenLayers.Control.Navigation
 handlerOptions
 handlers
 handleUpdate, OpenLayers.Protocol.HTTP
 hasAttributeNS, OpenLayers.Format.XML
 hasClass, OpenLayers.Element
 HEAD, OpenLayers.Request
 headers, OpenLayers.Protocol.HTTP
 height, OpenLayers.Geometry.Rectangle
 hide
 highlight, OpenLayers.Control.SelectFeature
 highlightOnly, OpenLayers.Control.SelectFeature
 hover
 Hover, OpenLayers.Handler.Hover.OpenLayers.Handler
 hoverRequest, OpenLayers.Control.WMSGetFeatureInfo
 hoverResponse, OpenLayers.Control.GetFeature
 hoverSelect, OpenLayers.Control.GetFeature
 HTTP, OpenLayers.Protocol.HTTP.OpenLayers.Protocol
 HTTPRequest, OpenLayers.Layer.HTTPRequest.OpenLayers.Layer
+ +
{Number} height
handle: function(evt)
handleBrowserEvent: function (evt)
Basically just a wrapper to the triggerEvent() function, but takes care to set a property ‘xy’ on the event with the current mouse position.
handleChangeLayer: function(evt)
Event handler for the map’s changelayer event.
handleCommit: function(response,
options)
Called when the commit request returns.
handleCreate: function(resp,
options)
Called the the request issued by create is complete.
handleDelete: function(resp,
options)
Called the the request issued by delete is complete.
handleKeyEvent: function (evt)
handleKeypress: function(evt)
Called by the feature handler on keypress.
{OpenLayers.Handler} null
{OpenLayers.Handler.Path} The temporary sketch handler created if no source layer is provided.
{Object} Reference to the OpenLayers.Handler for this control
Construct a handler.
handleRead: function(resp,
options)
Individual callbacks are created for read, create and update, should a subclass need to override each one separately.
handleRead: function(response,
options)
Deal with response from the read request.
handleResponse: function(xy,
request)
Handler for the GetFeatureInfo response.
handleResponse: function(resp,
options)
Called by CRUD specific handlers.
{Boolean} Whether or not to handle right clicks.
{Object} Used to set non-default properties on the control’s handler
{Object} Additional options for the handlers used by this control.
{Object} Used to set non-default properties on the control’s handler
{Object} Additional options for the handlers used by this control, e.g.
{Object} Object with references to multiple OpenLayers.Handler instances.
{Object}
{Object}
{Object} Object with references to multiple OpenLayers.Handler instances.
handleUpdate: function(resp,
options)
Called the the request issued by update is complete.
hasAttributeNS: function(node,
uri,
name)
Determine whether a node has a particular attribute matching the given name and namespace.
hasClass: function(element,
name)
Tests if an element has the given CSS class name.
HEAD: function(config)
Send an HTTP HEAD request.
{Object} HTTP request headers, read-only, set through the options passed to the constructor, Example: {‘Content-Type’: ‘plain/text’}
{Float}
hide: function()
Hide element(s) passed in
hide: function()
Makes the popup invisible.
hide: function()
Hide the tile.
hide: function()
Hide the tile by hiding its frame.
highlight: function(feature)
Redraw feature with the select style.
{Boolean} If true do not actually select features (i.e.
{Boolean} Send feature requests on mouse moves.
{Boolean} Select on mouse over and deselect on mouse out.
{Boolean} Send GetFeatureInfo requests when mouse stops moving.
Construct a hover handler.
{OpenLayers.Request} contains the currently running hover request (if any).
{OpenLayers.Protocol.Response} The response object associated with the currently running hover request (if any).
hoverSelect: function(feature)
Sets/unsets the hoverFeature
A class for giving layers generic HTTP protocol.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/General9.html b/openlayers/doc/devdocs/index/General9.html new file mode 100644 index 0000000..5b06eeb --- /dev/null +++ b/openlayers/doc/devdocs/index/General9.html @@ -0,0 +1,34 @@ + + +Index - OpenLayers + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
I
 i18n, OpenLayers.Lang.OpenLayers
 icon
 Icon, OpenLayers.Icon.OpenLayers
 id
 ignoreEvent, OpenLayers.Control.LayerSwitcher
 Image, OpenLayers.Layer.Image.OpenLayers.Layer
 IMAGE_EXTENSIONS, OpenLayers.Layer.KaMapCache
 IMAGE_RELOAD_ATTEMPTS, Util
 imageDiv, OpenLayers.Icon
 imageOffset, OpenLayers.Layer
 imageSize
 imageSrc, OpenLayers.Popup.Framed
 imgDiv, OpenLayers.Tile.Image
 ImgPath, Util
 importSymbol
 INCHES_PER_UNIT, Util
 includeXY, OpenLayers.Events
 indent, OpenLayers.Format.JSON
 Indexer, OpenLayers.Renderer.Elements
 indexOf, Util
 indices, OpenLayers.ElementsIndexer
 inflate, OpenLayers.Marker
 info, OpenLayers.Console
 infoFormat, OpenLayers.Control.WMSGetFeatureInfo
 inherit
 initGriddedTiles, OpenLayers.Layer.Grid
 initialize, OpenLayers.ElementsIndexer
 initializeDatabase, OpenLayers.Protocol.SQL.Gears
 initImgDiv, OpenLayers.Tile.Image
 initMercatorParameters, OpenLayers.Layer.SphericalMercator
 initResolutions
 initSingleTile, OpenLayers.Layer.Grid
 initStack, OpenLayers.Control.NavigationHistory
 inRange, OpenLayers.Layer
 insert
 interestingTagsExclude, OpenLayers.Format.OSM
 internalns, OpenLayers.Format.KML
 internalProjection, OpenLayers.Format
 intersects
 intersectsBounds, OpenLayers.Bounds
 interval
 INTERVAL, OpenLayers.Tween
 invalidBounds, OpenLayers.Strategy.BBOX
 inValidRange, OpenLayers.Renderer.SVG
 inverseMercator, OpenLayers.Layer.SphericalMercator
 irregular, OpenLayers.Handler.RegularPolygon
 isAlphaImage
 isBackBuffer, OpenLayers.Tile.Image
 isBaseLayer
 isComplexSymbol, OpenLayers.Renderer.Elements
 isDefault, OpenLayers.Style
 isDrawn
 isEligible, OpenLayers.Control.Split
 isEquivalentUrl, Util
 iserror, OpenLayers.Format.ArcXML
 isFirstDraw, OpenLayers.Tile.Image
 isFixed
 isGecko, OpenLayers.Renderer.SVG
 isLeftClick, OpenLayers.Event
 isLoading, OpenLayers.Tile
 isNumeric, OpenLayers.String.OpenLayers.String
 isPrototype
 isRightClick, OpenLayers.Event
 isSimpleContent, OpenLayers.Format.XML
 issue, OpenLayers.Request
 isSuitableOverview, OpenLayers.Control.OverviewMap
 isValidLonLat, OpenLayers.Map
 isValidType, OpenLayers.Format.GeoJSON
 isValidZoomLevel, OpenLayers.Map
 isVector, OpenLayers.Layer.Vector
 isWayArea, OpenLayers.Format.OSM
+ +
Alias for OpenLayers.Lang.translate.
{OpenLayers.Icon}.
{OpenLayers.Icon} The icon used by this marker.
Creates an icon, which is an image tag in a div.
{String}
{String}
{String} A unique identifier for this geometry.
{String}
{String}
{String} Unique identifier for the map
{String} the unique identifier assigned to this popup.
{String} A unique id for this session.
{String} null
ignoreEvent: function(evt)
Create a new image layer
{Object} Simple hash map to convert format to extension.
{Integer} How many times should we try to reload an image before giving up? 
{DOMElement}
{OpenLayers.Pixel} For layers with a gutter, the image offset represents displacement due to the gutter.
{OpenLayers.Size} Size (measured in pixels) of the image located by the ‘imageSrc’ property.
{OpenLayers.Size}
{String} location of the image to be used as the popup frame
{DOMElement} The div element which wraps the image.
{String} Default is ‘’.
importSymbol: function (graphicName)
add a new symbol definition from the rendererer’s symbol hash
importSymbol: function (graphicName)
add a new symbol definition from the rendererer’s symbol hash
{Object} Constant inches per unit -- borrowed from MapServer mapscale.c derivation of nautical miles from http://en.wikipedia.org/wiki/Nautical_mile Includes the full set of units supported by CS-MAP (http://trac.osgeo.org/csmap/) and PROJ.4 (http://trac.osgeo.org/proj/) The hardcoded table is maintain in a CS-MAP source code module named CSdataU.c The hardcoded table of PROJ.4 units are in pj_units.c.
{Boolean} Should the .xy property automatically be created for browser mouse events? 
{String} For “pretty” printing, the indent string will be used once for each indentation level.
{OpenLayers.ElementIndexer} An instance of OpenLayers.ElementsIndexer created upon initialization if the zIndexing or yOrdering options passed to this renderer’s constructor are set to true.
OpenLayers.Util.indexOf = function(array,
obj)
Seems to exist already in FF, but not in MOZ.
{Object} This is a hash that maps node ids to their z-index value stored in the indexer.
inflate: function(inflate)
Englarges the markers icon by the specified ratio.
info: function()
Writes a message to the console with the visual “info” icon and color coding and a hyperlink to the line where it was called.
{String} The mimetype to request from the server
OpenLayers.Class.inherit = function ()
Deprecated.
initGriddedTiles:function(bounds)
initialize: function(yOrdering)
Create a new indexer with
initializeDatabase: function()
initImgDiv: function()
Creates the imgDiv property on the tile.
initMercatorParameters: function()
Set up the mercator parameters on the layer: resolutions, projection, units.
initResolutions: function()
This method’s responsibility is to set up the ‘resolutions’ array for the layer -- this array is what the layer will use to interface between the zoom levels of the map and the resolution display of the layer.
initResolutions: function()
Populate the resolutions array
initSingleTile: function(bounds)
initStack: function()
Called after the control is activated if the previous history stack is empty.
{Boolean} The current map resolution is within the layer’s min/max range.
insert: function(newNode)
Insert a new node into the indexer.
insert: function(feature)
Takes a feature, and generates a WFS-T Transaction “Insert”
{Array} List of tags to exclude from ‘interesting’ checks on nodes.
{String} KML Namespace to use -- defaults to the namespace of the Placemark node being parsed, but falls back to kmlns.
{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersects: function(geometry)
Test for instersection between two geometries.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersects: function(geometry)
Determine if the input geometry intersects this one.
intersectsBounds:function(bounds,
inclusive)
Determine whether the target bounds intersects this bounds.
{Integer} The number of milliseconds that should ellapse before panning the map again.
{Integer} In order to increase performance, an interval (in milliseconds) can be set to reduce the number of drag events called.
{int} Interval id returned by window.setInterval
{int} Interval in milliseconds between 2 steps
invalidBounds: function(mapBounds)
Determine whether the previously requested set of features is invalid.
inValidRange: function(x,
y,
xyOnly)
See #669 for more information
inverseMercator: function(x,
y)
Given a x,y in Spherical Mercator, return a point in EPSG:4326.
{Boolean} Draw an irregular polygon instead of a regular polygon.
{Boolean} The image has some alpha and thus needs to use the alpha image hack.
{Boolean} The FramedCloud does not use an alpha image (in honor of the good ie6 folk out there)
{Boolean} Is this tile a back buffer tile?
{Boolean} Whether or not the layer is a base layer.
{Boolean} Default is true for ArcGIS93Rest layer
{Boolean} The layer is a base layer.
{Boolean} EventPaned layers are always base layers, by necessity.
{Boolean} The layer is a base layer.
{Boolean} KaMap Layer is always a base layer
{Boolean} Treat this layer as a base layer.
{Boolean} Markers layer is never a base layer.
{Boolean} Treat this layer as a base layer.
{Boolean}
{Boolean} The layer is a base layer.
{Boolean} WFS layer is not a base layer by default.
{Boolean} Default is true for WMS layer
WorldWind layer is a base layer by default.
Default is true, as this is designed to be a base tile source.
isComplexSymbol: function(graphicName)
Determines if a symbol cannot be rendered using drawCircle
{Boolean}
isDrawn: function()
{Boolean} Whether or not the icon is drawn.
isDrawn: function()
{Boolean} Whether or not the marker is drawn.
isEligible: function(target)
Test if a target feature is eligible for splitting.
OpenLayers.Util.isEquivalentUrl = function(url1,
url2,
options)
Test two URLs for equivalence.
iserror: function(data)
Check to see if the response from the server was an error.
{Boolean} Is this the first time the tile is being drawn? 
{Boolean} EventPaned layers are fixed by default.
{Boolean} Whether the layer remains in one place while dragging the map.
{Boolean}
isLeftClick: function(event)
Determine whether event was caused by a left click.
{Boolean} Is the tile loading?
Determine whether a string contains only a numeric value.
Deprecated.
isRightClick: function(event)
Determine whether event was caused by a right mouse click.
isSimpleContent: function(node)
Test if the given node has only simple content (i.e.
issue: function(config)
Create a new XMLHttpRequest object, open it, set any headers, bind a callback to done state, and send any data.
isSuitableOverview: function()
Determines if the overview map is suitable given the extent and resolution of the main map.
isValidLonLat: function(lonlat)
isValidType: function(obj,
type)
Check if a GeoJSON object is a valid representative of the given type.
isValidZoomLevel: function(zoomLevel)
{Boolean} Whether the layer is a vector layer.
isWayArea: function(way)
Given a way object from getWays, check whether the tags and geometry indicate something is an area.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Properties.html b/openlayers/doc/devdocs/index/Properties.html new file mode 100644 index 0000000..59464d0 --- /dev/null +++ b/openlayers/doc/devdocs/index/Properties.html @@ -0,0 +1,46 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
$#!
 _complete, OpenLayers.Ajax.Request
 _scriptName, OpenLayers
A
 activateOnDraw, OpenLayers.Control.NavigationHistory
 active
 activeColor, OpenLayers.Control.LayerSwitcher
 activeRequestCount, OpenLayers.Ajax
 allOverlays, OpenLayers.Map
 allowSelection, OpenLayers.Control
 alpha, OpenLayers.Layer
 alphaHackNeeded, Util
 alwaysInRange, OpenLayers.Layer
 alwaysZoom, OpenLayers.Control.ZoomBox
 angle, OpenLayers.Handler.RegularPolygon
 areaTags, OpenLayers.Format.OSM
 argParserClass, OpenLayers.Control.Permalink
 ascending, OpenLayers.Control.LayerSwitcher
 aspectRatio, OpenLayers.Layer.Image
 async, OpenLayers.Layer.ArcIMS
 attributes, OpenLayers.Feature.Vector
 attribution, OpenLayers.Layer
 auto, OpenLayers.Strategy.Save
 autoActivate, OpenLayers.Strategy
 autoDestroy
 autoPan, OpenLayers.Control.OverviewMap
 autoSize
B
 backBufferTile, OpenLayers.Tile.Image
 backgroundColor, OpenLayers.Popup
 base, OpenLayers.Control.Permalink
 baseLayer, OpenLayers.Map
 baseLayers, OpenLayers.Control.LayerSwitcher
 baseLayersDiv, OpenLayers.Control.LayerSwitcher
 begin, OpenLayers.Tween
 blocks, OpenLayers.Popup.Framed
 border, OpenLayers.Popup
 bottom, OpenLayers.Bounds
 bottomInUnits, OpenLayers.Control.ScaleLine
 bottomOutUnits, OpenLayers.Control.ScaleLine
 bounds
 box
 boxCharacteristics, OpenLayers.Handler.Box
 boxDivClassName, OpenLayers.Handler.Box
 buffer, OpenLayers.Layer.Grid
 buildGeometry
 buttonClicked, OpenLayers.Control.MouseToolbar
 buttons
C
 calculateOffset, OpenLayers.Icon
 callback, OpenLayers.Protocol.HTTP
 callbacks
 canvas, OpenLayers.Renderer.Canvas
 center, OpenLayers.Map
 centerLonLat, OpenLayers.Bounds
 checkTags, OpenLayers.Format.OSM
 clearOnDeactivate, OpenLayers.Control.NavigationHistory
 click, OpenLayers.Control.GetFeature
 clickout
 clickTolerance
 closeDiv, OpenLayers.Popup
 closeOnMove, OpenLayers.Popup
 clustering, OpenLayers.Strategy.Cluster
 clusters, OpenLayers.Strategy.Cluster
 code
 collectionName, OpenLayers.Format.GML
 compare, OpenLayers.ElementsIndexer
 components, OpenLayers.Geometry.Collection
 componentTypes
 container, OpenLayers.Renderer
 contentDisplayClass
 contentDiv, OpenLayers.Popup
 contentHTML, OpenLayers.Popup
 contentSize, OpenLayers.Popup
 context
 control, OpenLayers.Handler
 controls
 cssMap, OpenLayers.Format.SLD.v1
 curve, OpenLayers.Format.GML.v3
+ +
{Boolean}
{String} Relative path of this script.
+ + + +
{Boolean} Activate the control when it is first added to the map.
{Boolean} The control is active.
{Boolean}
{Boolean} The control is active.
{String}
{Integer}
{Boolean} Allow the map to function with “overlays” only.
{Boolean} By deafault, controls do not allow selection, because it may interfere with map dragging.
{Boolean} The layer’s images have an alpha channel.
{Boolean} true if the png alpha hack is necessary and possible, false otherwise.
{Boolean} If a layer’s display should not be scale-based, this should be set to true.
{Boolean} Always zoom in/out, when box drawed
{Float} The angle from the origin (mouse down) to the current mouse position, in radians.
{Array} List of tags indicating that something is an area.
{Class} The ArgParser control class (not instance) to use with this control.
{Boolean}
{Float} The ratio of height/width represented by a single pixel in the graphic
{Boolean} Request images asynchronously.
{Object} This object holds arbitrary properties that describe the feature.
{String} Attribution string, displayed when an OpenLayers.Control.Attribution has been added to the map.
{Boolean | Number} Auto-save.
{Boolean} The creator of the strategy can set autoActivate to false to fully control when the protocol is activated and deactivated.
{Boolean} The creator of the protocol can set autoDestroy to false to fully control when the protocol is destroyed.
{Boolean} The creator of the strategy can set autoDestroy to false to fully control when the strategy is destroyed.
{Boolean} Always pan the overview map, so the extent marker remains in the center.
{Boolean} Resize the popup to auto-fit the contents.
{Boolean} Framed Cloud is autosizing by default.
+ + + +
{OpenLayers.Tile} A clone of the tile used to create transition effects when the tile is moved or changes resolution.
{String} the background color used by the popup.
{String}
{OpenLayers.Layer} The currently selected base layer.
{Array(OpenLayers.Layer)}
{DOMElement}
{Object} Values to start the animation with
{Array[Object]} Array of objects, each of which is one “block” of the popup.
{String} the border size of the popup.
{Number} Minimum vertical coordinate.
{String} Units for zoomed in on bottom bar.
{String} Units for zoomed out on bottom bar.
{OpenLayers.Bounds} The box bounding that feature’s geometry, that property can be set by an OpenLayers.Format object when deserializing the feature, so in most cases it represents an information set by the server.
{OpenLayers.Bounds} The bounds of this geometry
{OpenLayers.Bounds}
{OpenLayers.Bounds} The current data bounds (in the same projection as the layer - not always the same projection as the map).
{OpenLayers.Bounds} null
{Boolean} Allow feature selection by drawing a box.
{Boolean} Allow feature selection by drawing a box.
{Object} Caches some box characteristics from css.
{String} The CSS class to use for drawing the box.
{Integer} Used only when in gridded mode, this specifies the number of extra rows and colums of tiles on each side which will surround the minimum grid tiles to cover the map.
Object containing methods to do the actual geometry node building based on geometry type.
Object containing methods to do the actual geometry node building based on geometry type.
{String}
{Array(DOMElement)} Array of Button Divs
+ + + +
{OpenLayers.Pixel} Function to calculate the offset (based on the size)
{Object} Function to be called when the read, create, update, delete or commit operation completes, read-only, set through the options passed to the constructor.
{Object} The functions that are sent to the handler for callback
{Object} The functions that are sent to the handler for callback
{Object} The functions that are sent to the handlers.feature for callback
{Object} An object with start, eachStep and done properties whose values are functions to be call during the animation.
{Canvas} The canvas context object.
{OpenLayers.LonLat} The current center of the map
{OpenLayers.LonLat} A cached center location.
{Boolean} Should tags be checked to determine whether something should be treated as a seperate node.
{Boolean} Clear the history when the control is deactivated.
{Boolean} Use a click handler for selecting/unselecting features.
{Boolean} Unselect features when clicking outside any feature.
{Boolean} Unselect features when clicking outside any feature.
{Boolean} Unselect features when clicking outside any feature.
{Integer} Tolerance for the BBOX query in pixels.
{Number} The number of pixels the mouse can move between mousedown and mouseup for the event to still be considered a click.
{DOMElement} the optional closer image
{Boolean} When map pans, close the popup.
{Boolean} The strategy is currently clustering features.
{Array(OpenLayers.Feature.Vector)} Calculated clusters.
{String} Current language code to use in OpenLayers.
{String} Name of featureCollection element.
{Function} This is the function used to determine placement of of a new node within the indexer.
{Array(OpenLayers.Geometry)} The component parts of this geometry
{Array(String)} An array of class names representing the types of components that the collection can include.
{Array(String)} An array of class names representing the types of components that the collection can include.
{Array(String)} An array of class names representing the types of components that the collection can include.
{Array(String)} An array of class names representing the types of components that the collection can include.
{Array(String)} An array of class names representing the types of components that the collection can include.
{Array(String)} An array of class names representing the types of components that the collection can include.
{Array(String)} An array of class names representing the types of components that the collection can include.
{DOMElement}
{String} The CSS class of the popup content div.
{String} The CSS class of the popup content div.
{DOMElement} a reference to the element that holds the content of the div.
{String} An HTML string for this popup to display.
{OpenLayers.Size} the width and height of the content.
{Object} An optional object with properties that the rule should be evaluated against.
{Object} An optional object with properties that symbolizers’ property values should be evaluated against.
{OpenLayers.Control}.
{Array(OpenLayers.Control)}
{Array(OpenLayers.Control)} List of controls associated with the map.
{Object} Object mapping supported css property names to OpenLayers symbolizer property names.
{Boolean} Write gml:Curve instead of gml:LineString elements.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Properties10.html b/openlayers/doc/devdocs/index/Properties10.html new file mode 100644 index 0000000..6ec35f1 --- /dev/null +++ b/openlayers/doc/devdocs/index/Properties10.html @@ -0,0 +1,42 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
X
 x
 xlinkns, OpenLayers.Renderer.SVG
 xmldom, OpenLayers.Format.XML
 xmlns
 xy
Y
 y
Z
 zoom, OpenLayers.Map
 zoomBarDiv, OpenLayers.Control.PanZoomBar
 zoomBox, OpenLayers.Control.Navigation
 zoomBoxKeyMask, OpenLayers.Control.Navigation
 zoomLevels, OpenLayers.Layer.WorldWind
 zoomStopHeight, OpenLayers.Control.PanZoomBar
 zoomStopWidth, OpenLayers.Control.PanZoomBar
 zoomWheelEnabled, OpenLayers.Control.Navigation
 zoomWorldIcon, OpenLayers.Control.PanZoomBar
+ +
{float}
{Float}
{Number} The x coordinate
{String}
{XMLDom} If this browser uses ActiveX, this will be set to a XMLDOM object.
{String}
{String}
{String} XML Namespace URN
{Boolean} Order of the GML coordinate: true:(x,y) or false:(y,x) For GeoRSS the default is (y,x), therefore: false
{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
{Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) Changing is not recommended, a new Format should be instantiated.
+ + + +
{float}
{Float}
{Number} The y coordinate
+ + + +
{Integer} The current zoom level of the map
{DOMElement}
{OpenLayers.Control.ZoomBox}
{Integer} OpenLayers.Handler key code of the key, which has to be pressed, while drawing the zoom box with the mouse on the screen.
Number of zoom levels.
{Boolean} Whether the mousewheel should zoom the map
{Boolean}
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Properties2.html b/openlayers/doc/devdocs/index/Properties2.html new file mode 100644 index 0000000..2d6a210 --- /dev/null +++ b/openlayers/doc/devdocs/index/Properties2.html @@ -0,0 +1,38 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
D
 data
 databaseName, OpenLayers.Protocol.SQL
 dataLayers, OpenLayers.Control.LayerSwitcher
 dataLayersDiv, OpenLayers.Control.LayerSwitcher
 dataLbl, OpenLayers.Control.LayerSwitcher
 db, OpenLayers.Protocol.SQL.Gears
 decimalSeparator, OpenLayers.Number
 DEFAULT_PARAMS, OpenLayers.Layer.WFS
 defaultCode, OpenLayers.Lang
 defaultControl, OpenLayers.Control.Panel
 defaultGraphicFormat, OpenLayers.Format.SLD.v1
 defaultPrefix
 defaultSize, OpenLayers.Layer.MapGuide
 defaultsPerSymbolizer, OpenLayers.Style
 defaultStyle
 defaultStyleName, OpenLayers.Format.WMC.v1
 defaultStyleTitle, OpenLayers.Format.WMC.v1
 defaultSymbolizer, OpenLayers.Format.SLD.v1
 defaultVersion
 deferDelete, OpenLayers.Control.Split
 delay
 delayedTrigger, OpenLayers.Control.Measure
 deleteCodes, OpenLayers.Control.ModifyFeature
 description
 direction
 disableFirefoxOverflowHack, OpenLayers.Popup
 displayClass
 displayInLayerSwitcher
 displayOutsideMaxExtent, OpenLayers.Layer
 displayProjection
 displaySystem, OpenLayers.Control.Measure
 displaySystemUnits, OpenLayers.Control.Measure
 distance
 distanceUnits, OpenLayers.Filter.Spatial
 div
 divEvents, OpenLayers.Control.PanZoomBar
 double, OpenLayers.Handler.Click
 down
 dragCallbacks, OpenLayers.Control.DragFeature
 dragControl, OpenLayers.Control.ModifyFeature
 dragging
 dragHandle, OpenLayers.Control.ModifyFeature
 dragHandler, OpenLayers.Handler.Box
 dragObject, OpenLayers.Layer.Google
 dragPan, OpenLayers.Control.Navigation
 drawing, OpenLayers.Handler.Point
 drawn
 duration, OpenLayers.Tween
E
 easing, OpenLayers.Tween
 eBottom, OpenLayers.Control.ScaleLine
 edge, OpenLayers.Control.Split
 element
 elseFilter, OpenLayers.Rule
 encodeBBOX
 eTop, OpenLayers.Control.ScaleLine
 eventHandler, OpenLayers.Events
 eventListener, OpenLayers.handler.Keyboard
 eventListeners
 EVENTMAP, OpenLayers.Handler.Feature
 events
 Events, OpenLayers.Ajax.Request
 eventTypes, OpenLayers.Events
 evt, OpenLayers.Handler
 extendDefault, OpenLayers.StyleMap
 extent
 externalProjection, OpenLayers.Format
 extract, OpenLayers.Format.GeoJSON
 extractAttributes
 extractRoutes, OpenLayers.Format.GPX
 extractStyles
 extractTracks, OpenLayers.Format.GPX
 extractWaypoints, OpenLayers.Format.GPX
+ +
{Object}
{Object} When keepData is true, this is the parsed string sent to read.
{String}
{Array(OpenLayers.Layer)}
{DOMElement}
{DOMElement}
{GearsDatabase}
Decimal separator to use when formatting numbers.
{Object} Hashtable of default key/value parameters
{String} Default language to use when a specific language can’t be found.
{OpenLayers.Control} The control which is activated when the control is activated (turned on), which also happens at instantiation.
{String} If none other can be determined from getGraphicFormat, this default will be returned.
{String} The default namespace alias for creating element nodes.
{OpenLayers.Size} Tile size as produced by MapGuide server
{Boolean} If set to true, the defaultStyle will extend the symbolizer of every rule.
defaultStyle allows one to control the default styling of the features.
{Object} hash of style properties to use as default for merging rule-based style symbolizers onto.
{String} Style name used if layer has no style param.
{String} Default style title.
{Object} A symbolizer with the SLD defaults.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{String} Version number to assume if none found.
{Boolean} Instead of removing features from the layer, set feature states of split features to DELETE.
{Number} Number of milliseconds between clicks before the event is considered a double-click.
{Number} Number of milliseconds between clicks before the event is considered a double-click.
{Number} Timeout id of trigger for measurepartial.
{Array(Integer)} Keycodes for deleting verticies.
{String} Description of this rule (set if abstract is included in SLD)
{String} Description of this style (set if abstract is included in SLD)
{String} ‘vertical’ or ‘horizontal’
{String} in {‘North’, ‘South’, ‘East’, ‘West’}
{Boolean} The hack for overflow in Firefox causes all elements to be re-drawn, which causes Flash elements to be re-initialized, which is troublesome.
{string} This property is used for CSS related to the drawing of the Control.
{String} The CSS class of the popup.
{Boolean} Display the layer’s name in the layer switcher.
Set to false for this layer type
{Boolean} Request map tiles that are completely outside of the max extent for this layer.
{OpenLayers.Projection} Requires proj4js support.
{OpenLayers.Projection} The projection in which the mouse position is displayed
{OpenLayers.Projection} Requires proj4js support.
{OpenLayers.Projection} Requires proj4js support.Projection used by several controls to display data to user.
{String} Display system for output measurements.
{Object} Units for various measurement systems.
{Number} The distance to use in a DWithin spatial filter.
{Integer} Pixel distance between features that should be considered a single cluster.
{String} The units to use for the distance, e.g.
{DOMElement}
{DOMElement}
{DOMElement|String} The element that contains the map (or an id for that element).
{DOMElement}
{DOMElement} the div that contains this popup.
{OpenLayers.Events}
{Boolean} Handle double-clicks.
{OpenLayers.Pixel} The pixel location of the last mousedown.
{OpenLayers.Pixel} The location of the last mousedown.
{Object} The functions that are sent to the drag handler for callback.
{OpenLayers.Control.DragFeature}
{Boolean}
{Boolean} The map is currently being dragged.
{OpenLayers.Feature.Vector} A handle for dragging a feature.
{OpenLayers.Handler.Drag}
{GDraggableObject} Since 2.93, Google has exposed the ability to get the maps GDraggableObject.
{OpenLayers.Control.DragPan}
{Boolean} A point is being drawn
{Boolean} internal state of drawing.
{Boolean} Whether the Vector Layer features have been drawn yet.
{int} duration of the tween (number of steps)
+ + + +
{<OpenLayers.Easing>(Function)} Easing equation used for the animation Defaultly set to OpenLayers.Easing.Expo.easeOut
{DOMElement}
{Boolean} Allow splits given intersection of edges only.
{DOMElement}
{DOMElement} The DOM element that contains the overview map
{DOMElement}
{DOMElement} the DOM element receiving browser events
{Boolean} Determines whether this rule is only to be applied only if no other rules match (ElseFilter according to the SLD specification).
{Boolean} Should the BBOX commas be encoded? 
{Boolean} Should the BBOX commas be encoded? 
{DOMElement}
{Function} bound event handler attached to elements
{Function}
{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
{Object} If set as an option at construction, the eventListeners object will be registered with OpenLayers.Events.on.
{Object} A object mapping the browser events to objects with callback keys for in and out.
{OpenLayers.Events} Events instance for triggering control specific events.
{OpenLayers.Events}
{OpenLayers.Events} An events object that handles all events on the map
{OpenLayers.Events} the event handler.
{OpenLayers.Events} custom event manager
{OpenLayers.Events} An events object that handles all events on the {OpenLayers.Request} object.
{OpenLayers.Events} An events object that handles all events on the tile.
{Array(String)}
{Array(String)} list of support application events
{Event} This property references the last event handled by the handler.
{Boolean} if true, every render intent will extend the symbolizers specified for the “default” intent at rendering time.
{OpenLayers.Bounds} The image bounds in map units.
{OpenLayers.Bounds}
{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.
Object with properties corresponding to the GeoJSON types.
{Boolean} Extract attributes from GML.
{Boolean} Extract attributes from GML.
{Boolean} Extract feature attributes from GPX.
{Boolean} Extract attributes from KML.
{Boolean} Extract attributes from GML.
{Boolean} Should the WFS layer parse attributes from the retrieved GML? 
{Boolean} Extract routes from GPX.
{Boolean} Extract styles from KML.
set to true to extract styles from the TSV files, using information from the image or icon, iconSize and iconOffset fields.
{Boolean} Extract tracks from GPX.
{Boolean} Extract waypoints from GPX.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Properties3.html b/openlayers/doc/devdocs/index/Properties3.html new file mode 100644 index 0000000..34a6383 --- /dev/null +++ b/openlayers/doc/devdocs/index/Properties3.html @@ -0,0 +1,42 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
F
 fallThrough
 feature
 featureAdded, OpenLayers.Control.DrawFeature
 featureCallbacks, OpenLayers.Control.DragFeature
 featureClass, OpenLayers.Layer.WFS
 featureCoordSys, OpenLayers.Layer.ArcIMS
 featureDescription, OpenLayers.Format.GeoRSS
 featureIdentifier, OpenLayers.Format.WMSGetFeatureInfo
 featureName, OpenLayers.Format.GML
 featurens, OpenLayers.Format.GeoRSS
 featureNS
 featurePrefix
 features
 featureTitle, OpenLayers.Format.GeoRSS
 featureType
 fetched, OpenLayers.Format.KML
 fid, OpenLayers.Feature.Vector
 FID_PREFIX, OpenLayers.Protocol.SQL.Gears
 fidRegExp, OpenLayers.Protocol.SQL.Gears
 fids, OpenLayers.Filter.FeatureId
 filter, OpenLayers.Rule
 filterCoordSys, OpenLayers.Layer.ArcIMS
 filterMap, OpenLayers.Format.Filter.v1
 filters, OpenLayers.Filter.Logical
 finish, OpenLayers.Tween
 fixedRadius, OpenLayers.Handler.RegularPolygon
 fixedRelativePosition
 foldersDesc, OpenLayers.Format.KML
 foldersName, OpenLayers.Format.KML
 fontStyleKeys, OpenLayers.Format.ArcXML
 format
 formatObject, OpenLayers.Layer.WFS
 formatOptions
 fractionalZoom, OpenLayers.Map
 frame, OpenLayers.Tile.Image
 freehand, OpenLayers.Handler.Path
 freehandToggle, OpenLayers.Handler.Path
G
 geodesic, OpenLayers.Control.Measure
 geometry
 geometryMap, OpenLayers.Renderer.Canvas
 geometryName
 geometryType, OpenLayers.Layer.Vector
 geometryTypes
 geons, OpenLayers.Format.GeoRSS
 georssns, OpenLayers.Format.GeoRSS
 geoToleranceCache, OpenLayers.Control.Snapping
 gmlFormat, OpenLayers.Format.WMSGetFeatureInfo
 gmlns, OpenLayers.Format.GML
 gmlParse, OpenLayers.Format.GeoRSS
 granularity, OpenLayers.Control.MousePosition
 graphicFormats, OpenLayers.Format.SLD.v1
 greedy, OpenLayers.Control.Snapping
 grid, OpenLayers.Layer.Grid
 groupDiv, OpenLayers.Popup
 gutter, OpenLayers.Layer
H
 h, OpenLayers.Size
 handler
 handleRightClicks, OpenLayers.Control.Navigation
 handlerOptions
 handlers
 headers, OpenLayers.Protocol.HTTP
 height, OpenLayers.Geometry.Rectangle
 highlightOnly, OpenLayers.Control.SelectFeature
 hover
 hoverRequest, OpenLayers.Control.WMSGetFeatureInfo
 hoverResponse, OpenLayers.Control.GetFeature
+ +
{Boolean}
{Boolean} Should OpenLayers allow events on the map to fall through to other elements on the page, or should it swallow them? 
{OpenLayers.Feature.Vector}
{OpenLayers.Feature.Vector} Feature currently available for modification.
{OpenLayers.Feature.Vector} The current editable feature.
{OpenLayers.Feature.Vector} The last feature that was hovered.
{OpenLayers.Feature.Vector} The currently drawn polygon feature
{Function} Called after each feature is added
{Object} The functions that are sent to the feature handler for callback.
{OpenLayers.Feature} If featureClass is defined, an old-style markers based WFS layer is created instead of a new-style vector layer.
{String} Code for feature coordinate system.
{String} Default description for features.
{String} All xml nodes containing this search criteria will populate an internal array of feature nodes for each layer node found.
{String} Element name for features.
{String} Feature Attributes namespace.
{String} Namespace used for feature attributes.
{String} The feature namespace.
{String} Feature namespace.
{String} Namespace alias (or prefix) for feature nodes.
{String} Namespace alias for feature type.
{Object} Hash of {OpenLayers.Feature.Vector}, keyed by fid, holding the currently selected features
{Array} Array of features
{Array(OpenLayers.Feature)}
{Array(OpenLayers.Feature)}
{Array(OpenLayers.Feature.Vector)}
{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features returned in the response by the server.
{Object} Internal object of feature/style pairs for use in redrawing the layer.
{Array(OpenLayers.Feature.Vector)} Cached features.
{Array(OpenLayers.Feature.Vector)} Cached features.
{Array(OpenLayers.Feature)} list of features in this tile
{String} Default title for features.
{Array(String) or String} The local (without prefix) feature typeName(s).
{String} Local feature typeName.
{Object} Storage of KML URLs that have been fetched before in order to prevent reloading them.
{String}
{String}
{RegExp} Regular expression to know whether a feature was created in offline mode.
{Array(String)} Feature Ids to evaluate this rule against.
{OpenLayers.Filter} Optional filter for the rule.
{String} Code for filter coordinate system.
{Object} Contains a member for each filter type.
{Array(OpenLayers.Filter)} Child filters for this filter.
{Object} Values to finish the animation with
{Boolean} The polygon has a fixed radius.
{Boolean} We want the framed popup to work dynamically placed relative to its anchor but also in just one fixed position.
{Boolean} The Framed Cloud popup works in just one fixed position.
{String} Description of the folders.
{String} Name of the folders.
{Array} List of keys used in font styling.
{OpenLayers.Format} A format for parsing GetFeatureInfo responses.
{OpenLayers.Format} The format you want the data to be parsed with.
{String} Mime type of the images returned.
{OpenLayers.Format} The format you want the data to be parsed with.
{OpenLayers.Format} The format used by this protocol.
{OpenLayers.Format} Internally created/managed format object, used by the Tile to parse data.
{Object} Optional properties to set on the format (if one is not provided in the format property.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Hash of options which should be passed to the format when it is created.
{Object} Optional options for the format.
{Boolean} For a base layer that supports it, allow the map resolution to be set to a value between one of the values in the resolutions array.
{DOMElement} The image element is appended to the frame.
{Boolean} In freehand mode, the handler starts the path on mouse down, adds a point for every mouse move, and finishes the path on mouse up.
{String} If set, freehandToggle is checked on mouse events and will set the freehand mode to the opposite of this.freehand.
+ + + +
{Boolean} Calculate geodesic metrics instead of planar metrics.
{OpenLayers.Geometry}
{String} Name of geometry element.
{Object} Geometry -> Feature lookup table.
{String} Name of geometry element.
{String} Name of the geometry attribute for features.
{String} geometryType allows you to limit the types of geometries this layer supports.
{Array(String)} To restrict dragging to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
{Array(String)} To restrict modification to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
{Array(String)} To restrict selecting to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
{Object} Maps OpenLayers geometry class names to GML element names.
To restrict dragging to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
{String} W3C Geo namespace to use.
{String} GeoRSS namespace to use.
{Object} A cache of geo-tolerances.
{OpenLayers.Format.GML} internal GML format for parsing geometries in msGMLOutput
{String} GML Namespace.
{Object} GML Format object for parsing features Non-API and only created if necessary
{Integer}
{Object} Mapping of image mime-types to regular extensions matching well-known file extensions.
{Boolean} Snap to closest feature in first layer with an eligible feature.
{Array(Array(OpenLayers.Tile))} This is an array of rows, each row is an array of tiles.
{DOMElement} First and only child of ‘div’.
{Integer} Determines the width (in pixels) of the gutter around image tiles to ignore.
+ + + +
{Number} height
{OpenLayers.Handler} null
{OpenLayers.Handler.Path} The temporary sketch handler created if no source layer is provided.
{Object} Reference to the OpenLayers.Handler for this control
{Boolean} Whether or not to handle right clicks.
{Object} Used to set non-default properties on the control’s handler
{Object} Additional options for the handlers used by this control.
{Object} Used to set non-default properties on the control’s handler
{Object} Additional options for the handlers used by this control, e.g.
{Object} Object with references to multiple OpenLayers.Handler instances.
{Object}
{Object}
{Object} Object with references to multiple OpenLayers.Handler instances.
{Object} HTTP request headers, read-only, set through the options passed to the constructor, Example: {‘Content-Type’: ‘plain/text’}
{Float}
{Boolean} If true do not actually select features (i.e.
{Boolean} Send feature requests on mouse moves.
{Boolean} Select on mouse over and deselect on mouse out.
{Boolean} Send GetFeatureInfo requests when mouse stops moving.
{OpenLayers.Request} contains the currently running hover request (if any).
{OpenLayers.Protocol.Response} The response object associated with the currently running hover request (if any).
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Properties4.html b/openlayers/doc/devdocs/index/Properties4.html new file mode 100644 index 0000000..37ae8bb --- /dev/null +++ b/openlayers/doc/devdocs/index/Properties4.html @@ -0,0 +1,46 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
I
 icon
 id
 IMAGE_RELOAD_ATTEMPTS, Util
 imageDiv, OpenLayers.Icon
 imageOffset, OpenLayers.Layer
 imageSize
 imageSrc, OpenLayers.Popup.Framed
 imgDiv, OpenLayers.Tile.Image
 ImgPath, Util
 includeXY, OpenLayers.Events
 indent, OpenLayers.Format.JSON
 Indexer, OpenLayers.Renderer.Elements
 indices, OpenLayers.ElementsIndexer
 infoFormat, OpenLayers.Control.WMSGetFeatureInfo
 inRange, OpenLayers.Layer
 interestingTagsExclude, OpenLayers.Format.OSM
 internalns, OpenLayers.Format.KML
 internalProjection, OpenLayers.Format
 interval
 irregular, OpenLayers.Handler.RegularPolygon
 isAlphaImage
 isBackBuffer, OpenLayers.Tile.Image
 isBaseLayer
 isDefault, OpenLayers.Style
 isFirstDraw, OpenLayers.Tile.Image
 isFixed
 isGecko, OpenLayers.Renderer.SVG
 isLoading, OpenLayers.Tile
 isPrototype
 isVector, OpenLayers.Layer.Vector
J
 jsonParser, OpenLayers.Protocol.SQL.Gears
K
 keepData, OpenLayers.Format
 keepInMap
 keyMask, OpenLayers.Handler
 kmlns, OpenLayers.Format.KML
L
 last
 lastDown, OpenLayers.Handler.Point
 lastFeature, OpenLayers.Handler.Feature
 lastPixel, OpenLayers.Control.DragFeature
 lastRatio, OpenLayers.Tile.Image
 lastSeqID, Util
 lastUp, OpenLayers.Handler.Point
 lastXy, OpenLayers.Control.MousePosition
 lat, OpenLayers.LonLat
 layer
 layerAlphaHack, OpenLayers.Tile.Image
 layerContainerDiv, OpenLayers.Map
 layerContainerOrigin, OpenLayers.Map
 layerIdentifier, OpenLayers.Format.WMSGetFeatureInfo
 layerName
 layerOptions
 layerParams, OpenLayers.Format.WMC
 layers
 layersDiv, OpenLayers.Control.LayerSwitcher
 layerStates, OpenLayers.Control.LayerSwitcher
 layerUrls, OpenLayers.Control.WMSGetFeatureInfo
 left, OpenLayers.Bounds
 length, OpenLayers.Strategy.Paging
 level, OpenLayers.Format.JSON
 limit, OpenLayers.Control.NavigationHistory
 line, OpenLayers.Handler.Path
 listeners
 loaded, OpenLayers.Layer.GML
 location
 locked, OpenLayers.Renderer
 lon, OpenLayers.LonLat
 lonlat
 lowerBoundary, OpenLayers.Filter.Comparison
 lzd, OpenLayers.Layer.WorldWind
+ +
{OpenLayers.Icon}.
{OpenLayers.Icon} The icon used by this marker.
{String}
{String}
{String} A unique identifier for this geometry.
{String}
{String}
{String} Unique identifier for the map
{String} the unique identifier assigned to this popup.
{String} A unique id for this session.
{String} null
{Integer} How many times should we try to reload an image before giving up? 
{DOMElement}
{OpenLayers.Pixel} For layers with a gutter, the image offset represents displacement due to the gutter.
{OpenLayers.Size} Size (measured in pixels) of the image located by the ‘imageSrc’ property.
{OpenLayers.Size}
{String} location of the image to be used as the popup frame
{DOMElement} The div element which wraps the image.
{String} Default is ‘’.
{Boolean} Should the .xy property automatically be created for browser mouse events? 
{String} For “pretty” printing, the indent string will be used once for each indentation level.
{OpenLayers.ElementIndexer} An instance of OpenLayers.ElementsIndexer created upon initialization if the zIndexing or yOrdering options passed to this renderer’s constructor are set to true.
{Object} This is a hash that maps node ids to their z-index value stored in the indexer.
{String} The mimetype to request from the server
{Boolean} The current map resolution is within the layer’s min/max range.
{Array} List of tags to exclude from ‘interesting’ checks on nodes.
{String} KML Namespace to use -- defaults to the namespace of the Placemark node being parsed, but falls back to kmlns.
{OpenLayers.Projection} When passed a externalProjection and internalProjection, the format will reproject the geometries it reads or writes.
{Integer} The number of milliseconds that should ellapse before panning the map again.
{Integer} In order to increase performance, an interval (in milliseconds) can be set to reduce the number of drag events called.
{int} Interval id returned by window.setInterval
{Boolean} Draw an irregular polygon instead of a regular polygon.
{Boolean} The image has some alpha and thus needs to use the alpha image hack.
{Boolean} The FramedCloud does not use an alpha image (in honor of the good ie6 folk out there)
{Boolean} Is this tile a back buffer tile?
{Boolean} Whether or not the layer is a base layer.
{Boolean} Default is true for ArcGIS93Rest layer
{Boolean} The layer is a base layer.
{Boolean} EventPaned layers are always base layers, by necessity.
{Boolean} The layer is a base layer.
{Boolean} KaMap Layer is always a base layer
{Boolean} Treat this layer as a base layer.
{Boolean} Markers layer is never a base layer.
{Boolean} Treat this layer as a base layer.
{Boolean}
{Boolean} The layer is a base layer.
{Boolean} WFS layer is not a base layer by default.
{Boolean} Default is true for WMS layer
WorldWind layer is a base layer by default.
Default is true, as this is designed to be a base tile source.
{Boolean}
{Boolean} Is this the first time the tile is being drawn? 
{Boolean} EventPaned layers are fixed by default.
{Boolean} Whether the layer remains in one place while dragging the map.
{Boolean}
{Boolean} Is the tile loading?
Deprecated.
{Boolean} Whether the layer is a vector layer.
+ + + +
{OpenLayers.Format.JSON}
+ + + +
{Object} Maintain a reference (data) to the most recently read data.
{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.
{Boolean} If panMapIfOutOfView is false, and this property is true, contrain the popup such that it always fits in the available map space.
{Integer} Use bitwise operators and one or more of the OpenLayers.Handler constants to construct a keyMask.
{String} KML Namespace to use.
+ + + +
{OpenLayers.Pixel} The last pixel location of the drag.
{OpenLayers.Pixel} Location of the last mouse down
{OpenLayers.Feature.Vector} The last feature that was handled.
{OpenLayers.Pixel}
{Float} Used in transition code only.
{Integer} The ever-incrementing count variable.
{OpenLayers.Pixel}
{OpenLayers.Pixel}
{Float} The y-axis coordinate in map units
{OpenLayers.Layer.Vector}
{OpenLayers.Layer.Vector}
{OpenLayers.Layer.Vector}
{OpenLayers.Layer.Vector} The vector layer with a common renderer root for all layers this control is configured with (if an array of layers was passed to the constructor), or the vector layer the control was configured with (if a single layer was passed to the constructor).
{OpenLayers.Layer.Vector} The current editable layer.
{OpenLayers.Layer.Vector} The target layer with features to be split.
{OpenLayers.Layer}
{OpenLayers.Layer.Vector} The temporary drawing layer
{OpenLayers.Layer.Vector} The temporary drawing layer
{OpenLayers.Layer.Vector} The layer this strategy belongs to.
{OpenLayers.Layer} layer the tile is attached to
{Boolean} True if the png alpha hack needs to be applied on the layer’s div.
{HTMLDivElement} The element that contains the layers.
{OpenLayers.LonLat} The lonlat at which the later container was re-initialized (on-zoom)
{String} All xml nodes containing this search criteria will populate an internal array of layer nodes.
{String} Name of data layer.
{String} name of the layer that this style belongs to, usually according to the NamedLayer attribute of an SLD document.
{Object} Default options for layers created by the parser.
{Object} Any optional properties to be set on the sketch layer.
{Object} Default parameters for layers created by the parser.
{Array(OpenLayers.Layer)} Ordered list of layers in the overview map.
{Array(OpenLayers.Layer.Vector} The layers this control will work on, or null if the control was configured with a single layer
{Array(OpenLayers.Layer.WMS)} The layers to query for feature info.
{Array} An array of objects with layer properties.
Layers that are attached to this container.
{Array(OpenLayers.Layer)} Ordered list of layers in the map
{DOMElement}
{Array(Object)} Basically a copy of the “state” of the map’s layers the last time the control was drawn.
{Array(String)} Optional list of urls for layers that should be queried.
{Number} Minimum horizontal coordinate.
{Integer} Number of features per page.
{Integer} For “pretty” printing, this is incremented/decremented during serialization.
{Integer} Optional limit on the number of history items to retain.
{OpenLayers.Feature.Vector}
{Object} An object containing properties corresponding to event types.
{Object} Hashtable of Array(Function): events listener functions
{Boolean} Flag for whether the GML data has been loaded yet.
{String} store url of text file
{String} URL of text file.
{Boolean} If the renderer is currently in a state where many things are changing, the ‘locked’ property is set to true.
{Float} The x-axis coodinate in map units
{OpenLayers.LonLat}
{OpenLayers.LonLat} location of object
{OpenLayers.LonLat} the position of this popup on the map
{Number} or {String} lower boundary for between comparisons.
LevelZeroTileSizeDegrees
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Properties5.html b/openlayers/doc/devdocs/index/Properties5.html new file mode 100644 index 0000000..2d309d6 --- /dev/null +++ b/openlayers/doc/devdocs/index/Properties5.html @@ -0,0 +1,42 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
M
 map
 mapObject, OpenLayers.Layer.EventPane
 mapOptions, OpenLayers.Control.OverviewMap
 marker, OpenLayers.Feature
 markerClick, OpenLayers.Layer.Text
 markers, OpenLayers.Layer.Markers
 matchCase, OpenLayers.Filter.Comparison
 maxDepth, OpenLayers.Format.KML
 maxExtent
 maxFeatures
 maximizeDiv, OpenLayers.Control.LayerSwitcher
 maxRatio, OpenLayers.Control.OverviewMap
 maxResolution
 maxScale
 maxScaleDenominator, OpenLayers.Rule
 maxSize
 maxWidth, OpenLayers.Control.ScaleLine
 maxZIndex, OpenLayers.ElementsIndexer
 minExtent
 minimizeDiv, OpenLayers.Control.LayerSwitcher
 minimumSymbolizer, OpenLayers.Renderer.Elements
 minRatio, OpenLayers.Control.OverviewMap
 minRectDisplayClass, OpenLayers.Control.OverviewMap
 minRectSize, OpenLayers.Control.OverviewMap
 minResolution
 minScale
 minScaleDenominator, OpenLayers.Rule
 minSize
 mode
 modified, OpenLayers.Control.ModifyFeature
 modifiers, OpenLayers.Control.GetFeature
 mouseDown, OpenLayers.Handler.Point
 mousePosition, OpenLayers.Handler.MouseWheel
 multi, OpenLayers.Handler.Point
 multiCurve, OpenLayers.Format.GML.v3
 multiple
 multipleKey
 multiSurface, OpenLayers.Format.GML.v3
 mutual, OpenLayers.Control.Split
N
 name
 namedLayersAsArray, OpenLayers.Format.SLD
 namespaceAlias, OpenLayers.Format.XML
 namespaces
 newline, OpenLayers.Format.JSON
 next, OpenLayers.Control.NavigationHistory
 nextOptions, OpenLayers.Control.NavigationHistory
 nextStack, OpenLayers.Control.NavigationHistory
 noMagic, OpenLayers.Layer.WMS
 NULL_FEATURE_STATE, OpenLayers.Protocol.SQL.Gears
 NULL_GEOMETRY, OpenLayers.Protocol.SQL.Gears
 num, OpenLayers.Strategy.Paging
 numberRegEx, OpenLayers.String.OpenLayers.String
 numDigits, OpenLayers.Control.MousePosition
 numLoadingTiles, OpenLayers.Layer.Grid
 numZoomLevels
O
 object, OpenLayers.Events
 observers, OpenLayers.Event
 offset
 ogcns, OpenLayers.Format.WFS
 oldOnselectstart, OpenLayers.Handler.Drag
 onBeforeSelect, OpenLayers.Control.SelectFeature
 onComplete, OpenLayers.Control.DragFeature
 onDrag, OpenLayers.Control.DragFeature
 onImageLoadErrorColor, Util
 onModification, OpenLayers.Control.ModifyFeature
 onModificationEnd, OpenLayers.Control.ModifyFeature
 onModificationStart, OpenLayers.Control.ModifyFeature
 onSelect, OpenLayers.Control.SelectFeature
 onStart, OpenLayers.Control.DragFeature
 onUnselect, OpenLayers.Control.SelectFeature
 opacity
 options
 order, OpenLayers.ElementsIndexer
 origin, OpenLayers.Handler.RegularPolygon
 out, OpenLayers.Control.ZoomBox
 ovmap, OpenLayers.Control.OverviewMap
+ +
{OpenLayers.Map} this gets set in the addControl() function in OpenLayers.Map
{OpenLayers.Map}
{OpenLayers.Map} This variable is set when the layer is added to the map, via the accessor function setMap().
{OpenLayers.Map} the map this marker is attached to
{OpenLayers.Map} this gets set in Map.js when the popup is added to the map
{OpenLayers.Map} Reference to the map -- this is set in Vector’s setMap()
{Object} This is the object which will be used to load the 3rd party library in the case of the google layer, this will be of type GMap, in the case of the ve layer, this will be of type VEMap
{Object} An object containing any non-default properties to be sent to the overview map’s map constructor.
{OpenLayers.Marker}
{Array(OpenLayers.Marker)} internal marker list
{Boolean} Force case sensitive searches for EQUAL_TO and NOT_EQUAL_TO comparisons.
{Integer} Maximum depth for recursive loading external KML URLs Defaults to 0: do no external fetching
{OpenLayers.Bounds} The center of these bounds will not stray outside of the viewport extent during panning.
{OpenLayers.Bounds} The maximum extent for the map.
{Integer} Maximum number of features to return from a query, if supported by the protocol.
{Integer} Maximum number of features to return from a WMS query.
{DOMElement}
{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther in on the overview map.
{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
{Float} Default max is 360 deg / 256 px, which corresponds to zoom level 0 on gmaps.
{Float}
{Float}
{Number} or {String} maximum scale at which to draw the feature.
{OpenLayers.Size} Maximum size allowed for the popup’s contents.
{OpenLayers.Size}
{Integer} Maximum width of the scale line in pixels.
{Integer} This is the largest-most z-index value for a node contained within the indexer.
{OpenLayers.Bounds}
{OpenLayers.Bounds}
{DOMElement}
{Object}
{Float} The ratio of the overview map resolution to the main map resolution at which to zoom farther out on the overview map.
{String} Replacement style class name for the extent rectangle when minRectSize is reached.
{Integer} The minimum width or height (in pixels) of the extent rectangle on the overview map.
{Float}
{Float}
{Float}
{Float}
{Number} or {String} minimum scale at which to draw the feature.
{OpenLayers.Size} Minimum size allowed for the popup’s contents.
{OpenLayers.Size}
{Integer} Bitfields specifying the modification mode.
{Boolean} The currently selected feature has been modified.
{Object} The event modifiers to use, according to the current event being handled by this control’s handlers
{Boolean} The mouse is down
{OpenLayers.Pixel} mousePosition is necessary because evt.clientX/Y is buggy in Moz on wheel events, so we cache and use the value from the last mousemove.
{Boolean} Cast features to multi-part geometries before passing to the layer.
{Boolean} Write gml:MultiCurve instead of gml:MultiLineString.
{Boolean} Allow selection of multiple geometries.
{Boolean} Allow selection of multiple geometries.
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the multiple property to true.
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the multiple property to true.
{Boolean} Write gml:multiSurface instead of gml:MultiPolygon.
{Boolean} If source and target layers are the same, split source features and target features where they intersect.
+ + + +
{String}
{String} Layer name.
{String} name of this rule
{String}
{Boolean} Generate a namedLayers array.
{Object} Mapping of namespace URI to namespace alias.
{Object} Mapping of namespace aliases to namespace URIs.
{Object} Mapping of namespace aliases to namespace URIs.
{Object} Mapping of namespace aliases to namespace URIs.
{Object} Mapping of namespace aliases to namespace URIs.
{Object} Mapping of namespace aliases to namespace URIs.
{Object} Mapping of namespace aliases to namespace URIs.
{Object} Mapping of namespace aliases to namespace URIs.
{String} For “pretty” printing, the newline string will be used at the end of each name/value pair or array item.
{OpenLayers.Control} A button type control whose trigger method restores the next state managed by this control.
{Object} Set this property on the options argument of the constructor to set optional properties on the next control.
{Array} Array of items in the history.
{Boolean} If true, the image format will not be automagicaly switched from image/jpeg to image/png or image/gif when using TRANSPARENT=TRUE.
{String}
{String}
{Integer} The currently displayed page number.
Used to test strings as numbers.
{Integer}
{Integer} How many tiles are still loading?
{Integer}
{Integer} Number of zoom levels for the map.
+ + + +
{Object} the code object issuing application events
{Object} A hashtable cache of the event observers.
{OpenLayers.Pixel} distance in pixels to offset the image when being rendered
{Object} Hash with “x” and “y” properties
{Function}
{Function} Optional function to be called before a feature is selected.
{Function} Define this function if you want to know when a feature is done dragging.
{Function} Define this function if you want to know about each move of a feature.
{String} The color tiles with load errors will turn.
{Function} Deprecated.
{Function} Deprecated.
{Function} Deprecated.
{Function} Optional function to be called when a feature is selected.
{Function} Define this function if you want to know when a drag starts.
{Function} Optional function to be called when a feature is unselected.
{Float} The layer’s opacity.
{float} the opacity of this popup (between 0.0 and 1.0)
{Object} A reference to options passed to the constructor.
{Object} An optional object whose properties will be set on the layer.
{Object} Any options sent to the constructor.
{Object} Any options sent to the constructor.
{Array<String>} This is an array of node id’s stored in the order that they should show up on screen.
{OpenLayers.Geometry.Point} Location of the first mouse down
{Boolean} Should the control be used for zooming out?
{OpenLayers.Map} A reference to the overview map itself.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Properties6.html b/openlayers/doc/devdocs/index/Properties6.html new file mode 100644 index 0000000..91ad987 --- /dev/null +++ b/openlayers/doc/devdocs/index/Properties6.html @@ -0,0 +1,38 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
P
 padding, OpenLayers.Popup
 paddingForPopups, OpenLayers.Map
 paging, OpenLayers.Strategy.Paging
 panDuration, OpenLayers.Map
 pane, OpenLayers.Layer.EventPane
 panMapIfOutOfView
 panMethod, OpenLayers.Map
 panned, OpenLayers.Control.DragPan
 panRatio, OpenLayers.Map
 panTween, OpenLayers.Map
 params
 parent, OpenLayers.Geometry
 parseCoords, OpenLayers.Format.GeoJSON
 parseGeometry
 parser
 performedDrag, OpenLayers.Control.MouseDefaults
 persist
 pixelTolerance
 placemarksDesc, OpenLayers.Format.KML
 playing, OpenLayers.Tween
 point
 popup, OpenLayers.Feature
 popupClass, OpenLayers.Feature
 popups, OpenLayers.Map
 popupSize, OpenLayers.Layer.GeoRSS
 position
 positionBlocks
 postReadFiltering, OpenLayers.Protocol.SQL
 poweredBy, OpenLayers.Layer.Google
 precedence, OpenLayers.Control.Snapping
 precision, Util
 prefix, OpenLayers.Control.MousePosition
 preload, OpenLayers.Strategy.Fixed
 pretty, OpenLayers.Format.JSON
 previous, OpenLayers.Control.NavigationHistory
 previousOptions, OpenLayers.Control.NavigationHistory
 previousStack, OpenLayers.Control.NavigationHistory
 priv, OpenLayers.Protocol.Response
 proj, OpenLayers.Projection
 projCode, OpenLayers.Projection
 projection
 property
 propertyStyles, OpenLayers.Style
 protocol
 px
Q
 queryVisible, OpenLayers.Control.WMSGetFeatureInfo
+ +
{int or OpenLayers.Bounds} An extra opportunity to specify internal padding of the content div inside the popup.
{OpenLayers.Bounds} Outside margin of the popup.
{Boolean} The strategy is currently changing pages.
{Integer} The number of steps to be passed to the OpenLayers.Tween.start() method when the map is panned.
{DOMElement} A reference to the element that controls the events.
{Boolean} When drawn, pan map such that the entire popup is visible in the current viewport (if necessary).
{Boolean} Framed Cloud does pan into view by default.
{Function} The Easing function to be used for tweening.
{Boolean} The map moved.
{Float} The ratio of the current extent within which panning will tween.
{OpenLayers.Tween} Animated panning tween object, see panTo()
{Object} Hashtable of key/value parameters
{Object} Parameters of GET requests, read-only, set through the options passed to the constructor, Example: {‘bbox’: ‘5,5,5,5’}
{OpenLayers.Geometry}This is set when a Geometry is added as component of another geometry
Object with properties corresponding to the GeoJSON geometry types.
Properties of this object are the functions that parse geometries based on their type.
Properties of this object are the functions that parse geometries based on their type.
{Object} Instance of the versioned parser.
{Object} Instance of the versioned parser.
{Object} Instance of the versioned parser.
{OpenLayers.Format} A cached versioned format used for reading.
{Boolean}
{Boolean} Keep the temporary measurement sketch drawn after the measurement is complete.
{Boolean} Leave the feature rendered until destroyFeature is called.
{Boolean} Leave the feature rendered until clear is called.
{Number} Maximum number of pixels between mouseup and mousedown for an event to be considered a click.
{String} Name of the placemarks.
{Boolean} Tells if the easing is currently playing
{OpenLayers.Geometry.Point} The currently snapped vertex.
{OpenLayers.Feature.Vector} The currently drawn point
{OpenLayers.Popup}
{OpenLayers.Class} The class which will be used to instantiate a new Popup.
{Array(OpenLayers.Popup)} List of popups associated with the map
{OpenLayers.Size} This determines the size of GeoRSS popups.
{OpenLayers.Pixel}
{OpenLayers.Pixel} Top Left pixel of the tile
{Object} Hash of different position blocks (Object/Hashs).
{Object} Hash of differen position blocks, keyed by relativePosition two-character code string (ie “tl”, “tr”, “bl”, “br”)
{Boolean} Whether the filter (if there’s one) must be applied after the features have been read from the database; for example the BBOX strategy passes the read method a BBOX spatial filter, if postReadFiltering is true every feature read from the database will go through the BBOX spatial filter, which can be costly; defaults to true.
{DOMElement} Div for Google’s powered by logo and link
{Array} List representing precedence of different snapping types.
{Number} The number of significant digits to retain to avoid floating point precision errors.
{String}
{Boolean} Load data before layer made visible.
{Boolean} Serialize with extra whitespace for structure.
{OpenLayers.Control} A button type control whose trigger method restores the previous state managed by this control.
{Object} Set this property on the options argument of the constructor to set optional properties on the previous control.
{Array} List of items in the history.
{Object} Proj4js.Proj instance.
{String}
{OpenLayers.Projection} or {String} Set in the layer options to override the default projection string this layer - also set maxExtent, maxResolution, and units if appropriate.
{String} Set in the map options to override the default projection string this map - also set maxExtent, maxResolution, and units if appropriate.
{String} name of the context property to compare
{String} Name of the context property to compare.
{Hash of Boolean} cache of style properties that need to be parsed for propertyNames.
{OpenLayers.Protocol} Required.
{OpenLayers.Protocol} Optional protocol for the layer.
{OpenLayers.Pixel}
+ + + +
{Boolean} If true, filter out hidden layers when searching the map for layers to query.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Properties7.html b/openlayers/doc/devdocs/index/Properties7.html new file mode 100644 index 0000000..8299d45 --- /dev/null +++ b/openlayers/doc/devdocs/index/Properties7.html @@ -0,0 +1,34 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
R
 radius, OpenLayers.Handler.RegularPolygon
 radiusHandle, OpenLayers.Control.ModifyFeature
 ratio
 readers
 readWithPOST, OpenLayers.Protocol.HTTP
 regExes
 registry, OpenLayers.Control.NavigationHistory
 renderer, OpenLayers.Layer.Vector
 rendererOptions, OpenLayers.Layer.Vector
 rendererRoot, OpenLayers.Renderer.Elements
 renderers, OpenLayers.Layer.Vector
 renderIntent
 reportError, OpenLayers.Layer.Vector
 reproject
 reqFeatures, OpenLayers.Protocol.Response
 request
 requestType, OpenLayers.Protocol.Response
 resFactor, OpenLayers.Strategy.BBOX
 resolution
 resolutionFactor, OpenLayers.Control.OverviewMap
 resolutions
 responders, OpenLayers.Ajax.Responders
 response
 restoring, OpenLayers.Control.NavigationHistory
 restrictedExtent, OpenLayers.Map
 right, OpenLayers.Bounds
 rightclickTimerId, OpenLayers.Handler.Click
 root
 rootPrefix, OpenLayers.Format.WMC.v1
 rounded, OpenLayers.Popup.AnchoredBubble
 rssns, OpenLayers.Format.GeoRSS
 rules, OpenLayers.Style
+ +
{Float} Optional radius in map units of the regular polygon.
{OpenLayers.Feature.Vector} A handle for rotating/resizing a feature.
{Float} Used only when in single-tile mode, this specifies the ratio of the size of the single tile to the size of the map.
{Float} the ratio of image/tile size to map size (this is the untiled buffer)
{Float} The ratio of the data bounds to the viewport bounds (in each dimension).
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
{Boolean} true if read operations are done with POST requests instead of GET, defaults to false.
Compiled regular expressions for manipulating strings.
Compiled regular expressions for manipulating strings.
{Object} An object with keys corresponding to event types.
{OpenLayers.Renderer}
{Object} Options for the renderer.
{DOMElement}
{Array(String)} List of supported Renderer classes.
{String} key used to retrieve the select style from the layer’s style map.
{String} rendering intent currently being used
{Boolean} report friendly error message when loading of renderer fails.
Deprecated.
Deprecated.
{Array({OpenLayers.Feature.Vector})} or {OpenLayers.Feature.Vector} The features provided by the user and placed in the request by the protocol.
A get_image request destined for an ArcIMS server.
{OpenLayers.Request.XMLHttpRequest}
{String} The type of request this response corresponds to.
{Float} Optional factor used to determine when previously requested features are invalid.
{Float} The map resolution for the previously considered snap.
{Float}
{Float} The resolution of the map.
{Float} cache of current map resolution
{Float} The current data resolution.
{Float} The resolution (map units per pixel) of the current cluster set.
{Object}
{Array} A list of map resolutions (map units per pixel) in descending order.
{Array(Float)} A list of map resolutions (map units per pixel) in descending order.
{Array}
A parsed response from an ArcIMS server.
{OpenLayers.Protocol.Response} The protocol response object returned by the layer protocol.
{Boolean} Currently restoring a history state.
{OpenLayers.Bounds} Limit map navigation to this extent where possible.
{Number} Maximum horizontal coordinate.
{Number} The id of the right mouse timeout waiting to clear the delayedEvent.
{DOMElement}
{DOMElement}
{String} Prefix on the root node that maps to the context namespace URI.
{Boolean} Has the popup been rounded yet?
{String} RSS namespace to use.
{Array(OpenLayers.Rule)}
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Properties8.html b/openlayers/doc/devdocs/index/Properties8.html new file mode 100644 index 0000000..23aa111 --- /dev/null +++ b/openlayers/doc/devdocs/index/Properties8.html @@ -0,0 +1,34 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
S
 saveFeatureState, OpenLayers.Protocol.SQL.Gears
 scales, OpenLayers.Layer
 schema, OpenLayers.Protocol.WFS.v1
 schemaLocation
 schemaLocations
 scope
 selectControl, OpenLayers.Control.ModifyFeature
 selectedFeature
 selectedFeatures, OpenLayers.Layer.Vector
 selectStyle, OpenLayers.Control.SelectFeature
 separator, OpenLayers.Control.MousePosition
 seperator, OpenLayers.Control.Attribution
 serialize, OpenLayers.Format.JSON
 serverResolutions
 serviceVersion, OpenLayers.Layer.TMS
 sides, OpenLayers.Handler.RegularPolygon
 single, OpenLayers.Handler.Click
 singleFeatureType, OpenLayers.Format.GML.Base
 singleTile
 size
 slideFactor
 slider, OpenLayers.Control.PanZoomBar
 slideRatio, OpenLayers.Control.PanZoom
 sliderEvents, OpenLayers.Control.PanZoomBar
 smoothDragPan, OpenLayers.Layer.EventPane
 snapAngle, OpenLayers.Handler.RegularPolygon
 snapToggle, OpenLayers.Handler.RegularPolygon
 source, OpenLayers.Control.Split
 sourceFilter, OpenLayers.Control.Split
 sourceOptions, OpenLayers.Control.Split
 space, OpenLayers.Format.JSON
 sphericalMecator, OpenLayers.Layer.XYZ
 sphericalMercator
 srsName
 start, OpenLayers.Handler.Drag
 started, OpenLayers.Handler.Drag
 state, OpenLayers.Feature.Vector
 stateName, OpenLayers.Format.WFST.v1
 status, OpenLayers.Ajax.Response
 statusText, OpenLayers.Ajax.Response
 stopClick, OpenLayers.Handler.Feature
 stopDouble, OpenLayers.Handler.Click
 stopDown
 stopMove, OpenLayers.Handler.Hover
 stopSingle, OpenLayers.Handler.Click
 stopUp, OpenLayers.Handler.Feature
 strategies, OpenLayers.Layer.Vector
 style
 styleBaseUrl, OpenLayers.Format.KML
 styleMap, OpenLayers.Layer.Vector
 styles
 suffix, OpenLayers.Control.MousePosition
 SUPPORTED_TRANSITIONS, OpenLayers.Layer
 surface, OpenLayers.Format.GML.v3
 symbolCache, OpenLayers.Renderer.VML
 symbolizer, OpenLayers.Rule
 symbolSize, OpenLayers.Renderer.SVG
+ +
{Boolean} Whether to save the feature state (OpenLayers.State) into the database, defaults to true.
{Array} An array of map scales in descending order.
{String} Optional schema location that will be included in the schemaLocation attribute value.
{String} Schema location for a particular minor version.
{String} http://www.opengis.net/ogc/filter/1.0.0/filter.xsd
{String} http://www.opengis.net/ogc/filter/1.1.0/filter.xsd
{String} Schema location for a particular minor version.
{String} Schema location for a particular minor version.
{String} Schema location for a particular minor version.
{String} Schema location for a particular minor version.
{String} http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd
{String} Schema location for a particular minor version.
{String} Schema location for a particular minor version.
{String} http://www.opengis.net/context http://schemas.opengis.net/context/1.0.0/context.xsd
{String} http://www.opengis.net/context http://schemas.opengis.net/context/1.1.0/context.xsd
{Object} Properties are namespace aliases, values are schema locations.
{Object} Properties are namespace aliases, values are schema locations.
{Object} The scope to use with the onBeforeSelect, onSelect, onUnselect callbacks.
{Object} Callback execution scope, read-only, set through the options passed to the constructor.
{OpenLayers.Control.SelectFeature}
{OpenLayers.Feature}
{OpenLayers.Feature}
{Array(OpenLayers.Feature.Vector)}
{Object} Hash of styles
{String}
{String} String used to seperate layers.
Object with properties corresponding to the serializable data types.
{Array} A list of all resolutions available on the server.
{Array} A list of all resolutions available on the server.
{String}
{Integer} Number of sides for the regular polygon.
{Boolean} Handle single clicks.
{Boolean} True if there is only 1 featureType, and not an array of featuretypes.
{Boolean} Moves the layer into single-tile mode, meaning that one tile will be loaded.
{Boolean} use tile server or request single tile image.
{singleTile} Always true for untiled.
{singleTile} Always true for untiled.
{OpenLayers.Size} The overvew map size in pixels.
{OpenLayers.Size}
{OpenLayers.Size} The image size in pixels
{OpenLayers.Size} Size of the main div (this.div)
{OpenLayers.Size} the width and height of the popup.
{OpenLayers.Size}
{OpenLayers.Size} null
Pixels to slide by.
{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
{Integer} Number of pixels by which we’ll pan the map in any direction on clicking the arrow buttons.
{Number} The fraction of map width/height by which we’ll pan the map on clicking the arrow buttons.
{OpenLayers.Events}
{Boolean} smoothDragPan determines whether non-public/internal API methods are used for better performance while dragging EventPane layers.
{Float} If set to a non-zero value, the handler will snap the polygon rotation to multiples of the snapAngle.
{String} If set, snapToggle is checked on mouse events and will set the snap mode to the opposite of what it currently is.
{OpenLayers.Layer.Vector} Optional source layer.
{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
{Options} If a temporary sketch layer is created, these layer options will be applied.
{String} For “pretty” printing, the space string will be used after the “:” separating a name/value pair.
Whether the tile extents should be set to the defaults for spherical mercator.
{Boolean} Should the map act as a mercator-projected map? 
{Boolean} Should the map act as a mercator-projected map? 
{Boolean} Should the map act as a mercator-projected map? 
{String} URI for spatial reference system.
{String} URI for spatial reference system.
{String} Name of spatial reference system.
{OpenLayers.Pixel} The first pixel location of the drag.
{Boolean} When a mousedown event is received, we want to record it, but not set ‘dragging’ until the mouse moves after starting.
{String}
{Object} Maps feature states to node names.
{Integer}
{String}
{Boolean} If stopClick is set to true, handled clicks do not propagate to other click listeners.
{Boolean} Stop other listeners from being notified of double-clicks.
{Boolean} Stop propagation of mousedown events from getting to listeners on the same element.
{Boolean} If stopDown is set to true, handled mousedowns do not propagate to other mousedown listeners.
{Boolean} Stop other listeners from being notified of clicks.
{Boolean} If stopUp is set to true, handled mouseups do not propagate to other mouseup listeners.
{Array(OpenLayers.Strategy})} Optional list of strategies for the layer.
{Object}
{Object} Default style for the layer
{String}
{OpenLayers.StyleMap}
{Object} Storage of style objects
Hash of {OpenLayers.Style}, keyed by names of well known rendering intents (e.g.
{String}
{Array} An immutable (that means don’t change it!)
{Boolean} Write gml:Surface instead of gml:Polygon elements.
{DOMElement} node holding symbols.
{Object} Symbolizer or hash of symbolizers for this rule.
{Object} Cache for symbol sizes according to their svg coordinate space
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/index/Properties9.html b/openlayers/doc/devdocs/index/Properties9.html new file mode 100644 index 0000000..2383923 --- /dev/null +++ b/openlayers/doc/devdocs/index/Properties9.html @@ -0,0 +1,46 @@ + + +Property Index - OpenLayers + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
T
 tableName, OpenLayers.Protocol.SQL
 targetFilter, OpenLayers.Control.Split
 termsOfUse, OpenLayers.Layer.Google
 textRoot, OpenLayers.Renderer.Elements
 theme, OpenLayers.Map
 thousandsSeparator, OpenLayers.Number
 threshold, OpenLayers.Strategy.Cluster
 tile
 tileOrigin, OpenLayers.Layer.TMS
 tileSize
 time, OpenLayers.Tween
 timeoutId, OpenLayers.Handler.Drag
 timer, OpenLayers.Strategy.Save
 timerId
 title
 toggle
 toggleKey
 tokenRegEx, OpenLayers.String.OpenLayers.String
 tolerance, OpenLayers.Control.Split
 top, OpenLayers.Bounds
 topInUnits, OpenLayers.Control.ScaleLine
 topOutUnits, OpenLayers.Control.ScaleLine
 transforms, OpenLayers.Projection
 transitionEffect, OpenLayers.Layer
 translationParameters, OpenLayers.Renderer.SVG
 type
 typeOfFid, OpenLayers.Protocol.SQL.Gears
U
 units
 unrenderedFeatures, OpenLayers.Layer.Vector
 up, OpenLayers.Handler.Feature
 upperBoundary, OpenLayers.Filter.Comparison
 url
 useAsyncOverlay, OpenLayers.Layer.MapGuide
 useFeedTitle, OpenLayers.Layer.GeoRSS
 useHttpTile, OpenLayers.Layer.MapGuide
 useOverlay, OpenLayers.Layer.MapGuide
V
 value
 vectorMode, OpenLayers.Layer.WFS
 vectorRoot, OpenLayers.Renderer.Elements
 vendorParams, OpenLayers.Control.WMSGetFeatureInfo
 version
 vertices, OpenLayers.Control.ModifyFeature
 viewPortDiv, OpenLayers.Map
 viewRequestID, OpenLayers.Map
 virtualStyle, OpenLayers.Control.ModifyFeature
 virtualVertices, OpenLayers.Control.ModifyFeature
 visibility, OpenLayers.Layer
W
 w, OpenLayers.Size
 wfsns, OpenLayers.Format.WFS
 wheelListener, OpenLayers.Handler.MouseWheel
 wheelObserver, OpenLayers.Control.MouseDefaults
 width, OpenLayers.Geometry.Rectangle
 wktParser, OpenLayers.Protocol.SQL.Gears
 wrapDateLine, OpenLayers.Layer
 writers
+ +
Name of the database table into which Features should be saved.
{OpenLayers.Filter} Optional filter that will be evaluated to determine if a feature from the target layer is eligible for splitting.
{DOMElement} Div for Google’s copyright and terms of use link
{DOMElement}
{String} Relative path to a CSS file from which to load theme styles.
Thousands separator to use when formatting numbers.
{Integer} Optional threshold below which original features will be added to the layer instead of clusters.
{OpenLayers.Tile.Image}
{OpenLayers.Tile.WFS}
{OpenLayers.Pixel}
{OpenLayers.Size} Size for tiles.
{OpenLayers.Size}
{OpenLayers.Size} Set in the map options to override the default tile size for this map.
{int} Step counter
{String} The id of the timeout used for the mousedown interval.
{Number} The id of the timer.
{Number} The id of the timeout waiting to clear the delayedCall.
{string} This property is used for showing a tooltip over the Control.
{String} Title of this rule (set if included in SLD)
{String} Title of this style (set if included in SLD)
{Boolean} Unselect a selected feature on click.
{Boolean} Unselect a selected feature on click.
{Boolean} Unselect a selected feature on click.
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the toggle property to true.
{String} An event modifier (‘altKey’ or ‘shiftKey’) that temporarily sets the toggle property to true.
Used to find tokens in a string.
{Number} Distance between the calculated intersection and a vertex on the source geometry below which the existing vertex will be used for the split.
{Number} Maximum vertical coordinate.
{String} Units for zoomed in on top bar.
{String} Units for zoomed out on top bar.
Transforms is an object, with from properties, each of which may have a to property.
{String} The transition effect to use when the map is panned or zoomed.
{Object} Hash with “x” and “y” properties
{OpenLayers.Control.TYPES} Controls can have a ‘type’.
{Integer} OpenLayers.Control.TYPE_BUTTON.
{OpenLayers.Control.TYPES}
{String} Note that this control is not intended to be added directly to a control panel.
{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.
{OpenLayers.Control.TYPE}
{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.
{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.
{String} The type of OpenLayers.Control -- When added to a Control.Panel, ‘type’ is used by the panel to determine how to handle our events.
{String} type: type of the comparison.
{String} Type of spatial filter.
{GMapType}
{?}
{VEMapType}
{YahooMapType}
{String} The type of the feature identifier, either “number” or “string”, defaults to “string”.
+ + + +
{String} The layer map units.
{?}
{String} The map units.
{Object} hash of features, keyed by feature.id, that the renderer failed to draw
{OpenLayers.Pixel} The location of the last mouseup.
{Number} or {String} upper boundary for between comparisons.
{String} The URL of the WMS service to use.
{String} image url
{Array(String) or String} This is either an array of url strings or a single url string.
{String} URL of the image to use
{String} Service URL, read-only, set through the options passed to constructor.
{String} url of the request.
{String} The URL of the image being requested.
{String}
{Boolean} indicates if the MapGuide site supports the asynchronous GETDYNAMICOVERLAY requests which is available in MapGuide Enterprise 2010 and MapGuide Open Source v2.0.3 or higher.
{Boolean} Set layer.name to the first title element in the feed.
{Boolean} use a tile cache exposed directly via a webserver rather than the via mapguide server.
{Boolean} flag to indicate if the layer should be retrieved using GETMAPIMAGE (default) or using GETDYNAMICOVERLAY requests.
+ + + +
{Number} or {String} comparison value for binary comparisons.
{OpenLayers.Bounds || OpenLayers.Geometry} The bounds or geometry to be used by the filter.
{Boolean} Should be calculated automatically.
{DOMElement}
{Object} Additional parameters that will be added to the request, for WMS implementations that support them.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} WFS version number.
{String} WFS version number.
{String} WFS version number.
{String} Specify a version string if one is known.
{String} Specify a version string if one is known.
{String} The specific parser version.
{String} The specific parser version.
{String} Specify a version string if one is known.
{String} WFS version number.
{String} WFS version number.
{String} WFS version number.
{Array(OpenLayers.Feature.Vector)} Verticies currently available for dragging.
{HTMLDivElement} The element that represents the map viewport
{String} Used to store a unique identifier that changes when the map view changes.
{Object} A symbolizer to be used for virtual vertices.
{Array(OpenLayers.Feature.Vector)} Virtual vertices in the middle of each edge.
{Boolean} The layer should be displayed in the map.
+ + + +
{Number} width
{function}
{Function}
{Float}
{OpenLayers.Format.WKT}
{Boolean} #487 for more info.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/javascript/main.js b/openlayers/doc/devdocs/javascript/main.js new file mode 100644 index 0000000..efcdca9 --- /dev/null +++ b/openlayers/doc/devdocs/javascript/main.js @@ -0,0 +1,836 @@ +// This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL + + +// +// Browser Styles +// ____________________________________________________________________________ + +var agt=navigator.userAgent.toLowerCase(); +var browserType; +var browserVer; + +if (agt.indexOf("opera") != -1) + { + browserType = "Opera"; + + if (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1) + { browserVer = "Opera7"; } + else if (agt.indexOf("opera 8") != -1 || agt.indexOf("opera/8") != -1) + { browserVer = "Opera8"; } + else if (agt.indexOf("opera 9") != -1 || agt.indexOf("opera/9") != -1) + { browserVer = "Opera9"; } + } + +else if (agt.indexOf("applewebkit") != -1) + { + browserType = "Safari"; + + if (agt.indexOf("version/3") != -1) + { browserVer = "Safari3"; } + else if (agt.indexOf("safari/4") != -1) + { browserVer = "Safari2"; } + } + +else if (agt.indexOf("khtml") != -1) + { + browserType = "Konqueror"; + } + +else if (agt.indexOf("msie") != -1) + { + browserType = "IE"; + + if (agt.indexOf("msie 6") != -1) + { browserVer = "IE6"; } + else if (agt.indexOf("msie 7") != -1) + { browserVer = "IE7"; } + } + +else if (agt.indexOf("gecko") != -1) + { + browserType = "Firefox"; + + if (agt.indexOf("rv:1.7") != -1) + { browserVer = "Firefox1"; } + else if (agt.indexOf("rv:1.8)") != -1 || agt.indexOf("rv:1.8.0") != -1) + { browserVer = "Firefox15"; } + else if (agt.indexOf("rv:1.8.1") != -1) + { browserVer = "Firefox2"; } + } + + +// +// Support Functions +// ____________________________________________________________________________ + + +function GetXPosition(item) + { + var position = 0; + + if (item.offsetWidth != null) + { + while (item != document.body && item != null) + { + position += item.offsetLeft; + item = item.offsetParent; + }; + }; + + return position; + }; + + +function GetYPosition(item) + { + var position = 0; + + if (item.offsetWidth != null) + { + while (item != document.body && item != null) + { + position += item.offsetTop; + item = item.offsetParent; + }; + }; + + return position; + }; + + +function MoveToPosition(item, x, y) + { + // Opera 5 chokes on the px extension, so it can use the Microsoft one instead. + + if (item.style.left != null) + { + item.style.left = x + "px"; + item.style.top = y + "px"; + } + else if (item.style.pixelLeft != null) + { + item.style.pixelLeft = x; + item.style.pixelTop = y; + }; + }; + + +// +// Menu +// ____________________________________________________________________________ + + +function ToggleMenu(id) + { + if (!window.document.getElementById) + { return; }; + + var display = window.document.getElementById(id).style.display; + + if (display == "none") + { display = "block"; } + else + { display = "none"; } + + window.document.getElementById(id).style.display = display; + } + +function HideAllBut(ids, max) + { + if (document.getElementById) + { + ids.sort( function(a,b) { return a - b; } ); + var number = 1; + + while (number < max) + { + if (ids.length > 0 && number == ids[0]) + { ids.shift(); } + else + { + document.getElementById("MGroupContent" + number).style.display = "none"; + }; + + number++; + }; + }; + } + + +// +// Tooltips +// ____________________________________________________________________________ + + +var tooltipTimer = 0; + +function ShowTip(event, tooltipID, linkID) + { + if (tooltipTimer) + { clearTimeout(tooltipTimer); }; + + var docX = event.clientX + window.pageXOffset; + var docY = event.clientY + window.pageYOffset; + + var showCommand = "ReallyShowTip('" + tooltipID + "', '" + linkID + "', " + docX + ", " + docY + ")"; + + tooltipTimer = setTimeout(showCommand, 1000); + } + +function ReallyShowTip(tooltipID, linkID, docX, docY) + { + tooltipTimer = 0; + + var tooltip; + var link; + + if (document.getElementById) + { + tooltip = document.getElementById(tooltipID); + link = document.getElementById(linkID); + } +/* else if (document.all) + { + tooltip = eval("document.all['" + tooltipID + "']"); + link = eval("document.all['" + linkID + "']"); + } +*/ + if (tooltip) + { + var left = GetXPosition(link); + var top = GetYPosition(link); + top += link.offsetHeight; + + + // The fallback method is to use the mouse X and Y relative to the document. We use a separate if and test if its a number + // in case some browser snuck through the above if statement but didn't support everything. + + if (!isFinite(top) || top == 0) + { + left = docX; + top = docY; + } + + // Some spacing to get it out from under the cursor. + + top += 10; + + // Make sure the tooltip doesnt get smushed by being too close to the edge, or in some browsers, go off the edge of the + // page. We do it here because Konqueror does get offsetWidth right even if it doesnt get the positioning right. + + if (tooltip.offsetWidth != null) + { + var width = tooltip.offsetWidth; + var docWidth = document.body.clientWidth; + + if (left + width > docWidth) + { left = docWidth - width - 1; } + + // If there's a horizontal scroll bar we could go past zero because it's using the page width, not the window width. + if (left < 0) + { left = 0; }; + } + + MoveToPosition(tooltip, left, top); + tooltip.style.visibility = "visible"; + } + } + +function HideTip(tooltipID) + { + if (tooltipTimer) + { + clearTimeout(tooltipTimer); + tooltipTimer = 0; + } + + var tooltip; + + if (document.getElementById) + { tooltip = document.getElementById(tooltipID); } + else if (document.all) + { tooltip = eval("document.all['" + tooltipID + "']"); } + + if (tooltip) + { tooltip.style.visibility = "hidden"; } + } + + +// +// Blockquote fix for IE +// ____________________________________________________________________________ + + +function NDOnLoad() + { + if (browserVer == "IE6") + { + var scrollboxes = document.getElementsByTagName('blockquote'); + + if (scrollboxes.item(0)) + { + NDDoResize(); + window.onresize=NDOnResize; + }; + }; + }; + + +var resizeTimer = 0; + +function NDOnResize() + { + if (resizeTimer != 0) + { clearTimeout(resizeTimer); }; + + resizeTimer = setTimeout(NDDoResize, 250); + }; + + +function NDDoResize() + { + var scrollboxes = document.getElementsByTagName('blockquote'); + + var i; + var item; + + i = 0; + while (item = scrollboxes.item(i)) + { + item.style.width = 100; + i++; + }; + + i = 0; + while (item = scrollboxes.item(i)) + { + item.style.width = item.parentNode.offsetWidth; + i++; + }; + + clearTimeout(resizeTimer); + resizeTimer = 0; + } + + + +/* ________________________________________________________________________________________________________ + + Class: SearchPanel + ________________________________________________________________________________________________________ + + A class handling everything associated with the search panel. + + Parameters: + + name - The name of the global variable that will be storing this instance. Is needed to be able to set timeouts. + mode - The mode the search is going to work in. Pass CommandLineOption()>, so the + value will be something like "HTML" or "FramedHTML". + + ________________________________________________________________________________________________________ +*/ + + +function SearchPanel(name, mode, resultsPath) + { + if (!name || !mode || !resultsPath) + { alert("Incorrect parameters to SearchPanel."); }; + + + // Group: Variables + // ________________________________________________________________________ + + /* + var: name + The name of the global variable that will be storing this instance of the class. + */ + this.name = name; + + /* + var: mode + The mode the search is going to work in, such as "HTML" or "FramedHTML". + */ + this.mode = mode; + + /* + var: resultsPath + The relative path from the current HTML page to the results page directory. + */ + this.resultsPath = resultsPath; + + /* + var: keyTimeout + The timeout used between a keystroke and when a search is performed. + */ + this.keyTimeout = 0; + + /* + var: keyTimeoutLength + The length of in thousandths of a second. + */ + this.keyTimeoutLength = 500; + + /* + var: lastSearchValue + The last search string executed, or an empty string if none. + */ + this.lastSearchValue = ""; + + /* + var: lastResultsPage + The last results page. The value is only relevant if is set. + */ + this.lastResultsPage = ""; + + /* + var: deactivateTimeout + + The timeout used between when a control is deactivated and when the entire panel is deactivated. Is necessary + because a control may be deactivated in favor of another control in the same panel, in which case it should stay + active. + */ + this.deactivateTimout = 0; + + /* + var: deactivateTimeoutLength + The length of in thousandths of a second. + */ + this.deactivateTimeoutLength = 200; + + + + + // Group: DOM Elements + // ________________________________________________________________________ + + + // Function: DOMSearchField + this.DOMSearchField = function() + { return document.getElementById("MSearchField"); }; + + // Function: DOMSearchType + this.DOMSearchType = function() + { return document.getElementById("MSearchType"); }; + + // Function: DOMPopupSearchResults + this.DOMPopupSearchResults = function() + { return document.getElementById("MSearchResults"); }; + + // Function: DOMPopupSearchResultsWindow + this.DOMPopupSearchResultsWindow = function() + { return document.getElementById("MSearchResultsWindow"); }; + + // Function: DOMSearchPanel + this.DOMSearchPanel = function() + { return document.getElementById("MSearchPanel"); }; + + + + + // Group: Event Handlers + // ________________________________________________________________________ + + + /* + Function: OnSearchFieldFocus + Called when focus is added or removed from the search field. + */ + this.OnSearchFieldFocus = function(isActive) + { + this.Activate(isActive); + }; + + + /* + Function: OnSearchFieldChange + Called when the content of the search field is changed. + */ + this.OnSearchFieldChange = function() + { + if (this.keyTimeout) + { + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + }; + + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != this.lastSearchValue) + { + if (searchValue != "") + { + this.keyTimeout = setTimeout(this.name + ".Search()", this.keyTimeoutLength); + } + else + { + if (this.mode == "HTML") + { this.DOMPopupSearchResultsWindow().style.display = "none"; }; + this.lastSearchValue = ""; + }; + }; + }; + + + /* + Function: OnSearchTypeFocus + Called when focus is added or removed from the search type. + */ + this.OnSearchTypeFocus = function(isActive) + { + this.Activate(isActive); + }; + + + /* + Function: OnSearchTypeChange + Called when the search type is changed. + */ + this.OnSearchTypeChange = function() + { + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != "") + { + this.Search(); + }; + }; + + + + // Group: Action Functions + // ________________________________________________________________________ + + + /* + Function: CloseResultsWindow + Closes the results window. + */ + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = "none"; + this.Activate(false, true); + }; + + + /* + Function: Search + Performs a search. + */ + this.Search = function() + { + this.keyTimeout = 0; + + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + var searchTopic = this.DOMSearchType().value; + + var pageExtension = searchValue.substr(0,1); + + if (pageExtension.match(/^[a-z]/i)) + { pageExtension = pageExtension.toUpperCase(); } + else if (pageExtension.match(/^[0-9]/)) + { pageExtension = 'Numbers'; } + else + { pageExtension = "Symbols"; }; + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + // indexSectionsWithContent is defined in searchdata.js + if (indexSectionsWithContent[searchTopic][pageExtension] == true) + { + resultsPage = this.resultsPath + '/' + searchTopic + pageExtension + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else + { + resultsPage = this.resultsPath + '/NoResults.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + }; + + var resultsFrame; + if (this.mode == "HTML") + { resultsFrame = window.frames.MSearchResults; } + else if (this.mode == "FramedHTML") + { resultsFrame = window.top.frames['Content']; }; + + + if (resultsPage != this.lastResultsPage || + + // Bug in IE. If everything becomes hidden in a run, none of them will be able to be reshown in the next for some + // reason. It counts the right number of results, and you can even read the display as "block" after setting it, but it + // just doesn't work in IE 6 or IE 7. So if we're on the right page but the previous search had no results, reload the + // page anyway to get around the bug. + (browserType == "IE" && hasResultsPage && + (!resultsFrame.searchResults || resultsFrame.searchResults.lastMatchCount == 0)) ) + + { + resultsFrame.location.href = resultsPageWithSearch; + } + + // So if the results page is right and there's no IE bug, reperform the search on the existing page. We have to check if there + // are results because NoResults.html doesn't have any JavaScript, and it would be useless to do anything on that page even + // if it did. + else if (hasResultsPage) + { + // We need to check if this exists in case the frame is present but didn't finish loading. + if (resultsFrame.searchResults) + { resultsFrame.searchResults.Search(searchValue); } + + // Otherwise just reload instead of waiting. + else + { resultsFrame.location.href = resultsPageWithSearch; }; + }; + + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (this.mode == "HTML" && domPopupSearchResultsWindow.style.display != "block") + { + var domSearchType = this.DOMSearchType(); + + var left = GetXPosition(domSearchType); + var top = GetYPosition(domSearchType) + domSearchType.offsetHeight; + + MoveToPosition(domPopupSearchResultsWindow, left, top); + domPopupSearchResultsWindow.style.display = 'block'; + }; + + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + }; + + + + // Group: Activation Functions + // Functions that handle whether the entire panel is active or not. + // ________________________________________________________________________ + + + /* + Function: Activate + + Activates or deactivates the search panel, resetting things to their default values if necessary. You can call this on every + control's OnBlur() and it will handle not deactivating the entire panel when focus is just switching between them transparently. + + Parameters: + + isActive - Whether you're activating or deactivating the panel. + ignoreDeactivateDelay - Set if you're positive the action will deactivate the panel and thus want to skip the delay. + */ + this.Activate = function(isActive, ignoreDeactivateDelay) + { + // We want to ignore isActive being false while the results window is open. + if (isActive || (this.mode == "HTML" && this.DOMPopupSearchResultsWindow().style.display == "block")) + { + if (this.inactivateTimeout) + { + clearTimeout(this.inactivateTimeout); + this.inactivateTimeout = 0; + }; + + this.DOMSearchPanel().className = 'MSearchPanelActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == 'Search') + { searchField.value = ""; } + } + else if (!ignoreDeactivateDelay) + { + this.inactivateTimeout = setTimeout(this.name + ".InactivateAfterTimeout()", this.inactivateTimeoutLength); + } + else + { + this.InactivateAfterTimeout(); + }; + }; + + + /* + Function: InactivateAfterTimeout + + Called by , which is set by . Inactivation occurs on a timeout because a control may + receive OnBlur() when focus is really transferring to another control in the search panel. In this case we don't want to + actually deactivate the panel because not only would that cause a visible flicker but it could also reset the search value. + So by doing it on a timeout instead, there's a short period where the second control's OnFocus() can cancel the deactivation. + */ + this.InactivateAfterTimeout = function() + { + this.inactivateTimeout = 0; + + this.DOMSearchPanel().className = 'MSearchPanelInactive'; + this.DOMSearchField().value = "Search"; + + this.lastSearchValue = ""; + this.lastResultsPage = ""; + }; + }; + + + + +/* ________________________________________________________________________________________________________ + + Class: SearchResults + _________________________________________________________________________________________________________ + + The class that handles everything on the search results page. + _________________________________________________________________________________________________________ +*/ + + +function SearchResults(name, mode) + { + /* + var: mode + The mode the search is going to work in, such as "HTML" or "FramedHTML". + */ + this.mode = mode; + + /* + var: lastMatchCount + The number of matches from the last run of . + */ + this.lastMatchCount = 0; + + + /* + Function: Toggle + Toggles the visibility of the passed element ID. + */ + this.Toggle = function(id) + { + if (this.mode == "FramedHTML") + { return; }; + + var parentElement = document.getElementById(id); + + var element = parentElement.firstChild; + + while (element && element != parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'ISubIndex') + { + if (element.style.display == 'block') + { element.style.display = "none"; } + else + { element.style.display = 'block'; } + }; + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { element = element.firstChild; } + else if (element.nextSibling) + { element = element.nextSibling; } + else + { + do + { + element = element.parentNode; + } + while (element && element != parentElement && !element.nextSibling); + + if (element && element != parentElement) + { element = element.nextSibling; }; + }; + }; + }; + + + /* + Function: Search + + Searches for the passed string. If there is no parameter, it takes it from the URL query. + + Always returns true, since other documents may try to call it and that may or may not be possible. + */ + this.Search = function(search) + { + if (!search) + { + search = window.location.search; + search = search.substring(1); // Remove the leading ? + search = unescape(search); + }; + + search = search.replace(/^ +/, ""); + search = search.replace(/ +$/, ""); + search = search.toLowerCase(); + + if (search.match(/[^a-z0-9]/)) // Just a little speedup so it doesn't have to go through the below unnecessarily. + { + search = search.replace(/\_/g, "_und"); + search = search.replace(/\ +/gi, "_spc"); + search = search.replace(/\~/g, "_til"); + search = search.replace(/\!/g, "_exc"); + search = search.replace(/\@/g, "_att"); + search = search.replace(/\#/g, "_num"); + search = search.replace(/\$/g, "_dol"); + search = search.replace(/\%/g, "_pct"); + search = search.replace(/\^/g, "_car"); + search = search.replace(/\&/g, "_amp"); + search = search.replace(/\*/g, "_ast"); + search = search.replace(/\(/g, "_lpa"); + search = search.replace(/\)/g, "_rpa"); + search = search.replace(/\-/g, "_min"); + search = search.replace(/\+/g, "_plu"); + search = search.replace(/\=/g, "_equ"); + search = search.replace(/\{/g, "_lbc"); + search = search.replace(/\}/g, "_rbc"); + search = search.replace(/\[/g, "_lbk"); + search = search.replace(/\]/g, "_rbk"); + search = search.replace(/\:/g, "_col"); + search = search.replace(/\;/g, "_sco"); + search = search.replace(/\"/g, "_quo"); + search = search.replace(/\'/g, "_apo"); + search = search.replace(/\/g, "_ran"); + search = search.replace(/\,/g, "_com"); + search = search.replace(/\./g, "_per"); + search = search.replace(/\?/g, "_que"); + search = search.replace(/\//g, "_sla"); + search = search.replace(/[^a-z0-9\_]i/gi, "_zzz"); + }; + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); + + if (search.length <= rowMatchName.length && rowMatchName.substr(0, search.length) == search) + { + row.style.display = "block"; + matches++; + } + else + { row.style.display = "none"; }; + }; + + i++; + }; + + document.getElementById("Searching").style.display="none"; + + if (matches == 0) + { document.getElementById("NoMatches").style.display="block"; } + else + { document.getElementById("NoMatches").style.display="none"; } + + this.lastMatchCount = matches; + + return true; + }; + }; + diff --git a/openlayers/doc/devdocs/javascript/searchdata.js b/openlayers/doc/devdocs/javascript/searchdata.js new file mode 100644 index 0000000..f3b68be --- /dev/null +++ b/openlayers/doc/devdocs/javascript/searchdata.js @@ -0,0 +1,212 @@ +var indexSectionsWithContent = { + "General": { + "Symbols": true, + "Numbers": false, + "A": true, + "B": true, + "C": true, + "D": true, + "E": true, + "F": true, + "G": true, + "H": true, + "I": true, + "J": true, + "K": true, + "L": true, + "M": true, + "N": true, + "O": true, + "P": true, + "Q": true, + "R": true, + "S": true, + "T": true, + "U": true, + "V": true, + "W": true, + "X": true, + "Y": true, + "Z": true + }, + "Constructor": { + "Symbols": false, + "Numbers": false, + "A": true, + "B": true, + "C": true, + "D": true, + "E": true, + "F": true, + "G": true, + "H": true, + "I": true, + "J": true, + "K": true, + "L": true, + "M": true, + "N": true, + "O": true, + "P": true, + "Q": false, + "R": true, + "S": true, + "T": true, + "U": true, + "V": true, + "W": true, + "X": true, + "Y": true, + "Z": true + }, + "Functions": { + "Symbols": true, + "Numbers": false, + "A": true, + "B": true, + "C": true, + "D": true, + "E": true, + "F": true, + "G": true, + "H": true, + "I": true, + "J": false, + "K": false, + "L": true, + "M": true, + "N": true, + "O": true, + "P": true, + "Q": false, + "R": true, + "S": true, + "T": true, + "U": true, + "V": true, + "W": true, + "X": false, + "Y": false, + "Z": true + }, + "Files": { + "Symbols": false, + "Numbers": false, + "A": true, + "B": false, + "C": true, + "D": false, + "E": false, + "F": false, + "G": false, + "H": false, + "I": false, + "J": false, + "K": false, + "L": false, + "M": false, + "N": false, + "O": true, + "P": false, + "Q": false, + "R": false, + "S": false, + "T": false, + "U": false, + "V": false, + "W": true, + "X": false, + "Y": false, + "Z": false + }, + "Constants": { + "Symbols": false, + "Numbers": false, + "A": false, + "B": true, + "C": true, + "D": true, + "E": true, + "F": true, + "G": false, + "H": false, + "I": true, + "J": false, + "K": true, + "L": true, + "M": true, + "N": false, + "O": true, + "P": false, + "Q": false, + "R": true, + "S": true, + "T": true, + "U": true, + "V": true, + "W": false, + "X": true, + "Y": true, + "Z": true + }, + "Classes": { + "Symbols": false, + "Numbers": false, + "A": false, + "B": false, + "C": false, + "D": false, + "E": false, + "F": false, + "G": false, + "H": false, + "I": false, + "J": false, + "K": false, + "L": false, + "M": false, + "N": false, + "O": true, + "P": false, + "Q": false, + "R": false, + "S": false, + "T": false, + "U": true, + "V": false, + "W": false, + "X": false, + "Y": false, + "Z": false + }, + "Properties": { + "Symbols": true, + "Numbers": false, + "A": true, + "B": true, + "C": true, + "D": true, + "E": true, + "F": true, + "G": true, + "H": true, + "I": true, + "J": true, + "K": true, + "L": true, + "M": true, + "N": true, + "O": true, + "P": true, + "Q": true, + "R": true, + "S": true, + "T": true, + "U": true, + "V": true, + "W": true, + "X": true, + "Y": true, + "Z": true + } + } \ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ClassesO.html b/openlayers/doc/devdocs/search/ClassesO.html new file mode 100644 index 0000000..c7a96cd --- /dev/null +++ b/openlayers/doc/devdocs/search/ClassesO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ClassesU.html b/openlayers/doc/devdocs/search/ClassesU.html new file mode 100644 index 0000000..be02cb2 --- /dev/null +++ b/openlayers/doc/devdocs/search/ClassesU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsB.html b/openlayers/doc/devdocs/search/ConstantsB.html new file mode 100644 index 0000000..942ae51 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsB.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
BACKGROUND_ID_SUFFIX, OpenLayers.Renderer.Elements
BROWSER_EVENTS, OpenLayers.Events
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsC.html b/openlayers/doc/devdocs/search/ConstantsC.html new file mode 100644 index 0000000..6c6c3a8 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
CORNER_SIZE, OpenLayers.Popup.AnchoredBubble
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsD.html b/openlayers/doc/devdocs/search/ConstantsD.html new file mode 100644 index 0000000..44b3157 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsD.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
dataFrom, OpenLayers.Layer.PointTrack.OpenLayers.Layer.PointTrack
DEFAULT_CONFIG, OpenLayers.Request
DEFAULT_FORMAT, OpenLayers.Layer.KaMapCache
DEFAULT_OPTIONS, OpenLayers.Layer.ArcIMS
DRAG, OpenLayers.Control.ModifyFeature
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsE.html b/openlayers/doc/devdocs/search/ConstantsE.html new file mode 100644 index 0000000..ddf15e8 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsE.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsF.html b/openlayers/doc/devdocs/search/ConstantsF.html new file mode 100644 index 0000000..b1d7b37 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsF.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
FOLDER_PARAMS, OpenLayers.Layer.MapGuide
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsI.html b/openlayers/doc/devdocs/search/ConstantsI.html new file mode 100644 index 0000000..f4fcc60 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsI.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
IMAGE_EXTENSIONS, OpenLayers.Layer.KaMapCache
INTERVAL, OpenLayers.Tween
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsK.html b/openlayers/doc/devdocs/search/ConstantsK.html new file mode 100644 index 0000000..b9bb2dc --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsK.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
KEY_BACKSPACE, OpenLayers.Event
KEY_DELETE, OpenLayers.Event
KEY_DOWN, OpenLayers.Event
KEY_ESC, OpenLayers.Event
KEY_EVENTS, OpenLayers.handler.Keyboard
KEY_LEFT, OpenLayers.Event
KEY_RETURN, OpenLayers.Event
KEY_RIGHT, OpenLayers.Event
KEY_TAB, OpenLayers.Event
KEY_UP, OpenLayers.Event
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsL.html b/openlayers/doc/devdocs/search/ConstantsL.html new file mode 100644 index 0000000..b747860 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsL.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
LABEL_SHIFT, OpenLayers.Renderer.VML.OpenLayers.Renderer.VML
LABEL_VSHIFT, OpenLayers.Renderer.SVG.OpenLayers.Renderer.SVG
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsM.html b/openlayers/doc/devdocs/search/ConstantsM.html new file mode 100644 index 0000000..441d5d6 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsM.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
MAX_PIXEL, OpenLayers.Renderer.SVG
MOD_ALT, OpenLayers.Handler.OpenLayers.Handler
MOD_CTRL, OpenLayers.Handler.OpenLayers.Handler
MOD_NONE, OpenLayers.Handler.OpenLayers.Handler
MOD_SHIFT, OpenLayers.Handler.OpenLayers.Handler
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsO.html b/openlayers/doc/devdocs/search/ConstantsO.html new file mode 100644 index 0000000..9197cc2 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
OVERLAY_PARAMS, OpenLayers.Layer.MapGuide
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsR.html b/openlayers/doc/devdocs/search/ConstantsR.html new file mode 100644 index 0000000..85c16cc --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsR.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
RESHAPE, OpenLayers.Control.ModifyFeature
RESIZE, OpenLayers.Control.ModifyFeature
ROTATE, OpenLayers.Control.ModifyFeature
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsS.html b/openlayers/doc/devdocs/search/ConstantsS.html new file mode 100644 index 0000000..e7f9ccc --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
SINGLE_TILE_PARAMS, OpenLayers.Layer.MapGuide
style, OpenLayers.Feature.Vector.OpenLayers.Feature.Vector
symbol, OpenLayers.Renderer.Elements.OpenLayers.Renderer
SYMBOLIZER_PREFIXES, OpenLayers.Style.OpenLayers.Style
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsT.html b/openlayers/doc/devdocs/search/ConstantsT.html new file mode 100644 index 0000000..a742758 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsT.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
TILE_HEIGHT, OpenLayers.Map
TILE_PARAMS, OpenLayers.Layer.MapGuide
TILE_WIDTH, OpenLayers.Map
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsU.html b/openlayers/doc/devdocs/search/ConstantsU.html new file mode 100644 index 0000000..71f9680 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
URL_HASH_FACTOR, OpenLayers.Layer.HTTPRequest
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsV.html b/openlayers/doc/devdocs/search/ConstantsV.html new file mode 100644 index 0000000..4861c9d --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsV.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
VERSION_NUMBER, OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsX.html b/openlayers/doc/devdocs/search/ConstantsX.html new file mode 100644 index 0000000..88b8265 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsX.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
X, OpenLayers.Control.PanZoom
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsY.html b/openlayers/doc/devdocs/search/ConstantsY.html new file mode 100644 index 0000000..c2e5bd4 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsY.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Y, OpenLayers.Control.PanZoom
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstantsZ.html b/openlayers/doc/devdocs/search/ConstantsZ.html new file mode 100644 index 0000000..4df7215 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstantsZ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Z_INDEX_BASE, OpenLayers.Map
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorA.html b/openlayers/doc/devdocs/search/ConstructorA.html new file mode 100644 index 0000000..c721710 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Anchored, OpenLayers.Popup.Anchored.OpenLayers.Popup
AnchoredBubble, OpenLayers.Popup.AnchoredBubble.OpenLayers.Popup
ArcGIS93Rest, OpenLayers.Layer.ArcGIS93Rest.OpenLayers.Layer
ArcIMS, OpenLayers.Layer.ArcIMS.OpenLayers.Layer
ArcXML, OpenLayers.Format.ArcXML.OpenLayers.Format
ArgParser, OpenLayers.Control.ArgParser.OpenLayers.Control
Attribution, OpenLayers.Control.Attribution.OpenLayers.Control
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorB.html b/openlayers/doc/devdocs/search/ConstructorB.html new file mode 100644 index 0000000..aa8fef1 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorB.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
BBOX, OpenLayers.Strategy.BBOX.OpenLayers.Strategy
Bounds, OpenLayers.Bounds.OpenLayers
Boxes, OpenLayers.Layer.Boxes.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorC.html b/openlayers/doc/devdocs/search/ConstructorC.html new file mode 100644 index 0000000..ff18675 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Canvas, OpenLayers.Renderer.Canvas.OpenLayers.Renderer
Class, OpenLayers
Click, OpenLayers.Handler.Click.OpenLayers.Handler
Cluster, OpenLayers.Strategy.Cluster.OpenLayers.Strategy
Collection, OpenLayers.Geometry.Collection.OpenLayers.Geometry
Comparison, OpenLayers.Filter.Comparison.OpenLayers.Filter
Control, OpenLayers.Control.OpenLayers
Curve, OpenLayers.Geometry.Curve.OpenLayers.Geometry
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorD.html b/openlayers/doc/devdocs/search/ConstructorD.html new file mode 100644 index 0000000..855b7d8 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorD.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Drag, OpenLayers.Handler.Drag.OpenLayers.Handler
DragFeature, OpenLayers.Control.DragFeature.OpenLayers.Control
DrawFeature, OpenLayers.Control.DrawFeature.OpenLayers.Control
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorE.html b/openlayers/doc/devdocs/search/ConstructorE.html new file mode 100644 index 0000000..94d66a7 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorE.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
EditingToolbar, OpenLayers.Control.EditingToolbar.OpenLayers.Control
Elements, OpenLayers.Renderer.Elements.OpenLayers.Renderer
EventPane, OpenLayers.Layer.EventPane.OpenLayers.Layer
Events, OpenLayers.Events.OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorF.html b/openlayers/doc/devdocs/search/ConstructorF.html new file mode 100644 index 0000000..260bc4b --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorF.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
FeatureId, OpenLayers.Filter.FeatureId.OpenLayers.Filter
Features, OpenLayers.Format.ArcXML.Features.OpenLayers.Format.ArcXML
Fixed, OpenLayers.Strategy.Fixed.OpenLayers.Strategy
FixedZoomLevels, OpenLayers.Layer.FixedZoomLevels.OpenLayers.Layer
Format, OpenLayers.Format.OpenLayers
Framed, OpenLayers.Popup.Framed.OpenLayers.Popup
FramedCloud, OpenLayers.Popup.FramedCloud.OpenLayers.Popup
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorG.html b/openlayers/doc/devdocs/search/ConstructorG.html new file mode 100644 index 0000000..3babe7d --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorG.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Gears, OpenLayers.Protocol.SQL.Gears.OpenLayers.Protocol.SQL
GeoJSON, OpenLayers.Format.GeoJSON.OpenLayers.Format
Geometry, OpenLayers.Geometry.OpenLayers
GetFeature, OpenLayers.Control.GetFeature.OpenLayers.Control
Google, OpenLayers.Layer.Google.OpenLayers.Layer
GPX, OpenLayers.Format.GPX.OpenLayers.Format
Grid, OpenLayers.Layer.Grid.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorH.html b/openlayers/doc/devdocs/search/ConstructorH.html new file mode 100644 index 0000000..2cc96a4 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorH.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Handler, OpenLayers.Handler.OpenLayers
Hover, OpenLayers.Handler.Hover.OpenLayers.Handler
HTTP, OpenLayers.Protocol.HTTP.OpenLayers.Protocol
HTTPRequest, OpenLayers.Layer.HTTPRequest.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorI.html b/openlayers/doc/devdocs/search/ConstructorI.html new file mode 100644 index 0000000..5c9248b --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorI.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Icon, OpenLayers.Icon.OpenLayers
Image, OpenLayers.Layer.Image.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorJ.html b/openlayers/doc/devdocs/search/ConstructorJ.html new file mode 100644 index 0000000..c4fb3a5 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorJ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
JSON, OpenLayers.Format.JSON.OpenLayers.Format
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorK.html b/openlayers/doc/devdocs/search/ConstructorK.html new file mode 100644 index 0000000..50ea552 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorK.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
KaMap, OpenLayers.Layer.KaMap.OpenLayers.Layer
KaMapCache, OpenLayers.Layer.KaMapCache.OpenLayers.Layer
Keyboard, OpenLayers.handler.Keyboard.OpenLayers.Handler
KeyboardDefaults, OpenLayers.Control.KeyboardDefaults.OpenLayers.Control
KML, OpenLayers.Format.KML.OpenLayers.Format
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorL.html b/openlayers/doc/devdocs/search/ConstructorL.html new file mode 100644 index 0000000..bb1bb95 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorL.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Layer, OpenLayers.Layer.OpenLayers
LayerSwitcher, OpenLayers.Control.LayerSwitcher.OpenLayers.Control
LinearRing, OpenLayers.Geometry.LinearRing.OpenLayers.Geometry
LineString, OpenLayers.Geometry.LineString.OpenLayers.Geometry
Logical, OpenLayers.Filter.Logical.OpenLayers.Filter
LonLat, OpenLayers.LonLat.OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorM.html b/openlayers/doc/devdocs/search/ConstructorM.html new file mode 100644 index 0000000..cb13502 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorM.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Map, OpenLayers.Map.OpenLayers
MapGuide, OpenLayers.Layer.MapGuide.OpenLayers.Layer
MapServer, OpenLayers.Layer.MapServer.OpenLayers.Layer
Marker, OpenLayers.Marker.OpenLayers
Markers, OpenLayers.Layer.Markers.OpenLayers.Layer
Measure, OpenLayers.Control.Measure.OpenLayers.Control
ModifyFeature, OpenLayers.Control.ModifyFeature.OpenLayers.Control
MouseDefaults, OpenLayers.Control.MouseDefaults.OpenLayers.Control
MousePosition, OpenLayers.Control.MousePosition.OpenLayers.Control
MouseToolbar, OpenLayers.Control.MouseToolbar.OpenLayers.Control
MouseWheel, OpenLayers.Handler.MouseWheel.OpenLayers.Handler
MultiLineString, OpenLayers.Geometry.MultiLineString.OpenLayers.Geometry
MultiMap, OpenLayers.Layer.MultiMap.OpenLayers.Layer
MultiPoint, OpenLayers.Geometry.MultiPoint.OpenLayers.Geometry
MultiPolygon, OpenLayers.Geometry.MultiPolygon.OpenLayers.Geometry
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorN.html b/openlayers/doc/devdocs/search/ConstructorN.html new file mode 100644 index 0000000..0c25595 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorN.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Navigation, OpenLayers.Control.Navigation.OpenLayers.Control
NavigationHistory, OpenLayers.Control.NavigationHistory.OpenLayers.Control
NavToolbar, OpenLayers.Control.NavToolbar.OpenLayers.Control
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorO.html b/openlayers/doc/devdocs/search/ConstructorO.html new file mode 100644 index 0000000..1358955 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
OverviewMap, OpenLayers.Control.OverviewMap.OpenLayers.Control
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorP.html b/openlayers/doc/devdocs/search/ConstructorP.html new file mode 100644 index 0000000..f8c2dbd --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorP.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Paging, OpenLayers.Strategy.Paging.OpenLayers.Strategy
Pan, OpenLayers.Control.Pan.OpenLayers.Control
Panel, OpenLayers.Control.Panel.OpenLayers.Control
PanPanel, OpenLayers.Control.PanPanel.OpenLayers.Control
PanZoom, OpenLayers.Control.PanZoom.OpenLayers.Control
PanZoomBar, OpenLayers.Control.PanZoomBar.OpenLayers.Control
Path, OpenLayers.Handler.Path.OpenLayers.Handler
Pixel, OpenLayers.Pixel.OpenLayers
PointTrack, OpenLayers.Layer.PointTrack.OpenLayers
Popup, OpenLayers.Popup.OpenLayers
Projection, OpenLayers.Projection.OpenLayers
Protocol, OpenLayers.Protocol.OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorR.html b/openlayers/doc/devdocs/search/ConstructorR.html new file mode 100644 index 0000000..4448b77 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorR.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Rectangle, OpenLayers.Geometry.Rectangle.OpenLayers.Geometry
RegularPolygon, OpenLayers.Handler.RegularPolygon.OpenLayers.Handler
Renderer, OpenLayers.Renderer.OpenLayers
Request, OpenLayers.Ajax.Request.OpenLayers.Ajax
RootContainer, OpenLayers.Layer.Vector.RootContainer.OpenLayers.Layer.Vector
Rule, OpenLayers.Rule.OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorS.html b/openlayers/doc/devdocs/search/ConstructorS.html new file mode 100644 index 0000000..f9df021 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Save, OpenLayers.Strategy.Save.OpenLayers.Strategy
Scale, OpenLayers.Control.Scale.OpenLayers.Control
ScaleLine, OpenLayers.Control.ScaleLine.OpenLayers.Control
SelectFeature, OpenLayers.Control.SelectFeature.OpenLayers.Control
Size, OpenLayers.Size.OpenLayers
SLD, OpenLayers.Format.SLD.OpenLayers.Format
Snapping, OpenLayers.Control.Snapping.OpenLayers.Control
Spatial, OpenLayers.Filter.Spatial.OpenLayers.Filter
Split, OpenLayers.Control.Split.OpenLayers.Control
SQL, OpenLayers.Protocol.SQL.OpenLayers.Protocol
Strategy, OpenLayers.Strategy.OpenLayers
Style, OpenLayers.Style.OpenLayers
StyleMap, OpenLayers.StyleMap.OpenLayers
SVG, OpenLayers.Renderer.SVG.OpenLayers.Renderer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorT.html b/openlayers/doc/devdocs/search/ConstructorT.html new file mode 100644 index 0000000..7fc9f3b --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorT.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
TileCache, OpenLayers.Layer.TileCache.OpenLayers.Layer
TMS, OpenLayers.Layer.TMS.OpenLayers.Layer
Tween, OpenLayers.Tween.OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorU.html b/openlayers/doc/devdocs/search/ConstructorU.html new file mode 100644 index 0000000..a798a6e --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorV.html b/openlayers/doc/devdocs/search/ConstructorV.html new file mode 100644 index 0000000..f39ff43 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorV.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
v1_1_1, OpenLayers.Format.WMSCapabilities/v1_1_1.OpenLayers.Format.WMSCapabilities
v2, OpenLayers.Format.GML.v2.OpenLayers.Format.GML
v3, OpenLayers.Format.GML.v3.OpenLayers.Format.GML
VirtualEarth, OpenLayers.Layer.VirtualEarth.OpenLayers.Layer
VML, OpenLayers.Renderer.VML.OpenLayers.Renderer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorW.html b/openlayers/doc/devdocs/search/ConstructorW.html new file mode 100644 index 0000000..04b57ba --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorW.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
WFSCapabilities, OpenLayers.Format.WFSCapabilities.OpenLayers.Format
WFSDescribeFeatureType, OpenLayers.Format
WKT, OpenLayers.Format.WKT.OpenLayers.Format
WMC, OpenLayers.Format.WMC.OpenLayers.Format
WMS, OpenLayers.Layer.WMS.OpenLayers.Layer
WMSCapabilities, OpenLayers.Format.WMSCapabilities.OpenLayers.Format
WMSGetFeatureInfo, OpenLayers.Format.WMSGetFeatureInfo.OpenLayers.Format
WMSGetFeatureInfo>, OpenLayers.Control.WMSGetFeatureInfo.<OpenLayers.Control
WorldWind, OpenLayers.Layer.WorldWind.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorX.html b/openlayers/doc/devdocs/search/ConstructorX.html new file mode 100644 index 0000000..a791218 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorX.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
XML, OpenLayers.Format.XML.OpenLayers.Format
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorY.html b/openlayers/doc/devdocs/search/ConstructorY.html new file mode 100644 index 0000000..ef24dd5 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorY.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Yahoo, OpenLayers.Layer.Yahoo.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/ConstructorZ.html b/openlayers/doc/devdocs/search/ConstructorZ.html new file mode 100644 index 0000000..e0c5cd0 --- /dev/null +++ b/openlayers/doc/devdocs/search/ConstructorZ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
ZoomPanel, OpenLayers.Control.ZoomPanel.OpenLayers.Control
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FilesA.html b/openlayers/doc/devdocs/search/FilesA.html new file mode 100644 index 0000000..b7e0f36 --- /dev/null +++ b/openlayers/doc/devdocs/search/FilesA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FilesC.html b/openlayers/doc/devdocs/search/FilesC.html new file mode 100644 index 0000000..2464f78 --- /dev/null +++ b/openlayers/doc/devdocs/search/FilesC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FilesO.html b/openlayers/doc/devdocs/search/FilesO.html new file mode 100644 index 0000000..70d8d92 --- /dev/null +++ b/openlayers/doc/devdocs/search/FilesO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FilesW.html b/openlayers/doc/devdocs/search/FilesW.html new file mode 100644 index 0000000..32ff9e1 --- /dev/null +++ b/openlayers/doc/devdocs/search/FilesW.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsA.html b/openlayers/doc/devdocs/search/FunctionsA.html new file mode 100644 index 0000000..e0fb03f --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
activateControl, OpenLayers.Control.Panel
addClass, OpenLayers.Element
addCloseBox, OpenLayers.Popup
addComponents, OpenLayers.Geometry.Collection
addContainerPxFunction, OpenLayers.Layer.Google
addControl, OpenLayers.Map
addControls, OpenLayers.Control.Panel
addControlToMap, OpenLayers.Map
addCoordSys, OpenLayers.Format.ArcXML
addEventType, OpenLayers.Events
addFeatures, OpenLayers.Layer.Vector
addImageSize, OpenLayers.Format.ArcXML
addLayer, OpenLayers.Map
addMarker, OpenLayers.Layer.Markers
addNodes, OpenLayers.Layer.PointTrack
addOptions, OpenLayers.Layer
addPopup, OpenLayers.Map
addPropertyStyles, OpenLayers.Style
addResults, OpenLayers.Tile.WFS
addRules, OpenLayers.Style
addTarget, OpenLayers.Control.Snapping
addTargetLayer, OpenLayers.Control.Snapping
addToCluster, OpenLayers.Strategy.Cluster
addTransform, OpenLayers.Projection
addUniqueValueRules, OpenLayers.StyleMap
adjustBounds, OpenLayers.Layer
afterFeatureModified, OpenLayers.Control.Split
alphaHack, Util
applySymbolizer, OpenLayers.Style
array, OpenLayers.Format.JSON.serialize
assert, OpenLayers.Console
assignRenderer, OpenLayers.Layer.Vector
attachToElement, OpenLayers.Events
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsB.html b/openlayers/doc/devdocs/search/FunctionsB.html new file mode 100644 index 0000000..6642b87 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsB.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
baseLayerDraw, OpenLayers.Control.OverviewMap
beforeSelectFeature, OpenLayers.Control.ModifyFeature
boolean, OpenLayers.Format.JSON.serialize
bounds, OpenLayers.Format.GML.buildGeometry
box, OpenLayers.Format.GeoJSON.parseCoords
buildCoordinates, OpenLayers.Format.GML
buttonUp, OpenLayers.Control.MouseToolbar
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsC.html b/openlayers/doc/devdocs/search/FunctionsC.html new file mode 100644 index 0000000..39fa3db --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
calculateAngle, OpenLayers.Handler.RegularPolygon
calculateInRange, OpenLayers.Layer
calculateRelativePosition, OpenLayers.Popup.Anchored
centerLayerContainer, OpenLayers.Map
checkImgURL, OpenLayers.Tile.Image
checkModifiers, OpenLayers.Handler
checkRedraw, OpenLayers.Control.LayerSwitcher
clearBounds, OpenLayers.Geometry
clearGrid, OpenLayers.Layer.Grid
clearLayerFilter, OpenLayers.Layer.ArcGIS93Rest
clearLayersArray, OpenLayers.Control.LayerSwitcher
clearMarkers, OpenLayers.Layer.Markers
clearMouseCache, OpenLayers.Events
clearMouseListener, OpenLayers.Events
clickFeature, OpenLayers.Control.SelectFeature
clickoutFeature, OpenLayers.Control.SelectFeature
clipLine, OpenLayers.Renderer.SVG
cluster, OpenLayers.Strategy.Cluster
clustersExist, OpenLayers.Strategy.Cluster
collectDragHandle, OpenLayers.Control.ModifyFeature
collectRadiusHandle, OpenLayers.Control.ModifyFeature
collectRoots, OpenLayers.Layer.Vector.RootContainer
collectVertices, OpenLayers.Control.ModifyFeature
commitFailure, OpenLayers.Layer.WFS
commitReport, OpenLayers.Layer.WFS
commitSuccess, OpenLayers.Layer.WFS
concatChildValues, OpenLayers.Format.XML
configureLayers, OpenLayers.Control.ArgParser
considerSnapping, OpenLayers.Control.Snapping
considerSplit, OpenLayers.Control.Split
containsBounds, OpenLayers.Bounds
containsLonLat, OpenLayers.Bounds
containsPixel, OpenLayers.Bounds
contentType, OpenLayers.Format.XML
contextToMap, OpenLayers.Format.WMC
count, OpenLayers.Console
createBlocks, OpenLayers.Popup.Framed
createCluster, OpenLayers.Strategy.Cluster
createCRSObject, OpenLayers.Format.GeoJSON
createDefs, OpenLayers.Renderer.SVG
createDiv, Util
createdOffline, OpenLayers.Protocol.SQL.Gears
createElementDefaultNS, OpenLayers.Format.WMC.v1
createElementNS, OpenLayers.Format.XML
createElementNSPlus, OpenLayers.Format.XML
createFeatureFromItem, OpenLayers.Format.GeoRSS
createFeatureNodes, OpenLayers.Format.OSM
createFilter, OpenLayers.Strategy.BBOX
createFolderXML, OpenLayers.Format.KML
createGeometry, OpenLayers.Handler.RegularPolygon
createGeometryFromItem, OpenLayers.Format.GeoRSS
createLiteral, OpenLayers.Style
createLiterals, OpenLayers.Style
createMap, OpenLayers.Control.OverviewMap
createOLPropertyNode, OpenLayers.Format.WMC.v1
createOrUpdate, OpenLayers.Protocol.SQL.Gears
createParams, OpenLayers.Control.Permalink
createPlacemarkXML, OpenLayers.Format.KML
createRegularPolygon, OpenLayers.Geometry.Polygon
createTextNode, OpenLayers.Format.XML
createXML, OpenLayers.Format.OSM
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsD.html b/openlayers/doc/devdocs/search/FunctionsD.html new file mode 100644 index 0000000..a80e390 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsD.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
debug, OpenLayers.Console
defaultDblRightClick, OpenLayers.Control.Navigation
defaultIcon, OpenLayers.Marker
defaultKeyPress, OpenLayers.Control.KeyboardDefaults
defaultWheelDown, OpenLayers.Control.MouseDefaults
defaultWheelUp, OpenLayers.Control.MouseDefaults
delayedRightCall, OpenLayers.Handler.Click
DELETE, OpenLayers.Request
destroy
OpenLayers.ControlOpenLayers.Control.AttributionOpenLayers.Control.DragFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.OverviewMapOpenLayers.Control.PanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.SelectFeatureOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Feature.WFSOpenLayers.FilterOpenLayers.Filter.LogicalOpenLayers.FormatOpenLayers.Format.WFSOpenLayers.Format.XMLOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.HandlerOpenLayers.handler.KeyboardOpenLayers.Handler.MouseWheelOpenLayers.IconOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.EventPaneOpenLayers.Layer.GeoRSSOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.MarkersOpenLayers.Layer.TextOpenLayers.Layer.VectorOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.MapOpenLayers.MarkerOpenLayers.Marker.BoxOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProjectionOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.RendererOpenLayers.Renderer.ElementsOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RuleOpenLayers.StrategyOpenLayers.Strategy.FixedOpenLayers.StyleOpenLayers.StyleMapOpenLayers.TileOpenLayers.Tile.ImageOpenLayers.Tile.WFS
destroyAllFeatures, OpenLayers.Tile.WFS
destroyFeatures, OpenLayers.Layer.Vector
determineQuadrant, OpenLayers.Bounds
determineZIndex, OpenLayers.ElementsIndexer
dir, OpenLayers.Console
dirxml, OpenLayers.Console
disableZoomWheel, OpenLayers.Control.Navigation
dispatch, OpenLayers.Ajax.Responders
dispatchException, OpenLayers.Ajax.Request
displayError, OpenLayers.Layer.Vector
distanceToSegment, OpenLayers.Geometry.OpenLayers.Geometry
divClick, OpenLayers.Control.PanZoomBar
doneDragging, OpenLayers.Control.DragFeature
doubleClick, OpenLayers.Control.PanZoom
downFeature, OpenLayers.Control.DragFeature
dragComplete, OpenLayers.Control.ModifyFeature
dragStart, OpenLayers.Control.ModifyFeature
dragVertex, OpenLayers.Control.ModifyFeature
drawExternalGraphic, OpenLayers.Renderer.Canvas
drawGeometryNode, OpenLayers.Renderer.Elements
DrawLine, OpenLayers.Renderer.VML
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsE.html b/openlayers/doc/devdocs/search/FunctionsE.html new file mode 100644 index 0000000..56f172c --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsE.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsF.html b/openlayers/doc/devdocs/search/FunctionsF.html new file mode 100644 index 0000000..56e6ace --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsF.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
feature, OpenLayers.Format.GeoJSON.extract
filter, OpenLayers.Array
filterDelete, OpenLayers.Protocol.WFS.v1
findElement, OpenLayers.Event
findLayers, OpenLayers.Control.WMSGetFeatureInfo
findPropertyStyles, OpenLayers.Style
fixPadding, OpenLayers.Popup
fixYahooEventPane, OpenLayers.Layer.Yahoo
formatOutput, OpenLayers.Control.MousePosition
forwardMercator, OpenLayers.Layer.SphericalMercator
freehandMode, OpenLayers.Handler.Path
freezeFeature, OpenLayers.Protocol.SQL.Gears
fromArray, OpenLayers.Bounds
fromSize, OpenLayers.Bounds
fromWKT, OpenLayers.Geometry.OpenLayers.Geometry
fromWMSLayer, OpenLayers.Protocol.WFS
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsG.html b/openlayers/doc/devdocs/search/FunctionsG.html new file mode 100644 index 0000000..8857271 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsG.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
geometry, OpenLayers.Format.GeoJSON.extract
geometryClone, OpenLayers.Handler.Point
geometryTypeMatches, OpenLayers.Handler.Feature
geomsToFeatures, OpenLayers.Control.Split
GET, OpenLayers.Request
getArgs, Util
getAttributeNodeNS, OpenLayers.Format.XML
getAttributeNS, OpenLayers.Format.XML
getBarLen, OpenLayers.Control.ScaleLine
getBestArea, OpenLayers.Control.Measure
getBestLength, OpenLayers.Control.Measure
getBounds, OpenLayers.Geometry
getBoundsFromBaseLayer, OpenLayers.Tile
getBy, OpenLayers.Map
getCenter, OpenLayers.Map
getCenterLonLat, OpenLayers.Bounds
getCenterPixel, OpenLayers.Bounds
getCharacteristics, OpenLayers.Handler.Box
getChildEl, OpenLayers.Format.XML
getComponentsString, OpenLayers.Geometry.Collection
getComponentString, OpenLayers.Renderer.SVG
getContentDivPadding, OpenLayers.Popup
getContext, OpenLayers.Rule
getControl, OpenLayers.Map
getControlsByName, OpenLayers.Control.Panel
getCornersToRound, OpenLayers.Popup.AnchoredBubble
getCssProperty, OpenLayers.Format.SLD.v1
getCurrentSize, OpenLayers.Map
getDimensions, OpenLayers.Element
getFeatureById, OpenLayers.Layer.Vector
getFeatureInfo, OpenLayers.Layer.ArcIMS
getFeatureStateForFreeze, OpenLayers.Protocol.SQL.Gears
getFilterType, OpenLayers.Format.Filter.v1
getGeoTolerance, OpenLayers.Control.Snapping
getGraphicFormat, OpenLayers.Format.SLD.v1
getGridBounds, OpenLayers.Layer.Grid
getImageFilePath, OpenLayers.Layer.MapGuide
getImageSize, OpenLayers.Layer
getInfoForClick, OpenLayers.Control.WMSGetFeatureInfo
getInfoForHover, OpenLayers.Control.WMSGetFeatureInfo
getLayer, OpenLayers.Map
getLayerFromInfo, OpenLayers.Format.WMC.v1
getLayerIndex, OpenLayers.Map
getLayerPxFromLonLat, OpenLayers.Map
getLayerPxFromViewPortPx, OpenLayers.Map
getLayersBy, OpenLayers.Map
getLayersByClass, OpenLayers.Map
getLayersByName, OpenLayers.Map
getLocalXY, OpenLayers.Renderer.Canvas
getLonLatFromLayerPx, OpenLayers.Map
getLonLatFromOverviewPx, OpenLayers.Control.OverviewMap
getLonLatFromPixel, OpenLayers.Map
getMapBounds, OpenLayers.Strategy.BBOX
getMapBoundsFromRectBounds, OpenLayers.Control.OverviewMap
getMapObjectBoundsFromOLBounds, OpenLayers.Layer.Google
getMapObjectLonLatFromOLLonLat, OpenLayers.Layer.EventPane
getMapObjectPixelFromOLPixel, OpenLayers.Layer.EventPane
getMapObjectSizeFromOLSize, OpenLayers.Layer.Yahoo
getMapObjectZoomFromMapObjectBounds, OpenLayers.Layer.Google
getMaxExtent, OpenLayers.Map
getMaxResolution, OpenLayers.Map
getMousePosition, OpenLayers.Events
getNamespacePrefix, OpenLayers.Format.WMC.v1
getNextEl, OpenLayers.Format.XML
getNextElement, OpenLayers.ElementsIndexer
getNumLayers, OpenLayers.Map
getNumZoomLevels, OpenLayers.Map
getOLBoundsFromMapObjectBounds, OpenLayers.Layer.Google
getOLLonLatFromMapObjectLonLat, OpenLayers.Layer.EventPane
getOLPixelFromMapObjectPixel, OpenLayers.Layer.EventPane
getOverviewPxFromLonLat, OpenLayers.Control.OverviewMap
getPixelFromLonLat, OpenLayers.Map
getPosition, OpenLayers.Renderer.SVG
getProjection, OpenLayers.Map
getProjectionObject, OpenLayers.Map
getRectBoundsFromMapBounds, OpenLayers.Control.OverviewMap
getResponseHeader, OpenLayers.Ajax.Response
getSafeContentSize, OpenLayers.Popup
getScale, OpenLayers.Map
getShortString, OpenLayers.Renderer.SVG
getSiblingNodesByTagCriteria, OpenLayers.Format.WMSGetFeatureInfo
getSortedSegments, OpenLayers.Geometry.LineString
getSrsName, OpenLayers.Format.WFST.v1
getStatustext, OpenLayers.Ajax.Response
getSymbolizerPrefix, OpenLayers.Style
getTags, OpenLayers.Format.OSM
getThisOrNextEl, OpenLayers.Format.XML
getTilesBounds, OpenLayers.Layer.Grid
getTileSize, OpenLayers.Map
getTransport, OpenLayers.Ajax
getUrl, OpenLayers.Layer.XYZ
getURLasync, OpenLayers.Layer.ArcIMS
getUrlOrImage, OpenLayers.Layer.ArcIMS
getViewPortPxFromLayerPx, OpenLayers.Map
getVisibility, OpenLayers.Layer
getWays, OpenLayers.Format.OSM
getWidth, OpenLayers.Bounds
graphicRotate, OpenLayers.Renderer.VML
group, OpenLayers.Console
groupEnd, OpenLayers.Console
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsH.html b/openlayers/doc/devdocs/search/FunctionsH.html new file mode 100644 index 0000000..5376c91 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsH.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
handle, OpenLayers.Handler.Feature
handleBrowserEvent, OpenLayers.Events
handleChangeLayer, OpenLayers.Layer.Vector.RootContainer
handleCommit, OpenLayers.Protocol.WFS.v1
handleCreate, OpenLayers.Protocol.HTTP
handleDelete, OpenLayers.Protocol.HTTP
handleKeyEvent, OpenLayers.handler.Keyboard
handleKeypress, OpenLayers.Control.ModifyFeature
handleUpdate, OpenLayers.Protocol.HTTP
hasAttributeNS, OpenLayers.Format.XML
hasClass, OpenLayers.Element
HEAD, OpenLayers.Request
highlight, OpenLayers.Control.SelectFeature
hoverSelect, OpenLayers.Control.GetFeature
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsI.html b/openlayers/doc/devdocs/search/FunctionsI.html new file mode 100644 index 0000000..f584fa1 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsI.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
i18n, OpenLayers.Lang.OpenLayers
ignoreEvent, OpenLayers.Control.LayerSwitcher
indexOf, Util
inflate, OpenLayers.Marker
info, OpenLayers.Console
initGriddedTiles, OpenLayers.Layer.Grid
initialize, OpenLayers.ElementsIndexer
initializeDatabase, OpenLayers.Protocol.SQL.Gears
initImgDiv, OpenLayers.Tile.Image
initMercatorParameters, OpenLayers.Layer.SphericalMercator
initSingleTile, OpenLayers.Layer.Grid
initStack, OpenLayers.Control.NavigationHistory
intersectsBounds, OpenLayers.Bounds
invalidBounds, OpenLayers.Strategy.BBOX
inValidRange, OpenLayers.Renderer.SVG
inverseMercator, OpenLayers.Layer.SphericalMercator
isComplexSymbol, OpenLayers.Renderer.Elements
isEligible, OpenLayers.Control.Split
iserror, OpenLayers.Format.ArcXML
isLeftClick, OpenLayers.Event
isNumeric, OpenLayers.String.OpenLayers.String
isRightClick, OpenLayers.Event
isSimpleContent, OpenLayers.Format.XML
issue, OpenLayers.Request
isSuitableOverview, OpenLayers.Control.OverviewMap
isValidLonLat, OpenLayers.Map
isValidType, OpenLayers.Format.GeoJSON
isValidZoomLevel, OpenLayers.Map
isWayArea, OpenLayers.Format.OSM
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsL.html b/openlayers/doc/devdocs/search/FunctionsL.html new file mode 100644 index 0000000..6d82a74 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsL.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
leaveMode, OpenLayers.Control.MouseToolbar
load, OpenLayers.Strategy.Fixed
loadContents, OpenLayers.Control.LayerSwitcher
loadFeaturesForRegion, OpenLayers.Tile.WFS
loadGML, OpenLayers.Layer.GML
loadRSS, OpenLayers.Layer.GeoRSS
loadText, OpenLayers.Layer.Text
loadWarningMessage, OpenLayers.Layer.EventPane
log, OpenLayers.Console
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsM.html b/openlayers/doc/devdocs/search/FunctionsM.html new file mode 100644 index 0000000..702888e --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsM.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
mapDivClick, OpenLayers.Control.OverviewMap
mapToContext, OpenLayers.Format.WMC
markerClick, OpenLayers.Layer.GeoRSS
measure, OpenLayers.Control.Measure
measureComplete, OpenLayers.Control.Measure
measurePartial, OpenLayers.Control.Measure
mergeContextToMap, OpenLayers.Format.WMC
modifyGeometry, OpenLayers.Handler.RegularPolygon
mouseDown, OpenLayers.Control.LayerSwitcher
mouseLeft, Util
mouseUp, OpenLayers.Control.LayerSwitcher
moveBox, OpenLayers.Handler.Box
moveFeature, OpenLayers.Control.DragFeature
moveGriddedTiles, OpenLayers.Layer.Grid
moveLayerBack, OpenLayers.Handler.Feature
moveLayerToTop, OpenLayers.Handler.Feature
moveZoomBar, OpenLayers.Control.PanZoomBar
multigeometry, OpenLayers.Format.KML.parseGeometry
multipleSelect, OpenLayers.Control.SelectFeature
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsN.html b/openlayers/doc/devdocs/search/FunctionsN.html new file mode 100644 index 0000000..959a713 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsN.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
nextTrigger, OpenLayers.Control.NavigationHistory
nodeFactory, OpenLayers.Renderer.Elements
nullHandler, OpenLayers
number, OpenLayers.Format.JSON.serialize
numericIf, OpenLayers.String
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsO.html b/openlayers/doc/devdocs/search/FunctionsO.html new file mode 100644 index 0000000..eff82f0 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
object, OpenLayers.Format.JSON.serialize
observe, OpenLayers.Event
offset, OpenLayers.Pixel
on, OpenLayers.Events
onclick, OpenLayers.Popup
onClick, OpenLayers.Control.Panel
onCommit, OpenLayers.Strategy.Save
onComplete, OpenLayers.Ajax.Responders
onCreate, OpenLayers.Ajax.Responders
ondblclick, OpenLayers.Popup
onFeatureInsert, OpenLayers.Layer.Vector
onLayerClick, OpenLayers.Control.LayerSwitcher
onmousedown, OpenLayers.Popup
onmousemove, OpenLayers.Popup
onmouseout, OpenLayers.Popup
onmouseup, OpenLayers.Popup
onNextChange, OpenLayers.Control.NavigationHistory
onPreviousChange, OpenLayers.Control.NavigationHistory
onSketchComplete, OpenLayers.Control.Split
onSketchModified, OpenLayers.Control.Snapping
onStateChange, OpenLayers.Ajax.Request
onVertexModified, OpenLayers.Control.Snapping
oppositeQuadrant, OpenLayers.Bounds
OPTIONS, OpenLayers.Request
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsP.html b/openlayers/doc/devdocs/search/FunctionsP.html new file mode 100644 index 0000000..9cbe412 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsP.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
page, OpenLayers.Strategy.Paging
pageCount, OpenLayers.Strategy.Paging
pageLength, OpenLayers.Strategy.Paging
pageNext, OpenLayers.Strategy.Paging
pageNum, OpenLayers.Strategy.Paging
pagePrevious, OpenLayers.Strategy.Paging
pan, OpenLayers.Map
panIntoView, OpenLayers.Popup
panMap, OpenLayers.Control.DragPan
panMapDone, OpenLayers.Control.DragPan
panTo, OpenLayers.Map
parseEnvelope, OpenLayers.Format.ArcXML
parseExtendedData, OpenLayers.Format.KML
parsePointGeometry, OpenLayers.Format.ArcXML
parseProperty, OpenLayers.Format.KML
parseResponse, OpenLayers.Format.ArcXML
parseStyle, OpenLayers.Format.KML
parseStyleMaps, OpenLayers.Format.KML
parseStyles, OpenLayers.Format.KML
passEventToSlider, OpenLayers.Control.PanZoomBar
pixelToBounds, OpenLayers.Control.GetFeature
play, OpenLayers.Tween
positionImage, OpenLayers.Tile.Image
POST, OpenLayers.Request
preFeatureInsert, OpenLayers.Layer.Vector
previousTrigger, OpenLayers.Control.NavigationHistory
processXMLNode, OpenLayers.Feature.WFS
profile, OpenLayers.Console
profileEnd, OpenLayers.Console
projectForward, OpenLayers.Layer.SphericalMercator
projectInverse, OpenLayers.Layer.SphericalMercator
PUT, OpenLayers.Request
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsR.html b/openlayers/doc/devdocs/search/FunctionsR.html new file mode 100644 index 0000000..76d222e --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsR.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
rad, Util
raiseLayer, OpenLayers.Map
read_cap_Capability, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_DCPType, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_FeatureType, OpenLayers.Format.WFSCapabilities.v1
read_cap_FeatureTypeList, OpenLayers.Format.WFSCapabilities.v1
read_cap_Format, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_GetMap, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_LatLonBoundingBox, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_Layer, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_LegendURL, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_OnlineResource, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_Request, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_ScaleHint, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_Service, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_Style, OpenLayers.Format.WMSCapabilities.v1_1
read_FeatureInfoResponse, OpenLayers.Format.WMSGetFeatureInfo
read_msGMLOutput, OpenLayers.Format.WMSGetFeatureInfo
read_ol_displayInLayerSwitcher, OpenLayers.Format.WMC.v1
read_ol_isBaseLayer, OpenLayers.Format.WMC.v1
read_ol_maxExtent, OpenLayers.Format.WMC.v1
read_ol_numZoomLevels, OpenLayers.Format.WMC.v1
read_ol_opacity, OpenLayers.Format.WMC.v1
read_ol_singleTile, OpenLayers.Format.WMC.v1
read_ol_transparent, OpenLayers.Format.WMC.v1
read_ol_units, OpenLayers.Format.WMC.v1
read_sld_MaxScaleDenominator, OpenLayers.Format.WMC.v1_1_0
read_sld_MinScaleDenominator, OpenLayers.Format.WMC.v1_1_0
read_sld_StyledLayerDescriptor, OpenLayers.Format.WMC.v1
read_wmc_Abstract, OpenLayers.Format.WMC.v1
read_wmc_BoundingBox, OpenLayers.Format.WMC.v1
read_wmc_Extension, OpenLayers.Format.WMC.v1
read_wmc_Format, OpenLayers.Format.WMC.v1
read_wmc_FormatList, OpenLayers.Format.WMC.v1
read_wmc_General, OpenLayers.Format.WMC.v1
read_wmc_LatLonBoundingBox, OpenLayers.Format.WMC.v1
read_wmc_Layer, OpenLayers.Format.WMC.v1
read_wmc_LayerList, OpenLayers.Format.WMC.v1
read_wmc_LegendURL, OpenLayers.Format.WMC.v1
read_wmc_MetadataURL, OpenLayers.Format.WMC.v1
read_wmc_Name, OpenLayers.Format.WMC.v1
read_wmc_OnlineResource, OpenLayers.Format.WMC.v1
read_wmc_Server, OpenLayers.Format.WMC.v1
read_wmc_SLD, OpenLayers.Format.WMC.v1
read_wmc_Style, OpenLayers.Format.WMC.v1
read_wmc_StyleList, OpenLayers.Format.WMC.v1
read_wmc_Title, OpenLayers.Format.WMC.v1
readChildNodes, OpenLayers.Format.XML
readNode, OpenLayers.Format.XML
readOgcExpression, OpenLayers.Format.Filter.v1
readSpatial, OpenLayers.Format.Filter.v1
rectDrag, OpenLayers.Control.OverviewMap
redrawBackgroundNode, OpenLayers.Renderer.Elements
redrawNode, OpenLayers.Renderer.Elements
regex2value, OpenLayers.Filter.Comparison
registerEvents, OpenLayers.Popup
registerImageListeners, OpenLayers.Popup
registerPriority, OpenLayers.Events
registerWheelEvents, OpenLayers.Control.MouseDefaults
removeBox, OpenLayers.Handler.Box
removeButtons, OpenLayers.Control.PanZoom
removeByGeometry, OpenLayers.Control.Split
removeClass, OpenLayers.Element
removeComponents, OpenLayers.Geometry.Collection
removeControl, OpenLayers.Map
removeExcessTiles, OpenLayers.Layer.Grid
removeFeatures, OpenLayers.Layer.Vector
removeLayer, OpenLayers.Map
removePopup, OpenLayers.Map
removeTarget, OpenLayers.Control.Snapping
removeTargetLayer, OpenLayers.Control.Snapping
removeTimeout, OpenLayers.Handler.Drag
removeZoomBox, OpenLayers.Control.MouseDefaults
render, OpenLayers.Map
renderTile, OpenLayers.Tile.Image
requestFailure, OpenLayers.Layer.GML
resetBackBuffer, OpenLayers.Tile.Image
resetLayersZIndex, OpenLayers.Map
resetRoots, OpenLayers.Layer.Vector.RootContainer
resetVertices, OpenLayers.Control.ModifyFeature
respondToReadyState, OpenLayers.Ajax.Request
restore, OpenLayers.Control.NavigationHistory
rightclick, OpenLayers.Handler.Click
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsS.html b/openlayers/doc/devdocs/search/FunctionsS.html new file mode 100644 index 0000000..bf85f20 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
save, OpenLayers.Strategy.Save
scale, OpenLayers.Bounds
schemaLocationAttr, OpenLayers.Format.WFST.v1
segmentsIntersect, OpenLayers.Geometry.OpenLayers.Geometry
selectBestFeature, OpenLayers.Control.GetFeature
selectFeature, OpenLayers.Control.ModifyFeature
selectSingle, OpenLayers.Control.GetFeature
selectUrl, OpenLayers.Layer.HTTPRequest
serializeTags, OpenLayers.Format.OSM
serializeXMLToString, OpenLayers.Ajax.Response
setAttributeNS, OpenLayers.Format.XML
setBaseLayer, OpenLayers.Map
setCanvasStyle, OpenLayers.Renderer.Canvas
setCode, OpenLayers.Lang
setContentHTML, OpenLayers.Popup
setDefaultStyle, OpenLayers.Style
setEvent, OpenLayers.Handler
setFeatureState, OpenLayers.Control.ModifyFeature
setFilterProperty, OpenLayers.Format.WFST.v1
setIsBaseLayer, OpenLayers.Layer
setLayerFilter, OpenLayers.Layer.ArcGIS93Rest
setLayerIndex, OpenLayers.Map
setLayerQuery, OpenLayers.Layer.ArcIMS
setLayerZIndex, OpenLayers.Map
setListeners, OpenLayers.Control.NavigationHistory
setMapType, OpenLayers.Layer.Google
setModifiers, OpenLayers.Control.GetFeature
setName, OpenLayers.Layer
setNamespace, OpenLayers.Format.XML
setNodeDimension, OpenLayers.Renderer.VML
setRectPxBounds, OpenLayers.Control.OverviewMap
setRequestHeaders, OpenLayers.Ajax.Request
setRicoCorners, OpenLayers.Popup.AnchoredBubble
setSource, OpenLayers.Control.Split
setState, OpenLayers.Format.OSM
setTargets, OpenLayers.Control.Snapping
shiftColumn, OpenLayers.Layer.Grid
shiftRow, OpenLayers.Layer.Grid
shouldCluster, OpenLayers.Strategy.Cluster
showControls, OpenLayers.Control.LayerSwitcher
showTile, OpenLayers.Tile
showToggle, OpenLayers.Control.OverviewMap
spiralTileLoad, OpenLayers.Layer.Grid
splitWithSegment, OpenLayers.Geometry.LineString
start, OpenLayers.Tween
startBox, OpenLayers.Handler.Box
startTransition, OpenLayers.Tile.Image
stopObserving, OpenLayers.Event
stopObservingElement, OpenLayers.Event
string, OpenLayers.Format.JSON.serialize
switchModeTo, OpenLayers.Control.MouseToolbar
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsSymbols.html b/openlayers/doc/devdocs/search/FunctionsSymbols.html new file mode 100644 index 0000000..532f470 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsSymbols.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
_addZoomBar, OpenLayers.Control.PanZoomBar
_getNodes, Util
_getScriptLocation, OpenLayers
_removeButton, OpenLayers.Control.PanZoom
_removeElementObservers, OpenLayers.Event
_removeZoomBar, OpenLayers.Control.PanZoomBar
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsT.html b/openlayers/doc/devdocs/search/FunctionsT.html new file mode 100644 index 0000000..5954fd2 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsT.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
testTarget, OpenLayers.Control.Snapping
time, OpenLayers.Console
timeEnd, OpenLayers.Console
toArray, OpenLayers.Bounds
toBBOX, OpenLayers.Bounds
toFloat, Util
toGeometry, OpenLayers.Bounds
toggleClass, OpenLayers.Element
toggleSelect, OpenLayers.Control.SelectFeature
toState, OpenLayers.Feature.Vector
trace, OpenLayers.Console
triggerCallback, OpenLayers.Handler.Feature
triggerEvent, OpenLayers.Events
triggerRead, OpenLayers.Strategy.BBOX
triggerSave, OpenLayers.Strategy.Save
Try, Util
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsU.html b/openlayers/doc/devdocs/search/FunctionsU.html new file mode 100644 index 0000000..249db78 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
un, OpenLayers.Events
unfreezeFeature, OpenLayers.Protocol.SQL.Gears
unhighlight, OpenLayers.Control.SelectFeature
unload, OpenLayers.Tile
unloadCache, OpenLayers.Event
unloadDestroy, OpenLayers.Map
unselectFeature, OpenLayers.Control.ModifyFeature
updateAttribution, OpenLayers.Control.Attribution
updateBlocks, OpenLayers.Popup.Framed
updateHandler, OpenLayers.Control.Measure
updateMap, OpenLayers.Control.LayerSwitcher
updateMapToRect, OpenLayers.Control.OverviewMap
updatePosition, OpenLayers.Popup
updateRectToMap, OpenLayers.Control.OverviewMap
updateScale, OpenLayers.Control.Scale
updateSizeDestroy, OpenLayers.Map
upFeature, OpenLayers.Control.DragFeature
urlMatches, OpenLayers.Control.WMSGetFeatureInfo
userError, OpenLayers.Console
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsV.html b/openlayers/doc/devdocs/search/FunctionsV.html new file mode 100644 index 0000000..d57c95e --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsV.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
value2regex, OpenLayers.Filter.Comparison
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsW.html b/openlayers/doc/devdocs/search/FunctionsW.html new file mode 100644 index 0000000..9ddfc52 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsW.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
warn, OpenLayers.Console
WFS, OpenLayers.Protocol
WFST, OpenLayers.Format
wheelChange, OpenLayers.Control.Navigation
wheelDown, OpenLayers.Control.Navigation
wheelUp, OpenLayers.Control.Navigation
wheelZoom, OpenLayers.Handler.MouseWheel
write_ol_MapExtension, OpenLayers.Format.WMC.v1
write_wmc_FormatList, OpenLayers.Format.WMC.v1
write_wmc_General, OpenLayers.Format.WMC.v1
write_wmc_LayerExtension, OpenLayers.Format.WMC.v1
write_wmc_LayerList, OpenLayers.Format.WMC.v1
write_wmc_MetadataURL, OpenLayers.Format.WMC.v1
write_wmc_OnlineResource, OpenLayers.Format.WMC.v1
write_wmc_Server, OpenLayers.Format.WMC.v1
write_wmc_StyleList, OpenLayers.Format.WMC.v1
writeIndent, OpenLayers.Format.JSON
writeNewline, OpenLayers.Format.JSON
writeNode, OpenLayers.Format.XML
writeSpace, OpenLayers.Format.JSON
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/FunctionsZ.html b/openlayers/doc/devdocs/search/FunctionsZ.html new file mode 100644 index 0000000..46a17d6 --- /dev/null +++ b/openlayers/doc/devdocs/search/FunctionsZ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Z_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
Z_ORDER_DRAWING_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
Z_ORDER_Y_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
zoomBarDown, OpenLayers.Control.PanZoomBar
zoomBarDrag, OpenLayers.Control.PanZoomBar
zoomBarUp, OpenLayers.Control.PanZoomBar
zoomBox, OpenLayers.Control.ZoomBox
zoomBoxEnd, OpenLayers.Control.MouseDefaults
zoomIn, OpenLayers.Map
zoomOut, OpenLayers.Map
zoomTo, OpenLayers.Map
zoomToExtent, OpenLayers.Map
zoomToMaxExtent, OpenLayers.Map
zoomToScale, OpenLayers.Map
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralA.html b/openlayers/doc/devdocs/search/GeneralA.html new file mode 100644 index 0000000..621c0da --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
activateControl, OpenLayers.Control.Panel
activateOnDraw, OpenLayers.Control.NavigationHistory
activeColor, OpenLayers.Control.LayerSwitcher
activeRequestCount, OpenLayers.Ajax
addClass, OpenLayers.Element
addCloseBox, OpenLayers.Popup
addComponents, OpenLayers.Geometry.Collection
addContainerPxFunction, OpenLayers.Layer.Google
addControl, OpenLayers.Map
addControls, OpenLayers.Control.Panel
addControlToMap, OpenLayers.Map
addCoordSys, OpenLayers.Format.ArcXML
addEventType, OpenLayers.Events
addFeatures, OpenLayers.Layer.Vector
addImageSize, OpenLayers.Format.ArcXML
addLayer, OpenLayers.Map
addMarker, OpenLayers.Layer.Markers
addNodes, OpenLayers.Layer.PointTrack
addOptions, OpenLayers.Layer
addPopup, OpenLayers.Map
addPropertyStyles, OpenLayers.Style
addResults, OpenLayers.Tile.WFS
addRules, OpenLayers.Style
addTarget, OpenLayers.Control.Snapping
addTargetLayer, OpenLayers.Control.Snapping
addToCluster, OpenLayers.Strategy.Cluster
addTransform, OpenLayers.Projection
addUniqueValueRules, OpenLayers.StyleMap
adjustBounds, OpenLayers.Layer
afterFeatureModified, OpenLayers.Control.Split
allOverlays, OpenLayers.Map
allowSelection, OpenLayers.Control
alpha, OpenLayers.Layer
alphaHack, Util
alwaysInRange, OpenLayers.Layer
alwaysZoom, OpenLayers.Control.ZoomBox
Anchored, OpenLayers.Popup.Anchored.OpenLayers.Popup
AnchoredBubble, OpenLayers.Popup.AnchoredBubble.OpenLayers.Popup
angle, OpenLayers.Handler.RegularPolygon
applySymbolizer, OpenLayers.Style
ArcGIS93Rest, OpenLayers.Layer.ArcGIS93Rest.OpenLayers.Layer
ArcIMS, OpenLayers.Layer.ArcIMS.OpenLayers.Layer
ArcXML, OpenLayers.Format.ArcXML.OpenLayers.Format
areaTags, OpenLayers.Format.OSM
ArgParser, OpenLayers.Control.ArgParser.OpenLayers.Control
argParserClass, OpenLayers.Control.Permalink
array, OpenLayers.Format.JSON.serialize
ascending, OpenLayers.Control.LayerSwitcher
aspectRatio, OpenLayers.Layer.Image
assert, OpenLayers.Console
assignRenderer, OpenLayers.Layer.Vector
async, OpenLayers.Layer.ArcIMS
attachToElement, OpenLayers.Events
attributes, OpenLayers.Feature.Vector
attribution, OpenLayers.Layer
Attribution, OpenLayers.Control.Attribution.OpenLayers.Control
auto, OpenLayers.Strategy.Save
autoActivate, OpenLayers.Strategy
autoPan, OpenLayers.Control.OverviewMap
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralB.html b/openlayers/doc/devdocs/search/GeneralB.html new file mode 100644 index 0000000..b6d6e38 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralB.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
backBufferTile, OpenLayers.Tile.Image
BACKGROUND_ID_SUFFIX, OpenLayers.Renderer.Elements
backgroundColor, OpenLayers.Popup
base, OpenLayers.Control.Permalink
baseLayer, OpenLayers.Map
baseLayerDraw, OpenLayers.Control.OverviewMap
baseLayers, OpenLayers.Control.LayerSwitcher
baseLayersDiv, OpenLayers.Control.LayerSwitcher
BBOX, OpenLayers.Strategy.BBOX.OpenLayers.Strategy
beforeSelectFeature, OpenLayers.Control.ModifyFeature
begin, OpenLayers.Tween
blocks, OpenLayers.Popup.Framed
boolean, OpenLayers.Format.JSON.serialize
border, OpenLayers.Popup
bottom, OpenLayers.Bounds
bottomInUnits, OpenLayers.Control.ScaleLine
bottomOutUnits, OpenLayers.Control.ScaleLine
Bounds, OpenLayers.Bounds.OpenLayers
boxCharacteristics, OpenLayers.Handler.Box
boxDivClassName, OpenLayers.Handler.Box
Boxes, OpenLayers.Layer.Boxes.OpenLayers.Layer
BROWSER_EVENTS, OpenLayers.Events
buffer, OpenLayers.Layer.Grid
buildCoordinates, OpenLayers.Format.GML
buttonClicked, OpenLayers.Control.MouseToolbar
buttonUp, OpenLayers.Control.MouseToolbar
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralC.html b/openlayers/doc/devdocs/search/GeneralC.html new file mode 100644 index 0000000..74a72ff --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
calculateAngle, OpenLayers.Handler.RegularPolygon
calculateInRange, OpenLayers.Layer
calculateOffset, OpenLayers.Icon
calculateRelativePosition, OpenLayers.Popup.Anchored
canvas, OpenLayers.Renderer.Canvas
Canvas, OpenLayers.Renderer.Canvas.OpenLayers.Renderer
center, OpenLayers.Map
centerLayerContainer, OpenLayers.Map
centerLonLat, OpenLayers.Bounds
checkImgURL, OpenLayers.Tile.Image
checkModifiers, OpenLayers.Handler
checkRedraw, OpenLayers.Control.LayerSwitcher
checkTags, OpenLayers.Format.OSM
Class, OpenLayers
clearBounds, OpenLayers.Geometry
clearGrid, OpenLayers.Layer.Grid
clearLayerFilter, OpenLayers.Layer.ArcGIS93Rest
clearLayersArray, OpenLayers.Control.LayerSwitcher
clearMarkers, OpenLayers.Layer.Markers
clearMouseCache, OpenLayers.Events
clearMouseListener, OpenLayers.Events
clearOnDeactivate, OpenLayers.Control.NavigationHistory
Click, OpenLayers.Handler.Click.OpenLayers.Handler
clickFeature, OpenLayers.Control.SelectFeature
clickoutFeature, OpenLayers.Control.SelectFeature
clipLine, OpenLayers.Renderer.SVG
closeDiv, OpenLayers.Popup
closeOnMove, OpenLayers.Popup
cluster, OpenLayers.Strategy.Cluster
Cluster, OpenLayers.Strategy.Cluster.OpenLayers.Strategy
clustering, OpenLayers.Strategy.Cluster
clusters, OpenLayers.Strategy.Cluster
clustersExist, OpenLayers.Strategy.Cluster
collectDragHandle, OpenLayers.Control.ModifyFeature
Collection, OpenLayers.Geometry.Collection.OpenLayers.Geometry
collectionName, OpenLayers.Format.GML
collectRadiusHandle, OpenLayers.Control.ModifyFeature
collectRoots, OpenLayers.Layer.Vector.RootContainer
collectVertices, OpenLayers.Control.ModifyFeature
commitFailure, OpenLayers.Layer.WFS
commitReport, OpenLayers.Layer.WFS
commitSuccess, OpenLayers.Layer.WFS
compare, OpenLayers.ElementsIndexer
Comparison, OpenLayers.Filter.Comparison.OpenLayers.Filter
components, OpenLayers.Geometry.Collection
concatChildValues, OpenLayers.Format.XML
configureLayers, OpenLayers.Control.ArgParser
considerSnapping, OpenLayers.Control.Snapping
considerSplit, OpenLayers.Control.Split
Constructor
GlobalOpenLayers.Ajax.BaseOpenLayers.Ajax.RequestOpenLayers.Ajax.ResponseOpenLayers.BoundsOpenLayers.ControlOpenLayers.Control.ArgParserOpenLayers.Control.AttributionOpenLayers.Control.DragFeatureOpenLayers.Control.DrawFeatureOpenLayers.Control.EditingToolbarOpenLayers.Control.GetFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.MeasureOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.NavToolbarOpenLayers.Control.OverviewMapOpenLayers.Control.PanOpenLayers.Control.PanelOpenLayers.Control.PanPanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.ScaleOpenLayers.Control.ScaleLineOpenLayers.Control.SelectFeatureOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.Control.WMSGetFeatureInfoOpenLayers.Control.ZoomPanelOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Feature.WFSOpenLayers.FilterOpenLayers.Filter.ComparisonOpenLayers.Filter.FeatureIdOpenLayers.Filter.LogicalOpenLayers.Filter.SpatialOpenLayers.FormatOpenLayers.Format.ArcXMLOpenLayers.Format.ArcXML.FeaturesOpenLayers.Format.FilterOpenLayers.Format.Filter.v1OpenLayers.Format.Filter.v1_0_0OpenLayers.Format.Filter.v1_1_0OpenLayers.Format.GeoJSONOpenLayers.Format.GeoRSSOpenLayers.Format.GMLOpenLayers.Format.GML.BaseOpenLayers.Format.GML.v2OpenLayers.Format.GML.v3OpenLayers.Format.GPXOpenLayers.Format.JSONOpenLayers.Format.KMLOpenLayers.Format.OSMOpenLayers.Format.SLDOpenLayers.Format.SLD.v1OpenLayers.Format.SLD.v1_0_0OpenLayers.Format.TextOpenLayers.Format.WFSOpenLayers.Format.WFSCapabilitiesOpenLayers.Format.WFSCapabilities.v1OpenLayers.Format.WFSCapabilities/v1_0_0OpenLayers.Format.WFSCapabilities/v1_1_0OpenLayers.Format.WFST.v1OpenLayers.Format.WFST.v1_0_0OpenLayers.Format.WFST.v1_1_0OpenLayers.Format.WKTOpenLayers.Format.WMCOpenLayers.Format.WMC.v1OpenLayers.Format.WMC.v1_0_0OpenLayers.Format.WMC.v1_1_0OpenLayers.Format.WMSCapabilitiesOpenLayers.Format.WMSCapabilities.v1_1OpenLayers.Format.WMSCapabilities/v1_1_0OpenLayers.Format.WMSCapabilities/v1_1_1OpenLayers.Format.WMSDescribeLayerOpenLayers.Format.WMSDescribeLayer.v1_1OpenLayers.Format.WMSGetFeatureInfoOpenLayers.Format.XMLOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.Geometry.CurveOpenLayers.Geometry.LinearRingOpenLayers.Geometry.LineStringOpenLayers.Geometry.MultiLineStringOpenLayers.Geometry.MultiPointOpenLayers.Geometry.MultiPolygonOpenLayers.Geometry.PointOpenLayers.Geometry.PolygonOpenLayers.Geometry.RectangleOpenLayers.HandlerOpenLayers.Handler.BoxOpenLayers.Handler.ClickOpenLayers.Handler.DragOpenLayers.Handler.FeatureOpenLayers.Handler.HoverOpenLayers.handler.KeyboardOpenLayers.Handler.MouseWheelOpenLayers.Handler.PathOpenLayers.Handler.PointOpenLayers.Handler.PolygonOpenLayers.Handler.RegularPolygonOpenLayers.IconOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.BoxesOpenLayers.Layer.EventPaneOpenLayers.Layer.FixedZoomLevelsOpenLayers.Layer.GeoRSSOpenLayers.Layer.GMLOpenLayers.Layer.GoogleOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.KaMapOpenLayers.Layer.KaMapCacheOpenLayers.Layer.MapGuideOpenLayers.Layer.MapServerOpenLayers.Layer.MapServer.UntiledOpenLayers.Layer.MarkersOpenLayers.Layer.MultiMapOpenLayers.Layer.PointTrackOpenLayers.Layer.TextOpenLayers.Layer.TileCacheOpenLayers.Layer.TMSOpenLayers.Layer.VectorOpenLayers.Layer.Vector.RootContainerOpenLayers.Layer.VirtualEarthOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.Layer.WMS.UntiledOpenLayers.Layer.WorldWindOpenLayers.Layer.XYZOpenLayers.Layer.YahooOpenLayers.LonLatOpenLayers.MapOpenLayers.MarkerOpenLayers.Marker.BoxOpenLayers.PixelOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.AnchoredBubbleOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProjectionOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.ResponseOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.Protocol.WFS.v1_0_0OpenLayers.Protocol.WFS.v1_1_0OpenLayers.RendererOpenLayers.Renderer.CanvasOpenLayers.Renderer.ElementsOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RuleOpenLayers.SizeOpenLayers.StrategyOpenLayers.Strategy.BBOXOpenLayers.Strategy.ClusterOpenLayers.Strategy.FixedOpenLayers.Strategy.PagingOpenLayers.Strategy.SaveOpenLayers.StyleOpenLayers.StyleMapOpenLayers.Tween
container, OpenLayers.Renderer
containsBounds, OpenLayers.Bounds
containsLonLat, OpenLayers.Bounds
containsPixel, OpenLayers.Bounds
contentDiv, OpenLayers.Popup
contentHTML, OpenLayers.Popup
contentSize, OpenLayers.Popup
contentType, OpenLayers.Format.XML
contextToMap, OpenLayers.Format.WMC
control, OpenLayers.Handler
Control, OpenLayers.Control.OpenLayers
CORNER_SIZE, OpenLayers.Popup.AnchoredBubble
count, OpenLayers.Console
createBlocks, OpenLayers.Popup.Framed
createCluster, OpenLayers.Strategy.Cluster
createCRSObject, OpenLayers.Format.GeoJSON
createDefs, OpenLayers.Renderer.SVG
createDiv, Util
createdOffline, OpenLayers.Protocol.SQL.Gears
createElementDefaultNS, OpenLayers.Format.WMC.v1
createElementNS, OpenLayers.Format.XML
createElementNSPlus, OpenLayers.Format.XML
createFeatureFromItem, OpenLayers.Format.GeoRSS
createFeatureNodes, OpenLayers.Format.OSM
createFilter, OpenLayers.Strategy.BBOX
createFolderXML, OpenLayers.Format.KML
createGeometry, OpenLayers.Handler.RegularPolygon
createGeometryFromItem, OpenLayers.Format.GeoRSS
createLiteral, OpenLayers.Style
createLiterals, OpenLayers.Style
createMap, OpenLayers.Control.OverviewMap
createOLPropertyNode, OpenLayers.Format.WMC.v1
createOrUpdate, OpenLayers.Protocol.SQL.Gears
createParams, OpenLayers.Control.Permalink
createPlacemarkXML, OpenLayers.Format.KML
createRegularPolygon, OpenLayers.Geometry.Polygon
createTextNode, OpenLayers.Format.XML
createXML, OpenLayers.Format.OSM
cssMap, OpenLayers.Format.SLD.v1
curve, OpenLayers.Format.GML.v3
Curve, OpenLayers.Geometry.Curve.OpenLayers.Geometry
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralD.html b/openlayers/doc/devdocs/search/GeneralD.html new file mode 100644 index 0000000..4133e15 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralD.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
databaseName, OpenLayers.Protocol.SQL
dataFrom, OpenLayers.Layer.PointTrack.OpenLayers.Layer.PointTrack
dataLayers, OpenLayers.Control.LayerSwitcher
dataLayersDiv, OpenLayers.Control.LayerSwitcher
dataLbl, OpenLayers.Control.LayerSwitcher
db, OpenLayers.Protocol.SQL.Gears
debug, OpenLayers.Console
decimalSeparator, OpenLayers.Number
DEFAULT_CONFIG, OpenLayers.Request
DEFAULT_FORMAT, OpenLayers.Layer.KaMapCache
DEFAULT_OPTIONS, OpenLayers.Layer.ArcIMS
defaultCode, OpenLayers.Lang
defaultControl, OpenLayers.Control.Panel
defaultDblRightClick, OpenLayers.Control.Navigation
defaultGraphicFormat, OpenLayers.Format.SLD.v1
defaultIcon, OpenLayers.Marker
defaultKeyPress, OpenLayers.Control.KeyboardDefaults
defaultSize, OpenLayers.Layer.MapGuide
defaultsPerSymbolizer, OpenLayers.Style
defaultStyleName, OpenLayers.Format.WMC.v1
defaultStyleTitle, OpenLayers.Format.WMC.v1
defaultSymbolizer, OpenLayers.Format.SLD.v1
defaultWheelDown, OpenLayers.Control.MouseDefaults
defaultWheelUp, OpenLayers.Control.MouseDefaults
deferDelete, OpenLayers.Control.Split
delayedRightCall, OpenLayers.Handler.Click
delayedTrigger, OpenLayers.Control.Measure
DELETE, OpenLayers.Request
deleteCodes, OpenLayers.Control.ModifyFeature
destroy
OpenLayers.ControlOpenLayers.Control.AttributionOpenLayers.Control.DragFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.OverviewMapOpenLayers.Control.PanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.SelectFeatureOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Feature.WFSOpenLayers.FilterOpenLayers.Filter.LogicalOpenLayers.FormatOpenLayers.Format.WFSOpenLayers.Format.XMLOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.HandlerOpenLayers.handler.KeyboardOpenLayers.Handler.MouseWheelOpenLayers.IconOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.EventPaneOpenLayers.Layer.GeoRSSOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.MarkersOpenLayers.Layer.TextOpenLayers.Layer.VectorOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.MapOpenLayers.MarkerOpenLayers.Marker.BoxOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProjectionOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.RendererOpenLayers.Renderer.ElementsOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RuleOpenLayers.StrategyOpenLayers.Strategy.FixedOpenLayers.StyleOpenLayers.StyleMapOpenLayers.TileOpenLayers.Tile.ImageOpenLayers.Tile.WFS
destroyAllFeatures, OpenLayers.Tile.WFS
destroyFeatures, OpenLayers.Layer.Vector
determineQuadrant, OpenLayers.Bounds
determineZIndex, OpenLayers.ElementsIndexer
dir, OpenLayers.Console
dirxml, OpenLayers.Console
disableFirefoxOverflowHack, OpenLayers.Popup
disableZoomWheel, OpenLayers.Control.Navigation
dispatch, OpenLayers.Ajax.Responders
dispatchException, OpenLayers.Ajax.Request
displayError, OpenLayers.Layer.Vector
displayOutsideMaxExtent, OpenLayers.Layer
displaySystem, OpenLayers.Control.Measure
displaySystemUnits, OpenLayers.Control.Measure
distanceToSegment, OpenLayers.Geometry.OpenLayers.Geometry
distanceUnits, OpenLayers.Filter.Spatial
divClick, OpenLayers.Control.PanZoomBar
divEvents, OpenLayers.Control.PanZoomBar
doneDragging, OpenLayers.Control.DragFeature
double, OpenLayers.Handler.Click
doubleClick, OpenLayers.Control.PanZoom
downFeature, OpenLayers.Control.DragFeature
Drag, OpenLayers.Handler.Drag.OpenLayers.Handler
DRAG, OpenLayers.Control.ModifyFeature
dragCallbacks, OpenLayers.Control.DragFeature
dragComplete, OpenLayers.Control.ModifyFeature
dragControl, OpenLayers.Control.ModifyFeature
DragFeature, OpenLayers.Control.DragFeature.OpenLayers.Control
dragHandle, OpenLayers.Control.ModifyFeature
dragHandler, OpenLayers.Handler.Box
dragObject, OpenLayers.Layer.Google
dragPan, OpenLayers.Control.Navigation
dragStart, OpenLayers.Control.ModifyFeature
dragVertex, OpenLayers.Control.ModifyFeature
drawExternalGraphic, OpenLayers.Renderer.Canvas
DrawFeature, OpenLayers.Control.DrawFeature.OpenLayers.Control
drawGeometryNode, OpenLayers.Renderer.Elements
drawing, OpenLayers.Handler.Point
DrawLine, OpenLayers.Renderer.VML
duration, OpenLayers.Tween
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralE.html b/openlayers/doc/devdocs/search/GeneralE.html new file mode 100644 index 0000000..1b4a9e7 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralE.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
easing, OpenLayers.Tween
eBottom, OpenLayers.Control.ScaleLine
edge, OpenLayers.Control.Split
EditingToolbar, OpenLayers.Control.EditingToolbar.OpenLayers.Control
Elements, OpenLayers.Renderer.Elements.OpenLayers.Renderer
elseFilter, OpenLayers.Rule
emptyFunction, OpenLayers.Ajax
enableZoomWheel, OpenLayers.Control.Navigation
endBox, OpenLayers.Handler.Box
error, OpenLayers.Console
eTop, OpenLayers.Control.ScaleLine
evaluateFilter, OpenLayers.Protocol.SQL
eventHandler, OpenLayers.Events
eventListener, OpenLayers.handler.Keyboard
EVENTMAP, OpenLayers.Handler.Feature
EventPane, OpenLayers.Layer.EventPane.OpenLayers.Layer
eventTypes, OpenLayers.Events
evt, OpenLayers.Handler
exists, OpenLayers.ElementsIndexer
extendBounds, OpenLayers.Geometry
extendDefault, OpenLayers.StyleMap
externalProjection, OpenLayers.Format
extract, OpenLayers.Format.GeoJSON
extractFidFromField, OpenLayers.Protocol.SQL.Gears
extractRoutes, OpenLayers.Format.GPX
extractSegment, OpenLayers.Format.GPX
extractTracks, OpenLayers.Format.GPX
extractWaypoints, OpenLayers.Format.GPX
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralF.html b/openlayers/doc/devdocs/search/GeneralF.html new file mode 100644 index 0000000..ba350ab --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralF.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
featureAdded, OpenLayers.Control.DrawFeature
featureCallbacks, OpenLayers.Control.DragFeature
featureClass, OpenLayers.Layer.WFS
featureCoordSys, OpenLayers.Layer.ArcIMS
featureDescription, OpenLayers.Format.GeoRSS
FeatureId, OpenLayers.Filter.FeatureId.OpenLayers.Filter
featureIdentifier, OpenLayers.Format.WMSGetFeatureInfo
featureName, OpenLayers.Format.GML
featurens, OpenLayers.Format.GeoRSS
Features, OpenLayers.Format.ArcXML.Features.OpenLayers.Format.ArcXML
featureTitle, OpenLayers.Format.GeoRSS
fetched, OpenLayers.Format.KML
fid, OpenLayers.Feature.Vector
FID_PREFIX, OpenLayers.Protocol.SQL.Gears
fidRegExp, OpenLayers.Protocol.SQL.Gears
fids, OpenLayers.Filter.FeatureId
filterCoordSys, OpenLayers.Layer.ArcIMS
filterDelete, OpenLayers.Protocol.WFS.v1
filterMap, OpenLayers.Format.Filter.v1
filters, OpenLayers.Filter.Logical
findElement, OpenLayers.Event
findLayers, OpenLayers.Control.WMSGetFeatureInfo
findPropertyStyles, OpenLayers.Style
finish, OpenLayers.Tween
Fixed, OpenLayers.Strategy.Fixed.OpenLayers.Strategy
fixedRadius, OpenLayers.Handler.RegularPolygon
FixedZoomLevels, OpenLayers.Layer.FixedZoomLevels.OpenLayers.Layer
fixPadding, OpenLayers.Popup
fixYahooEventPane, OpenLayers.Layer.Yahoo
FOLDER_PARAMS, OpenLayers.Layer.MapGuide
foldersDesc, OpenLayers.Format.KML
foldersName, OpenLayers.Format.KML
fontStyleKeys, OpenLayers.Format.ArcXML
Format, OpenLayers.Format.OpenLayers
formatObject, OpenLayers.Layer.WFS
formatOutput, OpenLayers.Control.MousePosition
forwardMercator, OpenLayers.Layer.SphericalMercator
fractionalZoom, OpenLayers.Map
frame, OpenLayers.Tile.Image
Framed, OpenLayers.Popup.Framed.OpenLayers.Popup
FramedCloud, OpenLayers.Popup.FramedCloud.OpenLayers.Popup
freehand, OpenLayers.Handler.Path
freehandMode, OpenLayers.Handler.Path
freehandToggle, OpenLayers.Handler.Path
freezeFeature, OpenLayers.Protocol.SQL.Gears
fromArray, OpenLayers.Bounds
fromSize, OpenLayers.Bounds
fromWKT, OpenLayers.Geometry.OpenLayers.Geometry
fromWMSLayer, OpenLayers.Protocol.WFS
Functions
GlobalOpenLayersOpenLayers.AjaxOpenLayers.Ajax.RequestOpenLayers.Ajax.RespondersOpenLayers.Ajax.ResponseOpenLayers.ArrayOpenLayers.BoundsOpenLayers.ConsoleOpenLayers.ControlOpenLayers.Control.ArgParserOpenLayers.Control.AttributionOpenLayers.Control.ButtonOpenLayers.Control.DragFeatureOpenLayers.Control.DragPanOpenLayers.Control.DrawFeatureOpenLayers.Control.EditingToolbarOpenLayers.Control.GetFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.MeasureOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.NavToolbarOpenLayers.Control.OverviewMapOpenLayers.Control.PanOpenLayers.Control.PanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.ScaleOpenLayers.Control.ScaleLineOpenLayers.Control.SelectFeatureOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.Control.WMSGetFeatureInfoOpenLayers.Control.ZoomBoxOpenLayers.Control.ZoomInOpenLayers.Control.ZoomOutOpenLayers.Control.ZoomToMaxExtentOpenLayers.Easing.ExpoOpenLayers.Easing.LinearOpenLayers.Easing.QuadOpenLayers.ElementOpenLayers.ElementsIndexerOpenLayers.ElementsIndexer.IndexingMethodsOpenLayers.EventOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Feature.WFSOpenLayers.FilterOpenLayers.Filter.ComparisonOpenLayers.Filter.FeatureIdOpenLayers.Filter.LogicalOpenLayers.Filter.SpatialOpenLayers.FormatOpenLayers.Format.ArcXMLOpenLayers.Format.ArcXML.FeaturesOpenLayers.Format.FilterOpenLayers.Format.Filter.v1_0_0OpenLayers.Format.Filter.v1_1_0OpenLayers.Format.GeoJSONOpenLayers.Format.GeoRSSOpenLayers.Format.GPXOpenLayers.Format.JSONOpenLayers.Format.KMLOpenLayers.Format.OSMOpenLayers.Format.SLDOpenLayers.Format.TextOpenLayers.Format.WFSOpenLayers.Format.WFSCapabilitiesOpenLayers.Format.WFSCapabilities.v1OpenLayers.Format.WKTOpenLayers.Format.WMCOpenLayers.Format.WMC.v1OpenLayers.Format.WMC.v1_1_0OpenLayers.Format.WMSCapabilitiesOpenLayers.Format.WMSCapabilities.v1_1OpenLayers.Format.WMSDescribeLayerOpenLayers.Format.WMSDescribeLayer.v1_1OpenLayers.Format.WMSGetFeatureInfoOpenLayers.Format.XMLOpenLayers.FunctionOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.Geometry.CurveOpenLayers.Geometry.LinearRingOpenLayers.Geometry.LineStringOpenLayers.Geometry.MultiLineStringOpenLayers.Geometry.MultiPointOpenLayers.Geometry.PointOpenLayers.Geometry.PolygonOpenLayers.Geometry.RectangleOpenLayers.HandlerOpenLayers.Handler.BoxOpenLayers.Handler.ClickOpenLayers.Handler.DragOpenLayers.Handler.FeatureOpenLayers.Handler.HoverOpenLayers.handler.KeyboardOpenLayers.Handler.MouseWheelOpenLayers.Handler.PathOpenLayers.Handler.PointOpenLayers.Handler.PolygonOpenLayers.Handler.RegularPolygonOpenLayers.IconOpenLayers.LangOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.BoxesOpenLayers.Layer.EventPaneOpenLayers.Layer.FixedZoomLevelsOpenLayers.Layer.GeoRSSOpenLayers.Layer.GMLOpenLayers.Layer.GoogleOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.KaMapOpenLayers.Layer.KaMapCacheOpenLayers.Layer.MapGuideOpenLayers.Layer.MapServerOpenLayers.Layer.MapServer.UntiledOpenLayers.Layer.MarkersOpenLayers.Layer.MultiMapOpenLayers.Layer.PointTrackOpenLayers.Layer.SphericalMercatorOpenLayers.Layer.TileCacheOpenLayers.Layer.TMSOpenLayers.Layer.VectorOpenLayers.Layer.Vector.RootContainerOpenLayers.Layer.VirtualEarthOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.Layer.WMS.UntiledOpenLayers.Layer.WorldWindOpenLayers.Layer.XYZOpenLayers.Layer.YahooOpenLayers.LonLatOpenLayers.MapOpenLayers.MarkerOpenLayers.Marker.BoxOpenLayers.NumberOpenLayers.PixelOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.AnchoredBubbleOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.ResponseOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.RendererOpenLayers.Renderer.CanvasOpenLayers.Renderer.ElementsOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RequestOpenLayers.RuleOpenLayers.SizeOpenLayers.StrategyOpenLayers.Strategy.BBOXOpenLayers.Strategy.ClusterOpenLayers.Strategy.FixedOpenLayers.Strategy.PagingOpenLayers.Strategy.SaveOpenLayers.StringOpenLayers.StyleOpenLayers.StyleMapOpenLayers.TileOpenLayers.Tile.ImageOpenLayers.Tile.WFSOpenLayers.TweenUtil
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralG.html b/openlayers/doc/devdocs/search/GeneralG.html new file mode 100644 index 0000000..5658d97 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralG.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Gears, OpenLayers.Protocol.SQL.Gears.OpenLayers.Protocol.SQL
geodesic, OpenLayers.Control.Measure
GeoJSON, OpenLayers.Format.GeoJSON.OpenLayers.Format
Geometry, OpenLayers.Geometry.OpenLayers
geometryClone, OpenLayers.Handler.Point
geometryMap, OpenLayers.Renderer.Canvas
geometryType, OpenLayers.Layer.Vector
geometryTypeMatches, OpenLayers.Handler.Feature
geomsToFeatures, OpenLayers.Control.Split
geons, OpenLayers.Format.GeoRSS
georssns, OpenLayers.Format.GeoRSS
geoToleranceCache, OpenLayers.Control.Snapping
GET, OpenLayers.Request
getArgs, Util
getAttributeNodeNS, OpenLayers.Format.XML
getAttributeNS, OpenLayers.Format.XML
getBarLen, OpenLayers.Control.ScaleLine
getBestArea, OpenLayers.Control.Measure
getBestLength, OpenLayers.Control.Measure
getBounds, OpenLayers.Geometry
getBoundsFromBaseLayer, OpenLayers.Tile
getBy, OpenLayers.Map
getCenter, OpenLayers.Map
getCenterLonLat, OpenLayers.Bounds
getCenterPixel, OpenLayers.Bounds
getCharacteristics, OpenLayers.Handler.Box
getChildEl, OpenLayers.Format.XML
getComponentsString, OpenLayers.Geometry.Collection
getComponentString, OpenLayers.Renderer.SVG
getContentDivPadding, OpenLayers.Popup
getContext, OpenLayers.Rule
getControl, OpenLayers.Map
getControlsByName, OpenLayers.Control.Panel
getCornersToRound, OpenLayers.Popup.AnchoredBubble
getCssProperty, OpenLayers.Format.SLD.v1
getCurrentSize, OpenLayers.Map
getDimensions, OpenLayers.Element
GetFeature, OpenLayers.Control.GetFeature.OpenLayers.Control
getFeatureById, OpenLayers.Layer.Vector
getFeatureInfo, OpenLayers.Layer.ArcIMS
getFeatureStateForFreeze, OpenLayers.Protocol.SQL.Gears
getFilterType, OpenLayers.Format.Filter.v1
getGeoTolerance, OpenLayers.Control.Snapping
getGraphicFormat, OpenLayers.Format.SLD.v1
getGridBounds, OpenLayers.Layer.Grid
getImageFilePath, OpenLayers.Layer.MapGuide
getImageSize, OpenLayers.Layer
getInfoForClick, OpenLayers.Control.WMSGetFeatureInfo
getInfoForHover, OpenLayers.Control.WMSGetFeatureInfo
getLayer, OpenLayers.Map
getLayerFromInfo, OpenLayers.Format.WMC.v1
getLayerIndex, OpenLayers.Map
getLayerPxFromLonLat, OpenLayers.Map
getLayerPxFromViewPortPx, OpenLayers.Map
getLayersBy, OpenLayers.Map
getLayersByClass, OpenLayers.Map
getLayersByName, OpenLayers.Map
getLocalXY, OpenLayers.Renderer.Canvas
getLonLatFromLayerPx, OpenLayers.Map
getLonLatFromOverviewPx, OpenLayers.Control.OverviewMap
getLonLatFromPixel, OpenLayers.Map
getMapBounds, OpenLayers.Strategy.BBOX
getMapBoundsFromRectBounds, OpenLayers.Control.OverviewMap
getMapObjectBoundsFromOLBounds, OpenLayers.Layer.Google
getMapObjectLonLatFromOLLonLat, OpenLayers.Layer.EventPane
getMapObjectPixelFromOLPixel, OpenLayers.Layer.EventPane
getMapObjectSizeFromOLSize, OpenLayers.Layer.Yahoo
getMapObjectZoomFromMapObjectBounds, OpenLayers.Layer.Google
getMaxExtent, OpenLayers.Map
getMaxResolution, OpenLayers.Map
getMousePosition, OpenLayers.Events
getNamespacePrefix, OpenLayers.Format.WMC.v1
getNextEl, OpenLayers.Format.XML
getNextElement, OpenLayers.ElementsIndexer
getNumLayers, OpenLayers.Map
getNumZoomLevels, OpenLayers.Map
getOLBoundsFromMapObjectBounds, OpenLayers.Layer.Google
getOLLonLatFromMapObjectLonLat, OpenLayers.Layer.EventPane
getOLPixelFromMapObjectPixel, OpenLayers.Layer.EventPane
getOverviewPxFromLonLat, OpenLayers.Control.OverviewMap
getPixelFromLonLat, OpenLayers.Map
getPosition, OpenLayers.Renderer.SVG
getProjection, OpenLayers.Map
getProjectionObject, OpenLayers.Map
getRectBoundsFromMapBounds, OpenLayers.Control.OverviewMap
getResponseHeader, OpenLayers.Ajax.Response
getSafeContentSize, OpenLayers.Popup
getScale, OpenLayers.Map
getShortString, OpenLayers.Renderer.SVG
getSiblingNodesByTagCriteria, OpenLayers.Format.WMSGetFeatureInfo
getSortedSegments, OpenLayers.Geometry.LineString
getSrsName, OpenLayers.Format.WFST.v1
getStatustext, OpenLayers.Ajax.Response
getSymbolizerPrefix, OpenLayers.Style
getTags, OpenLayers.Format.OSM
getThisOrNextEl, OpenLayers.Format.XML
getTilesBounds, OpenLayers.Layer.Grid
getTileSize, OpenLayers.Map
getTransport, OpenLayers.Ajax
getUrl, OpenLayers.Layer.XYZ
getURLasync, OpenLayers.Layer.ArcIMS
getUrlOrImage, OpenLayers.Layer.ArcIMS
getViewPortPxFromLayerPx, OpenLayers.Map
getVisibility, OpenLayers.Layer
getWays, OpenLayers.Format.OSM
getWidth, OpenLayers.Bounds
gmlFormat, OpenLayers.Format.WMSGetFeatureInfo
gmlns, OpenLayers.Format.GML
gmlParse, OpenLayers.Format.GeoRSS
Google, OpenLayers.Layer.Google.OpenLayers.Layer
GPX, OpenLayers.Format.GPX.OpenLayers.Format
granularity, OpenLayers.Control.MousePosition
graphicFormats, OpenLayers.Format.SLD.v1
graphicRotate, OpenLayers.Renderer.VML
greedy, OpenLayers.Control.Snapping
grid, OpenLayers.Layer.Grid
Grid, OpenLayers.Layer.Grid.OpenLayers.Layer
group, OpenLayers.Console
groupDiv, OpenLayers.Popup
groupEnd, OpenLayers.Console
gutter, OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralH.html b/openlayers/doc/devdocs/search/GeneralH.html new file mode 100644 index 0000000..51851c4 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralH.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
h, OpenLayers.Size
handle, OpenLayers.Handler.Feature
handleBrowserEvent, OpenLayers.Events
handleChangeLayer, OpenLayers.Layer.Vector.RootContainer
handleCommit, OpenLayers.Protocol.WFS.v1
handleCreate, OpenLayers.Protocol.HTTP
handleDelete, OpenLayers.Protocol.HTTP
handleKeyEvent, OpenLayers.handler.Keyboard
handleKeypress, OpenLayers.Control.ModifyFeature
Handler, OpenLayers.Handler.OpenLayers
handleRightClicks, OpenLayers.Control.Navigation
handleUpdate, OpenLayers.Protocol.HTTP
hasAttributeNS, OpenLayers.Format.XML
hasClass, OpenLayers.Element
HEAD, OpenLayers.Request
headers, OpenLayers.Protocol.HTTP
height, OpenLayers.Geometry.Rectangle
highlight, OpenLayers.Control.SelectFeature
highlightOnly, OpenLayers.Control.SelectFeature
Hover, OpenLayers.Handler.Hover.OpenLayers.Handler
hoverRequest, OpenLayers.Control.WMSGetFeatureInfo
hoverResponse, OpenLayers.Control.GetFeature
hoverSelect, OpenLayers.Control.GetFeature
HTTP, OpenLayers.Protocol.HTTP.OpenLayers.Protocol
HTTPRequest, OpenLayers.Layer.HTTPRequest.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralI.html b/openlayers/doc/devdocs/search/GeneralI.html new file mode 100644 index 0000000..7431aad --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralI.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
i18n, OpenLayers.Lang.OpenLayers
Icon, OpenLayers.Icon.OpenLayers
ignoreEvent, OpenLayers.Control.LayerSwitcher
Image, OpenLayers.Layer.Image.OpenLayers.Layer
IMAGE_EXTENSIONS, OpenLayers.Layer.KaMapCache
imageDiv, OpenLayers.Icon
imageOffset, OpenLayers.Layer
imageSrc, OpenLayers.Popup.Framed
imgDiv, OpenLayers.Tile.Image
ImgPath, Util
includeXY, OpenLayers.Events
indent, OpenLayers.Format.JSON
Indexer, OpenLayers.Renderer.Elements
indexOf, Util
indices, OpenLayers.ElementsIndexer
inflate, OpenLayers.Marker
info, OpenLayers.Console
infoFormat, OpenLayers.Control.WMSGetFeatureInfo
initGriddedTiles, OpenLayers.Layer.Grid
initialize, OpenLayers.ElementsIndexer
initializeDatabase, OpenLayers.Protocol.SQL.Gears
initImgDiv, OpenLayers.Tile.Image
initMercatorParameters, OpenLayers.Layer.SphericalMercator
initSingleTile, OpenLayers.Layer.Grid
initStack, OpenLayers.Control.NavigationHistory
inRange, OpenLayers.Layer
interestingTagsExclude, OpenLayers.Format.OSM
internalns, OpenLayers.Format.KML
internalProjection, OpenLayers.Format
intersectsBounds, OpenLayers.Bounds
INTERVAL, OpenLayers.Tween
invalidBounds, OpenLayers.Strategy.BBOX
inValidRange, OpenLayers.Renderer.SVG
inverseMercator, OpenLayers.Layer.SphericalMercator
irregular, OpenLayers.Handler.RegularPolygon
isBackBuffer, OpenLayers.Tile.Image
isComplexSymbol, OpenLayers.Renderer.Elements
isDefault, OpenLayers.Style
isEligible, OpenLayers.Control.Split
iserror, OpenLayers.Format.ArcXML
isFirstDraw, OpenLayers.Tile.Image
isGecko, OpenLayers.Renderer.SVG
isLeftClick, OpenLayers.Event
isLoading, OpenLayers.Tile
isNumeric, OpenLayers.String.OpenLayers.String
isRightClick, OpenLayers.Event
isSimpleContent, OpenLayers.Format.XML
issue, OpenLayers.Request
isSuitableOverview, OpenLayers.Control.OverviewMap
isValidLonLat, OpenLayers.Map
isValidType, OpenLayers.Format.GeoJSON
isValidZoomLevel, OpenLayers.Map
isVector, OpenLayers.Layer.Vector
isWayArea, OpenLayers.Format.OSM
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralJ.html b/openlayers/doc/devdocs/search/GeneralJ.html new file mode 100644 index 0000000..e165c89 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralJ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
JSON, OpenLayers.Format.JSON.OpenLayers.Format
jsonParser, OpenLayers.Protocol.SQL.Gears
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralK.html b/openlayers/doc/devdocs/search/GeneralK.html new file mode 100644 index 0000000..2129c3a --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralK.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
KaMap, OpenLayers.Layer.KaMap.OpenLayers.Layer
KaMapCache, OpenLayers.Layer.KaMapCache.OpenLayers.Layer
keepData, OpenLayers.Format
KEY_BACKSPACE, OpenLayers.Event
KEY_DELETE, OpenLayers.Event
KEY_DOWN, OpenLayers.Event
KEY_ESC, OpenLayers.Event
KEY_EVENTS, OpenLayers.handler.Keyboard
KEY_LEFT, OpenLayers.Event
KEY_RETURN, OpenLayers.Event
KEY_RIGHT, OpenLayers.Event
KEY_TAB, OpenLayers.Event
KEY_UP, OpenLayers.Event
Keyboard, OpenLayers.handler.Keyboard.OpenLayers.Handler
KeyboardDefaults, OpenLayers.Control.KeyboardDefaults.OpenLayers.Control
keyMask, OpenLayers.Handler
KML, OpenLayers.Format.KML.OpenLayers.Format
kmlns, OpenLayers.Format.KML
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralL.html b/openlayers/doc/devdocs/search/GeneralL.html new file mode 100644 index 0000000..d431725 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralL.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
LABEL_SHIFT, OpenLayers.Renderer.VML.OpenLayers.Renderer.VML
LABEL_VSHIFT, OpenLayers.Renderer.SVG.OpenLayers.Renderer.SVG
lastDown, OpenLayers.Handler.Point
lastFeature, OpenLayers.Handler.Feature
lastPixel, OpenLayers.Control.DragFeature
lastRatio, OpenLayers.Tile.Image
lastSeqID, Util
lastUp, OpenLayers.Handler.Point
lastXy, OpenLayers.Control.MousePosition
lat, OpenLayers.LonLat
Layer, OpenLayers.Layer.OpenLayers
layerAlphaHack, OpenLayers.Tile.Image
layerContainerDiv, OpenLayers.Map
layerContainerOrigin, OpenLayers.Map
layerIdentifier, OpenLayers.Format.WMSGetFeatureInfo
layerParams, OpenLayers.Format.WMC
layersDiv, OpenLayers.Control.LayerSwitcher
layerStates, OpenLayers.Control.LayerSwitcher
LayerSwitcher, OpenLayers.Control.LayerSwitcher.OpenLayers.Control
layerUrls, OpenLayers.Control.WMSGetFeatureInfo
leaveMode, OpenLayers.Control.MouseToolbar
left, OpenLayers.Bounds
length, OpenLayers.Strategy.Paging
level, OpenLayers.Format.JSON
limit, OpenLayers.Control.NavigationHistory
line, OpenLayers.Handler.Path
LinearRing, OpenLayers.Geometry.LinearRing.OpenLayers.Geometry
LineString, OpenLayers.Geometry.LineString.OpenLayers.Geometry
load, OpenLayers.Strategy.Fixed
loadContents, OpenLayers.Control.LayerSwitcher
loaded, OpenLayers.Layer.GML
loadFeaturesForRegion, OpenLayers.Tile.WFS
loadGML, OpenLayers.Layer.GML
loadRSS, OpenLayers.Layer.GeoRSS
loadText, OpenLayers.Layer.Text
loadWarningMessage, OpenLayers.Layer.EventPane
locked, OpenLayers.Renderer
log, OpenLayers.Console
Logical, OpenLayers.Filter.Logical.OpenLayers.Filter
lon, OpenLayers.LonLat
LonLat, OpenLayers.LonLat.OpenLayers
lowerBoundary, OpenLayers.Filter.Comparison
lzd, OpenLayers.Layer.WorldWind
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralM.html b/openlayers/doc/devdocs/search/GeneralM.html new file mode 100644 index 0000000..173e08e --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralM.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Map, OpenLayers.Map.OpenLayers
mapDivClick, OpenLayers.Control.OverviewMap
MapGuide, OpenLayers.Layer.MapGuide.OpenLayers.Layer
mapObject, OpenLayers.Layer.EventPane
mapOptions, OpenLayers.Control.OverviewMap
MapServer, OpenLayers.Layer.MapServer.OpenLayers.Layer
mapToContext, OpenLayers.Format.WMC
marker, OpenLayers.Feature
Marker, OpenLayers.Marker.OpenLayers
markers, OpenLayers.Layer.Markers
Markers, OpenLayers.Layer.Markers.OpenLayers.Layer
matchCase, OpenLayers.Filter.Comparison
MAX_PIXEL, OpenLayers.Renderer.SVG
maxDepth, OpenLayers.Format.KML
maximizeDiv, OpenLayers.Control.LayerSwitcher
maxRatio, OpenLayers.Control.OverviewMap
maxScaleDenominator, OpenLayers.Rule
maxWidth, OpenLayers.Control.ScaleLine
maxZIndex, OpenLayers.ElementsIndexer
measure, OpenLayers.Control.Measure
Measure, OpenLayers.Control.Measure.OpenLayers.Control
measureComplete, OpenLayers.Control.Measure
measurePartial, OpenLayers.Control.Measure
mergeContextToMap, OpenLayers.Format.WMC
minimizeDiv, OpenLayers.Control.LayerSwitcher
minimumSymbolizer, OpenLayers.Renderer.Elements
minRatio, OpenLayers.Control.OverviewMap
minRectDisplayClass, OpenLayers.Control.OverviewMap
minRectSize, OpenLayers.Control.OverviewMap
minScaleDenominator, OpenLayers.Rule
MOD_ALT, OpenLayers.Handler.OpenLayers.Handler
MOD_CTRL, OpenLayers.Handler.OpenLayers.Handler
MOD_NONE, OpenLayers.Handler.OpenLayers.Handler
MOD_SHIFT, OpenLayers.Handler.OpenLayers.Handler
modified, OpenLayers.Control.ModifyFeature
modifiers, OpenLayers.Control.GetFeature
ModifyFeature, OpenLayers.Control.ModifyFeature.OpenLayers.Control
modifyGeometry, OpenLayers.Handler.RegularPolygon
MouseDefaults, OpenLayers.Control.MouseDefaults.OpenLayers.Control
mouseLeft, Util
mousePosition, OpenLayers.Handler.MouseWheel
MousePosition, OpenLayers.Control.MousePosition.OpenLayers.Control
MouseToolbar, OpenLayers.Control.MouseToolbar.OpenLayers.Control
mouseUp, OpenLayers.Control.LayerSwitcher
MouseWheel, OpenLayers.Handler.MouseWheel.OpenLayers.Handler
moveBox, OpenLayers.Handler.Box
moveFeature, OpenLayers.Control.DragFeature
moveGriddedTiles, OpenLayers.Layer.Grid
moveLayerBack, OpenLayers.Handler.Feature
moveLayerToTop, OpenLayers.Handler.Feature
moveZoomBar, OpenLayers.Control.PanZoomBar
multi, OpenLayers.Handler.Point
multiCurve, OpenLayers.Format.GML.v3
multigeometry, OpenLayers.Format.KML.parseGeometry
MultiLineString, OpenLayers.Geometry.MultiLineString.OpenLayers.Geometry
MultiMap, OpenLayers.Layer.MultiMap.OpenLayers.Layer
multipleSelect, OpenLayers.Control.SelectFeature
MultiPoint, OpenLayers.Geometry.MultiPoint.OpenLayers.Geometry
MultiPolygon, OpenLayers.Geometry.MultiPolygon.OpenLayers.Geometry
multiSurface, OpenLayers.Format.GML.v3
mutual, OpenLayers.Control.Split
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralN.html b/openlayers/doc/devdocs/search/GeneralN.html new file mode 100644 index 0000000..a75b4f4 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralN.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
namedLayersAsArray, OpenLayers.Format.SLD
namespaceAlias, OpenLayers.Format.XML
Navigation, OpenLayers.Control.Navigation.OpenLayers.Control
NavigationHistory, OpenLayers.Control.NavigationHistory.OpenLayers.Control
NavToolbar, OpenLayers.Control.NavToolbar.OpenLayers.Control
newline, OpenLayers.Format.JSON
next, OpenLayers.Control.NavigationHistory
nextOptions, OpenLayers.Control.NavigationHistory
nextStack, OpenLayers.Control.NavigationHistory
nextTrigger, OpenLayers.Control.NavigationHistory
nodeFactory, OpenLayers.Renderer.Elements
noMagic, OpenLayers.Layer.WMS
NULL_FEATURE_STATE, OpenLayers.Protocol.SQL.Gears
NULL_GEOMETRY, OpenLayers.Protocol.SQL.Gears
nullHandler, OpenLayers
num, OpenLayers.Strategy.Paging
number, OpenLayers.Format.JSON.serialize
numberRegEx, OpenLayers.String.OpenLayers.String
numDigits, OpenLayers.Control.MousePosition
numericIf, OpenLayers.String
numLoadingTiles, OpenLayers.Layer.Grid
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralO.html b/openlayers/doc/devdocs/search/GeneralO.html new file mode 100644 index 0000000..d81d2e4 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
observe, OpenLayers.Event
observers, OpenLayers.Event
ogcns, OpenLayers.Format.WFS
oldOnselectstart, OpenLayers.Handler.Drag
on, OpenLayers.Events
onBeforeSelect, OpenLayers.Control.SelectFeature
onclick, OpenLayers.Popup
onClick, OpenLayers.Control.Panel
onCommit, OpenLayers.Strategy.Save
onCreate, OpenLayers.Ajax.Responders
ondblclick, OpenLayers.Popup
onDrag, OpenLayers.Control.DragFeature
onFeatureInsert, OpenLayers.Layer.Vector
onLayerClick, OpenLayers.Control.LayerSwitcher
onModification, OpenLayers.Control.ModifyFeature
onModificationEnd, OpenLayers.Control.ModifyFeature
onModificationStart, OpenLayers.Control.ModifyFeature
onmousedown, OpenLayers.Popup
onmousemove, OpenLayers.Popup
onmouseout, OpenLayers.Popup
onmouseup, OpenLayers.Popup
onNextChange, OpenLayers.Control.NavigationHistory
onPreviousChange, OpenLayers.Control.NavigationHistory
onSelect, OpenLayers.Control.SelectFeature
onSketchComplete, OpenLayers.Control.Split
onSketchModified, OpenLayers.Control.Snapping
onStart, OpenLayers.Control.DragFeature
onStateChange, OpenLayers.Ajax.Request
onUnselect, OpenLayers.Control.SelectFeature
onVertexModified, OpenLayers.Control.Snapping
oppositeQuadrant, OpenLayers.Bounds
OPTIONS, OpenLayers.Request
order, OpenLayers.ElementsIndexer
origin, OpenLayers.Handler.RegularPolygon
OVERLAY_PARAMS, OpenLayers.Layer.MapGuide
OverviewMap, OpenLayers.Control.OverviewMap.OpenLayers.Control
ovmap, OpenLayers.Control.OverviewMap
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralP.html b/openlayers/doc/devdocs/search/GeneralP.html new file mode 100644 index 0000000..3a1a5eb --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralP.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
padding, OpenLayers.Popup
paddingForPopups, OpenLayers.Map
page, OpenLayers.Strategy.Paging
pageCount, OpenLayers.Strategy.Paging
pageLength, OpenLayers.Strategy.Paging
pageNext, OpenLayers.Strategy.Paging
pageNum, OpenLayers.Strategy.Paging
pagePrevious, OpenLayers.Strategy.Paging
paging, OpenLayers.Strategy.Paging
Paging, OpenLayers.Strategy.Paging.OpenLayers.Strategy
pan, OpenLayers.Map
Pan, OpenLayers.Control.Pan.OpenLayers.Control
panDuration, OpenLayers.Map
pane, OpenLayers.Layer.EventPane
Panel, OpenLayers.Control.Panel.OpenLayers.Control
panIntoView, OpenLayers.Popup
panMap, OpenLayers.Control.DragPan
panMapDone, OpenLayers.Control.DragPan
panMethod, OpenLayers.Map
panned, OpenLayers.Control.DragPan
PanPanel, OpenLayers.Control.PanPanel.OpenLayers.Control
panRatio, OpenLayers.Map
panTo, OpenLayers.Map
panTween, OpenLayers.Map
PanZoom, OpenLayers.Control.PanZoom.OpenLayers.Control
PanZoomBar, OpenLayers.Control.PanZoomBar.OpenLayers.Control
parent, OpenLayers.Geometry
parseCoords, OpenLayers.Format.GeoJSON
parseEnvelope, OpenLayers.Format.ArcXML
parseExtendedData, OpenLayers.Format.KML
parsePointGeometry, OpenLayers.Format.ArcXML
parseProperty, OpenLayers.Format.KML
parseResponse, OpenLayers.Format.ArcXML
parseStyle, OpenLayers.Format.KML
parseStyleMaps, OpenLayers.Format.KML
parseStyles, OpenLayers.Format.KML
passEventToSlider, OpenLayers.Control.PanZoomBar
Path, OpenLayers.Handler.Path.OpenLayers.Handler
performedDrag, OpenLayers.Control.MouseDefaults
Pixel, OpenLayers.Pixel.OpenLayers
pixelToBounds, OpenLayers.Control.GetFeature
placemarksDesc, OpenLayers.Format.KML
play, OpenLayers.Tween
playing, OpenLayers.Tween
PointTrack, OpenLayers.Layer.PointTrack.OpenLayers
popup, OpenLayers.Feature
Popup, OpenLayers.Popup.OpenLayers
popupClass, OpenLayers.Feature
popups, OpenLayers.Map
popupSize, OpenLayers.Layer.GeoRSS
positionImage, OpenLayers.Tile.Image
POST, OpenLayers.Request
postReadFiltering, OpenLayers.Protocol.SQL
poweredBy, OpenLayers.Layer.Google
precedence, OpenLayers.Control.Snapping
precision, Util
preFeatureInsert, OpenLayers.Layer.Vector
prefix, OpenLayers.Control.MousePosition
preload, OpenLayers.Strategy.Fixed
pretty, OpenLayers.Format.JSON
previous, OpenLayers.Control.NavigationHistory
previousOptions, OpenLayers.Control.NavigationHistory
previousStack, OpenLayers.Control.NavigationHistory
previousTrigger, OpenLayers.Control.NavigationHistory
priv, OpenLayers.Protocol.Response
processXMLNode, OpenLayers.Feature.WFS
profile, OpenLayers.Console
profileEnd, OpenLayers.Console
proj, OpenLayers.Projection
projCode, OpenLayers.Projection
projectForward, OpenLayers.Layer.SphericalMercator
projectInverse, OpenLayers.Layer.SphericalMercator
Projection, OpenLayers.Projection.OpenLayers
Properties
GlobalOpenLayersOpenLayers.AjaxOpenLayers.Ajax.RequestOpenLayers.Ajax.RespondersOpenLayers.Ajax.ResponseOpenLayers.BoundsOpenLayers.ControlOpenLayers.Control.ArgParserOpenLayers.Control.AttributionOpenLayers.Control.ButtonOpenLayers.Control.DragFeatureOpenLayers.Control.DragPanOpenLayers.Control.DrawFeatureOpenLayers.Control.GetFeatureOpenLayers.Control.KeyboardDefaultsOpenLayers.Control.LayerSwitcherOpenLayers.Control.MeasureOpenLayers.Control.ModifyFeatureOpenLayers.Control.MouseDefaultsOpenLayers.Control.MousePositionOpenLayers.Control.MouseToolbarOpenLayers.Control.NavigationOpenLayers.Control.NavigationHistoryOpenLayers.Control.OverviewMapOpenLayers.Control.PanOpenLayers.Control.PanelOpenLayers.Control.PanZoomOpenLayers.Control.PanZoomBarOpenLayers.Control.PermalinkOpenLayers.Control.ScaleLineOpenLayers.Control.SelectFeatureOpenLayers.Control.SnappingOpenLayers.Control.SplitOpenLayers.Control.WMSGetFeatureInfoOpenLayers.Control.ZoomBoxOpenLayers.Control.ZoomInOpenLayers.Control.ZoomOutOpenLayers.Control.ZoomToMaxExtentOpenLayers.ElementsIndexerOpenLayers.EventOpenLayers.EventsOpenLayers.FeatureOpenLayers.Feature.VectorOpenLayers.Filter.ComparisonOpenLayers.Filter.FeatureIdOpenLayers.Filter.LogicalOpenLayers.Filter.SpatialOpenLayers.FormatOpenLayers.Format.ArcXMLOpenLayers.Format.FilterOpenLayers.Format.Filter.v1OpenLayers.Format.Filter.v1_0_0OpenLayers.Format.Filter.v1_1_0OpenLayers.Format.GeoJSONOpenLayers.Format.GeoRSSOpenLayers.Format.GMLOpenLayers.Format.GML.BaseOpenLayers.Format.GML.v2OpenLayers.Format.GML.v3OpenLayers.Format.GPXOpenLayers.Format.JSONOpenLayers.Format.KMLOpenLayers.Format.OSMOpenLayers.Format.SLDOpenLayers.Format.SLD.v1OpenLayers.Format.SLD.v1_0_0OpenLayers.Format.TextOpenLayers.Format.WFSOpenLayers.Format.WFSCapabilitiesOpenLayers.Format.WFST.v1OpenLayers.Format.WFST.v1_0_0OpenLayers.Format.WFST.v1_1_0OpenLayers.Format.WMCOpenLayers.Format.WMC.v1_0_0OpenLayers.Format.WMC.v1_1_0OpenLayers.Format.WMSCapabilitiesOpenLayers.Format.WMSCapabilities/v1_1_0OpenLayers.Format.WMSCapabilities/v1_1_1OpenLayers.Format.WMSDescribeLayerOpenLayers.Format.WMSGetFeatureInfoOpenLayers.Format.XMLOpenLayers.GeometryOpenLayers.Geometry.CollectionOpenLayers.Geometry.CurveOpenLayers.Geometry.LinearRingOpenLayers.Geometry.MultiLineStringOpenLayers.Geometry.MultiPointOpenLayers.Geometry.MultiPolygonOpenLayers.Geometry.PointOpenLayers.Geometry.PolygonOpenLayers.Geometry.RectangleOpenLayers.HandlerOpenLayers.Handler.BoxOpenLayers.Handler.ClickOpenLayers.Handler.DragOpenLayers.Handler.FeatureOpenLayers.Handler.HoverOpenLayers.handler.KeyboardOpenLayers.Handler.MouseWheelOpenLayers.Handler.PathOpenLayers.Handler.PointOpenLayers.Handler.RegularPolygonOpenLayers.IconOpenLayers.LangOpenLayers.LayerOpenLayers.Layer.ArcGIS93RestOpenLayers.Layer.ArcIMSOpenLayers.Layer.EventPaneOpenLayers.Layer.GeoRSSOpenLayers.Layer.GMLOpenLayers.Layer.GoogleOpenLayers.Layer.GridOpenLayers.Layer.HTTPRequestOpenLayers.Layer.ImageOpenLayers.Layer.KaMapOpenLayers.Layer.MapGuideOpenLayers.Layer.MapServer.UntiledOpenLayers.Layer.MarkersOpenLayers.Layer.MultiMapOpenLayers.Layer.TextOpenLayers.Layer.TileCacheOpenLayers.Layer.TMSOpenLayers.Layer.VectorOpenLayers.Layer.Vector.RootContainerOpenLayers.Layer.VirtualEarthOpenLayers.Layer.WFSOpenLayers.Layer.WMSOpenLayers.Layer.WMS.UntiledOpenLayers.Layer.WorldWindOpenLayers.Layer.XYZOpenLayers.Layer.YahooOpenLayers.LonLatOpenLayers.MapOpenLayers.MarkerOpenLayers.Marker.BoxOpenLayers.NumberOpenLayers.PixelOpenLayers.PopupOpenLayers.Popup.AnchoredOpenLayers.Popup.AnchoredBubbleOpenLayers.Popup.FramedOpenLayers.Popup.FramedCloudOpenLayers.ProjectionOpenLayers.ProtocolOpenLayers.Protocol.HTTPOpenLayers.Protocol.ResponseOpenLayers.Protocol.SQLOpenLayers.Protocol.SQL.GearsOpenLayers.Protocol.WFS.v1OpenLayers.Protocol.WFS.v1_0_0OpenLayers.Protocol.WFS.v1_1_0OpenLayers.RendererOpenLayers.Renderer.CanvasOpenLayers.Renderer.ElementsOpenLayers.Renderer.SVGOpenLayers.Renderer.VMLOpenLayers.RequestOpenLayers.RuleOpenLayers.SizeOpenLayers.StrategyOpenLayers.Strategy.BBOXOpenLayers.Strategy.ClusterOpenLayers.Strategy.FixedOpenLayers.Strategy.PagingOpenLayers.Strategy.SaveOpenLayers.StringOpenLayers.StyleOpenLayers.StyleMapOpenLayers.TileOpenLayers.Tile.ImageOpenLayers.Tile.WFSOpenLayers.Tween
propertyStyles, OpenLayers.Style
Protocol, OpenLayers.Protocol.OpenLayers
PUT, OpenLayers.Request
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralQ.html b/openlayers/doc/devdocs/search/GeneralQ.html new file mode 100644 index 0000000..8c388c6 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralQ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
queryVisible, OpenLayers.Control.WMSGetFeatureInfo
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralR.html b/openlayers/doc/devdocs/search/GeneralR.html new file mode 100644 index 0000000..b3f3c30 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralR.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
rad, Util
radius, OpenLayers.Handler.RegularPolygon
radiusHandle, OpenLayers.Control.ModifyFeature
raiseLayer, OpenLayers.Map
read_cap_Capability, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_DCPType, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_FeatureType, OpenLayers.Format.WFSCapabilities.v1
read_cap_FeatureTypeList, OpenLayers.Format.WFSCapabilities.v1
read_cap_Format, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_GetMap, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_LatLonBoundingBox, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_Layer, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_LegendURL, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_OnlineResource, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_Request, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_ScaleHint, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_Service, OpenLayers.Format.WMSCapabilities.v1_1
read_cap_Style, OpenLayers.Format.WMSCapabilities.v1_1
read_FeatureInfoResponse, OpenLayers.Format.WMSGetFeatureInfo
read_msGMLOutput, OpenLayers.Format.WMSGetFeatureInfo
read_ol_displayInLayerSwitcher, OpenLayers.Format.WMC.v1
read_ol_isBaseLayer, OpenLayers.Format.WMC.v1
read_ol_maxExtent, OpenLayers.Format.WMC.v1
read_ol_numZoomLevels, OpenLayers.Format.WMC.v1
read_ol_opacity, OpenLayers.Format.WMC.v1
read_ol_singleTile, OpenLayers.Format.WMC.v1
read_ol_transparent, OpenLayers.Format.WMC.v1
read_ol_units, OpenLayers.Format.WMC.v1
read_sld_MaxScaleDenominator, OpenLayers.Format.WMC.v1_1_0
read_sld_MinScaleDenominator, OpenLayers.Format.WMC.v1_1_0
read_sld_StyledLayerDescriptor, OpenLayers.Format.WMC.v1
read_wmc_Abstract, OpenLayers.Format.WMC.v1
read_wmc_BoundingBox, OpenLayers.Format.WMC.v1
read_wmc_Extension, OpenLayers.Format.WMC.v1
read_wmc_Format, OpenLayers.Format.WMC.v1
read_wmc_FormatList, OpenLayers.Format.WMC.v1
read_wmc_General, OpenLayers.Format.WMC.v1
read_wmc_LatLonBoundingBox, OpenLayers.Format.WMC.v1
read_wmc_Layer, OpenLayers.Format.WMC.v1
read_wmc_LayerList, OpenLayers.Format.WMC.v1
read_wmc_LegendURL, OpenLayers.Format.WMC.v1
read_wmc_MetadataURL, OpenLayers.Format.WMC.v1
read_wmc_Name, OpenLayers.Format.WMC.v1
read_wmc_OnlineResource, OpenLayers.Format.WMC.v1
read_wmc_Server, OpenLayers.Format.WMC.v1
read_wmc_SLD, OpenLayers.Format.WMC.v1
read_wmc_Style, OpenLayers.Format.WMC.v1
read_wmc_StyleList, OpenLayers.Format.WMC.v1
read_wmc_Title, OpenLayers.Format.WMC.v1
readChildNodes, OpenLayers.Format.XML
readNode, OpenLayers.Format.XML
readOgcExpression, OpenLayers.Format.Filter.v1
readSpatial, OpenLayers.Format.Filter.v1
readWithPOST, OpenLayers.Protocol.HTTP
Rectangle, OpenLayers.Geometry.Rectangle.OpenLayers.Geometry
rectDrag, OpenLayers.Control.OverviewMap
redrawBackgroundNode, OpenLayers.Renderer.Elements
redrawNode, OpenLayers.Renderer.Elements
regex2value, OpenLayers.Filter.Comparison
registerEvents, OpenLayers.Popup
registerImageListeners, OpenLayers.Popup
registerPriority, OpenLayers.Events
registerWheelEvents, OpenLayers.Control.MouseDefaults
registry, OpenLayers.Control.NavigationHistory
RegularPolygon, OpenLayers.Handler.RegularPolygon.OpenLayers.Handler
removeBox, OpenLayers.Handler.Box
removeButtons, OpenLayers.Control.PanZoom
removeByGeometry, OpenLayers.Control.Split
removeClass, OpenLayers.Element
removeComponents, OpenLayers.Geometry.Collection
removeControl, OpenLayers.Map
removeExcessTiles, OpenLayers.Layer.Grid
removeFeatures, OpenLayers.Layer.Vector
removeLayer, OpenLayers.Map
removePopup, OpenLayers.Map
removeTarget, OpenLayers.Control.Snapping
removeTargetLayer, OpenLayers.Control.Snapping
removeTimeout, OpenLayers.Handler.Drag
removeZoomBox, OpenLayers.Control.MouseDefaults
render, OpenLayers.Map
renderer, OpenLayers.Layer.Vector
Renderer, OpenLayers.Renderer.OpenLayers
rendererOptions, OpenLayers.Layer.Vector
rendererRoot, OpenLayers.Renderer.Elements
renderers, OpenLayers.Layer.Vector
renderTile, OpenLayers.Tile.Image
reportError, OpenLayers.Layer.Vector
reqFeatures, OpenLayers.Protocol.Response
Request, OpenLayers.Ajax.Request.OpenLayers.Ajax
requestFailure, OpenLayers.Layer.GML
requestType, OpenLayers.Protocol.Response
resetBackBuffer, OpenLayers.Tile.Image
resetLayersZIndex, OpenLayers.Map
resetRoots, OpenLayers.Layer.Vector.RootContainer
resetVertices, OpenLayers.Control.ModifyFeature
resFactor, OpenLayers.Strategy.BBOX
RESHAPE, OpenLayers.Control.ModifyFeature
RESIZE, OpenLayers.Control.ModifyFeature
resolutionFactor, OpenLayers.Control.OverviewMap
responders, OpenLayers.Ajax.Responders
respondToReadyState, OpenLayers.Ajax.Request
restore, OpenLayers.Control.NavigationHistory
restoring, OpenLayers.Control.NavigationHistory
restrictedExtent, OpenLayers.Map
right, OpenLayers.Bounds
rightclick, OpenLayers.Handler.Click
rightclickTimerId, OpenLayers.Handler.Click
RootContainer, OpenLayers.Layer.Vector.RootContainer.OpenLayers.Layer.Vector
rootPrefix, OpenLayers.Format.WMC.v1
ROTATE, OpenLayers.Control.ModifyFeature
rounded, OpenLayers.Popup.AnchoredBubble
rssns, OpenLayers.Format.GeoRSS
Rule, OpenLayers.Rule.OpenLayers
rules, OpenLayers.Style
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralS.html b/openlayers/doc/devdocs/search/GeneralS.html new file mode 100644 index 0000000..7a9a198 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
save, OpenLayers.Strategy.Save
Save, OpenLayers.Strategy.Save.OpenLayers.Strategy
saveFeatureState, OpenLayers.Protocol.SQL.Gears
scale, OpenLayers.Bounds
Scale, OpenLayers.Control.Scale.OpenLayers.Control
ScaleLine, OpenLayers.Control.ScaleLine.OpenLayers.Control
scales, OpenLayers.Layer
schema, OpenLayers.Protocol.WFS.v1
schemaLocationAttr, OpenLayers.Format.WFST.v1
segmentsIntersect, OpenLayers.Geometry.OpenLayers.Geometry
selectBestFeature, OpenLayers.Control.GetFeature
selectControl, OpenLayers.Control.ModifyFeature
selectedFeatures, OpenLayers.Layer.Vector
selectFeature, OpenLayers.Control.ModifyFeature
SelectFeature, OpenLayers.Control.SelectFeature.OpenLayers.Control
selectSingle, OpenLayers.Control.GetFeature
selectStyle, OpenLayers.Control.SelectFeature
selectUrl, OpenLayers.Layer.HTTPRequest
separator, OpenLayers.Control.MousePosition
seperator, OpenLayers.Control.Attribution
serialize, OpenLayers.Format.JSON
serializeTags, OpenLayers.Format.OSM
serializeXMLToString, OpenLayers.Ajax.Response
serviceVersion, OpenLayers.Layer.TMS
setAttributeNS, OpenLayers.Format.XML
setBaseLayer, OpenLayers.Map
setCanvasStyle, OpenLayers.Renderer.Canvas
setCode, OpenLayers.Lang
setContentHTML, OpenLayers.Popup
setDefaultStyle, OpenLayers.Style
setEvent, OpenLayers.Handler
setFeatureState, OpenLayers.Control.ModifyFeature
setFilterProperty, OpenLayers.Format.WFST.v1
setIsBaseLayer, OpenLayers.Layer
setLayerFilter, OpenLayers.Layer.ArcGIS93Rest
setLayerIndex, OpenLayers.Map
setLayerQuery, OpenLayers.Layer.ArcIMS
setLayerZIndex, OpenLayers.Map
setListeners, OpenLayers.Control.NavigationHistory
setMapType, OpenLayers.Layer.Google
setModifiers, OpenLayers.Control.GetFeature
setName, OpenLayers.Layer
setNamespace, OpenLayers.Format.XML
setNodeDimension, OpenLayers.Renderer.VML
setRectPxBounds, OpenLayers.Control.OverviewMap
setRequestHeaders, OpenLayers.Ajax.Request
setRicoCorners, OpenLayers.Popup.AnchoredBubble
setSource, OpenLayers.Control.Split
setState, OpenLayers.Format.OSM
setTargets, OpenLayers.Control.Snapping
shiftColumn, OpenLayers.Layer.Grid
shiftRow, OpenLayers.Layer.Grid
shouldCluster, OpenLayers.Strategy.Cluster
showControls, OpenLayers.Control.LayerSwitcher
showTile, OpenLayers.Tile
showToggle, OpenLayers.Control.OverviewMap
sides, OpenLayers.Handler.RegularPolygon
single, OpenLayers.Handler.Click
SINGLE_TILE_PARAMS, OpenLayers.Layer.MapGuide
singleFeatureType, OpenLayers.Format.GML.Base
Size, OpenLayers.Size.OpenLayers
SLD, OpenLayers.Format.SLD.OpenLayers.Format
slider, OpenLayers.Control.PanZoomBar
slideRatio, OpenLayers.Control.PanZoom
sliderEvents, OpenLayers.Control.PanZoomBar
smoothDragPan, OpenLayers.Layer.EventPane
snapAngle, OpenLayers.Handler.RegularPolygon
Snapping, OpenLayers.Control.Snapping.OpenLayers.Control
snapToggle, OpenLayers.Handler.RegularPolygon
source, OpenLayers.Control.Split
sourceFilter, OpenLayers.Control.Split
sourceOptions, OpenLayers.Control.Split
space, OpenLayers.Format.JSON
Spatial, OpenLayers.Filter.Spatial.OpenLayers.Filter
sphericalMecator, OpenLayers.Layer.XYZ
spiralTileLoad, OpenLayers.Layer.Grid
Split, OpenLayers.Control.Split.OpenLayers.Control
splitWithSegment, OpenLayers.Geometry.LineString
SQL, OpenLayers.Protocol.SQL.OpenLayers.Protocol
startBox, OpenLayers.Handler.Box
started, OpenLayers.Handler.Drag
startTransition, OpenLayers.Tile.Image
state, OpenLayers.Feature.Vector
stateName, OpenLayers.Format.WFST.v1
status, OpenLayers.Ajax.Response
statusText, OpenLayers.Ajax.Response
stopClick, OpenLayers.Handler.Feature
stopDouble, OpenLayers.Handler.Click
stopMove, OpenLayers.Handler.Hover
stopObserving, OpenLayers.Event
stopObservingElement, OpenLayers.Event
stopSingle, OpenLayers.Handler.Click
stopUp, OpenLayers.Handler.Feature
strategies, OpenLayers.Layer.Vector
Strategy, OpenLayers.Strategy.OpenLayers
string, OpenLayers.Format.JSON.serialize
Style, OpenLayers.Style.OpenLayers
styleBaseUrl, OpenLayers.Format.KML
styleMap, OpenLayers.Layer.Vector
StyleMap, OpenLayers.StyleMap.OpenLayers
suffix, OpenLayers.Control.MousePosition
SUPPORTED_TRANSITIONS, OpenLayers.Layer
surface, OpenLayers.Format.GML.v3
SVG, OpenLayers.Renderer.SVG.OpenLayers.Renderer
switchModeTo, OpenLayers.Control.MouseToolbar
symbol, OpenLayers.Renderer.Elements.OpenLayers.Renderer
symbolCache, OpenLayers.Renderer.VML
symbolizer, OpenLayers.Rule
SYMBOLIZER_PREFIXES, OpenLayers.Style.OpenLayers.Style
symbolSize, OpenLayers.Renderer.SVG
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralSymbols.html b/openlayers/doc/devdocs/search/GeneralSymbols.html new file mode 100644 index 0000000..0a401ac --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralSymbols.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
_addZoomBar, OpenLayers.Control.PanZoomBar
_complete, OpenLayers.Ajax.Request
_getNodes, Util
_getScriptLocation, OpenLayers
_removeButton, OpenLayers.Control.PanZoom
_removeElementObservers, OpenLayers.Event
_removeZoomBar, OpenLayers.Control.PanZoomBar
_scriptName, OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralT.html b/openlayers/doc/devdocs/search/GeneralT.html new file mode 100644 index 0000000..956bce5 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralT.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
tableName, OpenLayers.Protocol.SQL
targetFilter, OpenLayers.Control.Split
termsOfUse, OpenLayers.Layer.Google
testTarget, OpenLayers.Control.Snapping
textRoot, OpenLayers.Renderer.Elements
theme, OpenLayers.Map
thousandsSeparator, OpenLayers.Number
threshold, OpenLayers.Strategy.Cluster
TILE_HEIGHT, OpenLayers.Map
TILE_PARAMS, OpenLayers.Layer.MapGuide
TILE_WIDTH, OpenLayers.Map
TileCache, OpenLayers.Layer.TileCache.OpenLayers.Layer
tileOrigin, OpenLayers.Layer.TMS
timeEnd, OpenLayers.Console
timeoutId, OpenLayers.Handler.Drag
timer, OpenLayers.Strategy.Save
TMS, OpenLayers.Layer.TMS.OpenLayers.Layer
toArray, OpenLayers.Bounds
toBBOX, OpenLayers.Bounds
toFloat, Util
toGeometry, OpenLayers.Bounds
toggleClass, OpenLayers.Element
toggleSelect, OpenLayers.Control.SelectFeature
tokenRegEx, OpenLayers.String.OpenLayers.String
tolerance, OpenLayers.Control.Split
top, OpenLayers.Bounds
topInUnits, OpenLayers.Control.ScaleLine
topOutUnits, OpenLayers.Control.ScaleLine
toState, OpenLayers.Feature.Vector
trace, OpenLayers.Console
transforms, OpenLayers.Projection
transitionEffect, OpenLayers.Layer
translationParameters, OpenLayers.Renderer.SVG
triggerCallback, OpenLayers.Handler.Feature
triggerEvent, OpenLayers.Events
triggerRead, OpenLayers.Strategy.BBOX
triggerSave, OpenLayers.Strategy.Save
Try, Util
Tween, OpenLayers.Tween.OpenLayers
typeOfFid, OpenLayers.Protocol.SQL.Gears
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralU.html b/openlayers/doc/devdocs/search/GeneralU.html new file mode 100644 index 0000000..41acb34 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
un, OpenLayers.Events
unfreezeFeature, OpenLayers.Protocol.SQL.Gears
unhighlight, OpenLayers.Control.SelectFeature
unload, OpenLayers.Tile
unloadCache, OpenLayers.Event
unloadDestroy, OpenLayers.Map
unrenderedFeatures, OpenLayers.Layer.Vector
unselectFeature, OpenLayers.Control.ModifyFeature
updateAttribution, OpenLayers.Control.Attribution
updateBlocks, OpenLayers.Popup.Framed
updateHandler, OpenLayers.Control.Measure
updateMap, OpenLayers.Control.LayerSwitcher
updateMapToRect, OpenLayers.Control.OverviewMap
updatePosition, OpenLayers.Popup
updateRectToMap, OpenLayers.Control.OverviewMap
updateScale, OpenLayers.Control.Scale
updateSizeDestroy, OpenLayers.Map
upFeature, OpenLayers.Control.DragFeature
upperBoundary, OpenLayers.Filter.Comparison
URL_HASH_FACTOR, OpenLayers.Layer.HTTPRequest
urlMatches, OpenLayers.Control.WMSGetFeatureInfo
useAsyncOverlay, OpenLayers.Layer.MapGuide
useFeedTitle, OpenLayers.Layer.GeoRSS
useHttpTile, OpenLayers.Layer.MapGuide
useOverlay, OpenLayers.Layer.MapGuide
userError, OpenLayers.Console
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralV.html b/openlayers/doc/devdocs/search/GeneralV.html new file mode 100644 index 0000000..e7a103c --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralV.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
v1_1_1, OpenLayers.Format.WMSCapabilities/v1_1_1.OpenLayers.Format.WMSCapabilities
v2, OpenLayers.Format.GML.v2.OpenLayers.Format.GML
v3, OpenLayers.Format.GML.v3.OpenLayers.Format.GML
value2regex, OpenLayers.Filter.Comparison
vectorMode, OpenLayers.Layer.WFS
vectorRoot, OpenLayers.Renderer.Elements
vendorParams, OpenLayers.Control.WMSGetFeatureInfo
VERSION_NUMBER, OpenLayers
vertices, OpenLayers.Control.ModifyFeature
viewPortDiv, OpenLayers.Map
viewRequestID, OpenLayers.Map
VirtualEarth, OpenLayers.Layer.VirtualEarth.OpenLayers.Layer
virtualStyle, OpenLayers.Control.ModifyFeature
virtualVertices, OpenLayers.Control.ModifyFeature
visibility, OpenLayers.Layer
VML, OpenLayers.Renderer.VML.OpenLayers.Renderer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralW.html b/openlayers/doc/devdocs/search/GeneralW.html new file mode 100644 index 0000000..b78de29 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralW.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
w, OpenLayers.Size
warn, OpenLayers.Console
WFSCapabilities, OpenLayers.Format.WFSCapabilities.OpenLayers.Format
WFSDescribeFeatureType, OpenLayers.Format
wfsns, OpenLayers.Format.WFS
WFST, OpenLayers.Format
wheelChange, OpenLayers.Control.Navigation
wheelDown, OpenLayers.Control.Navigation
wheelListener, OpenLayers.Handler.MouseWheel
wheelObserver, OpenLayers.Control.MouseDefaults
wheelUp, OpenLayers.Control.Navigation
wheelZoom, OpenLayers.Handler.MouseWheel
width, OpenLayers.Geometry.Rectangle
WKT, OpenLayers.Format.WKT.OpenLayers.Format
wktParser, OpenLayers.Protocol.SQL.Gears
WMC, OpenLayers.Format.WMC.OpenLayers.Format
WMS, OpenLayers.Layer.WMS.OpenLayers.Layer
WMSCapabilities, OpenLayers.Format.WMSCapabilities.OpenLayers.Format
WMSGetFeatureInfo, OpenLayers.Format.WMSGetFeatureInfo.OpenLayers.Format
WMSGetFeatureInfo>, OpenLayers.Control.WMSGetFeatureInfo.<OpenLayers.Control
WorldWind, OpenLayers.Layer.WorldWind.OpenLayers.Layer
write_ol_MapExtension, OpenLayers.Format.WMC.v1
write_wmc_FormatList, OpenLayers.Format.WMC.v1
write_wmc_General, OpenLayers.Format.WMC.v1
write_wmc_LayerExtension, OpenLayers.Format.WMC.v1
write_wmc_LayerList, OpenLayers.Format.WMC.v1
write_wmc_MetadataURL, OpenLayers.Format.WMC.v1
write_wmc_OnlineResource, OpenLayers.Format.WMC.v1
write_wmc_Server, OpenLayers.Format.WMC.v1
write_wmc_StyleList, OpenLayers.Format.WMC.v1
writeIndent, OpenLayers.Format.JSON
writeNewline, OpenLayers.Format.JSON
writeNode, OpenLayers.Format.XML
writeSpace, OpenLayers.Format.JSON
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralX.html b/openlayers/doc/devdocs/search/GeneralX.html new file mode 100644 index 0000000..2eea5b3 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralX.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
X, OpenLayers.Control.PanZoom
xlinkns, OpenLayers.Renderer.SVG
XML, OpenLayers.Format.XML.OpenLayers.Format
xmldom, OpenLayers.Format.XML
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralY.html b/openlayers/doc/devdocs/search/GeneralY.html new file mode 100644 index 0000000..5929ad7 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralY.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Y, OpenLayers.Control.PanZoom
Yahoo, OpenLayers.Layer.Yahoo.OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/GeneralZ.html b/openlayers/doc/devdocs/search/GeneralZ.html new file mode 100644 index 0000000..59a2db8 --- /dev/null +++ b/openlayers/doc/devdocs/search/GeneralZ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Z_INDEX_BASE, OpenLayers.Map
Z_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
Z_ORDER_DRAWING_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
Z_ORDER_Y_ORDER, OpenLayers.ElementsIndexer.IndexingMethods
zoom, OpenLayers.Map
zoomBarDiv, OpenLayers.Control.PanZoomBar
zoomBarDown, OpenLayers.Control.PanZoomBar
zoomBarDrag, OpenLayers.Control.PanZoomBar
zoomBarUp, OpenLayers.Control.PanZoomBar
zoomBoxEnd, OpenLayers.Control.MouseDefaults
zoomBoxKeyMask, OpenLayers.Control.Navigation
zoomIn, OpenLayers.Map
zoomLevels, OpenLayers.Layer.WorldWind
zoomOut, OpenLayers.Map
ZoomPanel, OpenLayers.Control.ZoomPanel.OpenLayers.Control
zoomStopHeight, OpenLayers.Control.PanZoomBar
zoomStopWidth, OpenLayers.Control.PanZoomBar
zoomTo, OpenLayers.Map
zoomToExtent, OpenLayers.Map
zoomToMaxExtent, OpenLayers.Map
zoomToScale, OpenLayers.Map
zoomWheelEnabled, OpenLayers.Control.Navigation
zoomWorldIcon, OpenLayers.Control.PanZoomBar
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/NoResults.html b/openlayers/doc/devdocs/search/NoResults.html new file mode 100644 index 0000000..02ce888 --- /dev/null +++ b/openlayers/doc/devdocs/search/NoResults.html @@ -0,0 +1,15 @@ + + + + + + + + + + + + +
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesA.html b/openlayers/doc/devdocs/search/PropertiesA.html new file mode 100644 index 0000000..c29210e --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
activateOnDraw, OpenLayers.Control.NavigationHistory
activeColor, OpenLayers.Control.LayerSwitcher
activeRequestCount, OpenLayers.Ajax
allOverlays, OpenLayers.Map
allowSelection, OpenLayers.Control
alpha, OpenLayers.Layer
alwaysInRange, OpenLayers.Layer
alwaysZoom, OpenLayers.Control.ZoomBox
angle, OpenLayers.Handler.RegularPolygon
areaTags, OpenLayers.Format.OSM
argParserClass, OpenLayers.Control.Permalink
ascending, OpenLayers.Control.LayerSwitcher
aspectRatio, OpenLayers.Layer.Image
async, OpenLayers.Layer.ArcIMS
attributes, OpenLayers.Feature.Vector
attribution, OpenLayers.Layer
auto, OpenLayers.Strategy.Save
autoActivate, OpenLayers.Strategy
autoPan, OpenLayers.Control.OverviewMap
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesB.html b/openlayers/doc/devdocs/search/PropertiesB.html new file mode 100644 index 0000000..85e53a8 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesB.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
backBufferTile, OpenLayers.Tile.Image
backgroundColor, OpenLayers.Popup
base, OpenLayers.Control.Permalink
baseLayer, OpenLayers.Map
baseLayers, OpenLayers.Control.LayerSwitcher
baseLayersDiv, OpenLayers.Control.LayerSwitcher
begin, OpenLayers.Tween
blocks, OpenLayers.Popup.Framed
border, OpenLayers.Popup
bottom, OpenLayers.Bounds
bottomInUnits, OpenLayers.Control.ScaleLine
bottomOutUnits, OpenLayers.Control.ScaleLine
boxCharacteristics, OpenLayers.Handler.Box
boxDivClassName, OpenLayers.Handler.Box
buffer, OpenLayers.Layer.Grid
buttonClicked, OpenLayers.Control.MouseToolbar
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesC.html b/openlayers/doc/devdocs/search/PropertiesC.html new file mode 100644 index 0000000..e56eeee --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
calculateOffset, OpenLayers.Icon
callback, OpenLayers.Protocol.HTTP
canvas, OpenLayers.Renderer.Canvas
center, OpenLayers.Map
centerLonLat, OpenLayers.Bounds
checkTags, OpenLayers.Format.OSM
clearOnDeactivate, OpenLayers.Control.NavigationHistory
click, OpenLayers.Control.GetFeature
closeDiv, OpenLayers.Popup
closeOnMove, OpenLayers.Popup
clustering, OpenLayers.Strategy.Cluster
clusters, OpenLayers.Strategy.Cluster
collectionName, OpenLayers.Format.GML
compare, OpenLayers.ElementsIndexer
components, OpenLayers.Geometry.Collection
container, OpenLayers.Renderer
contentDiv, OpenLayers.Popup
contentHTML, OpenLayers.Popup
contentSize, OpenLayers.Popup
control, OpenLayers.Handler
cssMap, OpenLayers.Format.SLD.v1
curve, OpenLayers.Format.GML.v3
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesD.html b/openlayers/doc/devdocs/search/PropertiesD.html new file mode 100644 index 0000000..67cd419 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesD.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
databaseName, OpenLayers.Protocol.SQL
dataLayers, OpenLayers.Control.LayerSwitcher
dataLayersDiv, OpenLayers.Control.LayerSwitcher
dataLbl, OpenLayers.Control.LayerSwitcher
db, OpenLayers.Protocol.SQL.Gears
decimalSeparator, OpenLayers.Number
DEFAULT_PARAMS, OpenLayers.Layer.WFS
defaultCode, OpenLayers.Lang
defaultControl, OpenLayers.Control.Panel
defaultGraphicFormat, OpenLayers.Format.SLD.v1
defaultSize, OpenLayers.Layer.MapGuide
defaultsPerSymbolizer, OpenLayers.Style
defaultStyleName, OpenLayers.Format.WMC.v1
defaultStyleTitle, OpenLayers.Format.WMC.v1
defaultSymbolizer, OpenLayers.Format.SLD.v1
deferDelete, OpenLayers.Control.Split
delayedTrigger, OpenLayers.Control.Measure
deleteCodes, OpenLayers.Control.ModifyFeature
disableFirefoxOverflowHack, OpenLayers.Popup
displayOutsideMaxExtent, OpenLayers.Layer
displaySystem, OpenLayers.Control.Measure
displaySystemUnits, OpenLayers.Control.Measure
distanceUnits, OpenLayers.Filter.Spatial
divEvents, OpenLayers.Control.PanZoomBar
double, OpenLayers.Handler.Click
dragCallbacks, OpenLayers.Control.DragFeature
dragControl, OpenLayers.Control.ModifyFeature
dragHandle, OpenLayers.Control.ModifyFeature
dragHandler, OpenLayers.Handler.Box
dragObject, OpenLayers.Layer.Google
dragPan, OpenLayers.Control.Navigation
drawing, OpenLayers.Handler.Point
duration, OpenLayers.Tween
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesE.html b/openlayers/doc/devdocs/search/PropertiesE.html new file mode 100644 index 0000000..c35e4f1 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesE.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
easing, OpenLayers.Tween
eBottom, OpenLayers.Control.ScaleLine
edge, OpenLayers.Control.Split
elseFilter, OpenLayers.Rule
eTop, OpenLayers.Control.ScaleLine
eventHandler, OpenLayers.Events
eventListener, OpenLayers.handler.Keyboard
EVENTMAP, OpenLayers.Handler.Feature
Events, OpenLayers.Ajax.Request
eventTypes, OpenLayers.Events
evt, OpenLayers.Handler
extendDefault, OpenLayers.StyleMap
externalProjection, OpenLayers.Format
extract, OpenLayers.Format.GeoJSON
extractRoutes, OpenLayers.Format.GPX
extractTracks, OpenLayers.Format.GPX
extractWaypoints, OpenLayers.Format.GPX
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesF.html b/openlayers/doc/devdocs/search/PropertiesF.html new file mode 100644 index 0000000..4bc8370 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesF.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
featureAdded, OpenLayers.Control.DrawFeature
featureCallbacks, OpenLayers.Control.DragFeature
featureClass, OpenLayers.Layer.WFS
featureCoordSys, OpenLayers.Layer.ArcIMS
featureDescription, OpenLayers.Format.GeoRSS
featureIdentifier, OpenLayers.Format.WMSGetFeatureInfo
featureName, OpenLayers.Format.GML
featurens, OpenLayers.Format.GeoRSS
featureTitle, OpenLayers.Format.GeoRSS
fetched, OpenLayers.Format.KML
fid, OpenLayers.Feature.Vector
FID_PREFIX, OpenLayers.Protocol.SQL.Gears
fidRegExp, OpenLayers.Protocol.SQL.Gears
fids, OpenLayers.Filter.FeatureId
filter, OpenLayers.Rule
filterCoordSys, OpenLayers.Layer.ArcIMS
filterMap, OpenLayers.Format.Filter.v1
filters, OpenLayers.Filter.Logical
finish, OpenLayers.Tween
fixedRadius, OpenLayers.Handler.RegularPolygon
foldersDesc, OpenLayers.Format.KML
foldersName, OpenLayers.Format.KML
fontStyleKeys, OpenLayers.Format.ArcXML
formatObject, OpenLayers.Layer.WFS
fractionalZoom, OpenLayers.Map
frame, OpenLayers.Tile.Image
freehand, OpenLayers.Handler.Path
freehandToggle, OpenLayers.Handler.Path
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesG.html b/openlayers/doc/devdocs/search/PropertiesG.html new file mode 100644 index 0000000..f28bb7c --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesG.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
geodesic, OpenLayers.Control.Measure
geometryMap, OpenLayers.Renderer.Canvas
geometryType, OpenLayers.Layer.Vector
geons, OpenLayers.Format.GeoRSS
georssns, OpenLayers.Format.GeoRSS
geoToleranceCache, OpenLayers.Control.Snapping
gmlFormat, OpenLayers.Format.WMSGetFeatureInfo
gmlns, OpenLayers.Format.GML
gmlParse, OpenLayers.Format.GeoRSS
granularity, OpenLayers.Control.MousePosition
graphicFormats, OpenLayers.Format.SLD.v1
greedy, OpenLayers.Control.Snapping
grid, OpenLayers.Layer.Grid
groupDiv, OpenLayers.Popup
gutter, OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesH.html b/openlayers/doc/devdocs/search/PropertiesH.html new file mode 100644 index 0000000..ae14a31 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesH.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
h, OpenLayers.Size
handleRightClicks, OpenLayers.Control.Navigation
headers, OpenLayers.Protocol.HTTP
height, OpenLayers.Geometry.Rectangle
highlightOnly, OpenLayers.Control.SelectFeature
hoverRequest, OpenLayers.Control.WMSGetFeatureInfo
hoverResponse, OpenLayers.Control.GetFeature
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesI.html b/openlayers/doc/devdocs/search/PropertiesI.html new file mode 100644 index 0000000..2f9d58f --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesI.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
imageDiv, OpenLayers.Icon
imageOffset, OpenLayers.Layer
imageSrc, OpenLayers.Popup.Framed
imgDiv, OpenLayers.Tile.Image
ImgPath, Util
includeXY, OpenLayers.Events
indent, OpenLayers.Format.JSON
Indexer, OpenLayers.Renderer.Elements
indices, OpenLayers.ElementsIndexer
infoFormat, OpenLayers.Control.WMSGetFeatureInfo
inRange, OpenLayers.Layer
interestingTagsExclude, OpenLayers.Format.OSM
internalns, OpenLayers.Format.KML
internalProjection, OpenLayers.Format
irregular, OpenLayers.Handler.RegularPolygon
isBackBuffer, OpenLayers.Tile.Image
isDefault, OpenLayers.Style
isFirstDraw, OpenLayers.Tile.Image
isGecko, OpenLayers.Renderer.SVG
isLoading, OpenLayers.Tile
isVector, OpenLayers.Layer.Vector
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesJ.html b/openlayers/doc/devdocs/search/PropertiesJ.html new file mode 100644 index 0000000..2e40b8a --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesJ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
jsonParser, OpenLayers.Protocol.SQL.Gears
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesK.html b/openlayers/doc/devdocs/search/PropertiesK.html new file mode 100644 index 0000000..794c911 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesK.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
keepData, OpenLayers.Format
keyMask, OpenLayers.Handler
kmlns, OpenLayers.Format.KML
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesL.html b/openlayers/doc/devdocs/search/PropertiesL.html new file mode 100644 index 0000000..2d55cb2 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesL.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
lastDown, OpenLayers.Handler.Point
lastFeature, OpenLayers.Handler.Feature
lastPixel, OpenLayers.Control.DragFeature
lastRatio, OpenLayers.Tile.Image
lastSeqID, Util
lastUp, OpenLayers.Handler.Point
lastXy, OpenLayers.Control.MousePosition
lat, OpenLayers.LonLat
layerAlphaHack, OpenLayers.Tile.Image
layerContainerDiv, OpenLayers.Map
layerContainerOrigin, OpenLayers.Map
layerIdentifier, OpenLayers.Format.WMSGetFeatureInfo
layerParams, OpenLayers.Format.WMC
layersDiv, OpenLayers.Control.LayerSwitcher
layerStates, OpenLayers.Control.LayerSwitcher
layerUrls, OpenLayers.Control.WMSGetFeatureInfo
left, OpenLayers.Bounds
length, OpenLayers.Strategy.Paging
level, OpenLayers.Format.JSON
limit, OpenLayers.Control.NavigationHistory
line, OpenLayers.Handler.Path
loaded, OpenLayers.Layer.GML
locked, OpenLayers.Renderer
lon, OpenLayers.LonLat
lowerBoundary, OpenLayers.Filter.Comparison
lzd, OpenLayers.Layer.WorldWind
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesM.html b/openlayers/doc/devdocs/search/PropertiesM.html new file mode 100644 index 0000000..fd2bf25 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesM.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
mapObject, OpenLayers.Layer.EventPane
mapOptions, OpenLayers.Control.OverviewMap
marker, OpenLayers.Feature
markerClick, OpenLayers.Layer.Text
markers, OpenLayers.Layer.Markers
matchCase, OpenLayers.Filter.Comparison
maxDepth, OpenLayers.Format.KML
maximizeDiv, OpenLayers.Control.LayerSwitcher
maxRatio, OpenLayers.Control.OverviewMap
maxScaleDenominator, OpenLayers.Rule
maxWidth, OpenLayers.Control.ScaleLine
maxZIndex, OpenLayers.ElementsIndexer
minimizeDiv, OpenLayers.Control.LayerSwitcher
minimumSymbolizer, OpenLayers.Renderer.Elements
minRatio, OpenLayers.Control.OverviewMap
minRectDisplayClass, OpenLayers.Control.OverviewMap
minRectSize, OpenLayers.Control.OverviewMap
minScaleDenominator, OpenLayers.Rule
modified, OpenLayers.Control.ModifyFeature
modifiers, OpenLayers.Control.GetFeature
mouseDown, OpenLayers.Handler.Point
mousePosition, OpenLayers.Handler.MouseWheel
multi, OpenLayers.Handler.Point
multiCurve, OpenLayers.Format.GML.v3
multiSurface, OpenLayers.Format.GML.v3
mutual, OpenLayers.Control.Split
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesN.html b/openlayers/doc/devdocs/search/PropertiesN.html new file mode 100644 index 0000000..ee70f62 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesN.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
namedLayersAsArray, OpenLayers.Format.SLD
namespaceAlias, OpenLayers.Format.XML
newline, OpenLayers.Format.JSON
next, OpenLayers.Control.NavigationHistory
nextOptions, OpenLayers.Control.NavigationHistory
nextStack, OpenLayers.Control.NavigationHistory
noMagic, OpenLayers.Layer.WMS
NULL_FEATURE_STATE, OpenLayers.Protocol.SQL.Gears
NULL_GEOMETRY, OpenLayers.Protocol.SQL.Gears
num, OpenLayers.Strategy.Paging
numberRegEx, OpenLayers.String.OpenLayers.String
numDigits, OpenLayers.Control.MousePosition
numLoadingTiles, OpenLayers.Layer.Grid
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesO.html b/openlayers/doc/devdocs/search/PropertiesO.html new file mode 100644 index 0000000..69ae349 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
object, OpenLayers.Events
observers, OpenLayers.Event
ogcns, OpenLayers.Format.WFS
oldOnselectstart, OpenLayers.Handler.Drag
onBeforeSelect, OpenLayers.Control.SelectFeature
onComplete, OpenLayers.Control.DragFeature
onDrag, OpenLayers.Control.DragFeature
onModification, OpenLayers.Control.ModifyFeature
onModificationEnd, OpenLayers.Control.ModifyFeature
onModificationStart, OpenLayers.Control.ModifyFeature
onSelect, OpenLayers.Control.SelectFeature
onStart, OpenLayers.Control.DragFeature
onUnselect, OpenLayers.Control.SelectFeature
order, OpenLayers.ElementsIndexer
origin, OpenLayers.Handler.RegularPolygon
out, OpenLayers.Control.ZoomBox
ovmap, OpenLayers.Control.OverviewMap
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesP.html b/openlayers/doc/devdocs/search/PropertiesP.html new file mode 100644 index 0000000..2f4951d --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesP.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
padding, OpenLayers.Popup
paddingForPopups, OpenLayers.Map
paging, OpenLayers.Strategy.Paging
panDuration, OpenLayers.Map
pane, OpenLayers.Layer.EventPane
panMethod, OpenLayers.Map
panned, OpenLayers.Control.DragPan
panRatio, OpenLayers.Map
panTween, OpenLayers.Map
parent, OpenLayers.Geometry
parseCoords, OpenLayers.Format.GeoJSON
performedDrag, OpenLayers.Control.MouseDefaults
placemarksDesc, OpenLayers.Format.KML
playing, OpenLayers.Tween
popup, OpenLayers.Feature
popupClass, OpenLayers.Feature
popups, OpenLayers.Map
popupSize, OpenLayers.Layer.GeoRSS
postReadFiltering, OpenLayers.Protocol.SQL
poweredBy, OpenLayers.Layer.Google
precedence, OpenLayers.Control.Snapping
precision, Util
prefix, OpenLayers.Control.MousePosition
preload, OpenLayers.Strategy.Fixed
pretty, OpenLayers.Format.JSON
previous, OpenLayers.Control.NavigationHistory
previousOptions, OpenLayers.Control.NavigationHistory
previousStack, OpenLayers.Control.NavigationHistory
priv, OpenLayers.Protocol.Response
proj, OpenLayers.Projection
projCode, OpenLayers.Projection
propertyStyles, OpenLayers.Style
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesQ.html b/openlayers/doc/devdocs/search/PropertiesQ.html new file mode 100644 index 0000000..8c388c6 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesQ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
queryVisible, OpenLayers.Control.WMSGetFeatureInfo
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesR.html b/openlayers/doc/devdocs/search/PropertiesR.html new file mode 100644 index 0000000..78cd4bc --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesR.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
radius, OpenLayers.Handler.RegularPolygon
radiusHandle, OpenLayers.Control.ModifyFeature
readWithPOST, OpenLayers.Protocol.HTTP
registry, OpenLayers.Control.NavigationHistory
renderer, OpenLayers.Layer.Vector
rendererOptions, OpenLayers.Layer.Vector
rendererRoot, OpenLayers.Renderer.Elements
renderers, OpenLayers.Layer.Vector
reportError, OpenLayers.Layer.Vector
reqFeatures, OpenLayers.Protocol.Response
requestType, OpenLayers.Protocol.Response
resFactor, OpenLayers.Strategy.BBOX
resolutionFactor, OpenLayers.Control.OverviewMap
responders, OpenLayers.Ajax.Responders
restoring, OpenLayers.Control.NavigationHistory
restrictedExtent, OpenLayers.Map
right, OpenLayers.Bounds
rightclickTimerId, OpenLayers.Handler.Click
rootPrefix, OpenLayers.Format.WMC.v1
rounded, OpenLayers.Popup.AnchoredBubble
rssns, OpenLayers.Format.GeoRSS
rules, OpenLayers.Style
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesS.html b/openlayers/doc/devdocs/search/PropertiesS.html new file mode 100644 index 0000000..313807a --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
saveFeatureState, OpenLayers.Protocol.SQL.Gears
scales, OpenLayers.Layer
schema, OpenLayers.Protocol.WFS.v1
selectControl, OpenLayers.Control.ModifyFeature
selectedFeatures, OpenLayers.Layer.Vector
selectStyle, OpenLayers.Control.SelectFeature
separator, OpenLayers.Control.MousePosition
seperator, OpenLayers.Control.Attribution
serialize, OpenLayers.Format.JSON
serviceVersion, OpenLayers.Layer.TMS
sides, OpenLayers.Handler.RegularPolygon
single, OpenLayers.Handler.Click
singleFeatureType, OpenLayers.Format.GML.Base
slider, OpenLayers.Control.PanZoomBar
slideRatio, OpenLayers.Control.PanZoom
sliderEvents, OpenLayers.Control.PanZoomBar
smoothDragPan, OpenLayers.Layer.EventPane
snapAngle, OpenLayers.Handler.RegularPolygon
snapToggle, OpenLayers.Handler.RegularPolygon
source, OpenLayers.Control.Split
sourceFilter, OpenLayers.Control.Split
sourceOptions, OpenLayers.Control.Split
space, OpenLayers.Format.JSON
sphericalMecator, OpenLayers.Layer.XYZ
start, OpenLayers.Handler.Drag
started, OpenLayers.Handler.Drag
state, OpenLayers.Feature.Vector
stateName, OpenLayers.Format.WFST.v1
status, OpenLayers.Ajax.Response
statusText, OpenLayers.Ajax.Response
stopClick, OpenLayers.Handler.Feature
stopDouble, OpenLayers.Handler.Click
stopMove, OpenLayers.Handler.Hover
stopSingle, OpenLayers.Handler.Click
stopUp, OpenLayers.Handler.Feature
strategies, OpenLayers.Layer.Vector
styleBaseUrl, OpenLayers.Format.KML
styleMap, OpenLayers.Layer.Vector
suffix, OpenLayers.Control.MousePosition
SUPPORTED_TRANSITIONS, OpenLayers.Layer
surface, OpenLayers.Format.GML.v3
symbolCache, OpenLayers.Renderer.VML
symbolizer, OpenLayers.Rule
symbolSize, OpenLayers.Renderer.SVG
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesSymbols.html b/openlayers/doc/devdocs/search/PropertiesSymbols.html new file mode 100644 index 0000000..0c4bec9 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesSymbols.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
_complete, OpenLayers.Ajax.Request
_scriptName, OpenLayers
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesT.html b/openlayers/doc/devdocs/search/PropertiesT.html new file mode 100644 index 0000000..d0d7214 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesT.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
tableName, OpenLayers.Protocol.SQL
targetFilter, OpenLayers.Control.Split
termsOfUse, OpenLayers.Layer.Google
textRoot, OpenLayers.Renderer.Elements
theme, OpenLayers.Map
thousandsSeparator, OpenLayers.Number
threshold, OpenLayers.Strategy.Cluster
tileOrigin, OpenLayers.Layer.TMS
time, OpenLayers.Tween
timeoutId, OpenLayers.Handler.Drag
timer, OpenLayers.Strategy.Save
tokenRegEx, OpenLayers.String.OpenLayers.String
tolerance, OpenLayers.Control.Split
top, OpenLayers.Bounds
topInUnits, OpenLayers.Control.ScaleLine
topOutUnits, OpenLayers.Control.ScaleLine
transforms, OpenLayers.Projection
transitionEffect, OpenLayers.Layer
translationParameters, OpenLayers.Renderer.SVG
typeOfFid, OpenLayers.Protocol.SQL.Gears
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesU.html b/openlayers/doc/devdocs/search/PropertiesU.html new file mode 100644 index 0000000..c44a31f --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
unrenderedFeatures, OpenLayers.Layer.Vector
up, OpenLayers.Handler.Feature
upperBoundary, OpenLayers.Filter.Comparison
useAsyncOverlay, OpenLayers.Layer.MapGuide
useFeedTitle, OpenLayers.Layer.GeoRSS
useHttpTile, OpenLayers.Layer.MapGuide
useOverlay, OpenLayers.Layer.MapGuide
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesV.html b/openlayers/doc/devdocs/search/PropertiesV.html new file mode 100644 index 0000000..13c56c7 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesV.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
vectorMode, OpenLayers.Layer.WFS
vectorRoot, OpenLayers.Renderer.Elements
vendorParams, OpenLayers.Control.WMSGetFeatureInfo
vertices, OpenLayers.Control.ModifyFeature
viewPortDiv, OpenLayers.Map
viewRequestID, OpenLayers.Map
virtualStyle, OpenLayers.Control.ModifyFeature
virtualVertices, OpenLayers.Control.ModifyFeature
visibility, OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesW.html b/openlayers/doc/devdocs/search/PropertiesW.html new file mode 100644 index 0000000..3bb7d6a --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesW.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
w, OpenLayers.Size
wfsns, OpenLayers.Format.WFS
wheelListener, OpenLayers.Handler.MouseWheel
wheelObserver, OpenLayers.Control.MouseDefaults
width, OpenLayers.Geometry.Rectangle
wktParser, OpenLayers.Protocol.SQL.Gears
wrapDateLine, OpenLayers.Layer
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesX.html b/openlayers/doc/devdocs/search/PropertiesX.html new file mode 100644 index 0000000..2d6bd1c --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesX.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
xlinkns, OpenLayers.Renderer.SVG
xmldom, OpenLayers.Format.XML
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesY.html b/openlayers/doc/devdocs/search/PropertiesY.html new file mode 100644 index 0000000..aed994b --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesY.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/search/PropertiesZ.html b/openlayers/doc/devdocs/search/PropertiesZ.html new file mode 100644 index 0000000..eb9e2d8 --- /dev/null +++ b/openlayers/doc/devdocs/search/PropertiesZ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
zoom, OpenLayers.Map
zoomBarDiv, OpenLayers.Control.PanZoomBar
zoomBox, OpenLayers.Control.Navigation
zoomBoxKeyMask, OpenLayers.Control.Navigation
zoomLevels, OpenLayers.Layer.WorldWind
zoomStopHeight, OpenLayers.Control.PanZoomBar
zoomStopWidth, OpenLayers.Control.PanZoomBar
zoomWheelEnabled, OpenLayers.Control.Navigation
zoomWorldIcon, OpenLayers.Control.PanZoomBar
Searching...
No Matches
\ No newline at end of file diff --git a/openlayers/doc/devdocs/styles/1.css b/openlayers/doc/devdocs/styles/1.css new file mode 100644 index 0000000..d3b7409 --- /dev/null +++ b/openlayers/doc/devdocs/styles/1.css @@ -0,0 +1,763 @@ +/* + IMPORTANT: If you're editing this file in the output directory of one of + your projects, your changes will be overwritten the next time you run + Natural Docs. Instead, copy this file to your project directory, make your + changes, and you can use it with -s. Even better would be to make a CSS + file in your project directory with only your changes, which you can then + use with -s [original style] [your changes]. + + On the other hand, if you're editing this file in the Natural Docs styles + directory, the changes will automatically be applied to all your projects + that use this style the next time Natural Docs is run on them. + + This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure + Natural Docs is licensed under the GPL +*/ + +body { + font: 8pt Verdana, Arial, sans-serif; + color: #000000; + margin: 0; padding: 0; + } + +.ContentPage, +.IndexPage, +.FramedMenuPage { + background-color: #E8E8E8; + } +.FramedContentPage, +.FramedIndexPage, +.FramedSearchResultsPage, +.PopupSearchResultsPage { + background-color: #FFFFFF; + } + + +a:link, +a:visited { color: #900000; text-decoration: none } +a:hover { color: #900000; text-decoration: underline } +a:active { color: #FF0000; text-decoration: underline } + +td { + vertical-align: top } + +img { border: 0; } + + +/* + Comment out this line to use web-style paragraphs (blank line between + paragraphs, no indent) instead of print-style paragraphs (no blank line, + indented.) +*/ +p { + text-indent: 5ex; margin: 0 } + + +/* Opera doesn't break with just wbr, but will if you add this. */ +.Opera wbr:after { + content: "\00200B"; + } + +/* Blockquotes are used as containers for things that may need to scroll. */ +blockquote { + padding: 0; + margin: 0; + overflow: auto; + } + + +.Firefox1 blockquote { + padding-bottom: .5em; + } + +/* Turn off scrolling when printing. */ +@media print { + blockquote { + overflow: visible; + } + .IE blockquote { + width: auto; + } + } + + + +#Menu { + font-size: 8pt; + padding: 10px 0 0 0; + } +.ContentPage #Menu, +.IndexPage #Menu { + position: absolute; + top: 0; + left: 0; + width: 31ex; + overflow: hidden; + } +.ContentPage .Firefox #Menu, +.IndexPage .Firefox #Menu { + width: 27ex; + } + + + .MTitle { + font-size: 16pt; font-weight: bold; font-variant: small-caps; + text-align: center; + padding: 5px 10px 15px 10px; + border-bottom: 1px dotted #000000; + margin-bottom: 15px } + + .MSubTitle { + font-size: 9pt; font-weight: normal; font-variant: normal; + margin-top: 1ex; margin-bottom: 5px } + + + .MEntry a:link, + .MEntry a:hover, + .MEntry a:visited { color: #606060; margin-right: 0 } + .MEntry a:active { color: #A00000; margin-right: 0 } + + + .MGroup { + font-variant: small-caps; font-weight: bold; + margin: 1em 0 1em 10px; + } + + .MGroupContent { + font-variant: normal; font-weight: normal } + + .MGroup a:link, + .MGroup a:hover, + .MGroup a:visited { color: #545454; margin-right: 10px } + .MGroup a:active { color: #A00000; margin-right: 10px } + + + .MFile, + .MText, + .MLink, + .MIndex { + padding: 1px 17px 2px 10px; + margin: .25em 0 .25em 0; + } + + .MText { + font-size: 8pt; font-style: italic } + + .MLink { + font-style: italic } + + #MSelected { + color: #000000; background-color: #FFFFFF; + /* Replace padding with border. */ + padding: 0 10px 0 10px; + border-width: 1px 2px 2px 0; border-style: solid; border-color: #000000; + margin-right: 5px; + } + + /* Close off the left side when its in a group. */ + .MGroup #MSelected { + padding-left: 9px; border-left-width: 1px } + + /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ + .Firefox #MSelected { + -moz-border-radius-topright: 10px; + -moz-border-radius-bottomright: 10px } + .Firefox .MGroup #MSelected { + -moz-border-radius-topleft: 10px; + -moz-border-radius-bottomleft: 10px } + + + #MSearchPanel { + padding: 0px 6px; + margin: .25em 0; + } + + + #MSearchField { + font: italic 8pt Verdana, sans-serif; + color: #606060; + background-color: #E8E8E8; + border: none; + padding: 2px 4px; + width: 100%; + } + /* Only Opera gets it right. */ + .Firefox #MSearchField, + .IE #MSearchField, + .Safari #MSearchField { + width: 94%; + } + .Opera9 #MSearchField, + .Konqueror #MSearchField { + width: 97%; + } + .FramedMenuPage .Firefox #MSearchField, + .FramedMenuPage .Safari #MSearchField, + .FramedMenuPage .Konqueror #MSearchField { + width: 98%; + } + + /* Firefox doesn't do this right in frames without #MSearchPanel added on. + It's presence doesn't hurt anything other browsers. */ + #MSearchPanel.MSearchPanelInactive:hover #MSearchField { + background-color: #FFFFFF; + border: 1px solid #C0C0C0; + padding: 1px 3px; + } + .MSearchPanelActive #MSearchField { + background-color: #FFFFFF; + border: 1px solid #C0C0C0; + font-style: normal; + padding: 1px 3px; + } + + #MSearchType { + visibility: hidden; + font: 8pt Verdana, sans-serif; + width: 98%; + padding: 0; + border: 1px solid #C0C0C0; + } + .MSearchPanelActive #MSearchType, + /* As mentioned above, Firefox doesn't do this right in frames without #MSearchPanel added on. */ + #MSearchPanel.MSearchPanelInactive:hover #MSearchType, + #MSearchType:focus { + visibility: visible; + color: #606060; + } + #MSearchType option#MSearchEverything { + font-weight: bold; + } + + .Opera8 .MSearchPanelInactive:hover, + .Opera8 .MSearchPanelActive { + margin-left: -1px; + } + + + iframe#MSearchResults { + width: 60ex; + height: 15em; + } + #MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000000; + background-color: #E8E8E8; + } + #MSearchResultsWindowClose { + font-weight: bold; + font-size: 8pt; + display: block; + padding: 2px 5px; + } + #MSearchResultsWindowClose:link, + #MSearchResultsWindowClose:visited { + color: #000000; + text-decoration: none; + } + #MSearchResultsWindowClose:active, + #MSearchResultsWindowClose:hover { + color: #800000; + text-decoration: none; + background-color: #F4F4F4; + } + + + + +#Content { + padding-bottom: 15px; + } + +.ContentPage #Content { + border-width: 0 0 1px 1px; + border-style: solid; + border-color: #000000; + background-color: #FFFFFF; + font-size: 8pt; /* To make 31ex match the menu's 31ex. */ + margin-left: 31ex; + } +.ContentPage .Firefox #Content { + margin-left: 27ex; + } + + + + .CTopic { + font-size: 8pt; + margin-bottom: 3em; + } + + + .CTitle { + font-size: 11pt; font-weight: bold; + border-width: 0 0 1px 0; border-style: solid; border-color: #A0A0A0; + margin: 0 15px .5em 15px } + + .CGroup .CTitle { + font-size: 16pt; font-variant: small-caps; + padding-left: 15px; padding-right: 15px; + border-width: 0 0 2px 0; border-color: #000000; + margin-left: 0; margin-right: 0 } + + .CClass .CTitle, + .CInterface .CTitle, + .CDatabase .CTitle, + .CDatabaseTable .CTitle, + .CSection .CTitle { + font-size: 18pt; + color: #FFFFFF; background-color: #A0A0A0; + padding: 10px 15px 10px 15px; + border-width: 2px 0; border-color: #000000; + margin-left: 0; margin-right: 0 } + + #MainTopic .CTitle { + font-size: 20pt; + color: #FFFFFF; background-color: #7070C0; + padding: 10px 15px 10px 15px; + border-width: 0 0 3px 0; border-color: #000000; + margin-left: 0; margin-right: 0 } + + .CBody { + margin-left: 15px; margin-right: 15px } + + + .CToolTip { + position: absolute; visibility: hidden; + left: 0; top: 0; + background-color: #FFFFE0; + padding: 5px; + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #000000; + font-size: 8pt; + } + + .Opera .CToolTip { + max-width: 98%; + } + + /* Scrollbars would be useless. */ + .CToolTip blockquote { + overflow: hidden; + } + .IE6 .CToolTip blockquote { + overflow: visible; + } + + .CHeading { + font-weight: bold; font-size: 9pt; + margin: 1.5em 0 .5em 0; + } + + .CBody pre { + font: 8pt "Courier New", Courier, monospace; + margin: 1em 0; + } + + .CBody ul { + /* I don't know why CBody's margin doesn't apply, but it's consistent across browsers so whatever. + Reapply it here as padding. */ + padding-left: 15px; padding-right: 15px; + margin: .5em 5ex .5em 5ex; + } + + .CDescriptionList { + margin: .5em 5ex 0 5ex } + + .CDLEntry { + font: 8pt "Courier New", Courier, monospace; color: #808080; + padding-bottom: .25em; + white-space: nowrap } + + .CDLDescription { + font-size: 8pt; /* For browsers that don't inherit correctly, like Opera 5. */ + padding-bottom: .5em; padding-left: 5ex } + + + .CTopic img { + text-align: center; + display: block; + margin: 1em auto; + } + .CImageCaption { + font-variant: small-caps; + font-size: 8pt; + color: #808080; + text-align: center; + position: relative; + top: 1em; + } + + .CImageLink { + color: #808080; + font-style: italic; + } + a.CImageLink:link, + a.CImageLink:visited, + a.CImageLink:hover { color: #808080 } + + + + + +.Prototype { + font: 8pt "Courier New", Courier, monospace; + padding: 5px 3ex; + border-width: 1px; border-style: solid; + margin: 0 5ex 1.5em 5ex; + } + + .Prototype td { + font-size: 8pt; + } + + .PDefaultValue, + .PDefaultValuePrefix, + .PTypePrefix { + color: #8F8F8F; + } + .PTypePrefix { + text-align: right; + } + .PAfterParameters { + vertical-align: bottom; + } + + .IE .Prototype table { + padding: 0; + } + + .CFunction .Prototype { + background-color: #F4F4F4; border-color: #D0D0D0 } + .CProperty .Prototype { + background-color: #F4F4FF; border-color: #C0C0E8 } + .CVariable .Prototype { + background-color: #FFFFF0; border-color: #E0E0A0 } + + .CClass .Prototype { + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0; + background-color: #F4F4F4; + } + .CInterface .Prototype { + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0D0; + background-color: #F4F4FF; + } + + .CDatabaseIndex .Prototype, + .CConstant .Prototype { + background-color: #D0D0D0; border-color: #000000 } + .CType .Prototype, + .CEnumeration .Prototype { + background-color: #FAF0F0; border-color: #E0B0B0; + } + .CDatabaseTrigger .Prototype, + .CEvent .Prototype, + .CDelegate .Prototype { + background-color: #F0FCF0; border-color: #B8E4B8 } + + .CToolTip .Prototype { + margin: 0 0 .5em 0; + white-space: nowrap; + } + + + + + +.Summary { + margin: 1.5em 5ex 0 5ex } + + .STitle { + font-size: 11pt; font-weight: bold; + margin-bottom: .5em } + + + .SBorder { + background-color: #FFFFF0; + padding: 15px; + border: 1px solid #C0C060 } + + /* In a frame IE 6 will make them too long unless you set the width to 100%. Without frames it will be correct without a width + or slightly too long (but not enough to scroll) with a width. This arbitrary weirdness simply astounds me. IE 7 has the same + problem with frames, haven't tested it without. */ + .FramedContentPage .IE .SBorder { + width: 100% } + + /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ + .Firefox .SBorder { + -moz-border-radius: 20px } + + + .STable { + font-size: 8pt; width: 100% } + + .SEntry { + width: 30% } + .SDescription { + width: 70% } + + + .SMarked { + background-color: #F8F8D8 } + + .SDescription { padding-left: 2ex } + .SIndent1 .SEntry { padding-left: 1.5ex } .SIndent1 .SDescription { padding-left: 3.5ex } + .SIndent2 .SEntry { padding-left: 3.0ex } .SIndent2 .SDescription { padding-left: 5.0ex } + .SIndent3 .SEntry { padding-left: 4.5ex } .SIndent3 .SDescription { padding-left: 6.5ex } + .SIndent4 .SEntry { padding-left: 6.0ex } .SIndent4 .SDescription { padding-left: 8.0ex } + .SIndent5 .SEntry { padding-left: 7.5ex } .SIndent5 .SDescription { padding-left: 9.5ex } + + .SDescription a { color: #800000} + .SDescription a:active { color: #A00000 } + + .SGroup td { + padding-top: .5em; padding-bottom: .25em } + + .SGroup .SEntry { + font-weight: bold; font-variant: small-caps } + + .SGroup .SEntry a { color: #800000 } + .SGroup .SEntry a:active { color: #F00000 } + + + .SMain td, + .SClass td, + .SDatabase td, + .SDatabaseTable td, + .SSection td { + font-size: 10pt; + padding-bottom: .25em } + + .SClass td, + .SDatabase td, + .SDatabaseTable td, + .SSection td { + padding-top: 1em } + + .SMain .SEntry, + .SClass .SEntry, + .SDatabase .SEntry, + .SDatabaseTable .SEntry, + .SSection .SEntry { + font-weight: bold; + } + + .SMain .SEntry a, + .SClass .SEntry a, + .SDatabase .SEntry a, + .SDatabaseTable .SEntry a, + .SSection .SEntry a { color: #000000 } + + .SMain .SEntry a:active, + .SClass .SEntry a:active, + .SDatabase .SEntry a:active, + .SDatabaseTable .SEntry a:active, + .SSection .SEntry a:active { color: #A00000 } + + + + + +.ClassHierarchy { + margin: 0 15px 1em 15px } + + .CHEntry { + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0; + margin-bottom: 3px; + padding: 2px 2ex; + font-size: 8pt; + background-color: #F4F4F4; color: #606060; + } + + .Firefox .CHEntry { + -moz-border-radius: 4px; + } + + .CHCurrent .CHEntry { + font-weight: bold; + border-color: #000000; + color: #000000; + } + + .CHChildNote .CHEntry { + font-style: italic; + font-size: 8pt; + } + + .CHIndent { + margin-left: 3ex; + } + + .CHEntry a:link, + .CHEntry a:visited, + .CHEntry a:hover { + color: #606060; + } + .CHEntry a:active { + color: #800000; + } + + + + + +#Index { + background-color: #FFFFFF; + } + +/* As opposed to .PopupSearchResultsPage #Index */ +.IndexPage #Index, +.FramedIndexPage #Index, +.FramedSearchResultsPage #Index { + padding: 15px; + } + +.IndexPage #Index { + border-width: 0 0 1px 1px; + border-style: solid; + border-color: #000000; + font-size: 8pt; /* To make 27ex match the menu's 27ex. */ + margin-left: 27ex; + } + + + .IPageTitle { + font-size: 20pt; font-weight: bold; + color: #FFFFFF; background-color: #7070C0; + padding: 10px 15px 10px 15px; + border-width: 0 0 3px 0; border-color: #000000; border-style: solid; + margin: -15px -15px 0 -15px } + + .FramedSearchResultsPage .IPageTitle { + margin-bottom: 15px; + } + + .INavigationBar { + text-align: center; + background-color: #FFFFF0; + padding: 5px; + border-bottom: solid 1px black; + margin: 0 -15px 15px -15px; + } + + .INavigationBar a { + font-weight: bold } + + .IHeading { + font-size: 14pt; font-weight: bold; + padding: 2.5em 0 .5em 0; + text-align: center; + width: 3.5ex; + } + #IFirstHeading { + padding-top: 0; + } + + .IEntry { + padding-left: 1ex; + } + .PopupSearchResultsPage .IEntry { + font-size: 8pt; + padding: 1px 5px; + } + .PopupSearchResultsPage .Opera9 .IEntry, + .FramedSearchResultsPage .Opera9 .IEntry { + text-align: left; + } + .FramedSearchResultsPage .IEntry { + padding: 0; + } + + .ISubIndex { + padding-left: 3ex; padding-bottom: .5em } + .PopupSearchResultsPage .ISubIndex { + display: none; + } + + /* While it may cause some entries to look like links when they aren't, I found it's much easier to read the + index if everything's the same color. */ + .ISymbol { + font-weight: bold; color: #900000 } + + .IndexPage .ISymbolPrefix, + .FramedIndexPage .ISymbolPrefix { + text-align: right; + color: #C47C7C; + background-color: #F8F8F8; + border-right: 3px solid #E0E0E0; + border-left: 1px solid #E0E0E0; + padding: 0 1px 0 2px; + } + .PopupSearchResultsPage .ISymbolPrefix, + .FramedSearchResultsPage .ISymbolPrefix { + color: #900000; + } + .PopupSearchResultsPage .ISymbolPrefix { + font-size: 8pt; + } + + .IndexPage #IFirstSymbolPrefix, + .FramedIndexPage #IFirstSymbolPrefix { + border-top: 1px solid #E0E0E0; + } + .IndexPage #ILastSymbolPrefix, + .FramedIndexPage #ILastSymbolPrefix { + border-bottom: 1px solid #E0E0E0; + } + .IndexPage #IOnlySymbolPrefix, + .FramedIndexPage #IOnlySymbolPrefix { + border-top: 1px solid #E0E0E0; + border-bottom: 1px solid #E0E0E0; + } + + a.IParent, + a.IFile { + display: block; + } + + .PopupSearchResultsPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + } + .FramedSearchResultsPage .SRStatus { + font-size: 8pt; + font-style: italic; + } + + .SRResult { + display: none; + } + + + +#Footer { + font-size: 8pt; + color: #989898; + text-align: right; + } + +#Footer p { + text-indent: 0; + margin-bottom: .5em; + } + +.ContentPage #Footer, +.IndexPage #Footer { + text-align: right; + margin: 2px; + } + +.FramedMenuPage #Footer { + text-align: center; + margin: 5em 10px 10px 10px; + padding-top: 1em; + border-top: 1px solid #C8C8C8; + } + + #Footer a:link, + #Footer a:hover, + #Footer a:visited { color: #989898 } + #Footer a:active { color: #A00000 } + diff --git a/openlayers/doc/devdocs/styles/2.css b/openlayers/doc/devdocs/styles/2.css new file mode 100644 index 0000000..a397119 --- /dev/null +++ b/openlayers/doc/devdocs/styles/2.css @@ -0,0 +1,20 @@ +p { + text-indent: 0; margin-bottom: 1em; +} + +.MGroup { + font-variant: normal; + margin: 0.4em 0 0em 10px +} + +.MTitle { + font-variant: normal; +} + +.CGroup .CTitle { + font-variant: normal; +} + +.SGroup .SEntry { + font-variant: normal; +} \ No newline at end of file diff --git a/openlayers/doc/devdocs/styles/main.css b/openlayers/doc/devdocs/styles/main.css new file mode 100644 index 0000000..a672a94 --- /dev/null +++ b/openlayers/doc/devdocs/styles/main.css @@ -0,0 +1,2 @@ +@import URL("1.css"); +@import URL("2.css"); diff --git a/openlayers/doc/licenses/APACHE-2.0.txt b/openlayers/doc/licenses/APACHE-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/openlayers/doc/licenses/APACHE-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/openlayers/doc/licenses/BSD-LICENSE.txt b/openlayers/doc/licenses/BSD-LICENSE.txt new file mode 100644 index 0000000..aa321e6 --- /dev/null +++ b/openlayers/doc/licenses/BSD-LICENSE.txt @@ -0,0 +1,28 @@ +Redistribution and use of this software in source and binary forms, with or +without modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of Yahoo! Inc. nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of Yahoo! Inc. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/openlayers/doc/licenses/MIT-LICENSE.txt b/openlayers/doc/licenses/MIT-LICENSE.txt new file mode 100644 index 0000000..c9b44cb --- /dev/null +++ b/openlayers/doc/licenses/MIT-LICENSE.txt @@ -0,0 +1,18 @@ +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/openlayers/doc/readme.txt b/openlayers/doc/readme.txt new file mode 100644 index 0000000..d02540a --- /dev/null +++ b/openlayers/doc/readme.txt @@ -0,0 +1,7 @@ +Automatically generated OpenLayers API documentation is online: + + http://dev.openlayers.org/apidocs + +More information on documentation is available from: + + http://trac.openlayers.org/wiki/Documentation diff --git a/openlayers/doc/walkthru.html b/openlayers/doc/walkthru.html new file mode 100644 index 0000000..b135e63 --- /dev/null +++ b/openlayers/doc/walkthru.html @@ -0,0 +1,96 @@ + + +OpenLayers examples walkthrough + + + + +

<ol>

+

API documentation: http://dev.openlayers.org/docs/

+

Examples: http://openlayers.org/dev/examples/

+

Maps

+
    +
  1. Basic example
  2. +
  3. Layer switcher (aka legend)
  4. +
  5. Base layers versus overlays
  6. +
  7. Multiple WMS mirrors
  8. +
  9. Full screen map
  10. +
  11. Wrapping the date line
  12. +
  13. Other cartographic projections
  14. +
  15. Translucent overlays
  16. +
+ +

Raster Layers

+
    +
  1. Untiled WMS layer
  2. +
  3. Ka-Map layer
  4. +
  5. MapServer layer
  6. +
  7. Worldwind layer
  8. +
  9. TMS layer
  10. +
  11. Image layer
  12. +
  13. Google layer
  14. +
  15. VirtualEarth layer
  16. +
  17. Spherical Mercator ("EPSG:900913")
  18. +
  19. TileCache
  20. +
+ +

Marker Layers

+
    +
  1. Markers
  2. +
  3. Changing marker properties dynamically
  4. +
  5. Popups
  6. +
  7. GeoRSS (example data)
  8. +
  9. GeoRSS with custom markers
  10. +
  11. Point layer from WFS
  12. +
  13. WFS GetFeatureInfo example
  14. +
+ +

Events and Controls

+
    +
  1. Navigation tools on the map
  2. +
  3. Navigation toolbar off the map
  4. +
  5. Tracking the mouse position
  6. +
  7. Overview map
  8. +
  9. Layer attribution
  10. +
  11. Full range of controls
  12. +
  13. Custom controls #1
  14. +
  15. Custom controls #2
  16. +
  17. Custom control styles
  18. +
  19. Trapping click events
  20. +
  21. Tracking map events
  22. +
+ +

Vector Layers

+
    +
  1. Generating features in JavaScript
  2. +
  3. Loading features from GML
  4. +
  5. Loading features from KML
  6. +
  7. Serializing features to GML
  8. +
  9. Serializing to other formats
  10. +
  11. Selecting features
  12. +
  13. Attaching popups to features
  14. +
+ +

Editing Tools

+
    +
  1. Drawing features
  2. +
  3. Editing toolbar (outside the map)
  4. +
  5. Creating regular polygons
  6. +
  7. Modifying features
  8. +
  9. Resizing features
  10. +
  11. Rotating features
  12. +
  13. Transactional WFS example
  14. +
  15. FeatureServer
  16. +
+ +

Testing

+
    +
  1. Test.AnotherWay suite
  2. +
+ +

</ol>

+ + diff --git a/openlayers/doc_config/Data/ClassHierarchy.nd b/openlayers/doc_config/Data/ClassHierarchy.nd new file mode 100644 index 0000000000000000000000000000000000000000..aafb3786497ed1526a0c1469601464db20f6871c GIT binary patch literal 22329 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 literal 0 HcmV?d00001 diff --git a/openlayers/doc_config/Data/ConfigFileInfo.nd b/openlayers/doc_config/Data/ConfigFileInfo.nd new file mode 100644 index 0000000000000000000000000000000000000000..d5af2c6c927abf671df566b04dc56f2a41998d7d GIT binary patch literal 26 ScmZQ$)L>v>@Up)XgN^}SlnC_z literal 0 HcmV?d00001 diff --git a/openlayers/doc_config/Data/FileInfo.nd b/openlayers/doc_config/Data/FileInfo.nd new file mode 100644 index 0000000..09e93bf --- /dev/null +++ b/openlayers/doc_config/Data/FileInfo.nd @@ -0,0 +1,222 @@ +1.4 +JavaScript +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/da-DK.js 1231482438 1 OpenLayers.Lang["da-DK"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/WMS/Untiled.js 1236258462 1 OpenLayers.Layer.WMS.Untiled +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFSCapabilities/v1.js 1239053566 1 OpenLayers.Format.WFSCapabilities.v1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/SphericalMercator.js 1202500315 1 OpenLayers.Layer.SphericalMercator +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Popup/AnchoredBubble.js 1220027300 1 OpenLayers.Popup.AnchoredBubble +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/de.js 1203360599 1 OpenLayers.Lang["de"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/LonLat.js 1236811532 1 OpenLayers.LonLat +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Ajax.js 1236258462 1 /home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Ajax.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Map.js 1243000997 1 OpenLayers.Map +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer.js 1239400797 1 OpenLayers.Layer +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Strategy/Cluster.js 1237829668 1 OpenLayers.Strategy.Cluster +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Point.js 1239379526 1 OpenLayers.Geometry.Point +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/ca.js 1227279272 1 OpenLayers.Lang["ca"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Panel.js 1238537130 1 OpenLayers.Control.Panel +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/MouseToolbar.js 1236061815 1 OpenLayers.Control.MouseToolbar +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Popup/Framed.js 1237391257 1 OpenLayers.Popup.Framed +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GML/v2.js 1221232573 1 OpenLayers.Format.GML.v2 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Text.js 1237754112 1 OpenLayers.Layer.Text +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/ArcGIS93Rest.js 1235858002 1 OpenLayers.Layer.ArcGIS93Rest +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Pan.js 1236888274 1 OpenLayers.Control.Pan +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/MapGuide.js 1236752381 1 OpenLayers.Layer.MapGuide +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/zh-TW.js 1215469770 1 OpenLayers.Lang["zh-TW"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/FixedZoomLevels.js 1225371131 1 OpenLayers.Layer.FixedZoomLevels +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/ArcXML.js 1245073235 1 OpenLayers.Format.ArcXML +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/it.js 1212768670 1 OpenLayers.Lang["it"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes.js 1245073235 1 OpenLayers Base Types +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Popup/FramedCloud.js 1235829991 1 OpenLayers.Popup.FramedCloud +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/RegularPolygon.js 1239550575 1 OpenLayers.Handler.RegularPolygon +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Feature.js 1207620268 1 OpenLayers.Feature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Marker.js 1239117699 1 OpenLayers.Marker +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/OSM.js 1207759928 1 OpenLayers.Format.OSM +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/KaMapCache.js 1236888274 1 OpenLayers.Layer.KaMapCache +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/MultiMap.js 1207759928 1 OpenLayers.Layer.MultiMap +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSCapabilities/v1_1_0.js 1239044120 1 OpenLayers.Format.WMSCapabilities/v1_1_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Filter/FeatureId.js 1237306092 1 OpenLayers.Filter.FeatureId +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/zh-CN.js 1217517092 1 OpenLayers.Lang["zh-CN"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/MousePosition.js 1236061815 1 OpenLayers.Control.MousePosition +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Strategy/Paging.js 1223538488 1 OpenLayers.Strategy.Paging +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ZoomIn.js 1236888274 1 OpenLayers.Control.ZoomIn +/home/crschmidt/OpenLayers-2.8/lib/Firebug/readme.txt 1181603869 0 /home/crschmidt/OpenLayers-2.8/lib/Firebug/readme.txt +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Point.js 1239550575 1 OpenLayers.Handler.Point +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Renderer.js 1239379526 1 OpenLayers.Renderer +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Filter/Spatial.js 1237306092 1 OpenLayers.Filter.Spatial +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSDescribeLayer/v1_1.js 1238511962 1 OpenLayers.Format.WMSDescribeLayer.v1_1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/KaMap.js 1212698260 1 OpenLayers.Layer.KaMap +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Keyboard.js 1217526316 1 OpenLayers.handler.Keyboard +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Icon.js 1239117699 1 OpenLayers.Icon +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GML/v3.js 1238786269 1 OpenLayers.Format.GML.v3 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GeoJSON.js 1238790395 1 OpenLayers.Format.GeoJSON +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFSCapabilities/v1_1_0.js 1239053566 1 OpenLayers.Format.WFSCapabilities/v1_1_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/VirtualEarth.js 1220547476 1 OpenLayers.Layer.VirtualEarth +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/nl.js 1217389531 1 OpenLayers.Lang["nl"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/MapServer.js 1212698260 1 OpenLayers.Layer.MapServer +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Console.js 1221694764 1 OpenLayers.Console +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Rule.js 1237306092 1 OpenLayers.Rule +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/WMS.js 1236867551 1 OpenLayers.Layer.WMS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/HTTPRequest.js 1217479465 1 OpenLayers.Layer.HTTPRequest +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/MultiPoint.js 1226436506 1 OpenLayers.Geometry.MultiPoint +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GML.js 1238786269 1 OpenLayers.Format.GML +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/es.js 1225385919 1 OpenLayers.Lang["es"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Request/XMLHttpRequest.js 1213041098 1 OpenLayers.Request.XMLHttpRequest +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ScaleLine.js 1236260818 1 OpenLayers.Control.ScaleLine +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Size.js 1202500315 1 OpenLayers.Size +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/SingleFile.js 1199175295 0 /home/crschmidt/OpenLayers-2.8/lib/OpenLayers/SingleFile.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFST.js 1236876507 1 /home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFST.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/XYZ.js 1239221480 1 OpenLayers.Layer.XYZ +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFST/v1_1_0.js 1235948656 1 OpenLayers.Format.WFST.v1_1_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/WFS.js 1237731918 1 OpenLayers.Layer.WFS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Filter/Comparison.js 1237306092 1 OpenLayers.Filter.Comparison +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/en.js 1220595811 1 OpenLayers.Lang["en"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/pt-BR.js 1212698884 1 OpenLayers.Lang["pt-BR"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Strategy/Fixed.js 1238602823 1 OpenLayers.Strategy.Fixed +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/SelectFeature.js 1243957830 1 OpenLayers.Control.SelectFeature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFSDescribeFeatureType.js 1238517568 1 /home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFSDescribeFeatureType.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Boxes.js 1199175295 1 OpenLayers.Layer.Boxes +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format.js 1236258462 1 OpenLayers.Format +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/Filter/v1.js 1235945957 1 OpenLayers.Format.Filter.v1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Yahoo.js 1234872339 1 OpenLayers.Layer.Yahoo +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/HTTP.js 1239213175 1 OpenLayers.Protocol.HTTP +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/Filter/v1_0_0.js 1235886021 1 OpenLayers.Format.Filter.v1_0_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSCapabilities.js 1239044120 1 OpenLayers.Format.WMSCapabilities +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Strategy/Save.js 1239303787 1 OpenLayers.Strategy.Save +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GML/Base.js 1238786269 1 OpenLayers.Format.GML.Base +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Collection.js 1239379526 1 OpenLayers.Geometry.Collection +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Feature/Vector.js 1239654636 1 OpenLayers.Feature.Vector +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFSCapabilities.js 1239055985 1 OpenLayers.Format.WFSCapabilities +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/WFS.js 1237187156 1 /home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/WFS.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/DrawFeature.js 1239550575 1 OpenLayers.Control.DrawFeature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Tile/WFS.js 1214058213 1 OpenLayers.Tile.WFS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/PanPanel.js 1238537130 1 OpenLayers.Control.PanPanel +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/MapServer/Untiled.js 1236259403 1 OpenLayers.Layer.MapServer.Untiled +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/fr.js 1214582913 1 OpenLayers.Lang["fr"] +/home/crschmidt/OpenLayers-2.8/lib/Rico/Color.js 1201963564 0 /home/crschmidt/OpenLayers-2.8/lib/Rico/Color.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Button.js 1236061815 1 OpenLayers.Control.Button +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Feature/WFS.js 1199175295 1 OpenLayers.Feature.WFS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GeoRSS.js 1237050338 1 OpenLayers.Format.GeoRSS +/home/crschmidt/OpenLayers-2.8/lib/Gears/gears_init.js 1221231425 0 /home/crschmidt/OpenLayers-2.8/lib/Gears/gears_init.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSCapabilities/v1_1.js 1239044120 1 OpenLayers.Format.WMSCapabilities.v1_1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Curve.js 1239232344 1 OpenLayers.Geometry.Curve +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Strategy.js 1221672601 1 OpenLayers.Strategy +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Renderer/SVG.js 1243000997 1 OpenLayers.Renderer.SVG +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Scale.js 1236061815 1 OpenLayers.Control.Scale +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/ArcXML/Features.js 1239236148 1 OpenLayers.Format.ArcXML.Features +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/MultiPolygon.js 1226436506 1 OpenLayers.Geometry.MultiPolygon +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/en-CA.js 1203110148 1 OpenLayers.Lang["en-CA"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/NavToolbar.js 1226405535 1 OpenLayers.Control.NavToolbar +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/NavigationHistory.js 1237888337 1 OpenLayers.Control.NavigationHistory +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMC/v1_0_0.js 1202500315 1 OpenLayers.Format.WMC.v1_0_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/JSON.js 1238803096 1 OpenLayers.Format.JSON +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/LinearRing.js 1239379526 1 OpenLayers.Geometry.LinearRing +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/TMS.js 1243000997 1 OpenLayers.Layer.TMS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Google.js 1243957830 1 OpenLayers.Layer.Google +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Vector/RootContainer.js 1238593433 1 OpenLayers.Layer.Vector.RootContainer +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/LineString.js 1236799496 1 OpenLayers.Geometry.LineString +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Grid.js 1236259403 1 OpenLayers.Layer.Grid +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Popup/Anchored.js 1237484007 1 OpenLayers.Popup.Anchored +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Split.js 1236724597 1 OpenLayers.Control.Split +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSDescribeLayer.js 1238511962 1 OpenLayers.Format.WMSDescribeLayer +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler.js 1217479465 1 OpenLayers.Handler +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Navigation.js 1239314621 1 OpenLayers.Control.Navigation +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/PanZoomBar.js 1237666406 1 OpenLayers.Control.PanZoomBar +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/GML.js 1237050406 1 OpenLayers.Layer.GML +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/XML.js 1238786269 1 OpenLayers.Format.XML +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Projection.js 1233316780 1 OpenLayers.Projection +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Snapping.js 1239550721 1 OpenLayers.Control.Snapping +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Permalink.js 1236061815 1 OpenLayers.Control.Permalink +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Bounds.js 1237088662 1 OpenLayers.Bounds +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMC.js 1235921567 1 OpenLayers.Format.WMC +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control.js 1239314393 1 OpenLayers.Control +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Strategy/BBOX.js 1237398134 1 OpenLayers.Strategy.BBOX +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFS.js 1236657899 1 OpenLayers.Format.WFS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Class.js 1237472952 1 /home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Class.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/StyleMap.js 1236360034 1 OpenLayers.StyleMap +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/TileCache.js 1243000997 1 OpenLayers.Layer.TileCache +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMC/v1_1_0.js 1202500315 1 OpenLayers.Format.WMC.v1_1_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Marker/Box.js 1199175295 1 OpenLayers.Marker.Box +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Element.js 1219970805 1 OpenLayers.Element +/home/crschmidt/OpenLayers-2.8/lib/Firebug/license.txt 1181603869 0 /home/crschmidt/OpenLayers-2.8/lib/Firebug/license.txt +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/GetFeature.js 1239314393 1 OpenLayers.Control.GetFeature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WKT.js 1217479465 1 OpenLayers.Format.WKT +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/MouseWheel.js 1217479465 1 OpenLayers.Handler.MouseWheel +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Rectangle.js 1204815750 1 OpenLayers.Geometry.Rectangle +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Renderer/Elements.js 1240092036 1 OpenLayers.ElementsIndexer +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/cs-CZ.js 1206036960 1 OpenLayers.Lang["cs-CZ"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Surface.js 1207759928 0 /home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Surface.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Image.js 1235923670 1 OpenLayers.Layer.Image +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/SLD/v1.js 1239629713 1 OpenLayers.Format.SLD.v1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Drag.js 1239314393 1 OpenLayers.Handler.Drag +/home/crschmidt/OpenLayers-2.8/lib/Rico/Corner.js 1201963564 0 /home/crschmidt/OpenLayers-2.8/lib/Rico/Corner.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/DragPan.js 1236061815 1 OpenLayers.Control.DragPan +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/WFS/v1_0_0.js 1234915663 1 OpenLayers.Protocol.WFS.v1_0_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFSCapabilities/v1_0_0.js 1239053566 1 OpenLayers.Format.WFSCapabilities/v1_0_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/PanZoom.js 1237926471 1 OpenLayers.Control.PanZoom +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/WFS/v1_1_0.js 1234915663 1 OpenLayers.Protocol.WFS.v1_1_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ZoomOut.js 1236888274 1 OpenLayers.Control.ZoomOut +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/MouseDefaults.js 1236061815 1 OpenLayers.Control.MouseDefaults +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/BaseTypes/Pixel.js 1236258462 1 OpenLayers.Pixel +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/KML.js 1238786269 1 OpenLayers.Format.KML +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/SQL/Gears.js 1237187156 1 OpenLayers.Protocol.SQL.Gears +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Hover.js 1228939469 1 OpenLayers.Handler.Hover +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Tile/Image.js 1241301243 1 OpenLayers.Tile.Image +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Util.js 1243467983 1 Util +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/Polygon.js 1239232344 1 OpenLayers.Geometry.Polygon +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Feature.js 1239018375 1 OpenLayers.Handler.Feature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/nb.js 1243000997 1 OpenLayers.Lang["nb"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/SQL.js 1221235615 1 OpenLayers.Protocol.SQL +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/WorldWind.js 1212698260 1 OpenLayers.Layer.WorldWind +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry.js 1239379526 1 OpenLayers.Geometry +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Vector.js 1239550575 1 OpenLayers.Layer.Vector +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Tween.js 1236258462 1 OpenLayers.Tween +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSGetFeatureInfo.js 1245073235 1 OpenLayers.Format.WMSGetFeatureInfo +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/GPX.js 1229870638 1 OpenLayers.Format.GPX +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Style.js 1245073235 1 OpenLayers.Style +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/Text.js 1239693775 1 OpenLayers.Format.Text +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/PointTrack.js 1236259403 1 OpenLayers.Layer.PointTrack +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/LayerSwitcher.js 1236061815 1 OpenLayers.Control.LayerSwitcher +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/DragFeature.js 1239314393 1 OpenLayers.Control.DragFeature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol/WFS/v1.js 1235992402 1 OpenLayers.Protocol.WFS.v1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers.js 1245698994 1 OpenLayers +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/ArcIMS.js 1243467983 1 OpenLayers.Layer.ArcIMS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Attribution.js 1236061815 1 OpenLayers.Control.Attribution +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/EditingToolbar.js 1236061815 1 OpenLayers.Control.EditingToolbar +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/GeoRSS.js 1217479465 1 OpenLayers.Layer.GeoRSS +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFST/v1_0_0.js 1235948656 1 OpenLayers.Format.WFST.v1_0_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMSCapabilities/v1_1_1.js 1239711203 1 OpenLayers.Format.WMSCapabilities/v1_1_1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/OverviewMap.js 1236061815 1 OpenLayers.Control.OverviewMap +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Tile.js 1236258462 1 OpenLayers.Tile +/home/crschmidt/OpenLayers-2.8/lib/Firebug/firebugx.js 1202500315 0 /home/crschmidt/OpenLayers-2.8/lib/Firebug/firebugx.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/WMSGetFeatureInfo.js 1239986117 1 OpenLayers.Control.WMSGetFeatureInfo +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Renderer/Canvas.js 1239629713 1 OpenLayers.Renderer.Canvas +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Click.js 1238722498 1 OpenLayers.Handler.Click +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ModifyFeature.js 1238535371 1 OpenLayers.Control.ModifyFeature +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/KeyboardDefaults.js 1236061815 1 OpenLayers.Control.KeyboardDefaults +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ArgParser.js 1236061815 1 OpenLayers.Control.ArgParser +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/EventPane.js 1205260337 1 OpenLayers.Layer.EventPane +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang.js 1236258462 1 OpenLayers.Lang +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ZoomBox.js 1236657001 1 OpenLayers.Control.ZoomBox +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WFST/v1.js 1235857501 1 OpenLayers.Format.WFST.v1 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/SLD.js 1238143155 1 OpenLayers.Format.SLD +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Events.js 1243000997 1 OpenLayers.Event +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/Measure.js 1239379740 1 OpenLayers.Control.Measure +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Popup.js 1243000997 1 OpenLayers.Popup +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Layer/Markers.js 1239117699 1 OpenLayers.Layer.Markers +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/WMC/v1.js 1235921567 1 OpenLayers.Format.WMC.v1 +/home/crschmidt/OpenLayers-2.8/lib/Firebug/firebug.js 1202500315 0 /home/crschmidt/OpenLayers-2.8/lib/Firebug/firebug.js +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/Filter/v1_1_0.js 1235886021 1 OpenLayers.Format.Filter.v1_1_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Protocol.js 1237187156 1 OpenLayers.Protocol +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Lang/sv-SE.js 1236888274 1 OpenLayers.Lang["sv-SE"] +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ZoomToMaxExtent.js 1236061815 1 OpenLayers.Control.ZoomToMaxExtent +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Renderer/VML.js 1245073235 1 OpenLayers.Renderer.VML +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Control/ZoomPanel.js 1238536781 1 OpenLayers.Control.ZoomPanel +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Path.js 1239550575 1 OpenLayers.Handler.Path +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/Filter.js 1235747730 1 OpenLayers.Format.Filter +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Filter/Logical.js 1237306092 1 OpenLayers.Filter.Logical +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Format/SLD/v1_0_0.js 1226436661 1 OpenLayers.Format.SLD.v1_0_0 +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Box.js 1239314393 1 OpenLayers.Handler.Box +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Request.js 1238668521 1 OpenLayers.Request +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Filter.js 1237306092 1 OpenLayers.Filter +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Geometry/MultiLineString.js 1236637147 1 OpenLayers.Geometry.MultiLineString +/home/crschmidt/OpenLayers-2.8/lib/OpenLayers/Handler/Polygon.js 1239550575 1 OpenLayers.Handler.Polygon diff --git a/openlayers/doc_config/Data/ImageFileInfo.nd b/openlayers/doc_config/Data/ImageFileInfo.nd new file mode 100644 index 0000000000000000000000000000000000000000..4a45d85e97b9de62e2ecfbeed90e31262fbb04eb GIT binary patch literal 198 zcmZQ$)L;MtbN!6`+*JMKqT=L?+{}~`egA^gJfFnM)S_ZtBRvcKoXjMBx6Go{q|$W# u%)GRG&*c0(y@I@Sx7-`D3=9?|=uRyv$}d9IZbgFj^2DON%)E3|0~i2^9YbRP literal 0 HcmV?d00001 diff --git a/openlayers/doc_config/Data/ImageReferenceTable.nd b/openlayers/doc_config/Data/ImageReferenceTable.nd new file mode 100644 index 0000000000000000000000000000000000000000..99286208239775ab7a10e6e1e5b811b6190cbd2d GIT binary patch literal 234 zcmZQ$)L;Mt6a9?*+*JMKqT=L?+{}~`egA^gJfFnM)S_ZtBRvcKoXjL7A$_onK7(RO zW^#6FiGs4Rk-0)zevv|Meo?AIW*(54n^=;WpQi^h8wec9G2T1TH?hDuF*zeuFRPfr LhHN81x`6-yM2$=# literal 0 HcmV?d00001 diff --git a/openlayers/doc_config/Data/IndexInfo.nd b/openlayers/doc_config/Data/IndexInfo.nd new file mode 100644 index 0000000000000000000000000000000000000000..30d4b4db6d50144380a18810d27d0517deca2c72 GIT binary patch literal 267 zcmZ`zOA3WB3{2qZD|iv_A?VgC6zM`Jsibk??X78x-8hSUm`~E<2nqkikz?x-@DpI> zlQ!7{H7dx4VoMtgQ=lk(ZW6e#P2`&ozj^oWap3boL7laCleaNes`e}?LZjC#Nn-Vk W2BL=MJykF(hr_X4&F9TidAtEs1r@IV literal 0 HcmV?d00001 diff --git a/openlayers/doc_config/Data/PreviousMenuState.nd b/openlayers/doc_config/Data/PreviousMenuState.nd new file mode 100644 index 0000000000000000000000000000000000000000..f316d6545aa927f2d7005faa831e24eaaa75253f GIT binary patch literal 16663 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

dX?1 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�OeRQ{B-%C>EYlWh83lUS@f3+%1Bf8e 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 CzG^f8 literal 0 HcmV?d00001 diff --git a/openlayers/doc_config/Languages.txt b/openlayers/doc_config/Languages.txt new file mode 100644 index 0000000..be96913 --- /dev/null +++ b/openlayers/doc_config/Languages.txt @@ -0,0 +1,113 @@ +Format: 1.4 + +# This is the Natural Docs languages file for this project. If you change +# anything here, it will apply to THIS PROJECT ONLY. If you'd like to change +# something for all your projects, edit the Languages.txt in Natural Docs' +# Config directory instead. + + +# You can prevent certain file extensions from being scanned like this: +# Ignore Extensions: [extension] [extension] ... + + +#------------------------------------------------------------------------------- +# SYNTAX: +# +# Unlike other Natural Docs configuration files, in this file all comments +# MUST be alone on a line. Some languages deal with the # character, so you +# cannot put comments on the same line as content. +# +# Also, all lists are separated with spaces, not commas, again because some +# languages may need to use them. +# +# Language: [name] +# Alter Language: [name] +# Defines a new language or alters an existing one. Its name can use any +# characters. If any of the properties below have an add/replace form, you +# must use that when using Alter Language. +# +# The language Shebang Script is special. It's entry is only used for +# extensions, and files with those extensions have their shebang (#!) lines +# read to determine the real language of the file. Extensionless files are +# always treated this way. +# +# The language Text File is also special. It's treated as one big comment +# so you can put Natural Docs content in them without special symbols. Also, +# if you don't specify a package separator, ignored prefixes, or enum value +# behavior, it will copy those settings from the language that is used most +# in the source tree. +# +# Extensions: [extension] [extension] ... +# [Add/Replace] Extensions: [extension] [extension] ... +# Defines the file extensions of the language's source files. You can +# redefine extensions found in the main languages file. You can use * to +# mean any undefined extension. +# +# Shebang Strings: [string] [string] ... +# [Add/Replace] Shebang Strings: [string] [string] ... +# Defines a list of strings that can appear in the shebang (#!) line to +# designate that it's part of the language. You can redefine strings found +# in the main languages file. +# +# Ignore Prefixes in Index: [prefix] [prefix] ... +# [Add/Replace] Ignored Prefixes in Index: [prefix] [prefix] ... +# +# Ignore [Topic Type] Prefixes in Index: [prefix] [prefix] ... +# [Add/Replace] Ignored [Topic Type] Prefixes in Index: [prefix] [prefix] ... +# Specifies prefixes that should be ignored when sorting symbols in an +# index. Can be specified in general or for a specific topic type. +# +#------------------------------------------------------------------------------ +# For basic language support only: +# +# Line Comments: [symbol] [symbol] ... +# Defines a space-separated list of symbols that are used for line comments, +# if any. +# +# Block Comments: [opening sym] [closing sym] [opening sym] [closing sym] ... +# Defines a space-separated list of symbol pairs that are used for block +# comments, if any. +# +# Package Separator: [symbol] +# Defines the default package separator symbol. The default is a dot. +# +# [Topic Type] Prototype Enders: [symbol] [symbol] ... +# When defined, Natural Docs will attempt to get a prototype from the code +# immediately following the topic type. It stops when it reaches one of +# these symbols. Use \n for line breaks. +# +# Line Extender: [symbol] +# Defines the symbol that allows a prototype to span multiple lines if +# normally a line break would end it. +# +# Enum Values: [global|under type|under parent] +# Defines how enum values are referenced. The default is global. +# global - Values are always global, referenced as 'value'. +# under type - Values are under the enum type, referenced as +# 'package.enum.value'. +# under parent - Values are under the enum's parent, referenced as +# 'package.value'. +# +# Perl Package: [perl package] +# Specifies the Perl package used to fine-tune the language behavior in ways +# too complex to do in this file. +# +#------------------------------------------------------------------------------ +# For full language support only: +# +# Full Language Support: [perl package] +# Specifies the Perl package that has the parsing routines necessary for full +# language support. +# +#------------------------------------------------------------------------------- + +# The following languages are defined in the main file, if you'd like to alter +# them: +# +# Text File, Shebang Script, C/C++, C#, Java, JavaScript, Perl, Python, +# PHP, SQL, Visual Basic, Pascal, Assembly, Ada, Tcl, Ruby, Makefile, +# ActionScript, ColdFusion, R, Fortran + +# If you add a language that you think would be useful to other developers +# and should be included in Natural Docs by default, please e-mail it to +# languages [at] naturaldocs [dot] org. diff --git a/openlayers/doc_config/Menu.txt b/openlayers/doc_config/Menu.txt new file mode 100644 index 0000000..f349606 --- /dev/null +++ b/openlayers/doc_config/Menu.txt @@ -0,0 +1,400 @@ +Format: 1.4 + + +Title: OpenLayers +SubTitle: JavaScript Mapping Library + +# You can add a footer to your documentation like this: +# Footer: [text] +# If you want to add a copyright notice, this would be the place to do it. + +# You can add a timestamp to your documentation like one of these: +# Timestamp: Generated on month day, year +# Timestamp: Updated mm/dd/yyyy +# Timestamp: Last updated mon day +# +# m - One or two digit month. January is "1" +# mm - Always two digit month. January is "01" +# mon - Short month word. January is "Jan" +# month - Long month word. January is "January" +# d - One or two digit day. 1 is "1" +# dd - Always two digit day. 1 is "01" +# day - Day with letter extension. 1 is "1st" +# yy - Two digit year. 2006 is "06" +# yyyy - Four digit year. 2006 is "2006" +# year - Four digit year. 2006 is "2006" + + +# -------------------------------------------------------------------------- +# +# Cut and paste the lines below to change the order in which your files +# appear on the menu. Don't worry about adding or removing files, Natural +# Docs will take care of that. +# +# You can further organize the menu by grouping the entries. Add a +# "Group: [name] {" line to start a group, and add a "}" to end it. +# +# You can add text and web links to the menu by adding "Text: [text]" and +# "Link: [name] ([URL])" lines, respectively. +# +# The formatting and comments are auto-generated, so don't worry about +# neatness when editing the file. Natural Docs will clean it up the next +# time it is run. When working with groups, just deal with the braces and +# forget about the indentation and comments. +# +# -------------------------------------------------------------------------- + + +Group: OpenLayers { + + File: OpenLayers (no auto-title, OpenLayers.js) + File: Ajax (no auto-title, OpenLayers/Ajax.js) + + Group: BaseTypes { + + File: Base Types (no auto-title, OpenLayers/BaseTypes.js) + File: Bounds (no auto-title, OpenLayers/BaseTypes/Bounds.js) + File: Class (no auto-title, OpenLayers/BaseTypes/Class.js) + File: Element (no auto-title, OpenLayers/BaseTypes/Element.js) + File: LonLat (no auto-title, OpenLayers/BaseTypes/LonLat.js) + File: Pixel (no auto-title, OpenLayers/BaseTypes/Pixel.js) + File: Size (no auto-title, OpenLayers/BaseTypes/Size.js) + } # Group: BaseTypes + + File: Console (no auto-title, OpenLayers/Console.js) + + Group: Control { + + File: Control (no auto-title, OpenLayers/Control.js) + + Group: Control { + + File: ArgParser (no auto-title, OpenLayers/Control/ArgParser.js) + File: Attribution (no auto-title, OpenLayers/Control/Attribution.js) + File: Button (no auto-title, OpenLayers/Control/Button.js) + File: DragFeature (no auto-title, OpenLayers/Control/DragFeature.js) + File: DragPan (no auto-title, OpenLayers/Control/DragPan.js) + File: DrawFeature (no auto-title, OpenLayers/Control/DrawFeature.js) + File: EditingToolbar (no auto-title, OpenLayers/Control/EditingToolbar.js) + File: GetFeature (no auto-title, OpenLayers/Control/GetFeature.js) + File: KeyboardDefaults (no auto-title, OpenLayers/Control/KeyboardDefaults.js) + File: LayerSwitcher (no auto-title, OpenLayers/Control/LayerSwitcher.js) + File: Measure (no auto-title, OpenLayers/Control/Measure.js) + File: ModifyFeature (no auto-title, OpenLayers/Control/ModifyFeature.js) + File: MouseDefaults (no auto-title, OpenLayers/Control/MouseDefaults.js) + File: MousePosition (no auto-title, OpenLayers/Control/MousePosition.js) + File: MouseToolbar (no auto-title, OpenLayers/Control/MouseToolbar.js) + File: Navigation (no auto-title, OpenLayers/Control/Navigation.js) + File: NavigationHistory (no auto-title, OpenLayers/Control/NavigationHistory.js) + File: NavToolbar (no auto-title, OpenLayers/Control/NavToolbar.js) + File: OverviewMap (no auto-title, OpenLayers/Control/OverviewMap.js) + File: Pan (no auto-title, OpenLayers/Control/Pan.js) + File: Panel (no auto-title, OpenLayers/Control/Panel.js) + File: PanPanel (no auto-title, OpenLayers/Control/PanPanel.js) + File: PanZoom (no auto-title, OpenLayers/Control/PanZoom.js) + File: PanZoomBar (no auto-title, OpenLayers/Control/PanZoomBar.js) + File: Permalink (no auto-title, OpenLayers/Control/Permalink.js) + File: Scale (no auto-title, OpenLayers/Control/Scale.js) + File: ScaleLine (no auto-title, OpenLayers/Control/ScaleLine.js) + File: SelectFeature (no auto-title, OpenLayers/Control/SelectFeature.js) + File: Snapping (no auto-title, OpenLayers/Control/Snapping.js) + File: Split (no auto-title, OpenLayers/Control/Split.js) + File: WMSGetFeatureInfo (OpenLayers/Control/WMSGetFeatureInfo.js) + File: ZoomBox (no auto-title, OpenLayers/Control/ZoomBox.js) + File: ZoomIn (no auto-title, OpenLayers/Control/ZoomIn.js) + File: ZoomOut (no auto-title, OpenLayers/Control/ZoomOut.js) + File: ZoomPanel (no auto-title, OpenLayers/Control/ZoomPanel.js) + File: ZoomToMaxExtent (no auto-title, OpenLayers/Control/ZoomToMaxExtent.js) + } # Group: Control + + } # Group: Control + + File: Events (no auto-title, OpenLayers/Events.js) + + Group: Feature { + + File: Feature (no auto-title, OpenLayers/Feature.js) + File: Vector (no auto-title, OpenLayers/Feature/Vector.js) + File: WFS (no auto-title, OpenLayers/Feature/WFS.js) + } # Group: Feature + + Group: Filter { + + File: Filter (no auto-title, OpenLayers/Filter.js) + File: Comparison (no auto-title, OpenLayers/Filter/Comparison.js) + File: FeatureId (no auto-title, OpenLayers/Filter/FeatureId.js) + File: Logical (no auto-title, OpenLayers/Filter/Logical.js) + File: Spatial (no auto-title, OpenLayers/Filter/Spatial.js) + } # Group: Filter + + Group: Format { + + File: Format (no auto-title, OpenLayers/Format.js) + + Group: Filter { + + File: Filter (no auto-title, OpenLayers/Format/Filter.js) + File: v1 (no auto-title, OpenLayers/Format/Filter/v1.js) + File: v1_0_0 (no auto-title, OpenLayers/Format/Filter/v1_0_0.js) + File: v1_1_0 (OpenLayers/Format/Filter/v1_1_0.js) + } # Group: Filter + + Group: GML { + + File: GML (no auto-title, OpenLayers/Format/GML.js) + File: Base (no auto-title, OpenLayers/Format/GML/Base.js) + File: v2 (no auto-title, OpenLayers/Format/GML/v2.js) + File: v3 (no auto-title, OpenLayers/Format/GML/v3.js) + } # Group: GML + + Group: SLD { + + File: SLD (no auto-title, OpenLayers/Format/SLD.js) + File: v1 (no auto-title, OpenLayers/Format/SLD/v1.js) + File: v1_0_0 (no auto-title, OpenLayers/Format/SLD/v1_0_0.js) + } # Group: SLD + + Group: WMC { + + File: WMC (no auto-title, OpenLayers/Format/WMC.js) + File: v1 (no auto-title, OpenLayers/Format/WMC/v1.js) + File: v1_0_0 (no auto-title, OpenLayers/Format/WMC/v1_0_0.js) + File: v1_1_0 (no auto-title, OpenLayers/Format/WMC/v1_1_0.js) + } # Group: WMC + + Group: Format { + + File: ArcXML (OpenLayers/Format/ArcXML.js) + File: ArcXML.Features (OpenLayers/Format/ArcXML/Features.js) + File: GeoJSON (no auto-title, OpenLayers/Format/GeoJSON.js) + File: GeoRSS (no auto-title, OpenLayers/Format/GeoRSS.js) + File: GPX (no auto-title, OpenLayers/Format/GPX.js) + File: JSON (no auto-title, OpenLayers/Format/JSON.js) + File: KML (no auto-title, OpenLayers/Format/KML.js) + File: OSM (no auto-title, OpenLayers/Format/OSM.js) + File: Text (no auto-title, OpenLayers/Format/Text.js) + File: WFS (no auto-title, OpenLayers/Format/WFS.js) + File: WFSCapabilities (OpenLayers/Format/WFSCapabilities.js) + + Group: WFSCapabilities { + + File: WFSCapabilities.v1 (OpenLayers/Format/WFSCapabilities/v1.js) + File: WFSCapabilities/v1_0_0 (OpenLayers/Format/WFSCapabilities/v1_0_0.js) + File: WFSCapabilities/v1_1_0 (OpenLayers/Format/WFSCapabilities/v1_1_0.js) + } # Group: WFSCapabilities + + File: WFSDescribeFeatureType.js (OpenLayers/Format/WFSDescribeFeatureType.js) + + Group: WFST { + + File: WFST (no auto-title, OpenLayers/Format/WFST.js) + File: v1 (OpenLayers/Format/WFST/v1.js) + File: v1_0_0 (OpenLayers/Format/WFST/v1_0_0.js) + File: v1_1_0 (OpenLayers/Format/WFST/v1_1_0.js) + } # Group: WFST + + File: WKT (no auto-title, OpenLayers/Format/WKT.js) + File: WMSCapabilities (OpenLayers/Format/WMSCapabilities.js) + + Group: WMSCapabilities { + + File: WMSCapabilities.v1_1 (OpenLayers/Format/WMSCapabilities/v1_1.js) + File: WMSCapabilities/v1_1_0 (OpenLayers/Format/WMSCapabilities/v1_1_0.js) + File: WMSCapabilities/v1_1_1 (OpenLayers/Format/WMSCapabilities/v1_1_1.js) + } # Group: WMSCapabilities + + File: WMSDescribeLayer (OpenLayers/Format/WMSDescribeLayer.js) + File: WMSDescribeLayer.v1_1 (OpenLayers/Format/WMSDescribeLayer/v1_1.js) + File: WMSGetFeatureInfo (OpenLayers/Format/WMSGetFeatureInfo.js) + File: XML (no auto-title, OpenLayers/Format/XML.js) + } # Group: Format + + } # Group: Format + + Group: Geometry { + + File: Geometry (no auto-title, OpenLayers/Geometry.js) + File: Collection (no auto-title, OpenLayers/Geometry/Collection.js) + File: Curve (no auto-title, OpenLayers/Geometry/Curve.js) + File: LinearRing (no auto-title, OpenLayers/Geometry/LinearRing.js) + File: LineString (no auto-title, OpenLayers/Geometry/LineString.js) + File: MultiLineString (no auto-title, OpenLayers/Geometry/MultiLineString.js) + File: MultiPoint (no auto-title, OpenLayers/Geometry/MultiPoint.js) + File: MultiPolygon (no auto-title, OpenLayers/Geometry/MultiPolygon.js) + File: Point (no auto-title, OpenLayers/Geometry/Point.js) + File: Polygon (no auto-title, OpenLayers/Geometry/Polygon.js) + File: Rectangle (no auto-title, OpenLayers/Geometry/Rectangle.js) + } # Group: Geometry + + Group: Handler { + + File: Handler (no auto-title, OpenLayers/Handler.js) + File: Box (no auto-title, OpenLayers/Handler/Box.js) + File: Click (no auto-title, OpenLayers/Handler/Click.js) + File: Drag (no auto-title, OpenLayers/Handler/Drag.js) + File: Feature (no auto-title, OpenLayers/Handler/Feature.js) + File: Hover (no auto-title, OpenLayers/Handler/Hover.js) + File: Keyboard (no auto-title, OpenLayers/Handler/Keyboard.js) + File: MouseWheel (no auto-title, OpenLayers/Handler/MouseWheel.js) + File: Path (no auto-title, OpenLayers/Handler/Path.js) + File: Point (no auto-title, OpenLayers/Handler/Point.js) + File: Polygon (no auto-title, OpenLayers/Handler/Polygon.js) + File: RegularPolygon (no auto-title, OpenLayers/Handler/RegularPolygon.js) + } # Group: Handler + + File: Icon (no auto-title, OpenLayers/Icon.js) + + Group: Lang { + + File: Lang (no auto-title, OpenLayers/Lang.js) + File: ca (no auto-title, OpenLayers/Lang/ca.js) + File: cs-CZ (no auto-title, OpenLayers/Lang/cs-CZ.js) + File: da-DK (no auto-title, OpenLayers/Lang/da-DK.js) + File: de (no auto-title, OpenLayers/Lang/de.js) + File: en (no auto-title, OpenLayers/Lang/en.js) + File: en-CA (no auto-title, OpenLayers/Lang/en-CA.js) + File: es (no auto-title, OpenLayers/Lang/es.js) + File: fr (no auto-title, OpenLayers/Lang/fr.js) + File: it (no auto-title, OpenLayers/Lang/it.js) + File: nb (no auto-title, OpenLayers/Lang/nb.js) + File: nl (no auto-title, OpenLayers/Lang/nl.js) + File: pt-BR (no auto-title, OpenLayers/Lang/pt-BR.js) + File: sv-SE (no auto-title, OpenLayers/Lang/sv-SE.js) + File: zh-CN (no auto-title, OpenLayers/Lang/zh-CN.js) + File: zh-TW (no auto-title, OpenLayers/Lang/zh-TW.js) + } # Group: Lang + + Group: Layer { + + File: Layer (no auto-title, OpenLayers/Layer.js) + + Group: Layer { + + File: ArcGIS93Rest (no auto-title, OpenLayers/Layer/ArcGIS93Rest.js) + File: Boxes (no auto-title, OpenLayers/Layer/Boxes.js) + File: EventPane (no auto-title, OpenLayers/Layer/EventPane.js) + File: FixedZoomLevels (no auto-title, OpenLayers/Layer/FixedZoomLevels.js) + File: GeoRSS (no auto-title, OpenLayers/Layer/GeoRSS.js) + File: GML (no auto-title, OpenLayers/Layer/GML.js) + File: Google (no auto-title, OpenLayers/Layer/Google.js) + File: Grid (no auto-title, OpenLayers/Layer/Grid.js) + File: HTTPRequest (no auto-title, OpenLayers/Layer/HTTPRequest.js) + File: Image (no auto-title, OpenLayers/Layer/Image.js) + File: KaMap (no auto-title, OpenLayers/Layer/KaMap.js) + File: KaMapCache (no auto-title, OpenLayers/Layer/KaMapCache.js) + File: MapGuide (no auto-title, OpenLayers/Layer/MapGuide.js) + File: MapServer (no auto-title, OpenLayers/Layer/MapServer.js) + File: MapServer.Untiled (no auto-title, OpenLayers/Layer/MapServer/Untiled.js) + File: Markers (no auto-title, OpenLayers/Layer/Markers.js) + File: MultiMap (no auto-title, OpenLayers/Layer/MultiMap.js) + File: PointTrack (no auto-title, OpenLayers/Layer/PointTrack.js) + File: SphericalMercator (no auto-title, OpenLayers/Layer/SphericalMercator.js) + File: Text (no auto-title, OpenLayers/Layer/Text.js) + File: TileCache (no auto-title, OpenLayers/Layer/TileCache.js) + File: TMS (no auto-title, OpenLayers/Layer/TMS.js) + File: Vector (no auto-title, OpenLayers/Layer/Vector.js) + File: Vector.RootContainer (OpenLayers/Layer/Vector/RootContainer.js) + File: VirtualEarth (no auto-title, OpenLayers/Layer/VirtualEarth.js) + File: WFS (no auto-title, OpenLayers/Layer/WFS.js) + File: WMS (no auto-title, OpenLayers/Layer/WMS.js) + File: WMS.Untiled (no auto-title, OpenLayers/Layer/WMS/Untiled.js) + File: WorldWind (no auto-title, OpenLayers/Layer/WorldWind.js) + File: Yahoo (no auto-title, OpenLayers/Layer/Yahoo.js) + File: ArcIMS (OpenLayers/Layer/ArcIMS.js) + File: XYZ (OpenLayers/Layer/XYZ.js) + } # Group: Layer + + } # Group: Layer + + File: Map (no auto-title, OpenLayers/Map.js) + + Group: Marker { + + File: Marker (no auto-title, OpenLayers/Marker.js) + File: Box (no auto-title, OpenLayers/Marker/Box.js) + } # Group: Marker + + Group: Popup { + + File: Popup (no auto-title, OpenLayers/Popup.js) + File: Anchored (no auto-title, OpenLayers/Popup/Anchored.js) + File: AnchoredBubble (no auto-title, OpenLayers/Popup/AnchoredBubble.js) + File: Framed (no auto-title, OpenLayers/Popup/Framed.js) + File: FramedCloud (no auto-title, OpenLayers/Popup/FramedCloud.js) + } # Group: Popup + + File: Projection (no auto-title, OpenLayers/Projection.js) + + Group: Protocol { + + File: Protocol (no auto-title, OpenLayers/Protocol.js) + File: HTTP (no auto-title, OpenLayers/Protocol/HTTP.js) + + Group: SQL { + + File: SQL (no auto-title, OpenLayers/Protocol/SQL.js) + File: Gears (no auto-title, OpenLayers/Protocol/SQL/Gears.js) + } # Group: SQL + + Group: WFS { + + File: WFS (no auto-title, OpenLayers/Protocol/WFS.js) + File: v1 (OpenLayers/Protocol/WFS/v1.js) + File: v1_0_0 (OpenLayers/Protocol/WFS/v1_0_0.js) + File: v1_1_0 (OpenLayers/Protocol/WFS/v1_1_0.js) + } # Group: WFS + + } # Group: Protocol + + Group: Renderer { + + File: Renderer (no auto-title, OpenLayers/Renderer.js) + File: Canvas (no auto-title, OpenLayers/Renderer/Canvas.js) + File: Elements (no auto-title, OpenLayers/Renderer/Elements.js) + File: SVG (no auto-title, OpenLayers/Renderer/SVG.js) + File: VML (no auto-title, OpenLayers/Renderer/VML.js) + } # Group: Renderer + + Group: Request { + + File: Request (no auto-title, OpenLayers/Request.js) + File: XMLHttpRequest (no auto-title, OpenLayers/Request/XMLHttpRequest.js) + } # Group: Request + + File: Rule (no auto-title, OpenLayers/Rule.js) + + Group: Strategy { + + File: Strategy (no auto-title, OpenLayers/Strategy.js) + File: BBOX (no auto-title, OpenLayers/Strategy/BBOX.js) + File: Cluster (no auto-title, OpenLayers/Strategy/Cluster.js) + File: Fixed (no auto-title, OpenLayers/Strategy/Fixed.js) + File: Paging (no auto-title, OpenLayers/Strategy/Paging.js) + File: Save (OpenLayers/Strategy/Save.js) + } # Group: Strategy + + File: Style (no auto-title, OpenLayers/Style.js) + File: StyleMap (no auto-title, OpenLayers/StyleMap.js) + + Group: Tile { + + File: Tile (no auto-title, OpenLayers/Tile.js) + File: Image (no auto-title, OpenLayers/Tile/Image.js) + File: WFS (no auto-title, OpenLayers/Tile/WFS.js) + } # Group: Tile + + File: Tween (no auto-title, OpenLayers/Tween.js) + File: Util (no auto-title, OpenLayers/Util.js) + } # Group: OpenLayers + +Group: Index { + + Index: Everything + Class Index: Classes + Constant Index: Constants + Function Index: Functions + Property Index: Properties + File Index: Files + Constructor Index: Constructor + } # Group: Index + diff --git a/openlayers/doc_config/OL.css b/openlayers/doc_config/OL.css new file mode 100644 index 0000000..a397119 --- /dev/null +++ b/openlayers/doc_config/OL.css @@ -0,0 +1,20 @@ +p { + text-indent: 0; margin-bottom: 1em; +} + +.MGroup { + font-variant: normal; + margin: 0.4em 0 0em 10px +} + +.MTitle { + font-variant: normal; +} + +.CGroup .CTitle { + font-variant: normal; +} + +.SGroup .SEntry { + font-variant: normal; +} \ No newline at end of file diff --git a/openlayers/doc_config/Topics.txt b/openlayers/doc_config/Topics.txt new file mode 100644 index 0000000..139c55a --- /dev/null +++ b/openlayers/doc_config/Topics.txt @@ -0,0 +1,102 @@ +Format: 1.4 + +# This is the Natural Docs topics file for this project. If you change anything +# here, it will apply to THIS PROJECT ONLY. If you'd like to change something +# for all your projects, edit the Topics.txt in Natural Docs' Config directory +# instead. + + +# If you'd like to prevent keywords from being recognized by Natural Docs, you +# can do it like this: +# Ignore Keywords: [keyword], [keyword], ... +# +# Or you can use the list syntax like how they are defined: +# Ignore Keywords: +# [keyword] +# [keyword], [plural keyword] +# ... + + +#------------------------------------------------------------------------------- +# SYNTAX: +# +# Topic Type: [name] +# Alter Topic Type: [name] +# Creates a new topic type or alters one from the main file. Each type gets +# its own index and behavior settings. Its name can have letters, numbers, +# spaces, and these charaters: - / . ' +# +# Plural: [name] +# Sets the plural name of the topic type, if different. +# +# Keywords: +# [keyword] +# [keyword], [plural keyword] +# ... +# Defines or adds to the list of keywords for the topic type. They may only +# contain letters, numbers, and spaces and are not case sensitive. Plural +# keywords are used for list topics. You can redefine keywords found in the +# main topics file. +# +# Index: [yes|no] +# Whether the topics get their own index. Defaults to yes. Everything is +# included in the general index regardless of this setting. +# +# Scope: [normal|start|end|always global] +# How the topics affects scope. Defaults to normal. +# normal - Topics stay within the current scope. +# start - Topics start a new scope for all the topics beneath it, +# like class topics. +# end - Topics reset the scope back to global for all the topics +# beneath it. +# always global - Topics are defined as global, but do not change the scope +# for any other topics. +# +# Class Hierarchy: [yes|no] +# Whether the topics are part of the class hierarchy. Defaults to no. +# +# Page Title If First: [yes|no] +# Whether the topic's title becomes the page title if it's the first one in +# a file. Defaults to no. +# +# Break Lists: [yes|no] +# Whether list topics should be broken into individual topics in the output. +# Defaults to no. +# +# Can Group With: [type], [type], ... +# Defines a list of topic types that this one can possibly be grouped with. +# Defaults to none. +#------------------------------------------------------------------------------- + +# The following topics are defined in the main file, if you'd like to alter +# their behavior or add keywords: +# +# Generic, Class, Interface, Section, File, Group, Function, Variable, +# Property, Type, Constant, Enumeration, Event, Delegate, Macro, +# Database, Database Table, Database View, Database Index, Database +# Cursor, Database Trigger, Cookie, Build Target + +# If you add something that you think would be useful to other developers +# and should be included in Natural Docs by default, please e-mail it to +# topics [at] naturaldocs [dot] org. + + +Topic Type: Constructor + + Class Hierarchy: Yes + Keywords: + constructor + initialize + + +Alter Topic Type: Function + + Add Keywords: + apimethod + apifunction + + +Alter Topic Type: Property + + Add Keywords: + apiproperty diff --git a/openlayers/examples/GMLParser.html b/openlayers/examples/GMLParser.html new file mode 100644 index 0000000..962b2ef --- /dev/null +++ b/openlayers/examples/GMLParser.html @@ -0,0 +1,43 @@ + + + OpenLayers GML Parser + + + + + + +

GML Parser Example

+ +
+ +

+ Demonstrate the operation of the GML parser. +

+ +
+ +
+ This script reads data from a GML file and parses out the coordinates, appending them to a HTML string with markup tags. + This markup is dumped to an element in the page. +
+ + diff --git a/openlayers/examples/Jugl.js b/openlayers/examples/Jugl.js new file mode 100644 index 0000000..38014ef --- /dev/null +++ b/openlayers/examples/Jugl.js @@ -0,0 +1,84 @@ +/** + * Jugl.js -- JavaScript Template Library + * + * Copyright 2007 Tim Schaub + * Released under the MIT license. Please see + * http://svn.tschaub.net/jugl/trunk/license.txt for the full license. + */ + +(function(){var Jugl={prefix:"jugl",namespaceURI:"http://namespace.jugl.org/"};Jugl.Array={indexOf:function(array,obj){for(var i=0;i + + OpenLayers KML Parser Example + + + + + +

KML Parser Example

+ +
+ +

+ Demonstrate the operation of the KML parser. +

+ +
+ +
+ This script reads data from a KML file and parses out the coordinates, appending them to a HTML string with markup tags. + This markup is dumped to an element in the page. +
+ + diff --git a/openlayers/examples/WMSDescribeLayerParser.html b/openlayers/examples/WMSDescribeLayerParser.html new file mode 100644 index 0000000..1ef78c3 --- /dev/null +++ b/openlayers/examples/WMSDescribeLayerParser.html @@ -0,0 +1,41 @@ + + + OpenLayers WMSDescribeLayer Parser Example + + + + + +

WMSDescribeLayer Parser Example

+ +
+ +

+ Demonstrate the operation of the WMSDescribeLayer parser. +

+ +
+ +
+ This script reads data from a file and parses out the coordinates, appending them to a HTML string with markup tags. + This markup is dumped to an element in the page. +
+ + diff --git a/openlayers/examples/accessible.html b/openlayers/examples/accessible.html new file mode 100644 index 0000000..6932623 --- /dev/null +++ b/openlayers/examples/accessible.html @@ -0,0 +1,139 @@ + + + OpenLayers Accessible Example + + + + + + + +

Accessible Example

+ +
+
+ +

+ Demonstrate how to use the KeyboardDefaults option parameter for layer types. +

+ + + + + + + + + + + + + + + + + + + +
+ + zoom out + + + + pan north + + + + zoom in + +
+ + pan west + + + + pan east + +
  + + pan south + +  
+ +
+

Navigate the map in one of three ways: +

    +
  • Click on the named links to zoom and pan
  • +
  • Use following keys to pan and zoom: +
      +
    • + (zoom in)
    • +
    • - (zoom out)
    • +
    • up-arrow (pan north)
    • +
    • down-arrow (pan south)
    • +
    • left-arrow (pan east)
    • +
    • right-arrow (pan west)
    • +
    +
  • +
  • If access keys work for links in your browser, use: +
      +
    • i (zoom in)
    • +
    • o (zoom out)
    • +
    • n (pan north)
    • +
    • s (pan south)
    • +
    • e (pan east)
    • +
    • w (pan west)
    • +
    +
  • +
+

+ + This is an example of using alternate methods to control panning and zooming. This approach uses map.pan() and map.zoom(). You'll note that to pan, additional math is necessary along with map.size() in order to set the distance to pan. +
+ + diff --git a/openlayers/examples/all-overlays.html b/openlayers/examples/all-overlays.html new file mode 100644 index 0000000..7850f05 --- /dev/null +++ b/openlayers/examples/all-overlays.html @@ -0,0 +1,69 @@ + + + All Overlays Example + + + + + + + +

OpenLayers Overlays Only Example

+

+ Demonstrates a map with overlays only. +

+
+
+ To create a map that allows any draw order with all layer types + and lets you set the visibility of any layer independently, set + the allOverlays property on the map to true. +
+ + diff --git a/openlayers/examples/animated_panning.html b/openlayers/examples/animated_panning.html new file mode 100644 index 0000000..e20d9e5 --- /dev/null +++ b/openlayers/examples/animated_panning.html @@ -0,0 +1,92 @@ + + + Animated Panning of the Map via map.panTo + + + + + + +

map.panTo Example

+
map.panTo
+
Show animated panning effects in the map
+
+
+

This is an example of transition effects. If the new random center is in the current extent, the map will pan smoothly.
+ The random selection will continue until you press it again. Additionally, you can single click in the map to pan smoothly + to that area, or use the pan control to pan smoothly. +

+
+ +
+
+

To turn off Animated Panning, create a map with an panMethod set to + null.

+
+ + diff --git a/openlayers/examples/animator.js b/openlayers/examples/animator.js new file mode 100644 index 0000000..abe5403 --- /dev/null +++ b/openlayers/examples/animator.js @@ -0,0 +1,670 @@ +/* + Animator.js 1.1.9 + + This library is released under the BSD license: + + Copyright (c) 2006, Bernard Sumption. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. Redistributions in binary + form must reproduce the above copyright notice, this list of conditions and + the following disclaimer in the documentation and/or other materials + provided with the distribution. Neither the name BernieCode nor + the names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + DAMAGE. + +*/ + + +// Applies a sequence of numbers between 0 and 1 to a number of subjects +// construct - see setOptions for parameters +function Animator(options) { + this.setOptions(options); + var _this = this; + this.timerDelegate = function(){_this.onTimerEvent()}; + this.subjects = []; + this.target = 0; + this.state = 0; + this.lastTime = null; +}; +Animator.prototype = { + // apply defaults + setOptions: function(options) { + this.options = Animator.applyDefaults({ + interval: 20, // time between animation frames + duration: 400, // length of animation + onComplete: function(){}, + onStep: function(){}, + transition: Animator.tx.easeInOut + }, options); + }, + // animate from the current state to provided value + seekTo: function(to) { + this.seekFromTo(this.state, to); + }, + // animate from the current state to provided value + seekFromTo: function(from, to) { + this.target = Math.max(0, Math.min(1, to)); + this.state = Math.max(0, Math.min(1, from)); + this.lastTime = new Date().getTime(); + if (!this.intervalId) { + this.intervalId = window.setInterval(this.timerDelegate, this.options.interval); + } + }, + // animate from the current state to provided value + jumpTo: function(to) { + this.target = this.state = Math.max(0, Math.min(1, to)); + this.propagate(); + }, + // seek to the opposite of the current target + toggle: function() { + this.seekTo(1 - this.target); + }, + // add a function or an object with a method setState(state) that will be called with a number + // between 0 and 1 on each frame of the animation + addSubject: function(subject) { + this.subjects[this.subjects.length] = subject; + return this; + }, + // remove all subjects + clearSubjects: function() { + this.subjects = []; + }, + // forward the current state to the animation subjects + propagate: function() { + var value = this.options.transition(this.state); + for (var i=0; i= Math.abs(this.state - this.target)) { + this.state = this.target; + } else { + this.state += movement; + } + + try { + this.propagate(); + } finally { + this.options.onStep.call(this); + if (this.target == this.state) { + window.clearInterval(this.intervalId); + this.intervalId = null; + this.options.onComplete.call(this); + } + } + }, + // shortcuts + play: function() {this.seekFromTo(0, 1)}, + reverse: function() {this.seekFromTo(1, 0)}, + // return a string describing this Animator, for debugging + inspect: function() { + var str = "# 20) return; + } + }, + getStyle: function(state) { + state = this.from + ((this.to - this.from) * state); + if (this.property == 'filter') return "alpha(opacity=" + Math.round(state*100) + ")"; + if (this.property == 'opacity') return state; + return Math.round(state) + this.units; + }, + inspect: function() { + return "\t" + this.property + "(" + this.from + this.units + " to " + this.to + this.units + ")\n"; + } +} + +// animates a colour based style property between two hex values +function ColorStyleSubject(els, property, from, to) { + this.els = Animator.makeArray(els); + this.property = Animator.camelize(property); + this.to = this.expandColor(to); + this.from = this.expandColor(from); + this.origFrom = from; + this.origTo = to; +} + +ColorStyleSubject.prototype = { + // parse "#FFFF00" to [256, 256, 0] + expandColor: function(color) { + var hexColor, red, green, blue; + hexColor = ColorStyleSubject.parseColor(color); + if (hexColor) { + red = parseInt(hexColor.slice(1, 3), 16); + green = parseInt(hexColor.slice(3, 5), 16); + blue = parseInt(hexColor.slice(5, 7), 16); + return [red,green,blue] + } + if (window.DEBUG) { + alert("Invalid colour: '" + color + "'"); + } + }, + getValueForState: function(color, state) { + return Math.round(this.from[color] + ((this.to[color] - this.from[color]) * state)); + }, + setState: function(state) { + var color = '#' + + ColorStyleSubject.toColorPart(this.getValueForState(0, state)) + + ColorStyleSubject.toColorPart(this.getValueForState(1, state)) + + ColorStyleSubject.toColorPart(this.getValueForState(2, state)); + for (var i=0; i 255) number = 255; + var digits = number.toString(16); + if (number < 16) return '0' + digits; + return digits; +} +ColorStyleSubject.parseColor.rgbRe = /^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i; +ColorStyleSubject.parseColor.hexRe = /^\#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/; + +// Animates discrete styles, i.e. ones that do not scale but have discrete values +// that can't be interpolated +function DiscreteStyleSubject(els, property, from, to, threshold) { + this.els = Animator.makeArray(els); + this.property = Animator.camelize(property); + this.from = from; + this.to = to; + this.threshold = threshold || 0.5; +} + +DiscreteStyleSubject.prototype = { + setState: function(state) { + var j=0; + for (var i=0; i section ? 1 : 0); + } + if (this.options.rememberance) { + document.location.hash = this.rememberanceTexts[section]; + } + } +} diff --git a/openlayers/examples/arcgis93rest.html b/openlayers/examples/arcgis93rest.html new file mode 100644 index 0000000..9cf6e3f --- /dev/null +++ b/openlayers/examples/arcgis93rest.html @@ -0,0 +1,64 @@ + + + + + + + + +

ArcGIS Server 9.3 Rest API Example

+ +
+
+

+ Shows the basic use of openlayers using an ArcGIS Server 9.3 Rest API layer +

+ +
+ +
+ This is an example of how to add an ArcGIS Server 9.3 Rest API layer to the OpenLayers window. +
+ + + +
+ (Filter is case sensitive.) + + + + + + diff --git a/openlayers/examples/arcims-thematic.html b/openlayers/examples/arcims-thematic.html new file mode 100644 index 0000000..2d8ce17 --- /dev/null +++ b/openlayers/examples/arcims-thematic.html @@ -0,0 +1,77 @@ + + + ArcIMS Thematic Example + + + + + + +

ArcIMS Thematic Example

+ +
+
+

+ Shows the advanced use of OpenLayers using a thematic ArcIMS layer +

+ +
+ +
+

This is an example of how to add an ArcIMS layer to an OpenLayers map.

+ +

Following the ArcXML convention to create a thematic (or chloropleth) map, + a layer definition is created with a query and a renderer to select portions + of the map data, and change their representation in the generated map tiles.

+
+ + + diff --git a/openlayers/examples/arcims.html b/openlayers/examples/arcims.html new file mode 100644 index 0000000..35ea127 --- /dev/null +++ b/openlayers/examples/arcims.html @@ -0,0 +1,52 @@ + + + ArcIMS Example + + + + + + +

ArcIMS Example

+ +
+
+

+ Shows the basic use of OpenLayers using an ArcIMS layer +

+ +
+ +
+ This is an example of how to add an ArcIMS layer to the OpenLayers window. +
+ + + + + + + diff --git a/openlayers/examples/attribution.html b/openlayers/examples/attribution.html new file mode 100644 index 0000000..fb98007 --- /dev/null +++ b/openlayers/examples/attribution.html @@ -0,0 +1,54 @@ + + + OpenLayers Attribution Example + + + + + + + +

Attribution Example

+ +
+ copyright watermark logo attribution +
+ +

+ Shows the use of the attribution layer option on a number of layer types. +

+ +
+ +
+ This is an example of how to add an attribution block to the OpenLayers window. In order to use an + attribution block, an attribution parameter must be set in each layer that requires attribution. In + addition, an attribution control must be added to the map, though one is added to all OpenLayers Maps by default. + Be aware that this is a layer *option*: the options hash goes in + different places depending on the layer type you are using. +
+ + diff --git a/openlayers/examples/baseLayers.html b/openlayers/examples/baseLayers.html new file mode 100644 index 0000000..32073b5 --- /dev/null +++ b/openlayers/examples/baseLayers.html @@ -0,0 +1,96 @@ + + + OpenLayers Base Layers Example + + + + + + + + + + + + + + + + +

Base Layers Example

+ +
+
+ +

+ This example shows the use base layers from multiple commercial map image providers. +

+ +
+
+ +
click to add a marker to the map
+
click to remove the marker from the map
+
+ +
+
+ + diff --git a/openlayers/examples/behavior-fixed-http-gml.html b/openlayers/examples/behavior-fixed-http-gml.html new file mode 100644 index 0000000..cc77958 --- /dev/null +++ b/openlayers/examples/behavior-fixed-http-gml.html @@ -0,0 +1,49 @@ + + + OpenLayers Vector Behavior Example + + + + + + +

Vector Behavior Example (Fixed/HTTP/GML)

+

+ Vector layer with a Fixed strategy, HTTP protocol, and GML format. +

+
+
+ The vector layer shown uses the Fixed strategy, the HTTP protocol, + and the GML format. + The Fixed strategy is a simple strategy that fetches features once + and never re-requests new data. + The HTTP protocol makes requests using HTTP verbs. It should be + constructed with a url that corresponds to a collection of features + (a resource on some server). + The GML format is used to serialize features. +
+ + diff --git a/openlayers/examples/boxes-vector.html b/openlayers/examples/boxes-vector.html new file mode 100644 index 0000000..c6c69bf --- /dev/null +++ b/openlayers/examples/boxes-vector.html @@ -0,0 +1,54 @@ + + + OpenLayers Boxes Example + + + + + + +

Boxes Example

+ +
+
+ +

+ Demonstrate marker and box type annotations on a map. +

+ +
+ +
+ + diff --git a/openlayers/examples/boxes.html b/openlayers/examples/boxes.html new file mode 100644 index 0000000..4f4cd15 --- /dev/null +++ b/openlayers/examples/boxes.html @@ -0,0 +1,53 @@ + + + OpenLayers Boxes Example + + + + + + +

Boxes Example

+ +
+
+ +

+ Demonstrate marker and box type annotations on a map. +

+ +
+ +
+ + diff --git a/openlayers/examples/browser-name.html b/openlayers/examples/browser-name.html new file mode 100644 index 0000000..b590422 --- /dev/null +++ b/openlayers/examples/browser-name.html @@ -0,0 +1,89 @@ + + + OpenLayers Example + + + + + + +

Example Showing Browser Name

+

+ +
+ +

+ Demonstrate a simple map that shows the browser name. +

+ +
+ +
+ + diff --git a/openlayers/examples/buffer.html b/openlayers/examples/buffer.html new file mode 100644 index 0000000..e65ffb1 --- /dev/null +++ b/openlayers/examples/buffer.html @@ -0,0 +1,49 @@ + + + OpenLayers Buffer Example + + + + + + +

Buffer Example

+ +
+
+ +

+ This example shows the use of the buffer layer option for any layer that inherits from OpenLayers.Layer.Grid. +

+ +
+ +
+ Use the buffer property to control how many tiles are included + outside the visible map area. Default is 2. +
+ + diff --git a/openlayers/examples/click-handler.html b/openlayers/examples/click-handler.html new file mode 100644 index 0000000..a4553e6 --- /dev/null +++ b/openlayers/examples/click-handler.html @@ -0,0 +1,227 @@ + + + OpenLayers Click Handler Example + + + + + + + + + +

Click Handler Example

+
+ +
+
+ +

+ This example shows the use of the click handler. +

+ +
+

+ The click handler can be used to gain more flexibility over handling + click events. The handler can be constructed with options to handle + only single click events, to handle single and double-click events, + to ignore clicks that include a drag, and to stop propagation of + single and/or double-click events. A single click is a click that + is not followed by another click for more than 300ms. This delay + is configured with the delay property. +

+

+ The options to stop single and double clicks have to do with + stopping event propagation on the map events listener queue + (not stopping events from cascading to other elements). The + ability to stop an event from propagating has to do with the + order in which listeners are registered. With stopSingle or + stopDouble true, a click handler will stop propagation to all + listeners that were registered (or all handlers that were + activated) before the click handler was activated. So, for + example, activating a click handler with stopDouble true after + the navigation control is active will stop double-clicks from + zooming in. +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Controls with click handlers (toggle on/off to clear output)
single only
double only
both
single with drag
single with stop
double with stop
+
+ + diff --git a/openlayers/examples/click.html b/openlayers/examples/click.html new file mode 100644 index 0000000..c6fe2d3 --- /dev/null +++ b/openlayers/examples/click.html @@ -0,0 +1,81 @@ + + + OpenLayers Click Event Example + + + + + + + +

Click Event Example

+ +
+
+ +

+ This example shows the use of the click handler and getLonLatFromViewPortPx functions to trigger events on mouse click. + +

+ +
+ +
+ Using the Click handler allows you to (for example) catch clicks without catching double clicks, something that standard browser events don't do for you. (Try double clicking: you'll zoom in, whereas using the browser click event, you would just get two alerts.) This example click control shows you how to use it. +
+ + diff --git a/openlayers/examples/controls.html b/openlayers/examples/controls.html new file mode 100644 index 0000000..2017655 --- /dev/null +++ b/openlayers/examples/controls.html @@ -0,0 +1,63 @@ + + + OpenLayers Map Controls Example + + + + + + + +

Map Controls Example

+ +
+
+ +

+ Attach zooming, panning, layer switcher, overview map, and permalink map controls to an OpenLayers window. +

+ +
+
+ +
+ + diff --git a/openlayers/examples/custom-control-point.html b/openlayers/examples/custom-control-point.html new file mode 100644 index 0000000..3c3f660 --- /dev/null +++ b/openlayers/examples/custom-control-point.html @@ -0,0 +1,56 @@ + + + OpenLayers Custom Control Point Examle + + + + + + +

Custom Control Point Example

+ +
+
+ +

+ Demonstrate the addition of a point reporting control to the OpenLayers window. +

+ +
+
+ +
+ + diff --git a/openlayers/examples/custom-control.html b/openlayers/examples/custom-control.html new file mode 100644 index 0000000..8164a5b --- /dev/null +++ b/openlayers/examples/custom-control.html @@ -0,0 +1,59 @@ + + + Custom Control Example + + + + + + +

Custom Control Example

+ +
+
+ +

+ Demonstrate the addition of a draggable rectangle to the OpenLayers window. +

+ +
+ +
+ + diff --git a/openlayers/examples/custom-style.html b/openlayers/examples/custom-style.html new file mode 100644 index 0000000..46746de --- /dev/null +++ b/openlayers/examples/custom-style.html @@ -0,0 +1,61 @@ + + + Custom Style Example + + + + + + + + +

Custom Style Example

+ +
+
+ +

+ Demonstrate changing CSS styles on controls in the OpenLayers window. +

+ +
+ +
+

If you care to modify the style of any OpenLayers element, include + the default stylesheet as a link and declare any style modifications + below that link. These style declarations can be in other linked + stylesheets or in style tags. In addition, construct your map with + options that include {theme: null}. This will disable the default + method of loading the stylesheet and allow you to declare style rules + in your own linked stylesheets or style tags.

+

This example shows how to declare the font family, size, and color + for the mouse position. Note that only the style keys that you want to + modify (change from the default) need to be specified.

+
+ + diff --git a/openlayers/examples/data/line.json b/openlayers/examples/data/line.json new file mode 100644 index 0000000..942a920 --- /dev/null +++ b/openlayers/examples/data/line.json @@ -0,0 +1,10 @@ +{ + "type": "FeatureCollection", + "features": [ + {"type":"Feature", "id":"OpenLayers.Feature.Vector_458", "properties":{}, "geometry":{"type":"LineString", "coordinates":[[-121.640625, 24.2578125], [-78.046875, 27.7734375], [-45.703125, 24.9609375], [-13.359375, 16.5234375], [12.65625, 6.6796875], [39.375, 1.0546875], [76.640625, 1.0546875], [108.28125, 1.7578125], [156.09375, 15.8203125]]}, "crs":{"type":"OGC", "properties":{"urn":"urn:ogc:def:crs:OGC:1.3:CRS84"}}}, + {"type":"Feature", "id":"OpenLayers.Feature.Vector_1111", "properties":{}, "geometry":{"type":"LineString", "coordinates":[[-122.34375, -35.5078125], [-48.515625, -33.3984375], [-5.625, -37.6171875], [20.390625, -32.6953125], [69.609375, -34.1015625], [121.640625, -38.3203125], [150.46875, -33.3984375]]}, "crs":{"type":"OGC", "properties":{"urn":"urn:ogc:def:crs:OGC:1.3:CRS84"}}}, + {"type":"Feature", "id":"OpenLayers.Feature.Vector_634", "properties":{}, "geometry":{"type":"LineString", "coordinates":[[-54.84375, 69.9609375], [-56.953125, 31.9921875], [-56.953125, 5.2734375], [-65.390625, -34.8046875], [-66.09375, -61.5234375]]}, "crs":{"type":"OGC", "properties":{"urn":"urn:ogc:def:crs:OGC:1.3:CRS84"}}}, + {"type":"Feature", "id":"OpenLayers.Feature.Vector_820", "properties":{}, "geometry":{"type":"LineString", "coordinates":[[39.375, 58.0078125], [42.890625, 25.6640625], [42.1875, -1.0546875], [37.96875, -50.2734375], [37.265625, -64.3359375]]}, "crs":{"type":"OGC", "properties":{"urn":"urn:ogc:def:crs:OGC:1.3:CRS84"}}}, + {"type":"Feature", "id":"OpenLayers.Feature.Vector_1280", "properties":{}, "geometry":{"type":"LineString", "coordinates":[[101.25, 42.5390625], [106.875, 13.7109375], [106.171875, -17.9296875], [104.765625, -49.5703125], [102.65625, -67.1484375]]}, "crs":{"type":"OGC", "properties":{"urn":"urn:ogc:def:crs:OGC:1.3:CRS84"}}} + ] +} \ No newline at end of file diff --git a/openlayers/examples/data/point.json b/openlayers/examples/data/point.json new file mode 100644 index 0000000..96b934e --- /dev/null +++ b/openlayers/examples/data/point.json @@ -0,0 +1,8 @@ +{ + "type": "FeatureCollection", + "features": [ + {"type":"Feature", "id":"OpenLayers.Feature.Vector_1721", "properties":{}, "geometry":{"type":"Point", "coordinates":[-89.296875, -14.4140625]}, "crs":{"type":"OGC", "properties":{"urn":"urn:ogc:def:crs:OGC:1.3:CRS84"}}}, + {"type":"Feature", "id":"OpenLayers.Feature.Vector_1715", "properties":{}, "geometry":{"type":"Point", "coordinates":[-25.3125, -54.4921875]}, "crs":{"type":"OGC", "properties":{"urn":"urn:ogc:def:crs:OGC:1.3:CRS84"}}}, + {"type":"Feature", "id":"OpenLayers.Feature.Vector_1709", "properties":{}, "geometry":{"type":"Point", "coordinates":[73.828125, -23.5546875]}, "crs":{"type":"OGC", "properties":{"urn":"urn:ogc:def:crs:OGC:1.3:CRS84"}}} + ] +} \ No newline at end of file diff --git a/openlayers/examples/data/poly.json b/openlayers/examples/data/poly.json new file mode 100644 index 0000000..f15c0e9 --- /dev/null +++ b/openlayers/examples/data/poly.json @@ -0,0 +1,9 @@ +{ + "type": "FeatureCollection", + "features": [ + {"type":"Feature", "id":"OpenLayers.Feature.Vector_1489", "properties":{}, "geometry":{"type":"Polygon", "coordinates":[[[-109.6875, 63.6328125], [-112.5, 35.5078125], [-85.078125, 34.8046875], [-68.90625, 39.7265625], [-68.203125, 67.1484375], [-109.6875, 63.6328125]]]}, "crs":{"type":"OGC", "properties":{"urn":"urn:ogc:def:crs:OGC:1.3:CRS84"}}}, + {"type":"Feature", "id":"OpenLayers.Feature.Vector_1668", "properties":{}, "geometry":{"type":"Polygon", "coordinates":[[[-40.78125, 65.0390625], [-40.078125, 34.8046875], [-12.65625, 25.6640625], [21.09375, 17.2265625], [22.5, 58.0078125], [-40.78125, 65.0390625]]]}, "crs":{"type":"OGC", "properties":{"urn":"urn:ogc:def:crs:OGC:1.3:CRS84"}}} + ] +} + + diff --git a/openlayers/examples/data/roads.json b/openlayers/examples/data/roads.json new file mode 100644 index 0000000..c6d4866 --- /dev/null +++ b/openlayers/examples/data/roads.json @@ -0,0 +1,349 @@ +{ +"type": "FeatureCollection", +"features": [ +{ "type": "Feature", "properties": { "LINK_ID": 30760460.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 1, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "KVARNGATAN", "L_REFADDR": "24", "L_NREFADDR": "22", "R_REFADDR": "27", "R_NREFADDR": "23", "SPEED_CAT": "6", "ZIPCODE": "59333", "SHAPE_LEN": 41.871700 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549555.330250, 6403958.170400 ], [ 1549594.439950, 6403973.130400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 573730499.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 2, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 46.382600 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549497.669850, 6403707.960000 ], [ 1549491.100000, 6403710.100000 ], [ 1549488.039950, 6403716.750400 ], [ 1549488.540100, 6403724.550400 ], [ 1549494.379850, 6403733.540000 ], [ 1549499.679900, 6403738.050400 ], [ 1549506.220000, 6403739.250400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760556.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "BRUNNSGATAN", "L_REFADDR": "24", "L_NREFADDR": "16", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 70.310600 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549754.276900, 6403854.802400 ], [ 1549728.459850, 6403920.200000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760712.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "SÖDRA JÄRNVÄGSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "9", "R_NREFADDR": "9", "SPEED_CAT": "6", "ZIPCODE": "59332", "SHAPE_LEN": 40.068900 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549571.899950, 6403675.450400 ], [ 1549592.674200, 6403684.530400 ], [ 1549608.619850, 6403691.500000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30837043.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "BREDGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 78.203400 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549741.089950, 6403765.520000 ], [ 1549730.790150, 6403779.880000 ], [ 1549703.919950, 6403834.130400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80545558.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "NORRA VARVSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 20.687400 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549909.400050, 6403973.670400 ], [ 1549900.829950, 6403992.491200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760549.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "STRÖMSGATAN", "L_REFADDR": "38", "L_NREFADDR": "36", "R_REFADDR": "33", "R_NREFADDR": "31", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 32.788800 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549878.029900, 6403861.890400 ], [ 1549867.520100, 6403892.960000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547479.000000, "RP_TYPE": 16, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "BREDGATAN", "L_REFADDR": "18", "L_NREFADDR": "14", "R_REFADDR": "15", "R_NREFADDR": "13", "SPEED_CAT": "8", "ZIPCODE": "59330", "SHAPE_LEN": 15.654700 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549645.069900, 6403971.520000 ], [ 1549638.940000, 6403985.930400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760575.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "BREDGATAN", "L_REFADDR": "24", "L_NREFADDR": "14", "R_REFADDR": "19", "R_NREFADDR": "13", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 118.385000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549703.919950, 6403834.130400 ], [ 1549656.739950, 6403942.710400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760608.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "32", "L_NREFADDR": "32", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 74.462800 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549566.450100, 6403780.090400 ], [ 1549635.170150, 6403808.780000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547481.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "KVARNGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 13.834500 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549625.900050, 6403981.310400 ], [ 1549638.940000, 6403985.930400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 573730495.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 1, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 63.537000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549535.370100, 6403692.830400 ], [ 1549549.530050, 6403703.030400 ], [ 1549570.300100, 6403708.850400 ], [ 1549570.600050, 6403733.360000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80545560.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 20.545100 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549927.119850, 6403985.020000 ], [ 1549944.182350, 6403996.455200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760664.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "SÖDRA JÄRNVÄGSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "3", "R_NREFADDR": "1", "SPEED_CAT": "6", "ZIPCODE": "59331", "SHAPE_LEN": 59.030600 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549679.130150, 6403720.210400 ], [ 1549717.099900, 6403730.700000 ], [ 1549726.590150, 6403734.160000 ], [ 1549734.260050, 6403739.820000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547480.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "KVARNGATAN", "L_REFADDR": "20", "L_NREFADDR": "20", "R_REFADDR": "21", "R_NREFADDR": "21", "SPEED_CAT": "6", "ZIPCODE": "59333", "SHAPE_LEN": 12.375300 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549614.030150, 6403977.820000 ], [ 1549621.149850, 6403980.140000 ], [ 1549625.900050, 6403981.310400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760739.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "SÖDRA JÄRNVÄGSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "13", "R_NREFADDR": "11", "SPEED_CAT": "6", "ZIPCODE": "59332", "SHAPE_LEN": 57.793000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549522.250000, 6403645.880000 ], [ 1549571.899950, 6403675.450400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80545557.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "NORRA VARVSGATAN", "L_REFADDR": "26", "L_NREFADDR": "20", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 62.216100 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549929.770050, 6403914.890400 ], [ 1549909.400050, 6403973.670400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760610.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "SLOTTSHOLMSVÄGEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 60.324700 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549921.910100, 6403780.010400 ], [ 1549931.136800, 6403785.640000 ], [ 1549946.150050, 6403794.800000 ], [ 1549960.880150, 6403807.230400 ], [ 1549962.209450, 6403808.998400 ], [ 1549968.489850, 6403817.350400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760475.000000, "RP_TYPE": 16, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "SPÖTORGET", "L_REFADDR": "9", "L_NREFADDR": "1", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "8", "ZIPCODE": "59330", "SHAPE_LEN": 70.301600 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549656.739950, 6403942.710400 ], [ 1549631.800000, 6403936.830400 ], [ 1549614.030150, 6403977.820000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547460.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 1, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "KVARNGATAN", "L_REFADDR": "30", "L_NREFADDR": "26", "R_REFADDR": "31", "R_NREFADDR": "29", "SPEED_CAT": "6", "ZIPCODE": "59333", "SHAPE_LEN": 62.288000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549496.649950, 6403937.400000 ], [ 1549525.699950, 6403946.670400 ], [ 1549555.330250, 6403958.170400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547482.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 22.019100 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549645.069900, 6403971.520000 ], [ 1549637.249850, 6403978.110400 ], [ 1549633.070150, 6403979.170400 ], [ 1549625.900050, 6403981.310400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 573730502.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 2, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 26.440100 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549535.370100, 6403692.830400 ], [ 1549528.510100, 6403718.360000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 573730491.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "ÖSTRA KYRKOGATAN", "L_REFADDR": "48", "L_NREFADDR": "48", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 53.485400 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549608.619850, 6403691.500000 ], [ 1549600.079850, 6403708.100000 ], [ 1549584.219950, 6403739.090400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760461.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 2, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "RÅDHUSGATAN", "L_REFADDR": "52", "L_NREFADDR": "50", "R_REFADDR": "43", "R_NREFADDR": "41", "SPEED_CAT": "6", "ZIPCODE": "59333", "SHAPE_LEN": 62.397200 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549555.330250, 6403958.170400 ], [ 1549531.400050, 6404015.800000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760674.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "SÖDRA JÄRNVÄGSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59331", "SHAPE_LEN": 13.834500 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549666.080050, 6403715.590400 ], [ 1549679.130150, 6403720.210400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80545555.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "SLOTTSHOLMSVÄGEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 185.679000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549968.489850, 6403817.350400 ], [ 1549977.779900, 6403836.400000 ], [ 1549983.460050, 6403858.740000 ], [ 1549982.539900, 6403884.350400 ], [ 1549978.140050, 6403903.230400 ], [ 1549947.139850, 6403954.090400 ], [ 1549927.119850, 6403985.020000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760515.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "NORRA VARVSGATAN", "L_REFADDR": "30", "L_NREFADDR": "28", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 22.968600 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549938.960000, 6403893.840000 ], [ 1549929.770050, 6403914.890400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760497.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 1, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "KVARNGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59333", "SHAPE_LEN": 24.829800 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549488.599950, 6403913.910400 ], [ 1549496.649950, 6403937.400000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30837044.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 146.769000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549776.080150, 6403777.100000 ], [ 1549785.590000, 6403778.330400 ], [ 1549886.280100, 6403772.890400 ], [ 1549908.484450, 6403777.327200 ], [ 1549921.910100, 6403780.010400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760477.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "BRUNNSGATAN", "L_REFADDR": "14", "L_NREFADDR": "12", "R_REFADDR": "19", "R_NREFADDR": "11", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 78.700300 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549723.519950, 6403934.620000 ], [ 1549697.600000, 6404008.930400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760542.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "22", "L_NREFADDR": "18", "R_REFADDR": "29", "R_NREFADDR": "21", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 34.587000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549798.179850, 6403867.590400 ], [ 1549830.790050, 6403879.130400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760457.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "NYGATAN", "L_REFADDR": "8", "L_NREFADDR": "6", "R_REFADDR": "15", "R_NREFADDR": "7", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 45.468000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549796.459950, 6403958.910400 ], [ 1549839.739900, 6403972.810400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 573703846.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59331", "SHAPE_LEN": 8.208130 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549734.260050, 6403739.820000 ], [ 1549738.939900, 6403746.560000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760631.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 46.824600 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549741.290150, 6403748.820000 ], [ 1549753.539450, 6403766.201600 ], [ 1549754.750100, 6403767.920000 ], [ 1549761.249950, 6403772.460000 ], [ 1549776.080150, 6403777.100000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760491.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "BRUNNSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 15.240700 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549728.459850, 6403920.200000 ], [ 1549723.519950, 6403934.620000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760566.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "NORRA VARVSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 54.648300 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549960.410100, 6403843.980000 ], [ 1549959.139950, 6403850.640000 ], [ 1549952.470000, 6403860.580000 ], [ 1549938.960000, 6403893.840000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547447.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59331", "SHAPE_LEN": 13.369300 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549927.421200, 6403767.822400 ], [ 1549921.910100, 6403780.010400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 573730503.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 44.681900 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549528.510100, 6403718.360000 ], [ 1549570.600050, 6403733.360000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80545559.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 21.047100 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549909.400050, 6403973.670400 ], [ 1549927.119850, 6403985.020000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547444.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 1, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59331", "SHAPE_LEN": 46.504800 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549967.599100, 6403744.932000 ], [ 1549943.650000, 6403755.770400 ], [ 1549927.421200, 6403767.822400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 573730492.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "ÖSTRA KYRKOGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 44.681800 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549584.219950, 6403739.090400 ], [ 1549566.450100, 6403780.090400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760700.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "SÖDRA JÄRNVÄGSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "7", "R_NREFADDR": "5", "SPEED_CAT": "6", "ZIPCODE": "59332", "SHAPE_LEN": 62.310700 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549608.619850, 6403691.500000 ], [ 1549666.080050, 6403715.590400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760611.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "STRÖMSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 51.110800 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549921.910100, 6403780.010400 ], [ 1549913.480000, 6403787.710400 ], [ 1549891.640000, 6403820.850400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547478.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "BREDGATAN", "L_REFADDR": "24", "L_NREFADDR": "20", "R_REFADDR": "19", "R_NREFADDR": "17", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 31.088600 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549656.739950, 6403942.710400 ], [ 1549645.069900, 6403971.520000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760451.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "KVARNGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59333", "SHAPE_LEN": 20.146600 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549594.439950, 6403973.130400 ], [ 1549614.030150, 6403977.820000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760525.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "16", "L_NREFADDR": "14", "R_REFADDR": "19", "R_NREFADDR": "15", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 39.254300 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549830.790050, 6403879.130400 ], [ 1549867.520100, 6403892.960000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760497.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 1, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "ÖSTRA KYRKOGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59333", "SHAPE_LEN": 24.829800 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549488.599950, 6403913.910400 ], [ 1549496.649950, 6403937.400000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 573703847.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59331", "SHAPE_LEN": 3.259030 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549738.939900, 6403746.560000 ], [ 1549741.290150, 6403748.820000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 573730500.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 1, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 31.544900 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549528.510100, 6403718.360000 ], [ 1549511.590050, 6403738.200000 ], [ 1549506.220000, 6403739.250400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 573730504.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 1, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 32.542600 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549497.669850, 6403707.960000 ], [ 1549528.510100, 6403718.360000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760589.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "", "CHANGED": "", "USERID": "", "ST_NAME": "BRUNNSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "23", "R_NREFADDR": "21", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 47.569300 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549771.489900, 6403810.460000 ], [ 1549754.276900, 6403854.802400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 16, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808270836", "USERID": "LO-JKP", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 34.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549967.599100, 6403744.932000 ], [ 1549999.352500, 6403730.830400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808270839", "USERID": "LO-JKP", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 9.900000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549967.599100, 6403744.932000 ], [ 1549975.575600, 6403750.824800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808270840", "USERID": "LO-JKP", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 18.400000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549975.575600, 6403750.824800 ], [ 1549992.301750, 6403743.152800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 22, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808270840", "USERID": "LO-JKP", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 16.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1550001.325450, 6403756.464000 ], [ 1549992.301750, 6403743.152800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808270842", "USERID": "LO-JKP", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 12.300000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549927.421200, 6403767.822400 ], [ 1549936.717550, 6403775.876000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808270842", "USERID": "LO-JKP", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 46.500000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549936.717550, 6403775.876000 ], [ 1549958.789600, 6403758.524000 ], [ 1549975.575600, 6403750.824800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547691.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 2, "LOGKOD": "R", "CHANGED": "0808270844", "USERID": "LO-JKP", "ST_NAME": "NORRA BANGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59331", "SHAPE_LEN": 209.000000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549937.660100, 6403662.140000 ], [ 1549881.800100, 6403701.550400 ], [ 1549764.730000, 6403731.290400 ], [ 1549745.501350, 6403736.423200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547691.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 2, "LOGKOD": "R", "CHANGED": "0808270844", "USERID": "LO-JKP", "ST_NAME": "NORRA BANGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59331", "SHAPE_LEN": 11.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549745.501350, 6403736.423200 ], [ 1549734.260050, 6403739.820000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808270847", "USERID": "LO-JKP", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 32.700000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549927.421200, 6403767.822400 ], [ 1549930.803600, 6403753.404000 ], [ 1549928.832400, 6403735.662400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808270847", "USERID": "LO-JKP", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 53.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549928.832400, 6403735.662400 ], [ 1549962.732350, 6403727.381600 ], [ 1549967.599100, 6403744.932000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 16, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808270848", "USERID": "LO-JKP", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 44.400000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549928.832400, 6403735.662400 ], [ 1549886.025300, 6403747.621600 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 16, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808270848", "USERID": "LO-JKP", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 11.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549886.025300, 6403747.621600 ], [ 1549875.211350, 6403750.643200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 16, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808270848", "USERID": "LO-JKP", "ST_NAME": "STATIONSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 19.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549888.409150, 6403767.056000 ], [ 1549886.025300, 6403747.621600 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808270922", "USERID": "LO-JKP", "ST_NAME": "HALLSTRÖMSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 20.700000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549745.501350, 6403736.423200 ], [ 1549760.669300, 6403722.331200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808270923", "USERID": "LO-JKP", "ST_NAME": "HALLSTRÖMSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 126.700000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549760.669300, 6403722.331200 ], [ 1549771.919700, 6403716.340800 ], [ 1549815.248650, 6403610.940000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547535.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 1, "LOGKOD": "R", "CHANGED": "0808270933", "USERID": "LO-JKP", "ST_NAME": "ESPLANADEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "5", "R_NREFADDR": "1", "SPEED_CAT": "6", "ZIPCODE": "59331", "SHAPE_LEN": 5.000000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549681.045700, 6403715.598400 ], [ 1549679.130150, 6403720.210400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808270933", "USERID": "LO-JKP", "ST_NAME": "SÖDRA JÄRNVÄGSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 68.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549745.501350, 6403736.423200 ], [ 1549740.387150, 6403731.321600 ], [ 1549681.045700, 6403715.598400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760732.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 2, "LOGKOD": "R", "CHANGED": "0808270934", "USERID": "LO-JKP", "ST_NAME": "ESPLANADEN", "L_REFADDR": "2", "L_NREFADDR": "2", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59332", "SHAPE_LEN": 56.700000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549683.510050, 6403654.550400 ], [ 1549667.935400, 6403709.100000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760732.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 2, "LOGKOD": "R", "CHANGED": "0808270934", "USERID": "LO-JKP", "ST_NAME": "ESPLANADEN", "L_REFADDR": "2", "L_NREFADDR": "2", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59332", "SHAPE_LEN": 6.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549667.935400, 6403709.100000 ], [ 1549666.080050, 6403715.590400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808270934", "USERID": "LO-JKP", "ST_NAME": "SÖDRA JÄRNVÄGSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 14.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549681.045700, 6403715.598400 ], [ 1549667.935400, 6403709.100000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808270935", "USERID": "LO-JKP", "ST_NAME": "HALLSTRÖMSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 40.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549763.755600, 6403714.004800 ], [ 1549738.019750, 6403704.509600 ], [ 1549731.660600, 6403715.640800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547428.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808270936", "USERID": "LO-JKP", "ST_NAME": "HALLSTRÖMSGATAN", "L_REFADDR": "10", "L_NREFADDR": "2", "R_REFADDR": "1", "R_NREFADDR": "1", "SPEED_CAT": "7", "ZIPCODE": "59331", "SHAPE_LEN": 15.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549766.018350, 6403708.067200 ], [ 1549763.755600, 6403714.004800 ], [ 1549760.669300, 6403722.331200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808270936", "USERID": "LO-JKP", "ST_NAME": "HALLSTRÖMSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 48.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549766.018350, 6403708.067200 ], [ 1549736.048550, 6403696.628800 ], [ 1549743.183300, 6403681.558400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547428.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808270936", "USERID": "LO-JKP", "ST_NAME": "HALLSTRÖMSGATAN", "L_REFADDR": "10", "L_NREFADDR": "2", "R_REFADDR": "1", "R_NREFADDR": "1", "SPEED_CAT": "7", "ZIPCODE": "59331", "SHAPE_LEN": 22.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549774.118750, 6403686.709600 ], [ 1549766.018350, 6403708.067200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808270936", "USERID": "LO-JKP", "ST_NAME": "HALLSTRÖMSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 36.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549774.118750, 6403686.709600 ], [ 1549747.876450, 6403676.916800 ], [ 1549751.868550, 6403670.136800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547428.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808270937", "USERID": "LO-JKP", "ST_NAME": "HALLSTRÖMSGATAN", "L_REFADDR": "10", "L_NREFADDR": "2", "R_REFADDR": "1", "R_NREFADDR": "1", "SPEED_CAT": "7", "ZIPCODE": "59331", "SHAPE_LEN": 25.900000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549783.651700, 6403662.588800 ], [ 1549778.530150, 6403674.660000 ], [ 1549774.118750, 6403686.709600 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547535.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 1, "LOGKOD": "R", "CHANGED": "0808270938", "USERID": "LO-JKP", "ST_NAME": "ESPLANADEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "5", "R_NREFADDR": "1", "SPEED_CAT": "6", "ZIPCODE": "59331", "SHAPE_LEN": 18.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549703.060000, 6403662.590400 ], [ 1549695.854900, 6403679.940000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547535.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 1, "LOGKOD": "R", "CHANGED": "0808270938", "USERID": "LO-JKP", "ST_NAME": "ESPLANADEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "5", "R_NREFADDR": "1", "SPEED_CAT": "6", "ZIPCODE": "59331", "SHAPE_LEN": 38.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549695.854900, 6403679.940000 ], [ 1549681.045700, 6403715.598400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 16, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808270938", "USERID": "LO-JKP", "ST_NAME": "ESPLANADEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 27.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549695.854900, 6403679.940000 ], [ 1549710.817400, 6403684.797600 ], [ 1549716.384850, 6403674.867200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 16, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808270939", "USERID": "LO-JKP", "ST_NAME": "ESPLANADEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 18.900000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549704.982200, 6403658.172000 ], [ 1549717.515000, 6403662.725600 ], [ 1549719.527500, 6403657.506400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808271124", "USERID": "LO-JKP", "ST_NAME": "FÄNGELSETORGET", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 192.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549908.200950, 6403637.271200 ], [ 1549910.100750, 6403648.924800 ], [ 1549887.237000, 6403693.868800 ], [ 1549878.956000, 6403699.779200 ], [ 1549807.205300, 6403714.370400 ], [ 1549760.669300, 6403722.331200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 1900112527.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 2, "LOGKOD": "R", "CHANGED": "0808271126", "USERID": "LO-JKP", "ST_NAME": "FÄNGELSETORGET", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 100.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549809.770450, 6403695.048800 ], [ 1549792.424450, 6403687.958400 ], [ 1549824.218800, 6403612.351200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808271126", "USERID": "LO-JKP", "ST_NAME": "FÄNGELSETOGET", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 17.500000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549817.102950, 6403710.910400 ], [ 1549809.770450, 6403695.048800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547449.000000, "RP_TYPE": 10, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271128", "USERID": "LO-JKP", "ST_NAME": "SÖDRA VARVSGATAN", "L_REFADDR": "40", "L_NREFADDR": "32", "R_REFADDR": "21", "R_NREFADDR": "15", "SPEED_CAT": "6", "ZIPCODE": "59350", "SHAPE_LEN": 23.500000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549989.554600, 6403806.848000 ], [ 1549976.880050, 6403812.990400 ], [ 1549968.489850, 6403817.350400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 573730501.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271500", "USERID": "LO-JKP", "ST_NAME": "", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 9.900000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549570.600050, 6403733.360000 ], [ 1549579.722100, 6403737.201600 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 573730501.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271500", "USERID": "LO-JKP", "ST_NAME": "", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 4.900000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549579.722100, 6403737.201600 ], [ 1549584.219950, 6403739.090400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 573730505.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271504", "USERID": "LO-JKP", "ST_NAME": "LÄROVERKSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59333", "SHAPE_LEN": 79.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549471.922100, 6403800.288000 ], [ 1549539.838900, 6403825.187200 ], [ 1549546.809850, 6403827.740000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271508", "USERID": "LO-JKP", "ST_NAME": "SÖDRA JÄRNVÄGSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59332", "SHAPE_LEN": 23.000000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549574.529850, 6403669.305600 ], [ 1549580.125650, 6403672.576800 ], [ 1549595.345750, 6403678.918400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271508", "USERID": "LO-JKP", "ST_NAME": "SÖDRA JÄRNVÄGSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59332", "SHAPE_LEN": 80.000000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549595.345750, 6403678.918400 ], [ 1549617.976400, 6403688.348000 ], [ 1549648.329450, 6403702.939200 ], [ 1549654.639250, 6403704.509600 ], [ 1549660.157350, 6403703.329600 ], [ 1549667.935400, 6403709.100000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808271508", "USERID": "LO-JKP", "ST_NAME": "ÖSTRA KYRKOGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59333", "SHAPE_LEN": 68.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549579.722100, 6403737.201600 ], [ 1549586.633550, 6403729.352000 ], [ 1549598.065250, 6403704.509600 ], [ 1549595.698200, 6403698.599200 ], [ 1549588.604750, 6403693.078400 ], [ 1549592.674200, 6403684.530400 ], [ 1549595.345750, 6403678.918400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271508", "USERID": "LO-JKP", "ST_NAME": "KVARNGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59333", "SHAPE_LEN": 185.700000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549495.671350, 6403901.486400 ], [ 1549498.716350, 6403900.056000 ], [ 1549509.356700, 6403886.655200 ], [ 1549520.005100, 6403865.753600 ], [ 1549533.012150, 6403839.740800 ], [ 1549539.838900, 6403825.187200 ], [ 1549547.990750, 6403807.808000 ], [ 1549557.459650, 6403786.516800 ], [ 1549566.128450, 6403765.624800 ], [ 1549574.805650, 6403746.692800 ], [ 1549579.722100, 6403737.201600 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547462.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271508", "USERID": "LO-JKP", "ST_NAME": "ÖSTRA KYRKOGATAN", "L_REFADDR": "44", "L_NREFADDR": "38", "R_REFADDR": "61", "R_NREFADDR": "53", "SPEED_CAT": "7", "ZIPCODE": "59333", "SHAPE_LEN": 14.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549501.325600, 6403908.552800 ], [ 1549497.550150, 6403911.790400 ], [ 1549488.599950, 6403913.910400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808271508", "USERID": "LO-JKP", "ST_NAME": "ÖSTRA KYRKOGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59333", "SHAPE_LEN": 9.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549495.671350, 6403901.486400 ], [ 1549501.325600, 6403908.552800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271509", "USERID": "LO-JKP", "ST_NAME": "SLOTTHOLMSLEDEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 29.400000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549745.501350, 6403736.423200 ], [ 1549760.487650, 6403761.674400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271509", "USERID": "LO-JKP", "ST_NAME": "SLOTTHOLMSLEDEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 130.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549760.487650, 6403761.674400 ], [ 1549773.107600, 6403768.775200 ], [ 1549794.000150, 6403771.925600 ], [ 1549806.223900, 6403771.925600 ], [ 1549847.621200, 6403768.775200 ], [ 1549874.427700, 6403767.595200 ], [ 1549888.409150, 6403767.056000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760574.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271509", "USERID": "LO-JKP", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "26", "L_NREFADDR": "24", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 5.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549703.919950, 6403834.130400 ], [ 1549709.114300, 6403836.262400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760574.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271509", "USERID": "LO-JKP", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "26", "L_NREFADDR": "24", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 48.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549709.114300, 6403836.262400 ], [ 1549754.276900, 6403854.802400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760590.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271510", "USERID": "LO-JKP", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "30", "L_NREFADDR": "28", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 37.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549635.170150, 6403808.780000 ], [ 1549670.099800, 6403821.660000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 16, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808271510", "USERID": "LO-JKP", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 45.400000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549670.099800, 6403821.660000 ], [ 1549661.138750, 6403843.681600 ], [ 1549652.074100, 6403839.340800 ], [ 1549647.702600, 6403850.082400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760590.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271511", "USERID": "LO-JKP", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "30", "L_NREFADDR": "28", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 4.700000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549670.099800, 6403821.660000 ], [ 1549674.526600, 6403823.292000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760590.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271511", "USERID": "LO-JKP", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "30", "L_NREFADDR": "28", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 31.300000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549674.526600, 6403823.292000 ], [ 1549703.919950, 6403834.130400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 16, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808271511", "USERID": "LO-JKP", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 23.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549674.526600, 6403823.292000 ], [ 1549664.644350, 6403844.952000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271512", "USERID": "LO-JKP", "ST_NAME": "BREDGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 47.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549760.487650, 6403761.674400 ], [ 1549753.539450, 6403766.201600 ], [ 1549734.473200, 6403778.625600 ], [ 1549728.022350, 6403793.287200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271513", "USERID": "LO-JKP", "ST_NAME": "BREDGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 9.300000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549728.022350, 6403793.287200 ], [ 1549724.270700, 6403801.813600 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271513", "USERID": "LO-JKP", "ST_NAME": "BREDGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 37.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549724.270700, 6403801.813600 ], [ 1549709.114300, 6403836.262400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271514", "USERID": "LO-JKP", "ST_NAME": "BREDGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 51.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549754.276900, 6403854.802400 ], [ 1549737.228050, 6403806.618400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271514", "USERID": "LO-JKP", "ST_NAME": "BREDGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 13.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549737.228050, 6403806.618400 ], [ 1549724.270700, 6403801.813600 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547503.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271514", "USERID": "LO-JKP", "ST_NAME": "BRUNNSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "25", "R_NREFADDR": "25", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 17.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549774.889100, 6403793.607200 ], [ 1549771.489900, 6403810.460000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808271514", "USERID": "LO-JKP", "ST_NAME": "BRUNNSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 40.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549737.228050, 6403806.618400 ], [ 1549769.560700, 6403793.607200 ], [ 1549774.889100, 6403793.607200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547503.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271515", "USERID": "LO-JKP", "ST_NAME": "BRUNNSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "25", "R_NREFADDR": "25", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 14.500000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549776.080150, 6403777.100000 ], [ 1549775.301400, 6403791.567200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547503.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271515", "USERID": "LO-JKP", "ST_NAME": "BRUNNSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "25", "R_NREFADDR": "25", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 2.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549775.301400, 6403791.567200 ], [ 1549774.889100, 6403793.607200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271516", "USERID": "LO-JKP", "ST_NAME": "SLOTTHOLMSLEDEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 23.500000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549888.409150, 6403767.056000 ], [ 1549894.924400, 6403766.804800 ], [ 1549911.882600, 6403767.984800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271516", "USERID": "LO-JKP", "ST_NAME": "SLOTTHOLMSLEDEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 15.500000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549911.882600, 6403767.984800 ], [ 1549927.421200, 6403767.822400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760596.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271516", "USERID": "LO-JKP", "ST_NAME": "NORRA JÄRNVÄGSGATAN", "L_REFADDR": "12", "L_NREFADDR": "6", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 68.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549818.068600, 6403799.888800 ], [ 1549884.091550, 6403818.700000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760596.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271516", "USERID": "LO-JKP", "ST_NAME": "NORRA JÄRNVÄGSGATAN", "L_REFADDR": "12", "L_NREFADDR": "6", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 7.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549884.091550, 6403818.700000 ], [ 1549891.640000, 6403820.850400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808271516", "USERID": "LO-JKP", "ST_NAME": "STRÖMSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 58.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549911.882600, 6403767.984800 ], [ 1549908.484450, 6403777.327200 ], [ 1549905.284050, 6403786.126400 ], [ 1549884.091550, 6403818.700000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760579.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271517", "USERID": "LO-JKP", "ST_NAME": "NORRA JÄRNVÄGSGATAN", "L_REFADDR": "4", "L_NREFADDR": "2", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 6.400000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549891.640000, 6403820.850400 ], [ 1549897.839200, 6403822.604000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808271517", "USERID": "LO-JKP", "ST_NAME": "STRÖMSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 61.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549936.717550, 6403775.876000 ], [ 1549931.136800, 6403785.640000 ], [ 1549927.257050, 6403792.427200 ], [ 1549897.839200, 6403822.604000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808271517", "USERID": "LO-JKP", "ST_NAME": "SLOTTSHOLMSLEDEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 7.000000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549982.841250, 6403805.048000 ], [ 1549989.554600, 6403806.848000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271518", "USERID": "LO-JKP", "ST_NAME": "SLOTTSHOLMSLEDEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 14.000000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549775.301400, 6403791.567200 ], [ 1549789.273750, 6403792.036800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808271518", "USERID": "LO-JKP", "ST_NAME": "SLOTTSHOLMSLEDEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 116.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549789.273750, 6403792.036800 ], [ 1549820.418850, 6403786.116800 ], [ 1549862.599800, 6403784.936000 ], [ 1549905.284050, 6403786.126400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 16, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808271518", "USERID": "LO-JKP", "ST_NAME": "NORRA JÄRNVÄGSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 29.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549818.068600, 6403799.888800 ], [ 1549789.273750, 6403792.036800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547461.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280759", "USERID": "LO-JKP", "ST_NAME": "VÅRDTRÄDSPLAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "7", "R_NREFADDR": "3", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 93.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549635.170150, 6403808.780000 ], [ 1549633.900000, 6403814.330400 ], [ 1549618.609900, 6403847.560000 ], [ 1549614.980050, 6403851.970400 ], [ 1549605.460050, 6403851.850400 ], [ 1549590.180100, 6403883.960800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547461.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280759", "USERID": "LO-JKP", "ST_NAME": "VÅRDTRÄDSPLAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "7", "R_NREFADDR": "3", "SPEED_CAT": "6", "ZIPCODE": "59330", "SHAPE_LEN": 51.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549590.180100, 6403883.960800 ], [ 1549568.259950, 6403874.780000 ], [ 1549542.790100, 6403864.450400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808280759", "USERID": "LO-JKP", "ST_NAME": "VÅRDTRÄDSPLAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 99.400000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549555.330250, 6403958.170400 ], [ 1549562.119900, 6403948.800800 ], [ 1549569.040100, 6403929.018400 ], [ 1549576.364550, 6403927.638400 ], [ 1549583.482500, 6403925.468800 ], [ 1549590.600800, 6403917.357600 ], [ 1549593.767950, 6403909.047200 ], [ 1549596.737350, 6403902.126400 ], [ 1549585.857950, 6403894.605600 ], [ 1549590.180100, 6403883.960800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760476.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280801", "USERID": "LO-JKP", "ST_NAME": "NYGATAN", "L_REFADDR": "12", "L_NREFADDR": "10", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 62.700000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549723.519950, 6403934.620000 ], [ 1549782.972000, 6403954.418400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760476.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280801", "USERID": "LO-JKP", "ST_NAME": "NYGATAN", "L_REFADDR": "12", "L_NREFADDR": "10", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 14.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549782.972000, 6403954.418400 ], [ 1549796.459950, 6403958.910400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760555.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280803", "USERID": "LO-JKP", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "33", "R_NREFADDR": "31", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 37.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549754.276900, 6403854.802400 ], [ 1549789.877500, 6403865.172000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760555.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280803", "USERID": "LO-JKP", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "33", "R_NREFADDR": "31", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 8.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549789.877500, 6403865.172000 ], [ 1549798.179850, 6403867.590400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808280803", "USERID": "LO-JKP", "ST_NAME": "GÖSTA BERNARDS GATA", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 44.000000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549763.127350, 6403899.236800 ], [ 1549769.602000, 6403885.904800 ], [ 1549772.571400, 6403880.964800 ], [ 1549789.877500, 6403865.172000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280805", "USERID": "LO-JKP", "ST_NAME": "GRÖNA GRÄND", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 42.400000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549782.972000, 6403954.418400 ], [ 1549793.934000, 6403923.878400 ], [ 1549786.164350, 6403917.663200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280805", "USERID": "LO-JKP", "ST_NAME": "GRÖNA GRÄND", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 29.500000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549786.164350, 6403917.663200 ], [ 1549763.127350, 6403899.236800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760512.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 2, "LOGKOD": "R", "CHANGED": "0808280806", "USERID": "LO-JKP", "ST_NAME": "TRÄDGÅRDSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "3", "R_NREFADDR": "1", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 16.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549763.127350, 6403899.236800 ], [ 1549754.840050, 6403906.050400 ], [ 1549749.691200, 6403908.812000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760512.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 2, "LOGKOD": "R", "CHANGED": "0808280806", "USERID": "LO-JKP", "ST_NAME": "TRÄDGÅRDSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "3", "R_NREFADDR": "1", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 24.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549749.691200, 6403908.812000 ], [ 1549728.459850, 6403920.200000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280806", "USERID": "LO-JKP", "ST_NAME": "GÖSTA BERNARDS GATA", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 49.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549786.477600, 6403917.288000 ], [ 1549786.164350, 6403917.663200 ], [ 1549781.471200, 6403923.288000 ], [ 1549778.501800, 6403931.988800 ], [ 1549753.386150, 6403924.078400 ], [ 1549757.605750, 6403919.492000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280806", "USERID": "LO-JKP", "ST_NAME": "GÖSTA BERNARDS GATA", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 7.300000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549757.605750, 6403919.492000 ], [ 1549762.549850, 6403914.117600 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808280806", "USERID": "LO-JKP", "ST_NAME": "GÖSTA BERNARDS GATA", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 13.300000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549749.691200, 6403908.812000 ], [ 1549757.605750, 6403919.492000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760580.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280807", "USERID": "LO-JKP", "ST_NAME": "STRÖMSGATAN", "L_REFADDR": "42", "L_NREFADDR": "40", "R_REFADDR": "37", "R_NREFADDR": "35", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 25.400000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549891.640000, 6403820.850400 ], [ 1549883.651250, 6403844.940000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760580.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280807", "USERID": "LO-JKP", "ST_NAME": "STRÖMSGATAN", "L_REFADDR": "42", "L_NREFADDR": "40", "R_REFADDR": "37", "R_NREFADDR": "35", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 17.900000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549883.651250, 6403844.940000 ], [ 1549878.029900, 6403861.890400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808280807", "USERID": "LO-JKP", "ST_NAME": "STRÖMSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 19.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549883.651250, 6403844.940000 ], [ 1549902.215600, 6403851.322400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760588.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 1, "LOGKOD": "R", "CHANGED": "0808280808", "USERID": "LO-JKP", "ST_NAME": "ÅTERVÄNDSGATAN", "L_REFADDR": "24", "L_NREFADDR": "14", "R_REFADDR": "23", "R_NREFADDR": "15", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 85.900000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549771.489900, 6403810.460000 ], [ 1549848.872800, 6403847.815200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760588.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 1, "LOGKOD": "R", "CHANGED": "0808280808", "USERID": "LO-JKP", "ST_NAME": "ÅTERVÄNDSGATAN", "L_REFADDR": "24", "L_NREFADDR": "14", "R_REFADDR": "23", "R_NREFADDR": "15", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 32.400000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549848.872800, 6403847.815200 ], [ 1549878.029900, 6403861.890400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280808", "USERID": "LO-JKP", "ST_NAME": "ÅTERVÄNDSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 16.900000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549848.872800, 6403847.815200 ], [ 1549858.013750, 6403836.851200 ], [ 1549859.956250, 6403835.057600 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280808", "USERID": "LO-JKP", "ST_NAME": "ÅTERVÄNDSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 8.000000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549859.956250, 6403835.057600 ], [ 1549865.800200, 6403829.660800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808280808", "USERID": "LO-JKP", "ST_NAME": "ÅTERVÄNDSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 7.900000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549859.956250, 6403835.057600 ], [ 1549866.996150, 6403838.471200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760516.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280809", "USERID": "LO-JKP", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "12", "L_NREFADDR": "2", "R_REFADDR": "13", "R_NREFADDR": "1", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 39.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549867.520100, 6403892.960000 ], [ 1549904.353050, 6403905.936000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760516.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280809", "USERID": "LO-JKP", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "12", "L_NREFADDR": "2", "R_REFADDR": "13", "R_NREFADDR": "1", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 26.900000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549904.353050, 6403905.936000 ], [ 1549929.770050, 6403914.890400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760548.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280809", "USERID": "LO-JKP", "ST_NAME": "ÅTERVÄNDSGATAN", "L_REFADDR": "12", "L_NREFADDR": "2", "R_REFADDR": "13", "R_NREFADDR": "13", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 43.000000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549878.029900, 6403861.890400 ], [ 1549916.095200, 6403881.850400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760548.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280809", "USERID": "LO-JKP", "ST_NAME": "ÅTERVÄNDSGATAN", "L_REFADDR": "12", "L_NREFADDR": "2", "R_REFADDR": "13", "R_NREFADDR": "13", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 25.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549916.095200, 6403881.850400 ], [ 1549938.960000, 6403893.840000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808280809", "USERID": "LO-JKP", "ST_NAME": "BÅTSMANSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 26.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549904.353050, 6403905.936000 ], [ 1549912.608150, 6403888.475200 ], [ 1549916.095200, 6403881.850400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760517.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280811", "USERID": "LO-JKP", "ST_NAME": "STRÖMSGATAN", "L_REFADDR": "34", "L_NREFADDR": "24", "R_REFADDR": "29", "R_NREFADDR": "19", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 23.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549848.114000, 6403950.774400 ], [ 1549839.739900, 6403972.810400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808280811", "USERID": "LO-JKP", "ST_NAME": "STRÖMSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 30.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549848.114000, 6403950.774400 ], [ 1549869.289000, 6403957.700800 ], [ 1549866.484800, 6403965.702400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760517.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280812", "USERID": "LO-JKP", "ST_NAME": "STRÖMSGATAN", "L_REFADDR": "34", "L_NREFADDR": "24", "R_REFADDR": "29", "R_NREFADDR": "19", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 36.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549867.520100, 6403892.960000 ], [ 1549856.605700, 6403927.937600 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760517.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280812", "USERID": "LO-JKP", "ST_NAME": "STRÖMSGATAN", "L_REFADDR": "34", "L_NREFADDR": "24", "R_REFADDR": "29", "R_NREFADDR": "19", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 24.400000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549856.605700, 6403927.937600 ], [ 1549855.749950, 6403930.680000 ], [ 1549848.114000, 6403950.774400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808280812", "USERID": "LO-JKP", "ST_NAME": "STRÖMSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 22.700000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549856.605700, 6403927.937600 ], [ 1549842.391850, 6403922.888000 ], [ 1549839.991550, 6403930.109600 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760453.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280813", "USERID": "LO-JKP", "ST_NAME": "NYGATAN", "L_REFADDR": "4", "L_NREFADDR": "2", "R_REFADDR": "5", "R_NREFADDR": "1", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 44.500000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549839.739900, 6403972.810400 ], [ 1549882.122450, 6403986.464000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760453.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280814", "USERID": "LO-JKP", "ST_NAME": "NYGATAN", "L_REFADDR": "4", "L_NREFADDR": "2", "R_REFADDR": "5", "R_NREFADDR": "1", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 4.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549882.122450, 6403986.464000 ], [ 1549885.859750, 6403988.054400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760453.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808280814", "USERID": "LO-JKP", "ST_NAME": "NYGATAN", "L_REFADDR": "4", "L_NREFADDR": "2", "R_REFADDR": "5", "R_NREFADDR": "1", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 15.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549885.859750, 6403988.054400 ], [ 1549900.829950, 6403992.491200 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808280814", "USERID": "LO-JKP", "ST_NAME": "NYGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 30.000000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549885.859750, 6403988.054400 ], [ 1549892.433450, 6403972.732800 ], [ 1549900.598950, 6403962.172000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808281227", "USERID": "LO-JKP", "ST_NAME": "SÖDRA VARVSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 43.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549936.717550, 6403775.876000 ], [ 1549969.438000, 6403803.858400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808281227", "USERID": "LO-JKP", "ST_NAME": "SÖDRA VARVSGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59331", "SHAPE_LEN": 13.500000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549969.438000, 6403803.858400 ], [ 1549982.841250, 6403805.048000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760579.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808281227", "USERID": "LO-JKP", "ST_NAME": "NORRA JÄRNVÄGSGATAN", "L_REFADDR": "4", "L_NREFADDR": "2", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 37.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549897.839200, 6403822.604000 ], [ 1549934.253900, 6403832.906400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760579.000000, "RP_TYPE": 14, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808281227", "USERID": "LO-JKP", "ST_NAME": "NORRA JÄRNVÄGSGATAN", "L_REFADDR": "4", "L_NREFADDR": "2", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "7", "ZIPCODE": "59330", "SHAPE_LEN": 29.500000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549934.253900, 6403832.906400 ], [ 1549957.490050, 6403839.480000 ], [ 1549960.410100, 6403843.980000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 19, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808281227", "USERID": "LO-JKP", "ST_NAME": "SLOTTSHOLMSLEDEN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59330", "SHAPE_LEN": 45.700000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549969.438000, 6403803.858400 ], [ 1549962.209450, 6403808.998400 ], [ 1549954.459400, 6403814.508800 ], [ 1549934.253900, 6403832.906400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547462.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808290805", "USERID": "LO-JKP", "ST_NAME": "ÖSTRA KYRKOGATAN", "L_REFADDR": "44", "L_NREFADDR": "38", "R_REFADDR": "61", "R_NREFADDR": "53", "SPEED_CAT": "7", "ZIPCODE": "59333", "SHAPE_LEN": 23.700000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549546.809850, 6403827.740000 ], [ 1549537.632500, 6403849.605600 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 80547462.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808290805", "USERID": "LO-JKP", "ST_NAME": "ÖSTRA KYRKOGATAN", "L_REFADDR": "44", "L_NREFADDR": "38", "R_REFADDR": "61", "R_NREFADDR": "53", "SPEED_CAT": "7", "ZIPCODE": "59333", "SHAPE_LEN": 70.100000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549537.632500, 6403849.605600 ], [ 1549533.320150, 6403859.880000 ], [ 1549518.660050, 6403889.780000 ], [ 1549507.790100, 6403903.010400 ], [ 1549501.325600, 6403908.552800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808290805", "USERID": "LO-JKP", "ST_NAME": "ÖSTRA KYRKOGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59333", "SHAPE_LEN": 46.000000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549537.632500, 6403849.605600 ], [ 1549561.402400, 6403858.662400 ], [ 1549569.328850, 6403839.652000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760609.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808290829", "USERID": "LO-JKP", "ST_NAME": "ÖSTRA KYRKOGATAN", "L_REFADDR": "46", "L_NREFADDR": "46", "R_REFADDR": "65", "R_NREFADDR": "63", "SPEED_CAT": "7", "ZIPCODE": "59333", "SHAPE_LEN": 26.800000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549566.450100, 6403780.090400 ], [ 1549555.974950, 6403804.818400 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760609.000000, "RP_TYPE": 12, "RP_FUNC": 1, "DIRECTION": 0, "LOGKOD": "R", "CHANGED": "0808290829", "USERID": "LO-JKP", "ST_NAME": "ÖSTRA KYRKOGATAN", "L_REFADDR": "46", "L_NREFADDR": "46", "R_REFADDR": "65", "R_NREFADDR": "63", "SPEED_CAT": "7", "ZIPCODE": "59333", "SHAPE_LEN": 24.700000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549555.974950, 6403804.818400 ], [ 1549546.809850, 6403827.740000 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 0.000000, "RP_TYPE": 18, "RP_FUNC": 0, "DIRECTION": 0, "LOGKOD": "D", "CHANGED": "0808290829", "USERID": "LO-JKP", "ST_NAME": "ÖSTRA KYRKOGATAN", "L_REFADDR": "", "L_NREFADDR": "", "R_REFADDR": "", "R_NREFADDR": "", "SPEED_CAT": "", "ZIPCODE": "59333", "SHAPE_LEN": 37.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549555.974950, 6403804.818400 ], [ 1549577.560500, 6403813.319200 ], [ 1549572.603450, 6403826.820800 ] ] } } +, +{ "type": "Feature", "properties": { "LINK_ID": 30760474.000000, "RP_TYPE": 12, "RP_FUNC": 0, "DIRECTION": 1, "LOGKOD": "R", "CHANGED": "0808290830", "USERID": "LO-JKP", "ST_NAME": "ÖSTRA KYRKOGATAN", "L_REFADDR": "36", "L_NREFADDR": "32", "R_REFADDR": "51", "R_NREFADDR": "49", "SPEED_CAT": "6", "ZIPCODE": "59333", "SHAPE_LEN": 58.000000 }, "geometry": { "type": "LineString", "coordinates": [ [ 1549496.649950, 6403937.400000 ], [ 1549483.100050, 6403973.990400 ], [ 1549475.242550, 6403991.259200 ] ] } } + +] +} diff --git a/openlayers/examples/debug.html b/openlayers/examples/debug.html new file mode 100644 index 0000000..a960bea --- /dev/null +++ b/openlayers/examples/debug.html @@ -0,0 +1,73 @@ + + + + OpenLayers Debug Example + + + + + + +

Debug Example

+ +
+ +

+ Demonstrate console calls to a Firebug console. Requires Firefox. Mostly for developers. +

+ +
+

To run OpenLayers in debug mode, include the following script + tag before the tag that loads OpenLayers: + +

    <script src="../lib/Firebug/firebug.js"></script>
+ + The path to firebug.js must be relative to your + html file. With this script included calls to OpenLayers.Console + will be displayed in the Firebug console. For browsers without + the Firebug extension, the script creates a Firebug Lite console. + This console can be opened by hitting F12 or Ctrl+Shift+L + (?+Shift+L on a Mac). If you want the Firebug Lite console + to be open when the page loads, add debug="true" to the opening + html tag of your page. Open the console and click on the links below + to see console calls.

+ +

The Firebug website has a complete list of + console calls. + Note that not all are supported with Firebug Lite.

+
+ + diff --git a/openlayers/examples/doubleSetCenter.html b/openlayers/examples/doubleSetCenter.html new file mode 100644 index 0000000..5f8dda3 --- /dev/null +++ b/openlayers/examples/doubleSetCenter.html @@ -0,0 +1,32 @@ + + + OpenLayers Double Set Center Example + + + + + + +

Double Set Center Example

+ +
+ +

+ Demonstrate the behavior of two calls to set the center after instatiating the layer object. +

+ +
+ + + +
+ + + diff --git a/openlayers/examples/drag-feature.html b/openlayers/examples/drag-feature.html new file mode 100644 index 0000000..a953344 --- /dev/null +++ b/openlayers/examples/drag-feature.html @@ -0,0 +1,102 @@ + + + Drag Feature Example + + + + + + + + +

Drag Feature Example

+ +
+ +

+ Demonstrates point, line and polygon creation and editing. +

+ +
+ +
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
+
+ +
+ + diff --git a/openlayers/examples/draw-feature.html b/openlayers/examples/draw-feature.html new file mode 100644 index 0000000..2affeba --- /dev/null +++ b/openlayers/examples/draw-feature.html @@ -0,0 +1,105 @@ + + + Draw Feature Example + + + + + + + + +

OpenLayers Draw Feature Example

+ +
+ +

+ Demonstrate on-screen digitizing tools for point, line, and polygon creation. +

+ +
+ +
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
+ +
+

With the point drawing control active, click on the map to add a point. You can drag the point + before letting the mouse up if you want to adjust the position.

+

With the line drawing control active, click on the map to add the points that make up your line. + Double-click to finish drawing.

+

With the polygon drawing control active, click on the map to add the points that make up your + polygon. Double-click to finish drawing.

+

Hold down the shift key while drawing to activate freehand mode. While drawing lines or polygons + in freehand mode, hold the mouse down and a point will be added with every mouse movement.

+

+ + diff --git a/openlayers/examples/editingtoolbar-outside.html b/openlayers/examples/editingtoolbar-outside.html new file mode 100644 index 0000000..8eac9ef --- /dev/null +++ b/openlayers/examples/editingtoolbar-outside.html @@ -0,0 +1,52 @@ + + + + OpenLayers: Custom Editing Toolbar + + + + + + + + +

OpenLayers EditingToolbar Outside Viewport

+

+ Display an editing toolbar panel outside the map viewport. +

+
+
+ + diff --git a/openlayers/examples/editingtoolbar.html b/openlayers/examples/editingtoolbar.html new file mode 100644 index 0000000..1b79e1a --- /dev/null +++ b/openlayers/examples/editingtoolbar.html @@ -0,0 +1,47 @@ + + + + OpenLayers Editing Toolbar Example + + + + + + + + +

Editing Toolbar Example

+ +
+ +

+ Demonstrate polygon, polyline and point creation and editing tools. +

+ +
+
+ +
+ + diff --git a/openlayers/examples/events.html b/openlayers/examples/events.html new file mode 100644 index 0000000..eb5bc7f --- /dev/null +++ b/openlayers/examples/events.html @@ -0,0 +1,150 @@ + + + OpenLayers Event Handling + + + + + + +

Event Handling

+ +
+
+ +

+ Demonstrating various styles of event handling in OpenLayers. +

+ +
+
+ +
+ + diff --git a/openlayers/examples/example-list.html b/openlayers/examples/example-list.html new file mode 100644 index 0000000..038b957 --- /dev/null +++ b/openlayers/examples/example-list.html @@ -0,0 +1,239 @@ + + + + + OpenLayers Examples + + + + + + + + +
+
+

+
+ +
+ show all +

+
+
+
+ + + + diff --git a/openlayers/examples/example.html b/openlayers/examples/example.html new file mode 100644 index 0000000..8802d2f --- /dev/null +++ b/openlayers/examples/example.html @@ -0,0 +1,56 @@ + + + OpenLayers Example + + + + + + +

OpenLayers Example

+
+

+ Demonstrate a simple map with an overlay that includes layer switching controls. +

+
+
+ + diff --git a/openlayers/examples/filter.html b/openlayers/examples/filter.html new file mode 100644 index 0000000..661ea87 --- /dev/null +++ b/openlayers/examples/filter.html @@ -0,0 +1,99 @@ + + + + + + + + + +

Filter Encoding

+

+ Using the filter format write out filter objects. +

+ +
+ Filter Encoding 1.0 +
+ Filter Encoding 1.1 +
+

+

+ + diff --git a/openlayers/examples/fractional-zoom.html b/openlayers/examples/fractional-zoom.html new file mode 100644 index 0000000..d3efc56 --- /dev/null +++ b/openlayers/examples/fractional-zoom.html @@ -0,0 +1,67 @@ + + + + + + + + +

Fractional Zoom Example

+ +
+
+

+ Shows the use of a map with fractional (or non-discrete) zoom levels. +

+ +
+ + + (zoom: ) +

+
+

+ Setting the map.fractionalZoom property to true allows zooming to + an arbitrary level (between the min and max resolutions). This + can be demonstrated by shift-dragging a box to zoom to an arbitrary + extent. +

+
+ + + + + + diff --git a/openlayers/examples/fullScreen.html b/openlayers/examples/fullScreen.html new file mode 100644 index 0000000..02b5b4c --- /dev/null +++ b/openlayers/examples/fullScreen.html @@ -0,0 +1,66 @@ + + + Full Screen Example + + + + + + + +
+ +
+

Full Screen Example

+ +
+ +

+ Demonstrate a map that fill the entire browser window. +

+ +
+ This example uses CSS to define the dimensions of the map element in order to fill the screen. + When the user resizes the window, the map size changes correspondingly. No scroll bars! +
+
+ + diff --git a/openlayers/examples/geojson.html b/openlayers/examples/geojson.html new file mode 100644 index 0000000..f515134 --- /dev/null +++ b/openlayers/examples/geojson.html @@ -0,0 +1,62 @@ + + + + + + + + +

GeoJSON Example

+
+ + diff --git a/openlayers/examples/georss-flickr.html b/openlayers/examples/georss-flickr.html new file mode 100644 index 0000000..9b3ca58 --- /dev/null +++ b/openlayers/examples/georss-flickr.html @@ -0,0 +1,100 @@ + + + + + + + + + +

GeoRSS from Flickr in OpenLayers

+

The displayed GeoRSS feed has a <media:thumbnail/> property for each item. An extended createFeatureFromItem() function is used to add this attribute to the attributes hash of each feature read in by OpenLayers.Format.GeoRSS. The example is configured with a style to render each item with its thumbnail image. Also, to show how rules work, we defined a rule that if the title of an rss item contains "powder", it will be rendered larger than the others.

+
+ + diff --git a/openlayers/examples/georss-markers.html b/openlayers/examples/georss-markers.html new file mode 100644 index 0000000..0fa1ac1 --- /dev/null +++ b/openlayers/examples/georss-markers.html @@ -0,0 +1,39 @@ + + + OpenLayers GeoRSS Marker Example + + + + + + +

GeoRSS Marker Example

+ +
+ +

+ Demonstrate loading a GeoRSS feed using the GeoRSS parser. +

+ +
+ +
+ + diff --git a/openlayers/examples/georss.html b/openlayers/examples/georss.html new file mode 100644 index 0000000..744d3b7 --- /dev/null +++ b/openlayers/examples/georss.html @@ -0,0 +1,57 @@ + + + OpenLayers GeoRSS Example + + + + + + +

GeoRSS Example

+ +
+ +

+ Display a couple of locally cached georss feeds on an a basemap. +

+ +
+ +
+

This demo uses the OpenLayers GeoRSS parser, which supports GeoRSS Simple and W3C GeoRSS. Only points are + currently supported. The OpenLayers GeoRSS parser will automatically connect an information bubble to the map + markers, similar to Google maps. In addition, the parser can use custom PNG icons for markers. A sample GeoRSS + file (georss.xml) is included. + +

+ GeoRSS URL: + +
+ +

The above input box allows the input of a URL to a GeoRSS feed. This feed can be local to the HTML page -- + for example, entering 'georss.xml' will work by default, because there is a local file in the directory called + georss.xml -- or, with a properly set up ProxyHost variable (as is used here), it will be able to load any + HTTP URL which contains GeoRSS and display it. Anything else will simply have no effect.

+
+ + diff --git a/openlayers/examples/georss.xml b/openlayers/examples/georss.xml new file mode 100644 index 0000000..fecf77a --- /dev/null +++ b/openlayers/examples/georss.xml @@ -0,0 +1,378 @@ + + + +This is an RSS file. Copy the URL into your aggregator of choice. If you don't know what this means and want to learn more, please see: http://platial.typepad.com/news/2006/04/really_simple_t.html for more info. +http://platial.com +Crschmidt's Places At Platial + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +http://platial.com/place/90306 +Knitting Room +Address: 2 lake St, Arlington, MA
Tags: knitting, yarn, pins and needles, handspun, hand dyed, novelty yarn, fancy, simple, young, hip, friendly, needles, addy, cute hats

Map this on Platial
Grab this on Platial ]]>
+42.405696 -71.142197 +crschmidt +2006-06-08T17:35:01.942452+00:00 +
+ +http://platial.com/place/67230 +Knitting Room +Address: 2 lake St, Arlington, MA
Tags: knitting, yarn, pins and needles, handspun, hand dyed, novelty yarn, fancy, simple, young, hip, friendly, needles, addy, cute hats

Map this on Platial
Grab this on Platial ]]>
+42.405524 -71.142273 +crschmidt +2006-04-24T11:35:26.733857+00:00 +
+ +http://platial.com/place/65645 +†¢¢™£ˆøœ +Address: 151 Erie St., Cambridge, MA
Tags: platial graffiti

Map this on Platial
Grab this on Platial ]]>
+42.352455 -71.110210 +crschmidt +2006-04-20T08:56:12.696224+00:00 +
+ +http://platial.com/place/62200 +Allen Hall +Address: 1301 W Gregory Dr, Urbana, IL
Tags: dorm, uiuc, college



Map this on Platial
Grab this on Platial ]]>
+40.104172 -88.220623 +crschmidt +2006-04-14T08:01:01.872873+00:00 +
+ +http://platial.com/place/28232 +Bagby Hot Springs, OR +Tags: 20s, rosalie, romance, childhood, hike, camping, soak, relax, beautiful, hot springs, bathhouse, favorite, popular, crowded, organized, honeymoon tub, plumbing made from hollowed out trees, hot springs, mt hood, notorious car break in spot, rash, bacteria

Map this on Platial
Grab this on Platial ]]>
+44.936000 -122.173000 +crschmidt +2006-01-03T23:10:18.553063+00:00 +
+ +http://platial.com/place/43666 +Shooting Location for "The Field of Dreams" Film +Address: Dyersville, Iowa
Tags: iowa, baseball, movie locations, field of dreams, kevin costner, costner, dyersville, kinsella, james earl jones, chicago black sox, shoeless joe, joe jackson, famous farms, film, movie, cinema, shooting location

Map this on Platial
Grab this on Platial ]]>
+42.481213 -91.111679 +echinodermata +2006-03-23T11:40:17.654061+00:00 +
+ +http://platial.com/place/28394 +Moffetts (Bonneville) Hot Springs, WA +Tags: soak, hot springs, relax, nature

Map this on Platial
Grab this on Platial ]]>
+45.658000 -121.962000 +crschmidt +2006-01-03T23:16:27.329816+00:00 +
+ +http://platial.com/place/28251 +Austin Hot Springs, OR +Tags: soak, hot springs, relax, nature, popular, crowded

Map this on Platial
Grab this on Platial ]]>
+45.021000 -122.009000 +crschmidt +2006-01-03T23:11:04.489886+00:00 +
+ +http://platial.com/place/28392 +Rock Creek Hot Springs, WA +Tags: soak, hot springs, relax, nature

Map this on Platial
Grab this on Platial ]]>
+45.723000 -121.927000 +crschmidt +2006-01-03T23:16:22.636855+00:00 +
+ +http://platial.com/place/28391 +St. Martins (Wind River) Hot Springs, WA +Tags: hot springs, soak, relax, nature, wonderful

Map this on Platial
Grab this on Platial ]]>
+45.728000 -121.800000 +crschmidt +2006-01-03T23:16:20.383244+00:00 +
+ +http://platial.com/place/28231 +Breitenbush Hot Springs, OR +Tags: hot springs, resort, relax, nature, beautiful, http:www.breitenbush.com, soaking

Map this on Platial
Grab this on Platial ]]>
+44.782000 -121.975000 +crschmidt +2006-01-03T23:10:16.529195+00:00 +
+ +http://platial.com/place/28393 +Collins Hot Springs, WA +Tags: portland, nice, hot springs, soak

Map this on Platial
Grab this on Platial ]]>
+45.701000 -121.728000 +crschmidt +2006-01-03T23:16:24.648745+00:00 +
+ +http://platial.com/place/31685 +Darwin's Ltd. +Address: 148 Mount Auburn St, Cambridge, MA
Tags: coffee, beer, sandwiches, freewifi



Map this on Platial
Grab this on Platial ]]>
+42.373974 -71.125053 +crschmidt +2006-01-10T09:24:08.152985+00:00 +
+ +http://platial.com/place/28596 +Huckleberry Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.115000 -110.684000 +crschmidt +2006-01-03T23:24:32.283094+00:00 +
+ +http://platial.com/place/28595 +South Entrance Hot Springs, WY +


Map this on Platial
Grab this on Platial ]]>
+44.142000 -110.656000 +crschmidt +2006-01-03T23:24:30.279497+00:00 +
+ +http://platial.com/place/28594 +Crawfish Creek Hot Springs, WY +


Map this on Platial
Grab this on Platial ]]>
+44.157000 -110.699000 +crschmidt +2006-01-03T23:24:28.280271+00:00 +
+ +http://platial.com/place/28593 +Crawfish Creek Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.165000 -110.723000 +crschmidt +2006-01-03T23:24:20.364077+00:00 +
+ +http://platial.com/place/28592 +Snake Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.169000 -110.583000 +crschmidt +2006-01-03T23:24:12.234974+00:00 +
+ +http://platial.com/place/28591 +Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.187000 -110.726000 +crschmidt +2006-01-03T23:24:10.027857+00:00 +
+ +http://platial.com/place/28590 +Hot Springs on Upper Snake River, WY +
Map this on Platial
Grab this on Platial ]]>
+44.204000 -110.486000 +crschmidt +2006-01-03T23:24:07.79658+00:00 +
+ +http://platial.com/place/28589 +Hot Springs on lewis Lake, WY +
Map this on Platial
Grab this on Platial ]]>
+44.276000 -110.636000 +crschmidt +2006-01-03T23:24:05.683418+00:00 +
+ +http://platial.com/place/28588 +Rustic Geyser, WY +
Map this on Platial
Grab this on Platial ]]>
+44.282000 -110.506000 +crschmidt +2006-01-03T23:24:03.66329+00:00 +
+ +http://platial.com/place/28587 +Bechler River Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.285000 -110.900000 +crschmidt +2006-01-03T23:24:01.611442+00:00 +
+ +http://platial.com/place/28586 +Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.290000 -110.504000 +crschmidt +2006-01-03T23:23:59.658699+00:00 +
+ +http://platial.com/place/28585 +Heart Lake Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.299000 -110.517000 +crschmidt +2006-01-03T23:23:57.181801+00:00 +
+ +http://platial.com/place/28584 +Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.307000 -110.526000 +crschmidt +2006-01-03T23:23:55.240485+00:00 +
+ +http://platial.com/place/28583 +Hot Springs on lewis Lake, WY +
Map this on Platial
Grab this on Platial ]]>
+44.309000 -110.654000 +crschmidt +2006-01-03T23:23:53.22295+00:00 +
+ +http://platial.com/place/28582 +Shoshone Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.354000 -110.800000 +crschmidt +2006-01-03T23:23:51.179049+00:00 +
+ +http://platial.com/place/28581 +Hot Springs on Continental Divide, WY +
Map this on Platial
Grab this on Platial ]]>
+44.401000 -110.936000 +crschmidt +2006-01-03T23:23:49.077176+00:00 +
+ +http://platial.com/place/28580 +Hot Springs on Upper Firehole River, WY +
Map this on Platial
Grab this on Platial ]]>
+44.404000 -110.824000 +crschmidt +2006-01-03T23:23:47.054664+00:00 +
+ +http://platial.com/place/28579 +Summit Lake Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.410000 -110.953000 +crschmidt +2006-01-03T23:23:45.039394+00:00 +
+ +http://platial.com/place/28578 +Lone Star Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.414000 -110.817000 +crschmidt +2006-01-03T23:23:42.938808+00:00 +
+ +http://platial.com/place/28577 +West. Thumb Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.417000 -110.570000 +crschmidt +2006-01-03T23:23:40.90238+00:00 +
+ +http://platial.com/place/28576 +Lone Star Geyser, WY +
Map this on Platial
Grab this on Platial ]]>
+44.418000 -110.805000 +crschmidt +2006-01-03T23:23:38.844625+00:00 +
+ +http://platial.com/place/28575 +Smoke Jumper Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.421000 -110.952000 +crschmidt +2006-01-03T23:23:36.818513+00:00 +
+ +http://platial.com/place/28574 +West. Thumb Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.422000 -110.574000 +crschmidt +2006-01-03T23:23:34.767729+00:00 +
+ +http://platial.com/place/28573 +Potts Hot Spring Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.433000 -110.581000 +crschmidt +2006-01-03T23:23:32.749915+00:00 +
+ +http://platial.com/place/28572 +Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.433000 -110.813000 +crschmidt +2006-01-03T23:23:30.829745+00:00 +
+ +http://platial.com/place/28571 +Hot Springs on Continental Divide, WY +
Map this on Platial
Grab this on Platial ]]>
+44.438000 -110.977000 +crschmidt +2006-01-03T23:23:28.730401+00:00 +
+ +http://platial.com/place/28570 +SouthEastern Group, WY +
Map this on Platial
Grab this on Platial ]]>
+44.459000 -110.817000 +crschmidt +2006-01-03T23:23:26.706763+00:00 +
+
diff --git a/openlayers/examples/getfeature-wfs.html b/openlayers/examples/getfeature-wfs.html new file mode 100644 index 0000000..31ef5cd --- /dev/null +++ b/openlayers/examples/getfeature-wfs.html @@ -0,0 +1,80 @@ + + + + + WFS: GetFeature Example (GeoServer) + + + + +

WFS GetFeature Example (GeoServer)

+ +
+
+ +

+ Shows how to use the GetFeature control to select features from a + WMS layer. Click or drag a box to select features, use the Shift key to + add features to the selection, use the Ctrl key to toggle a feature's + selected status. Note that this control also has a hover option, which is + enabled in this example. This gives you a visual feedback by loading the + feature underneath the mouse pointer from the WFS, but causes a lot of + GetFeature requests to be issued. +

+ +
+ +
+ + + + + + diff --git a/openlayers/examples/getfeatureinfo-control.html b/openlayers/examples/getfeatureinfo-control.html new file mode 100644 index 0000000..85b98f4 --- /dev/null +++ b/openlayers/examples/getfeatureinfo-control.html @@ -0,0 +1,217 @@ + + + OpenLayers WMS Feature Info Example (GeoServer) + + + + + + + +

Feature Info Example

+ +
+ +

+ Demonstrates the WMSGetFeatureInfo control for fetching information about a position from WMS (via GetFeatureInfo request). +

+ +
+

Tasmania

+

Click on the map to get feature info.

+
+
+
+
+ +
+
+
    +
  • + + +
  • +
  • + + +
  • +
+
    +
  • + + +
  • +
  • + + +
  • +
+
    +
  • + + +
  • +
  • + + +
  • +
+ + diff --git a/openlayers/examples/getfeatureinfo.html b/openlayers/examples/getfeatureinfo.html new file mode 100644 index 0000000..bfe56bf --- /dev/null +++ b/openlayers/examples/getfeatureinfo.html @@ -0,0 +1,62 @@ + + + OpenLayers Feature Info Example + + + + + + +

Feature Info Example

+ +
+ +

+ Demonstrates sending a GetFeatureInfo query to an OWS. Returns information about a map feature in the side DIV. +

+ +
+ +
+

CIA Factbook

+

Click a country to see statistics about the country below.

+
+
+
+
+ + + +
+
+ + diff --git a/openlayers/examples/gml-layer.html b/openlayers/examples/gml-layer.html new file mode 100644 index 0000000..f0157be --- /dev/null +++ b/openlayers/examples/gml-layer.html @@ -0,0 +1,36 @@ + + + OpenLayers GML Layer Example + + + + + + +

GML Layer Example

+ +
+ +

+ Loads locally stored GML vector data on a basemap. Includes GML example file. +

+ +
+ +
+ + diff --git a/openlayers/examples/gml/line.xml b/openlayers/examples/gml/line.xml new file mode 100644 index 0000000..4f42499 --- /dev/null +++ b/openlayers/examples/gml/line.xml @@ -0,0 +1,42 @@ + + + + + -3.924027,46.037889 2.193186,47.897181 + + + + + + + -0.631235,46.037889 2.193186,46.704963 + + + + + -0.631235,46.307557 -0.262215,46.577225 0.106805,46.477874 0.220349,46.293364 0.475824,46.406909 0.887424,46.350136 1.029354,46.563032 1.213864,46.648191 1.526112,46.421102 1.795780,46.066275 2.108028,46.037889 2.178993,46.250785 2.193186,46.492067 2.193186,46.492067 2.051255,46.704963 2.051255,46.704963 + + + 1 + + 0 + + + + + + + -3.924027,46.279171 -1.127992,47.897181 + + + + + -1.127992,46.279171 -1.369275,46.364329 -1.624750,46.406909 -1.866032,46.492067 -1.993770,46.704963 -2.178280,46.846894 -1.979577,47.059790 -2.164087,47.144948 -2.135700,47.215914 -2.093121,47.357844 -2.277631,47.258493 -2.391176,47.301072 -2.490527,47.315265 -2.476334,47.443003 -2.575686,47.599127 -2.703423,47.542354 -2.873740,47.471389 -3.285339,47.670092 -3.597587,47.769443 -3.824676,47.840409 -3.924027,47.897181 + + + 2 + + 0 + + + \ No newline at end of file diff --git a/openlayers/examples/gml/multipoint.xml b/openlayers/examples/gml/multipoint.xml new file mode 100644 index 0000000..803fd47 --- /dev/null +++ b/openlayers/examples/gml/multipoint.xml @@ -0,0 +1,70 @@ + + + + + 0.490018,45.001795 3.016384,45.839186 + + + + + + + 0.930003,45.001795 3.016384,45.541131 + + + + + + + 2.079641,45.001795 + + + + + 2.718330,45.541131 + + + + + 3.016384,45.143725 + + + + + 0.930003,45.001795 + + + + + 1 + 4 points + 1 + + + + + + + 0.490018,45.654676 1.157092,45.839186 + + + + + + + 0.490018,45.654676 + + + + + 1.157092,45.839186 + + + + + 2 + 2 points + 2 + + + \ No newline at end of file diff --git a/openlayers/examples/gml/multipolygon.xml b/openlayers/examples/gml/multipolygon.xml new file mode 100644 index 0000000..bcdb39e --- /dev/null +++ b/openlayers/examples/gml/multipolygon.xml @@ -0,0 +1,106 @@ + + + + + -1.738295,46.307557 3.754424,47.244300 + + + + + + + -1.738295,46.605612 1.767394,47.244300 + + + + + + + + + 1.313216,46.690770 1.000968,46.861087 0.887424,47.059790 1.142899,47.244300 1.355795,47.244300 1.554498,47.017211 1.710622,47.059790 1.767394,46.747542 1.313216,46.690770 1.313216,46.690770 + + + + + + + + + 0.731300,46.605612 -0.191250,46.704963 -0.191250,46.846894 0.177770,46.988824 0.447438,46.960438 0.589369,46.804315 0.688721,46.832701 0.731300,46.605612 0.731300,46.605612 + + + + + + + + + -1.610557,46.733349 -1.184765,46.704963 -1.198958,46.704963 -0.943483,46.619805 -0.915096,46.818508 -0.659621,46.775928 -0.688007,47.017211 -0.943483,47.003018 -1.127992,47.088176 -1.397661,47.102369 -1.624750,47.073983 -1.738295,46.917859 -1.610557,46.733349 + + + + + + + 1 + My first Multipolygon + 0 + + + + + + + 2.789295,46.392716 3.754424,46.903666 + + + + + + + 2.959612,46.392716 2.789295,46.775928 3.172508,46.903666 3.498949,46.903666 3.498949,46.662384 3.754424,46.563032 2.959612,46.392716 + + + + + 2 + My second Multipolygon + 0 + + + + + + + 2.207379,46.307557 2.803488,47.045597 + + + + + + + + + 2.292538,46.804315 2.207379,47.017211 2.391889,47.045597 2.562206,46.832701 2.292538,46.804315 + + + + + + + + + 2.789295,46.307557 2.789295,46.307557 2.803488,46.506260 2.618978,46.676577 2.349310,46.633998 2.448661,46.392716 2.789295,46.307557 + + + + + + + 3 + My third Multipolygon + 0 + + + \ No newline at end of file diff --git a/openlayers/examples/gml/owls.xml b/openlayers/examples/gml/owls.xml new file mode 100644 index 0000000..4a001ec --- /dev/null +++ b/openlayers/examples/gml/owls.xml @@ -0,0 +1,156 @@ + + + + + -89.817223,45.005555 -74.755001,51.701388 + + + + + + -79.771668,45.891110 -79.771668,45.891110 + + + + + -79.771668,45.891110 + + + + + + + + + -83.755834,46.365277 -83.755834,46.365277 + + + owl + + + -83.755834,46.365277 + + + + + + + + + -83.808612,46.175277 -83.808612,46.175277 + + + + + -83.808612,46.175277 + + + + + + + + + -84.111112,46.309166 -84.111112,46.309166 + + + + + -84.111112,46.309166 + + + + + + + + + -83.678612,46.821110 -83.678612,46.821110 + + + + + -83.678612,46.821110 + + + + + + + + + -83.664445,46.518888 -83.664445,46.518888 + + + + + -83.664445,46.518888 + + + + + + + + + -80.613334,46.730277 -80.613334,46.730277 + + + + + -80.613334,46.730277 + + + + + + + + + -79.676946,45.428054 -79.676946,45.428054 + + + + + -79.676946,45.428054 + + + + + + + + + -83.853056,46.236944 -83.853056,46.236944 + + + + + -83.853056,46.236944 + + + + + + + + + -82.289167,45.896388 -82.289167,45.896388 + + + + + -82.289167,45.896388 + + + + + + diff --git a/openlayers/examples/gml/point.xml b/openlayers/examples/gml/point.xml new file mode 100644 index 0000000..10a4820 --- /dev/null +++ b/openlayers/examples/gml/point.xml @@ -0,0 +1,42 @@ + + + + + -0.608315,44.857522 -0.021418,45.477577 + + + + + + + -0.608315,44.857522 -0.608315,44.857522 + + + + + -0.608315,44.857522 + + + 1 + Bordeaux + 124 + + + + + + + -0.021418,45.477577 -0.021418,45.477577 + + + + + -0.021418,45.477577 + + + 2 + Barbezieux + 0 + + + \ No newline at end of file diff --git a/openlayers/examples/gml/polygon.xml b/openlayers/examples/gml/polygon.xml new file mode 100644 index 0000000..e4f6903 --- /dev/null +++ b/openlayers/examples/gml/polygon.xml @@ -0,0 +1,89 @@ + + + + + -0.768746,47.003018 3.002191,47.925567 + + + + + + + -0.768746,47.003018 0.532597,47.925567 + + + + + + + + + -0.318987,47.003018 -0.768746,47.358268 -0.574463,47.684285 -0.347374,47.854602 -0.006740,47.925567 0.135191,47.726864 0.149384,47.599127 0.419052,47.670092 0.532597,47.428810 0.305508,47.443003 0.475824,47.144948 0.064225,47.201721 -0.318987,47.003018 + + + + + -0.035126,47.485582 -0.035126,47.485582 -0.049319,47.641706 -0.233829,47.655899 -0.375760,47.457196 -0.276408,47.286879 -0.035126,47.485582 + + + + + + + 1 + My Polygon with hole + 0 + + + + + + + 1.511919,47.088176 3.002191,47.882988 + + + + + + + 1.625463,47.357844 1.511919,47.741057 1.880938,47.882988 2.420275,47.797830 2.789295,47.485582 3.002191,47.457196 2.874453,47.088176 2.178993,47.343651 1.625463,47.357844 + + + + + 2 + My simple Polygon + 0 + + + + + + + 0.000000,45.000000 2.000000,47.000000 + + + + + + + + + 0.000000,45.000000 2.000000,45.000000 2.000000,47.000000 0.000000,47.000000 0.000000,45.000000 + + + + + 0.500000,45.500000 1.500000,45.500000 1.500000,46.500000 0.500000,46.500000 0.500000,45.500000 + + + + + + + 3 + my polygon with hole + 3 + + + \ No newline at end of file diff --git a/openlayers/examples/google-reproject.html b/openlayers/examples/google-reproject.html new file mode 100644 index 0000000..4272752 --- /dev/null +++ b/openlayers/examples/google-reproject.html @@ -0,0 +1,57 @@ + + + OpenLayers Google with Overlay Example + + + + + + + + +

Google with Overlay Example

+ +
+ +

+ Demonstrate a Google basemap used with boundary overlay layer. +

+ +
+ +
+ An overlay in a Geographic projection can be stretched to somewhat + line up with Google tiles (in a Mercator projection). Results get + worse farther from the equator. Use the "reproject" option on a + layer to get this behavior. Use the sphericalMercator option on + a Google layer to get proper overlays (with other layers in + Spherical Mercator). +
+ + diff --git a/openlayers/examples/google.html b/openlayers/examples/google.html new file mode 100644 index 0000000..946e151 --- /dev/null +++ b/openlayers/examples/google.html @@ -0,0 +1,63 @@ + + + OpenLayers Google Layer Example + + + + + + + + + +

Google Layer Example

+ +
+ +

+ Demonstrate use of the various types of Google layers. +

+ +
+ +
+

+ For best performance, you must be using a version of the Google Maps + API which is v2.93 or higher. In order to use this version of the API, + it is best to simply set your application to use the string "v=2" in + the request, rather than tying your application to an explicit version.

+

+ In order to position the Google attribution div in the default ocation, + you must include the extra theme/default/google.css stylesheet.

+
+ + diff --git a/openlayers/examples/graphic-name.html b/openlayers/examples/graphic-name.html new file mode 100644 index 0000000..d45a0b1 --- /dev/null +++ b/openlayers/examples/graphic-name.html @@ -0,0 +1,88 @@ + + + OpenLayers Graphic Names + + + + + + +

Named Graphics Example

+ +
+ +

+ Shows how to use well-known graphic names. +

+ +
+ +
+ OpenLayers supports well-known names for a few graphics. You can use + the names "star", "cross", "x", "square", "triangle", and "circle" as + the value for the graphicName property of a symbolizer. +
+ + \ No newline at end of file diff --git a/openlayers/examples/gutter.html b/openlayers/examples/gutter.html new file mode 100644 index 0000000..d769388 --- /dev/null +++ b/openlayers/examples/gutter.html @@ -0,0 +1,54 @@ + + + OpenLayers Gutter Example + + + + + + + +

Gutter Example

+ +
+ +

+ Demonstrates map tiling artifacts, and OpenLayer's facility for correcting this distortion. +

+ +
+ +
+

+ When you render tiles with certain types of symbols, there are artifacts + at tile edges that make symbology not look continuous. In the center of + the above map (when it first loads), the large orange road is split + vertically by a tile. Open the layer switcher and change to the layer + with a 15 pixel gutter to see how the symbology looks nicer. +

+
+ + diff --git a/openlayers/examples/highlight-feature.html b/openlayers/examples/highlight-feature.html new file mode 100644 index 0000000..cf7869c --- /dev/null +++ b/openlayers/examples/highlight-feature.html @@ -0,0 +1,80 @@ + + + SelectFeature Control for Select and Highlight + + + + + + + + +

OpenLayers Select and Highlight Feature Example

+

+ Select features on click, highlight features on hover. +

+
+

Select features by clicking on them. Just highlight features by hovering over + them.

+ + diff --git a/openlayers/examples/hover-handler.html b/openlayers/examples/hover-handler.html new file mode 100644 index 0000000..6bfb8a5 --- /dev/null +++ b/openlayers/examples/hover-handler.html @@ -0,0 +1,211 @@ + + + OpenLayers Hover Handler Example + + + + + + + + +

Hover Handler Example

+
+ +
+
+ +

+ This example shows the use of the hover handler. +

+ +
+

+ The hover handler is to be used to emulate mouseovers on + objects on the map that aren't DOM elements. For example + one can use the hover hander to send WMS/GetFeatureInfo + requests as the user moves the mouse over the map. +

+

+ The "delay" option specifies the number of milliseconds + before the event is considered a hover. Default is 500 + milliseconds. +

+

+ The "pixelTolerance" option specifies the maximum number + of pixels between mousemoves for an event to be + considered a hover. Default is null, which means no + pixel tolerance. +

+

+ The "stopMove" option specifies whether other mousemove + listeners registered before the hover handler listener must + be notified on mousemoves or not. Default is false (meaning + that the other mousemove listeners will be notified on + mousemove). +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Controls with hover handlers (toggle on/off to clear output)
long delay (2 sec)
short delay (100 msec)
tolerant (6 pixels)
untolerant (1 pixel)
stop propagation
+
+ + diff --git a/openlayers/examples/image-layer.html b/openlayers/examples/image-layer.html new file mode 100644 index 0000000..fe0d542 --- /dev/null +++ b/openlayers/examples/image-layer.html @@ -0,0 +1,69 @@ + + + OpenLayers Image Layer Example + + + + + + + + +

Image Layer Example

+ +
+ +

+ Demonstrate a single non-tiled image as a selectable base layer. +

+ +
+ +
+

+ The "City Lights" layer above is created from a single web accessible + image. If you construct it without any resolution related options, + the layer will be given a single resolution based on the extent/size. + Otherwise, it behaves much like a regular layer. This is primarily + intended to be used in an overview map - where another layer type + might not make a good overview. +

+
+ + diff --git a/openlayers/examples/intersects.html b/openlayers/examples/intersects.html new file mode 100644 index 0000000..2c70648 --- /dev/null +++ b/openlayers/examples/intersects.html @@ -0,0 +1,183 @@ + + + Geometry Intersections + + + + + + + + +
+

OpenLayers Geometry Intersection Example

+

+ Use of geometry.intersects method for testing geometry intersections. +

+
+
+ + + +
+
+
+ Features +
+ + Intersections +
+ +
+ + diff --git a/openlayers/examples/kamap.html b/openlayers/examples/kamap.html new file mode 100644 index 0000000..d823922 --- /dev/null +++ b/openlayers/examples/kamap.html @@ -0,0 +1,39 @@ + + + OpenLayers KaMap Example + + + + + + +

KaMap Example

+ +
+ +

+ Demonstrate a tiled kamap layer as the base map, which can be pre-cached for higher performance. +

+ +
+ +
+ + diff --git a/openlayers/examples/kamap.txt b/openlayers/examples/kamap.txt new file mode 100644 index 0000000..50fa4e0 --- /dev/null +++ b/openlayers/examples/kamap.txt @@ -0,0 +1,508 @@ +value pair. + * + * The key is the name to be used by the tile caching system to store cached + * tiles within the base cache directory. This key should be a single word + * that uniquely identifies the map. + * + * The value associated with each key is an array of three values. The first + * value is a human-readable name to be presented to the user (should the + * application choose to do so) and the second value is the path to the map + * file. It is assumed that the map file is fully configured for use with + * MapServer/MapScript as no error checking or setting of values is done. The + * third value is an array of scale values for zooming. + */ + +$aszMapFiles = array( + "world" => array( "World", "/path/to/your/mapfile", + array( 10000 ), # in openlayers, the scale array doesn't matter. + "PNG24") + +/* Add more elements to this array to offer multiple mapfiles */ + +); + +/****************************************************************************** + * figure out which map file to use and set up the necessary variables for + * the rest of the code to use. This does need to be done on every page load + * unfortunately. + * + * szMap should be set to the default map file to use but can change if + * this script is called with map=. + */ +$szMap = 'world'; + +/****************************************************************************** + * kaMap! caching + * + * this is the directory within which kaMap! will create its tile cache. The + * directory does NOT have to be web-accessible, but it must be writable by the + * web-server-user and allow creation of both directories AND files. + * + * the tile caching system will create a separate subdirectory within the base + * cache directory for each map file. Within the cache directory for each map + * file, directories will be created for each group of layers. Within the group + * directories, directories will be created at each of the configured scales + * for the application (see mapfile configuration above.) + */ +$szBaseCacheDir = "/var/cache/kamap/"; + +/***** END OF CONFIGURABLE STUFF - unless you know what you are doing *****/ +/***** *****/ +/***** *****/ +/***** *****/ +/***** END OF CONFIGURABLE STUFF - unless you know what you are doing *****/ + +if (isset($_REQUEST['map']) && isset($aszMapFiles[$_REQUEST['map']])) +{ + $szMap = $_REQUEST['map']; +} + +$szMapCacheDir = $szBaseCacheDir.$szMap."/"; +$szMapName = $aszMapFiles[$szMap][0]; +$szMapFile = $aszMapFiles[$szMap][1]; +$anScales = $aszMapFiles[$szMap][2]; +setOutputFormat($aszMapFiles[$szMap][3]); +/****************************************************************************** + * output format of the map and resulting tiles + * + * The output format used with MapServer can greatly affect appearance and + * performance. It is recommended to use an 8 bit format such as PNG + * + * NOTE: the tile caching code in tile.php is not configurable here. It + * currently assumes that it is outputting 8bit PNG files. If you change to + * PNG24 here then you will need to update tile.php to use the gd function + * imagecreatetruecolor. If you change the output format to jpeg then + * you would need to change imagepng() to imagejpeg(). A nice enhancement + * would be to make that fully configurable from here. + */ +function setOutputFormat($szFormat) +{ + switch($szFormat) { + case "PNG24": + $GLOBALS['szMapImageFormat'] = 'PNG24'; //mapscript format name + $GLOBALS['szMapImageCreateFunction'] = "imagecreatefrompng"; // appropriate GD function + $GLOBALS['szImageExtension'] = '.png'; //file extension + $GLOBALS['szImageCreateFunction'] = "imagecreatetruecolor"; //or imagecreatetruecolor if PNG24 ... + $GLOBALS['szImageOutputFunction'] = "imagepng"; //or imagegif, imagejpeg ... + $GLOBALS['szImageHeader'] = 'image/png'; //the content-type of the image + break; + case "GIF": + $GLOBALS['szMapImageFormat'] = 'GIF'; //mapscript format name + $GLOBALS['szMapImageCreateFunction'] = "imagecreatefromgif"; // appropriate GD function + $GLOBALS['szImageExtension'] = '.gif'; //file extension + $GLOBALS['szImageCreateFunction'] = "imagecreate"; //or imagecreatetruecolor if PNG24 ... + $GLOBALS['szImageOutputFunction'] = "imagegif"; //or imagegif, imagejpeg ... + $GLOBALS['szImageHeader'] = 'image/gif'; //the content-type of the image + break; + case "JPEG": + $GLOBALS['szMapImageFormat'] = 'JPEG'; //mapscript format name + $GLOBALS['szMapImageCreateFunction'] = "imagecreatefromjpeg"; // appropriate GD function + $GLOBALS['szImageExtension'] = '.jpg'; //file extension + $GLOBALS['szImageCreateFunction'] = "imagecreatetruecolor"; //or imagecreatetruecolor if PNG24 ... + $GLOBALS['szImageOutputFunction'] = "imagejpeg"; //or imagegif, imagejpeg ... + $GLOBALS['szImageHeader'] = 'image/jpeg'; //the content-type of the image + break; + case "PNG": + $GLOBALS['szMapImageFormat'] = 'PNG'; //mapscript format name + $GLOBALS['szMapImageCreateFunction'] = "imagecreatefrompng"; // appropriate GD function + $GLOBALS['szImageExtension'] = '.png'; //file extension + $GLOBALS['szImageCreateFunction'] = "imagecreate"; //or imagecreatetruecolor if PNG24 ... + $GLOBALS['szImageOutputFunction'] = "imagepng"; //or imagegif, imagejpeg ... + $GLOBALS['szImageHeader'] = 'image/png'; //the content-type of the image + break; + case "DITHERED": + case "PNG8": + $GLOBALS['szMapImageFormat'] = 'dithered'; + $GLOBALS['szMapImageCreateFunction'] = "imagecreatefrompng"; + $GLOBALS['szImageExtension'] = '.png'; + $GLOBALS['szImageCreateFunction'] = "imagecreate"; + $GLOBALS['szImageOutputFunction'] = "imagepng"; + $GLOBALS['szImageHeader'] = 'image/png'; + break; + } +} + +/** + * create all directories in a directory tree - found on the php web site + * under the mkdir function ... + */ +function makeDirs($strPath, $mode = 0775) +{ + return is_dir($strPath) or ( makeDirs(dirname($strPath), $mode) and mkdir($strPath, $mode) ); +} + +/** + * This function replaces all special characters in the given string. + * + * @param szString string - The string to convert. + * + * @return string converted + */ +function normalizeString($szString) +{ + // Normalize string by replacing all special characters + // e.g. "http://my.host.com/cgi-bin/mywms?" + // becomes "http___my_host_com_cgi_bin_mywms_" + return preg_replace("/(\W)/", "_", $szString); +} + +/* bug 1253 - root permissions required to delete cached files */ +$orig_umask = umask(0); + +/* create the main cache directory if necessary */ +if (!@is_dir($szMapCacheDir)) + makeDirs($szMapCacheDir); + +/* get the various request parameters + * also need to make sure inputs are clean, especially those used to + * build paths and filenames + */ + /* + * the tile renderer accepts several parameters and returns a tile image from + * the cache, creating the tile only if necessary. + * + * all requests include the pixel location of the request at a certain scale + * and this script figures out the geographic location of the tile from the + * scale assuming that 0,0 in pixels is 0,0 in geographic units + * + * Request parameters are: + * + * map: the name of the map to use. This is handled by config.php. + * + * t: top pixel position + * l: left pixel position + * s: scale + * g: (optional) comma-delimited list of group names to draw + * layers: (optional) comma-delimited list of layers to draw + * force: optional. If set, force redraw of the meta tile. This was added to + * help with invalid images sometimes being generated. + * tileid: (optional) can be used instead of t+l to specify the tile coord., + * useful in regenerating the cache + */ + +$top = isset( $_REQUEST['t'] ) ? intval($_REQUEST['t']) : 0; +$left = isset( $_REQUEST['l'] ) ? intval($_REQUEST['l']) : 0; +$scale = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : $anScales[0]; +$bForce = isset($_REQUEST['force'])? true : false; +$groups = isset( $_REQUEST['g'] ) ? $_REQUEST['g'] : ""; +$layers = isset( $_REQUEST['layers'] ) ? $_REQUEST['layers'] : ""; + +// dynamic imageformat ---------------------------------------------- +//use the function in config.php to set the output format +if (isset($_REQUEST['i'])) + setOutputFormat( $_REQUEST['i'] ); +//---------------------------------------------------------------- + +/* tileid=t#####l#### can be used instead of t+l parameters. Useful in + * regenerating the cache for instance. + */ +if (isset( $_REQUEST['tileid']) && + preg_match("/t(-?\d+)l(-?\d+)/", $_REQUEST['tileid'], $aMatch) ) +{ + $top = intval($aMatch[1]); + $left = intval($aMatch[2]); +} + +/* Calculate the metatile's top-left corner coordinates. + * Include the $metaBuffer around the metatile to account for various + * rendering issues happening around the edge of a map + */ +$metaLeft = floor( ($left)/($tileWidth*$metaWidth) ) * $tileWidth * $metaWidth; +$metaTop = floor( ($top)/($tileHeight*$metaHeight) ) * $tileHeight *$metaHeight; +$szMetaTileId = "t".$metaTop."l".$metaLeft; +$metaLeft -= $metaBuffer; +$metaTop -= $metaBuffer; + +/* caching is done by scale value, then groups and layers and finally metatile + * and tile id. Create a new directory if necessary + */ +$szGroupDir = $groups != "" ? normalizeString($groups) : "def"; +$szLayerDir = $layers != "" ? normalizeString($layers) : "def"; + +$szCacheDir = $szMapCacheDir."/".$scale."/".$szGroupDir."/".$szLayerDir."/".$szMetaTileId; +if (!@is_dir($szCacheDir)) + makeDirs($szCacheDir); + +/* resolve cache hit - clear the os stat cache if necessary */ +$szTileId = "t".$top."l".$left; +$szCacheFile = $szCacheDir."/".$szTileId.$szImageExtension; +clearstatcache(); + +$szMetaDir = $szCacheDir."/meta"; +if (!@is_Dir($szMetaDir)) + makeDirs($szMetaDir); + +/* simple locking in case there are several requests for the same meta + tile at the same time - only draw it once to help with performance */ +$szLockFile = $szMetaDir."/lock_".$metaTop."_".$metaLeft; +$fpLockFile = fopen($szLockFile, "a+"); +clearstatcache(); +if (!file_exists($szCacheFile) || $bForce) +{ + flock($fpLockFile, LOCK_EX); + fwrite($fpLockFile, "."); + + //check once more to see if the cache file was created while waiting for + //the lock + clearstatcache(); + if (!file_exists($szCacheFile) || $bForce) + { + if (!extension_loaded('MapScript')) + { + dl( $szPHPMapScriptModule ); + } + if (!extension_loaded('gd')) + { + dl( $szPHPGDModule); + } + + if (!@is_Dir($szMetaDir)) + makeDirs($szMetaDir); + + $oMap = ms_newMapObj($szMapFile); + + /* Metatile width/height include 2x the metaBuffer value */ + $oMap->set('width', $tileWidth * $metaWidth + 2*$metaBuffer); + $oMap->set('height', $tileHeight * $metaHeight + 2*$metaBuffer); + + /* Tell MapServer to not render labels inside the metaBuffer area + * (new in 4.6) + * TODO: Until MapServer bugs 1353/1355 are resolved, we need to + * pass a negative value for "labelcache_map_edge_buffer" + */ + $oMap->setMetadata("labelcache_map_edge_buffer", -$metaBuffer); + + $inchesPerUnit = array(1, 12, 63360.0, 39.3701, 39370.1, 4374754); + $geoWidth = $scale/($oMap->resolution*$inchesPerUnit[$oMap->units]); + $geoHeight = $scale/($oMap->resolution*$inchesPerUnit[$oMap->units]); + + /* draw the metatile */ + $minx = $metaLeft * $geoWidth; + $maxx = $minx + $geoWidth * $oMap->width; + $maxy = -1 * $metaTop * $geoHeight; + $miny = $maxy - $geoHeight * $oMap->height; + + $nLayers = $oMap->numlayers; + $oMap->setExtent($minx,$miny,$maxx,$maxy); + $oMap->selectOutputFormat( $szMapImageFormat ); + $aszLayers = array(); + if ($groups || $layers) + { + /* Draw only specified layers instead of default from mapfile*/ + if ($layers) + { + $aszLayers = explode(",", $layers); + } + + if ($groups) + { + $aszGroups = explode(",", $groups); + } + + for($i=0;$i<$nLayers;$i++) + { + $oLayer = $oMap->getLayer($i); + if (($aszGroups && in_array($oLayer->group,$aszGroups)) || + ($aszLayers && in_array($oLayer->name,$aszLayers)) || + ($aszGroups && $oLayer->group == '' && + in_array( "__base__", $aszGroups))) + { + $oLayer->set("status", MS_ON ); + } + else + { + $oLayer->set("status", MS_OFF ); + } + } + //need transparency if groups or layers are used + $oMap->outputformat->set("transparent", MS_ON ); + } + else + { + $oMap->outputformat->set("transparent", MS_OFF ); + } + + + $szMetaImg = $szMetaDir."/t".$metaTop."l".$metaLeft.$szImageExtension; + $oImg = $oMap->draw(); + $oImg->saveImage($szMetaImg); + $oImg->free(); + eval("\$oGDImg = ".$szMapImageCreateFunction."('".$szMetaImg."');"); + if ($bDebug) + { + $blue = imagecolorallocate($oGDImg, 0, 0, 255); + imagerectangle($oGDImg, 0, 0, $tileWidth * $metaWidth - 1, $tileHeight * $metaHeight - 1, $blue ); + } + for($i=0;$i<$metaWidth;$i++) + { + for ($j=0;$j<$metaHeight;$j++) + { + eval("\$oTile = ".$szImageCreateFunction."( ".$tileWidth.",".$tileHeight." );"); + // Allocate BG color for the tile (in case the metatile has transparent BG) + $nTransparent = imagecolorallocate($oTile, $oMap->imagecolor->red, $oMap->imagecolor->green, $oMap->imagecolor->blue); + //if ($oMap->outputformat->transparent == MS_ON) + //{ + imagecolortransparent( $oTile,$nTransparent); + //} + $tileTop = $j*$tileHeight + $metaBuffer; + $tileLeft = $i*$tileWidth + $metaBuffer; + imagecopy( $oTile, $oGDImg, 0, 0, $tileLeft, $tileTop, $tileWidth, $tileHeight ); + /* debugging stuff */ + if ($bDebug) + { + $black = imagecolorallocate($oTile, 1, 1, 1); + $green = imagecolorallocate($oTile, 0, 128, 0 ); + $red = imagecolorallocate($oTile, 255, 0, 0); + imagerectangle( $oTile, 1, 1, $tileWidth-2, $tileHeight-2, $green ); + imageline( $oTile, 0, $tileHeight/2, $tileWidth-1, $tileHeight/2, $red); + imageline( $oTile, $tileWidth/2, 0, $tileWidth/2, $tileHeight-1, $red); + imagestring ( $oTile, 3, 10, 10, ($metaLeft+$tileLeft)." x ".($metaTop+$tileTop), $black ); + imagestring ( $oTile, 3, 10, 30, ($minx+$i*$geoWidth)." x ".($maxy - $j*$geoHeight), $black ); + } + $szTileImg = $szCacheDir."/t".($metaTop+$tileTop)."l".($metaLeft+$tileLeft).$szImageExtension; + eval("$szImageOutputFunction( \$oTile, '".$szTileImg."' );"); + imagedestroy($oTile); + $oTile = null; + } + } + if ($oGDImg != null) + { + imagedestroy($oGDImg); + $oGDImg = null; + } + if (!$bDebug) + { + unlink( $szMetaImg ); + } + } + //release the exclusive lock + flock($fpLockFile, LOCK_UN ); +} + +//acquire shared lock for reading to prevent a problem that could occur +//if a tile exists but is only partially generated. +flock($fpLockFile, LOCK_SH); + +$h = fopen($szCacheFile, "r"); +header("Content-Type: ".$szImageHeader); +header("Content-Length: " . filesize($szCacheFile)); +header("Expires: " . date( "D, d M Y H:i:s GMT", time() + 31536000 )); +header("Cache-Control: max-age=31536000, must-revalidate" ); +fpassthru($h); +fclose($h); + +//release lock +fclose($fpLockFile); + +/* bug 1253 - root permissions required to delete cached files */ +umask($orig_umask); + +exit; +?> diff --git a/openlayers/examples/kml-layer.html b/openlayers/examples/kml-layer.html new file mode 100644 index 0000000..217e7e9 --- /dev/null +++ b/openlayers/examples/kml-layer.html @@ -0,0 +1,43 @@ + + + + + + + + +

KML Layer Example

+ +
+ +

+ Demonstrates loading and displaying a KML file on top of a basemap. +

+ +
+ +
+ + diff --git a/openlayers/examples/kml/lines.kml b/openlayers/examples/kml/lines.kml new file mode 100644 index 0000000..5999aaa --- /dev/null +++ b/openlayers/examples/kml/lines.kml @@ -0,0 +1,275 @@ + + + + KML Samples + 1 + Unleash your creativity with the help of these examples! + + + + + + + + + + + + + + Paths + 0 + Examples of paths. Note that the tessellate tag is by default + set to 0. If you want to create tessellated lines, they must be authored + (or edited) directly in KML. + + Tessellated + 0 + tag has a value of 1, the line will contour to the underlying terrain]]> + + -112.0822680013139 + 36.09825589333556 + 0 + 2889.145007690472 + 62.04855796276328 + 103.8120432044965 + + + 1 + -112.0814237830345,36.10677870477137,0 + -112.0870267752693,36.0905099328766,0 + + + + Untessellated + 0 + tag has a value of 0, the line follow a simple straight-line path from point to point]]> + + -112.0822680013139 + 36.09825589333556 + 0 + 2889.145007690472 + 62.04855796276328 + 103.8120432044965 + + + 0 + -112.080622229595,36.10673460007995,0 + -112.085242575315,36.09049598612422,0 + + + + Absolute + 0 + Transparent purple line + + -112.2719329043177 + 36.08890633450894 + 0 + 2569.386744398339 + 44.60763714063257 + -106.8161545998597 + + #transPurpleLineGreenPoly + + 1 + absolute + -112.265654928602,36.09447672602546,2357 + -112.2660384528238,36.09342608838671,2357 + -112.2668139013453,36.09251058776881,2357 + -112.2677826834445,36.09189827357996,2357 + -112.2688557510952,36.0913137941187,2357 + -112.2694810717219,36.0903677207521,2357 + -112.2695268555611,36.08932171487285,2357 + -112.2690144567276,36.08850916060472,2357 + -112.2681528815339,36.08753813597956,2357 + -112.2670588176031,36.08682685262568,2357 + -112.2657374587321,36.08646312301303,2357 + + + + Absolute Extruded + 0 + Transparent green wall with yellow outlines + + -112.2643334742529 + 36.08563154742419 + 0 + 4451.842204068102 + 44.61038665812578 + -125.7518698668815 + + #yellowLineGreenPoly + + 1 + 1 + absolute + -112.2550785337791,36.07954952145647,2357 + -112.2549277039738,36.08117083492122,2357 + -112.2552505069063,36.08260761307279,2357 + -112.2564540158376,36.08395660588506,2357 + -112.2580238976449,36.08511401044813,2357 + -112.2595218489022,36.08584355239394,2357 + -112.2608216347552,36.08612634548589,2357 + -112.262073428656,36.08626019085147,2357 + -112.2633204928495,36.08621519860091,2357 + -112.2644963846444,36.08627897945274,2357 + -112.2656969554589,36.08649599090644,2357 + + + + Relative + 0 + Black line (10 pixels wide), height tracks terrain + + -112.2580438551384 + 36.1072674824385 + 0 + 2927.61105910266 + 44.61324882043339 + 4.947421249553717 + + #thickBlackLine + + 1 + relativeToGround + -112.2532845153347,36.09886943729116,645 + -112.2540466121145,36.09919570465255,645 + -112.254734666947,36.09984998366178,645 + -112.255493345654,36.10051310621746,645 + -112.2563157098468,36.10108441943419,645 + -112.2568033076439,36.10159722088088,645 + -112.257494011321,36.10204323542867,645 + -112.2584106072308,36.10229131995655,645 + -112.2596588987972,36.10240001286358,645 + -112.2610581199487,36.10213176873407,645 + -112.2626285262793,36.10157011437219,645 + + + + Relative Extruded + 0 + Opaque blue walls with red outline, height tracks terrain + + -112.2683594333433 + 36.09884362144909 + 0 + 2184.193522571467 + 44.60855445139561 + -72.24271551768405 + + #redLineBluePoly + + 1 + 1 + relativeToGround + -112.2656634181359,36.09445214722695,630 + -112.2652238941097,36.09520916122063,630 + -112.2645079986395,36.09580763864907,630 + -112.2638827428817,36.09628572284063,630 + -112.2635746835406,36.09679275951239,630 + -112.2635711822407,36.09740038871899,630 + -112.2640296531825,36.09804913435539,630 + -112.264327720538,36.09880337400301,630 + -112.2642436562271,36.09963644790288,630 + -112.2639148687042,36.10055381117246,630 + -112.2626894973474,36.10149062823369,630 + + + + Blue Icon + Just another blue icon. + kml/styles.kml#blueIcons + + -112.292238941097,36.09520916122063,630 + + + + + diff --git a/openlayers/examples/kml/styles.kml b/openlayers/examples/kml/styles.kml new file mode 100644 index 0000000..24350ad --- /dev/null +++ b/openlayers/examples/kml/styles.kml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/openlayers/examples/kml/sundials.kml b/openlayers/examples/kml/sundials.kml new file mode 100644 index 0000000..8a68305 --- /dev/null +++ b/openlayers/examples/kml/sundials.kml @@ -0,0 +1,2273 @@ + + + + Sundial Collection.kmz + + + normal + #sn_sunny_copy69 + + + highlight + #sh_sunny_copy70 + + + + + + + + + normal + #sn_sunny_copy68 + + + highlight + #sh_sunny_copy69 + + + + Sundial Collection + 1 + + -56.6884384968692 + 47.91963617483238 + 0 + 9958750.824018393 + 1.303827428939919e-015 + -16.31426621668193 + + + + High Resolution + + Sundial, Madestein, Den Haag +

]]>
+ + 4.213227700645635 + 52.04260288332888 + 0 + 24.63686803544318 + 0 + 1.387289180270979e-005 + + #msn_sunny_copy69 + + 4.213209970684247,52.04268354765237,0 + +
+ + Sundial, Den Haag - Loosduinen + Thanks to A30

+ +A sundial made of wooden blocks. +The highest block in the middle is the style and casts its shadow each hour on one of the other blocks. + +

+Image source:www.dse.nl]]>
+ + 4.236038669148795 + 52.0499434967447 + 0 + 18.37312193280116 + 2.202011190893535e-011 + -0.3988978466888938 + + #msn_sunny_copy69 + + 4.236026636181407,52.049986562365,0 + +
+ + Sundial with light conductors - Paris, Les Halles +

+ +The sunlight falls on one of the three windows in the column (east, south, west) and over light conductors on the wall is indicated. + +

+ +The clock shows 16,40 o'clock. + +

+ +Quelle:http://www.home.uni-osnabrueck.de/ahaenel/sonnuhr/paris_halles.htm + +http://perso.orange.fr/cadrans.solaires/cadrans/cadran-halles-paris.html]]>
+ + 2.344185113917775 + 48.86294270160059 + 0 + 39.52787486507292 + 0 + -0.003533584730563007 + + #msn_sunny_copy69 + + 2.344143312335305,48.86302323987447,0 + +
+ + Sundial, Plymouth, Devon, UK + The gnonom is 27 foot high, the pool has 21 feet diameter. It was designed by architect Carole Vincent from Boscastle in Cornwall and was unvieled by Her Majesty the Queen on Friday July 22nd 1988 for a cost of cost £70,000 . The sundial runs one hour and seventeen minutes behind local clocks.

+

+

Image source:

+Image source:www.sundials.co.uk]]>
+ + -1.117890647596098 + 50.79319978711329 + 0 + 79.08348690288113 + 0 + 0.02100880488328328 + + #msn_sunny_copy69 + + -1.117887915142518,50.79336425684474,0 + +
+ + Sundial, Britzer Garten, Berlin + See photos on this page: +http://home.arcor.de/ruth.kirsch/sonnenuhr/berlin_1xxxx/berlin_1xxxx.htm + + 13.42078373972489 + 52.4366841172644 + 0 + 102.2086892967038 + 0 + -0.004885703167479627 + + #msn_sunny_copy69 + + 13.4207448482471,52.43682055829985,0 + + + + Sundial, Falkenplatz, Berlin + The original reasoning event for the construction of the sundial was the UNO climate conference 1995 in Berlin. The base stone of the wall spiral was layed at a festivity at the equinox of March 1995. Until June 1995 the main construction was completed, and at another festivity at the summer solstice the gnonom and the totem ("Lebensbaum") was installed by Berlin fire fighters.

+

+

The nearly spiral sundial was planned as a "living sundial" and initiated by the groups of the "Netzwerk Klimagipfel 95", mainly by the journalist T. Römer with the "Verein zur Rettung des Regenwaldes und Naturschutzgebietes La Macarena", and the "Netzwerk Spiel/Kultur" at the Prenzlauer Berg. + + +The covering clay stones were made out of three metric tons of white and brown clay, formed by children of about 50 institutions like school classes and kindergardens of the closer region. The stones were burned and installed in the summer of 1995. Partly they are constructed out of different materials, partly especially formed or ornamented. Six detail images are showing some examples: (White near Red - MC?, Smiley with Heart Eyes, Sun-Moon-Star, Red Broken and Patterned, Rain pits and Stone Hearts in Clay, Red near White - Clay Fish and Sunshine over the Sea). + +In September 1995 the sundial was completed. It was called "living sundial" because it was planned to replace the clay stones regulary when they are destroyed and to add some green to the outside wall of the clock. In December 1995 the clock got a special price of the local environmental administration.

+

.

+ + +

In September 1995 the sundial was completed. It was called "living sundial" because it was planned to replace the clay stones regulary when they are destroyed and to add some green to the outside wall of the clock. In December 1995 the clock got a special price of the local environmental administration.

+

+ +

This sundial was deconstructed at the end of 2002 or at the beginning of 2003:

+

+ +

Image source and infos:www.surveyor.in-berlin.de

]]>
+ + 13.40239121468946 + 52.54640622802566 + 0 + 55.75497205265645 + 1.489511345854323e-009 + 2.6367660621925e-005 + + #msn_sunny_copy69 + + 13.40233774797299,52.54645010247089,0 + +
+ + Sundial, Halde Schwerin, Castrop-Rauxel, Germany + Thanks to htd42

+

+ +http://www.ruhrgebiet.de/freizeit/sehenswuerdigkeiten/cr_halde_schwerin.shtml?print]]>
+ + 7.337404407947669 + 51.54597716006042 + 0 + 51.28632275218226 + 2.512805793870883e-009 + -6.529566789930303e-005 + + #msn_sunny_copy69 + + 7.337359256982781,51.54610609965799,0 + +
+ + Sundial, Lloydminster, Canada +

+

Image source and infos:www.mts.net

]]>
+ + -110.0353754682919 + 53.26386357821667 + 0 + 155.9861269181855 + 0 + -0.01432903343453666 + + #msn_sunny_copy69 + + -110.0355256583979,53.26413794825379,0 + +
+ + Giant Lady's Leg Sundial, Roselawn, Indiana, USA + The Sun Aura Nudist Resort opened in 1933. Back then it was called Club Zoro and its founder was Alois Knapp, a Chicago lawyer, German Nacktkulturist, editor of Sunshine and Health magazine, and "the father of nudism in America."

+ +

+ +

The club eventually passed into the hands of Dale and Mary Drost. Their son, Dick, had big ideas: he renamed the place Naked City, made it the home of the Ms. Nude Teeny Bopper Contest and the "Erin Go Bra-less" Dance on St. Patrick's Day, and had built the giant lady's leg sundial, 63 feet long and properly positioned to tell time -- a useful feature for wristwatchless nudists.

+ +

Naked City closed in 1986 when Dick was run out of Indiana on child molestation charges, but the leg remains and so does the resort, now under new management. The circular main building with the mirror gold windows is a combination office-sauna-restaurant.

+ +

The guy who paints the leg told us that Sun Aura is a "clothing optional" camp -- in other words, you don't have to get nude to take a picture of the big lady's leg. But for those who do choose to get into the spirit of things, a helpful sign on the exit road reads, "Stop. You Must Be Dressed Beyond This Point."

+ +

Roadside America

]]>
+ + -87.32599841452155 + 41.14248697221019 + 0 + 40.06529731982877 + 0 + -108.7495178792767 + + #msn_sunny_copy69 + + -87.32608203713804,41.14242622349031,0 + +
+ + Sundial, Ingleside, San Francisco, USA + Thanks to CostaPacific

+ +Most people in San Francsco have no idea that their city is host to the world's second largest sundial. It was built in 1913 as a gimic to attract people to a new housing development that was built arround the configuration of the old Ingleside Race Track. + +

+

Image source:]]> + + -122.4687521474299 + 37.72475779376939 + 0 + 104.1096478961583 + 0 + -6.694029629862418e-005 + relativeToGround + + #msn_sunny_copy69 + + -122.4687727980979,37.72497790751523,59.97947112427937 + + + + Sundial Bridge + Located in Redding, CA. Opened in 2004 this bridge actually acts as a sundial. The time can be read in a garden on the North side of the bridge. + +http://www.turtlebay.org/sundial/sundial.shtml + + -122.3775376532067 + 40.59329504591046 + 0 + 160.1654912126178 + 7.884938307004504e-010 + 0.008470312235033726 + + #msn_sunny_copy69 + + -122.3777030796087,40.59376952663914,0 + + + + Sundial, Jaipur,India + Villaman + +

+ + + + +

Jaipur Observatory Sundial


+
+

Walk through these doors and up the stairs to begin your journey along a line from Jaipur, India toward the North Celestial Pole. Such cosmic alignments abound in marvelous Indian observatories where the architecture itself allows astronomical measurements. The structures were built in Jaipur and other cities in the eighteenth century by the Maharaja Jai Singh II (1686-1743). Rising about 90 feet high, this stairway actually forms a shadow caster or gnomon, part of what is still perhaps the largest sundial on planet Earth. Testaments to Jai Singh II's passion for astronomy, the design and large scale of his observatories' structures still provide impressively accurate measurements of shadows and sightings of celestial angles. +

Jaipur Observatory Sundial

+

More here. + +

+]]> + + 75.82482649881683 + 26.924766672173 + 0 + 164.397137416247 + 0 + -0.02454798212483729 + relativeToGround + + #msn_sunny_copy69 + + 75.82474437483685,26.92504292845888,0 + + + + Sundial, Schothorstpark, Amersfoort, Netherlands + A large sundial in the Schothorstpark in Amersfoort. +Thanks to Acadvice]]> + + 5.385083481782106 + 52.17868238866643 + 0 + 49.70911801163624 + 5.249316070079438e-010 + 6.699999294207586e-006 + relativeToGround + + #msn_sunny_copy69 + + 5.385063337537176,52.17873082332495,0 + + + + Sundial, Jardin de Reuilly, Paris +

+ +

+Image source:http://perso.orange.fr

]]> + + 2.387204592843604 + 48.84242901629369 + 0 + 50.11592463998582 + 8.113900329668256e-010 + -0.001210217218456717 + relativeToGround + + #msn_sunny_copy69 + + 2.38716774037826,48.84252766103683,0 + + + + Sundial, Stockgrove, Soulbury, Buckinghamshire, UK + thanks to houdinia

+Sundial with analemmatic clock face. +

]]>
+ + -0.666503881371199 + 51.95548351688392 + 0 + 55.27920580004575 + 6.264058771241075e-010 + 0.06911766261471311 + relativeToGround + + #msn_sunny_copy69 + + -0.6665014664411046,51.95551857959676,0 + +
+ + Sundial, Halde Hoheward, Germany + The Obelisk – The Sundial

+ +

The seeming movement of the sun in the sky, resulting in the discrimination between day and night, was one of the earliest observations of nature performed by men. It enables us to experience the phenomenon “time” with our own senses. The first examples for telling the time with the help of the sun or its shadow date back to the Ancient World. The are numerous archetypes for sundials built inmany different styles, using different techniques.

+ +

The archetype for the horizontal sundial on top of the slagheap Hoheward is the sundial of the Roman Emperor Augustus on the Campus Martius in Rome.

+(It is unknown, whether this ancient obelisk was part of a complete sun dial with hour and declination lines on the morning and afternoon side or whether only a meridian line existed to measure the elevation of the sun in upper culmination. The today's scientific knowledge indicates the existence of a meridian.) The observation of the Obelisk's shadow on the sundial enables the observer to easily determine date and time. Apart from “time” one can also experience the laws of celestial mechanics. Men encounter themselves in relation to the cosmos.

+ +

Representing the first step in the realisation of the Astronomical Theme Park the Obelisk was opened on May 17th, 2005. It is located on the already completed south-eastern plateau of the slagheap at a height of 140 m above sea level. The shadowed area is 62 m in diameter.

+ + + +

+This picture shows the Obelisk after the end of the assembly on the day of the opening. Shortly before it was put on top of the readily prepared pedestal by a helicopter and then bolted. + +

+ +

http://www.horizontastronomie.de

+ + + +

http://de.wikipedia.org/wiki/Halde_Hoheward#Sonnenuhr_mit_Obelisk

+ +

http://www.horizontastronomie.de/animationen.htm

]]>
+ + 7.170033145228383 + 51.56646738931531 + 0 + 96.7791497847863 + 4.155528307086707e-010 + 0.006376147752644328 + relativeToGround + + #msn_sunny_copy69 + + 7.169892708740022,51.56683509795316,0 + +
+ + Sundial, Fachhochschule (FH) Bielefeld +

+http://www.fh-bielefeld.de/article/fh/4412/1/505?NavItemID=0&NavCatID=162]]>
+ + 8.555263115842216 + 52.02672953436973 + 0 + 50.10364671714684 + 0 + 0.001255164290936946 + relativeToGround + + #msn_sunny_copy69 + + 8.555215193531964,52.02681111856448,0 + +
+ + Sundial, Sun City, Arizona +

+ +

]]>
+ + -112.2739996808105 + 33.61902729376313 + 0 + 44.66059102278575 + 0 + 0.0001994953180518285 + relativeToGround + + #msn_sunny_copy69 + + -112.2740228273864,33.61913038777643,0 + +
+ + Sundial, Georgina Blach Intermediate School, Los Altos, CA +

]]>
+ + -122.083063541274 + 37.36394994353518 + 0 + 99.46493929648614 + 0 + -6.524992683547596e-005 + relativeToGround + + #msn_sunny_copy69 + + -122.0831077334675,37.3641379192763,0 + +
+ + Sundial, Hilltop Park, San Francisco +

]]>
+ + -122.3837414260284 + 37.73308769461563 + 0 + 76.96447255875415 + 0 + -0.0001251047167258125 + relativeToGround + + #msn_sunny_copy69 + + -122.3837885185873,37.73313852750733,0 + +
+ + Sundial, Berlin-Weißensee +

+ +http://www.be.schule.de/schulen/wfs/pages/sundials/Weissensee.html]]>
+ + 13.46637059089964 + 52.55408525446345 + 0 + 35.24186259647233 + 0 + -0.002133411261797274 + relativeToGround + + #msn_sunny_copy69 + + 13.46637589519183,52.55412143657096,0 + +
+ + Sundial, Olbers-Planetarium, Bremen +

]]>
+ + 8.806980778676786 + 53.06988134466393 + 0 + 24.09705977000565 + 0 + -0.001876272046377585 + relativeToGround + + #msn_sunny_copy69 + + 8.806963468445417,53.0698959991562,0 + +
+ + Sundial, Westbroekpark, Denn Haag +

]]>
+ + 4.290891177932192 + 52.10450647693549 + 0 + 20.57779559985518 + 0 + -0.8669355345663358 + relativeToGround + + #msn_sunny_copy69 + + 4.290865552422943,52.10453275113748,0 + +
+ + Sundial, Amersfoort, Netherlands +

]]>
+ + 5.374167244217593 + 52.15310253836927 + 0 + 31.45592479376158 + 1.426589610824431e-009 + -0.01164696084898205 + relativeToGround + + #msn_sunny_copy69 + + 5.374145665653813,52.15310809583514,0 + +
+ + Sundial, Botanical Gardens, Sydney, Australia +

+ +

]]>
+ + 151.2154952669206 + -33.86399908828604 + 0 + 16.43666728184123 + 8.675342058213797e-007 + -0.002067228419448193 + relativeToGround + + #msn_sunny_copy69 + + 151.2154882763944,-33.86398565287625,0 + +
+ + Team Disney Sundial, Walt Disney World, Florida + Oftencold + +

+ +http://www.de-zonnewijzerkring.nl/zw-arch/eng-home-zw-07-02.htm]]>
+ + -81.52113085122878 + 28.36541360352638 + 0 + 167.7307771712135 + 1.015026730473625e-011 + -0.006287852151169638 + relativeToGround + + #msn_sunny_copy69 + + -81.52134276012195,28.36559634883421,0 + +
+ + Sundial, Janskerkhof, Utrecht, Netherlands +

+ +

]]>
+ + 5.121095723583527 + 52.09338586502101 + 0 + 24.25734051739648 + 5.490226183683639e-010 + -0.0007122606404517594 + relativeToGround + + #msn_sunny_copy69 + + 5.121088800707085,52.09341776135472,0 + +
+ + Sundial, San Jose Rep Theater, San Jose, CA +

+ +

Image credit:www.groundspeak.com

]]>
+ + -121.8860266085782 + 37.33361545835343 + 0 + 32.31958319185324 + 0 + 1.418565866412994e-005 + relativeToGround + + #msn_sunny_copy69 + + -121.886064353331,37.33364018615777,0 + +
+ + Millennium Sundial, Greenwich Park, London +

+ +

Image credit:www.groundspeak.com

]]>
+ + -0.001522539653513039 + 51.48136176862654 + 0 + 61.96314954770909 + 2.850197260451716e-009 + -0.002911073287638733 + relativeToGround + + #msn_sunny_copy69 + + -0.00156808979284051,51.48142700407306,0 + +
+ + Sundial, Veterans Park, Waukesha, WI +

+ +

Image credit:www.groundspeak.com

]]>
+ + -88.2367572684424 + 43.00995357504599 + 0 + 49.0879478099675 + 0 + -2.769547716555237e-005 + relativeToGround + + #msn_sunny_copy69 + + -88.23678272979073,43.01004377682637,0 + +
+ + Underground Sundial, Munich, Germany +

+ +

Image credit:www.groundspeak.com

]]>
+ + 11.70480163926041 + 48.13338615699044 + 0 + 49.09160069235252 + 7.359413992305611e-011 + 1.363313751616389e-005 + relativeToGround + + #msn_sunny_copy69 + + 11.70474103166116,48.13350333174798,0 + +
+ + Sundial, Crown Hill cemetery, Indianapolis, Indiana, USA +

+ +

Image credit:www.groundspeak.com

]]>
+ + -86.17300915391851 + 39.82668935299838 + 0 + 35.63730089613371 + 0 + 2.616180723282867e-005 + relativeToGround + + #msn_sunny_copy69 + + -86.17304253331795,39.82668119645058,0 + +
+ + Sundial, Coppell, TX +

+ +

Image credit:www.groundspeak.com

]]>
+ + -97.02194975520763 + 32.95633568822581 + 0 + 61.19896168864369 + 0 + 1.826645706530163e-005 + relativeToGround + + #msn_sunny_copy69 + + -97.02199840401494,32.95643533824669,0 + +
+ + + Low Resolution + + Sundial, Kota Baru Parahyangan + voorburger. +

]]>
+ + 107.4940550739811 + -6.852038750176605 + 0 + 296.7282563680993 + 2.08633946131246e-011 + 0.5509822616366601 + relativeToGround + + #msn_sunny_copy70 + + 107.4939718861608,-6.851748821808833,0 + +
+ + Sundial, Pajala, Sweden + The world's biggest sundial today is in the Torne Valley, north of the Arctic Circle. The Guinness Book of Records has put Pajala, northern Sweden, on the map, and its sundial - formed as a "round square".

+

+

The sundial in Pajala, 38.33 m. in diameter, holds the world record, according to the Guinness Book of Records. The previous record was held by Disney World in Orlando, Florida, with 37.18 m.

+ +

The sundial was inaugurated by the Swedish Minister of Labour Margareta Winberg in July 1996. Pajala is situated at 23.28 ° East, 67.21 ° North, which is 70 km north of the Arctic Circle, making a circular sundial possible. This is due to the fact that the Midnight Sun describes a complete circle over the horizon. + +

Its masts of dried fir form a unique spatiality around a circular "square". The site is especially used for local functions such as Pajala Fair, Romp Week and the Northern Lights Festival.

+ +

The central square in Pajala, through its size and latitude, offered conditions for a sundial dedicated to the Midnight Sun. Architect Mats Winsa took his inspiration from the square in Siena, and for the sculptures in the park - astronomical instruments in India dating back to the 18th century. Naturally, it was a challenge to compete with the previous record from 1991 by the world-famous Japanese architect, Arata Isozaki.

+ +

The sundial captures the sun's movement by allowing the shadow of the central gnomon to fall across the hour divisions of the surrounding posts. The gnomon, like the Earth's axis, points toward the Pole Star, which according to Finnish-Ugrian mythology (the region has Finnish roots) holds up the firmament. The "sun wheel" embedded in the ground here (forming a cross in the circle) is in fact a calendar. Water bubbles up from four sources corresponding to the four principal points of the compass. The water gathers in the central pond, which was designed with children in mind.

+ +

For their survival, humans have followed the rhythm of the sun. The need to observe the changing seasons and days led to the early development of the sundial. Our lives today are characterised by obedience to mechanical and national time - inventions separate from true solar time. The sundial displays true solar time, which in Pajala is half-an-hour ahead of national time.

+ +

The sundial in Pajala celebrates light, and acts as a reminder of its significance for all life by functioning as a biological clock in a world fettered by artificial time. The hormone rush in spring reminds us of our direct dependence on sunlight as living beings.

+ +

Info and image source:www.pajala.se

+ +

+

Image source:http://holmers.com

]]>
+ + 23.36723004664742 + 67.21282676944374 + 0 + 124.9604027877409 + 3.010594647959025e-010 + -1.130925335798896 + relativeToGround + + #msn_sunny_copy70 + + 23.36716252896882,67.21299216873888,0 + +
+ + Sundial, Tenerife, Spain +

+ +

+ +

+ +

+

Image source:http://members.aon.at

+ +

Interactice picture

]]>
+ + -16.56926659562192 + 28.08256590461729 + 0 + 88.29371157400612 + 0 + 8.633540737161729e-005 + relativeToGround + + #msn_sunny_copy70 + + -16.5693071701084,28.08261960124695,0 + +
+ + Sundial, Perranporth, UK +

]]>
+ + -5.157517535037663 + 50.34723421976403 + 0 + 65.69642310338585 + 0 + -0.01795551609583625 + relativeToGround + + #msn_sunny_copy70 + + -5.157537433789316,50.34733238709538,0 + +
+ + Sundial, Council Bluffs, Iowa, USA +

+

+

]]>
+ + -95.84953495410247 + 41.25887711431908 + 0 + 196.5752069699831 + 2.583166383376495e-010 + 0.0002124063872384501 + + #msn_sunny_copy70 + + -95.84981881431206,41.25888611306795,294.4878429401121 + +
+ + Sundial. Meckhofen, Leverkusen, Germany +

+

Image source:www.leverkusen.de

+ +

+ +

+

Image source:www.lev2000.de

]]>
+ + 7.083354426150351 + 51.04845387008112 + 0 + 66.17616066250443 + 9.735256695418331e-010 + 0.0006924896867520876 + relativeToGround + + #msn_sunny_copy70 + + 7.083321386023442,51.04852440832129,0 + +
+ + Sundial, Adler Planetarium, Chicago, USA +

]]>
+ + -87.60711153340705 + 41.86674796371171 + 0 + 27.37440941953917 + 0 + 0.008419825260544345 + + #msn_sunny_copy70 + + -87.60710764637246,41.86681374132155,0 + +
+ + Rose Garden Sundial, Christchurch, New Zealand + Thanks to NormB

+Rose Garden History + +

+Photo - NormB 11th April 2006
+Image Hosted by ImageShack.us

+Photo - NormB 11th April 2006
+Image Hosted by ImageShack.us]]> + + 172.621331272394 + -43.53038034442864 + 0 + 86.04933199573917 + 0 + 1.801092527765711 + + #msn_sunny_copy70 + + 172.6213650004974,-43.53035465311722,0 + + + + Sundial, Natchez Park + Thanks to caroling

+ +In Seaside, NW FL, USA on the Emerald Coast. Panoramic images and movies of a sundial and visions of Xtals (energy crystals) on the March equinox, 2006. See http://www.wholeo.net/Trips/Art/Web/TripsArt/Travel/Florida/borders/flBorders.htm]]>
+ + -86.14177717779702 + 30.32184243688109 + 0 + 46.50596341362312 + 9.523139707563741e-010 + 0.0925379903960088 + + #msn_sunny_copy70 + + relativeToGround + -86.14183223138707,30.32193188899003,3 + +
+ + Sundial, Charlotte, North Carolina, USA + Thanks to BrettHo

+On the roof of the International Trade Center is this gigantic sundial.]]>
+ + -80.84002590296151 + 35.22682691631484 + 0 + 73.21919569418378 + 0 + 12.34188537748346 + + #msn_sunny_copy70 + + -80.84002447413604,35.22696160522812,0 + +
+ + KTPalmerSundial, Carefree, Arizona, USA + seer
. +

+http://www.bigwaste.com/photos/az/sundial/]]> + + -111.9217799027029 + 33.8245907883639 + 0 + 119.8165563905356 + 2.774426682549449e-010 + -1.574999619300427e-005 + + #msn_sunny_copy70 + + -111.9218327194278,33.82468559440962,0 + + + + Sundial, University of Science and Technology, Hong Kong +

+ +

Image source:http://perso.orange.fr

]]>
+ + 114.2630116779084 + 22.33749401387006 + 0 + 111.6162130745504 + 0 + 0.0003913059632004609 + relativeToGround + + #msn_sunny_copy70 + + 114.2629690669868,22.33764072332584,0 + +
+ + Sundial, Pekin, Illinois +

+

Image source:www.pekin.net

+ +

]]>
+ + -89.63076522889526 + 40.56267466732153 + 0 + 161.1716772997438 + 0 + 0.009112399365723663 + relativeToGround + + #msn_sunny_copy70 + + -89.63089561079578,40.56281064339486,0 + +
+ + Sundial, Edinburg, Hidalgo, USA +

+ +

<7p>]]> + + -98.17095602857175 + 26.30618568257091 + 0 + 122.1950947751469 + 0 + -0.005400653570135644 + relativeToGround + + #msn_sunny_copy70 + + -98.17104492887813,26.30639237212602,0 + + + + Sundial, Keppel Henge, +

+

http://www.steveirvine.com/sundial.html

+ + +http://www.mts.net/~sabanski/sundial/sotw_canada_keppel.htm]]>
+ + -80.94374423682251 + 44.79038599160477 + 0 + 164.0454159373261 + 0 + -0.007334046679263517 + relativeToGround + + #msn_sunny_copy70 + + -80.94383190841853,44.79038705635566,0 + +
+ + Sundial at Science North, Sudbury, Ontario +

+ +

+ +

+ +http://www.mts.net/~sabanski/sundial/sotw_canada_sn.htm]]>
+ + -80.99582033913947 + 46.46976830028441 + 0 + 85.82915438648354 + 0 + 0.0003317215281456315 + relativeToGround + + #msn_sunny_copy70 + + -80.99588716181201,46.46988111501548,0 + +
+ + Sundial, Amble, UK +

+http://ourworld.compuserve.com/homepages/Patrick_Powers/amble.htm]]>
+ + -1.581634687429885 + 55.33514811404725 + 0 + 62.55005662709024 + 8.224100904372228e-010 + -0.008198736253532122 + relativeToGround + + #msn_sunny_copy70 + + -1.581720999552488,55.3352025087941,0 + +
+ + Sundial, University of Maryland, College Park +

+http://www.mts.net/~sabanski/sundial/sotw_usa_mland.htm]]>
+ + -76.94256839624576 + 38.98603731470438 + 0 + 69.47353847793947 + 0 + -0.00947513273561203 + relativeToGround + + #msn_sunny_copy70 + + -76.94253686137193,38.98616316295006,0 + +
+ + Sundial, Fort San Felipe del Morro, Puerto Rico +

]]>
+ + -66.11899284422442 + 18.46786530709565 + 0 + 122.9114928009769 + 0 + 0.001639161983653822 + relativeToGround + + #msn_sunny_copy70 + + -66.11900470518663,18.4679529172629,0 + +
+ + Sundial, Rose Garden, Phoenix +

]]>
+ + -112.0911976535298 + 33.47007786030556 + 0 + 26.72933602203598 + 4.053298886062559e-011 + 0.0001093808645832187 + relativeToGround + + #msn_sunny_copy70 + + -112.0912131593616,33.4701136927338,0 + +
+ + Sundial, Tucson, Arizona +

]]>
+ + -110.9748374101104 + 32.21591986778585 + 0 + 42.12321141209996 + 0 + -0.0002919115031976927 + relativeToGround + + #msn_sunny_copy70 + + -110.9748562940359,32.21593667064053,0 + +
+ + Sundial, Flandrau Planetarium, Tucson +

]]>
+ + -110.9477979774635 + 32.23224398378896 + 0 + 33.29181342845133 + 3.6608792363658e-017 + 0.0001605580448802178 + relativeToGround + + #msn_sunny_copy70 + + -110.9478231994691,32.23228861367718,0 + +
+ + Sundial, Vietnam Veterans Memorial, Kentucky +

+ +http://www.vietvet.org/kymem.htm]]>
+ + -84.8640348419774 + 38.17725413584271 + 0 + 136.9757698325458 + 1.322889725758878e-010 + -0.0003615314930558497 + relativeToGround + + #msn_sunny_copy70 + + -84.86405079639164,38.17749508752453,0 + +
+ + Sundial, Claremont, California +

+ +

]]>
+ + -117.7288129576152 + 34.0992297660836 + 0 + 60.73786036422235 + 1.321942869740197e-009 + -0.002677989156069468 + relativeToGround + + #msn_sunny_copy70 + + -117.7288254316814,34.09928418001653,0 + +
+ + Sundial, Hoogezand, Netherlands +

+ +http://www.hoogezand-sappemeer.nl/index.php?simaction=content&mediumid=10&pagid=335&fontsize=10&stukid=2597]]>
+ + 6.73589462010654 + 53.15594584104552 + 0 + 139.6528910743265 + 1.45482979338997e-010 + 0.002950231733866508 + relativeToGround + + #msn_sunny_copy70 + + 6.73578802230557,53.15607461082266,0 + +
+ + Sundial, Hoogeveen, Netherlands +

]]>
+ + 6.469908327982116 + 52.72012840714818 + 0 + 73.67703044709106 + 4.200981642085038e-012 + -0.0001367978398152192 + relativeToGround + + #msn_sunny_copy70 + + 6.469803362243752,52.72017851542101,0 + +
+ + Sundial, Bicentennial Park, Homebush, Australia +

]]>
+ + 151.0785472180646 + -33.84641177017981 + 0 + 163.2808310648841 + 1.201655085829064e-011 + 4.265000695512084e-006 + relativeToGround + + #msn_sunny_copy70 + + 151.0784520824468,-33.84631674048389,0 + +
+ + Sundial, Heerenveen, Netherlands +

]]>
+ + 5.948360581453846 + 52.95021342348947 + 0 + 125.5263208537314 + 3.779142327674902e-010 + 2.174750871196e-005 + relativeToGround + + #msn_sunny_copy70 + + 5.94828156186523,52.95041125062435,0 + +
+ + Sundial, Zoetermeer, Netherlands +

+ +http://www.chabot.demon.nl/sundials/index3.htm]]>
+ + 4.48801136665803 + 52.03630549285332 + 0 + 64.63218166015471 + 0 + -0.0001443420778625332 + relativeToGround + + #msn_sunny_copy70 + + 4.48796065586356,52.03633054351467,0 + +
+ + Sundial, Lancaster, Lancashire, UK +

+ +

+ +

]]>
+ + -2.781711751106886 + 54.04618182827939 + 0 + 59.27999100628823 + 0 + 2.19677695423205e-005 + relativeToGround + + #msn_sunny_copy70 + + -2.781728090880108,54.0462693701831,0 + +
+ + Sundial, Nida, Lithuania +

]]>
+ + 20.99037235133227 + 55.29501544197078 + 0 + 177.9373429950499 + 4.620370977113893e-011 + 0.0005344762650417512 + relativeToGround + + #msn_sunny_copy70 + + 20.99033020665709,55.29525661423606,0 + +
+ + Sundial, Tavel, France +

+ +http://www.de-zonnewijzerkring.nl/zw-arch/eng-home-zw-07-03.htm]]>
+ + 4.700355808916944 + 44.00154771856498 + 0 + 254.0752666918187 + 2.46623000787332e-010 + -0.0002391009248289202 + relativeToGround + + #msn_sunny_copy70 + + 4.700351044280055,44.00172761202828,0 + +
+ + Sundial, St. Michielsgestel, Netherlands +

+ +

]]>
+ + 5.346086124850936 + 51.64327189620946 + 0 + 111.9437734662239 + 6.47253437341193e-010 + 0.002375287388397793 + relativeToGround + + #msn_sunny_copy70 + + 5.346049636943462,51.64334209867396,0 + +
+ + Sundial, Halle Saale, Germany +

+ +More photos:http://home.arcor.de/peter.lindner/sonnenuhr/h/halle_saale_061xx/halle_saale_061xx.htm]]>
+ + 11.94846541701928 + 51.49449346439673 + 0 + 51.14591828296211 + 0 + 0.0003207363265956715 + relativeToGround + + #msn_sunny_copy70 + + 11.9484244247504,51.49452140024068,0 + +
+ + Sundial, Abano Terme, Italy +

+ +http://members.aon.at/sundials/bild43_d.htm]]>
+ + 11.7902588657866 + 45.36024293920432 + 0 + 88.27261765894279 + 5.645767845941023e-011 + 0.0006214879519801648 + relativeToGround + + #msn_sunny_copy70 + + 11.79017178556217,45.36037512888652,0 + +
+ + Sundial, Gasworks Park, Seattle, USA +

]]>
+ + -122.3362979085422 + 47.64532276753428 + 0 + 144.9142629968483 + 1.398328526418574e-010 + -0.002257590778485548 + relativeToGround + + #msn_sunny_copy70 + + -122.3363617333393,47.64542146106401,0 + +
+ + Sundial, Biarritz, France +

]]>
+ + -1.554172472866423 + 43.49326953476108 + 0 + 25.2767811064234 + 1.050991544755056e-009 + 0.004580769709390601 + relativeToGround + + #msn_sunny_copy70 + + -1.554180928484328,43.49329288628002,0 + +
+ + Sundial, Biarritz, France +

]]>
+ + -1.566562523529829 + 43.48379630381277 + 0 + 21.65084680450158 + 3.134801309486055e-010 + -0.003938809314781338 + relativeToGround + + #msn_sunny_copy70 + + -1.566563732160418,43.48381046528652,0 + +
+ + Sundial, Gardens of Easton Lodge, UK +

+ +

+ +http://www.sundials.co.uk/newdials.htm]]>
+ + 0.3149818536825662 + 51.89078052542742 + 0 + 55.96449646091584 + 4.648925194094304e-010 + 0.00100690081475908 + relativeToGround + + #msn_sunny_copy70 + + 0.3149732952370528,51.89085713320831,0 + +
+ + Sundial, Drake University, Des Moines, Iowa, USA +

]]>
+ + -93.65212284615454 + 41.60195541103381 + 0 + 78.72982107342352 + 1.765081595632672e-010 + 0.001286572559733559 + relativeToGround + + #msn_sunny_copy70 + + -93.65218647671061,41.60204463077999,0 + +
+ + Sundial, River State Park, Indianapolis, USA +

]]>
+ + -86.17152524772823 + 39.76773209074677 + 0 + 54.39844455317644 + 0 + 0.002275213067656348 + relativeToGround + + #msn_sunny_copy70 + + -86.17158357583082,39.76772499391254,0 + +
+ + Sundial, Lawrence Hall of Science, Berkeley, CA, USA +

]]>
+ + -122.2467934369336 + 37.87843955912407 + 0 + 75.73772829567238 + 0 + -0.0005027058674008065 + relativeToGround + + #msn_sunny_copy70 + + -122.2468395686324,37.87850249930867,0 + +
+ + Sundial, Riverwalk, Augusta, Georgia, USA +

]]>
+ + -81.96495913544699 + 33.47855115889769 + 0 + 24.10683016246917 + 0 + -0.004039593559848222 + relativeToGround + + #msn_sunny_copy70 + + -81.96497422223469,33.47856125757188,0 + +
+ + Sundial, Reggio nell'Emilia, Italy +

+

Image source:http://perso.orange.fr

]]>
+ + 10.64303919389926 + 44.71779646338597 + 0 + 189.7095730357674 + 0 + 0.0003188808607201916 + relativeToGround + + #msn_sunny_copy70 + + 10.64294491831197,44.71794161105381,0 + +
+ + Sundial, Rennes, France +

+ +

Image source:http://perso.orange.fr

]]>
+ + -1.701676278457902 + 48.13126501865703 + 0 + 61.61200771227915 + 0 + -7.297875936612596e-006 + relativeToGround + + #msn_sunny_copy70 + + -1.701699217745187,48.13129604209563,0 + +
+ + Sundial, Schneverdingen, Germany +

]]>
+ + 9.790867938787324 + 53.12943797238091 + 0 + 106.7617213575405 + 4.722006958129564e-010 + 0.00116683463628678 + relativeToGround + + #msn_sunny_copy70 + + 9.790707601654233,53.12958381093443,0 + +
+ + Sundial Obelisk, Charleston, South Carolina +

+ +

Image credit:www.groundspeak.com

]]>
+ + -79.93166502066842 + 32.76970334074068 + 0 + 75.62015855417492 + 4.052617221081382e-011 + 1.8933011389851e-005 + relativeToGround + + #msn_sunny_copy70 + + -79.93172500691688,32.76973746165206,0 + +
+ + Sundial, Morehead Planetarium, Chapel Hill, North Carolina +

+ +

Image credit:www.groundspeak.com

]]>
+ + -79.050938325099 + 35.91448691988588 + 0 + 64.77863580575449 + 0 + 1.662447442472179e-005 + relativeToGround + + #msn_sunny_copy70 + + -79.05097493816135,35.91457037097104,0 + +
+ + Sundial, Berkeley, +California +

+ +

Image credit:www.groundspeak.com

]]>
+ + -122.3174670551103 + 37.86291969151575 + 0 + 46.45520126730318 + 1.288314315217904e-009 + 2.022127862982459e-005 + relativeToGround + + #msn_sunny_copy70 + + -122.317517078111,37.86295037394118,0 + +
+ + Forest Lawn Cemetery Sundial, Buffalo, NY +

+ +

Image credit:www.groundspeak.com

]]>
+ + -78.85654999999994 + 42.92531666666667 + 0 + 76.25216432595194 + 0 + 1.305178628551349e-014 + relativeToGround + + #msn_sunny_copy70 + + -78.85660856395873,42.92539096384056,0 + +
+ + Ruston Way Sundial ,Tacoma, Washington +

+ +

Image credit:www.groundspeak.com

]]>
+ + -122.4622812282256 + 47.27566486193976 + 0 + 62.22457114364932 + 0 + 0.0001239840172672445 + relativeToGround + + #msn_sunny_copy70 + + -122.4623519976878,47.27567991760397,0 + +
+ + Sundial ,Science Central, Fort Wayne, Indiana +

+ +

Image credit:www.groundspeak.com

]]>
+ + -85.1392719076301 + 41.09135262868964 + 0 + 39.45104173043256 + 0 + -1.439899387224993e-005 + relativeToGround + + #msn_sunny_copy70 + + -85.13931366905783,41.09136114213859,0 + +
+ + Berkswich Millennium Sundial, Broc Hill, Staffordshire, UK +

+ +

Image credit:www.groundspeak.com

]]>
+ + -2.038136129920761 + 52.77711389120437 + 0 + 29.50351061813827 + 0 + 3.758749562499077e-005 + relativeToGround + + #msn_sunny_copy70 + + -2.038162283146562,52.77714418176907,0 + +
+ + Sundial, Tazacorte Beach ,La Palma island +

+ +

Image credit:www.groundspeak.com

]]>
+ + -17.9461489138289 + 28.65121498294262 + 0 + 64.36805201552387 + 0 + 4.047704004228316e-005 + relativeToGround + + #msn_sunny_copy70 + + -17.94620263531645,28.65124065936443,0 + +
+ + Sundial, Rochester, NY +

+ +

Image credit:www.groundspeak.com

]]>
+ + -77.66915367541856 + 43.0844306339545 + 0 + 61.69080872372956 + 0 + 9.994948692290747e-005 + relativeToGround + + #msn_sunny_copy70 + + -77.66917908415978,43.08440844604031,0 + +
+ + Sundial, Center of the World, Felicity, CA +

+ +

+The 15 foot Sundial at Felicity is a three-dimensional bronze of Michelangelo's Arm of God painted on the Sistine Chapel ceiling. The arm was sculpted and cast in bronze in New England. The rock is local but the installation required the assistance of a mining engineer and a special drill. The bronze Roman numerals give the time. A sundial is precisely accurate once a year and this was set at noon on Christmas Day. The arm points to the Hill of Prayer, site of the Church on the Hill at Felicity. +At the entrance to The Center of the World campus is a 25 ft. high section of the original stairway of the Eiffel Tower. In 1983, the Government of France removed approximately 500 ft. of the original stairway. Built with the technology of the 1860's, the weight of approximately 54,000 lbs. was causing sway at the top of the then 94 year old tower. The 6,600 lb. section serves no practical purpose, but is part of the spirit of Felicity. +The idea of making Felicity the Center of the World came to Jacques-André when he'd been mayor only a few months. Somehow he convinced Imperial County, CA, to recognize his claim. Soon he had convinced the Institut Geographique National of France, General Dynamics Corporation, and The People's Republic of China to recognize it as well. "I knew I had to build something, but I didn't know what. My wife said, 'It's a desert; why not a pyramid?' So Jacques-André had built a 21-foot-tall pink marble pyramid, its interior lined with mirrors, a plaque embedded in the floor, marking the exact spot. For a dollar, tourists can now stand on the official Center Of The World and take a picture themselves at the official "Center Of The World". +The Felicity Post Office was dedicated on 5 December 1987 at a time when thousands of small post offices were being eliminated as an economy measure. The town, whose population numbered two, saw over 2,300 letters mailed that day. The dedication ceremony was highlighted by a speech in Chinese by Consul Zhou of the People’s Republic of China who traveled 600 miles for the occasion. It is operated by the town at a cost to the Federal Government of one dollar per year. Twenty uncashed one dollar checks are on file.

+ +

Image and info credit:www.groundspeak.com

]]>
+ + -114.7654750861393 + 32.74988921016088 + 0 + 72.95555856498569 + 0 + 3.146266385893141e-005 + relativeToGround + + #msn_sunny_copy70 + + -114.7655284077745,32.74992976207647,0 + +
+ + University of São Paulo Sundial, Sao Paulo, Brazi +

+ +

Image credit:www.groundspeak.com

]]>
+ + -46.7204986760494 + -23.56120553413547 + 0 + 122.7188487961642 + 0 + 2.610051397350573e-005 + relativeToGround + + #msn_sunny_copy70 + + -46.7205459522717,-23.56115337159118,0 + +
+ + Slate bowl Sundial, Holker, UK +

+ +

Image credit:www.groundspeak.com

]]>
+ + -2.987191130383048 + 54.188865359179 + 0 + 98.16442365143851 + 2.595660029656298e-010 + 0.000142350860720713 + relativeToGround + + #msn_sunny_copy70 + + -2.987342530279506,54.18895843924356,0 + +
+ + Sundial, Jardin des Doms, Avignon +

+ +

Image credit:www.groundspeak.com

]]>
+ + 4.807697613943427 + 43.95301885165002 + 0 + 32.75914708134153 + 1.205283678723288e-009 + 2.147953504845766e-005 + relativeToGround + + #msn_sunny_copy70 + + 4.807672022945837,43.95303620373285,0 + +
+ + Rillito Riverpark Sundial, Tucson, AZ +

+ +

Image credit:www.groundspeak.com

]]>
+ + -111.0075277787534 + 32.30113621710221 + 0 + 94.15682746212195 + 0 + 2.968664599173171e-005 + relativeToGround + + #msn_sunny_copy70 + + -111.0075933392788,32.30113929573149,0 + +
+ + Helium Monument Sundial, Amarillo, TX +

+ +

Image credit:www.groundspeak.com

]]>
+ + -101.9132978901728 + 35.19956726276647 + 0 + 60.53404995378031 + 5.162016480480558e-011 + 3.00374135059527e-005 + relativeToGround + + #msn_sunny_copy70 + + -101.9133182362553,35.19966266329223,0 + +
+ + Sundial, Hershey, Pennsylvania +

+ +

Image credit:www.groundspeak.com

]]>
+ + -76.62980321024054 + 40.27170452963257 + 0 + 72.41553799015709 + 2.798231534250927e-010 + 6.256605840320539e-005 + relativeToGround + + #msn_sunny_copy70 + + -76.6298565862236,40.2718754812139,0 + +
+ + King Neptune Sundial, Hilton Head Island, South Carolina +

+ +

Image credit:www.groundspeak.com

]]>
+ + -80.72801698168738 + 32.18076491029077 + 0 + 86.36647046692004 + 2.346233297172379e-010 + 8.72178085589082e-006 + relativeToGround + + #msn_sunny_copy70 + + -80.72806102317654,32.18084680335104,0 + +
+ + Jane Larue Memorial Sundial - Ann Arbor, Michigan +

+ +

Image credit:www.groundspeak.com

]]>
+ + -83.66222470201295 + 42.30114702626376 + 0 + 26.29476256996721 + 0 + 0.0001291940559531826 + relativeToGround + + #msn_sunny_copy70 + + -83.66224748552365,42.30117333470928,0 + +
+
+ + Schoolyard Sundials + + Sundial, Julius-Brecht-Allee, Bremen + + 8.8674012861685 + 53.07651505713779 + 0 + 20.6687721420542 + 9.001122528249614e-011 + -0.00437506724289509 + relativeToGround + + #msn_sunny_copy69 + + 8.867391721405184,53.07654483342672,0 + + + + Sundial, Drebberstraße, Bremen +

]]>
+ + 8.898052233187912 + 53.0400952944841 + 0 + 14.44345748598086 + 0 + -0.001637659480767247 + relativeToGround + + #msn_sunny_copy69 + + 8.898047664850367,53.04011230005033,0 + +
+ + Sundial, Butjadingersrasse, Bremen +

]]>
+ + 8.759747956980032 + 53.08143879125452 + 0 + 37.83897098076405 + 0 + -0.002629545926081431 + relativeToGround + + #msn_sunny_copy69 + + 8.759712018733111,53.08151322706201,0 + +
+
+ + In Progress + + Sundial, Greenwich, USA +

]]>
+ + -73.61498302559443 + 41.02226092221508 + 0 + 149.2259168633856 + 1.357926888487057e-010 + -0.001539166856947675 + relativeToGround + + #msn_sunny_copy69 + + -73.61504279924034,41.022311140554,0 + +
+ + Sonnenuhr? + + 11.05508326700377 + 49.45922489288633 + 0 + 50.88443884213967 + 8.335955203191607e-009 + 0.0196675278275586 + relativeToGround + + #msn_sunny_copy69 + + 11.0551380716084,49.45927364486676,0 + + + + Sundial, Edgewood Park, New Haven, USA +

+ +

]]> + + -72.95215163561284 + 41.31399188322968 + 0 + 154.2904142456261 + 0 + 0.002187256502984029 + relativeToGround + + #msn_sunny_copy69 + + -72.95224192688632,41.31401837758977,0 + + + + Sundial, Pearl City, Oahu, USA +

]]>
+ + -157.975920511215 + 21.39370171784438 + 0 + 93.82906502148613 + 0 + -0.001426474135915891 + relativeToGround + + #msn_sunny_copy69 + + -157.9759385077734,21.39376422631041,0 + +
+ + Sundial + http://maget.maget.free.fr/SiteMont/index.html + + -1.511135684750573 + 48.63640399624012 + 0 + 623.6899626138724 + 0 + -1.851737885201182e-005 + relativeToGround + + #msn_sunny_copy69 + + -1.511518347366319,48.63786003229999,0 + + + + Mont-Saint-Michel + http://maget.maget.free.fr/SiteMont/MSpage4.htm + + http://maget.maget.free.fr/SiteMont/images/le_Mont_Solaire-Land%20Art.jpg + 0.75 + + + 48.63770978435333 + 48.6344604605756 + -1.5070705975067 + -1.514375149320612 + -11.46597601725745 + + + + Sundial Park, Ludiver park + http://perso.orange.fr/cadrans.solaires/cadrans/cadran-parc-ludiver.html + + -1.727863357864637 + 49.63119498354116 + 0 + 473.1060190443535 + 3.883358970183465e-011 + 0.0005701632901766135 + relativeToGround + + #msn_sunny_copy69 + + -1.728331456927833,49.63191584214422,0 + + + + Sonnenuhr? + + 7.68545763101957 + 51.53642499090419 + 0 + 23.70363190324798 + 4.475657800962137e-010 + -0.1674345977313924 + relativeToGround + + #msn_sunny_copy69 + + 7.685416995069303,51.53648149450991,0 + + + + Sundial at Tower of London + ]]> + + -0.07656780337525181 + 51.50981727675416 + 0 + 61.73369699893549 + 9.251491983355112e-010 + 0.009688876514144714 + + #msn_sunny_copy69 + + -0.07656780337525181,51.50981727675417,0 + + + + War Veterans' Memorial Park Sundial, Florida, United States + + -82.77333790901622 + 27.8036881517592 + 0 + 96.43655563554265 + 4.405141995417006e-010 + 9.892674215924156e-005 + relativeToGround + + #msn_sunny_copy69 + + -82.77341348054247,27.80374932310448,0 + + +
+ + + diff --git a/openlayers/examples/late-render.html b/openlayers/examples/late-render.html new file mode 100644 index 0000000..12e3f83 --- /dev/null +++ b/openlayers/examples/late-render.html @@ -0,0 +1,42 @@ + + + OpenLayers Late Rendering Example + + + + + + +

Late Rendering

+ +
+ +

+ Demonstrates how a map can be rendered to an empty container after + construction by calling the render method. +

+
+
+ In cases where you need to create a map first and render it to some + container later, call the map constructor without a "div" argument. + In this case, you can provide the options object as the first argument. + To render your map to some container after construction, call the map's + render method with the container id. +
+ + diff --git a/openlayers/examples/layer-opacity.html b/openlayers/examples/layer-opacity.html new file mode 100644 index 0000000..b1a6686 --- /dev/null +++ b/openlayers/examples/layer-opacity.html @@ -0,0 +1,89 @@ + + + OpenLayers Layer Opacity Example + + + + + + + +

Layer Opacity Example

+ +
+ +

+ Demonstrate a change in the opacity for an overlay layer. +

+ +
+ +
+

+ Note that if you also have the setOpacity method defined on the Layer + class, you can tweak the layer opacity after it has been added to the map. +

+

Opacity: + << + + >> +

+

IE users: Wait until the shade layer has finished loading to try this.

+
+ + diff --git a/openlayers/examples/layerLoadMonitoring.html b/openlayers/examples/layerLoadMonitoring.html new file mode 100644 index 0000000..b349011 --- /dev/null +++ b/openlayers/examples/layerLoadMonitoring.html @@ -0,0 +1,129 @@ + + + OpenLayers Layer Load Monitoring Example + + + + + + + + +

Layer Load Monitoring Example

+ +
+ +

+ Demonstrate a method for monitoring tile loading performance. +

+ +
+ +
+
+ Events Log: +
+ + +
+ +
+
+ + diff --git a/openlayers/examples/layerswitcher.html b/openlayers/examples/layerswitcher.html new file mode 100644 index 0000000..3881b10 --- /dev/null +++ b/openlayers/examples/layerswitcher.html @@ -0,0 +1,55 @@ + + + OpenLayers Layer Switcher Example + + + + + + +

Layer Switcher Example

+ +
+
+ +

+ Demonstrates the use of the LayerSwitcher outside of the OpenLayers window. +

+ +
+
+
+

This demonstrates use of the LayerSwitcher outside the map div. It also shows use + of the displayInLayerSwitcher option on the Layer to cause it to not display in the + LayerSwitcher.

+
+ + diff --git a/openlayers/examples/lite.html b/openlayers/examples/lite.html new file mode 100644 index 0000000..d2f99e5 --- /dev/null +++ b/openlayers/examples/lite.html @@ -0,0 +1,32 @@ + + + OpenLayers Basic Single WMS Example + + + + + + +

Basic Single WMS Example

+ +
+ +
Show a Simple Map
+ +
+ +
+ This example shows a very simple layout with minimal controls. This example uses a single WMS base layer. +
+ + diff --git a/openlayers/examples/mapguide.html b/openlayers/examples/mapguide.html new file mode 100644 index 0000000..7b69040 --- /dev/null +++ b/openlayers/examples/mapguide.html @@ -0,0 +1,150 @@ + + + OpenLayers MapGuide Layer Example + + + + + + + +

MapGuide Layer Example

+ +
+
+ +

+ Demonstrates how to create MapGuide tiled and untiled layers. +

+ +

If prompted for a password, username is Anonymous and an empty password

+ +
+
+
+
+ + diff --git a/openlayers/examples/mapserver.html b/openlayers/examples/mapserver.html new file mode 100644 index 0000000..d39467f --- /dev/null +++ b/openlayers/examples/mapserver.html @@ -0,0 +1,35 @@ + + + MapServer Layer + + + + + + +
MapServer Layer
+
+
Shows MapServer Layer
+
+
+ This is an example of using a MapServer Layer with a gutter parameter. The gutter parameter is used to try to limit the edge effects between tiles. +
+ + diff --git a/openlayers/examples/mapserver_untiled.html b/openlayers/examples/mapserver_untiled.html new file mode 100644 index 0000000..2cdb50c --- /dev/null +++ b/openlayers/examples/mapserver_untiled.html @@ -0,0 +1,35 @@ + + + MapServer Single Tile Mode + + + + + + + +
MapServer Single Tile Mode
+
+
Shows single tile MapServer Layer
+
+
+ This shows an example of using a MapServer Layer in single tile mode. Single tile mode can be useful when pulling data from dynamic sources. +
+ + diff --git a/openlayers/examples/marker-shadow.html b/openlayers/examples/marker-shadow.html new file mode 100644 index 0000000..a8b4018 --- /dev/null +++ b/openlayers/examples/marker-shadow.html @@ -0,0 +1,142 @@ + + + OpenLayers: Vector Graphics with Shadows + + + + + + + +

Marker Shadows using Background Graphics/Z-Indexes

+ +
+
+ +

+ This example shows off marker shadows using background graphics and z-indexes. Move the features around to show the shadows' interaction. +

+ +
+ + + + + + + + + +
+
+
+
+ The features in this map were generated at random. Each of these features have a backgroundGraphic property set in the style map to add a shadow image. Note that the background graphics are not duplicated features with a different style. +

+ The shadows were set to have a different z-index than the markers themselves, using the backgroundGraphicZIndex property. This makes sure all shadows stay behind the markers, keeping a clean look. The shadows were also placed nicely relative to the external graphic using the backgroundXOffset and backgroundYOffset property. +

+ Y-ordering on the layer is enabled. See the ordering example. +
+
+ +
+ + + + diff --git a/openlayers/examples/markerResize.html b/openlayers/examples/markerResize.html new file mode 100644 index 0000000..8bc305d --- /dev/null +++ b/openlayers/examples/markerResize.html @@ -0,0 +1,51 @@ + + + Resize a Marker + + + + + + +
Resize a Marker
+
+
Dynamically resize a marker
+
+
+ This example shows how to create a OpenLayers.Layer.Markers layer, add an icon, put it into a marker, and add the marker to the layer. Once the marker has been added it is possible to use setSize() on the icon in order to resize the marker. +
+
click to resize marker
+ + diff --git a/openlayers/examples/marker_shadow.png b/openlayers/examples/marker_shadow.png new file mode 100755 index 0000000000000000000000000000000000000000..a5afa6edd9e4a5a525af486f26d962539412d838 GIT binary patch literal 374 zcmV-+0g3*JP)&00004XF*Lt007q5 z)K6G40000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz2uVaiRCwBq zk_~TyKny_TD59Gv`u~69;-*eM6l|AwNk?G2CNFR)JlfK1l^#JUlv3F$8%4mPSMJJH z5@Z=KnrH`a%38_E8&9Mn3DuQ|4oc-J49H>#=jJbIj=*F`#OoQE?X} zRf2E?TcJj|AiHoL#I3_SE$^9Wm=Q%;$4;8)i~F9+e`Gm}U9&zV6-LQ`s7KZy`R3Y@ zAN|5cVa-n(dGO&xMvJg@`Cl?Gt@z8qeYtgX$fIO%UCf3!+099OCC~pP(|8Fm0O + + Markers Layer Example + + + + + + +
Markers Layer Example
+
+
Show markers layer with different markers
+
+
+ This is an example of an OpenLayers.Layers.Markers layer that shows some examples of adding markers. Also demonstrated is registering a mousedown effect on a marker. +
+ + diff --git a/openlayers/examples/markersTextLayer.html b/openlayers/examples/markersTextLayer.html new file mode 100644 index 0000000..e955d1b --- /dev/null +++ b/openlayers/examples/markersTextLayer.html @@ -0,0 +1,34 @@ + + + Using a Layer.Text to display markers + + + + + + +

Using a Layer.Text to display markers

+

+ The Layer.Text class reads a Tab seperated values file and displays it as markers on + the map. +

+
+ + diff --git a/openlayers/examples/measure.html b/openlayers/examples/measure.html new file mode 100644 index 0000000..d5e0f34 --- /dev/null +++ b/openlayers/examples/measure.html @@ -0,0 +1,169 @@ + + + + + + + + + +

OpenLayers Measure Example

+

+ Demonstrates the measure control to measure distances and areas. +

+
+
+
+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
+

Note that the geometries drawn are planar geometries and the + metrics returned by the measure control are planar measures by + default. If your map is in a geographic projection or you have the + appropriate projection definitions to transform your geometries into + geographic coordinates, you can set the "geodesic" property of the control + to true to calculate geodesic measures instead of planar measures.

+
+ + diff --git a/openlayers/examples/mm.html b/openlayers/examples/mm.html new file mode 100644 index 0000000..305d3c2 --- /dev/null +++ b/openlayers/examples/mm.html @@ -0,0 +1,60 @@ + + + MultiMap + + + + + + + + + + + + +

MultiMap Example

+

+ An example of using the Layer.MultiMap class. +

+
+
click to add the marker to the map
+
click to remove the marker from the map
+ + diff --git a/openlayers/examples/modify-feature.html b/openlayers/examples/modify-feature.html new file mode 100644 index 0000000..29bf490 --- /dev/null +++ b/openlayers/examples/modify-feature.html @@ -0,0 +1,172 @@ + + + Modify Feature + + + + + + + + +

OpenLayers Modify Feature Example

+
A demonstration of the ModifyFeature control for editing vector features.
+
+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + + + +
      +
    • + + +
    • +
    +
  • +
  • + + +
      +
    • + + +
    • +
    • + + + ( + ) +
    • +
    • + + +
    • +
    +
  • +
+
+ + diff --git a/openlayers/examples/mouse-position.html b/openlayers/examples/mouse-position.html new file mode 100644 index 0000000..78836cb --- /dev/null +++ b/openlayers/examples/mouse-position.html @@ -0,0 +1,29 @@ + + + + + MousePosition Control + + + + + + +
+ + diff --git a/openlayers/examples/multimap-mercator.html b/openlayers/examples/multimap-mercator.html new file mode 100644 index 0000000..06f5d0a --- /dev/null +++ b/openlayers/examples/multimap-mercator.html @@ -0,0 +1,65 @@ + + + MultiMap SphericalMercator + + + + + + + + + + + +

MultiMap Mercator Example

+

+ This sphericalMercator example using multimap demonstrates that the + multimap layer does not fully support the sphericalMercator projection at + this time. +

+
+ + diff --git a/openlayers/examples/multiserver.html b/openlayers/examples/multiserver.html new file mode 100644 index 0000000..1368910 --- /dev/null +++ b/openlayers/examples/multiserver.html @@ -0,0 +1,41 @@ + + + OpenLayers: Tiles from Multiple Servers + + + + + + +

Multiple Server URLS

+ +
+
+

+ Load your tiles faster by pointing to the same server, but with different urls +

+ +
+
+ Browsers typically limit the number of concurrent requests to the same server, based on hostname. In order to ake tiles load more quickly, it often makes sense to distribute requests over multiple hostnames to achieve more concurrency. Typically, browsers perform best with 3 different hostnames -- your performance may vary. (For example, if your server can't handle more than 2 requests simultaneously, then additional hostnames will not help you.) +
+ + + diff --git a/openlayers/examples/mvs.html b/openlayers/examples/mvs.html new file mode 100644 index 0000000..b4003c5 --- /dev/null +++ b/openlayers/examples/mvs.html @@ -0,0 +1,125 @@ + + + + + + + + + + + + + +
+ + diff --git a/openlayers/examples/navigation-control.html b/openlayers/examples/navigation-control.html new file mode 100644 index 0000000..622f154 --- /dev/null +++ b/openlayers/examples/navigation-control.html @@ -0,0 +1,34 @@ + + + OpenLayers Navigation Control + + + + + + +

Navigation Control

+ +
+ +
Demonstrate Navigation Control features
+ +
+ Turn on Wheel Zoom | Turn off Wheel Zoom +
+ This example demonstrates a couple features of the Navigation control. The Navigation control controls most map dragging, movement, zooming, etc. In this case, we have a demonstration of how to create a navigation control with no zoom wheel action, which can then be enabled or disabled by the user. +
+ + diff --git a/openlayers/examples/navigation-history.html b/openlayers/examples/navigation-history.html new file mode 100644 index 0000000..fce76f2 --- /dev/null +++ b/openlayers/examples/navigation-history.html @@ -0,0 +1,57 @@ + + + OpenLayers Navigation History Example + + + + + + +

Map Navigation History Example

+ +
+
+ +

+ A control for zooming to previous and next map extents. +

+ +
+ Map navigation history controls
+
+ + diff --git a/openlayers/examples/navtoolbar-alwaysZoom.html b/openlayers/examples/navtoolbar-alwaysZoom.html new file mode 100644 index 0000000..ec9309c --- /dev/null +++ b/openlayers/examples/navtoolbar-alwaysZoom.html @@ -0,0 +1,78 @@ + + + A navToolbar with an alwaysZoom ZoomBox + + + + + + + + +

A navToolbar with an alwaysZoom ZoomBox

+

+ Demo of a custom NavToolbar which uses a zoomBox tool that always zoom in even when the zoom box is too big. +

+
+ + diff --git a/openlayers/examples/navtoolbar-outsidemap.html b/openlayers/examples/navtoolbar-outsidemap.html new file mode 100644 index 0000000..71931e1 --- /dev/null +++ b/openlayers/examples/navtoolbar-outsidemap.html @@ -0,0 +1,49 @@ + + + OpenLayers: Custom Navigation Toolbar + + + + + + + +

Navigation Toolbar: Outside the Map

+
+
+
+

To place the Naviation Toolbar outside the map:

+
    +
  • Load the default stylesheet into the page.
  • +
  • Override the location of the Navigation toolbar in your CSS by setting #yourElementId div to have a top of 0px
  • +
  • Specify the HTML element as a 'div' option in your NavToolbar constructor
  • +
  • Add the olControlNavToolbar class to your div.
  • +
+
+ + + diff --git a/openlayers/examples/navtoolbar.html b/openlayers/examples/navtoolbar.html new file mode 100644 index 0000000..e7cb203 --- /dev/null +++ b/openlayers/examples/navtoolbar.html @@ -0,0 +1,39 @@ + + + + + NavToolbar Demo + + + + + +

NavToolbar Demo

+

+ Demo the NavToolbar, a subclass of Control.Panel which shows icons for + navigation. +

+
+ + diff --git a/openlayers/examples/notile.html b/openlayers/examples/notile.html new file mode 100644 index 0000000..723f29f --- /dev/null +++ b/openlayers/examples/notile.html @@ -0,0 +1,39 @@ + + + OpenLayers: Single Tile + + + + + + +

Untiled Example

+

+ Create an untiled WMS layer using the singleTile: true, option or the deprecated + WMS.Untiled layer. +

+
+

The first layer is an old OpenLayers.Layer.WMS.Untiled layer, using + a default ratio value of 1.5. +

The second layer is an OpenLayers.Layer.WMS layer with singleTile set + to true, and with a ratio of 1. + + diff --git a/openlayers/examples/openmnnd.html b/openlayers/examples/openmnnd.html new file mode 100644 index 0000000..1357f6b --- /dev/null +++ b/openlayers/examples/openmnnd.html @@ -0,0 +1,155 @@ + + + OpenLayers: OpenMNND + + + + + + +

OpenMNND WFS

+

This example shows the use of a WFS service rendered using the OpenLayers vector library.

+
+
+

+ This is an example that shows rendering a WFS service using OpenLayer vectors in the browser. The OpenLayers code will download the GML + from the WFS service for each layer, parse it and create features using the OL vector library to draw the features on the map. For + more information on the vector library, please visit vector support wiki. + In this example there are 4 layers shown on the map. The base layer and parcel layer are created from a WMS service using the OpenLayers.Layer.WMS object. + The streams, roads, and plat layers are drawn from a WFS service using the OpenLayers.Layer.WFS object. +

+ +

+ Rendering WFS layers into vectors is possible, but you need to be cautions when showing the features on the map. Testing has shown that when + you renderer more than 200 vectors in the browser the performance decreases dramatically. Also features that have a lot of vertices + can cause performance issues. In this example the parcel layer is rendered as a WMS layer because at the time of developing this example + there where a handful of features that had too many vertices to render without killing the browser resources. + + There are a number of properties that can be set for each WFS layer, such color and line weight using style properties such as strokeColor and strokeWidth. + You can also get feature attributes from the WFS services using the extractAttribute property. View the source to see the example code. +

+
+
+
    +
  • Streams: Feature Count 0
  • +
  • Plat: Feature Count 0
  • +
  • Roads: Feature Count 0
  • +
+
+
+
    +
  • + + +
  • +
  • + + +
  • +
+
+ + diff --git a/openlayers/examples/ordering.html b/openlayers/examples/ordering.html new file mode 100644 index 0000000..2536bd0 --- /dev/null +++ b/openlayers/examples/ordering.html @@ -0,0 +1,211 @@ + + + OpenLayers: Z-Ordering and Y-Ordering of Vector Features + + + + + + + +

Z-Index/Y-Order Example

+ +
+
+ +

+ This example shows the use of z-indexing and y-ordering of external graphics. Zoom in and out to see this behavior. +

+ +

Z-Index (with Y-Ordering enabled)

+ + + + + +
+
+
+
+ In this map, the gold features all have the same z-index, and the red features have alternating z-indeces. The gold features' z-index is greater than the red features' z-indeces, which is why gold features look to be drawn on top of the red features. Since each gold feature has the same z-index, gold features succomb to y-ordering: this is where features that seem closest to the viewer (lower lattitude) show up above those that seem farther away (higher lattitude). +

+ You can enable y-ordering by passing the parameter yOrdering: true in the vector layer's options hash. For all configurations (with yOrdering or zIndexing set to true), if features have the same z-index -- and if y-ordering is enabled: the same latitude -- those features will succomb to drawing order, where the last feature to be drawn will appear above the rest. +
+
+
+

Z-Index and Drawing Order (Z-Indexes set, and Y-Ordering disabled)

+ + + + + +
+
+
+
+ In this map, zIndexing is set to true. All features are given the same z-index (0), except for the first feature which has a z-index of 1. The layer's yOrdering parameter is set to the default (false). This configuration makes features succomb to z-index and drawing order (for the features with the same z-index), instead of y-order. +

+ The features in this map were drawn from left to right and bottom to top, diagonally, to show that y-ordering is not enabled. Only the lower-left corner feature is drawn on top of the others, because it has a higher z-index (1 instead of 0). +
+
+ + + + diff --git a/openlayers/examples/osm-layer.html b/openlayers/examples/osm-layer.html new file mode 100644 index 0000000..cd16e75 --- /dev/null +++ b/openlayers/examples/osm-layer.html @@ -0,0 +1,119 @@ + + + OpenLayers: OSM Layer + + + + + + + +

Advanced OSM Layer

+
+ + + + + diff --git a/openlayers/examples/osm/sutton_coldfield.osm b/openlayers/examples/osm/sutton_coldfield.osm new file mode 100644 index 0000000..db77309 --- /dev/null +++ b/openlayers/examples/osm/sutton_coldfield.osm @@ -0,0 +1,662 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/openlayers/examples/outOfRangeMarkers.html b/openlayers/examples/outOfRangeMarkers.html new file mode 100644 index 0000000..891c501 --- /dev/null +++ b/openlayers/examples/outOfRangeMarkers.html @@ -0,0 +1,61 @@ + + + Using maxResolution to control overlays + + + + + + + + + + + + + + +

Using maxResolution to control overlays

+

+ See how to control the maximum resolution for a markers layer, + causing it to not be displayed beyond a certain point. +

+
+ + + diff --git a/openlayers/examples/outOfRangeMarkers.txt b/openlayers/examples/outOfRangeMarkers.txt new file mode 100644 index 0000000..6d88977 --- /dev/null +++ b/openlayers/examples/outOfRangeMarkers.txt @@ -0,0 +1,3 @@ +point title description icon +-4.14,37.90 Kilimanjaro Beskrivning http://www.villageografica.com/Africa-Webmap/img/marker-blue.png +-3.24,34.35 Shinyanga Beskrivning http://www.villageografica.com/Africa-Webmap/img/marker-blue.png diff --git a/openlayers/examples/overviewmap.html b/openlayers/examples/overviewmap.html new file mode 100644 index 0000000..5d4b7fb --- /dev/null +++ b/openlayers/examples/overviewmap.html @@ -0,0 +1,105 @@ + + + Overview Map Example + + + + + + +

Overview Map

+ +
+
+

+ Enable a small Overview Map that moves/interacts with your main map. +

+
+

The above map has an overview map control that is created with + the default options. Much like a regular map, the map contained by + the overview map control defaults to a geographic projection.

+
+

The second map has an overview map control that is created with + non-default options. In this case, the mapOptions property of the + control has been set to use non-default projection related properties. + In addition, any other properties of the overview map control can be + set in this way.

+ + + diff --git a/openlayers/examples/pan-zoom-panels.html b/openlayers/examples/pan-zoom-panels.html new file mode 100644 index 0000000..ab633fb --- /dev/null +++ b/openlayers/examples/pan-zoom-panels.html @@ -0,0 +1,56 @@ + + + Pan and Zoom Panels + + + + + + + + + + + +

Pan and Zoom Panels

+
+

Customizable pan and zoom panels

+

+
+

+ The pan and zoom panels allow you to use CSS styling to change the + look and feel of the panels, including changing their position + and their icons without needing to change any code. +

+ + diff --git a/openlayers/examples/panel.html b/openlayers/examples/panel.html new file mode 100644 index 0000000..b64ca12 --- /dev/null +++ b/openlayers/examples/panel.html @@ -0,0 +1,96 @@ + + + OpenLayers: Control Panel + + + + + + + + +

Custom Control.Panel

+

+ Create a custom control.panel, styled entirely with + CSS, and add your own controls to it. +

+
+
+ + diff --git a/openlayers/examples/point-track-markers.html b/openlayers/examples/point-track-markers.html new file mode 100644 index 0000000..2bfa01a --- /dev/null +++ b/openlayers/examples/point-track-markers.html @@ -0,0 +1,64 @@ + + + OpenLayers: Point Track Markers + + + + + + +

GeoRSS PointTrack in OpenLayers

+

This demo uses OpenLayers.Layer.GeoRSS and OpenLayers.Layer.PointTrack. The track is created by connecting the points of the GeoRSS feed.

+
+ GeoRSS URL: +
+

The above input box allows the input of a URL to a GeoRSS feed. This feed can be local to the HTML page -- for example, entering 'xml/track1.xml' will work by default.

+

The example shows a track, displayed as a line connecting the points of the feed. It also shows markers at positions that have a title tag in the rss item. If clicked, a popup will show title and description.

+
+ + diff --git a/openlayers/examples/popupMatrix.html b/openlayers/examples/popupMatrix.html new file mode 100644 index 0000000..1395c04 --- /dev/null +++ b/openlayers/examples/popupMatrix.html @@ -0,0 +1,904 @@ + + + OpenLayers: Popup Mayhem + + + + + + + + + +

Popup Matrix

+ +
+
+

+ All kinds of different popup configurations. +

+ +
+ + + + + + +

All of the images in this file a pre-cached, meaning they are + loaded immediately when you load the page (they are just placed + far offscreen, that's why you don't see them). +

+
+

The only image that is *not* preloaded is small.jpg, the brazilian + flag. We do this in order to test out to make sure that our auto-sizing + code does in fact activate itself as the images load. To verify + this, clear your cache and reload this example page. Click on + any of the markers in the 'AutoSize' row. If the popup autosizes + to correctly contain the entire flag: golden. If the popup is + tiny and you can only see a corner of it, then this code is broken. +

+ +
+ + + + + diff --git a/openlayers/examples/popupMatrix.jpg b/openlayers/examples/popupMatrix.jpg new file mode 100755 index 0000000000000000000000000000000000000000..fb09bc07173dce5605cb7af5b7d31cde14c43706 GIT binary patch literal 46095 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 + + + + + + + + +

Popup Mayhem

+ +
+
+

+ All kinds of ways to create and interact with Popups. +

+ +
+

If you open an anchoredbubble and switch to google, it shouldn't crash. If it does, don't release OpenLayers.

+
click to add Popup to map
+
click to add a Marker with an AnchoredBubble popup
+
click to modify popup's attributes
+
click to remove the popup from map
+
click to remove the markers layer
+
marker.onscreen()?
+
click to destroy the popup from map
+
+ Detailed description of this example needs to be written. +
+ + diff --git a/openlayers/examples/projected-map.html b/openlayers/examples/projected-map.html new file mode 100644 index 0000000..2c7e2a5 --- /dev/null +++ b/openlayers/examples/projected-map.html @@ -0,0 +1,67 @@ + + + OpenLayers: Non-Geographic Projection + + + + + + + + + +

Layer Projections

+ +
+
+

+ Use different (not default) projections with your map +

+
+

When using alternative projections, you still use OpenLayers.LonLat objects, even though + the properties are actually X/Y values at that point.

+ + diff --git a/openlayers/examples/protocol-gears.html b/openlayers/examples/protocol-gears.html new file mode 100644 index 0000000..94155c3 --- /dev/null +++ b/openlayers/examples/protocol-gears.html @@ -0,0 +1,257 @@ + + + + + + + + + + +

Gears Protocol Example

+ +
+
+

+ Shows the usage of the Gears protocol. +

+ +
+
+
+ +
+ Sync +

The Sync link destroys the features currently in the layer, reads + features from the Gears database, and adds them to the layer. + Uncommitted features will be lost.

+ + Commit +

The Commit link commits to the Gears database the features that are + marked as INSERT, UPDATE or DELETE.

+ + Delete +

The Delete link marks the selected feature as DELETE. To select a feature + click choose the navigation control in the editing toolbar.

+
+ +
+

Status:

+

Result:

+
+ +
+

This example demonstrates the usage of OpenLayers Gears protocol to + read/create/update/delete features from/to the Gears database. + Gears must obviously be installed + in your browser for this example to work.

+
+ + diff --git a/openlayers/examples/proxy.cgi b/openlayers/examples/proxy.cgi new file mode 100755 index 0000000..fdaa143 --- /dev/null +++ b/openlayers/examples/proxy.cgi @@ -0,0 +1,78 @@ +#!/usr/bin/env python + + +"""This is a blind proxy that we use to get around browser +restrictions that prevent the Javascript from loading pages not on the +same server as the Javascript. This has several problems: it's less +efficient, it might break some sites, and it's a security risk because +people can use this proxy to browse the web and possibly do bad stuff +with it. It only loads pages via http and https, but it can load any +content type. It supports GET and POST requests.""" + +import urllib2 +import cgi +import sys, os + +# Designed to prevent Open Proxy type stuff. + +allowedHosts = ['www.openlayers.org', 'openlayers.org', + 'labs.metacarta.com', 'world.freemap.in', + 'prototype.openmnnd.org', 'geo.openplans.org', + 'sigma.openplans.org', 'demo.opengeo.org', + 'www.openstreetmap.org', 'sample.avencia.com'] + +method = os.environ["REQUEST_METHOD"] + +if method == "POST": + qs = os.environ["QUERY_STRING"] + d = cgi.parse_qs(qs) + if d.has_key("url"): + url = d["url"][0] + else: + url = "http://www.openlayers.org" +else: + fs = cgi.FieldStorage() + url = fs.getvalue('url', "http://www.openlayers.org") + +try: + host = url.split("/")[2] + if allowedHosts and not host in allowedHosts: + print "Status: 502 Bad Gateway" + print "Content-Type: text/plain" + print + print "This proxy does not allow you to access that location (%s)." % (host,) + print + print os.environ + + elif url.startswith("http://") or url.startswith("https://"): + + if method == "POST": + length = int(os.environ["CONTENT_LENGTH"]) + headers = {"Content-Type": os.environ["CONTENT_TYPE"]} + body = sys.stdin.read(length) + r = urllib2.Request(url, body, headers) + y = urllib2.urlopen(r) + else: + y = urllib2.urlopen(url) + + # print content type header + i = y.info() + if i.has_key("Content-Type"): + print "Content-Type: %s" % (i["Content-Type"]) + else: + print "Content-Type: text/plain" + print + + print y.read() + + y.close() + else: + print "Content-Type: text/plain" + print + print "Illegal request." + +except Exception, E: + print "Status: 500 Unexpected Error" + print "Content-Type: text/plain" + print + print "Some unexpected error occurred. Error text was:", E diff --git a/openlayers/examples/regular-polygons.html b/openlayers/examples/regular-polygons.html new file mode 100644 index 0000000..c40e70a --- /dev/null +++ b/openlayers/examples/regular-polygons.html @@ -0,0 +1,166 @@ + + + OpenLayers Regular Polygon Example + + + + + + + +

OpenLayers Regular Polygon Example

+

+ Shows how to use the RegularPolygon handler to draw features with + different numbers of sides. +

+
+
+ +
    Map Controls +
  • + + +
  • +
  • + + +
  • +
+ + + + + + + + + + + + + + + + + + + + + + + +
Draw OptionValue
+ shape + + +
+ snap angle + + +
+ size + + +
+ irregular + + +
+
+

+ Regular polygons can be drawn by pointing a DrawFeature control to the + RegularPolygon handler class. The options above demonstrate how the + handler can be configured. Note if you are in angle snapping mode (if + the snap angle is non-null) and you hold down the Shift key, you + will toggle to non-snapping mode. +

+

+ The irregular option allows drawing of irregular polygons. With this option, the fixed radius option is ignored. + + diff --git a/openlayers/examples/resize-features.html b/openlayers/examples/resize-features.html new file mode 100644 index 0000000..1e2985a --- /dev/null +++ b/openlayers/examples/resize-features.html @@ -0,0 +1,94 @@ + + + OpenLayers Resize Features Example + + + + + + + +

Resize Features Programatically

+

+ Demonstration of how to use the geometry resize methods to + change feature sizes programatically. +

+
+

This example demonstrates how features can be resized. There is not yet + a control built that provides a tool for resizing, but the geometry.resize + method can be accessed to resize programmatically.

+

Make the features bigger + or smaller. + + diff --git a/openlayers/examples/restricted-extent.html b/openlayers/examples/restricted-extent.html new file mode 100644 index 0000000..f443292 --- /dev/null +++ b/openlayers/examples/restricted-extent.html @@ -0,0 +1,70 @@ + + + OpenLayers Restricted Extent Example + + + + + + + +

OpenLayers Restricted Extent Example

+

+ Don't let users drag outside the map extent: instead, limit dragging such + that the extent of the layer is the maximum viewable area. +

+
+

+ Map navigation is limited by a combination of map and layer properties. + The base layer resolutions array controls the resolutions (or zoom + levels) available. The resolutions can be limited by setting a + maxResolution property or by explicitly specifying a resolutions + array. +

+

+ Navigation limited by the maxExtent property. A map cannot be panned + so that the center of the viewport is outside of the bounds specified + in maxExtent. If you wish to further restrict panning, use the + restrictedExtent property. With restrictedExtent set, the map cannot + be panned beyond the given bounds. If the maxResolution allows the + map to be zoomed to a resolution that displays an area bigger than + the restrictedExtent, the viewport will remain centered on the + restrictedExtent. +

+

+ + + + + diff --git a/openlayers/examples/rotate-features.html b/openlayers/examples/rotate-features.html new file mode 100644 index 0000000..ccd8a52 --- /dev/null +++ b/openlayers/examples/rotate-features.html @@ -0,0 +1,108 @@ + + + OpenLayers Rotate Features Example + + + + + + + +

Rotate vector features

+ +
+
+

+ Details on how to create and rotate vector features programmatically +

+ +
+
This example shows a few features rotating. There is not yet a control + built that provides a tool for rotating, but the geometry.rotate method + can be accessed to rotate programmatically.
+ + diff --git a/openlayers/examples/select-feature-multilayer.html b/openlayers/examples/select-feature-multilayer.html new file mode 100644 index 0000000..54b0085 --- /dev/null +++ b/openlayers/examples/select-feature-multilayer.html @@ -0,0 +1,116 @@ + + + SelectFeature Control on multiple vector layers + + + + + + + +

OpenLayers Select Feature on Multiple Layers Example

+

+ Select a feature on click with the Control.SelectFeature on multiple + vector layers. +

+
+
+ + diff --git a/openlayers/examples/select-feature-openpopup.html b/openlayers/examples/select-feature-openpopup.html new file mode 100644 index 0000000..1493189 --- /dev/null +++ b/openlayers/examples/select-feature-openpopup.html @@ -0,0 +1,99 @@ + + + Open Popup on Layer.Vector + + + + + + + +

Open Popup on Layer.Vector

+

+ Using a Control.SelectFeature, open a popup on click. +

+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
+

It is possible to use the onSelect/onUnselect hooks on the SelectFeature + to do fun things -- like open a popup. +

+ + diff --git a/openlayers/examples/select-feature.html b/openlayers/examples/select-feature.html new file mode 100644 index 0000000..56bd3e4 --- /dev/null +++ b/openlayers/examples/select-feature.html @@ -0,0 +1,141 @@ + + + SelectFeature Control on Layer.Vector + + + + + + + +

OpenLayers Select Feature Example

+

+ Select a feature on hover or click with the Control.SelectFeature on a + vector layer. +

+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
      +
    • + + +
    • +
    • + + +
    • +
    +
  • +
+

Use the shift key to select multiple features. Use the ctrl key to + toggle selection on features one at a time. Note: the "clickout" option has no + effect when "hover" is selected.

+ + diff --git a/openlayers/examples/setextent.html b/openlayers/examples/setextent.html new file mode 100644 index 0000000..b6bda8f --- /dev/null +++ b/openlayers/examples/setextent.html @@ -0,0 +1,34 @@ + + +Setting a visual Extent + + + + + +

Setting a Visual Extent

+

+ Use a boxes layer to visually display the area of interest indicated by a user. +

+

+ Because the ability to set the map to a given extent is limited by the + current resolutions available, zoomToExtent will not always set the map to + exactly the right extent. In order to visually annotate the actual extent, + this example, will use the Boxes layer to visually describe the desired + extent as well as setting the map extent. +

+
+ + + diff --git a/openlayers/examples/sld.html b/openlayers/examples/sld.html new file mode 100644 index 0000000..e81fc03 --- /dev/null +++ b/openlayers/examples/sld.html @@ -0,0 +1,116 @@ + + + + + + + + + +

Styled Layer Descriptor (SLD) Example

+

+ Parsing SLD and applying styles to a vector layer. +

+
+

This example uses a SLD + file to style the vector features. To construct layers that use styles + from SLD, create a StyleMap for the layer that uses one of the userStyles in the + namedLayers object of the return from format.read().

+

Select a new style for the WaterBodies layer below:

+
+ Default Styler (zoom in to see more features)
+ Styler Test PropertyIsEqualTo
+ Styler Test WATER_TYPE
+ Styler Test PropertyIsGreaterThanOrEqualTo
+ Styler Test PropertyIsLessThanOrEqualTo
+ Styler Test PropertyIsGreaterThan
+ Styler Test PropertyIsLessThan
+ Styler Test PropertyIsLike
+ Styler Test PropertyIsBetween
+ Styler Test FeatureId
+
+ + diff --git a/openlayers/examples/small.jpg b/openlayers/examples/small.jpg new file mode 100755 index 0000000000000000000000000000000000000000..1ba22e60062f412dc8c16de0789812a84df04056 GIT binary patch literal 16415 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 + + Snapping & Splitting + + + + + + + + +

Snapping & Splitting Example

+
A demonstration snapping and splitting while editing vector features.
+
+
+ + + + + + + + + + + + + + +
targetnodevertexedge
roads
+
+ + + + + + + + + +
+
+ Clear all features. + + diff --git a/openlayers/examples/snapping.html b/openlayers/examples/snapping.html new file mode 100644 index 0000000..cd808c9 --- /dev/null +++ b/openlayers/examples/snapping.html @@ -0,0 +1,314 @@ + + + Snapping + + + + + + + + +

Snapping Example

+
A demonstration snapping while editing vector features.
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
targetsnodevertexedge
points
lines
polygons
+

Though all snapping types are shown here for all target layers, not all are sensible. + Points don't have edges, for example.

+ + diff --git a/openlayers/examples/spherical-mercator.html b/openlayers/examples/spherical-mercator.html new file mode 100644 index 0000000..ebddb1b --- /dev/null +++ b/openlayers/examples/spherical-mercator.html @@ -0,0 +1,142 @@ + + + OpenLayers: Spherical Mercator + + + + + + + + + + + + +

OpenLayers Spherical Mercator Example

+ +
+
+

+ Shows the use of the Spherical Mercator Layers, for overlaying + Google, Yahoo, Microsoft, and other layers with WMS and TMS tiles. +

+
+ +
+
+ + + + + diff --git a/openlayers/examples/split-feature.html b/openlayers/examples/split-feature.html new file mode 100644 index 0000000..c235ba4 --- /dev/null +++ b/openlayers/examples/split-feature.html @@ -0,0 +1,103 @@ + + + Split Feature Example + + + + + + + +

OpenLayers Split Feature Example

+

+ Demonstrates splitting of line features. +

+
+
+ The split control can be configured to listen for edits on any vector layer + or it can allow for creation of temporary sketch features. Modified or + newly drawn features will be used to split existing features on any target + layer. This example shows the split control configured to use temporary + sketches for the split. +
+ + diff --git a/openlayers/examples/strategy-bbox.html b/openlayers/examples/strategy-bbox.html new file mode 100644 index 0000000..18fd0bf --- /dev/null +++ b/openlayers/examples/strategy-bbox.html @@ -0,0 +1,65 @@ + + + OpenLayers BBOX Strategy Example + + + + + + +

BBOX Strategy Example

+

+ Uses a BBOX strategy to request features within a bounding box. +

+
+
+

The BBOX strategy requests data within a bounding box. When the + previously requested data bounds are invalidated (by browsing to + some area not covered by those bounds), another request for data + is issued.

+
+ + diff --git a/openlayers/examples/strategy-cluster-threshold.html b/openlayers/examples/strategy-cluster-threshold.html new file mode 100644 index 0000000..cd9e308 --- /dev/null +++ b/openlayers/examples/strategy-cluster-threshold.html @@ -0,0 +1,145 @@ + + + OpenLayers Cluster Strategy Threshold + + + + + + + +

Cluster Strategy Threshold

+

+ Demonstrates the use of the cluster strategy threshold property. +

+
+
+

The Cluster strategy lets you display points representing clusters + of features within some pixel distance. You can control the behavior + of the cluster strategy by setting its distance and threshold properties. + The distance determines the search radius (in pixels) for features to + cluster. The threshold determines the minimum number of features to + be considered a cluster.

+
+
+

Cluster details: hover over a feature to see details.

+
    +
  • + + +
  • +
  • + + +
  • +
+ + + diff --git a/openlayers/examples/strategy-cluster.html b/openlayers/examples/strategy-cluster.html new file mode 100644 index 0000000..d275261 --- /dev/null +++ b/openlayers/examples/strategy-cluster.html @@ -0,0 +1,202 @@ + + + OpenLayers Cluster Strategy Example + + + + + + + + + +

Cluster Strategy Example

+

+ Uses a cluster strategy to render points representing clusters of features. +

+
+
+

The Cluster strategy lets you display points representing clusters + of features within some pixel distance.

+
+
+

Hover over a cluster on the map to see the photos it includes.

+
+
+
<<
+
+ +
+
>>
+
+
+ + diff --git a/openlayers/examples/strategy-paging.html b/openlayers/examples/strategy-paging.html new file mode 100644 index 0000000..abefa51 --- /dev/null +++ b/openlayers/examples/strategy-paging.html @@ -0,0 +1,79 @@ + + + OpenLayers Paging Strategy Example + + + + + + +

Paging Strategy Example

+

+ Uses a paging strategy to cache large batches of features and render a page at a time. +

+
+ Displaying page 0 of ... + + +

+
+

The Paging strategy lets you apply client side paging for protocols + that do not support paging on the server. In this case, the protocol requests a + batch of 100 features, the strategy caches those and supplies a single + page at a time to the layer.

+
+ + diff --git a/openlayers/examples/style.css b/openlayers/examples/style.css new file mode 100644 index 0000000..60875fe --- /dev/null +++ b/openlayers/examples/style.css @@ -0,0 +1,82 @@ +/** + * CSS Reset + * From Blueprint reset.css + * http://blueprintcss.googlecode.com + */ +html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;} +body {line-height:1.5;} +table {border-collapse:separate;border-spacing:0;} +caption, th, td {text-align:left;font-weight:normal;} +table, td, th {vertical-align:middle;} +blockquote:before, blockquote:after, q:before, q:after {content:"";} +blockquote, q {quotes:"" "";} +a img {border:none;} + +/** + * Basic Typography + */ +body { + font-family: "Lucida Grande", Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; + font-size: 80%; + color: #222; + background: #fff; + margin: 1em 1.5em; +} +pre, code { + margin: 1.5em 0; + white-space: pre; +} +pre, code { + font: 1em 'andale mono', 'lucida console', monospace; + line-height:1.5; +} +a[href] { + color: #436976; + background-color: transparent; +} +h1, h2, h3, h4, h5, h6 { + color: #003a6b; + background-color: transparent; + font: 100% 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; + margin: 0; + padding-top: 0.5em; +} +h1 { + font-size: 130%; + margin-bottom: 0.5em; + border-bottom: 1px solid #fcb100; +} +h2 { + font-size: 120%; + margin-bottom: 0.5em; + border-bottom: 1px solid #aaa; +} +h3 { + font-size: 110%; + margin-bottom: 0.5em; + text-decoration: underline; +} +h4 { + font-size: 100%; + font-weight: bold; +} +h5 { + font-size: 100%; + font-weight: bold; +} +h6 { + font-size: 80%; + font-weight: bold; +} + +/** + * Map Examples Specific + */ +.smallmap { + width: 512px; + height: 256px; + border: 1px solid #ccc; +} +#tags { + display: none; +} \ No newline at end of file diff --git a/openlayers/examples/stylemap.html b/openlayers/examples/stylemap.html new file mode 100644 index 0000000..73afff3 --- /dev/null +++ b/openlayers/examples/stylemap.html @@ -0,0 +1,91 @@ + + + OpenLayers StyleMap + + + + + + +

StyleMap Example

+ +
+ +

+ Shows how to use a StyleMap to style features with rule based styling. + A style map references on or more OpenLayers.Style objects. These + OpenLayers.Style objects are collections of OpenLayers.Rule objects + that determine how features are styled. An OpenLayers.Rule object + combines an OpenLayers.Filter object with a symbolizer. A filter is used + to determine whether a rule applies for a given feature, and a symbolizer + is used to draw the feature if the rule applies. +

+ +
+ +
+

A style map is used with vector layers to define styles for various + rendering intents. The style map used here has styles defined for the + "default" and "select" rendering intents. This map also has an active + select feature control. When you hover over features, they are selected + and drawn with the style corresponding the the "select" render intent. +

+
+ + \ No newline at end of file diff --git a/openlayers/examples/styles-context.html b/openlayers/examples/styles-context.html new file mode 100644 index 0000000..541266b --- /dev/null +++ b/openlayers/examples/styles-context.html @@ -0,0 +1,105 @@ + + + OpenLayers Vector Styles + + + + + + +

Feature Styles Example

+ +
+ +

+ To style features with a custom function that evaluates each feature, use + the context option of an OpenLayers.Style object. If the context object + contains a function and this function is referenced in a symbolizer, the + function will be called with the feature as an argument.. +

+ +
+ +
+

Features in the northern hemisphere are styled according to their + "type" attribute. This is accomplished with a simple template that + is evaluated with the feature attributes as context.

+

Features in the sourthern hemisphere are styled according to a + combination of their attributes and non-attribute properties. This + is accomplished using an advanced template that calls functions + on the context object passed to the Style constructor.

+
+ + \ No newline at end of file diff --git a/openlayers/examples/styles-rotation.html b/openlayers/examples/styles-rotation.html new file mode 100644 index 0000000..5d48ad7 --- /dev/null +++ b/openlayers/examples/styles-rotation.html @@ -0,0 +1,85 @@ + + + OpenLayers Styles Rotation Example + + + + + +

Rotation Style Example

+

To style point features with rotation, use the rotation + property of the symbolizer. The center of the rotation is the point of the + image specified by graphicXOffset and graphicYOffset.

+
+
+ + diff --git a/openlayers/examples/styles-unique.html b/openlayers/examples/styles-unique.html new file mode 100644 index 0000000..f4f1552 --- /dev/null +++ b/openlayers/examples/styles-unique.html @@ -0,0 +1,103 @@ + + + OpenLayers Styles Unique Value Styles Example + + + + + + +

Unique Value Styles Example

+ +
+ +

+ Shows how to create a style based on unique feature attribute values (markers) + and feature state values (circles). +

+ +
+ +
+ + diff --git a/openlayers/examples/sundials-spherical-mercator.html b/openlayers/examples/sundials-spherical-mercator.html new file mode 100644 index 0000000..40929e4 --- /dev/null +++ b/openlayers/examples/sundials-spherical-mercator.html @@ -0,0 +1,128 @@ + + + OpenLayers: Sundials on a Spherical Mercator Map + + + + + + + + + +

OSM + Google Maps + KML Reprojection

+ +
+ +

+ Demonstrates loading and displaying a KML file on top of OpenStreetMap (OSM) and Google Maps data. Loads data from a KML file of sundials. +

+ +
+ +
+ + diff --git a/openlayers/examples/sundials.html b/openlayers/examples/sundials.html new file mode 100644 index 0000000..d7fd014 --- /dev/null +++ b/openlayers/examples/sundials.html @@ -0,0 +1,98 @@ + + + + + + + + + + +

KML Layer Example

+ +
+ +

+ Demonstrates loading and displaying a KML file on top of a basemap. +

+ +
+ +
+ + diff --git a/openlayers/examples/symbolizers-fill-stroke-graphic.html b/openlayers/examples/symbolizers-fill-stroke-graphic.html new file mode 100644 index 0000000..387ac2e --- /dev/null +++ b/openlayers/examples/symbolizers-fill-stroke-graphic.html @@ -0,0 +1,122 @@ + + + OpenLayers Fill, Stroke, and Graphic Example + + + + + + +

OpenLayers Example

+
+

+ Demonstrate fill, stroke, and graphic property of symbolizers. +

+
+
+ This example shows how to use symbolizers with defaults for stroke, fill, and graphic. +
+ + diff --git a/openlayers/examples/tasmania/TasmaniaCities.xml b/openlayers/examples/tasmania/TasmaniaCities.xml new file mode 100644 index 0000000..11f5bd7 --- /dev/null +++ b/openlayers/examples/tasmania/TasmaniaCities.xml @@ -0,0 +1,40 @@ + + + + + 147.29100045,-42.85100182 147.29100045,-42.85100182 + + + + + + + + + 147.29100045,-42.85100182 + + + + + Hobart + Tasmania + Australia + Provincial capital + 100,000 to 250,000 + + + + + + + + + 147,-41.1 + + + + + Australia + + + diff --git a/openlayers/examples/tasmania/TasmaniaRoads.xml b/openlayers/examples/tasmania/TasmaniaRoads.xml new file mode 100644 index 0000000..f01b56d --- /dev/null +++ b/openlayers/examples/tasmania/TasmaniaRoads.xml @@ -0,0 +1,204 @@ + + + + + 145.19754,-43.423512 148.27298,-40.852802 + + + + + + + + + 146.468582,-41.241478 146.574768,-41.251186 146.640411,-41.255154 146.766129,-41.332348 146.794189,-41.34417 146.822174,-41.362988 146.863434,-41.380234 146.899521,-41.379452 146.929504,-41.378227 147.008041,-41.356079 147.098343,-41.362919 + + + + + alley + + + + + + + + + 147.098343,-41.362919 147.17305,-41.452778 147.213867,-41.503773 147.234894,-41.546661 147.251129,-41.573826 147.264664,-41.602474 147.284485,-41.617554 147.300583,-41.637878 + + + + + highway + + + + + + + + + 147.300583,-41.637878 147.225815,-41.626938 147.183319,-41.619236 147.082367,-41.577755 147.031326,-41.565205 146.961487,-41.564186 146.924545,-41.568565 146.876328,-41.569614 146.783722,-41.56073 146.684937,-41.536232 146.614258,-41.478153 146.619995,-41.423958 146.582581,-41.365482 146.52478,-41.29541 146.477493,-41.277622 146.468582,-41.241478 + + + + + lane + + + + + + + + + 147.522247,-41.859921 147.551865,-41.927834 147.597321,-42.017418 147.578644,-42.113216 147.541656,-42.217743 147.468674,-42.22662 + + + + + highway + + + + + + + + + 146.103699,-41.171677 146.303619,-41.237202 146.362228,-41.236279 146.39418,-41.245384 146.443726,-41.244308 146.468582,-41.241478 + + + + + gravel + + + + + + + + + 145.856018,-41.08007 145.944839,-41.119896 146.037994,-41.150059 146.103699,-41.171677 + + + + + road + + + + + + + + + 147.468674,-42.22662 147.474945,-42.292259 147.467697,-42.301292 147.451828,-42.341656 147.424545,-42.378723 147.366013,-42.412552 147.345779,-42.432449 147.289322,-42.476475 147.264511,-42.503899 147.259918,-42.547539 147.249405,-42.614006 147.278351,-42.693249 147.284271,-42.757759 147.256744,-42.778393 + + + + + highway + + + + + + + + + 148.249252,-41.860851 148.234436,-41.901783 148.192123,-41.93721 148.155762,-41.953667 148.127731,-41.994537 148.053131,-42.100563 + + + + + road + + + + + + + + + 145.19754,-40.878323 145.246674,-40.86021 145.293289,-40.852802 145.465225,-40.897865 145.538498,-40.936264 145.554062,-40.939201 145.602112,-40.962936 145.646362,-40.98243 145.683838,-40.989883 145.710587,-40.996201 145.744293,-41.007545 145.801956,-41.041782 145.856018,-41.08007 + + + + + logging + + + + + + + + + 147.360001,-42.91993 147.348816,-42.93726 147.285049,-42.979027 147.220886,-42.995876 147.164429,-43.027004 147.068237,-43.06319 146.96463,-43.116447 146.949554,-43.17004 146.95369,-43.209591 146.964127,-43.224545 146.975723,-43.250484 146.980759,-43.2701 146.982605,-43.287716 146.970871,-43.31691 146.940521,-43.33812 146.943054,-43.362263 146.952194,-43.39278 146.955429,-43.423512 + + + + + road + + + + + + + + + 147.300583,-41.637878 147.372009,-41.695503 147.402588,-41.725574 147.444061,-41.749676 147.490433,-41.782482 147.506866,-41.795624 147.522919,-41.835609 147.522247,-41.859921 + + + + + highway + + + + + + + + + 148.053131,-42.100563 148.028229,-42.188286 148.002258,-42.2295 147.969955,-42.254417 147.960297,-42.284897 147.942719,-42.398819 147.926407,-42.486034 147.875092,-42.538582 147.832001,-42.587299 147.744217,-42.631607 147.693298,-42.656067 147.618195,-42.691135 147.575317,-42.743092 147.578293,-42.769539 147.547852,-42.814312 147.506699,-42.842907 147.488312,-42.877041 147.449692,-42.901054 147.416809,-42.902828 + + + + + road + + + + + + + + + 147.098343,-41.362919 147.065445,-41.311977 147.024078,-41.257534 146.981445,-41.211391 146.948227,-41.181595 146.926773,-41.172501 146.905029,-41.147144 146.940765,-41.085857 146.962662,-41.075096 147.021088,-41.080925 147.099228,-41.123959 147.187607,-41.150597 147.282028,-41.104244 147.295715,-41.075798 147.306595,-41.062832 147.325745,-41.053524 147.362991,-41.080441 147.419022,-41.081764 147.465881,-41.06089 147.519302,-41.092793 147.528595,-41.137089 147.552521,-41.193565 147.594223,-41.233875 147.734406,-41.239891 147.829376,-41.196636 147.882614,-41.163197 147.91127,-41.163109 147.985168,-41.226128 148.022156,-41.292599 148.075119,-41.313915 148.200104,-41.323097 148.236191,-41.339245 148.27298,-41.383488 148.25,-41.45713 148.254395,-41.53941 148.262436,-41.585217 148.249252,-41.860851 + + + + + road + + + + + + + + + 147.256744,-42.778393 147.220184,-42.824776 147.179596,-42.82143 147.111328,-42.795731 147.057098,-42.741581 147.003479,-42.704803 146.919098,-42.622734 146.910538,-42.610928 146.889984,-42.585396 146.83844,-42.572792 146.78569,-42.539352 146.724335,-42.485966 146.695023,-42.469582 146.649872,-42.450371 146.604965,-42.432274 146.578781,-42.408531 146.539307,-42.364208 146.525055,-42.30883 146.558044,-42.275948 146.576248,-42.23777 146.581467,-42.203426 146.490005,-42.180222 146.3797,-42.146332 146.334061,-42.138741 146.270966,-42.165703 146.197296,-42.224072 146.167908,-42.244835 146.164932,-42.245171 146.111023,-42.265202 146.037476,-42.239738 145.981628,-42.187851 145.853912,-42.133492 145.819611,-42.129154 145.72052,-42.104084 145.618576,-42.056023 145.541718,-42.027241 145.486282,-41.983326 145.452744,-41.926544 145.494034,-41.896477 145.591736,-41.860214 145.64212,-41.838398 145.669449,-41.830734 145.680923,-41.795753 145.682968,-41.743221 145.675156,-41.710377 145.680115,-41.688908 145.701065,-41.648228 145.714798,-41.609509 145.629196,-41.462051 145.648895,-41.470337 145.633423,-41.420902 145.631866,-41.36528 145.640854,-41.301533 145.700424,-41.242611 145.77243,-41.193897 145.802338,-41.161488 145.856018,-41.08007 + + + + + road + + + diff --git a/openlayers/examples/tasmania/TasmaniaStateBoundaries.xml b/openlayers/examples/tasmania/TasmaniaStateBoundaries.xml new file mode 100644 index 0000000..5edb4d7 --- /dev/null +++ b/openlayers/examples/tasmania/TasmaniaStateBoundaries.xml @@ -0,0 +1,92 @@ + + + + + 143.834824,-43.648056 148.479141,-39.573891 + + + + + + + + + + + 148.01416,-42.753059 148.009979,-42.73111 148.011108,-42.652222 148.012634,-42.628613 148.018738,-42.61972 148.076492,-42.586945 148.128006,-42.590275 148.172897,-42.655277 148.168167,-42.665554 148.154984,-42.668888 148.097748,-42.666107 148.041656,-42.732216 148.01416,-42.753059 + + + + + + + + + 147.361633,-43.263062 147.29303,-43.157082 147.329132,-43.102638 147.357178,-43.075005 147.396515,-43.11972 147.431641,-43.213886 147.432739,-43.241943 147.429688,-43.253616 147.361633,-43.263062 + + + + + + + + + 148.128845,-40.274445 148.115234,-40.271667 148.101074,-40.26722 148.064423,-40.253891 148.049133,-40.245552 148.038589,-40.236248 148.013184,-40.161388 148.018311,-40.140209 147.90387,-39.975555 147.809616,-39.913815 147.773865,-39.894722 147.760742,-39.877983 147.783875,-39.850281 147.881897,-39.754173 147.925812,-39.737503 147.967743,-39.725555 147.971069,-39.736389 147.978302,-39.74472 148.069427,-39.83889 148.165527,-39.929443 148.174408,-39.936111 148.186783,-39.944443 148.202759,-39.950279 148.243851,-39.962082 148.279419,-39.965836 148.288025,-39.99472 148.335236,-40.192223 148.33136,-40.219166 148.32135,-40.231941 148.303314,-40.239025 148.17746,-40.25695 148.128845,-40.274445 + + + + + + + + + 148.339142,-40.503334 148.339691,-40.466942 148.33609,-40.45472 148.329971,-40.442917 148.318298,-40.435272 148.292206,-40.434441 148.129944,-40.44722 148.114685,-40.448883 148.103851,-40.454445 148.086639,-40.458057 148.068573,-40.45472 147.99704,-40.428196 147.993561,-40.417084 147.995514,-40.40139 147.998566,-40.389725 148.008041,-40.379162 148.065247,-40.348194 148.083588,-40.344719 148.099121,-40.34333 148.116913,-40.343613 148.133026,-40.345001 148.148315,-40.347221 148.187744,-40.362503 148.202606,-40.361252 148.288025,-40.324722 148.308868,-40.314163 148.329132,-40.305138 148.343018,-40.306664 148.354675,-40.315552 148.479141,-40.430695 148.477188,-40.441387 148.463226,-40.442081 148.407608,-40.461945 148.358307,-40.490555 148.339142,-40.503334 + + + + + + + + + 147.302765,-43.513336 147.239136,-43.491669 147.175537,-43.501671 147.123016,-43.421944 147.190247,-43.354446 147.289566,-43.26403 147.300262,-43.262779 147.307739,-43.270279 147.362457,-43.374168 147.36496,-43.385834 147.362732,-43.398056 147.320663,-43.502918 147.310516,-43.511948 147.302765,-43.513336 + + + + + + + + + 144.888885,-40.729439 144.878571,-40.726246 144.870941,-40.71944 144.865936,-40.671116 144.926224,-40.617222 144.993286,-40.666664 145.016083,-40.695549 144.926361,-40.722496 144.888885,-40.729439 + + + + + + + + + 146.916702,-43.617844 146.863281,-43.636391 146.833588,-43.648056 146.81517,-43.617912 146.770401,-43.610695 146.686371,-43.603333 146.599548,-43.55611 146.514435,-43.542778 146.296082,-43.534729 146.275177,-43.52375 146.260269,-43.49514 146.231476,-43.488888 146.110367,-43.515423 146.0383,-43.498055 145.932678,-43.376316 145.991913,-43.345833 146.1026,-43.357918 146.156647,-43.379723 146.232529,-43.390972 146.234543,-43.325142 146.163239,-43.28236 146.139709,-43.31472 146.12468,-43.333332 145.858856,-43.30875 145.836914,-43.297226 145.758881,-43.184441 145.726898,-43.133331 145.595245,-42.979164 145.573776,-42.963818 145.54747,-42.961391 145.511581,-42.965656 145.459686,-42.904442 145.423157,-42.846664 145.397766,-42.775558 145.353851,-42.658535 145.310516,-42.623611 145.259979,-42.612431 145.231354,-42.45639 145.197617,-42.313473 145.205231,-42.25695 145.223846,-42.239166 145.250107,-42.27486 145.323029,-42.32 145.378021,-42.349167 145.426361,-42.37458 145.439758,-42.398746 145.445663,-42.457359 145.459061,-42.505627 145.469421,-42.523056 145.47525,-42.520279 145.552048,-42.351109 145.49968,-42.323475 145.458313,-42.326393 145.280273,-42.181114 145.260681,-42.139999 145.265121,-42.111389 145.262772,-42.080002 145.247879,-42.034863 145.184555,-41.938332 145.054962,-41.846664 144.954956,-41.713333 144.858582,-41.544449 144.781647,-41.390556 144.731628,-41.306107 144.685791,-41.216595 144.695389,-41.18111 144.667755,-41.075211 144.653595,-41.046951 144.637207,-41.031944 144.618713,-40.93111 144.648865,-40.901245 144.680664,-40.896114 144.699692,-40.875484 144.708588,-40.825562 144.701355,-40.759171 144.762207,-40.72805 144.985992,-40.74868 145.036102,-40.779167 145.080383,-40.810276 145.116348,-40.822365 145.274994,-40.80278 145.335663,-40.842079 145.539154,-40.892776 145.751373,-40.987778 145.872192,-41.042778 146.169434,-41.149994 146.193176,-41.15694 146.229126,-41.160553 146.36969,-41.170837 146.405411,-41.171669 146.450378,-41.16486 146.499146,-41.150139 146.564697,-41.175278 146.58609,-41.186661 146.581909,-41.151527 146.660385,-41.088749 146.731491,-41.069725 146.76416,-41.073059 146.784409,-41.082291 146.801086,-41.107506 146.806458,-41.148365 146.859131,-41.168335 146.94281,-41.166874 146.912964,-41.134789 146.879837,-41.126804 146.843018,-41.123055 146.823013,-41.108124 146.818726,-41.059792 146.86377,-41.028404 147.017059,-40.976109 147.08609,-40.991943 147.105804,-40.99778 147.124664,-41.005005 147.147354,-41.008892 147.171783,-41.008892 147.199127,-41.002228 147.356079,-40.976387 147.416504,-41.017776 147.461914,-41.001396 147.488373,-40.984997 147.517487,-40.953331 147.541656,-40.924171 147.573166,-40.879028 147.589127,-40.853058 147.611618,-40.842358 147.674835,-40.830837 147.698792,-40.857361 147.803162,-40.89278 147.838165,-40.891251 147.876083,-40.878746 147.901779,-40.863194 147.921631,-40.840836 147.933594,-40.822086 147.944138,-40.795277 147.951157,-40.761322 147.971832,-40.744789 148.01416,-40.745972 148.079407,-40.76889 148.221069,-40.84903 148.273315,-40.901108 148.307419,-40.957478 148.318863,-40.972359 148.328308,-40.995419 148.302185,-41.075562 148.290253,-41.10778 148.279846,-41.130833 148.264343,-41.167221 148.272003,-41.218468 148.313568,-41.259308 148.316925,-41.334724 148.287476,-41.423889 148.273804,-41.454166 148.280396,-41.539234 148.296356,-41.565834 148.312195,-41.591248 148.314285,-41.612919 148.292206,-41.728882 148.270966,-41.782642 148.264709,-41.814587 148.298035,-42.035004 148.311493,-42.063473 148.333984,-42.087639 148.358719,-42.108681 148.363846,-42.222427 148.346619,-42.249168 148.324554,-42.270695 148.311096,-42.277779 148.302765,-42.27639 148.275269,-42.255562 148.270813,-42.231667 148.29776,-42.206249 148.309692,-42.140556 148.238846,-41.998196 148.195267,-41.94545 148.079117,-42.117218 148.004013,-42.522499 147.958725,-42.556389 147.943848,-42.613892 147.955521,-42.666527 147.954956,-42.717499 147.924835,-42.741108 147.898865,-42.756535 147.883179,-42.772221 147.84288,-42.872917 147.856415,-42.888889 147.899796,-42.886631 147.881836,-42.857224 147.910873,-42.840832 147.974197,-42.869511 147.999695,-42.907078 148.004776,-42.976868 147.96701,-42.995449 147.951492,-43.082291 147.979126,-43.126663 148.0047,-43.170837 147.995529,-43.227589 147.970795,-43.229092 147.899414,-43.183434 147.827179,-43.206108 147.789703,-43.246948 147.697205,-43.163612 147.631622,-43.065552 147.618973,-43.017708 147.67392,-42.945133 147.706497,-42.938328 147.730789,-42.95472 147.735794,-42.978886 147.719894,-43.002499 147.759979,-43.039864 147.781784,-43.051109 147.808868,-43.054722 147.867874,-43.046528 147.899414,-43.026875 147.825806,-42.931946 147.591629,-42.826736 147.557465,-42.830559 147.502121,-42.860764 147.521362,-42.928886 147.53595,-42.949024 147.55275,-42.978954 147.525604,-43.018333 147.476624,-43.034172 147.427124,-43.04174 147.403732,-43.000072 147.423019,-42.991112 147.40802,-42.889725 147.351624,-42.861389 147.317474,-42.846664 147.348572,-42.904716 147.34079,-42.951111 147.32608,-43.008614 147.292755,-43.028053 147.268188,-43.060432 147.241913,-43.133614 147.240311,-43.155487 147.262482,-43.203888 147.263321,-43.224861 147.247452,-43.269169 147.213287,-43.285625 147.178162,-43.282223 147.098297,-43.244446 147.041351,-43.199722 147.025742,-43.181873 147.022766,-43.138332 147.01207,-43.118752 146.991287,-43.112431 146.970093,-43.137085 146.964417,-43.164162 146.964142,-43.184307 146.969269,-43.204304 146.993988,-43.223747 147.01944,-43.237778 147.061096,-43.258339 147.095337,-43.288715 147.054962,-43.362503 147.002213,-43.422638 146.952179,-43.528053 146.937469,-43.600624 146.916702,-43.617844 + + + + + + + + + 143.921631,-40.136391 143.913879,-40.134727 143.886307,-40.116734 143.873566,-40.065002 143.892349,-40.054302 143.891937,-39.984722 143.885544,-39.970139 143.870514,-39.956947 143.851624,-39.945274 143.840378,-39.936802 143.834824,-39.927502 143.837738,-39.873055 143.85524,-39.711945 143.871063,-39.700279 143.899719,-39.688606 143.916656,-39.680557 143.925812,-39.674171 143.933594,-39.666946 143.941635,-39.655693 143.945526,-39.640839 143.943848,-39.628883 143.935516,-39.608612 143.931915,-39.598335 143.935455,-39.583054 143.977463,-39.573891 143.987732,-39.57695 144.066788,-39.616112 144.108582,-39.662498 144.112183,-39.673058 144.122192,-39.812218 144.122192,-39.825005 144.146454,-39.92944 144.136917,-39.984306 144.106064,-40.036392 144.008881,-40.087776 143.957733,-40.110001 143.921631,-40.136391 + + + + + + + Tasmania + Australia + Australia Dollar + AUD + + + diff --git a/openlayers/examples/tasmania/TasmaniaWaterBodies.xml b/openlayers/examples/tasmania/TasmaniaWaterBodies.xml new file mode 100644 index 0000000..ba96e13 --- /dev/null +++ b/openlayers/examples/tasmania/TasmaniaWaterBodies.xml @@ -0,0 +1,162 @@ + + + + + 145.971619,-43.031944 147.219696,-41.775558 + + + + + + + + + + + 146.232727,-42.157501 146.238007,-42.16111 146.24411,-42.169724 146.257202,-42.193329 146.272217,-42.209442 146.274689,-42.214165 146.27832,-42.21833 146.282471,-42.228882 146.282745,-42.241943 146.291351,-42.255836 146.290253,-42.261948 146.288025,-42.267502 146.282471,-42.269997 146.274994,-42.271111 146.266663,-42.270279 146.251373,-42.262505 146.246918,-42.258057 146.241333,-42.256111 146.23468,-42.257782 146.221344,-42.269165 146.210785,-42.274445 146.20163,-42.27417 146.196075,-42.271385 146.186646,-42.258057 146.188568,-42.252785 146.193298,-42.249443 146.200806,-42.248055 146.209137,-42.249168 146.217468,-42.248611 146.222473,-42.245277 146.22525,-42.240555 146.224121,-42.22805 146.224396,-42.221382 146.228302,-42.217216 146.231354,-42.212502 146.231628,-42.205559 146.219421,-42.186943 146.21637,-42.17028 146.216644,-42.16333 146.219696,-42.158607 146.225525,-42.156105 146.232727,-42.157501 + + + + + + + 1064866676 + 1071221047 + Lake + Australia + Australia + + + + + + + + + + + 146.284424,-43.031944 146.265808,-43.029442 146.257751,-43.021667 146.252197,-43.01889 146.243561,-43.017776 146.23053,-43.021667 146.21524,-43.02417 146.209686,-43.021942 146.209961,-43.015007 146.21579,-42.991112 146.21524,-42.985001 146.213593,-42.979439 146.21109,-42.974716 146.207458,-42.970276 146.193024,-42.959724 146.181915,-42.95472 146.166931,-42.951393 146.1586,-42.950554 146.123016,-42.951111 146.116364,-42.948883 146.112732,-42.944717 146.110229,-42.93972 146.101349,-42.932777 146.094971,-42.929726 146.084961,-42.922775 146.054138,-42.897781 146.041656,-42.886665 146.038025,-42.882217 146.035522,-42.877495 146.035248,-42.86528 146.036652,-42.852226 146.034424,-42.840279 146.030823,-42.836113 146.026367,-42.832504 146.018036,-42.831673 146.010529,-42.832779 146.003876,-42.834724 145.995514,-42.835274 145.990784,-42.831673 145.990234,-42.825562 145.996338,-42.815277 146.000549,-42.805275 145.997192,-42.800278 145.984406,-42.789726 145.981079,-42.785561 145.976898,-42.775002 145.97995,-42.770279 145.985504,-42.767776 145.994965,-42.768059 146.002472,-42.769447 146.008881,-42.772499 146.025818,-42.786667 146.032196,-42.788895 146.040802,-42.788338 146.061646,-42.783333 146.068848,-42.785004 146.074402,-42.787781 146.086914,-42.799995 146.109131,-42.825279 146.117188,-42.832222 146.122742,-42.834442 146.131073,-42.835274 146.139709,-42.834999 146.147217,-42.833061 146.163025,-42.83139 146.170532,-42.833611 146.174988,-42.837219 146.176636,-42.841942 146.17746,-42.848053 146.173309,-42.852226 146.165802,-42.853333 146.155243,-42.859169 146.141937,-42.86306 146.12912,-42.858612 146.118011,-42.852783 146.110779,-42.851395 146.102173,-42.852501 146.098297,-42.855003 146.097198,-42.861389 146.102173,-42.871666 146.111359,-42.878883 146.121338,-42.884445 146.132446,-42.889442 146.146942,-42.899445 146.154968,-42.907219 146.164978,-42.914444 146.174988,-42.92028 146.181366,-42.923058 146.195251,-42.926109 146.204681,-42.926392 146.220795,-42.924721 146.227448,-42.922775 146.233032,-42.92028 146.241913,-42.913612 146.247742,-42.904167 146.260529,-42.891945 146.265533,-42.888611 146.272217,-42.886948 146.281372,-42.886948 146.289703,-42.888054 146.300812,-42.893616 146.308014,-42.902779 146.308594,-42.908333 146.302185,-42.925278 146.301086,-42.931389 146.301636,-42.9375 146.303314,-42.943054 146.307739,-42.946663 146.320801,-42.951111 146.330261,-42.951393 146.352753,-42.947777 146.360229,-42.949165 146.361908,-42.95472 146.358002,-42.959442 146.347473,-42.965553 146.335785,-42.969994 146.331085,-42.973328 146.328033,-42.97805 146.329681,-42.983612 146.33609,-42.985832 146.36496,-42.9925 146.371338,-42.99472 146.383331,-43.000557 146.389984,-43.002785 146.39444,-43.006393 146.391357,-43.011116 146.383881,-43.012222 146.368561,-43.020836 146.355225,-43.024719 146.339142,-43.02639 146.332458,-43.028336 146.323853,-43.02861 146.313019,-43.023056 146.306366,-43.020836 146.298859,-43.022774 146.290253,-43.029442 146.284424,-43.031944 + + + + + + + 1067509088 + 1073140989 + Lake + Australia + Australia + + + + + + + + + + + 146.191925,-42.116112 146.184692,-42.114449 146.174988,-42.107506 146.171356,-42.103333 146.167755,-42.101944 146.167206,-42.095001 146.170532,-42.077225 146.169128,-42.071671 146.163879,-42.061943 146.159698,-42.057777 146.140808,-42.044167 146.09024,-42.014168 146.08609,-42.010559 146.083313,-42.005005 146.084686,-41.999443 146.089417,-41.996109 146.097748,-41.99778 146.109406,-42.002228 146.129395,-42.008057 146.146637,-42.016113 146.153046,-42.018333 146.169128,-42.026947 146.179138,-42.033615 146.182739,-42.036949 146.203583,-42.062775 146.20636,-42.06778 146.207733,-42.073334 146.206635,-42.079445 146.207184,-42.085556 146.208862,-42.09111 146.214417,-42.094162 146.21579,-42.099724 146.209961,-42.109169 146.205231,-42.11306 146.200256,-42.115555 146.191925,-42.116112 + + + + + + + 1064598241 + 1071187492 + Lake + Australia + Australia + + + + + + + + + + + 146.697205,-41.988892 146.688873,-41.988052 146.682465,-41.985832 146.67746,-41.976105 146.673859,-41.973328 146.674133,-41.966393 146.673309,-41.960281 146.674408,-41.95417 146.680817,-41.937218 146.696625,-41.907219 146.69693,-41.900551 146.694122,-41.895554 146.693573,-41.889442 146.695526,-41.883888 146.702179,-41.875275 146.703583,-41.869164 146.700256,-41.858055 146.697754,-41.853058 146.684418,-41.834999 146.680817,-41.83139 146.675812,-41.821671 146.674988,-41.815552 146.680267,-41.797783 146.683319,-41.792503 146.684418,-41.786949 146.691071,-41.778336 146.69693,-41.775558 146.704132,-41.776947 146.708588,-41.781387 146.714691,-41.789726 146.722748,-41.797226 146.728027,-41.800835 146.733582,-41.803055 146.75,-41.804718 146.761658,-41.816666 146.766663,-41.826393 146.772217,-41.828613 146.780548,-41.828613 146.808319,-41.821671 146.815796,-41.820557 146.823029,-41.822777 146.825531,-41.833061 146.824677,-41.853615 146.822754,-41.858894 146.816925,-41.868607 146.80304,-41.871666 146.786377,-41.872772 146.777191,-41.872498 146.764984,-41.876389 146.761108,-41.880554 146.759979,-41.886665 146.762207,-41.898338 146.767487,-41.908607 146.774414,-41.917221 146.779694,-41.927498 146.777771,-41.93222 146.765259,-41.943611 146.754425,-41.963333 146.749695,-41.96666 146.732727,-41.974716 146.728027,-41.97805 146.703857,-41.987778 146.697205,-41.988892 + + + + + + + 1066494066 + 1071999090 + Lake + Australia + Australia + + + + + + + + + + + 146.899719,-42.032776 146.892487,-42.030556 146.886932,-42.027779 146.882446,-42.02417 146.87912,-42.018608 146.878571,-42.006111 146.876892,-42 146.871338,-41.99778 146.864136,-41.996391 146.859406,-41.993614 146.855225,-41.983055 146.856354,-41.976944 146.866913,-41.963615 146.871613,-41.959999 146.883881,-41.955559 146.88858,-41.951668 146.891663,-41.947495 146.893585,-41.941383 146.88858,-41.92556 146.887756,-41.919167 146.888031,-41.912498 146.891937,-41.907776 146.896637,-41.904999 146.90387,-41.906387 146.907471,-41.910828 146.911652,-41.922501 146.914429,-41.926666 146.919708,-41.929443 146.926361,-41.931671 146.953033,-41.931389 146.961365,-41.93222 146.968567,-41.933884 146.973846,-41.936661 146.983032,-41.943611 146.985504,-41.948334 146.987183,-41.953888 146.982178,-41.965004 146.972748,-41.978333 146.971619,-41.983887 146.966644,-41.99472 146.963593,-41.999443 146.958862,-42.003616 146.956085,-42.007782 146.946625,-42.015007 146.940796,-42.016945 146.932739,-42.016113 146.926086,-42.018059 146.921356,-42.022224 146.914703,-42.030281 146.90802,-42.032219 146.899719,-42.032776 + + + + + + + 1065512599 + 1071304933 + Lake + Australia + Australia + + + + + + + + + + + 147.149719,-42.203056 147.142212,-42.201668 147.131348,-42.195831 147.127747,-42.191666 147.125244,-42.186111 147.12439,-42.180832 147.126343,-42.175278 147.132172,-42.165833 147.136108,-42.16111 147.137207,-42.155556 147.135529,-42.149994 147.12912,-42.14167 147.126617,-42.136948 147.128845,-42.124443 147.12912,-42.117775 147.122742,-42.115555 147.11441,-42.116112 147.101349,-42.120552 147.093842,-42.119164 147.092194,-42.114449 147.093292,-42.108337 147.097198,-42.097221 147.103302,-42.080833 147.108307,-42.07 147.112183,-42.066666 147.117737,-42.063889 147.124115,-42.061943 147.131622,-42.060829 147.138031,-42.063614 147.140808,-42.06778 147.145264,-42.071945 147.150818,-42.074173 147.159973,-42.074173 147.16748,-42.073059 147.180542,-42.069725 147.188873,-42.069168 147.19693,-42.07 147.209686,-42.075005 147.216919,-42.082779 147.219696,-42.087502 147.219421,-42.094444 147.216644,-42.099167 147.211914,-42.103333 147.190521,-42.106949 147.185791,-42.110283 147.182739,-42.115005 147.180542,-42.127495 147.180267,-42.134445 147.18219,-42.140556 147.182739,-42.146111 147.187744,-42.16861 147.188568,-42.175003 147.187195,-42.187775 147.184143,-42.192772 147.180542,-42.196663 147.169128,-42.201942 147.149719,-42.203056 + + + + + + + 1065646817 + 1071606923 + Lake + Australia + Australia + + + + + + + + + + + 146.240784,-42.851112 146.231628,-42.850838 146.228027,-42.846664 146.218842,-42.83889 146.214691,-42.831116 146.206635,-42.823334 146.195801,-42.810829 146.173859,-42.77861 146.171356,-42.773888 146.169708,-42.768333 146.166382,-42.762779 146.160522,-42.748886 146.155243,-42.739166 146.151642,-42.735001 146.142761,-42.727776 146.127747,-42.725555 146.118561,-42.72583 146.111908,-42.726944 146.096344,-42.736389 146.09079,-42.738892 146.082184,-42.739998 146.077759,-42.737221 146.074127,-42.733055 146.060791,-42.722221 146.053314,-42.720833 146.041077,-42.725273 146.031372,-42.731941 146.01886,-42.736946 146.011383,-42.738335 145.994415,-42.739166 145.979675,-42.736115 145.974121,-42.733055 145.971619,-42.728333 145.973022,-42.721382 145.976074,-42.71666 145.985504,-42.709999 146.001923,-42.701668 146.011658,-42.695 146.01944,-42.686943 146.022491,-42.681671 146.02359,-42.676109 146.023041,-42.669724 146.01886,-42.65889 146.018311,-42.653328 146.014984,-42.642227 146.014435,-42.636116 146.016937,-42.623611 146.020813,-42.61972 146.025543,-42.616394 146.032196,-42.614449 146.03775,-42.6175 146.041351,-42.621666 146.043854,-42.626389 146.046936,-42.637505 146.048309,-42.649994 146.048035,-42.656662 146.049133,-42.669167 146.05246,-42.680832 146.054962,-42.684998 146.060516,-42.688049 146.068848,-42.6875 146.073853,-42.683609 146.075806,-42.678886 146.078308,-42.666389 146.079407,-42.645836 146.084412,-42.61528 146.088867,-42.604172 146.095795,-42.595001 146.099701,-42.590836 146.104401,-42.587502 146.111908,-42.589165 146.115234,-42.59333 146.116058,-42.599442 146.113586,-42.612503 146.113281,-42.619446 146.113861,-42.626106 146.113281,-42.639168 146.11441,-42.652222 146.116058,-42.657219 146.11969,-42.661385 146.126068,-42.664162 146.13443,-42.665276 146.161377,-42.665276 146.16803,-42.662498 146.171082,-42.658607 146.172211,-42.652496 146.173035,-42.638611 146.172211,-42.6325 146.173309,-42.611946 146.17746,-42.600281 146.183594,-42.590836 146.195801,-42.586388 146.203308,-42.585274 146.210785,-42.586662 146.21524,-42.590279 146.221344,-42.599998 146.221893,-42.60556 146.2258,-42.622223 146.228577,-42.626945 146.235779,-42.628609 146.247192,-42.623329 146.253876,-42.621384 146.261383,-42.623055 146.265808,-42.62722 146.267487,-42.631943 146.268036,-42.638893 146.264435,-42.656662 146.261658,-42.661385 146.254974,-42.66333 146.246613,-42.662498 146.240784,-42.665001 146.236084,-42.668335 146.233032,-42.673058 146.232727,-42.68 146.236084,-42.684723 146.241638,-42.686943 146.257477,-42.688889 146.265808,-42.688889 146.279694,-42.692772 146.283325,-42.696945 146.288574,-42.706665 146.291931,-42.710831 146.296356,-42.714447 146.307465,-42.720833 146.311096,-42.724442 146.308868,-42.730553 146.304962,-42.734444 146.293579,-42.739166 146.293304,-42.745834 146.29776,-42.749443 146.303314,-42.752502 146.306915,-42.756393 146.309418,-42.761391 146.315521,-42.769722 146.323578,-42.777496 146.334412,-42.790001 146.338867,-42.793617 146.346069,-42.801941 146.348572,-42.806946 146.349121,-42.813057 146.345245,-42.817223 146.340515,-42.820557 146.333862,-42.822227 146.324402,-42.822227 146.3172,-42.820557 146.306091,-42.815002 146.295532,-42.802223 146.28775,-42.787781 146.282196,-42.784729 146.273865,-42.785278 146.268036,-42.787781 146.263306,-42.791115 146.256378,-42.799995 146.254974,-42.806664 146.25415,-42.826668 146.251648,-42.83889 146.249695,-42.844444 146.246613,-42.849167 146.240784,-42.851112 + + + + + + + 1067743969 + 1073212293 + Lake + Australia + Australia + + + diff --git a/openlayers/examples/tasmania/sld-tasmania.xml b/openlayers/examples/tasmania/sld-tasmania.xml new file mode 100644 index 0000000..0b174f0 --- /dev/null +++ b/openlayers/examples/tasmania/sld-tasmania.xml @@ -0,0 +1,594 @@ + + + + WaterBodies + + Default Styler + Default Styler + + 1 + + testStyleName + title + abstract + Feature + generic:geometry + + testRuleName + title + Abstract + + + + + 3000000 + + + blue + + 1.0 + + + + + #C0C0C0 + + + butt + + + miter + + + 1 + + + 1 + + + 0 + + + + + + testRuleNameElse + title + Abstract + + + + #aaaaff + + 0.5 + + + + + #C0C0C0 + + + 1 + + + 1 + + + + + + + + + Hover Styler + Hover Styler + + + testStyleHover + title + abstract + Feature + generic:geometry + + testRuleNameHover + title + Abstract + + + + + PERIMETER + 1071304933 + + + AREA + 1065512599 + + + + + + + + black + + + 0.5 + + + + + green + + + butt + + + miter + + + 0.5 + + + 5 + + + 0 + + + + + + testRuleNameHoverElse + title + Abstract + + + + + black + + + 0.5 + + + + + fuchsia + + + 0.5 + + + 5 + + + 0 + + + + + + + + + Attribute Filter Styler + Attribute Filter Styler + + attribute filter type + attribute filter type + Feature + generic:geometry + + + rulePropertyIsEqualTo + rulePropertyIsEqualTo + rulePropertyIsEqualTo + + + name + My simple Polygon + + + + + + #000033 + + + + + + + + + Styler Test PropertyIsEqualTo + Styler Test PropertyIsEqualTo + + attribute filter type + attribute filter type + Feature + generic:geometry + + + rulePropertyIsEqualTo + rulePropertyIsEqualTo + rulePropertyIsEqualTo + + + AREA + 1067743969 + + + + + + red + + + + + + + + + Styler Test WATER_TYPE + Styler Test WATER_TYPE + + attribute filter type + attribute filter type + Feature + generic:geometry + + + rulePropertyIsEqualTo + rulePropertyIsEqualTo + rulePropertyIsEqualTo + + + WATER_TYPE + Lake + + + + + + red + + + + + + + + + Styler Test PropertyIsGreaterThanOrEqualTo + Styler Test PropertyIsGreaterThanOrEqualTo + + attribute filter type + attribute filter type + Feature + generic:geometry + + + PropertyIsGreaterThanOrEqualTo + PropertyIsGreaterThanOrEqualTo + PropertyIsGreaterThanOrEqualTo + + + + WATER_TYPE + Lake + + + AREA + 1067509088 + + + + + + + yellow + + + + + + + + + + Styler Test PropertyIsLessThanOrEqualTo + Styler Test PropertyIsLessThanOrEqualTo + + attribute filter type + attribute filter type + Feature + generic:geometry + + + PropertyIsLessThanOrEqualTo + PropertyIsLessThanOrEqualTo + PropertyIsLessThanOrEqualTo + + + + WATER_TYPE + Lake + + + AREA + 1067509088 + + + + + + + yellow + + + + + + + + + + + Styler Test PropertyIsGreaterThan + Styler Test PropertyIsGreaterThan + + attribute filter type + attribute filter type + Feature + generic:geometry + + + PropertyIsGreaterThan + PropertyIsGreaterThan + PropertyIsGreaterThan + + + + WATER_TYPE + Lake + + + AREA + 1067000000 + + + + + + + yellow + + + + + + + + + Styler Test PropertyIsLessThan + Styler Test PropertyIsLessThan + + attribute filter type + attribute filter type + Feature + generic:geometry + + + PropertyIsLessThan + PropertyIsLessThan + PropertyIsLessThan + + + + WATER_TYPE + Lake + + + AREA + 1067000000 + + + + + + + yellow + + + + + + + + + Styler Test PropertyIsLike + Styler Test PropertyIsLike + + attribute filter type + attribute filter type + Feature + generic:geometry + + + PropertyIsLike + PropertyIsLike + PropertyIsLike + + + AREA + 106774* + + + + + + green + + + + + + + + + Styler Test PropertyIsBetween + Styler Test PropertyIsBetween + + attribute filter type + attribute filter type + Feature + generic:geometry + + + PropertyIsBetween + PropertyIsBetween + PropertyIsBetween + + + AREA + + 1064866676 + + + 1065512599 + + + + + + + blue + + + + + + + + + FeatureId + Styler Test FeatureId + + + + + + + + blue + + + + + + + + + + Roads + + RoadsDefault + 1 + + + justAStyler + + + + red + + + 2 + + + + + + + + + + Cities + + DefaultCities + 1 + + + + + + + + + + image/png + + 0.7 + 14 + + + + + + + + + cross + + 10 + + + + + + + + + Land + + Land Style + 1 + + + + + #ccffaa + + 0.5 + + + + + #C0C0C0 + + + 1 + + + 1 + + + 3 5 1 5 + + + + + + + + + diff --git a/openlayers/examples/teleportation.html b/openlayers/examples/teleportation.html new file mode 100644 index 0000000..b516fac --- /dev/null +++ b/openlayers/examples/teleportation.html @@ -0,0 +1,70 @@ + + + OpenLayers Teleporter Example + + + + + + + + + +

Map "Teleportation" and Rendering

+ +
+ +

Call the map's render method to change its container.

+ +
+
+
+
+ + + +
+ This example demonstrates how a map can be rendered initially in one + container and then moved to a new container. At any point after map + construction, the map's render method can be called with the id of + an empty container, moving the map to the new container. +
+ + diff --git a/openlayers/examples/textfile.txt b/openlayers/examples/textfile.txt new file mode 100644 index 0000000..f7678c4 --- /dev/null +++ b/openlayers/examples/textfile.txt @@ -0,0 +1,4 @@ +point title description icon +10,20 my orange title my orange description +2,4 my aqua title my aqua description +42,-71 my purple title my purple description
is great. http://www.openlayers.org/api/img/zoom-world-mini.png diff --git a/openlayers/examples/thinlong.jpg b/openlayers/examples/thinlong.jpg new file mode 100755 index 0000000000000000000000000000000000000000..a063ab453ddb2f0ff23af731490c52709efc0369 GIT binary patch literal 60996 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 + + OpenLayers TileCache Example + + + + + + +

TileCache Example

+ +
+ +

+ Demonstrates a TileCache layer that loads tiles from from a web + accessible disk-based cache only. +

+ +
+ +
+ This layer should be used for web accessible disk-based caches only. + It is not used to request new tiles from TileCache. Note that you + should specify resolutions explicitly on this layer so that they match + your TileCache configuration. +
+ + diff --git a/openlayers/examples/tms.html b/openlayers/examples/tms.html new file mode 100644 index 0000000..4dd19e9 --- /dev/null +++ b/openlayers/examples/tms.html @@ -0,0 +1,56 @@ + + + OpenLayers Tiled Map Service Example + + + + + + +

Tiled Map Service Example

+ +
+ +

+ Demonstrate the initialization and modification of a Tiled Map Service layer. +

+ +
+ +
+ URL of TMS (Should end in /): layer_name
+

+ Example: http://labs.metacarta.com/wms-c/Basic.py/, satellite, jpg
+ The first input must be an HTTP URL pointing to a TMS instance. The second + input must be a layer name available from that instance, and the third must + be the output format used by that layer. (Any other behavior will result in + broken images being displayed.) +

+
+ + diff --git a/openlayers/examples/transition.html b/openlayers/examples/transition.html new file mode 100644 index 0000000..6449ed4 --- /dev/null +++ b/openlayers/examples/transition.html @@ -0,0 +1,63 @@ + + + OpenLayers Transitions Example + + + + + +

Transition Example

+

+ Demonstrates the use of transition effects in tiled and untiled layers. +

+
+
+ There are two transitions that are currently implemented: null (the + default) and 'resize'. The default transition effect is used when no + transition is specified and is implemented as no transition effect except + for panning singleTile layers. The 'resize' effect resamples the current + tile and displays it stretched or compressed until the new tile is available. +
    +
  • The first layer is an untiled WMS layer with no transition effect.
  • +
  • The second layer is an untiled WMS layer with a 'resize' effect.
  • +
  • The third layer is a tiled WMS layer with no transition effect.
  • +
  • The fourth layer is a tiled WMS layer with a 'resize' effect.
  • +
+
+ + + \ No newline at end of file diff --git a/openlayers/examples/urban.html b/openlayers/examples/urban.html new file mode 100644 index 0000000..c626341 --- /dev/null +++ b/openlayers/examples/urban.html @@ -0,0 +1,45 @@ + + + OpenLayers WorldWind Example + + + + + + +

WorldWind Example

+ +
+ +

+ Demonstrate the use of a NASA WorldWind base layer. +

+ +
+ +
+

+ Add the Nasa WorldWind "Urban" layer to your map. The "Urban" layer contains aerial imagery for urban areas only. +

+

+ You can do it with a ... +

+ +
+ + diff --git a/openlayers/examples/ve-novibrate.html b/openlayers/examples/ve-novibrate.html new file mode 100644 index 0000000..2775583 --- /dev/null +++ b/openlayers/examples/ve-novibrate.html @@ -0,0 +1,62 @@ + + + OpenLayers Virtual Earth Example + + + + + + + + +

Virtual Earth Example

+ +
+ +

+ When using the PanZoom buttons with VirtualEarth, some 'drift' is + possible in markers. This page demonstrates how to use the + panMethod and panDuration properties to change the OpenLayers + settings to match VirtualEarth. +

+ +
+ + + + diff --git a/openlayers/examples/ve.html b/openlayers/examples/ve.html new file mode 100644 index 0000000..3e8cc32 --- /dev/null +++ b/openlayers/examples/ve.html @@ -0,0 +1,68 @@ + + + OpenLayers Virtual Earth Example + + + + + + + + +

Virtual Earth Example

+ +
+ +

+ Demonstrates the use of a Virtual Earth base layer. +

+ +
+ + +
This example demonstrates the ability to add VirtualEarth and the and remove markers.
+ + + + diff --git a/openlayers/examples/vector-features-with-text.html b/openlayers/examples/vector-features-with-text.html new file mode 100644 index 0000000..06f7804 --- /dev/null +++ b/openlayers/examples/vector-features-with-text.html @@ -0,0 +1,112 @@ + + + OpenLayers Labeled Features Example + + + + + + +

OpenLayers Labeled features example

+
+

+ Label vector features with a text symbolizer. +

+
+
+ This example shows drawing simple vector features with a label +
+ + diff --git a/openlayers/examples/vector-features.html b/openlayers/examples/vector-features.html new file mode 100644 index 0000000..2df77e7 --- /dev/null +++ b/openlayers/examples/vector-features.html @@ -0,0 +1,138 @@ + + + OpenLayers: Vector Features + + + + + + +

Drawing Simple Vector Features Example

+ +
+
+

+ Shows the use of the shows drawing simple vector features, in different styles. +

+
+
+
+
+

This example shows drawing simple vector features -- point, line, polygon + in different styles, created 'manually', by constructing the entire style + object, via 'copy', extending the default style object, and by + inheriting the default style from the layer.

+

It also shows how to use external graphic files for point features + and how to set their size: If either graphicWidth or graphicHeight is set, + the aspect ratio of the image will be respected. If both graphicWidth and + graphicHeight are set, it will be ignored. Alternatively, if graphicWidth + and graphicHeight are omitted, pointRadius will be used to set the size + of the image, which will then be twice the value of pointRadius with the + original aspect ratio.

+
+ + + + diff --git a/openlayers/examples/vector-formats.html b/openlayers/examples/vector-formats.html new file mode 100644 index 0000000..714f12d --- /dev/null +++ b/openlayers/examples/vector-formats.html @@ -0,0 +1,221 @@ + + + Vector Formats + + + + + + + + +
+

Vector Formats Example

+ +
+
+

+ Shows the wide variety of vector formats that open layers supports. +

+ +
+
+

Use the drop-down below to select the input/output format + for vector features. New features can be added by using the drawing + tools above or by pasting their text representation below.

+ + +   + + +
+ Input Projection:
+ Output Projection: +
+ +
+ +
+ +
+
+ +
+
+

Use the tools to the left to draw new polygons, lines, and points. + After drawing some new features, hover over a feature to see the + serialized version below.

+ +
+ + + diff --git a/openlayers/examples/wfs-protocol-transactions.html b/openlayers/examples/wfs-protocol-transactions.html new file mode 100644 index 0000000..cc72a4b --- /dev/null +++ b/openlayers/examples/wfs-protocol-transactions.html @@ -0,0 +1,197 @@ + + + + + + + + + + + +

WFS Transaction Example

+ +
+
+

+ Shows the use of the WFS Transactions (WFS-T). +

+ +
+ +
+

The WFS protocol allows for creation of new features and reading, + updating, or deleting of existing features.

+

Use the tools to create, modify, and delete (in order from left + to right) features. Use the save tool (picture of a disk) to + save your changes. Use the navigation tool (hand) to stop editing + and use the mouse for map navigation.

+
+ + + + + + + diff --git a/openlayers/examples/wfs-protocol.html b/openlayers/examples/wfs-protocol.html new file mode 100644 index 0000000..dbfd49f --- /dev/null +++ b/openlayers/examples/wfs-protocol.html @@ -0,0 +1,48 @@ + + + OpenLayers Vector Behavior Example + + + + + + + +

Vector Behavior Example

+

+ Uses a BBOX strategy, WFS protocol, and GML format. +

+
+
+

The vector layer shown uses the BBOX strategy, the WFS protocol, + and the GML format. The BBOX strategy fetches features within a + bounding box. When the map bounds invalidate the data bounds, + another request is triggered. The WFS protocol gets features + through a WFS request. The GML format is used to serialize + features.

+
+ + diff --git a/openlayers/examples/wfs-reprojection.html b/openlayers/examples/wfs-reprojection.html new file mode 100644 index 0000000..ef45be0 --- /dev/null +++ b/openlayers/examples/wfs-reprojection.html @@ -0,0 +1,114 @@ + + + WFS Reprojection + Canvas Renderer Example + + + + + + + + +

WFS Reprojection + Canvas Renderer Example

+ +
+
+

+ Shows the use of the WFS layer reprojection support +

+ +
+ +
+

This example shows automatic WFS reprojection, displaying an 'unprojected' + WFS layer projected on the client side over Google Maps. The key configuration + here is the 'projection' option on the WFS layer.

+

Also shown is styleMap for the layer with unique value rules. Colors + are assigned based on the STATE_FIPS attribute.

+

Additionally, this map demonstrates the Canvas/SVG renderers in browsers + which support both. See the two different layers in the + LayerSwitcher.

+
+ + + + + diff --git a/openlayers/examples/wfs-snap-split.html b/openlayers/examples/wfs-snap-split.html new file mode 100644 index 0000000..b58c489 --- /dev/null +++ b/openlayers/examples/wfs-snap-split.html @@ -0,0 +1,288 @@ + + + + + + + + + + +

Snap/Split and Persist via WFS

+ +
+
+

+ Shows snapping, splitting, and use of the WFS Transactions (WFS-T). +

+ +
+ +
+

The WFS protocol allows for creation of new features and reading, + updating, or deleting of existing features.

+

Use the tools to create, modify, and delete (in order from left + to right) features. Use the save tool (picture of a disk) to + save your changes. Use the navigation tool (hand) to stop editing + and use the mouse for map navigation.

+
+ + + + + diff --git a/openlayers/examples/wfs-states.html b/openlayers/examples/wfs-states.html new file mode 100644 index 0000000..9a3f1a4 --- /dev/null +++ b/openlayers/examples/wfs-states.html @@ -0,0 +1,45 @@ + + + + + WFS: United States (GeoServer) + + + + +

WFS United States (GeoServer) Example

+ +
+
+ +

+ Shows the use of the WFS United States (GeoServer) +

+ +
+ +
+ + + + + +
diff --git a/openlayers/examples/wfs-t.html b/openlayers/examples/wfs-t.html new file mode 100644 index 0000000..9b6e745 --- /dev/null +++ b/openlayers/examples/wfs-t.html @@ -0,0 +1,103 @@ + + + OpenLayers: WFS-T + + + + + + + + +

WFS Transaction Example

+ +
+
+

+ Shows the use the WFS layer for transactions. +

+ +
+ +

+ This is an example of using a WFS layer type. Note that it requires a + working GeoServer install, which the OpenLayers project does not maintain; + however, if you're interested, you should be able to point this against + a default GeoServer setup without too much trouble. +

+ + + + + + + diff --git a/openlayers/examples/wfs.html b/openlayers/examples/wfs.html new file mode 100644 index 0000000..b7af675 --- /dev/null +++ b/openlayers/examples/wfs.html @@ -0,0 +1,34 @@ + + + + + + + + +

WFS Points

+

+ Using a Layer.WFS with a featureClass, one can take in XML data + from a WFS class and display it any way you like. +

+
+ + diff --git a/openlayers/examples/widelong.jpg b/openlayers/examples/widelong.jpg new file mode 100755 index 0000000000000000000000000000000000000000..7ed1c5e73c41008778b73c02a91be5b778b70a2b GIT binary patch literal 214964 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 z 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ξ}aZQUuw=x%U@;r5;EiN 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 literal 0 HcmV?d00001 diff --git a/openlayers/examples/wideshort.jpg b/openlayers/examples/wideshort.jpg new file mode 100755 index 0000000000000000000000000000000000000000..9839b82f0f53675666253eb356d59aefb2c0a99f GIT binary patch literal 48477 zcmbTdXH-*N*ftoXNf!thdX+9xLMMbGq4z3+f*=r-F1>^zqI3vIuOT!AK|nx6dX-K@ zq)SQYNC`;)^1L(i&06zoW=>X;ebzZE+1K88x$bgqW^R@NcXVMoFaQw|5x}1C0^Ixo zFlz?FodEzH9TC87!2fmJ%mFk2x5>!J$w+ULlao_W+@_=k(oj=TQL`{G(g8VGxi~pk z+1a`I#Ra)}#rW9Sh2(_ABqYILFqfbLL|#f+TpBF(-;WScP*6})QG;k`KvF#HJW~Ik zkDCqv{cR#RaT75SFW?qE5ivc{O%H$z03aeIp!g5S|9KGIA|@dvBfm{SNkzD!@ebe? z5i#*C5@J$P5)#7QVT9`d5_(bw9!WJaMiU2eUT>gOWNPtkKJ~gzCew+({L;^Sq9`bt z?}AuZ?+FMB35$SbWaZ=)6g3`d!nCw?bj{2yEUl~`**H2qcXn}wyZOHI^A89N3XXmq z^CtG~ySOxDddB!je5HvP-=%x8jbqc6<1PJ=CDds@d#1mxyiFVqxKn-_N1T8zOXGZC8VdyQpSTU z?&PYX>~~$Uv1w+_iSk2z!Ce#~xUGhO3oy`i$jk<#=0ko8sbZQ7!hmt_-Z7 z+Br0Zysr(Isou+_#wm9jlW{f_w{2Pn2rh=f0}5?wSTp^YIR;M)ZS1b`PyLkqN!g2i z+!v2MD*{aSu$e-82CdtA?TbYVdfzjJ&fcAxwB|(niJvQIWEJ{}Z$%^8I9=MrCFo-4@`rt7p$)=OumdsQnYIZq`_hS&${zGnJaEkaz6Ae%nP*~|fx`}-E(I=6NC zfj+TPVq`1nD#1U!xq0*d`-fDOb2)Eg7KrPjq?V8`Z{O;+s-v+ddPy%mKyabInyrfC zxOHQl3h9CJ)A-tgxNB!;qvvw3ad`X#88!U?Ndh8KhOL!iXb9)a(XEWZ0OBTe{ z%GwaubuLMlFt)AsEE*-mA1xupy0{9)2hfmc$ZOdXbDzq z{}jE{Yq_+qiU=0Fd*2g8htG@HG--At1aVx9Y223$cAAU-6dEk&=mhi(>%LqeAY8u-gP7)HC&{h`+dgwIu!D z*{Qcq>o2tG^Ipz?&N2L-|Ozzpf$z5P> ze>Fj@0xl-L7BA_vlM$qL?%!x2Vbj_dk%%^CDx@bWOrv!%Wk7QJziX9p7npljHvm@k z>tlj!E*LEB8}F|m5n!K~!T6~FjOM}kl-?v^-_PU=d=$$vDCgD`&b_(NwTB8gaH8w_As^O_u||12F?0%B1>V1v)Z-l4ak~49b&kYk;F+yt+^n{rzZ4b;0AxyNDU>d@WicsEV zWXI?QRoeM51GaY@@Yag|#=Z$t(RqGlWM~>y2G0@k^W=bFV@yOKa@&yBXc9FK*Ek=S zvb&tzm$?%jJQ)kwU=ebRv+L(@Bm8Xhwq`^oL3iW*#KUL^bIaWfz$l!e#|#NJ;L(gN%w1H=}_))v;42u1m`odUn<$O41quhOQ$r-F%-5s=Re_ zhWeT~LFW_A*z6oBNy1v@CbHG(kGht0R_q=ZZ{`_G!XhiKj>)h&^629t8Ln2rYVrNx zq)g@GA_}>Xsc0hOYx6&vv4pK$#?u-K!>z>!1LExP%y1w0421^m@p4!3AW9%3*2jG% z5zlOdW&vA^6C^wFtfD@Sh#&&)R|@6i#NS1}2bJIQCg@hOoM1Jly}*a4uuWghsGY*F z2ig0^P7?$Fso8;6mI$qDNmr{N!H6x25KU%+ckViUcSiIjUSdnen!vBm6DI6i1(){q zuud43HAi4;aw7%lAk|cWZw}ls&clcxM>@@>d&eUh%@fTR1YHw$jDrhK=QdC2vHCOh zyKrnQL{6i`!r)SH>i`1QXg#EH8l2*P=8r`NRrtWATx)$9@2WI-s(dqN0Xt3DV+EG> zwVhP@isv!8IZ4J?fg?6xfup%n?j+LJ5zSsa{GUx%U-Kh~=c}?zHwBHnyfz-+ZDS9} zCYASMk}=MyG!F;PP1J0knZTMj_|l1MRfF3h!ns$ZJidlqEj+$S>Ep!AlBDLHcLxSSk$QTT5cps8mT>+$-*O2Z%S{(Iz? zWEp*y=zYt`r~8pN03!4PR{;4nv1b1>w7AHxJ-Sn?SBs-M9R48)ngTMpJUJ}fP zq2f4kbGehfugMO0w|qK<7F2cq`h|GztJhAT+%xkz8iH>U2_laJU_&R^$JHakkDyVJ zg?~{7?R-6xG(Ez0@%Sf*{-dfBYHR1G?H;{QT4-0@?jE&V-Tdhz;=(b32H0cHPnAM) z>JF#QCft`=&}!3_>bkp%VhqBAF>#DLL0r?7?lN?~kCRst63i&`CS$;{-j~4>z0wYN zltbxV$A7&nWxFa3?qzqmQuR`I^=Djv?`sD*<(aOThlFkVbJ>8YKC30AI|WbODzv$k zL+)dnU`!(+j7QIgxl$#Mh-(EW!|~WmIKD`HP)gWG+GJO-jg8<5snVQGu_(e#om(_S zKKgM|BFbD(TxT(~YejL=CV$#oiCRj!S{`s>T9}w=#ObPe=8?Rad@>-KZB??Y8lBXs zIBETE$7+zL4FCylVaHgz*~&E%`KW76BHN^C;`C)iNe2VB*D}$zJ~zIVBi!0nNflyD zoCu!uSS>E9JqD9SO|q)5PNp>PPe+X3#v(Z?79pGHUyCU*y#kW6NS}!ocm%t19Q-+F zgE5&zVp3rF+ow~9G7>Hjf*EU<-$*>OOw2psIpi9r^lI`nG4()}OK}jZON{( zPG5!tgZM6bu9*a!uD4B-C2jyzrp@$cx@3k35m~Jb1Zytcf&oZj4Iv_~ME`d67@9AX z2yHcWhw9q3RnCh^h&b*|yyof>{-afao`q;~v$AOYMTjVmosdH9uMbeqR`*!}$-{`f z734_h@s-=t`-pF@lKn|V;b2=Q0jp!KM4s#$z}LbIy>-FUSe#aRekt(w>jB*7YxCSC zs2@TkPd!8%%A;+MINLBt}IU`90_c;Br`*SOE>nh3-?TxiAMg-T=ZZT<^m^ zu0nw3UHUaXC0`t%SEs9jKIvhh zXF#7i-}eLtV}h?La6B3jN^Nspr}g>8S(3>&UFGTdbTTs}c*5c6eSN=;aZpw6OaS_b zjqB<^!`vX5c52%9ALBWChTOFK+oS3T<#6Prn>D0Fn|gPJ~~FF zEBs(1@Zzu?7+ksg+Caq^cRwhCGyS`Lzit)(32OKRl>#aD96l-1+Y$McJ$5Tu0=Jhu znxuLXGX{1+bGjZgnGJjD$`#%KEZ8G=sS50OghM;cFUP7MWQ7@U4u_97VMDxi`Ktt+ zZvX?lXMGY5qW32*rB&N&RJ4Ah3i z2&FhzQV?;#JKIO$@-*i6&x#P|m7xGX%7q+o#X>y~{j?lzS8+0xDdzGy79E4i;SYV}_ti*KKS42hr#@>@dica=Qz zXX5_$)ctq;(ppt&lC36GkeWiPp@c#{KODw{r;lWQ-0byg?4jZ<>%jQH(w= zCmq<<`9Pz)8vjMf1k0tCqh6L$eV^Q)$3?JO05|q@GOBzMNfv>z+ud%X80t z)1d0BKNj`-u)ysc1x=r^teK0hWSRDFB8@DBAmNde-08;AC$K^RRdSXb0n(3*aw=h-dfpb7SdiJ54KIRojg}MRProD+|#!BR0kyA zFNa{<16cn`E$J5d7BpB?iB{5n*mx}0|IeJRTCxVsw-10sR9#M3R`$N)8P%ADA-?ro zgY)4+yH-x`S{-zS<%^7OVctoX1J;6Blj2y7yvwG08^79yc0`{|^;9kSrT=8L8JX0q zN@znSVVo<8lVZ6v3>l!O$t!MlylusvV9Jm8JUxffb+wFX#9=D09+59*3KSh_`IS@L zEeE$)pQQ?c8=3Lo;uwNERa;5G1aSxlmUOoW{MpuPl>vcWHZ@~>3^2uQA`naq*gAlJ z0k-e0k3}B-=ex7DvUg36wzbSgl(@0ZD&Hk#zWwVYKVzT#jXe3#_|jX*-l+KoK$&Zk z9F_&~(!K#eGh7z*t5FU4^Fm|agRWt9HaaM)k7mqW|L7RciZ0V6lT}avIt=B$-^U-M z=;h8M#us5)T)1u9hrv!R`bPHwEfx%-rwhNBX6JNexTv&$3?_*E*a7*TuQV|H1V8sU zL8<(FI;_$V6pQ(J$m086&UBv>|9JQmHGH~K$nE=HBT8uk8-V@bi7P?{l@EyfOrKN5 zRW}nNk@JZG_VvVN6D-lT#VMDK?bNzDRxGG{GE(ALh71l9T2~t$>{(3TmxF9khfKzx zGU&3AL9fqEzFnBBh67u}HXo7BTo&ruHZ@8(=fB5a34y+0Q?TiB6~NY5v}nw07J&#l zw73;SxSQi0D$Aek+$=^MI*9HylGxz}6-mA6gLe?CCeWt0#5$~GLUF)_hUR`>Gw(Pn zNJanDVd)@xL9-9EiWVp0pbdkondwC)N$O?!vnrak1y3ZLtfV95K6I%x+iuvzr33vE1uU^8LY2!r)lR91`=Elr!t$LO0t&UE~imeU9xw=*QUP zU=xd`rCv?lsjSQ==s^t}s<6uy3qGqW!| zT*BmMlfI;6WnXNnD5* zJ%DC_6j9nz`U~-9balI;fF|BESZNsi+eEZof1&qW#fUV}#7VU7BDtEavcbgZuH&i6 z*KAE@s-y+Iuety8tISsw=G-wX*j=Axr6k0go&T3Y=Yff8VgHxxqO% z$Mz@X3KpqyY>&-!m!yEvDBl;Kwe5TcX+ifhaRZylk{k|GcTZ4Eg1|hJVRn@4ICCio z4fG{_dvX91F%&`%D^d4~FTyd)4J}bUA#i_8D;*ltZ=#nMT1q&ZYNs@&VehUTZ&(&q zZ)GQOR*92_4f@8sMQ-Y@*4mpzlpf-^f|=p z`oX+~VVJ4sLd&l?=PD~z4W)RF=4yd&U=UwJ$=Yk$^b$D;u+WV@G+omr) z&Aszu}PA;ubggCD;WTW&^@ zsmACPG>;Lu1hOkQGTAn}$#F#G*_GPZp+GfBfXp8Ep}12#iTg8!ij(QFx4S29&d<5{ zhu9r2FRnAv?-bhn)YD*r4JY49FfY(S-}x?`M3}G7XJykEmGu4lF+?^=_OWV#HXdW%FtTv` zT`C5mUZJt_Z4+ulaAxxUxYQHKrhoJdMuTe+y?TLpqZ4y((!p*P;x_`|Qd8~cG_p}3 zjNAfk@x(`!Fa6mFdWQQh+$C9{b}77QbAdVHnQ>V?pNc}xo1Uo#Kr?R1>|ttRot5B4 z4_Zwfw0!kCAO@mI-BFB}S_i-&t?7vC;{zc)+8>;;Rbgg0w{OSMn4fLiLlRNgmh#h8J>r<^c%^wgL1(saE7{+-ZnJ(UGM$IK z*$a_j#GELKPbG&aRPRRkL-Rr8)3t$vZSg1GQqVeRo8;x)8^9;+S56#uW8;)FBEqG< z#s?Nk>BXFVawocoaH9cJ4jCOCX>UDmUfawLXo#K9ZAd>e@H zA4US`x%pGm5VKW2ixq<2vs%Vsq9u%#Jo26Njo+0b`&SJPWBohJ8fQ7<3swu)O~4;< zY}PK(Dc+CK;$`mr#o~PAMDOq&rEJps_=?kl7zF!)x=sr@=VD2Iw%o(k)g2;WDRRcb z6Z}P0KP-6au)}4Y^Y;idRkDldPc6)(2VX)|SY`ITS|7<{Y*Z{92elEq3+h+iNZ4b4Bn6qkb{{7%T;hW=_q#`nk@`4Hi=Bxd8qOPM$Q5E@lm{( zdP~etouh_~2tGx7(fSUMZ>kahMfbOZvx(8732ER-dFXsaf=4hO;2qKAu{P2eEtv3(6<3aQj)y!p!I-$E zoHl((i0G2`xG32sImeceYZAmvq!u)C3iT4)J5{h>kz7StWG}mOJYeNF3aaa&DXuBe z?6k^m>IinuR5=DvuSUUFV8khOOq_pU`);fxgn~qZyN%uc@wr7PZaR-`+ib{6QX&Xq zAP>$SMJT?8PUmCe4Eb7wTp;h$r9Xu2qJFB%FdqgHxZnsOzt|OIk+jM0y>o?74ADha z98ta5py)=ZS+ujt5n(3RHL%ZnHJ$or-$2+A_{}cjOQ}8tYbl5ka}D0%dOC#eOwPXB zHLo@3*MV0k7yB%)K%X3n|G1yW3AzRr=OGwPPaJXLpk(E8&f}`fu#ORYRXjM(ht{Z_ z5F984ED@^|JwrxwNeRM1vK-{w*WkaM7~*F7{a#B3EyG8Wr`qTt_MUZ$Q4oVtKq+bZ z$@#OadVqv+m=@4eJy0McYcF18AX=*U1k@{oQ@^eKGrWpM6YGAxd0qkj?y=(}9;VvM z%+W8)sT|NpajPXhdEtr11APhdgO#sR-cbR7;E-wBa?XwUV8%y3CxrdQk<$x(Pt}Lt zPrqL)JF!<)cB~w0)X#B)f9?#UPU^Z#W<0ZQM3OvOH0hkS<^SGPn&EaoXPeQc)yI8D zOw2qHZLew34IuCi?1lNj%7FoU1F0sN}OCabqN5&I;prQ*xokzB7*&!&1S$Rh=@3TXPv-)vvb_pdY92O61S zbWKgVfh_W~2oW!8Ihu;VRqO}L1C-R+r*+3l4^91YCmE{rFVx4q;$v=8nfiJ1BFmL5 z)Rn1ba~(WkpFwm69X-B;WXCIx7jkbCYvRrAhO>4{v#$4K5q3p+=G_Kge}8+}8Ky&g z_A@uvDe-ssgqIErn>J57^~7`MG_jb6JyDWhRh!RO&rJPlYU0cr>wq?){bHZHa)S%O z-e=B*O!%FLBJDly|(K)E_^BG`HZV%qGVw3_<`v?sy+02MfJz_X*eIZ}Xx+N9l?$vx0SjV`DZOH9 z$L8gD=A%ICv-f|jlqFwc9#n&y?>r1}Da?eTHGRFD)KfcTlM)PdDypBm>L_6(SE&_% zBF5{jHZco3MgpHC^koO;*!N7O|Iubx>TQbivaiCo5)8vjs=<3B!+?T_n6cw3Pn_^e zn3|wq9>S(VU9?E&`wE$43QN4Kltd%Zj1E`t)&6y(^`VP7!%I`P8p*uySJUr&9z8~4 z7;Vbl!c&zbh{AoxY?r5uOpX)=H=B`X<^|^740J48-jUiv)?});@!Qcx*_6XEoy6kt z34a4jGtS=GE+2CznCH?OQYYe{!G~Ij)~^niR*kYOc{QJtzI_?+!~4uE(o35vC9Kl- z+upl=4r}`|s5mM*KKn8pAhXO5b_EQl+#v zIb<|L(-|E{s%fmEy98j@>Mnd0Co$+qKmiW>eV9LS7^(O z8$XNaOEPXgNugdl43k1+$V+rj!CwqCykTq<)t(Cz2BL}m98X+IR zsI*@!!|U z+Lm_#q4S)=6vhg@57`e{GPg+OzY=mE76hK$wM?imGSMRo=r~v6LW_reUODG#*&Oc# zWpd<52{)M7bL2=Hpi4T$2}Kf}eNBM4YsYCxCa^}b*~U=GtX65th)E}{W1N)b+}Q24 zxKKwaSp*!gN6N$3$b)*}C@)_`tnvm)2;3(MGSu&a8}jhGrnj90*$_5X+HhHE` zTFT6kB-B~tMES(E*;=37bUDs;g21D*(EY$RC9`y9c?-c!&3=cxi4kp!$Zlcs@k#r0 z(`IXD;qIh{A}&Y0riAfXs#`4_G|-?uQVH(!FgK?t9qGCN#~KE`J0UYgo|#9B+X&l5QW@SZt0hX&uLbIu-pT(4HXv@8EI^6bD0 z?0Ws9Y~K>&R?LUgrImSMbT@#f$CZBZk)#ok64ZJ2{wCL|AIkQD zT_p|KjeigS@$bLHMV$3th)Ezaw;u9Q2(Od0Lnn(0b z-T;(nzAayt7nUg+XWpr&8Ht75m4~Ko{+k%#XRl-2A<_{mjhqrldDL4#CEw4@nc-0S zE`TwQC`~aalN0PsQ>I7b2Lz+ossxi>(rhBclFWy&7_1Oy;VCgG}b1MT|(mr zegBaB6+GU%@oyiXg}XL0RSO)QK|?Q32{VMY^&gSt{pDzx`TZpFG0S;@h?h^!RRxngfEpW&O#0Vx>4k)3Ev0vAk{2Rh--E{(Gz5T9 ztfY^ysCTJF1V`s6WIei5!r1KY>D~-TT5ROkeH&Toq31>A(Rl)?(p19S2|PEm3AD-- zZ(j9Ih`g+DuPc4W3R;NXWqZ4}3dR{v+##bpb)qTk%1Nln{dt%*>L%OzmdDm3YW1slRK%Y)7|Ps6vi)#6o-Hq&%=?<|5ok)T&f?|zZNIjf zb6tloR%p;qh`hkqk!v)M_vq}k_J+Jz71XBTK?d0}74<6;r#4U(G8Vt>I?`cnhram1jm5dcdnIx zDiElqOC3O=_T%Sw~?l3UC>t%@g>2 ztL(bfMq><- z6YpNuJ&As?dOjVk;kFclotydMt^Sr*{h-JssXM3L-Ss#5{Y5lg{o@Y@!luCqNf}fi zzLaHIa(n6X>EtZC&vox1-=9Ip)^#_9J=h(;2V<(LAzDLUS=P;K)-Cz!_&`;|&slh^ zlk%vqGa94rvIkrEr-APU2>ih~5nE6$q$q|v`!cIFzcGdxo%O<=C+7L`jCqwamF%;v zdYhcD9#;G|Q!vZ(rxta^?7j6m5^=~!1T>r@bCf?TCQpAa`sz#gvc^UOg+$K86A>3asIAo zFUG=PDc6$th;|#Hk`$^D@Z|Bnf&8xd>z=YB!)=|oI#QuqaZ*A=-DrjExLv^{%rGHc z=mz6fODYF1$G0M5_Q$}lu)@)<LS{0ri0C&H* zbDLVIZCH##+2dY3f$`r<6(EoP%H4b!JoSF%_oH-;y5xgZl5nzIEc5I56KA48FWO1} zq79iDH+^(QHWj9e-!}#7SX9 zsb=L@9d~{5+7bO5L#RK+*s`YF^KXXqCu9)w_oI-uO_C}8=Kz0G`FRvtjXz;nuLg8V z%u)H_dx?i=v77cTfHd4}RE|OV91$ZcLz`eJR7f86G4PVcQcZzWH8r(XH$__|L&$YG zosqF``zM{_uez{SAD29|6idOjYnF#1%``6d38(1cDmL+t}Y}`R-*urFGXCkcf8g}Y?_bC!$ zPTOuO5%RO*5xa=37($*XB=1Vg&Ay?@W!;}+Uf2V5RQ&Nz{}9Z`{?c5IBNeXaJu-gg z)in`$Y5EHCMyG0WA#M0>aPbz?UucGPhxLqT!vPGSIv%{C6oymA6q2@U29+RPi=028w@|mBWVo}DA7{YWEu0&k@E9?(GlWxW6 zxg4+LntX}KZ2``tSq9ax6k@~?UFe9{-RSO&LGJWr`t1=#4W`yxt?39qYaFx?m^$Ba zCe=d+2}nU05(;1oQA4XtDEGNN@6iAt_qlh%Po+-}+=5@QW6e$vbH#>obop%-V;IO&D4bb7VXor!9O6fyDEptwtjz3 z9TAdbb#8fRrT*rGb?Pm!uN6d8;3avD;6e+|uFm#ZzfoJ}f&NN0vz;B`SbYY*O>0G* zz!}T3o$RK=7lvZ^EGyY1$)WVD8@50W&q1BAd>VouuCdlS@ zpYsK*l;;$RsGSYPK)mFy6irUvrb*~ed@XpLz%_L#WK;{*Y#&O@AQ4%+tg>A_1jl)t za!JT{j1A0l9c_s?$?oXDEctyuYZUf)tCJ)vJ@Ut8s38lV+D>8b3bU%5Sn&Q)%1}(F{}jH&w1*=Tpk))JQnRD)!cs!Yem9&feGWRF~H8 zAm|H6%Y`1P-g~PYAY=Zu|L)M*YVx5o4xHJXM<*izPJic*~M8AI-}Q~Dq`UZ;Ke82NH*iTE3^-Gy4&O;AoQkXGM70>s1-uMqzYaBfQ_ZRHF7iYsI{!&u75E~x8`a}AI!U&t z#x=%LS*V>*hVjUk6Nl5H-;mcJVgm@(fyfUD5q!%9da{5^)sKZu9vhz)ic{hBa|T&_ z$>c4LmsRur^$+I~*bXJEM)|`H4B`$$sylg-9uj)V=Pu7Gd0S^ex7U`&ezbdWW=Lgd zHBZLPs0{UxUa-5hoza{>D{>c6pDT&F<2&yTMa$cbusj>{(K23qqI$XY9HVFN;X$Tz zcy>i2im@s3cQS!@*z4Js1DrmtU90~5kPFU-@y?rpti;GS++1tYE1t@?aP+tvzF+S1 z#y+G&xyT@q9;+~)M_)&L1C0Y%JSRMLprB+q0 zw!#J<41;8qqH}!mr%Pr&3N(wU)jtRQiI1L}ERC5pA5H;{omxjo#SP9C z?SX}Mpd#u;N!b;pjXILeEuGugRDI?uVw#x9okQj^oROXfSl3IQiRBiO7P_9or8O$d zR=9k*_0onu!^kA(-JiF487%k_$Y<#5Yd==IS1+r3+{I--;X^Xlvm=8rO`$m#k*L9K$nM zGFoA9{g1)Lgtj0D$lGcLp1Nv2Kl;MH4+Ez(9d@X>oX^(hW>h(o;tSO4pUf1k@A)2i zcve;zv=R?gt7B33|7!_(SvG7-uWH>&oR~#i3GQ~3xZb}y5xL-;;mQCnp8(HhTIe6z z4Ab78h3J%lN}qhYz<&B0B#;nEAcLvEFM|yZ9iR=?Eb1W%jykJFG?uRW0Pir*vSN<2gi1RIyNW2%^{I5)Uj%vBpWlgfUj`qms=f z`EkZV%{$y^LJLrw6%`p=_#Zi%6hb2!^TuQ{KTh(v+^e>aWmmtm^5jTc%XZ3?>8)#} zzp>+(eED$9GZ7ID7LufE3}`@}J1%rUOe;s)Xil$wGCt;wk87_s<6?fDdfrh%>|~~d zbu17->t-Cym*O@&!DAs*VI4tXb|tJZ<0dDRfu>d8rEK$|Rp3h0o~V!?yo3o`&T8@V z)`vtIW&4q2O*H3yY*+H*3cy!7zGmXJ;-=fHT`5Z*B7V`u6m_a9k5@pG-DP=fx8}%Z zWcJU}Ff0*hoLU7-n1~2t8RPn6n54cxoa&$jn@b)@2)AIbqO#hAXhW+l}Qmkmg(bG?{_B|Jy_NAX4n!)>U(%NZuwhe1qttLL~UOsh#Z=C7(& zi{yanHA7K?_f#~#{M$o^a-y!JhY7?X>`8=tF{JXhA5AdB?a3_}U+yPpYbf6w847O6 z|2%uqYsnB=0dcjiertKSG84?~e3?8f;$+1_#mgHRK{S8+c$Q)er~Bs_AGIMFj{0?I z^I5%NWD$Rft`3)P@bRhHufJ$xJMVRc&h?2t3eI9eZ?&@~d+EK%&DuP=e*TGOhIGDv z>GY#sk~x-1TdL9mcWwaQU#}YmoPwmf#3C<^BP8);rHnmiMmbh2XR7L2$JY%t6FLHP zB#F!u3Y!ruu_{YfZV4Gr7lwI1g4?o7N2vJGud zH4IQ#*rH-Q8j(dmE$`hcKPCSFAuwy2^wI<;# z76y2-xcX9OExFMhfP&lZ{m|5YoLPWR&O=^njL2C?e#=me7bIv5ycWMJP7xGMw<;ok znWU-5=dQ}>N8ao_+j8!xP--wdr#Xwes6N8YDLcn+7FnmL()-s(bR4wi|J(4+@qKvc zq|**vfYAN32%5Aa(O!{|=Vl_g3M$rm-z_`3;l-g@BW zfDC=yG%r=(1hSx+?`YHDu4;z5Y~)1l`s&|GgTA|DhcYa?oW7TvZqYFHdrgiB!cSsd z7B6Fg+dur=Ri3?hnxWw^xDzI6CU)&Glc~zta_B{e^){V{CA*7M-fv;6gm}+^^BOsl zV1EKSx>~ZWUM4`ctN46!a1U00dxdR%soWCUCTnHtCu`-p^#mmDq8iMUg5bLnO=N2N z6Ev(il(4MGblpDLw4pvxfU449xwWR%s?07VNS=DW7H*NwEUT=>yL>>%xf{N)84cWX z56x~-mu-S1BRZC^ncn$)cwZz-dC zXa4n!HuVN@Yqfm}P2=@?S6V_%KTox%UeI_56l)o(9pbL8W94THS!-+H>u z3Z1;qp!%4kT(u)gpn{+f-5~_7ey7>2 z*bKyP^Z0YN*pop%3vYVhUi1n~b5IElUTVoOF7{%Dgw{?S4_D_BFsPm0I`#y~({yIR z!>XS=qLSEqsZGN`ZKaAUx3EaE@c*(sw8AwpZ&Vkq$IBjmG-Tjj3!e5gx0%S4WP2bb z#kiD^j5F5%z-X^)q;PMX(NqI2+P?2N^S$N6<_qA9F62&+ul3hBx{#cTmiq}mua-H@ zpV#-@S|vmx@dnMQO;TcxWz(BB+LKAt)a3QimUn1T(4-d>D^6cDtMn>$UZKrWa8v68 z*Nxm$<^xj1;tI=jYwgpYh?aQs+HG)tW#^ecn8x3Uxu^QS<>UKq1y0+Xo^te|-+aUS zQ3(GGArdZMS}wY{0tYe=Z9#@IZ#!OZ*J$bi1L|l#oIIn0P#*oW`0PbTQmCfQ5%2Sw z&Ni;b|CFBLs;Ft7-aHtEJEwGdpH@%yxW%#G-bZ9WpFQb&S8B=^>4v1`YTd5^RBuT; zxWTEl`-gXowjaLTlb^Z0+3aN20dPDrOxA`BGyB*tQk*&xw?`LB9pf9HS!{qZxG;qR{cCYaHBv-Y>oe4tAiKe72&ew1R zEG%M;pcA~j0TeV?IrJ&M&mMUIegg%2kI3dpPN(#a3XLcMCgQA!q~y^grjheG62jC( zC7JTa<#)+RBKsQ&++$o?ud`p*xCs9;oTX&7wu`M|j5B?5t-!7G=>wLHkfh_+54}6d zm)a=Rp0&J82!2({TW?L6!17ET75K7xXJ&y7*^9^D0WcrFIg5dgA|FT+Ln3cxfcw< z>1O)5p5%ura+Oue-z-iq6&F;3RW&Mty_S^aO ztLYc--bs?%;>}ptzLyI^6JaM0=H(0M9Idmg#Pj)SMvWH0qIvh+O#y$(a&~D zsUd#wL?v40ej?AGYt@AKu@4;GD*0o7{+V+dQCN31Kgn&fcihlAE=Vs$1olv9lU)vTV zn9cr_jt4CrmzoOVrgk%C&4-=ryj;T*gsyeklpecM^CJnLIqN!;ZHynD>&mTggn?!w z=~lw(u)Wr@65+9}N)LOhu{?+HY_rxIz(=ihe5G>l?_~Kslb`1W!N06}<3VcadTc&m>2A(w4;ItdS`016XkOq6b`{SayB%`5V%$GwDh}Tx!E8L6)fW-H2 zYea2O8adl0{LG1hQ^xQ&Ha?xC;V=Ez&3{vY>G6MAB z82>=)r9F6AA7`7%1xXD2+p{-du}bUp`x4&!M9M}mQOm0vbgA{v(%ONK>_Xz@L5p?W zl@Xp34;6`cllwzqzB5UyT&-U>lc+MSafnx1Z!Jxp)Hiv3go;f&H|lX88;YZYs~r6E z%gb1Xc}enrU%9%c7PD$Q^ZSe+%b!J6;Wpr#<1+UGpTW3?E0%pI2#=FQ(ocy>cu05Q zFG(%mPYa`OQA`wiicmlx5>Q?H`WB7D$N~9IE{PL-S=tMq$MrM$Lp{UwV1CEc2t%b; z<=r%;2Obvu1#j8N37%YGIpq$k97zG$)QF;}4k+)rEMCli_2`4Q<$Q)vegv2x=RtEiR{zN?pG{KIj~Hz z5$Nv};hbkXiqS~zxiY|qw=)T~1C}b-oI&Z!KUM*!x$C{=t{m^A$OJDilj`o7RwM8H zl`DSa-5NHWGSbnl;oKB3q=4xccFPz-ra$v~IJDkxDuUX4;WsE1SQ|6_hOjZ973=c* z&G(>~w-)dEckV-3!KjAx=Q|x~Fe90FA7Q-l3{r0(WIk?gp3D~fds7l_dl?ThsvawB zVgU$FXtjBg+K%|d%|HVa$9Smm?k8@`HOnkQZoI*_d$Hvg@N~YtMH&dPr(KFNtksot|_l@%z zk@P?w-h2fXN|+WdPPK{c%f3eP53V&U^H=#IW?82^H-Hf6n2g<}ylkP!rfpKev!mn+ zLR+(2!&6gR)(zjX-}#*>Fz>OmUfuiC`uRmoh^*!7mMc+1J1Ub{I@WiReKYGF=gTYg zx=%z6h_wW>86Cb23~muqr*>@H2>ZV5Euk6j>$EhtbrD$#I4HZDU3&KL$rGPa#^kBO zb?y7nlAZ$eSIgbd>nh~Brk|#5-QKrw;4uyCwKzY#i)?Js)Jv;PxCu5SX%adAsv^VF z{7$_r(U^$Aqenh~)bAd7j2d5OmqW`$MT|!sSTiHN$cy3|jT#7@N>{3tCSKteg^tO8KZc>|LQ8i2 zZ9lve{OPNkI!q@mN~ggE9W78Y>via!oL12xjWroPY3Clb8Ntu>tr43Otuc-cX~bff-t}mfH#}2G?Lz^c1w26RG8gmW zs_7GE$V+pIX==KbasL3zS-|!{O<0aSJ}!K>kpBR;{uP_86|qX2W)1XBJ)^8>&f^TB zMovXbXtz%e+ly(^MI19mKwBpK9*N01$Iq*7}BrsjN?X70S7d zRLv9Z-GP8`N2UgQ;<}{yS6kqvlW`%6~U(td(>WG2N~v+NORCruoF^&=~3>b-Aco_QoBR4WnKFt+Ncgra>GBB zILLuL(Y_tWwzHGn{|2 zoc^c!()mE9ZRAHI)k?KIT6tMw$lFFpWg`Re>r+7Rf_B6Ak5rT913#bTP0LLLmvWL7 zM%?2p4ZFP} zqW2#wTMmxt&|-UbL(j|?8TQ6M&lNmu^FQB^u02$b!~?}sn#Sfl4=^`yH(>rpnyH89 zsRM(>E>!km%+}_!M%XT%VIRZ`WP9-3ezgP1IyoL(vM?N$LJ#Tq{ zr5y53^OO0~$0qf`H%9{`q@?5UITSeGP*Nq5^+e-<%Dvrwf5i2vlv~|K9zfYA8>N0T z>`ACl-apN4skmS{69qrvP7ka{z?#BTJz0{9a@_L9di5XT#kGrR>;16k>^tA7d={Xqj1NvK?mEysscj>b87KTIBIa(zK0 zTxi-@L3mO_$Oo5S!G=isW}}K}o&H#2E-*4!jQ;>ytaUqB{#krKdl!5IA;;@aJ|WQ= zLeCZCWlvJvkIWjIlvrsl9#DeN5sn7nTi>7PMkt=%5S!$-C{G_KJAwDdAIhtJzr$A< zBI@B7^d*$z^cA6Pb)zZ)7O26!Okyg9}{;6PQDx3Zgd%~lrA_u|Lu4LLNVW%(~{3wA#+$LUL%1({Mro>$nR+zb%> zkH(20W>tA7W?*;$OA*F@I?zoPMNl`y>NAbAfPVmZrpcyWqlp&TWe2HQ*MH;5AC)e3 z+m=djzTzCBHFC%jo5|&_lxy~z2Z7%GP>1T1CxDoEgdeli}G#`4( zaKredMjw|H)YkVGD*= zZEP;(U*AeTT>k(H{{V@t5jmEpU?2EAj1Jj#~EOMl?~ic9Il)8 z0NFhWQ-k=_xIapbUoDb(BcVM7NuDY!UDrWDJ!#7$Db8u5nqS8hSq(cACESUOF{>%6 zOrOPBl1flyM$Wy+#}x258U1PUvzb* z=Emy=SYmQI7Enn1X{N(XpQ3I50CkA2TuQ^eOqX&mMmVYVGg~nC8Mh~gppzReAL!UW z%9wmPoH3s#*?-41LOo7Z{v%f7)?{9$p{l5A5$MS7?Je}wFD<3?;0&K8BI6%`z^v%C z#F6}~T@F#6H{8kPf%puX=wsGYfts+og}l5t1bQB7E&R#-;NvcaL`A~<;dg(toPMO5 zu!p&=4=ToQ;8p(sbdmh2vT4vrxLH_wbDGXd=8AUR6wJ|}C71v@=BV6i%N89HcLzAy zRD=0uw5~LXCxFBzO{ec*V>MPC0j*BxUT}Sw5&W}6Ar!AILCw7r630_pvU41&ql}zz ze=5>>RU$8jDh7U0oc$`hTdax%>5>oApIWazj~vcjE+>im5Zyno>sZT?%Uugx*6un@ zZYX4EPW0BuUhzUmFEs`T(p|!xesPTbNEM~0*-2pmMxCZ7peKR!sl52W3}rw)cM3@EalSoG#E`JJ5rPJ?`p6gH>H6#|6VpoBQ4-$X8WMy)|gcX-jRRcBPO*{NX?=HgH764{GgwpskcTx>K6BN zNM>>|y93d9AEj46VtIRv@*I8rss8cj^6N?EL=FjNKHLg9AB8z%cRwnh$E6(d3n95t z_fb}ml25%^TXD3OY=OzgLHN}xjb_T(j8N{loBNQA{$`R+TWSrZxnW>)*NSD$&6b`s zb25hh=T<-P5&dg2Yn@8$5YjE2C#prupQ}_*TET92B7EognB|Y-TE>_28M>X3W?g3L zVYbfMU{Cq$KPT{C@v3Is?q7Z6?{y$N84t?8g<340pRF+CwQU%svNCPG#+b+*zX}XY z7jaXMT5`Elp7gFu0C2hQimgSt20bXJ62S4r6z(IGk})C#BjqP8?ma3%Kgg#96uWD< z;~fzS!>H%hw68Tcy0V7ci18LmHs6>N-!+;BDRG+TsYVl$l)4Qzbe7&UzJviJa-0rK za_;>awBYgTkOa~^XB_X1lzw2>6c(PV%_&i)_eRmHHPrM3@gAF~FYg7c{{Zh4f5QwY zYfS>=9r| zp-+<(w-FyjnNB|fGf>Uoh=KjaqCoBELPzQk^sZem^%(x`^SJbt1Am2Ehr}9;2biIM zbaIFMDt(mK!!h&Id&JO_!Mc#<87(It>`RaR2nwS=hxK?fzfQPdJI1@m{yUnvAB*K& zdGK5*9q=R{<601S%E`!Iv?8BI-5LF9TDt7VYEP|>N?7ECku*;k^mQtKT4q7%UX2dF z9P5qdMLoAGkLgX2Xt!L=V`g*Iv^x*x2lb=dRFA~~_9^@_JnZ0lQwwf9b6$Y{9MEn@ z?(Nz#d&4$=Lz=56gDkWAokDnzVJtzvUMZ|xI;M$udGt7fq#i*04LL%w0k$qX;GEY} zH-fJL%vW~PeMv+7i2Z7ez7o~qX8!<1EIVvveEvqQVrjmlI#XMtDi@j~xi`8f$I3V# zrATgF!TH~5Ju`worCMuS+b(C0RL5rwxE|T!fgw2xah^7|Fnz)3Y4avE7D47r>Wdke zvi2?1eMLyKNV0#VZNb3CPwP=UY#WeKy{R`y5AQy4{?!%>v`O}unSvBm&jhg~3XN?A z!!fs>Fh@IbLH<<~iX4IvFR-V@0M6!ZpmztQR?9(exfIs(!5K$mw>ZG*Lzol%G-)!0+m;>Kfi$`Fvq8z(nd>}AM%c1PO~mK<)v-6) zc;mNC)f!6@ACfj!JROq%0QIU#gut+g$pmgEAe{Ek=ShtgJl7)%e8Q&$1`ChFzu`^{ z%-C7c%AS%9qTePVl0G?NHE}j1Rg(?Mz@xzyEds-JoWtWMnBJbci1=POL<9G8OGnw zpZ>Kyw+}&**aAaa$dVD%83um}658WCTFey#gUAQpIl=rYAF$0PNh_a5a4K^R;sYPr zAt(Ex)E~p8JNb&kTWC>hj73~T$~Slnw9L?7?mDkj<~A5v}D@)qLJ{$te|;HVQgf9G0i~UAKKtW zb9TAu^MVKCS|TXRWD>ab=M`k6+XxTGKwpghRRviy9dwOeHXc@^I*vIcarNe;5%_{B z3~8#vBMx@EFgX0G>VpK^7`Ty_oumQmGDyuxx_FXLFt!I$bIAOU^`~)Lu|w^CCWD+? z$_F_FbNSTY@R4|u)B`1p5$cB{^fh8hVTLfRJCIL79(}u-d}cOm0EGG%8)ks1J#wl~>J3gNWN8vLL4o&EaXq;>?MiQ8 zdwjj8j_@=gd|I13d9u`LfhwUD4k}z;-05AEi{g)O9Oh_VYFip&T574;)jn zLCtcGrGs#!cR)|;T7DRdGfy!c6d?S0{*{e&Cz~R-`wRT5f5TW7b01khkQJ(W5_C(q zs{nD&Kj+$&LvK63i;_J*&-m01?jsuzImpWA98=NoPHmTL2F?pv@%HY zEX8DEPJIqAKOkEk=QPn3>}L_l@|=N_ki7u>lxN(Uupb_@;M~%%u2&b=3cyJSUBrFv zF_KRw*+x&f6>b}YGzlitADA)$>IY->>G{)lWMK5BH!tP`f<9IM06$;ShFn=^dV(@Q z0PRtprlkxIAc8$bP@3ImRr%QpsR~DI@K4tn{OS{DEM=MrLY{Vv@HpDPf{dJZG=a$1 z1X9*VoqGsxkh+ZR2dVxQ8TBXTC$Ojg0BU)8^JDoJaW22zQG(d_ZUCTaMyKOTil&$F zmfG1?+*F1g7%t*J0oJTXJaQ-~>cD_T4`axnr6NpVQOM7w0P)h7BNVJViWvSh;VUn# zH@{jv=`@PwEG65o@fxt2l%Vo+S+X*q%VhfjlloFeDov7voE#B?G5ORwab>AVE1S{l z4hJOFnDvD{arLfq826wYQYi2veoAc?3c>~8JtGS5%;sU21omKwAl^g}UCNbTIE$n~C+|?-c8CShoO-@17 zllai%Q>}xQbY+ROmI}T=0moKg4u8+mo|Am6EEHqqE5OI$P^G2Gk(x;mgV1tE>;5%%2&0PLIFOb^P^**9 z0LL{UPwt%i8q3(fvhFWw+^rD0Rz7KjuVA2xn|G+|`cOd`&P7tWlJ+^&MFPA7?=j`S z0a>`T?DQ==mq^bci272Dd;T>*-dv-qn+N3b+r|L(&01@ikOM4<8T2eETENMv2pP!( zKE9O5PmWY}h-9QRz*))od&QS!Z4SJh;AQKHPCsTT#_6$@?X;*~k9?J!biz@EyNO zwFxp@k~HP=Eh6(KWsN%SkoEd{)?}LRoJ#5T&2n>tET1ZW_3E(GBQklnPWLkP-6_cY zs@C6=s2J!4YZygushgCakxp1HZwNQ{Z6fs$#qyx1q;bHzB1J{?QHrooW0n-g11F!L z6{2KVi{?LCVaV)iZNPLq_NKG$`^TE3CPaA|rvzMl&H?lSjo3U>8S-**nxaP-z!?%L z$FUV2PhaOsGVO&KK7x_elY+QEod6*x(u!$U$11>mD5fI|Z7$k&-+EkEPchA5p=rQU zh5YHkc;wXFb{mRz+E6jxj8eG66j6`!nozmzNCK1sX+Q(DIYxabxW?=>qy`&E$nFhF z6by7GhB@QXmB(VY*rFtn7*pz`ukxu>+}rUDa% zVgB5B{Y6}d#Mh8xb+i8f+Zn&1to@^=DKSH{+-gm1Z^z>3$R2XbAN_TMKd7x6ZxmWh z!p{SHEVw_daoNGoG>jvVVd0Ja*?FwxMw{LyinP~L(W2JS@)}S*u*38;=en@D$eKG@ zGyecR5Ci&(^HBn+%w^*L0IqIDOqUnY@R!n%J2(tKrDX7w`eEJO7Atdg86f`vtZl>c;<;$GEl6{=&P4~QCNug~r13q>4r7uVmB(Ky zP~-Bc`n=b}G5bnyc$%-_2hMHv7@N~_75-VOa(HW5gd8L@ucA8t04BvgFBd{F=1Z{u z0Mo=9Pv=@Nc#7U&3bZZ%09@w&hLgm`ecedL`NT(s&ZP-8xj{` z9g6^KxQ|zlu4Z3-p@-;df9)H2!B(0FAKjE=`HEiFw0rG}qkb!r1z>SQ#Ji5-Nn=8qn^EVdutAc;(Ojg_>&>8~e$j zIuhxr%8N*x{_a(7;06OD&{Q&8KJti3aoZR;uAzJ%YK|HmMqQ)$BtXFXWD)$T3$F_5 zOzvU4grg3M(URzMivd;!K*JoLm!&Mm6>w#6P7KoPM zw1BiyL<<~x6URKU$K_PToP~j8Y&Y>J+&@k;O_knqqGw<|ah^S?;uru5*HUdf;75=B znyqMwda}YhMhq^}CUKUNk@rqBaDK5g%*1O6p|SjwmCG4N=D3G&;i{mL$1XUf^?&{VMB_ znM*0isUAk04cl@%fr@quo_y-cKwv@iJ-M!f!}1RzWgKC_>*_!H)XxxU_#bPCai87* zdK2IL_xjZ>8stH6=*NcxA6)+c_36diKzkinY*WM4IPN2m4XzL4^#1@6`P8ARi7bbw z2j{I+F4+NC52(#OUn&X4am@oPJHM9RUN__A&rH){mPTN&14a~eEC@Zg{c14&^zi=l zni`R4KT1&E^;k(y4?yl&4MD?o0QBqa(x4B`I6tiexQ}OVB9$qC%2eR?CnxjoOnV=h zq>4?hOEAd(A}|m91#$qXgVTdj9m?KK)w#?}%^IJ$4o<}%Dvx$2B-4`a?mek0s~oBp z#s+%3f4T=A^=E%HyRtFZj8d>BK$^T>UiOYf8$8ck0@y+IZn&$da~p?cZNfGx=g^L# zpfSYE8)EJZ8#wL;0sJaGs{~05KPsWzbIy6s=1mP2nRjtsNX(7f)7qZA3}@HkoKJ0o5oi!+kK44^J3B5?p)_#lb-qZ`2zx1c73a=f+PJUSw{KYsuSaly-w2jC0 zprpqIr3;?a;B!v{6s%Ctq#BVVbm&be6!5;>(s4|r>{y2V)9+@l#e5iy;QD5=b_3dg ztPdS4DN#>iuYJymB}oPb2emWoku1$JFV5T?w;%m##*X3R#%oI2_%{#v)-!{(q^^nO zwy`X1QIJM`LFS-)D`#L$xIMVwepPXT%Dm)*+#FRWd($zCbDDm}GKN`>-sk|qr^HJj^8gLpDLDN_B#|qFf>fU4gIQVbUB$t{ z4f797R4*t8=7vLq!3&yftRO~`OOqHJWyk`aE)`UHjHKiEPHJp2rSg;agpm# zoAr+?A?fNyPv9#l=aNsnf{eW#Y6cDLO?x# z3eiC=h;m}}JoWda?^30_kH}mPQ&TON1NV>lQ@RT_Q(f4@4tjCkrAv8VqTqkE#a&fI z1(8$%{6~y_CbKVmL#Nq-9)C5!`>}UFQ&klyY>93$-IoQbftO-^he}IZ>}eqjPA_+@@sg|d&!wfy89^f1n~`^k)yD& zH?j_rNOqzhe{ag8ypK}6EiLuzYi__dmtems?SgUCdJ&rAEVZd^TWe=$ZMiyMhhT zxRMzg84?~p16Pcg9e-NQ#otp@)rlO)6ouoAWDMZ?)Jn<_2V&>c;7}#YV3UtiNiE43 z8IY;&xc*+0B=!c@;<-j*bBd1*{5+4P21rCAR&rw}847Yg3{xk)hTb)F4I(k)2a2VB zgugH`xl+Vn0iK-xRK?jNvLJFta)bl;{{W3fH3;Pj>aMIhs2jgiN{rJlm_u(J$i{w^ zc6~{@=s3peMpLg&^nCarV;w&5{HWg|55M)>QL?l3k9L3A&S~l`1sO>Q+=21PC;W<4 z-4PqUQBkpUC2@n$@qAI8ycR%`1#dQHoQ?YA}5b0085PUBeXRjIhq-9>uYm zc(!rJ$~`&jO5?L3$j>ypy#+YNRN<)FJ5UxGiZPm#%Wv+V%9CLor~pVy5HNF6tSQdq ze0uc7L`x3zypfg!ttK>2+vt%l`n@r(s;RDb(fhS^^LU;=U}li3;a&l|7!PcOw-LPZ=G5cro~MTyQf(E2$@XF$`4tbv1I+QkDr7otc5) z`igc>a8hS%H9NSMb2NYtRSo>A^^UwGO!<*X+X79b)&`w@=Cea_Kkg<3D}lo2q4pr- z@~Rhlc#i5sxQPt8%QEr1JnjT`J#$z%Q*V`{Z)rHIrg{QutBjcDU-w91RwLEn>GqPI z&ZJkFq&`!A?&9J+e|Aj&06f%&`%{A^8`9u*l{5N^hlHf|8pO+~>1InyzrL1pk5Uw$ z)KqPx>C*$75~TkC6imSW7(7>mdNgt&{!Q0`H zUfwTwophcZuy9o_t`POayIdc@imfk&cOTu|Tb0L8Cujcv6(Poi<;1j z#F5SSXSIHNj1x=P*IP>A%}J5}0KzSLfcb3*IqMVk{2LXYKZms_L1S$zk=JVEeR3hN=)K0o)DB9}HMJFAb9l(uIG6Umos=*fyTF%Z>>Z+js07FOCWWFeeugP)~#Q)n7w*ez``A5@W!KRnebJS}2D@~>_p&u3L{@TypD3&b3a39(N3Y}7oj#wd*}DN}Jb65n zjIck5s&b_B-0ff%U+&{?KaFav`jXw2#gDPWBjP#6K->dmgDP<@| z#fD>*qxM{k(*2n8RLZj>4UTc1pNoHp{Hs3K&9k0M z8-caZ{A=UNE$Yf>JCn4~)+-@}y|`uC+b2^m##MpO`S?g#TCp)3g$6iEQwGmbj@ zgZ%{qEhNa`6kv1yf1#-Zde(TiP|8(~0|Sqv6a7shEyO_-Icx<7zeOYY;(#>6(}UJp zUdXBph%=1w$NaP1{PHSsdlx&2TxY2CP{;H%Xa&&BBHB}FuwBYm(<&gBq=2wKv8!HCn5OegV2dX-QTiM#l zbRj`1eZmGlZr@yW{3%(ol#!dO+<$3muxYUz!yAM??cDwY`qqxMt$$|)wzUiA737hS zi`$P{&C+dzddzCsFB~3YpZ1&o0Ib5SYQ_kqmIxwey}bYuc?vVz)1_-=bcJ%=uC9xr zE#9C5yD?Az=1d+ceJbt^SsG=4#PP~o8?%-p?|YnnRf{58i`Rzffw!=?0Z_I#x##sK z`BZlPe0p`hn{07$e0<3cakV-R%mRLtoKqdm`((40Zzjg^8f$o2V;w@XADQ#q^IKMM zrLDA9=zdgOWS&Xxe>&s*H)>+mu7>c-0yKMo;F8$>hPwrNiA5${S#etHO$EyLnB8bkjijDu1Ql-WkPpFnYAh9;2aM_ z%~g3GPFczN(|?r&VuX?^>^}}EKAEK>u?O*_#wvsv{c2RVmCp-->T1Qj(PtiB#vR8r z`R*fuH_Gc8`nkq`4)m_?WQV5hk*$)CzQms3RLZf&aEs4i2Q`Or;%jjrhR!K&<~P4+1O8b<(0)JQD@NB#va&+3Tc9Lhu^DC_(a8f#YF@Rv8EIu6pakS{vnz zPY!#ej6Xw>U39BmS)8>f>vVA|5x7{^2+K{-s`nnXp=;s$ox$h2SV#9`8=LwM=UVob zR`zPi0ByO+X8Xs}HKhb#{O#AbwRGC%Ng|c4rRBPSFGPwzhDg7_*2Sr5wxpppgV%RY zp~inoRE#<4#WzvBwbJc`lMT`~c1AcY@9ZdQ=+Pv#HNUZ-m4DH%mp+m%KT-Y_pLwNS z+I-T-`@i|>yszdzt#FtAD7%ti$#EomdL##EA5+xTn_r0f{3I#4j!6FixhyEa{dfoU ztQ02~xTQF~k<&SiVcew3K>MKMCaB4IZWTk@$-lVB0DU;6x7O`-Qa^IGS55o~Ns3SR zJF9=Pcs-A5a!DMlR6ZDW-T?l!s#e^F@31_OEL-FA8AqTW%ASk871jP$>AQpY(l{!= zeOQ08*{HXB&;-3m8^20ZkTM(csKL)pPqj!^P%*TRslcEI2&8a0&UqOlG{YM4hXj-S zJpTYHH%`QW9P!URs=He%;IuBIpur-5Wu#=!5jk4k#4at%rYDs4OuN^cm&Z*vO>K+gjd(lbuZ4-}cnq%i^<_Qg)2FmeuiVANUT zt|Mt%@{p^rWfzU0iZaoaTzP2a|=?aeV=ae@ga(BhTRf#?x&oD)T?1in)YE9}{KVthfCfe#$I~<@LVkB6)3r)XyE1_zjGlO?-Q|xU zI4jpGXxs^Wt8%yiE-)9kcc%j;DU#j(rhG99BBtPuhz3ui9 zOwVS+{ypSecHP#aR*A_50*lTFZb#QWX{j+ZjP{Q0*99TL{_)-VVx^BuhD88dhi~F= zn|b^?Rf!6#e5A7b@Mu|>a2V5Vu@L_NWfjXqB&Dn-BWvnf_H^ z+%pUl*RBs-Q>3|P#_mWPbKmo&sPrNlma!4T3u(vXe^E~V0ECiQTW!Xi%6jHApXE-7 zp>LWp`RFofE?|Om1p$sl=yQ=p`;T6QsC-{&4h**tpF(R+4;CbxE}*1mfa9%l556uX zOs}s|P?WTgF10TwVPBPsgs*+t#MT=f9fy22m5Y~wxAvtD2JTS3T@ zSiROy@vAo0_bm^bZK+JE4gq!HzK1oGu+*OD(N~%2tE<|P{c!Tn@e}V z;KzV}F@sg4(6rMpndMIl6Q7bo0Y8pwgpb9Rz>hZGSdaTGMQB0d+cp>%lBhfo{DV{V zS+9m=dunfVZq4CaIa_pBazuNB7+`(+im5MzZio7tyLms}%KrdERAKP}WjW_#K&iGUW@W8KZf;4f&TzU5&_*LQ~GA3HupAw32bCSry-gn{PA0s zy5F0hGB*HlO7mJNtXg)R(4NdGI+f$`M1IN-;gQFEu#5l~K7eAO6G#*UA#vP{lllJu zD(?)|cOwq=(*xQ>2l>=TNYi9(!p01aL5+z1Mv}y(@kAXNbY~T|R~uF)8;?K^38uZg zsnrfMgSQ7Cm38y@ddgwP+9GUqA27$|RNKQ$vF*0MRUN~{jQw$+`DhxHUqh;7+H&&b?_%L;1@Kt3>6tuyy5n z_VwbmqtmU*jmB0!@)7*8Tc>@D?a-(n-kcx3Xbm#ZkGUuP{eSVJ`z8WDStmp6!2bX- zKys8z2J6i+;fcW;agatwxX1FVt)xmn)!i$5NSOUW{*_(q?;LZnsf(aT$j5wf`qMo04T9KV)lUR|9co075s-2->qr3JlxEzS0JpaR z1AmQ7mvJ%1;yK47zTMx-qdQn&fJHRJ89Bx|&j8(=4ga zT9kFcs_5U1Sd4m#3b+{eil;nIgq5u^j8roqBAboDl4)9p+7+OX{`ES0icMO}&p|Y5 zJjLO?$NvCYu=NCcNmAw(Ds$9!HL<5_5#J~$3nnn>pVWI-4k8XJ=!m~~r5%SKy>GyO zjZTP>eb52*??$O}ZKpQ-i-d_BWd|jj*8}pdPX7SLkVTPc7F+w$oc@Bj;Z9XGM$W7v zb&Nq$+d&=J^c9hLtm&5LX>l~9;3NY-hHHht@df?&GRpf8LC}5zs@m#JX)?+HE&cxE zBD$f6OX6k|#5b|%e{R?AtraxbtgY0x*&A>&C_H7j>FzU7#o^l)n>wzn*Hh;O6}BiN zx2gRroQqIe9pJM?mog|PX^Z9qw`wPnXLt;5!J{V)o`=() zUTclfa+k$(sZ>d9Z%D4mg>bAfleU_2F_++aRZDp;*+7*0WcR6ORNAGP*9V3Nk@c*3 zEbPsBuC6*r;&YZj#D0~Zb!>M2?neiq=Zb>nVLAaAb^zcoeslDwR!l^Yh|6s~2PFRh z_3NsgDMwqJ^O|}OSY?e%8OI$|oQzd%PFTf*$^#>uF4Ohv#WrJf+xJ_do`8@}NBQ-t zT9H9%BoW5TA;D3OxaS>xYpOBU<`R~cE5|S*u17uxTIb-p%8qK{TyxjGbQmXNqmJbw zh{)vaMcjW1;5FS=Tg$l%pP9Pj_(xzptD?KPCdHH=yhdw?xMI_}IqO3kmBxnRcW5zL@xwKIINu`U^ddghoUAn;8+ zE*torkF^$IbSlX=m`Wx|6jNH^$3_7AaYZXW!@4OMI4UrHwHYM#rII#6SaQCinh9ZB zBNhq<@0j3wRGA9Ej4=14L`|$qZotpTL8(XC@qk-Bi67F2#*qtPwod^1Q@2D12zPs) zDa~ss1&{{8`WlGFQLy6~rMPN|N6vPlpwFqrF_DuSfdKLkYHNUaJc@K~%Ar)KQP_?s z0ah}~7`muEGHK5ft_u*$*p6w9g2brXp4sAn#~9BP0We{=7#OBtXDm)T;*>mK4auLU z6sasF%CuNqaKQ6G3|8{VDqHY0zG28LVhwtAK4 z`O{K))rk`v9@wUoBL^7IPAN#+)MM%>&^07^5=Pv9QhMNZqkKIIx&HuxVx1iBN`bkE z=m5#4OiAJ6+H?KgrjW-EC0SV+haBYR2lA-}(*c3B_vf$cP>VSV?j;A+`hSHXji8eb zgK+8z1W}-BB&RG$0dv??dG$4AS)^j2S2*mS;YZl;33dv57E%Z2PWBb9S4Y}Gz+vcU zW(4ptQV2r^^5jP;$yLsOl_|BITWO5+&#?S@QFIn!i+5?4{$iqFoBmDPduOd7=|~O_B7_Z(8P6HbNi0$(Nf}@7 zFG@vNl?zKUrx^nTlTU_QDIa6Bg!Vl@{a>vn!6LZz6m5*KFA6_@nRA-5=D;uuJK+BS zvN)wpkVzYj@1MFChR@+e$6~g~H*Sv36##RH!K){6WsPAVk&uVK(=_&)+F7<3rh;ZC z54Z1qNBB~aG+R^8i9q?j{tx)lxa?OjY>_;`KqGb;Nc<_cKVxLVi4}(dz`)O^J!#J2 z8IRgZ7Ghj|@N?=qRiCsOqGHks)kn-EU7@q-^rv!w>>!)SEedme;WIW@3{RC{xRq5lAfrVk>j_hj0{u}i0e{{S9ptU1Za70}13 zM;vi7LmOmt$ID!jM$I8b1d*NxwP;yd>VN?rpLZ;0u!V^JRGUk2#{CY1SM${(xYEgq zWx>Y&0}s5Xx41r^O3qDJ#1O9Mw0Tqe!8Z@muUJWOX)41!PLRGblc7`iWL3>d%HvL* zT*%EFqjXavaNpoXW~A4;TUXS@UltT?w-#YeeKwlA4~r~`852ZLqg2guCI0|isOK0v zln~!gYZCUx)9nntN+`hloPR2{ceyufW_0j)o(9L4s5+na>q;LHO5b+w2?wKBowkt+ za+1iuTpEH+GV&r!P9z`fwh!cKN|avl8mlGL^<>uNJhi+}?uMpKb~XF(N}k~6ym#%l zwvC2)qdm8AR^jm_{A2xbZ(~@zH5bseUT3bIV#aj~D-t~=K*RN@+8q|;5YXA=_f^<` zOjnyl;_HEdBx=LyS0eFEv!C8TKMJ3!N9@U>y}Em&wwJ@&bi*(?i2neyF5&qa%e&Do zEi!OkKkul>{Cz7bEpoxf49I-vHzJhvUQ z^dhHR5&OG=kF6s`E3Z{P{p(v)MBXJyph?$k@T`me+GexgNw??9c_H>z+&?3q=UN_Q z%1FWBkZ3m#pP6&@6kc6Wd#|aC`gPhLk>Zto@`w70g_7bg^_J3)bsNY2JDT6~<3D;e z{HZeoc47F@&*V=c=ySs2GTV26-`zYP$ke-!dfAp3rA?%VQ~WNVilq8oxgWa*BkLOw zKQ5o8K6EZdQ(%q=UkcwF=%oJuN`~Dm z1;M;QwntF;V}Lhz_9WBB*9*93Y2*1+O=%lORY_lwP-oB_iY~@#E9bpTk67X<1nTN| z`$?4j3gVX9dzjkYB_xfK7s%w0c%^VR(dxoIVA^UjNNkbNZ=N=HBlvOBtXt~P$!~8n z20=WYS`1|8B!5Z@Ox{=bq)WL73@v44BOs|(Y>_tB#7@8-;~-T{Z&htCN1EX>CU4!ueHi!rIX{JP77<3GOY5ZbA%K9W+=*pB zbx*ehpJ9&TsS@XHk5+FH=ibK& zwvrF+D=o}EU*D(R?cdh9KkaLK8TT8g(nL5byCfe&ison0HAojS>9_?ah{cnt!Q!H*&CZrDQ+MH2$gZYM_?MW32ctM0qY)jeuq4LKpK>Rjln|vw$RHj;v2sKBl^1H8ps%7Y3b~lW(A1 z95j~^!{`?*f5Y{yXl$>eK#wdJ2tS5JBm8Sd7{&o%^BT7tVZN1VSfvy*PP%(QRbw&k z7$HycJu3ayi9V|ePiJ-+hJIP{ji1ySp?!O6rNSOkOpG$IuT$@y!nuo|7~jQk8XJ{` zLCB2|H|9-cI6L!4a`~0HTRM0xwT&`Tw@zRk0FdQd=tgr|GwLvTYFLL1Fjx>d9P~Wb zGY`c3xf95|u(G*<#@0qsnIBw{`c}T3HjS$@n@=_=nSOgahulCN)c*hwADHy4r%g4@ zCHD>!Yu!Vh;S6Q%Rb`n*b_U2F<4tSn)&SDmsgv6SpYf>f^kO7dwQ(Lg{{WFtjT&A< zTn)W&7on<7lUsvRPhu9;J}AY6qjaz0`Fy{fud+{Yqsn6zqo zWb^nMmR7lKrZ*s|$p;@d)~Z~u;S_n7#A0h&1c93KPfgk8NEi99_*MjWneIUyYtRx` zIP(!zhf)t7)y->~I$qs8$_#S1K4K0J)OY&TQ_yT>AIz!NQBCRqeuQ7X^C?U$=fRIm!l(myS>5nty40yGl+0fpnOb#`{rLt>FK{O9IxVt>v*3azH;PGni9 z1LQv>Td)`0`u!_dqoW1KC#N+MmbNY{sYs&^pwJYzLUUHU){ThddkRxHlL50z>~=+M zkBU&Bb*pIB>-;32_Kh{9g~`l(`seyl%oZTd4-|}&vS)A0>r(_)kd-)5j2>9*kO;>qGsF=1DY7K zDud7tIi*Nh{^-xWYGfiQL%A|OhLkbRMNY7in}FP-`=l`aDk&Lz06lo31Y$_adGXl03jYFnBb87I%z|j0Qb{sfEas{c0;5V>sra+|lJgQa+ic zhbzkQ>q^0LP-EP4ljt*#)}&+&7%|2V88|sLU6{LWCnwgXjy7-#Nzb7KAH&v$G(@k4 z!Ok;Mjevr32hx-5#faMDCp<79(v67zT=Is;-O0-RI%bQ7hea$B?_Vq_9T}M5{{V#~ z${3F>KDo{h6yhKU_nQ~cqh^?HZIxMfI9zZt2sFJ0O>XMMM$H!PcmpRNT;i3+P=jfOJk`G!)Ug;b(VWb0&c^LHes^#h~V!(y1b2_pxBmp2fQT3_d zp5F6!n2N3j0SrJtPfBl|?QbH^aBx zy=w1tX4Q;t4KhV1>FHMPt&B&^KukxW^!7DeXQd4$E7)qNLDxB{A&ki)pc%=gft~>5 z)~$`F+1JmMbNmb5iw@?T21U8u8DPkm+@}O*{{Yon3#iE*u|;FMA9=?k*N$`e)msQw zD_2>OMC?Q4o`=)vR>X`?n1Lc-21*j7{#2cwjTE#N+Tu9?`$TA}S1QFe?moE~sphtc zlgzjIhH-^C&V8x^kjP|aW@qXNIQ%g{k<~n?OCsl%9Dgd7wYn>&qKN#r21FrGuNnMm zRk^j4ks8Mveb86~pMJb^-xU|mZCPa6c9263598}qqakI=;ddMpjMKIE73^q~%nRo^ zVn#kO@$t{orauaWqgHJ0Voy?O z#WmC$MDa&!a9JV_9anZ_Acp+98fNkj%fac9LMq0G9eQ&}2R&($PaWKmt}~zW)~m~j zSi7?pJxMvG+Hst5NrOVr1OZ0?RLblVZg{1MBT>3kcJu(?8nBUD72Mn7&th|rr~d$6 zlVeDQH!%T0VtN2GQB7jEck6X46)K=Ir~^3ZR-WKMO52uDdY#>AAz)Y&&``D1dKPS; zj@OuCL?_U5_?p?b)UMDCuD}Y+h=wE5oqegtrrU#~#OLT1+^6Yej zTt$Jt-{lxTi_XU1$26AOhlaJ7TTG7TA~$Xbu0T>hx=$aKc@Cki&2uqkb0hT0JP)O2 zo5`D!S00$GT?nV{=n}2X(Dkij!gpGF8;fGs7Q>Uq9Y?tCJ;ifVTA8rQ;aj$P8o|;0 zQ>keaD_Y&l2nX(lEQjicgI!|1KSEwX)&l{#<^)Vf1 zhwsMN9oLaf7i*8aD_%$^hywAljAuBg#4Rw-m$-Dx0guk9NLDlc)fpIK3ZBQMRF*9| zQ;#d>J)$HZ$bW@xwU}N+5itJpg<<)MA!WB#WsO5|f}jKR;)d=PF&D$~OA|>P(Z%T; z&H?>86Y2b`Hs;pm%z->*axxDD5%m?+MW{%!25B7N^kcbC;D5rUx}06uZaW%i+lB`m z9-|$_OM^@kOyfkSBBe`~Tw(EA&1GqFGGp@J)i^a$Z4zbqt>jq;q2T`jg)23%4UbWo z0K=SpYV2C&!habxi6k=Hw%JjT`;2CqSo+b-&>bRcueg$WoSL^DwyZeX^nnvxmVW)|q!rp^p-nImv^@4@l~|H zXNlK2$i+8ifi`PJbQ>F#k8#a9duT5dZvc_^T~ExvjS=ZSPJ)`G*BSG3wb{d#>W7HKjWHlI*WTG5X6 zyO7Fz9<^5D**TKif&5W){J+jBlY26J(G*fK2YPJhj&quqeN|Zj8SPFFR3g&8DnRv5 zc^x^YiFxNDffrDwqbav1IZU8DEZOAj;t1Oi=K0DAmmu8jKSIXPGWUlU+ z#y_o0ZUZdQDQ&~$-RN6^{OW?snUo%zPxBRH%md3&fD41iwomk=Xr9KbZU6vq2LM%s zlCx4z!ly|_Xt4Q>L~vB8!31D}I@5o$^tsUzTMKqoV#>Z)027Ry4(9{%s;MqJ)tIKh zprp~SV+FmOVk>AOg+I9(h0oU=YUm*K#bw1d1zV0_ef{a0riV)cusIpcQ+cGb%!~6V z<$>-iND#xdRl877^y%qI#_GdmJ~=j;6O!WH-%>b@i_^6-rQ&k{v0x{{6tdhu5t^(`%4cEQ*_ zRrNiEVMjkBnu}MuCec?s46*)S<5~-x!PRvcZmwLknRYp5{{RZhCz^8-Sd-M6X}}zw zYdHxGtsOe%WtBEa%24H5cq)2=DvYwE&KfvGUntzG(>|lpr?CG3kB~>{M0FcIQ%Tf6 zwDicXTn{*9Bn!aYI+69@{xx8;nGSaB#yA|;KjB}REBJ{aHzN#oBoKd)t!s#G6#S3o zA?$jJ<8VrC9cpdCG4AD5l6f59b*jSdGT0=k_Z3!b8Ge20xZsM7nOV31=g?r*@urNW zQI~w;#O(m%p$*ocVAAJ?QQI^uN(aun4tOS{Ty5dQW7er8wkGZFL-ukIv&r&~fksLE zDYII~B4y)QRQ~{ZbNuReU^)I&nQA*pF_=n(WzH2B_9fsWWIH6oL18puh zZNTnNYG;)v9ApuYbJm+b@7%d}40`jN(Qe*WcQ)~iV2;&Vi$TKShyl6BOwj)T>0qny z0M2^~R@){rc9GxOoY6)=5jGpSJq;}Ypzu16EXkGXGny+$>@qq5yK3Z~ocu1+(-{JMq@3+N4JNF^ps6E~xsQAXcEZ!t zsVtJjsQ!w1{{ZXN1G%KjFkm_ZQ#HxomB8a2Itm&D$(A_YK!i@M{_f$AUMf>+h%(r~ zI435mwZlvjHr{Z5g|V8EBV`1-l_4>?OOdX^tC?TqH6nrlR5Xrv6h{Jge*!i`X9#zv|cNsXPe#&`r%mPt}w zyr?+P#XeROMr4O0 zY59|Oa4Frb1!N+}q^78hiDYl z$<8x@$@Zihnec-rw;8KZ`O3SPBCk0l57blGm8g-JysW!35^xnxG4GnGd!t!hub&LU z-r;%PrzD^2`3ja;-)MODGOtpdN7Pdj?8E^hHcxUm6s$X$4+Y#3vdW1e>Aoy{-&H@* z)NQAkRJYjM(6WP!*3Xuqi5NWN6=%$g$_NyXQP}&{ZLqC#2H#GSHp;{S>{#O!p$(vo zyvJ`cUd(zg(yi`|e}{J+%`lJ;6ac*kT9qMZ0ImJ z10U^rQ^K+6571I zB55s2Priq69=^4o9QhQ`8}Lr5q_N-(n&kDn`6r#S#1`c9&~_EBX3Q)z)MB}d(pv6A z)6$a*+^bI5<})Bh^7DG-47=2OgkSZ*q{M6|<(?%NzoD*!htY z)40Y6{6`gx27a}zr3^tKJqfBvO`YT*J-SN-+m+B^8T0Sl_2#o~%+i9MXUmcD54%xm z;H{J-4oqXewMuiEQC4L)bW3RF-rbjZ4BYY1R8GvySe%pAlpZO$H2lSVEJGw7W_GV5 zo&{UBOJNWX5%U*-%6ij70n_PDMnHN{+qHotnA!Bva7?066Oq9Hkmuk0YdS@_wa=Xk zU>t8zk^cbJt%jAQ7$TA!#C}tPPh&|*p|qaHLfuCyZ97>{PD;4DO58Y0h+#Gw3KBD zU-w#~YYhF_P=o#9OO=6GxI@bipgE~xy8z>$KD6)b#yuoY){tp$pY_NG(9vlRLgZSV z)DaltnS^=CUZe7&OSxtno$@^Z#YY~W8WFl@Z>9xU5L>9hQb+ql)3k!{qO$0M6L+Pril_H+Pn`+uJ;JC zZpgv=-{U|RH&erLRYaq;JUFHWm3&mmE^vKnn0k7)2U-BM=p=CA-5d;VQ;sRfvxy@n z?6RrJ1qM&HYPgc5St(f!Nuy0?=dDaj^uPbE1XM#oQ!AI ztfkN$=q*g?qqrNgxCHh0r_CsIZ(Q^vrE~G#f&5(6pSLMol0Q0Vu5&L|#`9FP%jSmQ z0(j0UT}tI&IIJ%_WWeU4q*SA3WTk0c9VX|v}7DIGT@KGoNC5fGG$It+@e&1 zK^%_Mg?A51(4N#tLq@}&x^u&RKDAY?=2L?k3cC|>4WUK=tNMI7edKUD@leHV?)W1B zbtboT%{8xN5XK5y=l7EnjQbB${HbV_#;)Cs-44=k?8dl9WohKxqo!1GpXXcP?LfPU zBaE8IlIX6~jTSUPv?%ly8NHYvmA(2`G^xsZv!*kQG)9fdc}pRT5snEpPAC|@b~5ec zeQB$Abs)+{Nc9S6yoOtwbODtBIXlle{3_y{bRtbXNspL81z3*3#a79PCe)XKHT68d(@&>oi@maclVdAQdZPW+^(=mB9;-c0CGoaMT?LL zI6i`>NlG7-{xqAA6Y}xtnyzLmB1E^uYvw)xB!Iy4^r->1RV=&Pw+x{EU1}e-NEEJc zJp~R#im$hEzy+JGeX1?oYQ@KnRQsfu$OMt|1^SWcOn7bvPTj-%z~maQ5saq8`?vo1 z&#yyPAemu>ko@Z0k(ySp?wJ&E`H!=seR!!@$!wTt$0LRqIs9rTkWIBXRU8xRQ~jPr zi^_zDM&|^KgZ@nn5H;T1I+K#Tg#$VMRawE8GI@ZIGC|0n=+Ea-E)?fzKUz2>oMMI~K0pH!jaoj$V2XhJ z#)ak$_7igeKqP0bDF8I{85ramHj!0wMORZo^9D zToKoU?@3puh8J&jQ`5F6PUC9BcXLuJpIVBSifl-*v$}!<5Dy35 zfpEe11BN|MtwY+1n-1cW%^9S{6u@va;79os&T&dPqyxu2zZ!5EKAo~?Q~`Ihap=60 z&N@_rB$2koFef;~fT^W&k{%(1R9uS;XmMOU`R(pifP1|QUeCygV4|iJeNPb*mI0$J*z(YBjy=DI@{DVCWSov8CRZ6 z3~`U4KiBiDp>j6}u2agGe7KNcIH5a`<8Ej@>c6&NJ!nQQBLG@UcW>nTHtX{{Yop6^4`{CQGSQO2YuJAxEJ7 zDK}xH*s1a=s_+zGeiZDJ-mOh&u&(8B!_yTS%#2EyW7>KSgdeR>HTEvn+=G!o6=Xvm z;zN9c+-8|1cw@BXdlN;)VSz6sQYLXHU%((j0%2zypI+qkuY_J%~ z#uR&+dOJtK1M{dE*p7WMngL_Re=|{Hu0~wX?!~?QZS5lC`Bix|EoBGG6jG1&WFOZR z)Wd9k^PC>QcB!625DEh^^)xxV*#d&K*}_R{szd&>PPqE2?*3I#?q-bP;gJvfNJV-N zog?s@LF!37QVUrocRpYZ-k-ESWdLV5?^agl7|-in+Q#c30d}xF0x``_VEZy3wTNXxaA9y9AE-Sm zcRo~Pp>u;p#u+r4v)Q8f$UyQmxS)>mW@>+A-dXfwV6Vts`HM zI@TjyfI8J_FS)=pIan-f&v+Phs%Ry=yoTBp-7KsTK=n15CDG0^$m?C-g)}Mj>n7K4 zVZ^MvZQ_0kso=TyJqNeev8!1^K4z5ZIY_jywTqahh@k@qk-HUk2%bgWt0O0<2a0rh zy9riLvP8~us^szqrBT$c?q@!9GB{XCR$TDCJO2QUb6%vKnmRqmtEO7M)g`ouBurtE ze}RT~XZWgHD6PCrZz}4xHq$a=Y@0CH^vL8@YaK@0R4EPoDdr9Y+3DZEuS(pu7CLGy zF_Ryh!yCEWdsY>_$nx_0#_t}>9$rcyQcg+5Y)@+p(idRc zk8oW!S(KBzFe3jM8>9lp9wurSo>~nif_V8;X&itwP(B1GRu*kVxxW z5oXpMk*@c_`J8mkQk__7;a*_y)jYj5ykVX2lpIQK>WY~^B$O^KpyyJC#GsG zneX(cOwmHYCU#dNJPhsn^HBY!-P|h5Mo(8<56-D3OD5kY(hFxbUCAB)01BEy$UtvQ zj&o5z%qT)-a!nMaaYa~)rq&h+e$dK#Fl5d>`0Y}|W~%Fph$YC#UDzkvo|KYH463q5 z$c%HjMsc5~YGh3`tVC(KeK0ES+9N?{R#^|6tRK*dhknpPfz4iy2Aaqzl#X+T91m)P zY!UDPcmDuv;19r1m^4x<+0H*&k|$&%BO}n&=Sy}eCzbLr0ooS%RQ)@CG}hCnQarRW zjAtl0A5q$$I(v(it%;IDbp*Skj4|X8FmwL^>Zno>SD+`^hf0Z-SU}v4ndy*5X_-Ez zrrn2r!^%<+l8U8yTC)p9>P z)n}QU^b72x6p0~M-Nt=rvkRipjI^&4xC9@-p48We5tm6La51}Xaz6qpv&dv}PbAfd z?Wfzj%Ov$Ee)r|plUCdj5}nKd-4MAED$0y#$<=0wsC{sjDK3CHO}*eMNXqB#z&@8Z=vn@(@mqMeAOwAo4eFd$gsBHqpzi0FD>UAqd-XN{Y@uy zJ0?|Vw&OVDaf3+FgxYu^hIpyvwVD(RaKk%txj)jYGY|>K)cR9S=i9JEVw%lG{lAaZi$Y;Y9;+P%_eB^!n0v zY-?gRV{rcfzjn%lwXuSK8n5QaW>RE!3&6?F1zokeS>^KP3cf^pd;b9S=$;pX zMs1-%V}QTXsXJ&5buU|C6$zheV<880}ArBO~B4uc>2zDdpp2!ys1A1!*2s*oANk@Nw3a z!o;6v+%X)n$lu%<&;J0fs1pr5ni)Pmk~8n{BrdTlvBms)_DYTW_clrYaGqz@P!593fqhDN|3 zdXvz7X=I7weXcNnLq>p385^e`jVP6qgd`8GR~!se_hY^(ST0Er+bNqZyVS9(fbL8O zz&)ygo3I0qN^cQc00rxdDm(bzV7KcOsi7mc+BFl6sOl z)YXB(_*7_1#uhgDQG1?(p?j-E+_DYda(y8hRr$0IEqn1}V5jt1&6bJq?koMhL`hx75|^Yv|`-sgiM%?N~C~O%f}* zg$!^2tqWq7mdhg(z1Q#_mCaI=E$*EZ>Q4HbQ5cNONBYi$lT*m6BxOkhJqa1Ee%|OT zr;X127!EW36sKF2B*BevIO=PfSb4YZo2u}(rIoR`jzIFrs(|M!&po*Hs3g;-yS$Xd ztP^+MlZw!XP>tc=D&-)n*YHmv(XON3^P*+J_}Jw<@)~(ae@{11xGX#0>uc zJ_T&YaIb7GRtDXUjeywy06f)6b!%8i24p1j!w=_J`i7??O3!O@?m8Ive5XCJS*mla z(rU#yMw;B-x7Fdem0|KG`N5MmE|)I%sP+G zuAK2J{s}XMBh0Qeoo>@UewTWf?qO_xc&zuHNXZV2r~RRd_IP|x2->s9BvSE_kJhcW zt7SVnmWozY$=m_Y=URPgtbQnvs6p({3;SX9rZvkR_3sEYxrXMpu+O1L$rUe?rU8Yv zvjl>ESkQk;pRYd5e^&E62_m_;Y)2Hb6WI`-G$N9xVvyfi|fPO`8{eP`;N|dEL zx2iW%j8@tZ%NmE+j^8eM8OPSB8%A|@*u^t~MsQ7OOM5f94$gMrKmZVG?w2~1kuDDb zfl|wX$gZbSbmMy&C`NL%%o}SM_pFYOvpDIR=w8C!_=54x6CeX2`hn7~#T}$W2oM5C z8OYDIO3VgFaof_k>tbambgXn!qN1$EMvD|mfr|wg%N&|QRG(^6eJVE3wR0^^#<@=Q z18v7)QZPQ;R4l*kR~*o)eFz$h9S=bHPZy%#xiJEWZFw% zRCQu;imfZaM-IT_)34LHrM!&I56Onf&Uau}H#m6Z3AsT-fJ0`w=|M>5sW%gF!MZ)- zMJfH}`F}%HCbnsD<);4ta54>1c7=E|%OUmwK>m5FQCwcy+8v4-KD)YrKc#M<*38Mt zJ<6|XBA$aj#-nwSPG5H?B%fNnXDgVRONY!O?{Di?lr$_JMUFLWf~>*E9)wjn zv_gtxaNI;K(QaZZ#sh5XJ!(iEDT|o0gdT;l$7*DgIhBO2j~VAI0|WjPl39ZL?c@WF zl^PeRYix31aHYS!*wtrcj~i5m&N6DcNMgttA6k^mjUEd8-n1y#FLF^Vh{0r2gU~la zPJj_BIEa!40LK+iBrqbTS=o-l_yl5xgqao4Pav|z(;$*b{HrCfdU0A;36}Z0XQAS& z7&6^>J$bEQ(nLvIEv~j=HyMvT0qO25MQt6}fa752ceQ1kaHr)Y)yS@=h956t%8S!2 zjD8fQufh@2aqkG-u_Q--?t{pps-qKdWn+ds@Nq>gN1;MEmy%8h>5-iKR*YffUA|%# zKQ;pl{Q#`-DOK7rj=a(9Dcm=t}V_kmf!UhRzHq1;Ec z22+l-S&Hbe57}hgvLm(#%9F)G9Fs*inyy24InQ3S=z=tXWF;5rR$2%=ws@sIGlu~F zw69^6-2|_@8%rOXBLbEpU~*K9jsdA-o=u!?9g6~gDpK)2?>WA9B!UM&iKTvnAtAQ! z$IF~%neSFU(+W9_VObNRmh1V7v9OpJDl~Eh%SKb>KI1(<`qbO7TIChNJm($i+S_+8Txwu6-=38l;FCup5p``r6n8bak&~X!v)bPZ0se^2_`un$Jg+s{?BGC zt2|92oE6E((>($D)i^FLA}h6b5TvOiBo6-ohkBKD3CpX><(CC|1IOdXr4BOa7mrb; z8aFE-6hJt8lXDMbo`K za}z5_2p;1>4PUO&!ht#xR~%C@c> zJP>nCTY#<)mcMr$Kczc)3jSrqy(Jn_N|C@I2qvm6@22m@9?b`Sm{B zQRWBRa}$Qy^K5UtKMv#RP)leXo>Xo~4S+pqB)W~U(nkjEsc@>maVA}6 zMy5D!5l9jYu^j>ahN3ePm}8JXN?Ytbo~4Pt$pI0&l27rc%vb6&kHht*EHTOoLgA(F z8~ltt@&5qVthaupanD@yR_x}AQRQ71Z|)FzU!^w&mBq}PETNTC%kr`i<%hZMY8fn= zMm%KWIZ_Yuspgs>7v_*;ZO8zUG2B%nEU-TKrD8MGkLOA^=r>{+E%tOd0;0)M4?;WD z=eU;WhLA2tbpR7h+B=HTNv+6fbRTPcV3@xf&Hy;z3b*~N;#Fdb*yD@>e;j71fH8~; zO^U;BZ(7Z$x3OuoU7u8QD#;c<-5?SVvHX7;SgskNZC)oP^Yd$uf2gEX9 zpF%&aX`q+M#o7i_f+Sop_53Pj6t*cg$)uJzh=2S5ts`kI2(ung(1vdnYHV@Cc~ac3z7_HYp-JY(T%QEZ1s^1S^N>oKZET zK#--o@Q-Sm~ zVi?Tu?>wBJly);Id(GV=G>7KxgfHx26?8jWNZ>LJq=kl?SuQh zfRa~t2kGxq4LWfNl&a$$Gm?Iu^)5+nH5T?W#HD%~nmJiWDsi8Bvkjqyvu*@|%9Z3& zMfO>n8v?s$c3T)e!iLZ!%^f(!cO%7ia83%ga6kI>9qKKm!HyZ0M#e!=)7uqRSkskFkxuY4XUhzxSCo~%3I zfOA&h`%4|CJYfCP&*CX(pUaGvb_&CVA1NP+=~aG&+o;3lDoE4B3V>KK$-wr(&0W$j zA!!+!1v^meb#IqG;PN|GMECH`Y(q*({t$YD@5lM#vxM_o%b28PBhb=xdE(O=tIH(O z+S)7JYE5$?UoA!md}s2k?QDj-MpC@5-BZBl{3{;ETACR#HY7sBcJZD&*JouOov5N- zMH-(h;C9-5#d6Lrg!!Jv@sg_>EzJEM#_cXrSt2T&{q8E}xn>Qon;1nAWRZ+yR+Q7E zaT!J!f%5Z={xw0hNL^WOt(jB+al?c8S2wh&Ir~JmHsy?C%5sKBlzC*a$@ywTdE-+N z7?5;h)O%N5ZykvVGzk)y9B={0(v;f48<$8>Iq!<-c+|9UGFWH5&UVRUpX6}czVQvz zd;b8RO1W}nh@(RCmfBQ-k`MS&nD1_`T1Lzft6&a<{{Z!>*V-Ys`AV|&IU|EpI+u4^ z`4<>jYCh6eYjq9|Q~{ITq%F=VsXEFsoUg4WMtXBx&1lsofMQbPo?A^C=L{2-0qxW`k)Rk&0R zH`^1v@tk0em6JoI2!w9M@8&)~7!`^essY(6Lx{FC_fR z0neZ{PFYzUS&}^WWEc!N$T+K`QBNpFut|Mp(>DG+oXT3+z z)70@)NY-QDG{Sx9=kTc5QxFqOC*GEuo@fx(G*X^N6jKqN4mqSCvB@Tm!j$zD&}0P^ z9y9sUfCUtHpa%+2a4Dmu6s#8{4%h=H1GPBFag5Ysr75Liu1y^BN0N<$>*-QKc{FY_ zhxFafD!1^{mZr#Qvh}mrNIV!273~Y+v#6zgiFa*Z%-{zpX~a zZbp6TXyk@5pDZ!|0BfFV13>9k)yYNAw)we9qgRZM0qUpN)m6x0o@t-MPZW}{Hdy;h zd2XWtSYVFTT%Fx%DSJ~$8w>(5R+8>jk84QGql^<(M_OL=nz$xPXOkEX!Fm7>6%i(v zu%zs0L2*=WCy+SrQnkd2L5a~%_dw(8kMq`{9R(rkC;`$;Wo`NW;Oa@ve>$}k&v|aq zNP(FE^4I_f>)xn0`olzh57wKCuqUYYki~Eq@==FwxTKy_Az$69sXQD3&*4dN{;_}E zU;PA9FWskZpg+iEC0$A|>}psQkmN8QPW55`0OS{M{`d82fodCUcCjtQre_R#;}sAT z+yJ9E&}->Lf24!?~w47y{qodZK7M*DHJ zj0$2yHo&a$u5-70g(r`Hr9wZ)`BWDl@$)D9$NADrpzqYVEK?$ekx5hhV~~FlP>AEm zJ9(>?fAS80`u1=A8C5^Vl3>woX96J~@YE73d1nEHXN>LR^QN_FSpNX2fBNFz)|1d{ zQzObwhJkLRbu{77eJSImUD-AfB2^%k&O2h9!AQXw0+-g1^`&uuz!(CSleH+ILG4Nf z9qG%|QW%>@d{w(^hJ`kd{Ilz1 zwF&#wN7jp9K6<_9N`E!7HsQ&-3>8XlIoygaE;b_oM7nd7F0f2VT`~%kDjB!}ky4Q0g?wP)x>aONI(e zOV_aGtd+QiFnppHeGl}gWB&kOKl_5Gowahg64=3<8Gc}!B~yYx!Oy*3 z(}c1{iy&-qnYf8-(m00I8Ar#%`fFxKOuv%43H;!q>VIPZ^2w>Fz; zGP#j>Jd!x~sn@Md7eVzE!#c8V=Ui#UD;Q6s>F%ajB?2VikaLsutkiouTdXU-;C7R@ z<>#-~wY0zWcVG3?e_Fx6{{UQmpW|KBT$^dLlB!82k+9DnmXl>&v6VRKOFXxa3WY)d zIR#rI{{XF3biegK@Do-O{z7g3@ARSQ#I;6x?pu&|I=MXOB-Vr)Kig+3yeG4!2>d^- zZdm^S$K+q`*17)xSU$hwT=j8MTO(*tPjiv}%ZAeM$93lvPn!WSu05Kiy}hv!lMmV= zcw-8yzmK5<-@iR;Z^U2n1fS}k&bS$W0V1n8aW*!AeE0l zpVz%+z0CUzZ7UQ#iQ<+20OQ?0t^Fzn?_JS~M=YCS@A*pLbcz?*VZ~p*Y5A!vJTiqK|wVNfjYr_N0 z6sHWO2d8OxKW0KiSe%GIRspu{~NPD>&U62&z8LIIO=$)br1FSpY_tLpS@hqSf*{&qP54GV__cM z#Bf_U&2rZg>Q=H!(<=Z@8L_!}uDSXe&ecET(ogqIbm8a9?PD6yy1mX=DU{V*?u>zvETzzt;X0 zT=lC_O%mkMrM}3)h}vkFk@BCLY4y!d_J@uW9o?~VxyzotI63~cjw_|H{{W9Dzu;fe zqEWF?ZJ9DWQUx(C!Jb1LnpC!$PEs;QuR;0Ib^f>Ts}~>g5B~sw59dreZL; z1mh|}AI_~CXdsL&#HA!7?{kXEZ}n0C0KZ$7pYi1f`-}YQWpSc}_Yp?rJcM|U-EeyT zB9-8b9K~>~r|yR1Khm41^tk^3u8aJQQD5~^RVARC)U + + + + + + + + + +

WMC Example

+ +
+
+

+ Shows parsing of Web Map Context documents. +

+
+ + + + +
+ This is an example of parsing WMC documents.
+ The format class has a layerOptions property, which can be used + to control the default options of the layer when it is created + by the parser. +
+ + + + + + diff --git a/openlayers/examples/wms-untiled.html b/openlayers/examples/wms-untiled.html new file mode 100644 index 0000000..92e45b7 --- /dev/null +++ b/openlayers/examples/wms-untiled.html @@ -0,0 +1,45 @@ + + + + + + + + +

WMS Untiled Example

+ +
+
+

+ Shows an example of an "untiled" WMS layer, which requests a single + image for the entire map view. +

+
+
+ An untiled layer will only request a single image at a time. + This is equivalent to using the deprecated + OpenLayers.Layer.WMS.Untiled class, which will be removed at 3.0. +
+ + + + diff --git a/openlayers/examples/wms.html b/openlayers/examples/wms.html new file mode 100644 index 0000000..ffdade0 --- /dev/null +++ b/openlayers/examples/wms.html @@ -0,0 +1,43 @@ + + + + + + + + +

WMS Example

+ +
+
+

+ Shows the basic use of openlayers using a WMS layer +

+ +
+ +
+ This is an example of how to add an WMS layer to the OpenLayers window. The images are tiled in this instance if you wanted to not use a tiled WMS + please use this example and pass the option ‘singleTile’ as true. +
+ + + + + + diff --git a/openlayers/examples/wmst.html b/openlayers/examples/wmst.html new file mode 100644 index 0000000..51772fe --- /dev/null +++ b/openlayers/examples/wmst.html @@ -0,0 +1,55 @@ + + + OpenLayers: WMS + Time + + + + + + +

WMS Time Example

+
+
+
+ --T::00 +
+
+ WMS-T example: update the times, and the radar image will change. Uses Layer.mergeNewParams to update the date element with the strings from the input fields every time one of them is changed. + The inputs below describe a timestamp: The minute increments can only be updated in units of 5. +
+ + + + + diff --git a/openlayers/examples/worldwind.html b/openlayers/examples/worldwind.html new file mode 100644 index 0000000..1743fdf --- /dev/null +++ b/openlayers/examples/worldwind.html @@ -0,0 +1,47 @@ + + + + + + + + +

WorldWind layers Example

+ +
+
+

+ Shows the use of the Tiled WorldWind layers. +

+ +
+ +
+ This is a demonstration of using Tiled WorldWind layers. WorldWind requires you to define a "LZTD" -- the 3rd param of the constructor -- and the number of zoom levels it supports. When a worldwind layer is not visible at a given tile level, and empty tile is placed there instead. Note that the maxResolution of the map times 512px, must be a multiple of a power of two different from the LZTD -- in this case, .28125 * 512 is 144, which is 36*4, and 2.25*64. + This example has a 'Bathy' layer, visible as you zoom out, and a 'landsat' layer, visible as you zoom in, both visible at zoom level 6. +
+ + + + diff --git a/openlayers/examples/wrapDateLine.html b/openlayers/examples/wrapDateLine.html new file mode 100644 index 0000000..d0cfa4e --- /dev/null +++ b/openlayers/examples/wrapDateLine.html @@ -0,0 +1,75 @@ + + + OpenLayers: Wrap Date Line + + + + + + +

Wrapping the Date Line

+
+ Related to: + Layer.WMS, + Layer.MapServer, + wrapDateLine +
+ +

Shows how to work around dateline issues, by wrapping the dateline on a number of layer types.

+
+
+

+ This is an example that shows wrapping the date line. Wrapping the + date line is an option on the layer. +

+

+ You can do it with a 'Layer.WMS' or a 'Layer.MapServer' layer. +

+
+    var mapserv = new OpenLayers.Layer.MapServer( "OpenLayers Basic",
+                "http://labs.metacarta.com/wms/vmap0",
+                {layers: 'basic'},
+                {wrapDateLine: true} );
+    
+
+ + diff --git a/openlayers/examples/xhtml.html b/openlayers/examples/xhtml.html new file mode 100644 index 0000000..c60fefa --- /dev/null +++ b/openlayers/examples/xhtml.html @@ -0,0 +1,38 @@ + + + +XHTML Example + + + + + +

XHTML Example

+ +
+
+

+ Shows openlayers running in a XHTML 1.0 Strict Doctype +

+ +
+ +
This example shows openlayers using a XHTML 1.0 Strict Doctype click on the below image to validate. +

+ Valid XHTML 1.0! +

+
+ + + + + diff --git a/openlayers/examples/xml.html b/openlayers/examples/xml.html new file mode 100644 index 0000000..fd1b441 --- /dev/null +++ b/openlayers/examples/xml.html @@ -0,0 +1,155 @@ + + + + XML Parsing Example + + + + + + + + +

XML Format Example

+ +
+
+ +

+ Shows the use of the OpenLayers XML format class +

+ +
+

OpenLayers has a very simple XML format class (OpenLayers.Format.XML) + that can be used to read/write XML docs. The methods available on the + XML format (or parser if you like) allow for reading and writing of the + various XML flavors used by the library - in particular the vector data + formats. It is by no means intended to be a full-fledged XML toolset. + Additional methods will be added only as needed elsewhere in the + library.

+

This page loads an XML document and demonstrates a few of the methods + available in the parser.

+

Status: XML document loading...

+

After the XML document loads, see the result of a few of the methods + below. Assume that you start with the following code: +
+ + var format = new OpenLayers.Format.XML(); + +

+ Sample methods + + Output: +
 
+
+ + + + diff --git a/openlayers/examples/xml/features.xml b/openlayers/examples/xml/features.xml new file mode 100644 index 0000000..b213ce5 --- /dev/null +++ b/openlayers/examples/xml/features.xml @@ -0,0 +1,2 @@ + +-107.7912454726602 43.649560413854424-107.75539905577847 43.6677494686189260430N0910W27Aw2sw;WYB 0016999ABUREAU OF LAND MGMT0.0614.3Authorized310781O&g renewal lease - pdOil & gas06/5/1926Rlty rate - 5%HBPORGAS VENTURES LLC100.00.00.00.06/1/2006-107.75540341813374 43.65318043604783 -107.75540766903033 43.649560413854424 -107.76039213131902 43.64957232716459 -107.76537647481773 43.649584044882054 -107.76600694778301 43.649585553307226 -107.76600544447962 43.65320449790224 -107.76600393275089 43.65682260581091 -107.77035309969853 43.6568319555119 -107.77533746205971 43.65684246461631 -107.77533369030677 43.66046005010295 -107.78032119967183 43.66047517767307 -107.78114989067903 43.660477553258325 -107.7811491411714 43.66409732386495 -107.78530636850998 43.66411137468226 -107.78619730956676 43.664114220754314 -107.79029430779957 43.6641274142625 -107.7912454726602 43.66413046978637 -107.79124472581245 43.66774946861892 -107.79029254907311 43.667746432392896 -107.78530411910795 43.66773049422058 -107.7803154837038 43.66771429284182 -107.77532694645721 43.66769786251535 -107.77034201441859 43.66768723301139 -107.76599111151326 43.667677746482155 -107.76599928176243 43.66406177993355 -107.76600204937104 43.66044527933786 -107.76536482605789 43.660441720601554 -107.76095267723535 43.66043320984291 -107.76037976752744 43.6604312952967 -107.76038385503145 43.656811633534815 -107.75539905577847 43.65680054792165 -107.75540341813374 43.65318043604783-107.76038385503497 43.65314461898675-107.74044949722713 43.6604312953016360430N0910W34Anene;WYB 0017060ABUREAU OF LAND MGMT0.0190.0Authorized310781O&g renewal lease - pdOil & gas08/14/1929Rlty rate - 5%HBPORTEXACO EXPL & PROD INC100.00.00.00.06/1/2006-107.74605488318316 43.65994411135142 -107.74543221894442 43.659942507723265 -107.74543182097408 43.66039495347534 -107.74044949722713 43.66038434024628 -107.74045205662398 43.65676451042827 -107.74045468122058 43.65314461898675 -107.74543785843247 43.65315677493463 -107.74543483251206 43.656775865277204 -107.74792589467117 43.656782141688055 -107.7504169506792 43.65678836105594 -107.75290800688019 43.65679449548188 -107.75539905578172 43.65680054791882 -107.76038385503497 43.6568116335444 -107.76037976752876 43.66043129530163 -107.75590467181928 43.66042401057107 -107.75539470030401 43.66042058014666 -107.75539522492454 43.65996803160492 -107.75477258519014 43.65996648396323 -107.75414984843758 43.659964934969224 -107.75352723875065 43.65996338002915 -107.7529045032101 43.65996182230788 -107.7522817671415 43.65996026343829 -107.75165902657075 43.65995861118674 -107.75103641630865 43.65995704018709 -107.75041368089654 43.65995547101946 -107.74979106335141 43.659953806253434 -107.74916845036381 43.659952225696536 -107.74854571394238 43.659950645819315 -107.74792297797997 43.659949063070066 -107.74730023769644 43.65994738546058 -107.74667762361214 43.6599457929788 -107.74605488318316 43.65994411135142 \ No newline at end of file diff --git a/openlayers/examples/xml/georss-flickr.xml b/openlayers/examples/xml/georss-flickr.xml new file mode 100644 index 0000000..23ec199 --- /dev/null +++ b/openlayers/examples/xml/georss-flickr.xml @@ -0,0 +1,730 @@ + + + + Photos from everyone tagged snowboard and powder, with geodata + http://www.flickr.com/photos/ + + Sat, 24 Nov 2007 16:25:03 -0800 + Sat, 24 Nov 2007 16:25:03 -0800 + + http://www.flickr.com/ + + http://www.flickr.com/images/buddyicon.jpg + Photos from everyone tagged snowboard and powder, with geodata + http://www.flickr.com/photos/ + + + + hofü07_5259 + http://www.flickr.com/photos/-mo-/2061136492/ + I - mo - I posted a photo:

+ +

hofü07_5259

+ + ]]>
+ Sat, 24 Nov 2007 16:25:03 -0800 + 2007-11-17T12:01:18-08:00 + nobody@flickr.com (I - mo - I) + tag:flickr.com,2004:/photo/2061136492 + 47.25162 11.754426 + + + 47.25162 + 11.754426 + + + hofü07_5259 + I - mo - I posted a photo:

+ +

hofü07_5259

+ + ]]>
+ + I - mo - I + sun snow fall fun austria yeah powder snowboard tyrol 2007 hochfügen powderahyeahturn + +
+ + First tracks + + http://www.flickr.com/photos/ruthanddave/2046899659/ + Ruth and Dave posted a photo:

+ +

First tracks

+ +

Not mine, alas.

+ ]]>
+ Mon, 19 Nov 2007 08:20:11 -0800 + 2007-11-18T11:19:50-08:00 + nobody@flickr.com (Ruth and Dave) + tag:flickr.com,2004:/photo/2046899659 + + 50.107423 -122.899847 + + 50.107423 + -122.899847 + + + First tracks + Ruth and Dave posted a photo:

+ +

First tracks

+ +

Not mine, alas.

+ ]]>
+ + Ruth and Dave + november lines whistler snowboarding tracks peak powder snowboard turns freshies + +
+ + + Powder turns + http://www.flickr.com/photos/ruthanddave/2047707124/ + Ruth and Dave posted a photo:

+ +

Powder turns

+ + ]]>
+ Mon, 19 Nov 2007 08:26:04 -0800 + 2007-11-18T11:19:57-08:00 + nobody@flickr.com (Ruth and Dave) + tag:flickr.com,2004:/photo/2047707124 + 50.107423 -122.899847 + + + 50.107423 + -122.899847 + + + Powder turns + Ruth and Dave posted a photo:

+ +

Powder turns

+ + ]]>
+ + Ruth and Dave + november face lines whistler snowboarding tracks first peak powder fresh snowboard turns + +
+ + Splitboard + + http://www.flickr.com/photos/hamsgod/1330385819/ + @nt!x posted a photo:

+ +

Splitboard

+ + ]]>
+ Wed, 5 Sep 2007 09:00:56 -0800 + 2007-03-04T04:40:12-08:00 + nobody@flickr.com (@nt!x) + tag:flickr.com,2004:/photo/1330385819 + 41.931831 -111.646049 + + + 41.931831 + -111.646049 + + + Splitboard + @nt!x posted a photo:

+ +

Splitboard

+ + ]]>
+ + @nt!x + snow mountains snowboarding utah powder yurt snowboard splitboard supershot + +
+ + Fresh powder + + http://www.flickr.com/photos/oliver80/1266854486/ + Oliver Astrologo posted a photo:

+ +

Fresh powder

+ + ]]>
+ Wed, 29 Aug 2007 05:19:36 -0800 + 2007-08-24T10:05:48-08:00 + nobody@flickr.com (Oliver Astrologo) + tag:flickr.com,2004:/photo/1266854486 + 46.528236 10.449789 + + + 46.528236 + 10.449789 + + + Fresh powder + Oliver Astrologo posted a photo:

+ +

Fresh powder

+ + ]]>
+ + Oliver Astrologo + sky people italy panorama mountain snow alps landscape powder snowboard rider snowboarder passo ghiacciaio stelvio + +
+ + Sawatch Range From Vail Pano + + http://www.flickr.com/photos/dman861/498747983/ + dman861 posted a photo:

+ +

Sawatch Range From Vail Pano

+ +

View near the Eagle's Nest at the top of Eagle Bahn Gondola. Mount of the Holy Cross mountain is visible in this picture but you can't make out the cross shape. I have no idea who the lady is. Handheld panorama, stitch of 5 + photos.

+ ]]>
+ Mon, 14 May 2007 17:05:11 -0800 + 2007-05-14T15:00:27-08:00 + nobody@flickr.com (dman861) + tag:flickr.com,2004:/photo/498747983 + + 39.617598 -106.386773 + + 39.617598 + -106.386773 + + + Sawatch Range From Vail Pano + dman861 posted a photo:

+ +

Sawatch Range From Vail Pano

+ +

View near the Eagle's Nest at the top of Eagle Bahn Gondola. Mount of the Holy Cross mountain is visible in this picture but you can't make out the cross shape. I have no idea who the lady is. Handheld panorama, stitch of 5 + photos.

+ ]]>
+ + dman861 + + trees sky panorama mountain snow ski mountains sport pinetree person photo colorado peak wideangle panoramic powder resort panasonic trail vail snowboard gondola beavercreek range avon mountainrange mountoftheholycross sawatch dmctz3 tz3 + + +
+ + + Flash Powder + http://www.flickr.com/photos/eckan/488776800/ + Erik Eckerström posted a photo:

+ +

Flash Powder

+ +

Some late night powder in Åre

+ ]]>
+ Mon, 7 May 2007 13:17:48 -0800 + 2007-01-18T15:37:17-08:00 + nobody@flickr.com (Erik Eckerström) + tag:flickr.com,2004:/photo/488776800 + + 63.409238 13.079953 + + 63.409238 + 13.079953 + + + Flash Powder + Erik Eckerström posted a photo:

+ +

Flash Powder

+ +

Some late night powder in Åre

+ ]]>
+ + Erik Eckerström + snow forest canon eos board flash powder snowboard portfolio Åre 30d canon30d canoneos30d are + +
+ + + Hannes and Reini + http://www.flickr.com/photos/moschitz/483974969/ + martinom posted a photo:

+ +

Hannes and Reini

+ + ]]>
+ Fri, 4 May 2007 08:56:02 -0800 + 2007-03-26T12:17:53-08:00 + nobody@flickr.com (martinom) + tag:flickr.com,2004:/photo/483974969 + 47.252086 14.365139 + + + 47.252086 + 14.365139 + + + Hannes and Reini + martinom posted a photo:

+ +

Hannes and Reini

+ + ]]>
+ + martinom + powder snowboard autoupload obertauern lachtal + +
+ + Zehnerkar, Obertauern + + http://www.flickr.com/photos/moschitz/483975805/ + martinom posted a photo:

+ +

Zehnerkar, Obertauern

+ + ]]>
+ Fri, 4 May 2007 08:56:46 -0800 + 2007-03-21T15:56:56-08:00 + nobody@flickr.com (martinom) + tag:flickr.com,2004:/photo/483975805 + 47.249698 13.557643 + + + 47.249698 + 13.557643 + + + Zehnerkar, Obertauern + martinom posted a photo:

+ +

Zehnerkar, Obertauern

+ + ]]>
+ + martinom + powder snowboard autoupload obertauern lachtal + +
+ + Uhh, thats high + + http://www.flickr.com/photos/moschitz/483941044/ + martinom posted a photo:

+ +

Uhh, thats high

+ + ]]>
+ Fri, 4 May 2007 08:55:25 -0800 + 2007-03-23T11:38:54-08:00 + nobody@flickr.com (martinom) + tag:flickr.com,2004:/photo/483941044 + 47.258669 14.359989 + + + 47.258669 + 14.359989 + + + Uhh, thats high + martinom posted a photo:

+ +

Uhh, thats high

+ + ]]>
+ + martinom + powder snowboard autoupload obertauern lachtal + +
+ + Powder days + + http://www.flickr.com/photos/moschitz/483973863/ + martinom posted a photo:

+ +

Powder days

+ + ]]>
+ Fri, 4 May 2007 08:55:02 -0800 + 2007-03-26T11:25:01-08:00 + nobody@flickr.com (martinom) + tag:flickr.com,2004:/photo/483973863 + 47.258669 14.359989 + + + 47.258669 + 14.359989 + + + Powder days + martinom posted a photo:

+ +

Powder days

+ + ]]>
+ + martinom + powder snowboard autoupload obertauern lachtal + +
+ + Getting ready + + http://www.flickr.com/photos/moschitz/483940792/ + martinom posted a photo:

+ +

Getting ready

+ + ]]>
+ Fri, 4 May 2007 08:55:14 -0800 + 2007-03-23T11:38:53-08:00 + nobody@flickr.com (martinom) + tag:flickr.com,2004:/photo/483940792 + 47.258669 14.359989 + + + 47.258669 + 14.359989 + + + Getting ready + martinom posted a photo:

+ +

Getting ready

+ + ]]>
+ + martinom + powder snowboard autoupload obertauern lachtal + +
+ + Going up and getting ready for the descent + + http://www.flickr.com/photos/moschitz/483941528/ + martinom posted a photo:

+ +

Going up and getting ready for the descent

+ + ]]>
+ Fri, 4 May 2007 08:55:50 -0800 + 2007-03-26T12:17:17-08:00 + nobody@flickr.com (martinom) + tag:flickr.com,2004:/photo/483941528 + 47.258669 14.359989 + + + 47.258669 + 14.359989 + + + Going up and getting ready for the descent + martinom posted a photo:

+ +

Going up and getting ready for the descent

+ + ]]>
+ + martinom + powder snowboard autoupload obertauern lachtal + +
+ + I made it! + + http://www.flickr.com/photos/moschitz/483941314/ + martinom posted a photo:

+ +

I made it!

+ + ]]>
+ Fri, 4 May 2007 08:55:39 -0800 + 2007-03-23T11:38:54-08:00 + nobody@flickr.com (martinom) + tag:flickr.com,2004:/photo/483941314 + 47.258669 14.359989 + + + 47.258669 + 14.359989 + + + I made it! + martinom posted a photo:

+ +

I made it!

+ + ]]>
+ + martinom + powder snowboard autoupload obertauern lachtal + +
+ + Reini and me + + http://www.flickr.com/photos/moschitz/483942166/ + martinom posted a photo:

+ +

Reini and me

+ + ]]>
+ Fri, 4 May 2007 08:56:24 -0800 + 2007-03-21T15:45:38-08:00 + nobody@flickr.com (martinom) + tag:flickr.com,2004:/photo/483942166 + 47.249698 13.557643 + + + 47.249698 + 13.557643 + + + Reini and me + martinom posted a photo:

+ +

Reini and me

+ + ]]>
+ + martinom + powder snowboard autoupload obertauern lachtal + +
+ + Obertauern + + http://www.flickr.com/photos/moschitz/483976145/ + martinom posted a photo:

+ +

Obertauern

+ + ]]>
+ Fri, 4 May 2007 08:57:04 -0800 + 2007-03-21T15:48:01-08:00 + nobody@flickr.com (martinom) + tag:flickr.com,2004:/photo/483976145 + 47.249698 13.557643 + + + 47.249698 + 13.557643 + + + Obertauern + martinom posted a photo:

+ +

Obertauern

+ + ]]>
+ + martinom + powder snowboard autoupload obertauern lachtal + +
+ + Ross Fall Line 2 + + http://www.flickr.com/photos/pwadsworth/480290173/ + phwadsworth posted a photo:

+ +

Ross Fall Line 2

+ + ]]>
+ Tue, 1 May 2007 12:02:23 -0800 + 2007-05-01T15:02:23-08:00 + nobody@flickr.com (phwadsworth) + tag:flickr.com,2004:/photo/480290173 + 44.196728 -72.926688 + + + 44.196728 + -72.926688 + + + Ross Fall Line 2 + phwadsworth posted a photo:

+ +

Ross Fall Line 2

+ + ]]>
+ + phwadsworth + ski river geotagged powder glen snowboard mad vt mrg vemont + +
+ + Ross Fall Line 1 + + http://www.flickr.com/photos/pwadsworth/480290169/ + phwadsworth posted a photo:

+ +

Ross Fall Line 1

+ + ]]>
+ Tue, 1 May 2007 12:02:23 -0800 + 2007-05-01T15:02:23-08:00 + nobody@flickr.com (phwadsworth) + tag:flickr.com,2004:/photo/480290169 + 44.196728 -72.926688 + + + 44.196728 + -72.926688 + + + Ross Fall Line 1 + phwadsworth posted a photo:

+ +

Ross Fall Line 1

+ + ]]>
+ + phwadsworth + ski river geotagged powder glen snowboard mad vt mrg vemont + +
+ + IMGP0575 + + http://www.flickr.com/photos/beppoegeppa/471446918/ + beppovox posted a photo:

+ +

IMGP0575

+ + ]]>
+ Tue, 24 Apr 2007 10:32:41 -0800 + 2003-12-29T11:07:29-08:00 + nobody@flickr.com (beppovox) + tag:flickr.com,2004:/photo/471446918 + 45.082308 6.761913 + + + 45.082308 + 6.761913 + + + IMGP0575 + beppovox posted a photo:

+ +

IMGP0575

+ + ]]>
+ + beppovox + geotagged free powder snowboard freeride jafferau + +
+ + Slopes + + http://www.flickr.com/photos/blupic/469735045/ + blupic.com posted a photo:

+ +

Slopes

+ +

One day...

+ ]]>
+ Mon, 23 Apr 2007 02:48:17 -0800 + 2007-03-31T17:31:13-08:00 + nobody@flickr.com (blupic.com) + tag:flickr.com,2004:/photo/469735045 + + 50.111882 -122.939436 + + 50.111882 + -122.939436 + + + Slopes + blupic.com posted a photo:

+ +

Slopes

+ +

One day...

+ ]]>
+ + blupic.com + blue winter sky mountain snow canada ski nature vancouver whistler nikon skiing d70 peak columbia powder 1870mmf3545g snowboard british blackcomb mogul + +
+ +
+
\ No newline at end of file diff --git a/openlayers/examples/xml/track1.xml b/openlayers/examples/xml/track1.xml new file mode 100644 index 0000000..69036a4 --- /dev/null +++ b/openlayers/examples/xml/track1.xml @@ -0,0 +1,98 @@ + + + +Title for First trial track +Description for first track +Nelson +1995-12-12T05:00:00Z22.1862861120.30211944Phase ChangeStart Phase A +1995-12-12T05:05:00Z22.1862194420.28514722 +1995-12-12T05:10:00Z22.1860972220.266425 +1995-12-12T05:15:00Z22.1827972220.24935 +1995-12-12T05:16:00Z22.1815388920.24605556Course Change220 degs 4kts +1995-12-12T05:20:00Z22.176420.23299444 +1995-12-12T05:25:00Z22.1699611120.21654167 +1995-12-12T05:30:00Z22.1635194420.20017222 +1995-12-12T05:35:00Z22.1571055620.18375278 +1995-12-12T05:40:00Z22.1506277820.16738889 +1995-12-12T05:42:00Z22.1480333320.16077222CommentXO has bridge +1995-12-12T05:45:00Z22.1441638920.15091944 +1995-12-12T05:50:00Z22.1375777820.13483333 +1995-12-12T05:55:00Z22.1254166720.134125 +1995-12-12T06:00:00Z22.1125055620.13402778 +1995-12-12T06:05:00Z22.0996027820.13395 +1995-12-12T06:10:00Z22.0881222220.14054722Comment +1995-12-12T06:13:00Z22.0814138920.14618333Course Change220 degs 4kts +1995-12-12T06:15:00Z22.0769527820.14992778 +1995-12-12T06:20:00Z22.0658416720.15931111 +1995-12-12T06:25:00Z22.0546027820.16871944 +1995-12-12T06:30:00Z22.0431583320.16791667 +1995-12-12T06:35:00Z22.0311861120.16143056 +1995-12-12T06:40:00Z22.0191222220.15486389 +1995-12-12T06:45:00Z22.0070833320.14833056 +1995-12-12T06:50:00Z21.9950444420.14181111 +1995-12-12T06:55:00Z21.9842388920.14733611 +1995-12-12T07:00:00Z21.9736722220.15803333 +1995-12-12T07:05:00Z21.9630611120.16874444 +1995-12-12T07:10:00Z21.9540722220.17233611 +1995-12-12T07:15:00Z21.9588555620.15766944 +1995-12-12T07:20:00Z21.9663083320.16956944 +1995-12-12T07:25:00Z21.9745055620.18388056 +1995-12-12T07:30:00Z21.9827638920.19838333 +1995-12-12T07:32:00Z21.9860527820.20413056CommentSuspect opponent to North, slowing down +1995-12-12T07:33:00Z21.9869166720.20727778CommentVIP visitors due. Helo retrieved. +1995-12-12T07:34:00Z21.9856694420.20985556CommentWind picked up. Switching off sensor Delta +1995-12-12T07:35:00Z21.984220.21243611CommentHeavenly dusk +1995-12-12T07:40:00Z21.9760944420.226425 +1995-12-12T07:45:00Z21.9678611120.240725 +1995-12-12T07:50:00Z21.959520.25507778 +1995-12-12T07:55:00Z21.9511805620.26941389 +1995-12-12T08:00:00Z21.9486277820.28483056 +1995-12-12T08:05:00Z21.9529520.30239444 +1995-12-12T08:10:00Z21.95732520.32020278 +1995-12-12T08:15:00Z21.9617222220.33795278 +1995-12-12T08:20:00Z21.9661611120.35568611 +1995-12-12T08:25:00Z21.9635555620.371925 +1995-12-12T08:30:00Z21.9587777820.38858333 +1995-12-12T08:35:00Z21.9598888920.40708333 +1995-12-12T08:40:00Z21.9636194420.41884722 +1995-12-12T08:45:00Z21.9694555620.40425278Course Change220 degs 4kts +1995-12-12T08:50:00Z21.975920.38807778 +1995-12-12T08:55:00Z21.9823722220.37183889 +1995-12-12T09:00:00Z21.9888027820.35546667 +1995-12-12T09:05:00Z21.9996861120.34794722 +1995-12-12T09:10:00Z22.0117916720.34156389 +1995-12-12T09:15:00Z22.0216861120.34614444 +1995-12-12T09:20:00Z22.0281111120.36220833 +1995-12-12T09:25:00Z22.0345611120.37856389Phase ChangeEnd Phase A +1995-12-12T09:30:00Z22.0414520.36952222 +1995-12-12T09:35:00Z22.0478222220.35348611 +1995-12-12T09:40:00Z22.0542638920.33713056 +1995-12-12T09:45:00Z22.0606944420.32085 +1995-12-12T09:46:00Z22.0619861120.31761111Phase ChangeStart Phase B +1995-12-12T09:50:00Z22.0647194420.30389444 +1995-12-12T09:55:00Z22.0758666720.29758333 +1995-12-12T10:00:00Z22.0879388920.29113889 +1995-12-12T10:05:00Z22.1000333320.2848 +1995-12-12T10:10:00Z22.1121972220.27842222 +1995-12-12T10:15:00Z22.1153055620.26194167 +1995-12-12T10:20:00Z22.1175694420.24336667 +1995-12-12T10:25:00Z22.1198611120.22466944 +1995-12-12T10:30:00Z22.1223833320.20620833 +1995-12-12T10:35:00Z22.1289027820.216475 +1995-12-12T10:40:00Z22.1235194420.22643333 +1995-12-12T10:45:00Z22.1209972220.23426667 +1995-12-12T10:50:00Z22.1219416720.23018333 +1995-12-12T10:55:00Z22.1187277820.23548056 +1995-12-12T11:00:00Z22.1199416720.23541111 +1995-12-12T11:05:00Z22.1199277820.23948056 +1995-12-12T11:10:00Z22.1180222220.24473889 +1995-12-12T11:15:00Z22.1176444420.24835278 +1995-12-12T11:20:00Z22.1221555620.24788889 +1995-12-12T11:25:00Z22.1172527820.25047778 +1995-12-12T11:30:00Z22.1225972220.24290278 +1995-12-12T11:35:00Z22.1292194420.24653889 +1995-12-12T11:40:00Z22.1397083320.25221389 +1995-12-12T11:41:00Z22.1417388920.25330556Phase ChangeEnd Phase B + + + diff --git a/openlayers/examples/xml/wmsdescribelayer.xml b/openlayers/examples/xml/wmsdescribelayer.xml new file mode 100644 index 0000000..d9bb811 --- /dev/null +++ b/openlayers/examples/xml/wmsdescribelayer.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/openlayers/examples/xyz-esri.html b/openlayers/examples/xyz-esri.html new file mode 100644 index 0000000..cee2014 --- /dev/null +++ b/openlayers/examples/xyz-esri.html @@ -0,0 +1,34 @@ + + + OpenLayers Basic ESRI Map Cache Example + + + + + + +

Basic ESRI Map Cache Example

+ +
+ +
Show a Simple ESRI map using the layer from ESRI's server.
+ +
+ +
+ Show the use of the XYZ layer to access a map cache provided in spherical mercator by ESRI. +
+ + diff --git a/openlayers/examples/yahoo.html b/openlayers/examples/yahoo.html new file mode 100644 index 0000000..93dcc19 --- /dev/null +++ b/openlayers/examples/yahoo.html @@ -0,0 +1,46 @@ + + + OpenLayers: Yahoo Layer + + + + + + + +

Yahoo Base Layer Example

+ +
+
+ +

+ Shows how you would add a yahoo layer and add the LayerSwitcher control +

+ +
+ +
+ This is an example of how to add a yahoo layer to the OpenLayers window. In order to enable a + yahoo layer. Also shown in this example is the LayerSwitcher() control for toggling between both the yahoo layer and + the open layer WMS. +
+ + + diff --git a/openlayers/examples/yelp-georss.xml b/openlayers/examples/yelp-georss.xml new file mode 100644 index 0000000..3981069 --- /dev/null +++ b/openlayers/examples/yelp-georss.xml @@ -0,0 +1,147 @@ + + + + Copyright 2007 Yelp, Inc. All rights reserved. + Yelp - Recent Reviews Near Ann Arbor, MI + + 2007-05-29T22:58:24-08:00 + + Recent Reviews Near Ann Arbor, MI + + + + Sam S.'s Review Of State Theatre - Ann Arbor (4/5) + + http://www.yelp.com/biz/r-dZCCNtld2ik0QRoTwuUQ?hrid=pve0e49KrVsvgX_wXpZHYA + 2007-05-29T22:58:24-08:00 + I gotta give this place props for hosting independent movies. Man, I really tire of that Hollywood bullshit; I actually feel retarded afterwards.<br /><br />My main gripe is that the seats are not ergonomic at&#8230; + -83.7406005859 + 42.2790985107 + + + Sean M.'s Review Of Maize N Blue Deli - Ann Arbor (5/5) + + http://www.yelp.com/biz/GqqBWV8ysYB48_jLPMl2bA?hrid=ZZIVErEJIo-FMsxOBVX1GQ + 2007-05-29T16:04:19-08:00 + Maize N Blue is synonymous with huge sandwiches (lunch+dinner sized) and good but not showy ingredients. It's a much better value than certain other Ann Arbor delis, and eschews the boutique feel that&#8230; + -83.7255020142 + 42.266998291 + + + Coco C.'s Review Of Tom Thompson Flowers - Ann Arbor (5/5) + + http://www.yelp.com/biz/B_lu4c0HgyHlxOjdKxTW7w?hrid=KNa-bOGA0xltz6bHEu3-AQ + 2007-05-29T10:49:06-08:00 + This place isn't much to look at - you go in and there are buckets upon buckets of loose flowers laying around, and there isn't much room to walk around. However, they make kick-ass arrangements! And&#8230; + -83.7490005493 + 42.2747993469 + + + Sam S.'s Review Of Mitch's Place - Ann Arbor (3/5) + + http://www.yelp.com/biz/zlJ37GVxuy-9wfvWqpPm1Q?hrid=qK6d7BOgLoK3gLf2u2OXAQ + 2007-05-28T21:28:33-08:00 + Another generic sports bar with the generic stripe-o crowd. Cheap pitchers, but constant covers.<br /><br />This is where I met Dave, a.k.a. Future Guy. He's skinny, has tall, straggly hair, and wears these&#8230; + -83.7329025269 + 42.275100708 + + + Jane S.'s Review Of Special Moments Photography - Plymouth (1/5) + + http://www.yelp.com/biz/IEsTnmfhN7vFfzt724qojw?hrid=ZvALNYOlSodoOciFsmeLZA + 2007-05-28T10:18:35-08:00 + I was very unsatisfied for several reasons. First, the photographer did not have the lighting for family portraits right at all! Two faces are almost completely obscured by shadows. Also, the backdrop&#8230; + -83.4609985352 + 42.3588981628 + + + Jacqueline D.'s Review Of Embassy Hotel - Ann Arbor (4/5) + + http://www.yelp.com/biz/Vz0hW6UhF6w4JuvgsqDmMQ?hrid=eMKcIyREDk-pFGdH0EC6jg + 2007-05-27T09:23:06-08:00 + The Embassy Hotel does what it does well: It is VERY cheap ($40-50/night) and located in the heart of downtown. It is relatively clean. What to expect: Your bed won't be made, your sheets won't be&#8230; + -83.7469024658 + 42.2812004089 + + + Tony C.'s Review Of Cafe Zola - Ann Arbor (5/5) + + http://www.yelp.com/biz/BlUEgCOGzDwpOWnkQn3odw?hrid=X3rR29JnKIqAjEzo9nC2VQ + 2007-05-26T07:48:01-08:00 + Zola...this is easily one of the best experiences to be had in Ann Arbor. I'll get the negatives for this place right out in the open. It's popular, really popular. It's expensive, but not break&#8230; + -83.7489013672 + 42.2806015015 + + + Tony C.'s Review Of Melange - Ann Arbor (4/5) + + http://www.yelp.com/biz/aPdz29vOWj4fBlLlCBM7UQ?hrid=ETs0aMnHTjSLy1VTsGxCBg + 2007-05-26T07:30:59-08:00 + Melange has an excellent menu. I've tried the scallops, the perch, and the seabass. All were excellent. The two dishes I'd steer clear of are the rock beef thing and the squid appetizers.<br /><br />The rock&#8230; + -83.7481918335 + 42.283493042 + + + Tony C.'s Review Of Bennett Optometry - Ann Arbor (4/5) + + http://www.yelp.com/biz/Oa5c1Zzr6RlkGjx-0KYr1A?hrid=vUiuwPLri6D5LTPrC76UlA + 2007-05-26T07:09:43-08:00 + I just got my eyes checked out here about two months ago and overall, I was satisfied with my experience. The optometrist I got was young, but very knowledgeable and didn't seem to be in a hurry to&#8230; + -83.6924972534 + 42.3031005859 + + + Nedra B.'s Review Of Star's Cafe - Ann Arbor (4/5) + + http://www.yelp.com/biz/aNeaXyQWZ0LGH3FoNnYzmA?hrid=XUd-5ehybDuujOTinekhWA + 2007-05-26T02:53:51-08:00 + As you walk in, you hear arabic music playing the background, and about 4 or 5 tables in front of the main window. You walk up to the menu, choose from many middle eastern foods, give your order, and&#8230; + -83.782539 + 42.281079 + + + Nedra B.'s Review Of Vinology - Ann Arbor (3/5) + + http://www.yelp.com/biz/qkw4xWWgTufvBs1NcxsFnw?hrid=lFMHzQ0GwJ93Ns0kCoPWPQ + 2007-05-26T02:45:15-08:00 + I knew to expect a pricey "high class" restaurant... but in my opinion they went over the top. I went with my sister and some friends, and she ordered the little "mini burgers" and I ordered the only&#8230; + -83.7487030029 + 42.2812004089 + + + Coco C.'s Review Of Eastern Accents - Ann Arbor (4/5) + + http://www.yelp.com/biz/AztY39QdGAkoKrLy9Di2yw?hrid=HL2_XnWdZP1FO95e1q-Xjw + 2007-05-25T15:43:30-08:00 + Oooh baby, this is my dream food come to life - sweet buns with tasty meat inside of them. I'm already a big fan of WowBao in Chicago, so to find this place in Ann Arbor makes me living here a&#8230; + -83.7472991943 + 42.2803001404 + + + Liam C.'s Review Of The Dartmoor - Plymouth (1/5) + + http://www.yelp.com/biz/Q32V2uxVKKv8_fp-hGxyZQ?hrid=7zFDEW0THJGYTUPPHLZucQ + 2007-05-24T14:36:00-08:00 + Okay, so here is how fawked up it is in Plymouth.<br /><br />This place was a hotel, back in the day. Dude converts it to offices and retail, and leases the bar and restaurant out to someone else.<br /><br />the tenant gets&#8230; + -83.4705963135 + 42.3686981201 + + + Liam C.'s Review Of Omelette & Waffle Cafe - Plymouth (2/5) + + http://www.yelp.com/biz/a09i0TiPG4_yhl-fnzPzDA?hrid=I4ENTNhbAK8pLP_qJmivTQ + 2007-05-24T14:32:05-08:00 + Who does this guy pay off? Every year, he wins the Chii cook off but when you order the chili here in the restaurant, it's Hormel right out of a can!<br /><br />tired and uninspired boring diner egg dishes,&#8230; + -83.4709014893 + 42.3681983948 + + + Liam C.'s Review Of Zack's of Plymouth - Plymouth (2/5) + + http://www.yelp.com/biz/F0iuCrXUd_fEJ-LZh8wMFw?hrid=2VLIUcC_oI8b_aLTMjYx8w + 2007-05-24T14:30:12-08:00 + If you like greasy diners with vaguely ethnic workers yelling in orgy-borgy talk back int he kitchen... you're gonna love this place.<br /><br />It's cleaner than it's competitors....gotta give them props on&#8230; + -83.4692993164 + 42.3581008911 + + diff --git a/openlayers/examples/zoomLevels.html b/openlayers/examples/zoomLevels.html new file mode 100644 index 0000000..0745172 --- /dev/null +++ b/openlayers/examples/zoomLevels.html @@ -0,0 +1,76 @@ + + + + + + + + +

Zoom Level

+ +
+
+ +

+ This example shows the use of the resolutions layer option on a number of layer types. +

+ +
+ +
+

+ Set the extent of the viewable map using preset levels of scale available + to the user via the zoom slider bar. You can set the minimum, maximum + scales or resolutions, the number of levels in between and the minimum + and maximum geographic extents in your map's units. +

+

+ Default units for Scale are in inches. Resolution is specified in map units + per pixel where the default map units are decimal degrees(dd).
+ scale = resolution * OpenLayers.INCHES_PER_UNIT[units] * + OpenLayers.DOTS_PER_INCH
+ You can either set the scale or the resolution, there is no need to set both. +

+

+ You can do it with a ... +

+
+ + + diff --git a/openlayers/img/blank.gif b/openlayers/img/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bcc753a12e9854923af4b9b5b9a4b76f1bc53a6 GIT binary patch literal 42 ocmZ?wbhEHbWMp7uXkY+=|Ns9h{$ybUF?B!$NXCJQ(S^Yp0J?7nHvj+t literal 0 HcmV?d00001 diff --git a/openlayers/img/cloud-popup-relative.png b/openlayers/img/cloud-popup-relative.png new file mode 100755 index 0000000000000000000000000000000000000000..9db138abe9ec880a39711ae006dbf864720bdea8 GIT binary patch literal 2564 zcmc~bm46pc8FqF4bzL<|yCc2S5R!3Kc@Ls%psXpOQ|DiRPu2#Y9j0hQ09{sOWY zl=4FfDjAeTsz?Qm3rmNPVnhMADlrQLC`&L&6RcS6Oj~Dk`e*LEx%d2c?>Yb9`ySxy zvq@9KKm!JYX?ox=L>NpBQreR_GnJ7zLhe)LG9#9_$rV=FZpc?Uj=o+b?5R3fYip}O zAP@?LB9TZe77q*z3=R%TB$A<_q2b}-(b3Vdv9XDX38_>%IXNkl$>egmLZL9#-g-%u zkxKOOgKd1t3spLEqjB3}VK9wBmCbOyh|E_8)u|rdSase^LtTSaiMm~Paf!-Sl($D=)9jf!S?48>DBG<=>%Z&QS9k7?)fL%Q}nPIw&lsQVVjURrdr z;f)E2dbYf`Px?r(pwSlP&EI$Uj87-Zn-bL;7UhKQ9NBX<|4#E=e0IrBwu6ii_518} zN7Bm%te{3 ze6x)STaR8iYBLa+=1mm0lZF8A71A&E>6EPZySs;SA&|JA3#c7$REyASZTp;D5 zF@;Y7Dm-nG5}yK8_@{2vVov3Lp91?q6^w<7h>Fjj^**EormKp-Cr488o2G$2TgNuH84opnmmG=;b2-tm3QZTegN_l@be|54~irN5|b1o2D$vX7MfOSc$& z=H~s!uK&Ef`DsEw8jCL~`%|avuS$IHiSf|(W>+D=C8gs^HbUypT@4>afQ5Jf4W{Sd zPChX4H}5dz#6m3g@w>aBG9oG;=Z{y(e4PSo_mq0-D03@i&lr!YVB&rT03nEDCW&>19BB)2lSz76wZo-6X zruu?#zn5zt&u{*T3f(aSD^GlD!d(NFoyGJ$5cK6aA2)CJlHR!5mEvWBLCG?a$wK3} zi~HW(FV5{9y>QS=z_O(~bNH6y$?_fakUX`3_5L&_;u5!i;CU@8{xK1{Fj<|)e*=~Q zKykPOxtil&h2LyTx8?v@=tFW|*=sG&BM8|w&5kShR{(Wq>ABAS3Gxr(mZ@mxpa&xs zgQ9S4Ml&mD)x`5S8`_eni8d3uy&V+S!XhZVy0s8Jfx^)94P_wOCt`#ll9}<>wkM47 zW47x{YBH$Zt2P{39TO4sFsL}-dMZ#ok+GP795(JiAA1)*vgp77SKUn>wz=R|Q7s6x%3x#x*o%$PS~E#Kvah7uL@tc9DrG$p%eE zrT3dVZqBjVz=<+a2e>~^Dkq` zikHW(0V50o)F%g%O+h``UNez5=Ht=Vf>|Q?N^(R-SjH{|PUR%Actv z;gRI*%RLFKT}zX~wU}Rx3|G?07xz7IfppQggrO^*87%{ACv)7Og3_&{v={7zEqy~p zz0rO#sYMk7Xin1RcqGl8!BueQo=U*%->_?2?r{M5iqdEco{U1ar_kn=S9i^G1mpjv%bjRhf9f#lv>ZWb}R;=a405aV_Ik430$v(00Af zgN;E+g$VA^u$Ft(O%<7LM!BI@ZTjJqdn^6PwB$!68F)Lrdd(W#KvVCKCuk3nmNm?r31M7pSbPYcG2Yb^G4*&oF literal 0 HcmV?d00001 diff --git a/openlayers/img/drag-rectangle-off.png b/openlayers/img/drag-rectangle-off.png new file mode 100644 index 0000000000000000000000000000000000000000..fc6daf4dc90298bc0114488ab35e30d01c767594 GIT binary patch literal 1202 zcmV;j1Wo&iP)3_}4!g7G zLwCD9ZK3T_Ds8QT3j(FFCV!S{Tyz-(KM2U&^qo_Tqtx0T2xf z510r*#p}0MU9L}Z-I5}*imKAuOe&$h1i3c-hW66dNWGgDQS!$lGm&*$Zs^Z=3x zA=nPn)W?J(iFoF2+#PP1+YhXUDlAtmb++2)o?hW~P&fSo%*!cXYv=A=!-7CbqH<5E z0hD@Z)-qD}${R~JEYeVle^3!5nPX{K$m33K)%NxEjkRmN2RI!w<`WknQgdINUe;8W zS8sHiokZp6sR`-mp6PEs2%P;r8O;!iu#0mIJKn4k(_~?fw}@+2?^2k|h8MOta%nq- zMMgNC>eY)WUk86JO2&2QOko5lZ>R|cGo__Wc4CYlv3ba*^`#mWS4O2ve+iK*X}yIp zyO_vj;pbmcUv~&6uB&W`V`s}cy-mpejyg8a^Wex6s$^5XXMXQ zvnHoT^O{@#6b*n+X#gdQM?wey17H9`ms6QpDV87r7?n;ZNi3|0ys9d^w*-~qYrus8O{egy> zf~|E%0Ov;1AALF_gfeT^ahn^Bok3YtsIk8A(RX?lJBxtnEUA0Cchd^jaq`y%cq(?m z-*@Ju+djH&rJ8T=J!IW>b#nRmXk=a@fRSOPW<~DV-@?BhZ{D(_lxB5OOb+mg{`Qm_ zPxyzLy~5y2OR>40aXEP^eCT_L^>}LW)BHpL{pSq;RYkFo@-}>dgOVUCf=hW530T2H(ddhG1v#03MBLu?a#LnhmzMM9% z(Qa>y7j_)3kekr^?_HYHHwt{_J+!@#hJ{DK^fh}~wXuJOPiFGUMglgYtn*NX1*vLr z+^5Z7R<(R=GW?z>jpBKA z4prWr$7l1DF%hj3)kHMba!p&K!Gq1;hMa(zxqDG$S2wD?@e^1{U(pzk4Z2C1se|Mo zIq@5S`Bv)tU3kHOv&170BzaM>EcRXBGq7lXTS8~ChJ(fbkq96ZFc((4x~C_)W`d`u z(tSP)5{X|)P2RS|tpVX%ogOsbb2z9amKQ%g zSm5Ig0E|_;FQB^4!RPBpYFWCc>2GSJRXsBP6blMVC_I#$DntPQU_StEv`r{gx`nxs zR&{c5${wJ-*IQKgN7CQ_JSsPYiBeNq%I^xG-q>}oR(Dt0B{;3*AUAxam=Ii7Y%0IunquRlK!lkzf`nOx9q;&Xe8IL%zWQi8B1?Q_W5A|Kv+?ee#IlG zG(<#MiN78$9+yc%LFA}S(c5mEdy4Ti}YS&gpK~WCAUqqlkEA9;8HJ1l+cHL6%UAee1VBOtALSF%C zw^|8PMz%aAMb_8KkU8O~(aC%4pi|h@1txE0V_koh;%3Dh6+FZpm2*ZE+W1e z0lRMYqb7scP43HJRpwg*`&&M|iM|8pHo54YHhlTHs)&TdTMX%sM6#}#b`FpT8_7Cs z`t~(NcVm5D>&%OhdU#QYtKIEPLFb^FHpib)P9}kaFGuA^j8nvK!w*1(oX##v#J9aA zJ17nS185;EZMpzz#sSLN1jND3Vpo@%4RwmP9{+!#ds6hVgfcd_vHn^+q+#<+?yuS) zgv7JKDMb8@Rsg`#axX}u`FrIGg82vhqzk&qQIo?#@j@q_)sBUHe|r^S3+3en`2Rl3 zVOilNw$gS^UsHeYu#xe|uq=(sFF9MjQ%iYNhunCV%Z1UT!I~UF8c)AfDJx2PSttO+ g=OxDHCB9(%2l8UY($ek@rvLx|07*qoM6N<$f|>;}-v9sr literal 0 HcmV?d00001 diff --git a/openlayers/img/east-mini.png b/openlayers/img/east-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..0707567a7d50203cedc0bd73637db130aeb4b789 GIT binary patch literal 451 zcmV;!0X+VRP)D z)UiuKQ547V@0BoUP#nS`XpnRXbg>~@grLPG3u+4_aTVc#|AOFy{s0FzArL3Q$+RGp z6hScpCk?Ej9E2nZ>^40pd+O6O-t*(bLXn7@U~tC>wgp@Zp;~nzhr>!PcTA~thR3sM1iR9OwDSA6X*4cK zrH-)MH|Aj>A=Lf3GcuV3;jo)d=MqKnVm8l=9~v6A#j;K^>8ITe5ePW+B6~}1&FQp} z&!12zoZ@oXez&|!uYWT6rrRAd7<~RYUt0z#m!FA7Z)mmNr(1PHP_H*cQEtg*JF_CS zxzK3zMI!Nls@52fC-b63T}VnvCi6r*en-FmvFO5SDV54UsM&nO=gUy7zAgd)`ald; tfBhPAE~Ro0tH1sPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10USw0 zK~y+TWBmXBKLa{oWbCm7ia7(ZDG-|gu@r_PbODe-FwDTv%@4%$fEZ{xi5STcYoO*Q zBpU#;5aKnkOK=*($2al6nAlYOu7nzd(>t7;{r|sw`T76%@4x?pf;QkWjG-GCu(-oR zKw#4UA3uKo|Muv1SJiO1dA<80RX2fQRqgESEK*{002ovPDHLkV1i4nw6y>L literal 0 HcmV?d00001 diff --git a/openlayers/img/layer-switcher-minimize.png b/openlayers/img/layer-switcher-minimize.png new file mode 100644 index 0000000000000000000000000000000000000000..e80bf213f8127f0cae11f6b29d870f04effcac1f GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|mSQK*5Dp-y;YjHK@+C`LBT9nv z(@M${i&7cN%ggmL^RkPR6AM!H@{7`Ezq647D(d!haSXBOeLKmK>yUwnOZ<_thlh+y zpHJM=yxeEujIhx2s`GJMsI7=b{!q*QiBG{2IkI9M;Wh2U6{x z%)QC_*1W4v`=8_v#^opE8?-;nP*rK2cvISQ@3U8`vD1t+w>)o;6MD-RazOi2_JU}x tKmRXod$TcG?U~Hh#Er-Qc^$prcIkauSI*=veW0@#JYD@<);T3K0RU+eU$+1N literal 0 HcmV?d00001 diff --git a/openlayers/img/marker-blue.png b/openlayers/img/marker-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..83a90b4c85f708b08220ff501e281b6df6e1171c GIT binary patch literal 992 zcmV<610Vc}P)X1^@s6-qmI800004b3#c}2nYxW zd>{!xLrWaJ zX<&2cGVi$Fn;O%iVYe{MyHLDr%-V2_xvjO8>z;f5pY!~B(I&gQXWOOv!Sm+#{eC~^ zJUq`iKM)b-TL3BqpV$ImaY6q141yr;lH{Pea?K`7_J_s*Z1~qu0LA{m!uFEVGNt}R znvO>`+EI6&0->-b`9mK7@XeNGlYpFJj6Eg$Ll>UdxOLG>)yD#&C_m6L_eXI0#8z!& zu1$!F8;$qHqacvFaI5b6@xO_~hUwT#g>XhkGhuXc*9~3CGgmyh8KM+`BnLs9qpZ9#&tn=Y;?3`BhMuV=B3A$aB1&=YwtpKxV$BS! zEZ>Nl!{6bBEe$x(m_{HJ&VzmvJ8ZeGeTj&!1G!h~VMz}5)_wGIXvwliJ-6spzuoIW zW8_)IHnkN*G!6j5lt@Iw#QD)gORZKg5kOnhPL(@${S+_<3IL8{9=qG~W45;|SrG8% zwJ7~QbZ5|Y?WXDd94HYPmZ`oIJGo2c+?^9>Xc;70_UeYNR1*=O6*>uyXEWnH*E^c| zOl^8yjvg{Och3`1=S(dR3IL|AyxIQ6K~q;JJb}XlX{3^8EK^r%y>w3~5#0tTcBQSs z^w4nb)3;Q|vGx+tp9Mn!z%;V^QpwZK=+G}Y{mx`7{V{sCpSasRTXt3`5sh)zZHRwX zqfYg-?0sB3vtKv=IULW=dQK<+xUSte*ne}P=hoK%fUnNJXK-@Q5z(!=a)nINs^TTf zv%BBFN|GF$08sp&rzsI35G=a3AY5XAvF-oMh@O1g$9EK2H literal 0 HcmV?d00001 diff --git a/openlayers/img/marker-gold.png b/openlayers/img/marker-gold.png new file mode 100644 index 0000000000000000000000000000000000000000..2ff9ec52813915962a1f15d9b481cb769b102d18 GIT binary patch literal 831 zcmV-F1Hk-=P)X1^@s6-qmI800004b3#c}2nYxW zdR7i=X zm0L(uQ51&1J>KS=IZl?TU6ANPJtT>sX4w@Xirx%_Uc%}vgDw!1LJ*};FA<>_71o1g zqy>seJ(OK2%Y>whsZl`}1fy)6GdeRms|Ot!ouf{=;D6cs-{1Kci?cT(!gK=GL`PEv z%#FxDogq4kBHfOemxE8&=mj>+7z!lBJ7`?Bl>V+JL^_a$3S^FfN4HZ7MEw^O$Z=@& z9N5i(w|xW{)X&FAZU&~)pbbc!77D1iSc;tnW_`tYSg3~IBc+G&>vsBq{7IoeveUuS z%ryGHH%|@>RZ9)BAPFNMK{8wfWIY zSic*J&%??c;Bs60_U5BjuRwq#8*sU&moHU!5i4`u0~qvzXAo=(9=2FRYwtt%SAO`1 zC<_iLJHd(RdL2HDhu09@J|aU${Cokgj`>7X^7XWHBDN3nDS{&W)8qk-eTDNFbA3i}=0sWooOO6^*n z%Jt4B98pn|16^)dl82|y#TF514c)U%G>b@G?;koY-6Akm$`j}D28OAf2n<53ZmINm z2cADKt^fHqcM;u=3z%nhJ}l|zhuTHBU2*|$_#PA%V|slY6_MYTZA@`VCuwoGI~vEQ zyjn`YY4DcOdHnZt5*x#@%~`mEz~3#1)4&8WX8cA0F^10f#>x@s{#^_hI#*`>@Buqh z7vO$=1JUgC0SU8)iU>}FXUT~SDn(%={)nJJdTb2UQw=9n{{ZUlb)-Lb_=Nxf002ov JPDHLkV1l45bA|u_ literal 0 HcmV?d00001 diff --git a/openlayers/img/marker-green.png b/openlayers/img/marker-green.png new file mode 100644 index 0000000000000000000000000000000000000000..17168f1b91a857283440eb923328ff7743c276d8 GIT binary patch literal 967 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 Z3;<*L46wTc`o91G002ovPDHLkV1nF_YdHV_ literal 0 HcmV?d00001 diff --git a/openlayers/img/measuring-stick-on.png b/openlayers/img/measuring-stick-on.png new file mode 100644 index 0000000000000000000000000000000000000000..cdb8f345b942219122bc24cd7bcdad1f35b09ca1 GIT binary patch literal 3816 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 literal 0 HcmV?d00001 diff --git a/openlayers/img/north-mini.png b/openlayers/img/north-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a0b4033e40426b3dfed17b330fe602607c33c3 GIT binary patch literal 484 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 literal 0 HcmV?d00001 diff --git a/openlayers/img/slider.png b/openlayers/img/slider.png new file mode 100644 index 0000000000000000000000000000000000000000..23afd573bbf1832dafe81119693cce89ea945dc9 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W^!3HFa4)S;aDVAa<&kznEsNqQI0P-bETq8EaloF>&ogTfQa-0k``KYHdRL z3--2libuR!>$`)2eZkg6kJ!ExFiQ*dJLWT*8;D(6$7;{WEo8nYE3M1?ehSMZ;{s-r z2Z`?7QygA>+q8OV#sO&=zxg@3TTVamxqn~KRounFMd0N#@6x~!le5)6ul&A7F5^6W zIeuc(gNC4^H_o>d{#mdtzJueKL=Q;SyztGeOefiYzyEj1s^ooKcMzopr08#yEu>b%7 literal 0 HcmV?d00001 diff --git a/openlayers/img/south-mini.png b/openlayers/img/south-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4ac8a0f196dcf06d1627ed86f91ccaf9c3f2d7 GIT binary patch literal 481 zcmV<70UrK|P)z zlD|uWQ51%sD?!juGzqmigdjB4P>n(VKtpo{L6Zp|_y@QMIk~y$W(0zxOQr=W2UV*LLZQ8h5D{T}J369`JS`r7Bb}~H1Vy7S+~0p#g8l&btlBjjNxZ z4Sc>k!>yWjV+H}p*?_FsBp7_8So|9F>2!rytYBsZ$l8FU*`(F#;PIpYXtz7K-PcwS zfTR);lnR7_Lo-Jru}`T~=k)Z-3K9{~j{2Y_;2BsQcde~0Q>*<_t2NCaI^Yt~>Pn=W z8KnX{z@-_?qIBRuM9aWXj(UO%h)e;A^ft-#g~3L{rBq-G*abF$jh>vN`@=~Q&5(^h XLCTLS$T zl)paibF^>Dft7U1W{0Gu@=E42itQHT%26p-YAIwfI%Qqh(mLsLs3wZ zP(+h9=ineoV7I|6dC&KJhTrY{xSxB@xtuErAy7+_ic#PY2m>KtLzASEMFp?}CE#S< zL0ym}759L1U~^FjfIL-+DM&K8MJBU58^pLBLr5U7MzeWLqj7}WZP&ytKZDhsiPO1? zqU@7S?;y*P?nM^HucMLGDwE3vDHNjEY%4~^{({14XCmRIREpv8IOYPTL7|D^^*Sh* z4~WNIrU4Vl(?+lNL8sGaH2V4%=#5a zI(-w*NuC&V>Gm(yx`qw)3->;~_Os(HkJvl&8*k0>5?Mr9zb`E~lJO{^#5=$8ppF>tyzo!t1#uE5{2^Q@d+w8{^rUH@BD9j>SO`@5+8V3~Et zERDk?myN;y$@l%wDi51Kkj-FRf343l$70joc`v0O%=1ZUWRF<^3T zk~>cVK@>*M;IIp1RV*w-?1+t)nD}T+`~liYV?k$Yvi|}SS}QHAtTeHs~8=CeJ45 fP4rX#?H_#tm&$|IMWgd%00000NkvXXu0mjfXz|d8 literal 0 HcmV?d00001 diff --git a/openlayers/img/zoom-world-mini.png b/openlayers/img/zoom-world-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..2159dde7ba0c32010d5d76910fd4d49bae925912 GIT binary patch literal 1072 zcmV-01kd}4P)K;tg z_(&AUz=Rk^zzAfh$QTk7qoAn37>t|1C}ms<{M$W{;TW8^lbn3#@;m2<;72!Gm{<%6 z2|6+}L(ypD)YkU#`0+4;uw^)+|ARCdIn~vB(P+FG8gigecv4aE7OORkxVQiu4kw2W z)zQ;4y)p5Boztfic>VeZ?Dl11V(wzKKA^C$g@uI`va)K}v7?mE&IzikzsF|Vy)~$) zD3R>!?PO$BGc~oq{rh_{8dbb{HA!%=F9w5x)m0Zyo(wZEFw4Gu;oQ0N-A0gJui*Ic zII61N@#f7GM~^l#JnSGfHHdU^J>Qn{|lABF>%LMO4(?wTk3& zDLFayw6~8@UT!5bGlY*H?SzN>t(X4n*`K7Q1_2 zF>vo*4=-Mf6B43iY;2zV{Aer|14^YQCX<%HKm|vRM6+$15{X2_+}tv^Z+Brf>j01* zI1q{34av!RT3bi(@{-WdFi1ngAVo!qR8+hJKoDH``g(Hd(r*AyLsZ@kqE+s!dnk!e52@dw<#ED-p8r3v54kGR9 z`b12OKU%Ffp`l93%6h1;A0Re10JB*~QPEcjf(w6tZ#+E2G&TJ}X=yh$+iu)$Fqw3m zJlTxY<$@0%{^I7%Z;(htOv1Hm7W8@_ ztkzI+a_ZJv2bi2(q_VP?jEoSHl73?U{s;~pjKt5+3#U^cHa38Xi3KiROhToS@$%&- z;^Vc{*7niSG5#3@aQ=KNV`G2w{(U}mb^RPW)gcyqV(DCY@~oDBzn3yhE&XXd)qOO$&jb@;r+~Y zp$B&+Op96lcFXfce&P<>rxl1f*5#jHu5oIzdd9H^{|B>U_+%4qn^nE{=e+)U>glIW z-s_&&H+eZ9TQb=;*L79Lf~5+fDt!wsP0$i@56JWo?NnZ2vZU*XV2D(Z>mv>=UdazP zqi!2_?3TAqc$asRwKTzJ#fgag&8&NsOiH^_UNhcVcA}?CXUEN^IKf#~uE*ABCe2c6 z3Ts>zwq)n;=px6p%=>a@t7|`cox5#8c#8?d$PKe^&T~8_aeU?fjGsSiX%Dn1C(U*(jVTmsry}V!7KF0-TU&#D^nESl?#TtTrirz zD8F{=e4a<|+Ut&Q5_J?6+#-^4;M|h)HhZ>yn;m%PZm6K6x8p3OLYAp*U;4si9G5EM e^{Vgc6Y?kJ*;+Ny_dEo~2!p4qpUXO@geCy#6~E2^ literal 0 HcmV?d00001 diff --git a/openlayers/lib/Firebug/errorIcon.png b/openlayers/lib/Firebug/errorIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..2d75261bb675f5f878a9ca549340d11694287ea9 GIT binary patch literal 457 zcmV;)0XF`LP)5Ui~H0X8YDC6$Gxpb|xtYf@N==`2Jc z7Ah8ji(kR7VtwakC$}D$g(o{ZGjC>QZ;f+~bR8H|#%4hcOnLVm*j;w6MZq#Egs5(a zc4lEugK?iQ0QcYtDcH902T2xS;XcvY8O)TA|L_Qo0dkkJVlXBT;dmV(QXWLO$HEed zt}ftbg3DK{l45N>4BPBOtRiE?7^^l0JFaL_w@cLT6E&N;kZtyH3~NT_jk(q5@35sP zaxP8XaIwukAMZ)K?GhDNr$f|e@AO4;e+3u-uo^Lr*!;%I00000NkvXXu0mjfj3mDh literal 0 HcmV?d00001 diff --git a/openlayers/lib/Firebug/firebug.css b/openlayers/lib/Firebug/firebug.css new file mode 100644 index 0000000..1f041c4 --- /dev/null +++ b/openlayers/lib/Firebug/firebug.css @@ -0,0 +1,209 @@ + +html, body { + margin: 0; + background: #FFFFFF; + font-family: Lucida Grande, Tahoma, sans-serif; + font-size: 11px; + overflow: hidden; +} + +a { + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +.toolbar { + height: 14px; + border-top: 1px solid ThreeDHighlight; + border-bottom: 1px solid ThreeDShadow; + padding: 2px 6px; + background: ThreeDFace; +} + +.toolbarRight { + position: absolute; + top: 4px; + right: 6px; +} + +#log { + overflow: auto; + position: absolute; + left: 0; + width: 100%; +} + +#commandLine { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 18px; + border: none; + border-top: 1px solid ThreeDShadow; +} + +/************************************************************************************************/ + +.logRow { + position: relative; + border-bottom: 1px solid #D7D7D7; + padding: 2px 4px 1px 6px; + background-color: #FFFFFF; +} + +.logRow-command { + font-family: Monaco, monospace; + color: blue; +} + +.objectBox-null { + padding: 0 2px; + border: 1px solid #666666; + background-color: #888888; + color: #FFFFFF; +} + +.objectBox-string { + font-family: Monaco, monospace; + color: red; + white-space: pre; +} + +.objectBox-number { + color: #000088; +} + +.objectBox-function { + font-family: Monaco, monospace; + color: DarkGreen; +} + +.objectBox-object { + color: DarkGreen; + font-weight: bold; +} + +/************************************************************************************************/ + +.logRow-info, +.logRow-error, +.logRow-warning { + background: #FFFFFF no-repeat 2px 2px; + padding-left: 20px; + padding-bottom: 3px; +} + +.logRow-info { + background-image: url(infoIcon.png); +} + +.logRow-warning { + background-color: cyan; + background-image: url(warningIcon.png); +} + +.logRow-error { + background-color: LightYellow; + background-image: url(errorIcon.png); +} + +.errorMessage { + vertical-align: top; + color: #FF0000; +} + +.objectBox-sourceLink { + position: absolute; + right: 4px; + top: 2px; + padding-left: 8px; + font-family: Lucida Grande, sans-serif; + font-weight: bold; + color: #0000FF; +} + +/************************************************************************************************/ + +.logRow-group { + background: #EEEEEE; + border-bottom: none; +} + +.logGroup { + background: #EEEEEE; +} + +.logGroupBox { + margin-left: 24px; + border-top: 1px solid #D7D7D7; + border-left: 1px solid #D7D7D7; +} + +/************************************************************************************************/ + +.selectorTag, +.selectorId, +.selectorClass { + font-family: Monaco, monospace; + font-weight: normal; +} + +.selectorTag { + color: #0000FF; +} + +.selectorId { + color: DarkBlue; +} + +.selectorClass { + color: red; +} + +/************************************************************************************************/ + +.objectBox-element { + font-family: Monaco, monospace; + color: #000088; +} + +.nodeChildren { + margin-left: 16px; +} + +.nodeTag { + color: blue; +} + +.nodeValue { + color: #FF0000; + font-weight: normal; +} + +.nodeText, +.nodeComment { + margin: 0 2px; + vertical-align: top; +} + +.nodeText { + color: #333333; +} + +.nodeComment { + color: DarkGreen; +} + +/************************************************************************************************/ + +.propertyNameCell { + vertical-align: top; +} + +.propertyName { + font-weight: bold; +} diff --git a/openlayers/lib/Firebug/firebug.html b/openlayers/lib/Firebug/firebug.html new file mode 100644 index 0000000..861e639 --- /dev/null +++ b/openlayers/lib/Firebug/firebug.html @@ -0,0 +1,23 @@ + + + + + + Firebug + + + + +
+ Clear + + Close + +
+
+ + + + + diff --git a/openlayers/lib/Firebug/firebug.js b/openlayers/lib/Firebug/firebug.js new file mode 100644 index 0000000..a6242c3 --- /dev/null +++ b/openlayers/lib/Firebug/firebug.js @@ -0,0 +1,674 @@ + +if (!window.console || !console.firebug) { (function() +{ + window.console = + { + log: function() + { + logFormatted(arguments, ""); + }, + + debug: function() + { + logFormatted(arguments, "debug"); + }, + + info: function() + { + logFormatted(arguments, "info"); + }, + + warn: function() + { + logFormatted(arguments, "warning"); + }, + + error: function() + { + logFormatted(arguments, "error"); + }, + + assert: function(truth, message) + { + if (!truth) + { + var args = []; + for (var i = 1; i < arguments.length; ++i) + args.push(arguments[i]); + + logFormatted(args.length ? args : ["Assertion Failure"], "error"); + throw message ? message : "Assertion Failure"; + } + }, + + dir: function(object) + { + var html = []; + + var pairs = []; + for (var name in object) + { + try + { + pairs.push([name, object[name]]); + } + catch (exc) + { + } + } + + pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; }); + + html.push(''); + for (var i = 0; i < pairs.length; ++i) + { + var name = pairs[i][0], value = pairs[i][1]; + + html.push('', + '', ''); + } + html.push('
', + escapeHTML(name), ''); + appendObject(value, html); + html.push('
'); + + logRow(html, "dir"); + }, + + dirxml: function(node) + { + var html = []; + + appendNode(node, html); + logRow(html, "dirxml"); + }, + + group: function() + { + logRow(arguments, "group", pushGroup); + }, + + groupEnd: function() + { + logRow(arguments, "", popGroup); + }, + + time: function(name) + { + timeMap[name] = (new Date()).getTime(); + }, + + timeEnd: function(name) + { + if (name in timeMap) + { + var delta = (new Date()).getTime() - timeMap[name]; + logFormatted([name+ ":", delta+"ms"]); + delete timeMap[name]; + } + }, + + count: function() + { + this.warn(["count() not supported."]); + }, + + trace: function() + { + this.warn(["trace() not supported."]); + }, + + profile: function() + { + this.warn(["profile() not supported."]); + }, + + profileEnd: function() + { + }, + + clear: function() + { + consoleBody.innerHTML = ""; + }, + + open: function() + { + toggleConsole(true); + }, + + close: function() + { + if (frameVisible) + toggleConsole(); + } + }; + + // ******************************************************************************************** + + var consoleFrame = null; + var consoleBody = null; + var commandLine = null; + + var frameVisible = false; + var messageQueue = []; + var groupStack = []; + var timeMap = {}; + + var clPrefix = ">>> "; + + var isFirefox = navigator.userAgent.indexOf("Firefox") != -1; + var isIE = navigator.userAgent.indexOf("MSIE") != -1; + var isOpera = navigator.userAgent.indexOf("Opera") != -1; + var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1; + + // ******************************************************************************************** + + function toggleConsole(forceOpen) + { + frameVisible = forceOpen || !frameVisible; + if (consoleFrame) + consoleFrame.style.visibility = frameVisible ? "visible" : "hidden"; + else + waitForBody(); + } + + function focusCommandLine() + { + toggleConsole(true); + if (commandLine) + commandLine.focus(); + } + + function waitForBody() + { + if (document.body) + createFrame(); + else + setTimeout(waitForBody, 200); + } + + function createFrame() + { + if (consoleFrame) + return; + + window.onFirebugReady = function(doc) + { + window.onFirebugReady = null; + + var toolbar = doc.getElementById("toolbar"); + toolbar.onmousedown = onSplitterMouseDown; + + commandLine = doc.getElementById("commandLine"); + addEvent(commandLine, "keydown", onCommandLineKeyDown); + + addEvent(doc, isIE || isSafari ? "keydown" : "keypress", onKeyDown); + + consoleBody = doc.getElementById("log"); + layout(); + flush(); + } + + var baseURL = getFirebugURL(); + + consoleFrame = document.createElement("iframe"); + consoleFrame.setAttribute("src", baseURL+"/firebug.html"); + consoleFrame.setAttribute("frameBorder", "0"); + consoleFrame.style.visibility = (frameVisible ? "visible" : "hidden"); + consoleFrame.style.zIndex = "2147483583"; + consoleFrame.style.position = document.all ? "absolute" : "fixed"; + consoleFrame.style.width = "100%"; + consoleFrame.style.left = "0"; + consoleFrame.style.bottom = "0"; + consoleFrame.style.height = "200px"; + document.body.appendChild(consoleFrame); + } + + function getFirebugURL() + { + var scripts = document.getElementsByTagName("script"); + for (var i = 0; i < scripts.length; ++i) + { + if (scripts[i].src.indexOf("firebug.js") != -1) + { + var lastSlash = scripts[i].src.lastIndexOf("/"); + return scripts[i].src.substr(0, lastSlash); + } + } + } + + function evalCommandLine() + { + var text = commandLine.value; + commandLine.value = ""; + + logRow([clPrefix, text], "command"); + + var value; + try + { + value = eval(text); + } + catch (exc) + { + } + + console.log(value); + } + + function layout() + { + var toolbar = consoleBody.ownerDocument.getElementById("toolbar"); + var height = consoleFrame.offsetHeight - (toolbar.offsetHeight + commandLine.offsetHeight); + height = Math.max(height, 0); + consoleBody.style.top = toolbar.offsetHeight + "px"; + consoleBody.style.height = height + "px"; + + commandLine.style.top = (consoleFrame.offsetHeight - commandLine.offsetHeight) + "px"; + } + + function logRow(message, className, handler) + { + if (consoleBody) + writeMessage(message, className, handler); + else + { + messageQueue.push([message, className, handler]); + waitForBody(); + } + } + + function flush() + { + var queue = messageQueue; + messageQueue = []; + + for (var i = 0; i < queue.length; ++i) + writeMessage(queue[i][0], queue[i][1], queue[i][2]); + } + + function writeMessage(message, className, handler) + { + var isScrolledToBottom = + consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight; + + if (!handler) + handler = writeRow; + + handler(message, className); + + if (isScrolledToBottom) + consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight; + } + + function appendRow(row) + { + var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody; + container.appendChild(row); + } + + function writeRow(message, className) + { + var row = consoleBody.ownerDocument.createElement("div"); + row.className = "logRow" + (className ? " logRow-"+className : ""); + row.innerHTML = message.join(""); + appendRow(row); + } + + function pushGroup(message, className) + { + logFormatted(message, className); + + var groupRow = consoleBody.ownerDocument.createElement("div"); + groupRow.className = "logGroup"; + var groupRowBox = consoleBody.ownerDocument.createElement("div"); + groupRowBox.className = "logGroupBox"; + groupRow.appendChild(groupRowBox); + appendRow(groupRowBox); + groupStack.push(groupRowBox); + } + + function popGroup() + { + groupStack.pop(); + } + + // ******************************************************************************************** + + function logFormatted(objects, className) + { + var html = []; + + var format = objects[0]; + var objIndex = 0; + + if (typeof(format) != "string") + { + format = ""; + objIndex = -1; + } + + var parts = parseFormat(format); + for (var i = 0; i < parts.length; ++i) + { + var part = parts[i]; + if (part && typeof(part) == "object") + { + var object = objects[++objIndex]; + part.appender(object, html); + } + else + appendText(part, html); + } + + for (var i = objIndex+1; i < objects.length; ++i) + { + appendText(" ", html); + + var object = objects[i]; + if (typeof(object) == "string") + appendText(object, html); + else + appendObject(object, html); + } + + logRow(html, className); + } + + function parseFormat(format) + { + var parts = []; + + var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/; + var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat}; + + for (var m = reg.exec(format); m; m = reg.exec(format)) + { + var type = m[8] ? m[8] : m[5]; + var appender = type in appenderMap ? appenderMap[type] : appendObject; + var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); + + parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); + parts.push({appender: appender, precision: precision}); + + format = format.substr(m.index+m[0].length); + } + + parts.push(format); + + return parts; + } + + function escapeHTML(value) + { + function replaceChars(ch) + { + switch (ch) + { + case "<": + return "<"; + case ">": + return ">"; + case "&": + return "&"; + case "'": + return "'"; + case '"': + return """; + } + return "?"; + }; + return String(value).replace(/[<>&"']/g, replaceChars); + } + + function objectToString(object) + { + try + { + return object+""; + } + catch (exc) + { + return null; + } + } + + // ******************************************************************************************** + + function appendText(object, html) + { + html.push(escapeHTML(objectToString(object))); + } + + function appendNull(object, html) + { + html.push('', escapeHTML(objectToString(object)), ''); + } + + function appendString(object, html) + { + html.push('"', escapeHTML(objectToString(object)), + '"'); + } + + function appendInteger(object, html) + { + html.push('', escapeHTML(objectToString(object)), ''); + } + + function appendFloat(object, html) + { + html.push('', escapeHTML(objectToString(object)), ''); + } + + function appendFunction(object, html) + { + var reName = /function ?(.*?)\(/; + var m = reName.exec(objectToString(object)); + var name = m ? m[1] : "function"; + html.push('', escapeHTML(name), '()'); + } + + function appendObject(object, html) + { + try + { + if (object == undefined) + appendNull("undefined", html); + else if (object == null) + appendNull("null", html); + else if (typeof object == "string") + appendString(object, html); + else if (typeof object == "number") + appendInteger(object, html); + else if (typeof object == "function") + appendFunction(object, html); + else if (object.nodeType == 1) + appendSelector(object, html); + else if (typeof object == "object") + appendObjectFormatted(object, html); + else + appendText(object, html); + } + catch (exc) + { + } + } + + function appendObjectFormatted(object, html) + { + var text = objectToString(object); + var reObject = /\[object (.*?)\]/; + + var m = reObject.exec(text); + html.push('', m ? m[1] : text, '') + } + + function appendSelector(object, html) + { + html.push(''); + + html.push('', escapeHTML(object.nodeName.toLowerCase()), ''); + if (object.id) + html.push('#', escapeHTML(object.id), ''); + if (object.className) + html.push('.', escapeHTML(object.className), ''); + + html.push(''); + } + + function appendNode(node, html) + { + if (node.nodeType == 1) + { + html.push( + '
', + '<', node.nodeName.toLowerCase(), ''); + + for (var i = 0; i < node.attributes.length; ++i) + { + var attr = node.attributes[i]; + if (!attr.specified) + continue; + + html.push(' ', attr.nodeName.toLowerCase(), + '="', escapeHTML(attr.nodeValue), + '"') + } + + if (node.firstChild) + { + html.push('>
'); + + for (var child = node.firstChild; child; child = child.nextSibling) + appendNode(child, html); + + html.push('
</', + node.nodeName.toLowerCase(), '>
'); + } + else + html.push('/>'); + } + else if (node.nodeType == 3) + { + html.push('
', escapeHTML(node.nodeValue), + '
'); + } + } + + // ******************************************************************************************** + + function addEvent(object, name, handler) + { + if (document.all) + object.attachEvent("on"+name, handler); + else + object.addEventListener(name, handler, false); + } + + function removeEvent(object, name, handler) + { + if (document.all) + object.detachEvent("on"+name, handler); + else + object.removeEventListener(name, handler, false); + } + + function cancelEvent(event) + { + if (document.all) + event.cancelBubble = true; + else + event.stopPropagation(); + } + + function onError(msg, href, lineNo) + { + var html = []; + + var lastSlash = href.lastIndexOf("/"); + var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1); + + html.push( + '', msg, '', + '' + ); + + logRow(html, "error"); + }; + + function onKeyDown(event) + { + if (event.keyCode == 123) + toggleConsole(); + else if ((event.keyCode == 108 || event.keyCode == 76) && event.shiftKey + && (event.metaKey || event.ctrlKey)) + focusCommandLine(); + else + return; + + cancelEvent(event); + } + + function onSplitterMouseDown(event) + { + if (isSafari || isOpera) + return; + + addEvent(document, "mousemove", onSplitterMouseMove); + addEvent(document, "mouseup", onSplitterMouseUp); + + for (var i = 0; i < frames.length; ++i) + { + addEvent(frames[i].document, "mousemove", onSplitterMouseMove); + addEvent(frames[i].document, "mouseup", onSplitterMouseUp); + } + } + + function onSplitterMouseMove(event) + { + var win = document.all + ? event.srcElement.ownerDocument.parentWindow + : event.target.ownerDocument.defaultView; + + var clientY = event.clientY; + if (win != win.parent) + clientY += win.frameElement ? win.frameElement.offsetTop : 0; + + var height = consoleFrame.offsetTop + consoleFrame.clientHeight; + var toolbar = consoleBody.ownerDocument.getElementById("toolbar"); + var y = Math.max(height - clientY, + toolbar.offsetHeight + commandLine.offsetHeight); + + consoleFrame.style.height = y + "px"; + layout(); + } + + function onSplitterMouseUp(event) + { + removeEvent(document, "mousemove", onSplitterMouseMove); + removeEvent(document, "mouseup", onSplitterMouseUp); + + for (var i = 0; i < frames.length; ++i) + { + removeEvent(frames[i].document, "mousemove", onSplitterMouseMove); + removeEvent(frames[i].document, "mouseup", onSplitterMouseUp); + } + } + + function onCommandLineKeyDown(event) + { + if (event.keyCode == 13) + evalCommandLine(); + else if (event.keyCode == 27) + commandLine.value = ""; + } + + window.onerror = onError; + addEvent(document, isIE || isSafari ? "keydown" : "keypress", onKeyDown); + + if (document.documentElement.getAttribute("debug") == "true") + toggleConsole(true); +})(); +} diff --git a/openlayers/lib/Firebug/firebugx.js b/openlayers/lib/Firebug/firebugx.js new file mode 100644 index 0000000..4c8b30f --- /dev/null +++ b/openlayers/lib/Firebug/firebugx.js @@ -0,0 +1,9 @@ + +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", + "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; + + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {} +} diff --git a/openlayers/lib/Firebug/infoIcon.png b/openlayers/lib/Firebug/infoIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..da1e5334c19375c7855e04792661bf2cc15b7e14 GIT binary patch literal 524 zcmV+n0`vWeP)k!W#MOQK{ljl)GVz=%0?7rtE9wY7Lo;JgN;%aBBhkF zup$d#AvGJB@i#x7d!6%U9&aT1>bvKh+xgD9@4TZarC_79XA_3Y)u z4jj;IA&G`4T$SEtNOwJyD9b09DTwq1MCN*%!X+xO|0N{Rs4^;&b|i*sHEGPq;n|zOEfbH<6(;%L`k^mT)7z~ywlRx3h4?$ zl>}*o?-02Jb-IWCddBfMi57}>wIB`^Hlv*vh?pjx5|0aenzD001sDKWl9*QR=`djc O0000X+Z1;#G+8)`#`)nwDij+1|+};(+Jd*z{tojUrGNrgOti&26irp z_}33i3=gldFg&}%ydKD%4m4mlSOTPRRTp>8w%MHj-#%jkasQt=!|=bOgW><(yI^TB zesYWX|At9i|AA_qz?K0SLTh@t|9^bL1XtwZ!T_=ktQjT-!jEsTfHbZKahQM#GSy9g zGw=!jV;}@%)c=6I5d!peNPt)%qXt$R0@A3+&Ho=o(%2Y6D=A@WxvV2T-}@x_m?j12e;Kn75?FIa%Y*5~(_)p>;wfs>Yo>SSa9R12cEf^3|A z?HDV=w@(OLSFdJZ*t3U$;p|ydO|Ks_Gd#G$auApZ7BB&cJHLN2R-V|*!SL$`L^DVe z48y>e_e>0@wy}el)6tV$3kUcAYBiJJ3`|`A816m!$KYVc!0_$`6T_P)%nWzVvoQSm z#aIlqs1HRWRI?%|K>)EC$csSy9f(f>@eyb`{RmSF5MTfvB)oWs%O|`50000"; + } else { + var s = document.createElement("script"); + s.src = host + jsfiles[i]; + var h = document.getElementsByTagName("head").length ? + document.getElementsByTagName("head")[0] : + document.body; + h.appendChild(s); + } + } + if (docWrite) { + document.write(allScriptTags.join("")); + } + } +})(); + +/** + * Constant: VERSION_NUMBER + */ +OpenLayers.VERSION_NUMBER="OpenLayers 2.8 -- $Revision: 9492 $"; diff --git a/openlayers/lib/OpenLayers/Ajax.js b/openlayers/lib/OpenLayers/Ajax.js new file mode 100644 index 0000000..407a6d0 --- /dev/null +++ b/openlayers/lib/OpenLayers/Ajax.js @@ -0,0 +1,677 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Request/XMLHttpRequest.js + * @requires OpenLayers/Console.js + */ + +OpenLayers.ProxyHost = ""; +//OpenLayers.ProxyHost = "examples/proxy.cgi?url="; + +/** + * Ajax reader for OpenLayers + * + * @uri url to do remote XML http get + * @param {String} 'get' format params (x=y&a=b...) + * @who object to handle callbacks for this request + * @complete the function to be called on success + * @failure the function to be called on failure + * + * example usage from a caller: + * + * caps: function(request) { + * -blah- + * }, + * + * OpenLayers.loadURL(url,params,this,caps); + * + * Notice the above example does not provide an error handler; a default empty + * handler is provided which merely logs the error if a failure handler is not + * supplied + * + */ + + +/** + * Function: OpenLayers.nullHandler + * @param {} request + */ +OpenLayers.nullHandler = function(request) { + OpenLayers.Console.userError(OpenLayers.i18n("unhandledRequest", {'statusText':request.statusText})); +}; + +/** + * APIFunction: loadURL + * Background load a document. For more flexibility in using XMLHttpRequest, + * see the methods. + * + * Parameters: + * uri - {String} URI of source doc + * params - {String} or {Object} GET params. Either a string in the form + * "?hello=world&foo=bar" (do not forget the leading question mark) + * or an object in the form {'hello': 'world', 'foo': 'bar} + * caller - {Object} object which gets callbacks + * onComplete - {Function} Optional callback for success. The callback + * will be called with this set to caller and will receive the request + * object as an argument. Note that if you do not specify an onComplete + * function, will be called (which pops up a + * user friendly error message dialog). + * onFailure - {Function} Optional callback for failure. In the event of + * a failure, the callback will be called with this set to caller and will + * receive the request object as an argument. Note that if you do not + * specify an onComplete function, will be called + * (which pops up a user friendly error message dialog). + * + * Returns: + * {} The request object. To abort loading, + * call request.abort(). + */ +OpenLayers.loadURL = function(uri, params, caller, + onComplete, onFailure) { + + if(typeof params == 'string') { + params = OpenLayers.Util.getParameters(params); + } + var success = (onComplete) ? onComplete : OpenLayers.nullHandler; + var failure = (onFailure) ? onFailure : OpenLayers.nullHandler; + + return OpenLayers.Request.GET({ + url: uri, params: params, + success: success, failure: failure, scope: caller + }); +}; + +/** + * Function: parseXMLString + * Parse XML into a doc structure + * + * Parameters: + * text - {String} + * + * Returns: + * {?} Parsed AJAX Responsev + */ +OpenLayers.parseXMLString = function(text) { + + //MS sucks, if the server is bad it dies + var index = text.indexOf('<'); + if (index > 0) { + text = text.substring(index); + } + + var ajaxResponse = OpenLayers.Util.Try( + function() { + var xmldom = new ActiveXObject('Microsoft.XMLDOM'); + xmldom.loadXML(text); + return xmldom; + }, + function() { + return new DOMParser().parseFromString(text, 'text/xml'); + }, + function() { + var req = new XMLHttpRequest(); + req.open("GET", "data:" + "text/xml" + + ";charset=utf-8," + encodeURIComponent(text), false); + if (req.overrideMimeType) { + req.overrideMimeType("text/xml"); + } + req.send(null); + return req.responseXML; + } + ); + + return ajaxResponse; +}; + + +/** + * Namespace: OpenLayers.Ajax + */ +OpenLayers.Ajax = { + + /** + * Method: emptyFunction + */ + emptyFunction: function () {}, + + /** + * Method: getTransport + * + * Returns: + * {Object} Transport mechanism for whichever browser we're in, or false if + * none available. + */ + getTransport: function() { + return OpenLayers.Util.Try( + function() {return new XMLHttpRequest();}, + function() {return new ActiveXObject('Msxml2.XMLHTTP');}, + function() {return new ActiveXObject('Microsoft.XMLHTTP');} + ) || false; + }, + + /** + * Property: activeRequestCount + * {Integer} + */ + activeRequestCount: 0 +}; + +/** + * Namespace: OpenLayers.Ajax.Responders + * {Object} + */ +OpenLayers.Ajax.Responders = { + + /** + * Property: responders + * {Array} + */ + responders: [], + + /** + * Method: register + * + * Parameters: + * responderToAdd - {?} + */ + register: function(responderToAdd) { + for (var i = 0; i < this.responders.length; i++){ + if (responderToAdd == this.responders[i]){ + return; + } + } + this.responders.push(responderToAdd); + }, + + /** + * Method: unregister + * + * Parameters: + * responderToRemove - {?} + */ + unregister: function(responderToRemove) { + OpenLayers.Util.removeItem(this.reponders, responderToRemove); + }, + + /** + * Method: dispatch + * + * Parameters: + * callback - {?} + * request - {?} + * transport - {?} + */ + dispatch: function(callback, request, transport) { + var responder; + for (var i = 0; i < this.responders.length; i++) { + responder = this.responders[i]; + + if (responder[callback] && + typeof responder[callback] == 'function') { + try { + responder[callback].apply(responder, + [request, transport]); + } catch (e) {} + } + } + } +}; + +OpenLayers.Ajax.Responders.register({ + /** + * Function: onCreate + */ + onCreate: function() { + OpenLayers.Ajax.activeRequestCount++; + }, + + /** + * Function: onComplete + */ + onComplete: function() { + OpenLayers.Ajax.activeRequestCount--; + } +}); + +/** + * Class: OpenLayers.Ajax.Base + */ +OpenLayers.Ajax.Base = OpenLayers.Class({ + + /** + * Constructor: OpenLayers.Ajax.Base + * + * Parameters: + * options - {Object} + */ + initialize: function(options) { + this.options = { + method: 'post', + asynchronous: true, + contentType: 'application/xml', + parameters: '' + }; + OpenLayers.Util.extend(this.options, options || {}); + + this.options.method = this.options.method.toLowerCase(); + + if (typeof this.options.parameters == 'string') { + this.options.parameters = + OpenLayers.Util.getParameters(this.options.parameters); + } + } +}); + +/** + * Class: OpenLayers.Ajax.Request + * *Deprecated*. Use method instead. + * + * Inherit: + * - + */ +OpenLayers.Ajax.Request = OpenLayers.Class(OpenLayers.Ajax.Base, { + + /** + * Property: _complete + * + * {Boolean} + */ + _complete: false, + + /** + * Constructor: OpenLayers.Ajax.Request + * + * Parameters: + * url - {String} + * options - {Object} + */ + initialize: function(url, options) { + OpenLayers.Ajax.Base.prototype.initialize.apply(this, [options]); + + if (OpenLayers.ProxyHost && OpenLayers.String.startsWith(url, "http")) { + url = OpenLayers.ProxyHost + encodeURIComponent(url); + } + + this.transport = OpenLayers.Ajax.getTransport(); + this.request(url); + }, + + /** + * Method: request + * + * Parameters: + * url - {String} + */ + request: function(url) { + this.url = url; + this.method = this.options.method; + var params = OpenLayers.Util.extend({}, this.options.parameters); + + if (this.method != 'get' && this.method != 'post') { + // simulate other verbs over post + params['_method'] = this.method; + this.method = 'post'; + } + + this.parameters = params; + + if (params = OpenLayers.Util.getParameterString(params)) { + // when GET, append parameters to URL + if (this.method == 'get') { + this.url += ((this.url.indexOf('?') > -1) ? '&' : '?') + params; + } else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) { + params += '&_='; + } + } + try { + var response = new OpenLayers.Ajax.Response(this); + if (this.options.onCreate) { + this.options.onCreate(response); + } + + OpenLayers.Ajax.Responders.dispatch('onCreate', + this, + response); + + this.transport.open(this.method.toUpperCase(), + this.url, + this.options.asynchronous); + + if (this.options.asynchronous) { + window.setTimeout( + OpenLayers.Function.bind(this.respondToReadyState, this, 1), + 10); + } + + this.transport.onreadystatechange = + OpenLayers.Function.bind(this.onStateChange, this); + this.setRequestHeaders(); + + this.body = this.method == 'post' ? + (this.options.postBody || params) : null; + this.transport.send(this.body); + + // Force Firefox to handle ready state 4 for synchronous requests + if (!this.options.asynchronous && + this.transport.overrideMimeType) { + this.onStateChange(); + } + } catch (e) { + this.dispatchException(e); + } + }, + + /** + * Method: onStateChange + */ + onStateChange: function() { + var readyState = this.transport.readyState; + if (readyState > 1 && !((readyState == 4) && this._complete)) { + this.respondToReadyState(this.transport.readyState); + } + }, + + /** + * Method: setRequestHeaders + */ + setRequestHeaders: function() { + var headers = { + 'X-Requested-With': 'XMLHttpRequest', + 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*', + 'OpenLayers': true + }; + + if (this.method == 'post') { + headers['Content-type'] = this.options.contentType + + (this.options.encoding ? '; charset=' + this.options.encoding : ''); + + /* Force "Connection: close" for older Mozilla browsers to work + * around a bug where XMLHttpRequest sends an incorrect + * Content-length header. See Mozilla Bugzilla #246651. + */ + if (this.transport.overrideMimeType && + (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) { + headers['Connection'] = 'close'; + } + } + // user-defined headers + if (typeof this.options.requestHeaders == 'object') { + var extras = this.options.requestHeaders; + + if (typeof extras.push == 'function') { + for (var i = 0, length = extras.length; i < length; i += 2) { + headers[extras[i]] = extras[i+1]; + } + } else { + for (var i in extras) { + headers[i] = extras[i]; + } + } + } + + for (var name in headers) { + this.transport.setRequestHeader(name, headers[name]); + } + }, + + /** + * Method: success + * + * Returns: + * {Boolean} - + */ + success: function() { + var status = this.getStatus(); + return !status || (status >=200 && status < 300); + }, + + /** + * Method: getStatus + * + * Returns: + * {Integer} - Status + */ + getStatus: function() { + try { + return this.transport.status || 0; + } catch (e) { + return 0; + } + }, + + /** + * Method: respondToReadyState + * + * Parameters: + * readyState - {?} + */ + respondToReadyState: function(readyState) { + var state = OpenLayers.Ajax.Request.Events[readyState]; + var response = new OpenLayers.Ajax.Response(this); + + if (state == 'Complete') { + try { + this._complete = true; + (this.options['on' + response.status] || + this.options['on' + (this.success() ? 'Success' : 'Failure')] || + OpenLayers.Ajax.emptyFunction)(response); + } catch (e) { + this.dispatchException(e); + } + + var contentType = response.getHeader('Content-type'); + } + + try { + (this.options['on' + state] || + OpenLayers.Ajax.emptyFunction)(response); + OpenLayers.Ajax.Responders.dispatch('on' + state, + this, + response); + } catch (e) { + this.dispatchException(e); + } + + if (state == 'Complete') { + // avoid memory leak in MSIE: clean up + this.transport.onreadystatechange = OpenLayers.Ajax.emptyFunction; + } + }, + + /** + * Method: getHeader + * + * Parameters: + * name - {String} Header name + * + * Returns: + * {?} - response header for the given name + */ + getHeader: function(name) { + try { + return this.transport.getResponseHeader(name); + } catch (e) { + return null; + } + }, + + /** + * Method: dispatchException + * If the optional onException function is set, execute it + * and then dispatch the call to any other listener registered + * for onException. + * + * If no optional onException function is set, we suspect that + * the user may have also not used + * OpenLayers.Ajax.Responders.register to register a listener + * for the onException call. To make sure that something + * gets done with this exception, only dispatch the call if there + * are listeners. + * + * If you explicitly want to swallow exceptions, set + * request.options.onException to an empty function (function(){}) + * or register an empty function with + * for onException. + * + * Parameters: + * exception - {?} + */ + dispatchException: function(exception) { + var handler = this.options.onException; + if(handler) { + // call options.onException and alert any other listeners + handler(this, exception); + OpenLayers.Ajax.Responders.dispatch('onException', this, exception); + } else { + // check if there are any other listeners + var listener = false; + var responders = OpenLayers.Ajax.Responders.responders; + for (var i = 0; i < responders.length; i++) { + if(responders[i].onException) { + listener = true; + break; + } + } + if(listener) { + // call all listeners + OpenLayers.Ajax.Responders.dispatch('onException', this, exception); + } else { + // let the exception through + throw exception; + } + } + } +}); + +/** + * Property: Events + * {Array(String)} + */ +OpenLayers.Ajax.Request.Events = + ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; + +/** + * Class: OpenLayers.Ajax.Response + */ +OpenLayers.Ajax.Response = OpenLayers.Class({ + + /** + * Property: status + * + * {Integer} + */ + status: 0, + + + /** + * Property: statusText + * + * {String} + */ + statusText: '', + + /** + * Constructor: OpenLayers.Ajax.Response + * + * Parameters: + * request - {Object} + */ + initialize: function(request) { + this.request = request; + var transport = this.transport = request.transport, + readyState = this.readyState = transport.readyState; + + if ((readyState > 2 && + !(!!(window.attachEvent && !window.opera))) || + readyState == 4) { + this.status = this.getStatus(); + this.statusText = this.getStatusText(); + this.responseText = transport.responseText == null ? + '' : String(transport.responseText); + } + + if(readyState == 4) { + var xml = transport.responseXML; + this.responseXML = xml === undefined ? null : xml; + } + }, + + /** + * Method: getStatus + */ + getStatus: OpenLayers.Ajax.Request.prototype.getStatus, + + /** + * Method: getStatustext + * + * Returns: + * {String} - statusText + */ + getStatusText: function() { + try { + return this.transport.statusText || ''; + } catch (e) { + return ''; + } + }, + + /** + * Method: getHeader + */ + getHeader: OpenLayers.Ajax.Request.prototype.getHeader, + + /** + * Method: getResponseHeader + * + * Returns: + * {?} - response header for given name + */ + getResponseHeader: function(name) { + return this.transport.getResponseHeader(name); + } +}); + + +/** + * Function: getElementsByTagNameNS + * + * Parameters: + * parentnode - {?} + * nsuri - {?} + * nsprefix - {?} + * tagname - {?} + * + * Returns: + * {?} + */ +OpenLayers.Ajax.getElementsByTagNameNS = function(parentnode, nsuri, + nsprefix, tagname) { + var elem = null; + if (parentnode.getElementsByTagNameNS) { + elem = parentnode.getElementsByTagNameNS(nsuri, tagname); + } else { + elem = parentnode.getElementsByTagName(nsprefix + ':' + tagname); + } + return elem; +}; + + +/** + * Function: serializeXMLToString + * Wrapper function around XMLSerializer, which doesn't exist/work in + * IE/Safari. We need to come up with a way to serialize in those browser: + * for now, these browsers will just fail. #535, #536 + * + * Parameters: + * xmldom {XMLNode} xml dom to serialize + * + * Returns: + * {?} + */ +OpenLayers.Ajax.serializeXMLToString = function(xmldom) { + var serializer = new XMLSerializer(); + var data = serializer.serializeToString(xmldom); + return data; +}; diff --git a/openlayers/lib/OpenLayers/BaseTypes.js b/openlayers/lib/OpenLayers/BaseTypes.js new file mode 100644 index 0000000..615ef1d --- /dev/null +++ b/openlayers/lib/OpenLayers/BaseTypes.js @@ -0,0 +1,529 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/BaseTypes/Class.js + * @requires OpenLayers/BaseTypes/LonLat.js + * @requires OpenLayers/BaseTypes/Size.js + * @requires OpenLayers/BaseTypes/Pixel.js + * @requires OpenLayers/BaseTypes/Bounds.js + * @requires OpenLayers/BaseTypes/Element.js + * @requires OpenLayers/Lang/en.js + * @requires OpenLayers/Console.js + */ + +/** + * Header: OpenLayers Base Types + * OpenLayers custom string, number and function functions are described here. + */ + +/** + * Namespace: OpenLayers.String + * Contains convenience functions for string manipulation. + */ +OpenLayers.String = { + + /** + * APIFunction: startsWith + * Test whether a string starts with another string. + * + * Parameters: + * str - {String} The string to test. + * sub - {Sring} The substring to look for. + * + * Returns: + * {Boolean} The first string starts with the second. + */ + startsWith: function(str, sub) { + return (str.indexOf(sub) == 0); + }, + + /** + * APIFunction: contains + * Test whether a string contains another string. + * + * Parameters: + * str - {String} The string to test. + * sub - {String} The substring to look for. + * + * Returns: + * {Boolean} The first string contains the second. + */ + contains: function(str, sub) { + return (str.indexOf(sub) != -1); + }, + + /** + * APIFunction: trim + * Removes leading and trailing whitespace characters from a string. + * + * Parameters: + * str - {String} The (potentially) space padded string. This string is not + * modified. + * + * Returns: + * {String} A trimmed version of the string with all leading and + * trailing spaces removed. + */ + trim: function(str) { + return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); + }, + + /** + * APIFunction: camelize + * Camel-case a hyphenated string. + * Ex. "chicken-head" becomes "chickenHead", and + * "-chicken-head" becomes "ChickenHead". + * + * Parameters: + * str - {String} The string to be camelized. The original is not modified. + * + * Returns: + * {String} The string, camelized + */ + camelize: function(str) { + var oStringList = str.split('-'); + var camelizedString = oStringList[0]; + for (var i=1, len=oStringList.length; i replacement = context[a]; + // 1 -> replacement = context[a][b]; + // 2 -> replacement = context[a][b][c]; + var subs = match.split(/\.+/); + for (var i=0; i< subs.length; i++) { + if (i == 0) { + replacement = context; + } + + replacement = replacement[subs[i]]; + } + + if(typeof replacement == "function") { + replacement = args ? + replacement.apply(null, args) : + replacement(); + } + + // If replacement is undefined, return the string 'undefined'. + // This is a workaround for a bugs in browsers not properly + // dealing with non-participating groups in regular expressions: + // http://blog.stevenlevithan.com/archives/npcg-javascript + if (typeof replacement == 'undefined') { + return 'undefined'; + } else { + return replacement; + } + }; + + return template.replace(OpenLayers.String.tokenRegEx, replacer); + }, + + /** + * Property: OpenLayers.String.tokenRegEx + * Used to find tokens in a string. + * Examples: ${a}, ${a.b.c}, ${a-b}, ${5} + */ + tokenRegEx: /\$\{([\w.]+?)\}/g, + + /** + * Property: OpenLayers.String.numberRegEx + * Used to test strings as numbers. + */ + numberRegEx: /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/, + + /** + * APIFunction: OpenLayers.String.isNumeric + * Determine whether a string contains only a numeric value. + * + * Examples: + * (code) + * OpenLayers.String.isNumeric("6.02e23") // true + * OpenLayers.String.isNumeric("12 dozen") // false + * OpenLayers.String.isNumeric("4") // true + * OpenLayers.String.isNumeric(" 4 ") // false + * (end) + * + * Returns: + * {Boolean} String contains only a number. + */ + isNumeric: function(value) { + return OpenLayers.String.numberRegEx.test(value); + }, + + /** + * APIFunction: numericIf + * Converts a string that appears to be a numeric value into a number. + * + * Returns + * {Number|String} a Number if the passed value is a number, a String + * otherwise. + */ + numericIf: function(value) { + return OpenLayers.String.isNumeric(value) ? parseFloat(value) : value; + } + +}; + +if (!String.prototype.startsWith) { + /** + * APIMethod: String.startsWith + * *Deprecated*. Whether or not a string starts with another string. + * + * Parameters: + * sStart - {Sring} The string we're testing for. + * + * Returns: + * {Boolean} Whether or not this string starts with the string passed in. + */ + String.prototype.startsWith = function(sStart) { + OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated", + {'newMethod':'OpenLayers.String.startsWith'})); + return OpenLayers.String.startsWith(this, sStart); + }; +} + +if (!String.prototype.contains) { + /** + * APIMethod: String.contains + * *Deprecated*. Whether or not a string contains another string. + * + * Parameters: + * str - {String} The string that we're testing for. + * + * Returns: + * {Boolean} Whether or not this string contains with the string passed in. + */ + String.prototype.contains = function(str) { + OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated", + {'newMethod':'OpenLayers.String.contains'})); + return OpenLayers.String.contains(this, str); + }; +} + +if (!String.prototype.trim) { + /** + * APIMethod: String.trim + * *Deprecated*. Removes leading and trailing whitespace characters from a string. + * + * Returns: + * {String} A trimmed version of the string - all leading and + * trailing spaces removed + */ + String.prototype.trim = function() { + OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated", + {'newMethod':'OpenLayers.String.trim'})); + return OpenLayers.String.trim(this); + }; +} + +if (!String.prototype.camelize) { + /** + * APIMethod: String.camelize + * *Deprecated*. Camel-case a hyphenated string. + * Ex. "chicken-head" becomes "chickenHead", and + * "-chicken-head" becomes "ChickenHead". + * + * Returns: + * {String} The string, camelized + */ + String.prototype.camelize = function() { + OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated", + {'newMethod':'OpenLayers.String.camelize'})); + return OpenLayers.String.camelize(this); + }; +} + +/** + * Namespace: OpenLayers.Number + * Contains convenience functions for manipulating numbers. + */ +OpenLayers.Number = { + + /** + * Property: decimalSeparator + * Decimal separator to use when formatting numbers. + */ + decimalSeparator: ".", + + /** + * Property: thousandsSeparator + * Thousands separator to use when formatting numbers. + */ + thousandsSeparator: ",", + + /** + * APIFunction: limitSigDigs + * Limit the number of significant digits on a float. + * + * Parameters: + * num - {Float} + * sig - {Integer} + * + * Returns: + * {Float} The number, rounded to the specified number of significant + * digits. + */ + limitSigDigs: function(num, sig) { + var fig = 0; + if (sig > 0) { + fig = parseFloat(num.toPrecision(sig)); + } + return fig; + }, + + /** + * APIFunction: format + * Formats a number for output. + * + * Parameters: + * num - {Float} + * dec - {Integer} Number of decimal places to round to. + * Defaults to 0. Set to null to leave decimal places unchanged. + * tsep - {String} Thousands separator. + * Default is ",". + * dsep - {String} Decimal separator. + * Default is ".". + * + * Returns: + * {String} A string representing the formatted number. + */ + format: function(num, dec, tsep, dsep) { + dec = (typeof dec != "undefined") ? dec : 0; + tsep = (typeof tsep != "undefined") ? tsep : + OpenLayers.Number.thousandsSeparator; + dsep = (typeof dsep != "undefined") ? dsep : + OpenLayers.Number.decimalSeparator; + + if (dec != null) { + num = parseFloat(num.toFixed(dec)); + } + + var parts = num.toString().split("."); + if (parts.length == 1 && dec == null) { + // integer where we do not want to touch the decimals + dec = 0; + } + + var integer = parts[0]; + if (tsep) { + var thousands = /(-?[0-9]+)([0-9]{3})/; + while(thousands.test(integer)) { + integer = integer.replace(thousands, "$1" + tsep + "$2"); + } + } + + var str; + if (dec == 0) { + str = integer; + } else { + var rem = parts.length > 1 ? parts[1] : "0"; + if (dec != null) { + rem = rem + new Array(dec - rem.length + 1).join("0"); + } + str = integer + dsep + rem; + } + return str; + } +}; + +if (!Number.prototype.limitSigDigs) { + /** + * APIMethod: Number.limitSigDigs + * *Deprecated*. Limit the number of significant digits on an integer. Does *not* + * work with floats! + * + * Parameters: + * sig - {Integer} + * + * Returns: + * {Integer} The number, rounded to the specified number of significant digits. + * If null, 0, or negative value passed in, returns 0 + */ + Number.prototype.limitSigDigs = function(sig) { + OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated", + {'newMethod':'OpenLayers.Number.limitSigDigs'})); + return OpenLayers.Number.limitSigDigs(this, sig); + }; +} + +/** + * Namespace: OpenLayers.Function + * Contains convenience functions for function manipulation. + */ +OpenLayers.Function = { + /** + * APIFunction: bind + * Bind a function to an object. Method to easily create closures with + * 'this' altered. + * + * Parameters: + * func - {Function} Input function. + * object - {Object} The object to bind to the input function (as this). + * + * Returns: + * {Function} A closure with 'this' set to the passed in object. + */ + bind: function(func, object) { + // create a reference to all arguments past the second one + var args = Array.prototype.slice.apply(arguments, [2]); + return function() { + // Push on any additional arguments from the actual function call. + // These will come after those sent to the bind call. + var newArgs = args.concat( + Array.prototype.slice.apply(arguments, [0]) + ); + return func.apply(object, newArgs); + }; + }, + + /** + * APIFunction: bindAsEventListener + * Bind a function to an object, and configure it to receive the event + * object as first parameter when called. + * + * Parameters: + * func - {Function} Input function to serve as an event listener. + * object - {Object} A reference to this. + * + * Returns: + * {Function} + */ + bindAsEventListener: function(func, object) { + return function(event) { + return func.call(object, event || window.event); + }; + } +}; + +if (!Function.prototype.bind) { + /** + * APIMethod: Function.bind + * *Deprecated*. Bind a function to an object. + * Method to easily create closures with 'this' altered. + * + * Parameters: + * object - {Object} the this parameter + * + * Returns: + * {Function} A closure with 'this' altered to the first + * argument. + */ + Function.prototype.bind = function() { + OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated", + {'newMethod':'OpenLayers.Function.bind'})); + // new function takes the same arguments with this function up front + Array.prototype.unshift.apply(arguments, [this]); + return OpenLayers.Function.bind.apply(null, arguments); + }; +} + +if (!Function.prototype.bindAsEventListener) { + /** + * APIMethod: Function.bindAsEventListener + * *Deprecated*. Bind a function to an object, and configure it to receive the + * event object as first parameter when called. + * + * Parameters: + * object - {Object} A reference to this. + * + * Returns: + * {Function} + */ + Function.prototype.bindAsEventListener = function(object) { + OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated", + {'newMethod':'OpenLayers.Function.bindAsEventListener'})); + return OpenLayers.Function.bindAsEventListener(this, object); + }; +} + +/** + * Namespace: OpenLayers.Array + * Contains convenience functions for array manipulation. + */ +OpenLayers.Array = { + + /** + * APIMethod: filter + * Filter an array. Provides the functionality of the + * Array.prototype.filter extension to the ECMA-262 standard. Where + * available, Array.prototype.filter will be used. + * + * Based on well known example from http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:filter + * + * Parameters: + * array - {Array} The array to be filtered. This array is not mutated. + * Elements added to this array by the callback will not be visited. + * callback - {Function} A function that is called for each element in + * the array. If this function returns true, the element will be + * included in the return. The function will be called with three + * arguments: the element in the array, the index of that element, and + * the array itself. If the optional caller parameter is specified + * the callback will be called with this set to caller. + * caller - {Object} Optional object to be set as this when the callback + * is called. + * + * Returns: + * {Array} An array of elements from the passed in array for which the + * callback returns true. + */ + filter: function(array, callback, caller) { + var selected = []; + if (Array.prototype.filter) { + selected = array.filter(callback, caller); + } else { + var len = array.length; + if (typeof callback != "function") { + throw new TypeError(); + } + for(var i=0; i bounds = new OpenLayers.Bounds(); + * > bounds.extend(new OpenLayers.LonLat(4,5)); + * > bounds.extend(new OpenLayers.LonLat(5,6)); + * > bounds.toBBOX(); // returns 4,5,5,6 + */ +OpenLayers.Bounds = OpenLayers.Class({ + + /** + * Property: left + * {Number} Minimum horizontal coordinate. + */ + left: null, + + /** + * Property: bottom + * {Number} Minimum vertical coordinate. + */ + bottom: null, + + /** + * Property: right + * {Number} Maximum horizontal coordinate. + */ + right: null, + + /** + * Property: top + * {Number} Maximum vertical coordinate. + */ + top: null, + + /** + * Property: centerLonLat + * {} A cached center location. This should not be + * accessed directly. Use instead. + */ + centerLonLat: null, + + /** + * Constructor: OpenLayers.Bounds + * Construct a new bounds object. + * + * Parameters: + * left - {Number} The left bounds of the box. Note that for width + * calculations, this is assumed to be less than the right value. + * bottom - {Number} The bottom bounds of the box. Note that for height + * calculations, this is assumed to be more than the top value. + * right - {Number} The right bounds. + * top - {Number} The top bounds. + */ + initialize: function(left, bottom, right, top) { + if (left != null) { + this.left = OpenLayers.Util.toFloat(left); + } + if (bottom != null) { + this.bottom = OpenLayers.Util.toFloat(bottom); + } + if (right != null) { + this.right = OpenLayers.Util.toFloat(right); + } + if (top != null) { + this.top = OpenLayers.Util.toFloat(top); + } + }, + + /** + * Method: clone + * Create a cloned instance of this bounds. + * + * Returns: + * {} A fresh copy of the bounds + */ + clone:function() { + return new OpenLayers.Bounds(this.left, this.bottom, + this.right, this.top); + }, + + /** + * Method: equals + * Test a two bounds for equivalence. + * + * Parameters: + * bounds - {} + * + * Returns: + * {Boolean} The passed-in bounds object has the same left, + * right, top, bottom components as this. Note that if bounds + * passed in is null, returns false. + */ + equals:function(bounds) { + var equals = false; + if (bounds != null) { + equals = ((this.left == bounds.left) && + (this.right == bounds.right) && + (this.top == bounds.top) && + (this.bottom == bounds.bottom)); + } + return equals; + }, + + /** + * APIMethod: toString + * + * Returns: + * {String} String representation of bounds object. + * (ex."left-bottom=(5,42) right-top=(10,45)") + */ + toString:function() { + return ( "left-bottom=(" + this.left + "," + this.bottom + ")" + + " right-top=(" + this.right + "," + this.top + ")" ); + }, + + /** + * APIMethod: toArray + * + * Returns: + * {Array} array of left, bottom, right, top + */ + toArray: function() { + return [this.left, this.bottom, this.right, this.top]; + }, + + /** + * APIMethod: toBBOX + * + * Parameters: + * decimal - {Integer} How many significant digits in the bbox coords? + * Default is 6 + * + * Returns: + * {String} Simple String representation of bounds object. + * (ex. "5,42,10,45") + */ + toBBOX:function(decimal) { + if (decimal== null) { + decimal = 6; + } + var mult = Math.pow(10, decimal); + var bbox = Math.round(this.left * mult) / mult + "," + + Math.round(this.bottom * mult) / mult + "," + + Math.round(this.right * mult) / mult + "," + + Math.round(this.top * mult) / mult; + + return bbox; + }, + + /** + * APIMethod: toGeometry + * Create a new polygon geometry based on this bounds. + * + * Returns: + * {} A new polygon with the coordinates + * of this bounds. + */ + toGeometry: function() { + return new OpenLayers.Geometry.Polygon([ + new OpenLayers.Geometry.LinearRing([ + new OpenLayers.Geometry.Point(this.left, this.bottom), + new OpenLayers.Geometry.Point(this.right, this.bottom), + new OpenLayers.Geometry.Point(this.right, this.top), + new OpenLayers.Geometry.Point(this.left, this.top) + ]) + ]); + }, + + /** + * APIMethod: getWidth + * + * Returns: + * {Float} The width of the bounds + */ + getWidth:function() { + return (this.right - this.left); + }, + + /** + * APIMethod: getHeight + * + * Returns: + * {Float} The height of the bounds (top minus bottom). + */ + getHeight:function() { + return (this.top - this.bottom); + }, + + /** + * APIMethod: getSize + * + * Returns: + * {} The size of the box. + */ + getSize:function() { + return new OpenLayers.Size(this.getWidth(), this.getHeight()); + }, + + /** + * APIMethod: getCenterPixel + * + * Returns: + * {} The center of the bounds in pixel space. + */ + getCenterPixel:function() { + return new OpenLayers.Pixel( (this.left + this.right) / 2, + (this.bottom + this.top) / 2); + }, + + /** + * APIMethod: getCenterLonLat + * + * Returns: + * {} The center of the bounds in map space. + */ + getCenterLonLat:function() { + if(!this.centerLonLat) { + this.centerLonLat = new OpenLayers.LonLat( + (this.left + this.right) / 2, (this.bottom + this.top) / 2 + ); + } + return this.centerLonLat; + }, + + /** + * Method: scale + * Scales the bounds around a pixel or lonlat. Note that the new + * bounds may return non-integer properties, even if a pixel + * is passed. + * + * Parameters: + * ratio - {Float} + * origin - { or } + * Default is center. + * + * Returns: + * {} A new bounds that is scaled by ratio + * from origin. + */ + + scale: function(ratio, origin){ + if(origin == null){ + origin = this.getCenterLonLat(); + } + + var bounds = []; + + var origx,origy; + + // get origin coordinates + if(origin.CLASS_NAME == "OpenLayers.LonLat"){ + origx = origin.lon; + origy = origin.lat; + } else { + origx = origin.x; + origy = origin.y; + } + + var left = (this.left - origx) * ratio + origx; + var bottom = (this.bottom - origy) * ratio + origy; + var right = (this.right - origx) * ratio + origx; + var top = (this.top - origy) * ratio + origy; + + return new OpenLayers.Bounds(left, bottom, right, top); + }, + + /** + * APIMethod: add + * + * Parameters: + * x - {Float} + * y - {Float} + * + * Returns: + * {} A new bounds whose coordinates are the same as + * this, but shifted by the passed-in x and y values. + */ + add:function(x, y) { + if ( (x == null) || (y == null) ) { + var msg = OpenLayers.i18n("boundsAddError"); + OpenLayers.Console.error(msg); + return null; + } + return new OpenLayers.Bounds(this.left + x, this.bottom + y, + this.right + x, this.top + y); + }, + + /** + * APIMethod: extend + * Extend the bounds to include the point, lonlat, or bounds specified. + * Note, this function assumes that left < right and bottom < top. + * + * Parameters: + * object - {Object} Can be LonLat, Point, or Bounds + */ + extend:function(object) { + var bounds = null; + if (object) { + // clear cached center location + switch(object.CLASS_NAME) { + case "OpenLayers.LonLat": + bounds = new OpenLayers.Bounds(object.lon, object.lat, + object.lon, object.lat); + break; + case "OpenLayers.Geometry.Point": + bounds = new OpenLayers.Bounds(object.x, object.y, + object.x, object.y); + break; + + case "OpenLayers.Bounds": + bounds = object; + break; + } + + if (bounds) { + this.centerLonLat = null; + if ( (this.left == null) || (bounds.left < this.left)) { + this.left = bounds.left; + } + if ( (this.bottom == null) || (bounds.bottom < this.bottom) ) { + this.bottom = bounds.bottom; + } + if ( (this.right == null) || (bounds.right > this.right) ) { + this.right = bounds.right; + } + if ( (this.top == null) || (bounds.top > this.top) ) { + this.top = bounds.top; + } + } + } + }, + + /** + * APIMethod: containsLonLat + * + * Parameters: + * ll - {} + * inclusive - {Boolean} Whether or not to include the border. + * Default is true. + * + * Returns: + * {Boolean} The passed-in lonlat is within this bounds. + */ + containsLonLat:function(ll, inclusive) { + return this.contains(ll.lon, ll.lat, inclusive); + }, + + /** + * APIMethod: containsPixel + * + * Parameters: + * px - {} + * inclusive - {Boolean} Whether or not to include the border. Default is + * true. + * + * Returns: + * {Boolean} The passed-in pixel is within this bounds. + */ + containsPixel:function(px, inclusive) { + return this.contains(px.x, px.y, inclusive); + }, + + /** + * APIMethod: contains + * + * Parameters: + * x - {Float} + * y - {Float} + * inclusive - {Boolean} Whether or not to include the border. Default is + * true. + * + * Returns: + * {Boolean} Whether or not the passed-in coordinates are within this + * bounds. + */ + contains:function(x, y, inclusive) { + //set default + if (inclusive == null) { + inclusive = true; + } + + if (x == null || y == null) { + return false; + } + + x = OpenLayers.Util.toFloat(x); + y = OpenLayers.Util.toFloat(y); + + var contains = false; + if (inclusive) { + contains = ((x >= this.left) && (x <= this.right) && + (y >= this.bottom) && (y <= this.top)); + } else { + contains = ((x > this.left) && (x < this.right) && + (y > this.bottom) && (y < this.top)); + } + return contains; + }, + + /** + * APIMethod: intersectsBounds + * Determine whether the target bounds intersects this bounds. Bounds are + * considered intersecting if any of their edges intersect or if one + * bounds contains the other. + * + * Parameters: + * bounds - {} The target bounds. + * inclusive - {Boolean} Treat coincident borders as intersecting. Default + * is true. If false, bounds that do not overlap but only touch at the + * border will not be considered as intersecting. + * + * Returns: + * {Boolean} The passed-in bounds object intersects this bounds. + */ + intersectsBounds:function(bounds, inclusive) { + if (inclusive == null) { + inclusive = true; + } + var intersects = false; + var mightTouch = ( + this.left == bounds.right || + this.right == bounds.left || + this.top == bounds.bottom || + this.bottom == bounds.top + ); + + // if the two bounds only touch at an edge, and inclusive is false, + // then the bounds don't *really* intersect. + if (inclusive || !mightTouch) { + // otherwise, if one of the boundaries even partially contains another, + // inclusive of the edges, then they do intersect. + var inBottom = ( + ((bounds.bottom >= this.bottom) && (bounds.bottom <= this.top)) || + ((this.bottom >= bounds.bottom) && (this.bottom <= bounds.top)) + ); + var inTop = ( + ((bounds.top >= this.bottom) && (bounds.top <= this.top)) || + ((this.top > bounds.bottom) && (this.top < bounds.top)) + ); + var inLeft = ( + ((bounds.left >= this.left) && (bounds.left <= this.right)) || + ((this.left >= bounds.left) && (this.left <= bounds.right)) + ); + var inRight = ( + ((bounds.right >= this.left) && (bounds.right <= this.right)) || + ((this.right >= bounds.left) && (this.right <= bounds.right)) + ); + intersects = ((inBottom || inTop) && (inLeft || inRight)); + } + return intersects; + }, + + /** + * APIMethod: containsBounds + * Determine whether the target bounds is contained within this bounds. + * + * bounds - {} The target bounds. + * partial - {Boolean} If any of the target corners is within this bounds + * consider the bounds contained. Default is false. If true, the + * entire target bounds must be contained within this bounds. + * inclusive - {Boolean} Treat shared edges as contained. Default is + * true. + * + * Returns: + * {Boolean} The passed-in bounds object is contained within this bounds. + */ + containsBounds:function(bounds, partial, inclusive) { + if (partial == null) { + partial = false; + } + if (inclusive == null) { + inclusive = true; + } + var bottomLeft = this.contains(bounds.left, bounds.bottom, inclusive); + var bottomRight = this.contains(bounds.right, bounds.bottom, inclusive); + var topLeft = this.contains(bounds.left, bounds.top, inclusive); + var topRight = this.contains(bounds.right, bounds.top, inclusive); + + return (partial) ? (bottomLeft || bottomRight || topLeft || topRight) + : (bottomLeft && bottomRight && topLeft && topRight); + }, + + /** + * APIMethod: determineQuadrant + * + * Parameters: + * lonlat - {} + * + * Returns: + * {String} The quadrant ("br" "tr" "tl" "bl") of the bounds in which the + * coordinate lies. + */ + determineQuadrant: function(lonlat) { + + var quadrant = ""; + var center = this.getCenterLonLat(); + + quadrant += (lonlat.lat < center.lat) ? "b" : "t"; + quadrant += (lonlat.lon < center.lon) ? "l" : "r"; + + return quadrant; + }, + + /** + * APIMethod: transform + * Transform the Bounds object from source to dest. + * + * Parameters: + * source - {} Source projection. + * dest - {} Destination projection. + * + * Returns: + * {} Itself, for use in chaining operations. + */ + transform: function(source, dest) { + // clear cached center location + this.centerLonLat = null; + var ll = OpenLayers.Projection.transform( + {'x': this.left, 'y': this.bottom}, source, dest); + var lr = OpenLayers.Projection.transform( + {'x': this.right, 'y': this.bottom}, source, dest); + var ul = OpenLayers.Projection.transform( + {'x': this.left, 'y': this.top}, source, dest); + var ur = OpenLayers.Projection.transform( + {'x': this.right, 'y': this.top}, source, dest); + this.left = Math.min(ll.x, ul.x); + this.bottom = Math.min(ll.y, lr.y); + this.right = Math.max(lr.x, ur.x); + this.top = Math.max(ul.y, ur.y); + return this; + }, + + /** + * APIMethod: wrapDateLine + * + * Parameters: + * maxExtent - {} + * options - {Object} Some possible options are: + * leftTolerance - {float} Allow for a margin of error + * with the 'left' value of this + * bound. + * Default is 0. + * rightTolerance - {float} Allow for a margin of error + * with the 'right' value of + * this bound. + * Default is 0. + * + * Returns: + * {} A copy of this bounds, but wrapped around the + * "dateline" (as specified by the borders of + * maxExtent). Note that this function only returns + * a different bounds value if this bounds is + * *entirely* outside of the maxExtent. If this + * bounds straddles the dateline (is part in/part + * out of maxExtent), the returned bounds will be + * merely a copy of this one. + */ + wrapDateLine: function(maxExtent, options) { + options = options || {}; + + var leftTolerance = options.leftTolerance || 0; + var rightTolerance = options.rightTolerance || 0; + + var newBounds = this.clone(); + + if (maxExtent) { + + //shift right? + while ( newBounds.left < maxExtent.left && + (newBounds.right - rightTolerance) <= maxExtent.left ) { + newBounds = newBounds.add(maxExtent.getWidth(), 0); + } + + //shift left? + while ( (newBounds.left + leftTolerance) >= maxExtent.right && + newBounds.right > maxExtent.right ) { + newBounds = newBounds.add(-maxExtent.getWidth(), 0); + } + } + + return newBounds; + }, + + CLASS_NAME: "OpenLayers.Bounds" +}); + +/** + * APIFunction: fromString + * Alternative constructor that builds a new OpenLayers.Bounds from a + * parameter string + * + * Parameters: + * str - {String}Comma-separated bounds string. (ex. "5,42,10,45") + * + * Returns: + * {} New bounds object built from the + * passed-in String. + */ +OpenLayers.Bounds.fromString = function(str) { + var bounds = str.split(","); + return OpenLayers.Bounds.fromArray(bounds); +}; + +/** + * APIFunction: fromArray + * Alternative constructor that builds a new OpenLayers.Bounds + * from an array + * + * Parameters: + * bbox - {Array(Float)} Array of bounds values (ex. [5,42,10,45]) + * + * Returns: + * {} New bounds object built from the passed-in Array. + */ +OpenLayers.Bounds.fromArray = function(bbox) { + return new OpenLayers.Bounds(parseFloat(bbox[0]), + parseFloat(bbox[1]), + parseFloat(bbox[2]), + parseFloat(bbox[3])); +}; + +/** + * APIFunction: fromSize + * Alternative constructor that builds a new OpenLayers.Bounds + * from a size + * + * Parameters: + * size - {} + * + * Returns: + * {} New bounds object built from the passed-in size. + */ +OpenLayers.Bounds.fromSize = function(size) { + return new OpenLayers.Bounds(0, + size.h, + size.w, + 0); +}; + +/** + * Function: oppositeQuadrant + * Get the opposite quadrant for a given quadrant string. + * + * Parameters: + * quadrant - {String} two character quadrant shortstring + * + * Returns: + * {String} The opposing quadrant ("br" "tr" "tl" "bl"). For Example, if + * you pass in "bl" it returns "tr", if you pass in "br" it + * returns "tl", etc. + */ +OpenLayers.Bounds.oppositeQuadrant = function(quadrant) { + var opp = ""; + + opp += (quadrant.charAt(0) == 't') ? 'b' : 't'; + opp += (quadrant.charAt(1) == 'l') ? 'r' : 'l'; + + return opp; +}; diff --git a/openlayers/lib/OpenLayers/BaseTypes/Class.js b/openlayers/lib/OpenLayers/BaseTypes/Class.js new file mode 100644 index 0000000..0f21c37 --- /dev/null +++ b/openlayers/lib/OpenLayers/BaseTypes/Class.js @@ -0,0 +1,114 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * Constructor: OpenLayers.Class + * Base class used to construct all other classes. Includes support for + * multiple inheritance. + * + * This constructor is new in OpenLayers 2.5. At OpenLayers 3.0, the old + * syntax for creating classes and dealing with inheritance + * will be removed. + * + * To create a new OpenLayers-style class, use the following syntax: + * > var MyClass = OpenLayers.Class(prototype); + * + * To create a new OpenLayers-style class with multiple inheritance, use the + * following syntax: + * > var MyClass = OpenLayers.Class(Class1, Class2, prototype); + * Note that instanceof reflection will only reveil Class1 as superclass. + * Class2 ff are mixins. + * + */ +OpenLayers.Class = function() { + var Class = function() { + /** + * This following condition can be removed at 3.0 - this is only for + * backwards compatibility while the Class.inherit method is still + * in use. So at 3.0, the following three lines would be replaced with + * simply: + * this.initialize.apply(this, arguments); + */ + if (arguments && arguments[0] != OpenLayers.Class.isPrototype) { + this.initialize.apply(this, arguments); + } + }; + var extended = {}; + var parent, initialize; + for(var i=0, len=arguments.length; i 1) { + initialize = arguments[i].prototype.initialize; + // replace the initialize method with an empty function, + // because we do not want to create a real instance here + arguments[i].prototype.initialize = function() {}; + // the line below makes sure that the new class has a + // superclass + extended = new arguments[i]; + // restore the original initialize method + if(initialize === undefined) { + delete arguments[i].prototype.initialize; + } else { + arguments[i].prototype.initialize = initialize; + } + } + // get the prototype of the superclass + parent = arguments[i].prototype; + } else { + // in this case we're extending with the prototype + parent = arguments[i]; + } + OpenLayers.Util.extend(extended, parent); + } + Class.prototype = extended; + return Class; +}; + +/** + * Property: isPrototype + * *Deprecated*. This is no longer needed and will be removed at 3.0. + */ +OpenLayers.Class.isPrototype = function () {}; + +/** + * APIFunction: OpenLayers.create + * *Deprecated*. Old method to create an OpenLayers style class. Use the + * constructor instead. + * + * Returns: + * An OpenLayers class + */ +OpenLayers.Class.create = function() { + return function() { + if (arguments && arguments[0] != OpenLayers.Class.isPrototype) { + this.initialize.apply(this, arguments); + } + }; +}; + + +/** + * APIFunction: inherit + * *Deprecated*. Old method to inherit from one or more OpenLayers style + * classes. Use the constructor instead. + * + * Parameters: + * class - One or more classes can be provided as arguments + * + * Returns: + * An object prototype + */ +OpenLayers.Class.inherit = function () { + var superClass = arguments[0]; + var proto = new superClass(OpenLayers.Class.isPrototype); + for (var i=1, len=arguments.length; i"lon=5,lat=42"

+ Shows the use of the layer WMS-T (time) layer +

) + */ + toString:function() { + return ("lon=" + this.lon + ",lat=" + this.lat); + }, + + /** + * APIMethod: toShortString + * + * Returns: + * {String} Shortened String representation of OpenLayers.LonLat object. + * (ex. "5, 42") + */ + toShortString:function() { + return (this.lon + ", " + this.lat); + }, + + /** + * APIMethod: clone + * + * Returns: + * {} New OpenLayers.LonLat object with the same lon + * and lat values + */ + clone:function() { + return new OpenLayers.LonLat(this.lon, this.lat); + }, + + /** + * APIMethod: add + * + * Parameters: + * lon - {Float} + * lat - {Float} + * + * Returns: + * {} A new OpenLayers.LonLat object with the lon and + * lat passed-in added to this's. + */ + add:function(lon, lat) { + if ( (lon == null) || (lat == null) ) { + var msg = OpenLayers.i18n("lonlatAddError"); + OpenLayers.Console.error(msg); + return null; + } + return new OpenLayers.LonLat(this.lon + lon, this.lat + lat); + }, + + /** + * APIMethod: equals + * + * Parameters: + * ll - {} + * + * Returns: + * {Boolean} Boolean value indicating whether the passed-in + * object has the same lon and lat + * components as this. + * Note: if ll passed in is null, returns false + */ + equals:function(ll) { + var equals = false; + if (ll != null) { + equals = ((this.lon == ll.lon && this.lat == ll.lat) || + (isNaN(this.lon) && isNaN(this.lat) && isNaN(ll.lon) && isNaN(ll.lat))); + } + return equals; + }, + + /** + * APIMethod: transform + * Transform the LonLat object from source to dest. This transformation is + * *in place*: if you want a *new* lonlat, use .clone() first. + * + * Parameters: + * source - {} Source projection. + * dest - {} Destination projection. + * + * Returns: + * {} Itself, for use in chaining operations. + */ + transform: function(source, dest) { + var point = OpenLayers.Projection.transform( + {'x': this.lon, 'y': this.lat}, source, dest); + this.lon = point.x; + this.lat = point.y; + return this; + }, + + /** + * APIMethod: wrapDateLine + * + * Parameters: + * maxExtent - {} + * + * Returns: + * {} A copy of this lonlat, but wrapped around the + * "dateline" (as specified by the borders of + * maxExtent) + */ + wrapDateLine: function(maxExtent) { + + var newLonLat = this.clone(); + + if (maxExtent) { + //shift right? + while (newLonLat.lon < maxExtent.left) { + newLonLat.lon += maxExtent.getWidth(); + } + + //shift left? + while (newLonLat.lon > maxExtent.right) { + newLonLat.lon -= maxExtent.getWidth(); + } + } + + return newLonLat; + }, + + CLASS_NAME: "OpenLayers.LonLat" +}); + +/** + * Function: fromString + * Alternative constructor that builds a new from a + * parameter string + * + * Parameters: + * str - {String} Comma-separated Lon,Lat coordinate string. + * (ex. "5,40") + * + * Returns: + * {} New object built from the + * passed-in String. + */ +OpenLayers.LonLat.fromString = function(str) { + var pair = str.split(","); + return new OpenLayers.LonLat(parseFloat(pair[0]), + parseFloat(pair[1])); +}; diff --git a/openlayers/lib/OpenLayers/BaseTypes/Pixel.js b/openlayers/lib/OpenLayers/BaseTypes/Pixel.js new file mode 100644 index 0000000..755ab0c --- /dev/null +++ b/openlayers/lib/OpenLayers/BaseTypes/Pixel.js @@ -0,0 +1,124 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Console.js + */ + +/** + * Class: OpenLayers.Pixel + * This class represents a screen coordinate, in x and y coordinates + */ +OpenLayers.Pixel = OpenLayers.Class({ + + /** + * APIProperty: x + * {Number} The x coordinate + */ + x: 0.0, + + /** + * APIProperty: y + * {Number} The y coordinate + */ + y: 0.0, + + /** + * Constructor: OpenLayers.Pixel + * Create a new OpenLayers.Pixel instance + * + * Parameters: + * x - {Number} The x coordinate + * y - {Number} The y coordinate + * + * Returns: + * An instance of OpenLayers.Pixel + */ + initialize: function(x, y) { + this.x = parseFloat(x); + this.y = parseFloat(y); + }, + + /** + * Method: toString + * Cast this object into a string + * + * Returns: + * {String} The string representation of Pixel. ex: "x=200.4,y=242.2" + */ + toString:function() { + return ("x=" + this.x + ",y=" + this.y); + }, + + /** + * APIMethod: clone + * Return a clone of this pixel object + * + * Returns: + * {} A clone pixel + */ + clone:function() { + return new OpenLayers.Pixel(this.x, this.y); + }, + + /** + * APIMethod: equals + * Determine whether one pixel is equivalent to another + * + * Parameters: + * px - {} + * + * Returns: + * {Boolean} The point passed in as parameter is equal to this. Note that + * if px passed in is null, returns false. + */ + equals:function(px) { + var equals = false; + if (px != null) { + equals = ((this.x == px.x && this.y == px.y) || + (isNaN(this.x) && isNaN(this.y) && isNaN(px.x) && isNaN(px.y))); + } + return equals; + }, + + /** + * APIMethod: add + * + * Parameters: + * x - {Integer} + * y - {Integer} + * + * Returns: + * {} A new Pixel with this pixel's x&y augmented by the + * values passed in. + */ + add:function(x, y) { + if ( (x == null) || (y == null) ) { + var msg = OpenLayers.i18n("pixelAddError"); + OpenLayers.Console.error(msg); + return null; + } + return new OpenLayers.Pixel(this.x + x, this.y + y); + }, + + /** + * APIMethod: offset + * + * Parameters + * px - {} + * + * Returns: + * {} A new Pixel with this pixel's x&y augmented by the + * x&y values of the pixel passed in. + */ + offset:function(px) { + var newPx = this.clone(); + if (px) { + newPx = this.add(px.x, px.y); + } + return newPx; + }, + + CLASS_NAME: "OpenLayers.Pixel" +}); diff --git a/openlayers/lib/OpenLayers/BaseTypes/Size.js b/openlayers/lib/OpenLayers/BaseTypes/Size.js new file mode 100644 index 0000000..0b56284 --- /dev/null +++ b/openlayers/lib/OpenLayers/BaseTypes/Size.js @@ -0,0 +1,84 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * Class: OpenLayers.Size + * Instances of this class represent a width/height pair + */ +OpenLayers.Size = OpenLayers.Class({ + + /** + * APIProperty: w + * {Number} width + */ + w: 0.0, + + /** + * APIProperty: h + * {Number} height + */ + h: 0.0, + + + /** + * Constructor: OpenLayers.Size + * Create an instance of OpenLayers.Size + * + * Parameters: + * w - {Number} width + * h - {Number} height + */ + initialize: function(w, h) { + this.w = parseFloat(w); + this.h = parseFloat(h); + }, + + /** + * Method: toString + * Return the string representation of a size object + * + * Returns: + * {String} The string representation of OpenLayers.Size object. + * (ex. "w=55,h=66") + */ + toString:function() { + return ("w=" + this.w + ",h=" + this.h); + }, + + /** + * APIMethod: clone + * Create a clone of this size object + * + * Returns: + * {} A new OpenLayers.Size object with the same w and h + * values + */ + clone:function() { + return new OpenLayers.Size(this.w, this.h); + }, + + /** + * + * APIMethod: equals + * Determine where this size is equal to another + * + * Parameters: + * sz - {} + * + * Returns: + * {Boolean} The passed in size has the same h and w properties as this one. + * Note that if sz passed in is null, returns false. + * + */ + equals:function(sz) { + var equals = false; + if (sz != null) { + equals = ((this.w == sz.w && this.h == sz.h) || + (isNaN(this.w) && isNaN(this.h) && isNaN(sz.w) && isNaN(sz.h))); + } + return equals; + }, + + CLASS_NAME: "OpenLayers.Size" +}); diff --git a/openlayers/lib/OpenLayers/Console.js b/openlayers/lib/OpenLayers/Console.js new file mode 100644 index 0000000..ec42af9 --- /dev/null +++ b/openlayers/lib/OpenLayers/Console.js @@ -0,0 +1,245 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * Namespace: OpenLayers.Console + * The OpenLayers.Console namespace is used for debugging and error logging. + * If the Firebug Lite (../Firebug/firebug.js) is included before this script, + * calls to OpenLayers.Console methods will get redirected to window.console. + * This makes use of the Firebug extension where available and allows for + * cross-browser debugging Firebug style. + * + * Note: + * Note that behavior will differ with the Firebug extention and Firebug Lite. + * Most notably, the Firebug Lite console does not currently allow for + * hyperlinks to code or for clicking on object to explore their properties. + * + */ +OpenLayers.Console = { + /** + * Create empty functions for all console methods. The real value of these + * properties will be set if Firebug Lite (../Firebug/firebug.js script) is + * included. We explicitly require the Firebug Lite script to trigger + * functionality of the OpenLayers.Console methods. + */ + + /** + * APIFunction: log + * Log an object in the console. The Firebug Lite console logs string + * representation of objects. Given multiple arguments, they will + * be cast to strings and logged with a space delimiter. If the first + * argument is a string with printf-like formatting, subsequent arguments + * will be used in string substitution. Any additional arguments (beyond + * the number substituted in a format string) will be appended in a space- + * delimited line. + * + * Parameters: + * object - {Object} + */ + log: function() {}, + + /** + * APIFunction: debug + * Writes a message to the console, including a hyperlink to the line + * where it was called. + * + * May be called with multiple arguments as with OpenLayers.Console.log(). + * + * Parameters: + * object - {Object} + */ + debug: function() {}, + + /** + * APIFunction: info + * Writes a message to the console with the visual "info" icon and color + * coding and a hyperlink to the line where it was called. + * + * May be called with multiple arguments as with OpenLayers.Console.log(). + * + * Parameters: + * object - {Object} + */ + info: function() {}, + + /** + * APIFunction: warn + * Writes a message to the console with the visual "warning" icon and + * color coding and a hyperlink to the line where it was called. + * + * May be called with multiple arguments as with OpenLayers.Console.log(). + * + * Parameters: + * object - {Object} + */ + warn: function() {}, + + /** + * APIFunction: error + * Writes a message to the console with the visual "error" icon and color + * coding and a hyperlink to the line where it was called. + * + * May be called with multiple arguments as with OpenLayers.Console.log(). + * + * Parameters: + * object - {Object} + */ + error: function() {}, + + /** + * APIFunction: userError + * A single interface for showing error messages to the user. The default + * behavior is a Javascript alert, though this can be overridden by + * reassigning OpenLayers.Console.userError to a different function. + * + * Expects a single error message + * + * Parameters: + * object - {Object} + */ + userError: function(error) { + alert(error); + }, + + /** + * APIFunction: assert + * Tests that an expression is true. If not, it will write a message to + * the console and throw an exception. + * + * May be called with multiple arguments as with OpenLayers.Console.log(). + * + * Parameters: + * object - {Object} + */ + assert: function() {}, + + /** + * APIFunction: dir + * Prints an interactive listing of all properties of the object. This + * looks identical to the view that you would see in the DOM tab. + * + * Parameters: + * object - {Object} + */ + dir: function() {}, + + /** + * APIFunction: dirxml + * Prints the XML source tree of an HTML or XML element. This looks + * identical to the view that you would see in the HTML tab. You can click + * on any node to inspect it in the HTML tab. + * + * Parameters: + * object - {Object} + */ + dirxml: function() {}, + + /** + * APIFunction: trace + * Prints an interactive stack trace of JavaScript execution at the point + * where it is called. The stack trace details the functions on the stack, + * as well as the values that were passed as arguments to each function. + * You can click each function to take you to its source in the Script tab, + * and click each argument value to inspect it in the DOM or HTML tabs. + * + */ + trace: function() {}, + + /** + * APIFunction: group + * Writes a message to the console and opens a nested block to indent all + * future messages sent to the console. Call OpenLayers.Console.groupEnd() + * to close the block. + * + * May be called with multiple arguments as with OpenLayers.Console.log(). + * + * Parameters: + * object - {Object} + */ + group: function() {}, + + /** + * APIFunction: groupEnd + * Closes the most recently opened block created by a call to + * OpenLayers.Console.group + */ + groupEnd: function() {}, + + /** + * APIFunction: time + * Creates a new timer under the given name. Call + * OpenLayers.Console.timeEnd(name) + * with the same name to stop the timer and print the time elapsed. + * + * Parameters: + * name - {String} + */ + time: function() {}, + + /** + * APIFunction: timeEnd + * Stops a timer created by a call to OpenLayers.Console.time(name) and + * writes the time elapsed. + * + * Parameters: + * name - {String} + */ + timeEnd: function() {}, + + /** + * APIFunction: profile + * Turns on the JavaScript profiler. The optional argument title would + * contain the text to be printed in the header of the profile report. + * + * This function is not currently implemented in Firebug Lite. + * + * Parameters: + * title - {String} Optional title for the profiler + */ + profile: function() {}, + + /** + * APIFunction: profileEnd + * Turns off the JavaScript profiler and prints its report. + * + * This function is not currently implemented in Firebug Lite. + */ + profileEnd: function() {}, + + /** + * APIFunction: count + * Writes the number of times that the line of code where count was called + * was executed. The optional argument title will print a message in + * addition to the number of the count. + * + * This function is not currently implemented in Firebug Lite. + * + * Parameters: + * title - {String} Optional title to be printed with count + */ + count: function() {}, + + CLASS_NAME: "OpenLayers.Console" +}; + +/** + * Execute an anonymous function to extend the OpenLayers.Console namespace + * if the firebug.js script is included. This closure is used so that the + * "scripts" and "i" variables don't pollute the global namespace. + */ +(function() { + /** + * If Firebug Lite is included (before this script), re-route all + * OpenLayers.Console calls to the console object. + */ + var scripts = document.getElementsByTagName("script"); + for(var i=0, len=scripts.length; i var map = new OpenLayers.Map('map', { controls: [] }); + * > + * > map.addControl(new OpenLayers.Control.PanZoomBar()); + * > map.addControl(new OpenLayers.Control.MouseToolbar()); + * > map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false})); + * > map.addControl(new OpenLayers.Control.Permalink()); + * > map.addControl(new OpenLayers.Control.Permalink('permalink')); + * > map.addControl(new OpenLayers.Control.MousePosition()); + * > map.addControl(new OpenLayers.Control.OverviewMap()); + * > map.addControl(new OpenLayers.Control.KeyboardDefaults()); + * + * The next code fragment is a quick example of how to intercept + * shift-mouse click to display the extent of the bounding box + * dragged out by the user. Usually controls are not created + * in exactly this manner. See the source for a more complete + * example: + * + * > var control = new OpenLayers.Control(); + * > OpenLayers.Util.extend(control, { + * > draw: function () { + * > // this Handler.Box will intercept the shift-mousedown + * > // before Control.MouseDefault gets to see it + * > this.box = new OpenLayers.Handler.Box( control, + * > {"done": this.notice}, + * > {keyMask: OpenLayers.Handler.MOD_SHIFT}); + * > this.box.activate(); + * > }, + * > + * > notice: function (bounds) { + * > OpenLayers.Console.userError(bounds); + * > } + * > }); + * > map.addControl(control); + * + */ +OpenLayers.Control = OpenLayers.Class({ + + /** + * Property: id + * {String} + */ + id: null, + + /** + * Property: map + * {} this gets set in the addControl() function in + * OpenLayers.Map + */ + map: null, + + /** + * Property: div + * {DOMElement} + */ + div: null, + + /** + * Property: type + * {OpenLayers.Control.TYPES} Controls can have a 'type'. The type + * determines the type of interactions which are possible with them when + * they are placed into a toolbar. + */ + type: null, + + /** + * Property: allowSelection + * {Boolean} By deafault, controls do not allow selection, because + * it may interfere with map dragging. If this is true, OpenLayers + * will not prevent selection of the control. + * Default is false. + */ + allowSelection: false, + + /** + * Property: displayClass + * {string} This property is used for CSS related to the drawing of the + * Control. + */ + displayClass: "", + + /** + * Property: title + * {string} This property is used for showing a tooltip over the + * Control. + */ + title: "", + + /** + * Property: active + * {Boolean} The control is active. + */ + active: null, + + /** + * Property: handler + * {} null + */ + handler: null, + + /** + * APIProperty: eventListeners + * {Object} If set as an option at construction, the eventListeners + * object will be registered with . Object + * structure must be a listeners object as shown in the example for + * the events.on method. + */ + eventListeners: null, + + /** + * Property: events + * {} Events instance for triggering control specific + * events. + */ + events: null, + + /** + * Constant: EVENT_TYPES + * {Array(String)} Supported application event types. Register a listener + * for a particular event with the following syntax: + * (code) + * control.events.register(type, obj, listener); + * (end) + * + * Listeners will be called with a reference to an event object. The + * properties of this event depends on exactly what happened. + * + * All event objects have at least the following properties: + * object - {Object} A reference to control.events.object (a reference + * to the control). + * element - {DOMElement} A reference to control.events.element (which + * will be null unless documented otherwise). + * + * Supported map event types: + * activate - Triggered when activated. + * deactivate - Triggered when deactivated. + */ + EVENT_TYPES: ["activate", "deactivate"], + + /** + * Constructor: OpenLayers.Control + * Create an OpenLayers Control. The options passed as a parameter + * directly extend the control. For example passing the following: + * + * > var control = new OpenLayers.Control({div: myDiv}); + * + * Overrides the default div attribute value of null. + * + * Parameters: + * options - {Object} + */ + initialize: function (options) { + // We do this before the extend so that instances can override + // className in options. + this.displayClass = + this.CLASS_NAME.replace("OpenLayers.", "ol").replace(/\./g, ""); + + OpenLayers.Util.extend(this, options); + + this.events = new OpenLayers.Events(this, null, this.EVENT_TYPES); + if(this.eventListeners instanceof Object) { + this.events.on(this.eventListeners); + } + if (this.id == null) { + this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_"); + } + }, + + /** + * Method: destroy + * The destroy method is used to perform any clean up before the control + * is dereferenced. Typically this is where event listeners are removed + * to prevent memory leaks. + */ + destroy: function () { + if(this.events) { + if(this.eventListeners) { + this.events.un(this.eventListeners); + } + this.events.destroy(); + this.events = null; + } + this.eventListeners = null; + + // eliminate circular references + if (this.handler) { + this.handler.destroy(); + this.handler = null; + } + if(this.handlers) { + for(var key in this.handlers) { + if(this.handlers.hasOwnProperty(key) && + typeof this.handlers[key].destroy == "function") { + this.handlers[key].destroy(); + } + } + this.handlers = null; + } + if (this.map) { + this.map.removeControl(this); + this.map = null; + } + }, + + /** + * Method: setMap + * Set the map property for the control. This is done through an accessor + * so that subclasses can override this and take special action once + * they have their map variable set. + * + * Parameters: + * map - {} + */ + setMap: function(map) { + this.map = map; + if (this.handler) { + this.handler.setMap(map); + } + }, + + /** + * Method: draw + * The draw method is called when the control is ready to be displayed + * on the page. If a div has not been created one is created. Controls + * with a visual component will almost always want to override this method + * to customize the look of control. + * + * Parameters: + * px - {} The top-left pixel position of the control + * or null. + * + * Returns: + * {DOMElement} A reference to the DIV DOMElement containing the control + */ + draw: function (px) { + if (this.div == null) { + this.div = OpenLayers.Util.createDiv(this.id); + this.div.className = this.displayClass; + if (!this.allowSelection) { + this.div.className += " olControlNoSelect"; + this.div.setAttribute("unselectable", "on", 0); + this.div.onselectstart = function() { return(false); }; + } + if (this.title != "") { + this.div.title = this.title; + } + } + if (px != null) { + this.position = px.clone(); + } + this.moveTo(this.position); + return this.div; + }, + + /** + * Method: moveTo + * Sets the left and top style attributes to the passed in pixel + * coordinates. + * + * Parameters: + * px - {} + */ + moveTo: function (px) { + if ((px != null) && (this.div != null)) { + this.div.style.left = px.x + "px"; + this.div.style.top = px.y + "px"; + } + }, + + /** + * Method: activate + * Explicitly activates a control and it's associated + * handler if one has been set. Controls can be + * deactivated by calling the deactivate() method. + * + * Returns: + * {Boolean} True if the control was successfully activated or + * false if the control was already active. + */ + activate: function () { + if (this.active) { + return false; + } + if (this.handler) { + this.handler.activate(); + } + this.active = true; + if(this.map) { + OpenLayers.Element.addClass( + this.map.viewPortDiv, + this.displayClass.replace(/ /g, "") + "Active" + ); + } + this.events.triggerEvent("activate"); + return true; + }, + + /** + * Method: deactivate + * Deactivates a control and it's associated handler if any. The exact + * effect of this depends on the control itself. + * + * Returns: + * {Boolean} True if the control was effectively deactivated or false + * if the control was already inactive. + */ + deactivate: function () { + if (this.active) { + if (this.handler) { + this.handler.deactivate(); + } + this.active = false; + if(this.map) { + OpenLayers.Element.removeClass( + this.map.viewPortDiv, + this.displayClass.replace(/ /g, "") + "Active" + ); + } + this.events.triggerEvent("deactivate"); + return true; + } + return false; + }, + + CLASS_NAME: "OpenLayers.Control" +}); + +OpenLayers.Control.TYPE_BUTTON = 1; +OpenLayers.Control.TYPE_TOGGLE = 2; +OpenLayers.Control.TYPE_TOOL = 3; diff --git a/openlayers/lib/OpenLayers/Control/ArgParser.js b/openlayers/lib/OpenLayers/Control/ArgParser.js new file mode 100644 index 0000000..bafd822 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/ArgParser.js @@ -0,0 +1,165 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Control.js + */ + +/** + * Class: OpenLayers.Control.ArgParser + * The ArgParser control adds location bar querystring parsing functionality + * to an OpenLayers Map. + * When added to a Map control, on a page load/refresh, the Map will + * automatically take the href string and parse it for lon, lat, zoom, and + * layers information. + * + * Inherits from: + * - + */ +OpenLayers.Control.ArgParser = OpenLayers.Class(OpenLayers.Control, { + + /** + * Parameter: center + * {} + */ + center: null, + + /** + * Parameter: zoom + * {int} + */ + zoom: null, + + /** + * Parameter: layers + * {Array()} + */ + layers: null, + + /** + * APIProperty: displayProjection + * {} Requires proj4js support. + * Projection used when reading the coordinates from the URL. This will + * + * reproject the map coordinates from the URL into the map's + * projection. + * + * If you are using this functionality, be aware that any permalink + * which is added to the map will determine the coordinate type which + * is read from the URL, which means you should not add permalinks with + * different displayProjections to the same map. + */ + displayProjection: null, + + /** + * Constructor: OpenLayers.Control.ArgParser + * + * Parameters: + * options - {Object} + */ + initialize: function(options) { + OpenLayers.Control.prototype.initialize.apply(this, arguments); + }, + + /** + * Method: setMap + * Set the map property for the control. + * + * Parameters: + * map - {} + */ + setMap: function(map) { + OpenLayers.Control.prototype.setMap.apply(this, arguments); + + //make sure we dont already have an arg parser attached + for(var i=0, len=this.map.controls.length; i + */ +OpenLayers.Control.Attribution = + OpenLayers.Class(OpenLayers.Control, { + + /** + * APIProperty: seperator + * {String} String used to seperate layers. + */ + separator: ", ", + + /** + * Constructor: OpenLayers.Control.Attribution + * + * Parameters: + * options - {Object} Options for control. + */ + initialize: function(options) { + OpenLayers.Control.prototype.initialize.apply(this, arguments); + }, + + /** + * Method: destroy + * Destroy control. + */ + destroy: function() { + this.map.events.un({ + "removelayer": this.updateAttribution, + "addlayer": this.updateAttribution, + "changelayer": this.updateAttribution, + "changebaselayer": this.updateAttribution, + scope: this + }); + + OpenLayers.Control.prototype.destroy.apply(this, arguments); + }, + + /** + * Method: draw + * Initialize control. + * + * Returns: + * {DOMElement} A reference to the DIV DOMElement containing the control + */ + draw: function() { + OpenLayers.Control.prototype.draw.apply(this, arguments); + + this.map.events.on({ + 'changebaselayer': this.updateAttribution, + 'changelayer': this.updateAttribution, + 'addlayer': this.updateAttribution, + 'removelayer': this.updateAttribution, + scope: this + }); + this.updateAttribution(); + + return this.div; + }, + + /** + * Method: updateAttribution + * Update attribution string. + */ + updateAttribution: function() { + var attributions = []; + if (this.map && this.map.layers) { + for(var i=0, len=this.map.layers.length; i. + * When clicked, the function trigger() is executed. + * + * Inherits from: + * - + * + * Use: + * (code) + * var button = new OpenLayers.Control.Button({ + * displayClass: "MyButton", trigger: myFunction + * }); + * panel.addControls([button]); + * (end) + * + * Will create a button with CSS class MyButtonItemInactive, that + * will call the function MyFunction() when clicked. + */ +OpenLayers.Control.Button = OpenLayers.Class(OpenLayers.Control, { + /** + * Property: type + * {Integer} OpenLayers.Control.TYPE_BUTTON. + */ + type: OpenLayers.Control.TYPE_BUTTON, + + /** + * Method: trigger + * Called by a control panel when the button is clicked. + */ + trigger: function() {}, + + CLASS_NAME: "OpenLayers.Control.Button" +}); diff --git a/openlayers/lib/OpenLayers/Control/DragFeature.js b/openlayers/lib/OpenLayers/Control/DragFeature.js new file mode 100644 index 0000000..ad390f4 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/DragFeature.js @@ -0,0 +1,293 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Control.js + * @requires OpenLayers/Handler/Drag.js + * @requires OpenLayers/Handler/Feature.js + */ + +/** + * Class: OpenLayers.Control.DragFeature + * The DragFeature control moves a feature with a drag of the mouse. Create a + * new control with the constructor. + * + * Inherits From: + * - + */ +OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, { + + /** + * APIProperty: geometryTypes + * {Array(String)} To restrict dragging to a limited set of geometry types, + * send a list of strings corresponding to the geometry class names. + */ + geometryTypes: null, + + /** + * APIProperty: onStart + * {Function} Define this function if you want to know when a drag starts. + * The function should expect to receive two arguments: the feature + * that is about to be dragged and the pixel location of the mouse. + * + * Parameters: + * feature - {} The feature that is about to be + * dragged. + * pixel - {} The pixel location of the mouse. + */ + onStart: function(feature, pixel) {}, + + /** + * APIProperty: onDrag + * {Function} Define this function if you want to know about each move of a + * feature. The function should expect to receive two arguments: the + * feature that is being dragged and the pixel location of the mouse. + * + * Parameters: + * feature - {} The feature that was dragged. + * pixel - {} The pixel location of the mouse. + */ + onDrag: function(feature, pixel) {}, + + /** + * APIProperty: onComplete + * {Function} Define this function if you want to know when a feature is + * done dragging. The function should expect to receive two arguments: + * the feature that is being dragged and the pixel location of the + * mouse. + * + * Parameters: + * feature - {} The feature that was dragged. + * pixel - {} The pixel location of the mouse. + */ + onComplete: function(feature, pixel) {}, + + /** + * Property: layer + * {} + */ + layer: null, + + /** + * Property: feature + * {} + */ + feature: null, + + /** + * Property: dragCallbacks + * {Object} The functions that are sent to the drag handler for callback. + */ + dragCallbacks: {}, + + /** + * Property: featureCallbacks + * {Object} The functions that are sent to the feature handler for callback. + */ + featureCallbacks: {}, + + /** + * Property: lastPixel + * {} + */ + lastPixel: null, + + /** + * Constructor: OpenLayers.Control.DragFeature + * Create a new control to drag features. + * + * Parameters: + * layer - {} The layer containing features to be + * dragged. + * options - {Object} Optional object whose properties will be set on the + * control. + */ + initialize: function(layer, options) { + OpenLayers.Control.prototype.initialize.apply(this, [options]); + this.layer = layer; + this.handlers = { + drag: new OpenLayers.Handler.Drag( + this, OpenLayers.Util.extend({ + down: this.downFeature, + move: this.moveFeature, + up: this.upFeature, + out: this.cancel, + done: this.doneDragging + }, this.dragCallbacks) + ), + feature: new OpenLayers.Handler.Feature( + this, this.layer, OpenLayers.Util.extend({ + over: this.overFeature, + out: this.outFeature + }, this.featureCallbacks), + {geometryTypes: this.geometryTypes} + ) + }; + }, + + /** + * APIMethod: destroy + * Take care of things that are not handled in superclass + */ + destroy: function() { + this.layer = null; + OpenLayers.Control.prototype.destroy.apply(this, []); + }, + + /** + * APIMethod: activate + * Activate the control and the feature handler. + * + * Returns: + * {Boolean} Successfully activated the control and feature handler. + */ + activate: function() { + return (this.handlers.feature.activate() && + OpenLayers.Control.prototype.activate.apply(this, arguments)); + }, + + /** + * APIMethod: deactivate + * Deactivate the control and all handlers. + * + * Returns: + * {Boolean} Successfully deactivated the control. + */ + deactivate: function() { + // the return from the handlers is unimportant in this case + this.handlers.drag.deactivate(); + this.handlers.feature.deactivate(); + this.feature = null; + this.dragging = false; + this.lastPixel = null; + OpenLayers.Element.removeClass( + this.map.viewPortDiv, this.displayClass + "Over" + ); + return OpenLayers.Control.prototype.deactivate.apply(this, arguments); + }, + + /** + * Method: overFeature + * Called when the feature handler detects a mouse-over on a feature. + * This activates the drag handler. + * + * Parameters: + * feature - {} The selected feature. + */ + overFeature: function(feature) { + if(!this.handlers.drag.dragging) { + this.feature = feature; + this.handlers.drag.activate(); + this.over = true; + OpenLayers.Element.addClass(this.map.viewPortDiv, this.displayClass + "Over"); + } else { + if(this.feature.id == feature.id) { + this.over = true; + } else { + this.over = false; + } + } + }, + + /** + * Method: downFeature + * Called when the drag handler detects a mouse-down. + * + * Parameters: + * pixel - {} Location of the mouse event. + */ + downFeature: function(pixel) { + this.lastPixel = pixel; + this.onStart(this.feature, pixel); + }, + + /** + * Method: moveFeature + * Called when the drag handler detects a mouse-move. Also calls the + * optional onDrag method. + * + * Parameters: + * pixel - {} Location of the mouse event. + */ + moveFeature: function(pixel) { + var res = this.map.getResolution(); + this.feature.geometry.move(res * (pixel.x - this.lastPixel.x), + res * (this.lastPixel.y - pixel.y)); + this.layer.drawFeature(this.feature); + this.lastPixel = pixel; + this.onDrag(this.feature, pixel); + }, + + /** + * Method: upFeature + * Called when the drag handler detects a mouse-up. + * + * Parameters: + * pixel - {} Location of the mouse event. + */ + upFeature: function(pixel) { + if(!this.over) { + this.handlers.drag.deactivate(); + } + }, + + /** + * Method: doneDragging + * Called when the drag handler is done dragging. + * + * Parameters: + * pixel - {} The last event pixel location. If this event + * came from a mouseout, this may not be in the map viewport. + */ + doneDragging: function(pixel) { + this.onComplete(this.feature, pixel); + }, + + /** + * Method: outFeature + * Called when the feature handler detects a mouse-out on a feature. + * + * Parameters: + * feature - {} The feature that the mouse left. + */ + outFeature: function(feature) { + if(!this.handlers.drag.dragging) { + this.over = false; + this.handlers.drag.deactivate(); + OpenLayers.Element.removeClass( + this.map.viewPortDiv, this.displayClass + "Over" + ); + this.feature = null; + } else { + if(this.feature.id == feature.id) { + this.over = false; + } + } + }, + + /** + * Method: cancel + * Called when the drag handler detects a mouse-out (from the map viewport). + */ + cancel: function() { + this.handlers.drag.deactivate(); + this.over = false; + }, + + /** + * Method: setMap + * Set the map property for the control and all handlers. + * + * Parameters: + * map - {} The control's map. + */ + setMap: function(map) { + this.handlers.drag.setMap(map); + this.handlers.feature.setMap(map); + OpenLayers.Control.prototype.setMap.apply(this, arguments); + }, + + CLASS_NAME: "OpenLayers.Control.DragFeature" +}); diff --git a/openlayers/lib/OpenLayers/Control/DragPan.js b/openlayers/lib/OpenLayers/Control/DragPan.js new file mode 100644 index 0000000..8caf6b8 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/DragPan.js @@ -0,0 +1,85 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control.js + * @requires OpenLayers/Handler/Drag.js + */ + +/** + * Class: OpenLayers.Control.DragPan + * The DragPan control pans the map with a drag of the mouse. + * + * Inherits from: + * - + */ +OpenLayers.Control.DragPan = OpenLayers.Class(OpenLayers.Control, { + + /** + * Property: type + * {OpenLayers.Control.TYPES} + */ + type: OpenLayers.Control.TYPE_TOOL, + + /** + * Property: panned + * {Boolean} The map moved. + */ + panned: false, + + /** + * Property: interval + * {Integer} The number of milliseconds that should ellapse before + * panning the map again. Set this to increase dragging performance. + * Defaults to 25 milliseconds. + */ + interval: 25, + + /** + * Method: draw + * Creates a Drag handler, using and + * as callbacks. + */ + draw: function() { + this.handler = new OpenLayers.Handler.Drag(this, { + "move": this.panMap, + "done": this.panMapDone + }, { + interval: this.interval + } + ); + }, + + /** + * Method: panMap + * + * Parameters: + * xy - {} Pixel of the mouse position + */ + panMap: function(xy) { + this.panned = true; + this.map.pan( + this.handler.last.x - xy.x, + this.handler.last.y - xy.y, + {dragging: this.handler.dragging, animate: false} + ); + }, + + /** + * Method: panMapDone + * Finish the panning operation. Only call setCenter (through ) + * if the map has actually been moved. + * + * Parameters: + * xy - {} Pixel of the mouse position + */ + panMapDone: function(xy) { + if(this.panned) { + this.panMap(xy); + this.panned = false; + } + }, + + CLASS_NAME: "OpenLayers.Control.DragPan" +}); diff --git a/openlayers/lib/OpenLayers/Control/DrawFeature.js b/openlayers/lib/OpenLayers/Control/DrawFeature.js new file mode 100644 index 0000000..6056fda --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/DrawFeature.js @@ -0,0 +1,115 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Control.js + * @requires OpenLayers/Feature/Vector.js + */ + +/** + * Class: OpenLayers.Control.DrawFeature + * The DrawFeature control draws point, line or polygon features on a vector + * layer when active. + * + * Inherits from: + * - + */ +OpenLayers.Control.DrawFeature = OpenLayers.Class(OpenLayers.Control, { + + /** + * Property: layer + * {} + */ + layer: null, + + /** + * Property: callbacks + * {Object} The functions that are sent to the handler for callback + */ + callbacks: null, + + /** + * Constant: EVENT_TYPES + * + * Supported event types: + * featureadded - Triggered when a feature is added + */ + EVENT_TYPES: ["featureadded"], + + /** + * APIProperty: featureAdded + * {Function} Called after each feature is added + */ + featureAdded: function() {}, + + /** + * APIProperty: handlerOptions + * {Object} Used to set non-default properties on the control's handler + */ + handlerOptions: null, + + /** + * Constructor: OpenLayers.Control.DrawFeature + * + * Parameters: + * layer - {} + * handler - {} + * options - {Object} + */ + initialize: function(layer, handler, options) { + + // concatenate events specific to vector with those from the base + this.EVENT_TYPES = + OpenLayers.Control.DrawFeature.prototype.EVENT_TYPES.concat( + OpenLayers.Control.prototype.EVENT_TYPES + ); + + OpenLayers.Control.prototype.initialize.apply(this, [options]); + this.callbacks = OpenLayers.Util.extend( + { + done: this.drawFeature, + modify: function(vertex, feature) { + this.layer.events.triggerEvent( + "sketchmodified", {vertex: vertex, feature: feature} + ); + }, + create: function(vertex, feature) { + this.layer.events.triggerEvent( + "sketchstarted", {vertex: vertex, feature: feature} + ); + } + }, + this.callbacks + ); + this.layer = layer; + var sketchStyle = this.layer.styleMap && this.layer.styleMap.styles.temporary; + if(sketchStyle) { + this.handlerOptions = this.handlerOptions || {}; + this.handlerOptions.layerOptions = OpenLayers.Util.applyDefaults( + this.handlerOptions.layerOptions, + {styleMap: new OpenLayers.StyleMap({"default": sketchStyle})} + ); + } + this.handler = new handler(this, this.callbacks, this.handlerOptions); + }, + + /** + * Method: drawFeature + */ + drawFeature: function(geometry) { + var feature = new OpenLayers.Feature.Vector(geometry); + var proceed = this.layer.events.triggerEvent( + "sketchcomplete", {feature: feature} + ); + if(proceed !== false) { + feature.state = OpenLayers.State.INSERT; + this.layer.addFeatures([feature]); + this.featureAdded(feature); + this.events.triggerEvent("featureadded",{feature : feature}); + } + }, + + CLASS_NAME: "OpenLayers.Control.DrawFeature" +}); diff --git a/openlayers/lib/OpenLayers/Control/EditingToolbar.js b/openlayers/lib/OpenLayers/Control/EditingToolbar.js new file mode 100644 index 0000000..6a8173f --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/EditingToolbar.js @@ -0,0 +1,62 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control/Panel.js + * @requires OpenLayers/Control/Navigation.js + * @requires OpenLayers/Control/DrawFeature.js + * @requires OpenLayers/Handler/Point.js + * @requires OpenLayers/Handler/Path.js + * @requires OpenLayers/Handler/Polygon.js + */ + +/** + * Class: OpenLayers.Control.EditingToolbar + * The EditingToolbar is a panel of 4 controls to draw polygons, lines, + * points, or to navigate the map by panning. By default it appears in the + * upper right corner of the map. + * + * Inherits from: + * - + */ +OpenLayers.Control.EditingToolbar = OpenLayers.Class( + OpenLayers.Control.Panel, { + + /** + * Constructor: OpenLayers.Control.EditingToolbar + * Create an editing toolbar for a given layer. + * + * Parameters: + * layer - {} + * options - {Object} + */ + initialize: function(layer, options) { + OpenLayers.Control.Panel.prototype.initialize.apply(this, [options]); + + this.addControls( + [ new OpenLayers.Control.Navigation() ] + ); + var controls = [ + new OpenLayers.Control.DrawFeature(layer, OpenLayers.Handler.Point, {'displayClass': 'olControlDrawFeaturePoint'}), + new OpenLayers.Control.DrawFeature(layer, OpenLayers.Handler.Path, {'displayClass': 'olControlDrawFeaturePath'}), + new OpenLayers.Control.DrawFeature(layer, OpenLayers.Handler.Polygon, {'displayClass': 'olControlDrawFeaturePolygon'}) + ]; + this.addControls(controls); + }, + + /** + * Method: draw + * calls the default draw, and then activates mouse defaults. + * + * Returns: + * {DOMElement} + */ + draw: function() { + var div = OpenLayers.Control.Panel.prototype.draw.apply(this, arguments); + this.activateControl(this.controls[0]); + return div; + }, + + CLASS_NAME: "OpenLayers.Control.EditingToolbar" +}); diff --git a/openlayers/lib/OpenLayers/Control/GetFeature.js b/openlayers/lib/OpenLayers/Control/GetFeature.js new file mode 100644 index 0000000..e8314e6 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/GetFeature.js @@ -0,0 +1,558 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control.js + * @requires OpenLayers/Handler/Click.js + * @requires OpenLayers/Handler/Box.js + * @requires OpenLayers/Handler/Hover.js + * @requires OpenLayers/Filter/Spatial.js + */ + +/** + * Class: OpenLayers.Control.GetFeature + * Gets vector features for locations underneath the mouse cursor. Can be + * configured to act on click, hover or dragged boxes. Uses an + * that supports spatial filters (BBOX) to retrieve + * features from a server and fires events that notify applications of the + * selected features. + * + * Inherits from: + * - + */ +OpenLayers.Control.GetFeature = OpenLayers.Class(OpenLayers.Control, { + + /** + * APIProperty: protocol + * {} Required. The protocol used for fetching + * features. + */ + protocol: null, + + /** + * APIProperty: multipleKey + * {String} An event modifier ('altKey' or 'shiftKey') that temporarily sets + * the property to true. Default is null. + */ + multipleKey: null, + + /** + * APIProperty: toggleKey + * {String} An event modifier ('altKey' or 'shiftKey') that temporarily sets + * the property to true. Default is null. + */ + toggleKey: null, + + /** + * Property: modifiers + * {Object} The event modifiers to use, according to the current event + * being handled by this control's handlers + */ + modifiers: null, + + /** + * APIProperty: multiple + * {Boolean} Allow selection of multiple geometries. Default is false. + */ + multiple: false, + + /** + * APIProperty: click + * {Boolean} Use a click handler for selecting/unselecting features. + * Default is true. + */ + click: true, + + /** + * APIProperty: clickout + * {Boolean} Unselect features when clicking outside any feature. + * Applies only if is true. Default is true. + */ + clickout: true, + + /** + * APIProperty: toggle + * {Boolean} Unselect a selected feature on click. Applies only if + * is true. Default is false. + */ + toggle: false, + + /** + * APIProperty: clickTolerance + * {Integer} Tolerance for the BBOX query in pixels. This has the + * same effect as the tolerance parameter on WMS GetFeatureInfo + * requests. Will be ignored for box selections. Applies only if + * is true. Default is 5. + */ + clickTolerance: 5, + + /** + * APIProperty: hover + * {Boolean} Send feature requests on mouse moves. Default is false. + */ + hover: false, + + /** + * APIProperty: box + * {Boolean} Allow feature selection by drawing a box. + */ + box: false, + + /** + * APIProperty: maxFeatures + * {Integer} Maximum number of features to return from a query, if + * supported by the . Default is 10. + */ + maxFeatures: 10, + + /** + * Property: features + * {Object} Hash of {}, keyed by fid, holding + * the currently selected features + */ + features: null, + + /** + * Proeprty: hoverFeature + * {} The feature currently selected by the + * hover handler + */ + hoverFeature: null, + + /** + * APIProperty: handlerOptions + * {Object} Additional options for the handlers used by this control. This + * is a hash with the keys "click", "box" and "hover". + */ + handlerOptions: null, + + /** + * Property: handlers + * {Object} Object with references to multiple + * instances. + */ + handlers: null, + + /** + * Property: hoverResponse + * {} The response object associated with + * the currently running hover request (if any). + */ + hoverResponse: null, + + /** + * Constant: EVENT_TYPES + * + * Supported event types: + * beforefeatureselected - Triggered when is true before a + * feature is selected. The event object has a feature property with + * the feature about to select + * featureselected - Triggered when is true and a feature is + * selected. The event object has a feature property with the + * selected feature + * featureunselected - Triggered when is true and a feature is + * unselected. The event object has a feature property with the + * unselected feature + * clickout - Triggered when when is true and no feature was + * selected. + * hoverfeature - Triggered when is true and the mouse has + * stopped over a feature + * outfeature - Triggered when is true and the mouse moves + * moved away from a hover-selected feature + */ + EVENT_TYPES: ["featureselected", "featureunselected", "clickout", + "beforefeatureselected", "hoverfeature", "outfeature"], + + /** + * Constructor: OpenLayers.Control.GetFeature + * Create a new control for fetching remote features. + * + * Parameters: + * options - {Object} A configuration object which at least has to contain + * a property + */ + initialize: function(options) { + // concatenate events specific to vector with those from the base + this.EVENT_TYPES = + OpenLayers.Control.GetFeature.prototype.EVENT_TYPES.concat( + OpenLayers.Control.prototype.EVENT_TYPES + ); + + options.handlerOptions = options.handlerOptions || {}; + + OpenLayers.Control.prototype.initialize.apply(this, [options]); + + this.features = {}; + + this.handlers = {}; + + if(this.click) { + this.handlers.click = new OpenLayers.Handler.Click(this, + {click: this.selectSingle}, this.handlerOptions.click || {}) + }; + + if(this.box) { + this.handlers.box = new OpenLayers.Handler.Box( + this, {done: this.selectBox}, + OpenLayers.Util.extend(this.handlerOptions.box, { + boxDivClassName: "olHandlerBoxSelectFeature" + }) + ); + } + + if(this.hover) { + this.handlers.hover = new OpenLayers.Handler.Hover( + this, {'move': this.cancelHover, 'pause': this.selectHover}, + OpenLayers.Util.extend(this.handlerOptions.hover, { + 'delay': 250 + }) + ); + } + }, + + /** + * Method: activate + * Activates the control. + * + * Returns: + * {Boolean} The control was effectively activated. + */ + activate: function () { + if (!this.active) { + for(var i in this.handlers) { + this.handlers[i].activate(); + } + } + return OpenLayers.Control.prototype.activate.apply( + this, arguments + ); + }, + + /** + * Method: deactivate + * Deactivates the control. + * + * Returns: + * {Boolean} The control was effectively deactivated. + */ + deactivate: function () { + if (this.active) { + for(var i in this.handlers) { + this.handlers[i].deactivate(); + } + } + return OpenLayers.Control.prototype.deactivate.apply( + this, arguments + ); + }, + + /** + * Method: unselectAll + * Unselect all selected features. To unselect all except for a single + * feature, set the options.except property to the feature. + * + * Parameters: + * options - {Object} Optional configuration object. + */ + unselectAll: function(options) { + // we'll want an option to supress notification here + var feature; + for(var i=this.features.length-1; i>=0; --i) { + feature = this.features[i]; + if(!options || options.except != feature) { + this.unselect(feature); + } + } + }, + + /** + * Method: selectSingle + * Called on click + * + * Parameters: + * evt - {} + */ + selectSingle: function(evt) { + // Set the cursor to "wait" to tell the user we're working on their click. + OpenLayers.Element.addClass(this.map.viewPortDiv, "olCursorWait"); + + var bounds = this.pixelToBounds(evt.xy); + + this.setModifiers(evt); + this.request(bounds, {single: true}); + }, + + /** + * Method: selectBox + * Callback from the handlers.box set up when selection is on + * + * Parameters: + * position - {} + */ + selectBox: function(position) { + if (position instanceof OpenLayers.Bounds) { + var minXY = this.map.getLonLatFromPixel( + new OpenLayers.Pixel(position.left, position.bottom) + ); + var maxXY = this.map.getLonLatFromPixel( + new OpenLayers.Pixel(position.right, position.top) + ); + var bounds = new OpenLayers.Bounds( + minXY.lon, minXY.lat, maxXY.lon, maxXY.lat + ); + + this.setModifiers(this.handlers.box.dragHandler.evt); + this.request(bounds); + } + }, + + /** + * Method selectHover + * Callback from the handlers.hover set up when selection is on + * + * Parameters: + * evt {Object} - event object with an xy property + */ + selectHover: function(evt) { + var bounds = this.pixelToBounds(evt.xy); + this.request(bounds, {single: true, hover: true}); + }, + + /** + * Method: cancelHover + * Callback from the handlers.hover set up when selection is on + */ + cancelHover: function() { + if (this.hoverResponse) { + this.protocol.abort(this.hoverResponse); + this.hoverResponse = null; + } + }, + + /** + * Method: request + * Sends a GetFeature request to the WFS + * + * Parameters: + * bounds - {} bounds for the request's BBOX filter + * options - {Object} additional options for this method. + * + * Supported options include: + * single - {Boolean} A single feature should be returned. + * Note that this will be ignored if the protocol does not + * return the geometries of the features. + * hover - {Boolean} Do the request for the hover handler. + */ + request: function(bounds, options) { + options = options || {}; + var filter = new OpenLayers.Filter.Spatial({ + type: OpenLayers.Filter.Spatial.BBOX, + value: bounds + }); + + var response = this.protocol.read({ + maxFeatures: options.single == true ? this.maxFeatures : undefined, + filter: filter, + callback: function(result) { + if(result.code == 1) { + if(result.features.length) { + if(options.single == true) { + this.selectBestFeature(result.features, + bounds.getCenterLonLat(), options); + } else { + this.select(result.features); + } + } else if(options.hover) { + this.hoverSelect(); + } else { + this.events.triggerEvent("clickout"); + if(this.clickout) { + this.unselectAll(); + } + } + } + // Reset the cursor. + OpenLayers.Element.removeClass(this.map.viewPortDiv, "olCursorWait"); + }, + scope: this + }); + if(options.hover == true) { + this.hoverResponse = response; + } + }, + + /** + * Method: selectBestFeature + * Selects the feature from an array of features that is the best match + * for the click position. + * + * Parameters: + * features - {Array()} + * clickPosition - {} + * options - {Object} additional options for this method + * + * Supported options include: + * hover - {Boolean} Do the selection for the hover handler. + */ + selectBestFeature: function(features, clickPosition, options) { + options = options || {}; + if(features.length) { + var point = new OpenLayers.Geometry.Point(clickPosition.lon, + clickPosition.lat); + var feature, resultFeature, dist; + var minDist = Number.MAX_VALUE; + for(var i=0; i} + */ + setModifiers: function(evt) { + this.modifiers = { + multiple: this.multiple || (this.multipleKey && evt[this.multipleKey]), + toggle: this.toggle || (this.toggleKey && evt[this.toggleKey]) + } + }, + + /** + * Method: select + * Add feature to the hash of selected features and trigger the + * featureselected event. + * + * Parameters: + * features - {} or an array of features + */ + select: function(features) { + if(!this.modifiers.multiple && !this.modifiers.toggle) { + this.unselectAll(); + } + if(!(features instanceof Array)) { + features = [features]; + } + + var feature; + for(var i=0, len=features.length; i + * + * Parameters: + * feature - {} the feature to hover-select. + * If none is provided, the current will be nulled and + * the outfeature event will be triggered. + */ + hoverSelect: function(feature) { + var fid = feature ? feature.fid || feature.id : null; + var hfid = this.hoverFeature ? + this.hoverFeature.fid || this.hoverFeature.id : null; + + if(hfid && hfid != fid) { + this.events.triggerEvent("outfeature", + {feature: this.hoverFeature}); + this.hoverFeature = null; + } + if(fid && fid != hfid) { + this.events.triggerEvent("hoverfeature", {feature: feature}); + this.hoverFeature = feature; + } + }, + + /** + * Method: unselect + * Remove feature from the hash of selected features and trigger the + * featureunselected event. + * + * Parameters: + * feature - {} + */ + unselect: function(feature) { + delete this.features[feature.fid || feature.id]; + this.events.triggerEvent("featureunselected", {feature: feature}); + }, + + /** + * Method: unselectAll + * Unselect all selected features. + */ + unselectAll: function() { + // we'll want an option to supress notification here + for(var fid in this.features) { + this.unselect(this.features[fid]); + } + }, + + /** + * Method: setMap + * Set the map property for the control. + * + * Parameters: + * map - {} + */ + setMap: function(map) { + for(var i in this.handlers) { + this.handlers[i].setMap(map); + } + OpenLayers.Control.prototype.setMap.apply(this, arguments); + }, + + /** + * Method: pixelToBounds + * Takes a pixel as argument and creates bounds after adding the + * . + * + * Parameters: + * pixel - {} + */ + pixelToBounds: function(pixel) { + var llPx = pixel.add(-this.clickTolerance/2, this.clickTolerance/2); + var urPx = pixel.add(this.clickTolerance/2, -this.clickTolerance/2); + var ll = this.map.getLonLatFromPixel(llPx); + var ur = this.map.getLonLatFromPixel(urPx); + return new OpenLayers.Bounds(ll.lon, ll.lat, ur.lon, ur.lat); + }, + + CLASS_NAME: "OpenLayers.Control.GetFeature" +}); diff --git a/openlayers/lib/OpenLayers/Control/KeyboardDefaults.js b/openlayers/lib/OpenLayers/Control/KeyboardDefaults.js new file mode 100644 index 0000000..2ab4a60 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/KeyboardDefaults.js @@ -0,0 +1,121 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Control.js + * @requires OpenLayers/Handler/Keyboard.js + */ + +/** + * Class: OpenLayers.Control.KeyboardDefaults + * The KeyboardDefaults control adds panning and zooming functions, controlled + * with the keyboard. By default arrow keys pan, +/- keys zoom & Page Up/Page + * Down/Home/End scroll by three quarters of a page. + * + * This control has no visible appearance. + * + * Inherits from: + * - + */ +OpenLayers.Control.KeyboardDefaults = OpenLayers.Class(OpenLayers.Control, { + + /** + * APIProperty: slideFactor + * Pixels to slide by. + */ + slideFactor: 75, + + /** + * Constructor: OpenLayers.Control.KeyboardDefaults + */ + initialize: function() { + OpenLayers.Control.prototype.initialize.apply(this, arguments); + }, + + /** + * APIMethod: destroy + */ + destroy: function() { + if (this.handler) { + this.handler.destroy(); + } + this.handler = null; + + OpenLayers.Control.prototype.destroy.apply(this, arguments); + }, + + /** + * Method: draw + * Create handler. + */ + draw: function() { + this.handler = new OpenLayers.Handler.Keyboard( this, { + "keydown": this.defaultKeyPress }); + this.activate(); + }, + + /** + * Method: defaultKeyPress + * When handling the key event, we only use evt.keyCode. This holds + * some drawbacks, though we get around them below. When interpretting + * the keycodes below (including the comments associated with them), + * consult the URL below. For instance, the Safari browser returns + * "IE keycodes", and so is supported by any keycode labeled "IE". + * + * Very informative URL: + * http://unixpapa.com/js/key.html + * + * Parameters: + * code - {Integer} + */ + defaultKeyPress: function (evt) { + switch(evt.keyCode) { + case OpenLayers.Event.KEY_LEFT: + this.map.pan(-this.slideFactor, 0); + break; + case OpenLayers.Event.KEY_RIGHT: + this.map.pan(this.slideFactor, 0); + break; + case OpenLayers.Event.KEY_UP: + this.map.pan(0, -this.slideFactor); + break; + case OpenLayers.Event.KEY_DOWN: + this.map.pan(0, this.slideFactor); + break; + + case 33: // Page Up. Same in all browsers. + var size = this.map.getSize(); + this.map.pan(0, -0.75*size.h); + break; + case 34: // Page Down. Same in all browsers. + var size = this.map.getSize(); + this.map.pan(0, 0.75*size.h); + break; + case 35: // End. Same in all browsers. + var size = this.map.getSize(); + this.map.pan(0.75*size.w, 0); + break; + case 36: // Home. Same in all browsers. + var size = this.map.getSize(); + this.map.pan(-0.75*size.w, 0); + break; + + case 43: // +/= (ASCII), keypad + (ASCII, Opera) + case 61: // +/= (Mozilla, Opera, some ASCII) + case 187: // +/= (IE) + case 107: // keypad + (IE, Mozilla) + this.map.zoomIn(); + break; + case 45: // -/_ (ASCII, Opera), keypad - (ASCII, Opera) + case 109: // -/_ (Mozilla), keypad - (Mozilla, IE) + case 189: // -/_ (IE) + case 95: // -/_ (some ASCII) + this.map.zoomOut(); + break; + } + }, + + CLASS_NAME: "OpenLayers.Control.KeyboardDefaults" +}); diff --git a/openlayers/lib/OpenLayers/Control/LayerSwitcher.js b/openlayers/lib/OpenLayers/Control/LayerSwitcher.js new file mode 100644 index 0000000..e6913fd --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/LayerSwitcher.js @@ -0,0 +1,638 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control.js + */ + +/** + * Class: OpenLayers.Control.LayerSwitcher + * The LayerSwitcher control displays a table of contents for the map. This + * allows the user interface to switch between BaseLasyers and to show or hide + * Overlays. By default the switcher is shown minimized on the right edge of + * the map, the user may expand it by clicking on the handle. + * + * To create the LayerSwitcher outside of the map, pass the Id of a html div + * as the first argument to the constructor. + * + * Inherits from: + * - + */ +OpenLayers.Control.LayerSwitcher = + OpenLayers.Class(OpenLayers.Control, { + + /** + * Property: activeColor + * {String} + */ + activeColor: "darkblue", + + /** + * Property: layerStates + * {Array(Object)} Basically a copy of the "state" of the map's layers + * the last time the control was drawn. We have this in order to avoid + * unnecessarily redrawing the control. + */ + layerStates: null, + + + // DOM Elements + + /** + * Property: layersDiv + * {DOMElement} + */ + layersDiv: null, + + /** + * Property: baseLayersDiv + * {DOMElement} + */ + baseLayersDiv: null, + + /** + * Property: baseLayers + * {Array()} + */ + baseLayers: null, + + + /** + * Property: dataLbl + * {DOMElement} + */ + dataLbl: null, + + /** + * Property: dataLayersDiv + * {DOMElement} + */ + dataLayersDiv: null, + + /** + * Property: dataLayers + * {Array()} + */ + dataLayers: null, + + + /** + * Property: minimizeDiv + * {DOMElement} + */ + minimizeDiv: null, + + /** + * Property: maximizeDiv + * {DOMElement} + */ + maximizeDiv: null, + + /** + * APIProperty: ascending + * {Boolean} + */ + ascending: true, + + /** + * Constructor: OpenLayers.Control.LayerSwitcher + * + * Parameters: + * options - {Object} + */ + initialize: function(options) { + OpenLayers.Control.prototype.initialize.apply(this, arguments); + this.layerStates = []; + }, + + /** + * APIMethod: destroy + */ + destroy: function() { + + OpenLayers.Event.stopObservingElement(this.div); + + OpenLayers.Event.stopObservingElement(this.minimizeDiv); + OpenLayers.Event.stopObservingElement(this.maximizeDiv); + + //clear out layers info and unregister their events + this.clearLayersArray("base"); + this.clearLayersArray("data"); + + this.map.events.un({ + "addlayer": this.redraw, + "changelayer": this.redraw, + "removelayer": this.redraw, + "changebaselayer": this.redraw, + scope: this + }); + + OpenLayers.Control.prototype.destroy.apply(this, arguments); + }, + + /** + * Method: setMap + * + * Properties: + * map - {} + */ + setMap: function(map) { + OpenLayers.Control.prototype.setMap.apply(this, arguments); + + this.map.events.on({ + "addlayer": this.redraw, + "changelayer": this.redraw, + "removelayer": this.redraw, + "changebaselayer": this.redraw, + scope: this + }); + }, + + /** + * Method: draw + * + * Returns: + * {DOMElement} A reference to the DIV DOMElement containing the + * switcher tabs. + */ + draw: function() { + OpenLayers.Control.prototype.draw.apply(this); + + // create layout divs + this.loadContents(); + + // set mode to minimize + if(!this.outsideViewport) { + this.minimizeControl(); + } + + // populate div with current info + this.redraw(); + + return this.div; + }, + + /** + * Method: clearLayersArray + * User specifies either "base" or "data". we then clear all the + * corresponding listeners, the div, and reinitialize a new array. + * + * Parameters: + * layersType - {String} + */ + clearLayersArray: function(layersType) { + var layers = this[layersType + "Layers"]; + if (layers) { + for(var i=0, len=layers.length; i} layerSwitcher + * - {} layer + */ + + onInputClick: function(e) { + + if (!this.inputElem.disabled) { + if (this.inputElem.type == "radio") { + this.inputElem.checked = true; + this.layer.map.setBaseLayer(this.layer); + } else { + this.inputElem.checked = !this.inputElem.checked; + this.layerSwitcher.updateMap(); + } + } + OpenLayers.Event.stop(e); + }, + + /** + * Method: onLayerClick + * Need to update the map accordingly whenever user clicks in either of + * the layers. + * + * Parameters: + * e - {Event} + */ + onLayerClick: function(e) { + this.updateMap(); + }, + + + /** + * Method: updateMap + * Cycles through the loaded data and base layer input arrays and makes + * the necessary calls to the Map object such that that the map's + * visual state corresponds to what the user has selected in + * the control. + */ + updateMap: function() { + + // set the newly selected base layer + for(var i=0, len=this.baseLayers.length; i + */ +OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, { + + /** + * Constant: EVENT_TYPES + * {Array(String)} Supported application event types. Register a listener + * for a particular event with the following syntax: + * (code) + * control.events.register(type, obj, listener); + * (end) + * + * Listeners will be called with a reference to an event object. The + * properties of this event depends on exactly what happened. + * + * Supported control event types (in addition to those from ): + * measure - Triggered when a measurement sketch is complete. Listeners + * will receive an event with measure, units, order, and geometry + * properties. + * measurepartial - Triggered when a new point is added to the + * measurement sketch. Listeners receive an event with measure, + * units, order, and geometry. + */ + EVENT_TYPES: ['measure', 'measurepartial'], + + /** + * APIProperty: handlerOptions + * {Object} Used to set non-default properties on the control's handler + */ + handlerOptions: null, + + /** + * Property: callbacks + * {Object} The functions that are sent to the handler for callback + */ + callbacks: null, + + /** + * Property: displaySystem + * {String} Display system for output measurements. Supported values + * are 'english', 'metric', and 'geographic'. Default is 'metric'. + */ + displaySystem: 'metric', + + /** + * Property: geodesic + * {Boolean} Calculate geodesic metrics instead of planar metrics. This + * requires that geometries can be transformed into Geographic/WGS84 + * (if that is not already the map projection). Default is false. + */ + geodesic: false, + + /** + * Property: displaySystemUnits + * {Object} Units for various measurement systems. Values are arrays + * of unit abbreviations (from OpenLayers.INCHES_PER_UNIT) in decreasing + * order of length. + */ + displaySystemUnits: { + geographic: ['dd'], + english: ['mi', 'ft', 'in'], + metric: ['km', 'm'] + }, + + /** + * Property: delay + * {Number} Number of milliseconds between clicks before the event is + * considered a double-click. The "measurepartial" event will not + * be triggered if the sketch is completed within this time. This + * is required for IE where creating a browser reflow (if a listener + * is modifying the DOM by displaying the measurement values) messes + * with the dblclick listener in the sketch handler. + */ + partialDelay: 300, + + /** + * Property: delayedTrigger + * {Number} Timeout id of trigger for measurepartial. + */ + delayedTrigger: null, + + /** + * APIProperty: persist + * {Boolean} Keep the temporary measurement sketch drawn after the + * measurement is complete. The geometry will persist until a new + * measurement is started, the control is deactivated, or is + * called. + */ + persist: false, + + /** + * Constructor: OpenLayers.Control.Measure + * + * Parameters: + * handler - {} + * options - {Object} + */ + initialize: function(handler, options) { + // concatenate events specific to measure with those from the base + this.EVENT_TYPES = + OpenLayers.Control.Measure.prototype.EVENT_TYPES.concat( + OpenLayers.Control.prototype.EVENT_TYPES + ); + OpenLayers.Control.prototype.initialize.apply(this, [options]); + this.callbacks = OpenLayers.Util.extend( + {done: this.measureComplete, point: this.measurePartial}, + this.callbacks + ); + + // let the handler options override, so old code that passes 'persist' + // directly to the handler does not need an update + this.handlerOptions = OpenLayers.Util.extend( + {persist: this.persist}, this.handlerOptions + ); + this.handler = new handler(this, this.callbacks, this.handlerOptions); + }, + + /** + * APIMethod: cancel + * Stop the control from measuring. If is true, the temporary + * sketch will be erased. + */ + cancel: function() { + this.handler.cancel(); + }, + + /** + * Method: updateHandler + * + * Parameters: + * handler - {Function} One of the sketch handler constructors. + * options - {Object} Options for the handler. + */ + updateHandler: function(handler, options) { + var active = this.active; + if(active) { + this.deactivate(); + } + this.handler = new handler(this, this.callbacks, options); + if(active) { + this.activate(); + } + }, + + /** + * Method: measureComplete + * Called when the measurement sketch is done. + * + * Parameters: + * geometry - {} + */ + measureComplete: function(geometry) { + if(this.delayedTrigger) { + window.clearTimeout(this.delayedTrigger); + } + this.measure(geometry, "measure"); + }, + + /** + * Method: measurePartial + * Called each time a new point is added to the measurement sketch. + * + * Parameters: + * point - {} The last point added. + * geometry - {} The sketch geometry. + */ + measurePartial: function(point, geometry) { + this.delayedTrigger = window.setTimeout( + OpenLayers.Function.bind(function() { + this.measure(geometry, "measurepartial"); + }, this), + this.partialDelay + ); + }, + + /** + * Method: measure + * + * Parameters: + * geometry - {} + * eventType - {String} + */ + measure: function(geometry, eventType) { + var stat, order; + if(geometry.CLASS_NAME.indexOf('LineString') > -1) { + stat = this.getBestLength(geometry); + order = 1; + } else { + stat = this.getBestArea(geometry); + order = 2; + } + this.events.triggerEvent(eventType, { + measure: stat[0], + units: stat[1], + order: order, + geometry: geometry + }); + }, + + /** + * Method: getBestArea + * Based on the returns the area of a geometry. + * + * Parameters: + * geometry - {} + * + * Returns: + * {Array([Float, String])} Returns a two item array containing the + * area and the units abbreviation. + */ + getBestArea: function(geometry) { + var units = this.displaySystemUnits[this.displaySystem]; + var unit, area; + for(var i=0, len=units.length; i 1) { + break; + } + } + return [area, unit]; + }, + + /** + * Method: getArea + * + * Parameters: + * geometry - {} + * units - {String} Unit abbreviation + * + * Returns: + * {Float} The geometry area in the given units. + */ + getArea: function(geometry, units) { + var area, geomUnits; + if(this.geodesic) { + area = geometry.getGeodesicArea(this.map.getProjectionObject()); + geomUnits = "m"; + } else { + area = geometry.getArea(); + geomUnits = this.map.getUnits(); + } + var inPerDisplayUnit = OpenLayers.INCHES_PER_UNIT[units]; + if(inPerDisplayUnit) { + var inPerMapUnit = OpenLayers.INCHES_PER_UNIT[geomUnits]; + area *= Math.pow((inPerMapUnit / inPerDisplayUnit), 2); + } + return area; + }, + + /** + * Method: getBestLength + * Based on the returns the length of a geometry. + * + * Parameters: + * geometry - {} + * + * Returns: + * {Array([Float, String])} Returns a two item array containing the + * length and the units abbreviation. + */ + getBestLength: function(geometry) { + var units = this.displaySystemUnits[this.displaySystem]; + var unit, length; + for(var i=0, len=units.length; i 1) { + break; + } + } + return [length, unit]; + }, + + /** + * Method: getLength + * + * Parameters: + * geometry - {} + * units - {String} Unit abbreviation + * + * Returns: + * {Float} The geometry length in the given units. + */ + getLength: function(geometry, units) { + var length, geomUnits; + if(this.geodesic) { + length = geometry.getGeodesicLength(this.map.getProjectionObject()); + geomUnits = "m"; + } else { + length = geometry.getLength(); + geomUnits = this.map.getUnits(); + } + var inPerDisplayUnit = OpenLayers.INCHES_PER_UNIT[units]; + if(inPerDisplayUnit) { + var inPerMapUnit = OpenLayers.INCHES_PER_UNIT[geomUnits]; + length *= (inPerMapUnit / inPerDisplayUnit); + } + return length; + }, + + CLASS_NAME: "OpenLayers.Control.Measure" +}); diff --git a/openlayers/lib/OpenLayers/Control/ModifyFeature.js b/openlayers/lib/OpenLayers/Control/ModifyFeature.js new file mode 100644 index 0000000..cccccf0 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/ModifyFeature.js @@ -0,0 +1,738 @@ +/* Copyright (c) 2006 MetaCarta, Inc., published under the Clear BSD license. + * See http://svn.openlayers.org/trunk/openlayers/license.txt + * for the full text of the license. */ + + +/** + * @requires OpenLayers/Control/DragFeature.js + * @requires OpenLayers/Control/SelectFeature.js + * @requires OpenLayers/Handler/Keyboard.js + */ + +/** + * Class: OpenLayers.Control.ModifyFeature + * Control to modify features. When activated, a click renders the vertices + * of a feature - these vertices can then be dragged. By default, the + * delete key will delete the vertex under the mouse. New features are + * added by dragging "virtual vertices" between vertices. Create a new + * control with the constructor. + * + * Inherits From: + * - + */ +OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, { + + /** + * APIProperty: geometryTypes + * {Array(String)} To restrict modification to a limited set of geometry + * types, send a list of strings corresponding to the geometry class + * names. + */ + geometryTypes: null, + + /** + * APIProperty: clickout + * {Boolean} Unselect features when clicking outside any feature. + * Default is true. + */ + clickout: true, + + /** + * APIProperty: toggle + * {Boolean} Unselect a selected feature on click. + * Default is true. + */ + toggle: true, + + /** + * Property: layer + * {} + */ + layer: null, + + /** + * Property: feature + * {} Feature currently available for modification. + */ + feature: null, + + /** + * Property: vertices + * {Array()} Verticies currently available + * for dragging. + */ + vertices: null, + + /** + * Property: virtualVertices + * {Array()} Virtual vertices in the middle + * of each edge. + */ + virtualVertices: null, + + /** + * Property: selectControl + * {} + */ + selectControl: null, + + /** + * Property: dragControl + * {} + */ + dragControl: null, + + /** + * Property: handlers + * {Object} + */ + handlers: null, + + /** + * APIProperty: deleteCodes + * {Array(Integer)} Keycodes for deleting verticies. Set to null to disable + * vertex deltion by keypress. If non-null, keypresses with codes + * in this array will delete vertices under the mouse. Default + * is 46 and 68, the 'delete' and lowercase 'd' keys. + */ + deleteCodes: null, + + /** + * APIProperty: virtualStyle + * {Object} A symbolizer to be used for virtual vertices. + */ + virtualStyle: null, + + /** + * APIProperty: mode + * {Integer} Bitfields specifying the modification mode. Defaults to + * OpenLayers.Control.ModifyFeature.RESHAPE. To set the mode to a + * combination of options, use the | operator. or example, to allow + * the control to both resize and rotate features, use the following + * syntax + * (code) + * control.mode = OpenLayers.Control.ModifyFeature.RESIZE | + * OpenLayers.Control.ModifyFeature.ROTATE; + * (end) + */ + mode: null, + + /** + * Property: modified + * {Boolean} The currently selected feature has been modified. + */ + modified: false, + + /** + * Property: radiusHandle + * {} A handle for rotating/resizing a feature. + */ + radiusHandle: null, + + /** + * Property: dragHandle + * {} A handle for dragging a feature. + */ + dragHandle: null, + + /** + * APIProperty: onModificationStart + * {Function} *Deprecated*. Register for "beforefeaturemodified" instead. + * The "beforefeaturemodified" event is triggered on the layer before + * any modification begins. + * + * Optional function to be called when a feature is selected + * to be modified. The function should expect to be called with a + * feature. This could be used for example to allow to lock the + * feature on server-side. + */ + onModificationStart: function() {}, + + /** + * APIProperty: onModification + * {Function} *Deprecated*. Register for "featuremodified" instead. + * The "featuremodified" event is triggered on the layer with each + * feature modification. + * + * Optional function to be called when a feature has been + * modified. The function should expect to be called with a feature. + */ + onModification: function() {}, + + /** + * APIProperty: onModificationEnd + * {Function} *Deprecated*. Register for "afterfeaturemodified" instead. + * The "afterfeaturemodified" event is triggered on the layer after + * a feature has been modified. + * + * Optional function to be called when a feature is finished + * being modified. The function should expect to be called with a + * feature. + */ + onModificationEnd: function() {}, + + /** + * Constructor: OpenLayers.Control.ModifyFeature + * Create a new modify feature control. + * + * Parameters: + * layer - {} Layer that contains features that + * will be modified. + * options - {Object} Optional object whose properties will be set on the + * control. + */ + initialize: function(layer, options) { + this.layer = layer; + this.vertices = []; + this.virtualVertices = []; + this.virtualStyle = OpenLayers.Util.extend({}, + this.layer.style || this.layer.styleMap.createSymbolizer()); + this.virtualStyle.fillOpacity = 0.3; + this.virtualStyle.strokeOpacity = 0.3; + this.deleteCodes = [46, 68]; + this.mode = OpenLayers.Control.ModifyFeature.RESHAPE; + OpenLayers.Control.prototype.initialize.apply(this, [options]); + if(!(this.deleteCodes instanceof Array)) { + this.deleteCodes = [this.deleteCodes]; + } + var control = this; + + // configure the select control + var selectOptions = { + geometryTypes: this.geometryTypes, + clickout: this.clickout, + toggle: this.toggle, + onBeforeSelect: this.beforeSelectFeature, + onSelect: this.selectFeature, + onUnselect: this.unselectFeature, + scope: this + }; + this.selectControl = new OpenLayers.Control.SelectFeature( + layer, selectOptions + ); + + // configure the drag control + var dragOptions = { + geometryTypes: ["OpenLayers.Geometry.Point"], + snappingOptions: this.snappingOptions, + onStart: function(feature, pixel) { + control.dragStart.apply(control, [feature, pixel]); + }, + onDrag: function(feature, pixel) { + control.dragVertex.apply(control, [feature, pixel]); + }, + onComplete: function(feature) { + control.dragComplete.apply(control, [feature]); + } + }; + this.dragControl = new OpenLayers.Control.DragFeature( + layer, dragOptions + ); + + // configure the keyboard handler + var keyboardOptions = { + keydown: this.handleKeypress + }; + this.handlers = { + keyboard: new OpenLayers.Handler.Keyboard(this, keyboardOptions) + }; + }, + + /** + * APIMethod: destroy + * Take care of things that are not handled in superclass. + */ + destroy: function() { + this.layer = null; + this.selectControl.destroy(); + this.dragControl.destroy(); + OpenLayers.Control.prototype.destroy.apply(this, []); + }, + + /** + * APIMethod: activate + * Activate the control. + * + * Returns: + * {Boolean} Successfully activated the control. + */ + activate: function() { + return (this.selectControl.activate() && + this.handlers.keyboard.activate() && + OpenLayers.Control.prototype.activate.apply(this, arguments)); + }, + + /** + * APIMethod: deactivate + * Deactivate the control. + * + * Returns: + * {Boolean} Successfully deactivated the control. + */ + deactivate: function() { + var deactivated = false; + // the return from the controls is unimportant in this case + if(OpenLayers.Control.prototype.deactivate.apply(this, arguments)) { + this.layer.removeFeatures(this.vertices, {silent: true}); + this.layer.removeFeatures(this.virtualVertices, {silent: true}); + this.vertices = []; + this.dragControl.deactivate(); + if(this.feature && this.feature.geometry && this.feature.layer) { + this.selectControl.unselect.apply(this.selectControl, + [this.feature]); + } + this.selectControl.deactivate(); + this.handlers.keyboard.deactivate(); + deactivated = true; + } + return deactivated; + }, + + /** + * Method: beforeSelectFeature + * Called before a feature is selected. + * + * Parameters: + * feature - {} The feature about to be selected. + */ + beforeSelectFeature: function(feature) { + return this.layer.events.triggerEvent( + "beforefeaturemodified", {feature: feature} + ); + }, + + /** + * Method: selectFeature + * Called when the select feature control selects a feature. + * + * Parameters: + * feature - {} the selected feature. + */ + selectFeature: function(feature) { + this.feature = feature; + this.modified = false; + this.resetVertices(); + this.dragControl.activate(); + this.onModificationStart(this.feature); + }, + + /** + * Method: unselectFeature + * Called when the select feature control unselects a feature. + * + * Parameters: + * feature - {} The unselected feature. + */ + unselectFeature: function(feature) { + this.layer.removeFeatures(this.vertices, {silent: true}); + this.vertices = []; + this.layer.destroyFeatures(this.virtualVertices, {silent: true}); + this.virtualVertices = []; + if(this.dragHandle) { + this.layer.destroyFeatures([this.dragHandle], {silent: true}); + delete this.dragHandle; + } + if(this.radiusHandle) { + this.layer.destroyFeatures([this.radiusHandle], {silent: true}); + delete this.radiusHandle; + } + this.feature = null; + this.dragControl.deactivate(); + this.onModificationEnd(feature); + this.layer.events.triggerEvent("afterfeaturemodified", { + feature: feature, + modified: this.modified + }); + this.modified = false; + }, + + /** + * Method: dragStart + * Called by the drag feature control with before a feature is dragged. + * This method is used to differentiate between points and vertices + * of higher order geometries. This respects the + * property and forces a select of points when the drag control is + * already active (and stops events from propagating to the select + * control). + * + * Parameters: + * feature - {} The point or vertex about to be + * dragged. + * pixel - {} Pixel location of the mouse event. + */ + dragStart: function(feature, pixel) { + // only change behavior if the feature is not in the vertices array + if(feature != this.feature && !feature.geometry.parent && + feature != this.dragHandle && feature != this.radiusHandle) { + if(this.feature) { + // unselect the currently selected feature + this.selectControl.clickFeature.apply(this.selectControl, + [this.feature]); + } + // check any constraints on the geometry type + if(this.geometryTypes == null || + OpenLayers.Util.indexOf(this.geometryTypes, + feature.geometry.CLASS_NAME) != -1) { + // select the point + this.selectControl.clickFeature.apply(this.selectControl, + [feature]); + /** + * TBD: These lines improve workflow by letting the user + * immediately start dragging after the mouse down. + * However, it is very ugly to be messing with controls + * and their handlers in this way. I'd like a better + * solution if the workflow change is necessary. + */ + // prepare the point for dragging + this.dragControl.overFeature.apply(this.dragControl, + [feature]); + this.dragControl.lastPixel = pixel; + this.dragControl.handlers.drag.started = true; + this.dragControl.handlers.drag.start = pixel; + this.dragControl.handlers.drag.last = pixel; + } + } + }, + + /** + * Method: dragVertex + * Called by the drag feature control with each drag move of a vertex. + * + * Parameters: + * vertex - {} The vertex being dragged. + * pixel - {} Pixel location of the mouse event. + */ + dragVertex: function(vertex, pixel) { + this.modified = true; + /** + * Five cases: + * 1) dragging a simple point + * 2) dragging a virtual vertex + * 3) dragging a drag handle + * 4) dragging a real vertex + * 5) dragging a radius handle + */ + if(this.feature.geometry.CLASS_NAME == "OpenLayers.Geometry.Point") { + // dragging a simple point + if(this.feature != vertex) { + this.feature = vertex; + } + this.layer.events.triggerEvent("vertexmodified", { + vertex: vertex.geometry, + feature: this.feature, + pixel: pixel + }); + } else { + if(vertex._index) { + // dragging a virtual vertex + vertex.geometry.parent.addComponent(vertex.geometry, + vertex._index); + // move from virtual to real vertex + delete vertex._index; + OpenLayers.Util.removeItem(this.virtualVertices, vertex); + this.vertices.push(vertex); + } else if(vertex == this.dragHandle) { + // dragging a drag handle + this.layer.removeFeatures(this.vertices, {silent: true}); + this.vertices = []; + if(this.radiusHandle) { + this.layer.destroyFeatures([this.radiusHandle], {silent: true}); + this.radiusHandle = null; + } + } else if(vertex !== this.radiusHandle) { + // dragging a real vertex + this.layer.events.triggerEvent("vertexmodified", { + vertex: vertex.geometry, + feature: this.feature, + pixel: pixel + }); + } + // dragging a radius handle - no special treatment + if(this.virtualVertices.length > 0) { + this.layer.destroyFeatures(this.virtualVertices, {silent: true}); + this.virtualVertices = []; + } + this.layer.drawFeature(this.feature, this.selectControl.renderIntent); + } + // keep the vertex on top so it gets the mouseout after dragging + // this should be removed in favor of an option to draw under or + // maintain node z-index + this.layer.drawFeature(vertex); + }, + + /** + * Method: dragComplete + * Called by the drag feature control when the feature dragging is complete. + * + * Parameters: + * vertex - {} The vertex being dragged. + */ + dragComplete: function(vertex) { + this.resetVertices(); + this.setFeatureState(); + this.onModification(this.feature); + this.layer.events.triggerEvent("featuremodified", + {feature: this.feature}); + }, + + /** + * Method: setFeatureState + * Called when the feature is modified. If the current state is not + * INSERT or DELETE, the state is set to UPDATE. + */ + setFeatureState: function() { + if(this.feature.state != OpenLayers.State.INSERT && + this.feature.state != OpenLayers.State.DELETE) { + this.feature.state = OpenLayers.State.UPDATE; + } + }, + + /** + * Method: resetVertices + */ + resetVertices: function() { + // if coming from a drag complete we're about to destroy the vertex + // that was just dragged. For that reason, the drag feature control + // will never detect a mouse-out on that vertex, meaning that the drag + // handler won't be deactivated. This can cause errors because the drag + // feature control still has a feature to drag but that feature is + // destroyed. To prevent this, we call outFeature on the drag feature + // control if the control actually has a feature to drag. + if(this.dragControl.feature) { + this.dragControl.outFeature(this.dragControl.feature); + } + if(this.vertices.length > 0) { + this.layer.removeFeatures(this.vertices, {silent: true}); + this.vertices = []; + } + if(this.virtualVertices.length > 0) { + this.layer.removeFeatures(this.virtualVertices, {silent: true}); + this.virtualVertices = []; + } + if(this.dragHandle) { + this.layer.destroyFeatures([this.dragHandle], {silent: true}); + this.dragHandle = null; + } + if(this.radiusHandle) { + this.layer.destroyFeatures([this.radiusHandle], {silent: true}); + this.radiusHandle = null; + } + if(this.feature && + this.feature.geometry.CLASS_NAME != "OpenLayers.Geometry.Point") { + if((this.mode & OpenLayers.Control.ModifyFeature.DRAG)) { + this.collectDragHandle(); + } + if((this.mode & (OpenLayers.Control.ModifyFeature.ROTATE | + OpenLayers.Control.ModifyFeature.RESIZE))) { + this.collectRadiusHandle(); + } + if(this.mode & OpenLayers.Control.ModifyFeature.RESHAPE){ + // Don't collect vertices when we're resizing + if (!(this.mode & OpenLayers.Control.ModifyFeature.RESIZE)){ + this.collectVertices(); + } + } + } + }, + + /** + * Method: handleKeypress + * Called by the feature handler on keypress. This is used to delete + * vertices. If the property is set, vertices will + * be deleted when a feature is selected for modification and + * the mouse is over a vertex. + * + * Parameters: + * {Integer} Key code corresponding to the keypress event. + */ + handleKeypress: function(evt) { + var code = evt.keyCode; + + // check for delete key + if(this.feature && + OpenLayers.Util.indexOf(this.deleteCodes, code) != -1) { + var vertex = this.dragControl.feature; + if(vertex && + OpenLayers.Util.indexOf(this.vertices, vertex) != -1 && + !this.dragControl.handlers.drag.dragging && + vertex.geometry.parent) { + // remove the vertex + vertex.geometry.parent.removeComponent(vertex.geometry); + this.layer.drawFeature(this.feature, + this.selectControl.renderIntent); + this.resetVertices(); + this.setFeatureState(); + this.onModification(this.feature); + this.layer.events.triggerEvent("featuremodified", + {feature: this.feature}); + } + } + }, + + /** + * Method: collectVertices + * Collect the vertices from the modifiable feature's geometry and push + * them on to the control's vertices array. + */ + collectVertices: function() { + this.vertices = []; + this.virtualVertices = []; + var control = this; + function collectComponentVertices(geometry) { + var i, vertex, component, len; + if(geometry.CLASS_NAME == "OpenLayers.Geometry.Point") { + vertex = new OpenLayers.Feature.Vector(geometry); + vertex._sketch = true; + control.vertices.push(vertex); + } else { + var numVert = geometry.components.length; + if(geometry.CLASS_NAME == "OpenLayers.Geometry.LinearRing") { + numVert -= 1; + } + for(i=0; i} The control's map. + */ + setMap: function(map) { + this.selectControl.setMap(map); + this.dragControl.setMap(map); + OpenLayers.Control.prototype.setMap.apply(this, arguments); + }, + + CLASS_NAME: "OpenLayers.Control.ModifyFeature" +}); + +/** + * Constant: RESHAPE + * {Integer} Constant used to make the control work in reshape mode + */ +OpenLayers.Control.ModifyFeature.RESHAPE = 1; +/** + * Constant: RESIZE + * {Integer} Constant used to make the control work in resize mode + */ +OpenLayers.Control.ModifyFeature.RESIZE = 2; +/** + * Constant: ROTATE + * {Integer} Constant used to make the control work in rotate mode + */ +OpenLayers.Control.ModifyFeature.ROTATE = 4; +/** + * Constant: DRAG + * {Integer} Constant used to make the control work in drag mode + */ +OpenLayers.Control.ModifyFeature.DRAG = 8; diff --git a/openlayers/lib/OpenLayers/Control/MouseDefaults.js b/openlayers/lib/OpenLayers/Control/MouseDefaults.js new file mode 100644 index 0000000..d129697 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/MouseDefaults.js @@ -0,0 +1,367 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control.js + */ + +/** + * Class: OpenLayers.Control.MouseDefaults + * This class is DEPRECATED in 2.4 and will be removed by 3.0. + * If you need this functionality, use + * instead!!! + * + * This class is DEPRECATED in 2.4 and will be removed by 3.0. + * If you need this functionality, use Control.Navigation instead!!! + * + * Inherits from: + * - + */ +OpenLayers.Control.MouseDefaults = OpenLayers.Class(OpenLayers.Control, { + + /** WARNING WARNING WARNING!!! + This class is DEPRECATED in 2.4 and will be removed by 3.0. + If you need this functionality, use Control.Navigation instead!!! */ + + /** + * Property: performedDrag + * {Boolean} + */ + performedDrag: false, + + /** + * Property: wheelObserver + * {Function} + */ + wheelObserver: null, + + /** + * Constructor: OpenLayers.Control.MouseDefaults + */ + initialize: function() { + OpenLayers.Control.prototype.initialize.apply(this, arguments); + }, + + /** + * APIMethod: destroy + */ + destroy: function() { + + if (this.handler) { + this.handler.destroy(); + } + this.handler = null; + + this.map.events.un({ + "click": this.defaultClick, + "dblclick": this.defaultDblClick, + "mousedown": this.defaultMouseDown, + "mouseup": this.defaultMouseUp, + "mousemove": this.defaultMouseMove, + "mouseout": this.defaultMouseOut, + scope: this + }); + + //unregister mousewheel events specifically on the window and document + OpenLayers.Event.stopObserving(window, "DOMMouseScroll", + this.wheelObserver); + OpenLayers.Event.stopObserving(window, "mousewheel", + this.wheelObserver); + OpenLayers.Event.stopObserving(document, "mousewheel", + this.wheelObserver); + this.wheelObserver = null; + + OpenLayers.Control.prototype.destroy.apply(this, arguments); + }, + + /** + * Method: draw + */ + draw: function() { + this.map.events.on({ + "click": this.defaultClick, + "dblclick": this.defaultDblClick, + "mousedown": this.defaultMouseDown, + "mouseup": this.defaultMouseUp, + "mousemove": this.defaultMouseMove, + "mouseout": this.defaultMouseOut, + scope: this + }); + + this.registerWheelEvents(); + + }, + + /** + * Method: registerWheelEvents + */ + registerWheelEvents: function() { + + this.wheelObserver = OpenLayers.Function.bindAsEventListener( + this.onWheelEvent, this + ); + + //register mousewheel events specifically on the window and document + OpenLayers.Event.observe(window, "DOMMouseScroll", this.wheelObserver); + OpenLayers.Event.observe(window, "mousewheel", this.wheelObserver); + OpenLayers.Event.observe(document, "mousewheel", this.wheelObserver); + }, + + /** + * Method: defaultClick + * + * Parameters: + * evt - {Event} + * + * Returns: + * {Boolean} + */ + defaultClick: function (evt) { + if (!OpenLayers.Event.isLeftClick(evt)) { + return; + } + var notAfterDrag = !this.performedDrag; + this.performedDrag = false; + return notAfterDrag; + }, + + /** + * Method: defaultDblClick + * + * Parameters: + * evt - {Event} + */ + defaultDblClick: function (evt) { + var newCenter = this.map.getLonLatFromViewPortPx( evt.xy ); + this.map.setCenter(newCenter, this.map.zoom + 1); + OpenLayers.Event.stop(evt); + return false; + }, + + /** + * Method: defaultMouseDown + * + * Parameters: + * evt - {Event} + */ + defaultMouseDown: function (evt) { + if (!OpenLayers.Event.isLeftClick(evt)) { + return; + } + this.mouseDragStart = evt.xy.clone(); + this.performedDrag = false; + if (evt.shiftKey) { + this.map.div.style.cursor = "crosshair"; + this.zoomBox = OpenLayers.Util.createDiv('zoomBox', + this.mouseDragStart, + null, + null, + "absolute", + "2px solid red"); + this.zoomBox.style.backgroundColor = "white"; + this.zoomBox.style.filter = "alpha(opacity=50)"; // IE + this.zoomBox.style.opacity = "0.50"; + this.zoomBox.style.fontSize = "1px"; + this.zoomBox.style.zIndex = this.map.Z_INDEX_BASE["Popup"] - 1; + this.map.viewPortDiv.appendChild(this.zoomBox); + } + document.onselectstart=function() { return false; }; + OpenLayers.Event.stop(evt); + }, + + /** + * Method: defaultMouseMove + * + * Parameters: + * evt - {Event} + */ + defaultMouseMove: function (evt) { + // record the mouse position, used in onWheelEvent + this.mousePosition = evt.xy.clone(); + + if (this.mouseDragStart != null) { + if (this.zoomBox) { + var deltaX = Math.abs(this.mouseDragStart.x - evt.xy.x); + var deltaY = Math.abs(this.mouseDragStart.y - evt.xy.y); + this.zoomBox.style.width = Math.max(1, deltaX) + "px"; + this.zoomBox.style.height = Math.max(1, deltaY) + "px"; + if (evt.xy.x < this.mouseDragStart.x) { + this.zoomBox.style.left = evt.xy.x+"px"; + } + if (evt.xy.y < this.mouseDragStart.y) { + this.zoomBox.style.top = evt.xy.y+"px"; + } + } else { + var deltaX = this.mouseDragStart.x - evt.xy.x; + var deltaY = this.mouseDragStart.y - evt.xy.y; + var size = this.map.getSize(); + var newXY = new OpenLayers.Pixel(size.w / 2 + deltaX, + size.h / 2 + deltaY); + var newCenter = this.map.getLonLatFromViewPortPx( newXY ); + this.map.setCenter(newCenter, null, true); + this.mouseDragStart = evt.xy.clone(); + this.map.div.style.cursor = "move"; + } + this.performedDrag = true; + } + }, + + /** + * Method: defaultMouseUp + * + * Parameters: + * evt - {} + */ + defaultMouseUp: function (evt) { + if (!OpenLayers.Event.isLeftClick(evt)) { + return; + } + if (this.zoomBox) { + this.zoomBoxEnd(evt); + } else { + if (this.performedDrag) { + this.map.setCenter(this.map.center); + } + } + document.onselectstart=null; + this.mouseDragStart = null; + this.map.div.style.cursor = ""; + }, + + /** + * Method: defaultMouseOut + * + * Parameters: + * evt - {Event} + */ + defaultMouseOut: function (evt) { + if (this.mouseDragStart != null && + OpenLayers.Util.mouseLeft(evt, this.map.div)) { + if (this.zoomBox) { + this.removeZoomBox(); + } + this.mouseDragStart = null; + } + }, + + + /** + * Method: defaultWheelUp + * User spun scroll wheel up + * + */ + defaultWheelUp: function(evt) { + if (this.map.getZoom() <= this.map.getNumZoomLevels()) { + this.map.setCenter(this.map.getLonLatFromPixel(evt.xy), + this.map.getZoom() + 1); + } + }, + + /** + * Method: defaultWheelDown + * User spun scroll wheel down + */ + defaultWheelDown: function(evt) { + if (this.map.getZoom() > 0) { + this.map.setCenter(this.map.getLonLatFromPixel(evt.xy), + this.map.getZoom() - 1); + } + }, + + /** + * Method: zoomBoxEnd + * Zoombox function. + */ + zoomBoxEnd: function(evt) { + if (this.mouseDragStart != null) { + if (Math.abs(this.mouseDragStart.x - evt.xy.x) > 5 || + Math.abs(this.mouseDragStart.y - evt.xy.y) > 5) { + var start = this.map.getLonLatFromViewPortPx( this.mouseDragStart ); + var end = this.map.getLonLatFromViewPortPx( evt.xy ); + var top = Math.max(start.lat, end.lat); + var bottom = Math.min(start.lat, end.lat); + var left = Math.min(start.lon, end.lon); + var right = Math.max(start.lon, end.lon); + var bounds = new OpenLayers.Bounds(left, bottom, right, top); + this.map.zoomToExtent(bounds); + } else { + var end = this.map.getLonLatFromViewPortPx( evt.xy ); + this.map.setCenter(new OpenLayers.LonLat( + (end.lon), + (end.lat) + ), this.map.getZoom() + 1); + } + this.removeZoomBox(); + } + }, + + /** + * Method: removeZoomBox + * Remove the zoombox from the screen and nullify our reference to it. + */ + removeZoomBox: function() { + this.map.viewPortDiv.removeChild(this.zoomBox); + this.zoomBox = null; + }, + + +/** + * Mouse ScrollWheel code thanks to http://adomas.org/javascript-mouse-wheel/ + */ + + + /** + * Method: onWheelEvent + * Catch the wheel event and handle it xbrowserly + * + * Parameters: + * e - {Event} + */ + onWheelEvent: function(e){ + + // first determine whether or not the wheeling was inside the map + var inMap = false; + var elem = OpenLayers.Event.element(e); + while(elem != null) { + if (this.map && elem == this.map.div) { + inMap = true; + break; + } + elem = elem.parentNode; + } + + if (inMap) { + + var delta = 0; + if (!e) { + e = window.event; + } + if (e.wheelDelta) { + delta = e.wheelDelta/120; + if (window.opera && window.opera.version() < 9.2) { + delta = -delta; + } + } else if (e.detail) { + delta = -e.detail / 3; + } + if (delta) { + // add the mouse position to the event because mozilla has a bug + // with clientX and clientY (see https://bugzilla.mozilla.org/show_bug.cgi?id=352179) + // getLonLatFromViewPortPx(e) returns wrong values + e.xy = this.mousePosition; + + if (delta < 0) { + this.defaultWheelDown(e); + } else { + this.defaultWheelUp(e); + } + } + + //only wheel the map, not the window + OpenLayers.Event.stop(e); + } + }, + + CLASS_NAME: "OpenLayers.Control.MouseDefaults" +}); diff --git a/openlayers/lib/OpenLayers/Control/MousePosition.js b/openlayers/lib/OpenLayers/Control/MousePosition.js new file mode 100644 index 0000000..320ea51 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/MousePosition.js @@ -0,0 +1,171 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Control.js + */ + +/** + * Class: OpenLayers.Control.MousePosition + * The MousePosition control displays geographic coordinates of the mouse + * pointer, as it is moved about the map. + * + * Inherits from: + * - + */ +OpenLayers.Control.MousePosition = OpenLayers.Class(OpenLayers.Control, { + + /** + * Property: element + * {DOMElement} + */ + element: null, + + /** + * APIProperty: prefix + * {String} + */ + prefix: '', + + /** + * APIProperty: separator + * {String} + */ + separator: ', ', + + /** + * APIProperty: suffix + * {String} + */ + suffix: '', + + /** + * APIProperty: numDigits + * {Integer} + */ + numDigits: 5, + + /** + * APIProperty: granularity + * {Integer} + */ + granularity: 10, + + /** + * Property: lastXy + * {} + */ + lastXy: null, + + /** + * APIProperty: displayProjection + * {} The projection in which the + * mouse position is displayed + */ + displayProjection: null, + + /** + * Constructor: OpenLayers.Control.MousePosition + * + * Parameters: + * options - {Object} Options for control. + */ + initialize: function(options) { + OpenLayers.Control.prototype.initialize.apply(this, arguments); + }, + + /** + * Method: destroy + */ + destroy: function() { + if (this.map) { + this.map.events.unregister('mousemove', this, this.redraw); + } + OpenLayers.Control.prototype.destroy.apply(this, arguments); + }, + + /** + * Method: draw + * {DOMElement} + */ + draw: function() { + OpenLayers.Control.prototype.draw.apply(this, arguments); + + if (!this.element) { + this.div.left = ""; + this.div.top = ""; + this.element = this.div; + } + + this.redraw(); + return this.div; + }, + + /** + * Method: redraw + */ + redraw: function(evt) { + + var lonLat; + + if (evt == null) { + lonLat = new OpenLayers.LonLat(0, 0); + } else { + if (this.lastXy == null || + Math.abs(evt.xy.x - this.lastXy.x) > this.granularity || + Math.abs(evt.xy.y - this.lastXy.y) > this.granularity) + { + this.lastXy = evt.xy; + return; + } + + lonLat = this.map.getLonLatFromPixel(evt.xy); + if (!lonLat) { + // map has not yet been properly initialized + return; + } + if (this.displayProjection) { + lonLat.transform(this.map.getProjectionObject(), + this.displayProjection ); + } + this.lastXy = evt.xy; + + } + + var newHtml = this.formatOutput(lonLat); + + if (newHtml != this.element.innerHTML) { + this.element.innerHTML = newHtml; + } + }, + + /** + * Method: formatOutput + * Override to provide custom display output + * + * Parameters: + * lonLat - {} Location to display + */ + formatOutput: function(lonLat) { + var digits = parseInt(this.numDigits); + var newHtml = + this.prefix + + lonLat.lon.toFixed(digits) + + this.separator + + lonLat.lat.toFixed(digits) + + this.suffix; + return newHtml; + }, + + /** + * Method: setMap + */ + setMap: function() { + OpenLayers.Control.prototype.setMap.apply(this, arguments); + this.map.events.register( 'mousemove', this, this.redraw); + }, + + CLASS_NAME: "OpenLayers.Control.MousePosition" +}); diff --git a/openlayers/lib/OpenLayers/Control/MouseToolbar.js b/openlayers/lib/OpenLayers/Control/MouseToolbar.js new file mode 100644 index 0000000..957b6da --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/MouseToolbar.js @@ -0,0 +1,405 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Control.js + * @requires OpenLayers/Control/MouseDefaults.js + */ + +/** + * Class: OpenLayers.Control.MouseToolbar + * This class is DEPRECATED in 2.4 and will be removed by 3.0. + * If you need this functionality, use + * instead!!! + */ +OpenLayers.Control.MouseToolbar = OpenLayers.Class( + OpenLayers.Control.MouseDefaults, { + + /** + * Property: mode + */ + mode: null, + /** + * Property: buttons + */ + buttons: null, + + /** + * APIProperty: direction + * {String} 'vertical' or 'horizontal' + */ + direction: "vertical", + + /** + * Property: buttonClicked + * {String} + */ + buttonClicked: null, + + /** + * Constructor: OpenLayers.Control.MouseToolbar + * + * Parameters: + * position - {} + * direction - {String} + */ + initialize: function(position, direction) { + OpenLayers.Control.prototype.initialize.apply(this, arguments); + this.position = new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X, + OpenLayers.Control.MouseToolbar.Y); + if (position) { + this.position = position; + } + if (direction) { + this.direction = direction; + } + this.measureDivs = []; + }, + + /** + * APIMethod: destroy + */ + destroy: function() { + for( var btnId in this.buttons) { + var btn = this.buttons[btnId]; + btn.map = null; + btn.events.destroy(); + } + OpenLayers.Control.MouseDefaults.prototype.destroy.apply(this, + arguments); + }, + + /** + * Method: draw + */ + draw: function() { + OpenLayers.Control.prototype.draw.apply(this, arguments); + OpenLayers.Control.MouseDefaults.prototype.draw.apply(this, arguments); + this.buttons = {}; + var sz = new OpenLayers.Size(28,28); + var centered = new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X,0); + this._addButton("zoombox", "drag-rectangle-off.png", "drag-rectangle-on.png", centered, sz, "Shift->Drag to zoom to area"); + centered = centered.add((this.direction == "vertical" ? 0 : sz.w), (this.direction == "vertical" ? sz.h : 0)); + this._addButton("pan", "panning-hand-off.png", "panning-hand-on.png", centered, sz, "Drag the map to pan."); + centered = centered.add((this.direction == "vertical" ? 0 : sz.w), (this.direction == "vertical" ? sz.h : 0)); + this.switchModeTo("pan"); + + return this.div; + }, + + /** + * Method: _addButton + */ + _addButton:function(id, img, activeImg, xy, sz, title) { + var imgLocation = OpenLayers.Util.getImagesLocation() + img; + var activeImgLocation = OpenLayers.Util.getImagesLocation() + activeImg; + // var btn = new ol.AlphaImage("_"+id, imgLocation, xy, sz); + var btn = OpenLayers.Util.createAlphaImageDiv( + "OpenLayers_Control_MouseToolbar_" + id, + xy, sz, imgLocation, "absolute"); + + //we want to add the outer div + this.div.appendChild(btn); + btn.imgLocation = imgLocation; + btn.activeImgLocation = activeImgLocation; + + btn.events = new OpenLayers.Events(this, btn, null, true); + btn.events.on({ + "mousedown": this.buttonDown, + "mouseup": this.buttonUp, + "dblclick": OpenLayers.Event.stop, + scope: this + }); + btn.action = id; + btn.title = title; + btn.alt = title; + btn.map = this.map; + + //we want to remember/reference the outer div + this.buttons[id] = btn; + return btn; + }, + + /** + * Method: buttonDown + * + * Parameters: + * evt - {Event} + */ + buttonDown: function(evt) { + if (!OpenLayers.Event.isLeftClick(evt)) { + return; + } + this.buttonClicked = evt.element.action; + OpenLayers.Event.stop(evt); + }, + + /** + * Method: buttonUp + * + * Parameters: + * evt - {Event} + */ + buttonUp: function(evt) { + if (!OpenLayers.Event.isLeftClick(evt)) { + return; + } + if (this.buttonClicked != null) { + if (this.buttonClicked == evt.element.action) { + this.switchModeTo(evt.element.action); + } + OpenLayers.Event.stop(evt); + this.buttonClicked = null; + } + }, + + /** + * Method: defaultDblClick + * + * Parameters: + * evt - {Event} + */ + defaultDblClick: function (evt) { + this.switchModeTo("pan"); + this.performedDrag = false; + var newCenter = this.map.getLonLatFromViewPortPx( evt.xy ); + this.map.setCenter(newCenter, this.map.zoom + 1); + OpenLayers.Event.stop(evt); + return false; + }, + + /** + * Method: defaultMouseDown + * + * Parameters: + * evt - {Event} + */ + defaultMouseDown: function (evt) { + if (!OpenLayers.Event.isLeftClick(evt)) { + return; + } + this.mouseDragStart = evt.xy.clone(); + this.performedDrag = false; + this.startViaKeyboard = false; + if (evt.shiftKey && this.mode !="zoombox") { + this.switchModeTo("zoombox"); + this.startViaKeyboard = true; + } else if (evt.altKey && this.mode !="measure") { + this.switchModeTo("measure"); + } else if (!this.mode) { + this.switchModeTo("pan"); + } + + switch (this.mode) { + case "zoombox": + this.map.div.style.cursor = "crosshair"; + this.zoomBox = OpenLayers.Util.createDiv('zoomBox', + this.mouseDragStart, + null, + null, + "absolute", + "2px solid red"); + this.zoomBox.style.backgroundColor = "white"; + this.zoomBox.style.filter = "alpha(opacity=50)"; // IE + this.zoomBox.style.opacity = "0.50"; + this.zoomBox.style.fontSize = "1px"; + this.zoomBox.style.zIndex = this.map.Z_INDEX_BASE["Popup"] - 1; + this.map.viewPortDiv.appendChild(this.zoomBox); + this.performedDrag = true; + break; + case "measure": + var distance = ""; + if (this.measureStart) { + var measureEnd = this.map.getLonLatFromViewPortPx(this.mouseDragStart); + distance = OpenLayers.Util.distVincenty(this.measureStart, measureEnd); + distance = Math.round(distance * 100) / 100; + distance = distance + "km"; + this.measureStartBox = this.measureBox; + } + this.measureStart = this.map.getLonLatFromViewPortPx(this.mouseDragStart);; + this.measureBox = OpenLayers.Util.createDiv(null, + this.mouseDragStart.add( + -2-parseInt(this.map.layerContainerDiv.style.left), + -2-parseInt(this.map.layerContainerDiv.style.top)), + null, + null, + "absolute"); + this.measureBox.style.width="4px"; + this.measureBox.style.height="4px"; + this.measureBox.style.fontSize = "1px"; + this.measureBox.style.backgroundColor="red"; + this.measureBox.style.zIndex = this.map.Z_INDEX_BASE["Popup"] - 1; + this.map.layerContainerDiv.appendChild(this.measureBox); + if (distance) { + this.measureBoxDistance = OpenLayers.Util.createDiv(null, + this.mouseDragStart.add( + -2-parseInt(this.map.layerContainerDiv.style.left), + 2-parseInt(this.map.layerContainerDiv.style.top)), + null, + null, + "absolute"); + + this.measureBoxDistance.innerHTML = distance; + this.measureBoxDistance.style.zIndex = this.map.Z_INDEX_BASE["Popup"] - 1; + this.map.layerContainerDiv.appendChild(this.measureBoxDistance); + this.measureDivs.push(this.measureBoxDistance); + } + this.measureBox.style.zIndex = this.map.Z_INDEX_BASE["Popup"] - 1; + this.map.layerContainerDiv.appendChild(this.measureBox); + this.measureDivs.push(this.measureBox); + break; + default: + this.map.div.style.cursor = "move"; + break; + } + document.onselectstart = function() { return false; }; + OpenLayers.Event.stop(evt); + }, + + /** + * Method: switchModeTo + * + * Parameters: + * mode - {String} + */ + switchModeTo: function(mode) { + if (mode != this.mode) { + + + if (this.mode && this.buttons[this.mode]) { + OpenLayers.Util.modifyAlphaImageDiv(this.buttons[this.mode], null, null, null, this.buttons[this.mode].imgLocation); + } + if (this.mode == "measure" && mode != "measure") { + for(var i=0, len=this.measureDivs.length; i + */ +OpenLayers.Control.NavToolbar = OpenLayers.Class(OpenLayers.Control.Panel, { + + /** + * Constructor: OpenLayers.Control.NavToolbar + * Add our two mousedefaults controls. + * + * Parameters: + * options - {Object} An optional object whose properties will be used + * to extend the control. + */ + initialize: function(options) { + OpenLayers.Control.Panel.prototype.initialize.apply(this, [options]); + this.addControls([ + new OpenLayers.Control.Navigation(), + new OpenLayers.Control.ZoomBox() + ]); + }, + + /** + * Method: draw + * calls the default draw, and then activates mouse defaults. + */ + draw: function() { + var div = OpenLayers.Control.Panel.prototype.draw.apply(this, arguments); + this.activateControl(this.controls[0]); + return div; + }, + + CLASS_NAME: "OpenLayers.Control.NavToolbar" +}); diff --git a/openlayers/lib/OpenLayers/Control/Navigation.js b/openlayers/lib/OpenLayers/Control/Navigation.js new file mode 100644 index 0000000..4ace37b --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/Navigation.js @@ -0,0 +1,247 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control/ZoomBox.js + * @requires OpenLayers/Control/DragPan.js + * @requires OpenLayers/Handler/MouseWheel.js + * @requires OpenLayers/Handler/Click.js + */ + +/** + * Class: OpenLayers.Control.Navigation + * The navigation control handles map browsing with mouse events (dragging, + * double-clicking, and scrolling the wheel). Create a new navigation + * control with the control. + * + * Note that this control is added to the map by default (if no controls + * array is sent in the options object to the + * constructor). + * + * Inherits: + * - + */ +OpenLayers.Control.Navigation = OpenLayers.Class(OpenLayers.Control, { + + /** + * Property: dragPan + * {} + */ + dragPan: null, + + /** + * APIProprety: dragPanOptions + * {Object} Options passed to the DragPan control. + */ + dragPanOptions: null, + + /** + * Property: zoomBox + * {} + */ + zoomBox: null, + + /** + * APIProperty: zoomWheelEnabled + * {Boolean} Whether the mousewheel should zoom the map + */ + zoomWheelEnabled: true, + + /** + * APIProperty: handleRightClicks + * {Boolean} Whether or not to handle right clicks. Default is false. + */ + handleRightClicks: false, + + /** + * APIProperty: zoomBoxKeyMask + * {Integer} key code of the key, which has to be + * pressed, while drawing the zoom box with the mouse on the screen. + * You should probably set handleRightClicks to true if you use this + * with MOD_CTRL, to disable the context menu for machines which use + * CTRL-Click as a right click. + * Default: and . Call the trigger method + * on the and controls to restore previous and next + * history states. The previous and next controls will become active + * when there are available states to restore and will become deactive + * when there are no states to restore. + * + * Inherits from: + * - + */ +OpenLayers.Control.NavigationHistory = OpenLayers.Class(OpenLayers.Control, { + + /** + * Property: type + * {String} Note that this control is not intended to be added directly + * to a control panel. Instead, add the sub-controls previous and + * next. These sub-controls are button type controls that activate + * and deactivate themselves. If this parent control is added to + * a panel, it will act as a toggle. + */ + type: OpenLayers.Control.TYPE_TOGGLE, + + /** + * APIProperty: previous + * {} A button type control whose trigger method restores + * the previous state managed by this control. + */ + previous: null, + + /** + * APIProperty: previousOptions + * {Object} Set this property on the options argument of the constructor + * to set optional properties on the control. + */ + previousOptions: null, + + /** + * APIProperty: next + * {} A button type control whose trigger method restores + * the next state managed by this control. + */ + next: null, + + /** + * APIProperty: nextOptions + * {Object} Set this property on the options argument of the constructor + * to set optional properties on the control. + */ + nextOptions: null, + + /** + * APIProperty: limit + * {Integer} Optional limit on the number of history items to retain. If + * null, there is no limit. Default is 50. + */ + limit: 50, + + /** + * Property: activateOnDraw + * {Boolean} Activate the control when it is first added to the map. + * Default is true. + */ + activateOnDraw: true, + + /** + * Property: clearOnDeactivate + * {Boolean} Clear the history when the control is deactivated. Default + * is false. + */ + clearOnDeactivate: false, + + /** + * Property: registry + * {Object} An object with keys corresponding to event types. Values + * are functions that return an object representing the current state. + */ + registry: null, + + /** + * Property: nextStack + * {Array} Array of items in the history. + */ + nextStack: null, + + /** + * Property: previousStack + * {Array} List of items in the history. First item represents the current + * state. + */ + previousStack: null, + + /** + * Property: listeners + * {Object} An object containing properties corresponding to event types. + * This object is used to configure the control and is modified on + * construction. + */ + listeners: null, + + /** + * Property: restoring + * {Boolean} Currently restoring a history state. This is set to true + * before calling restore and set to false after restore returns. + */ + restoring: false, + + /** + * Constructor: OpenLayers.Control.NavigationHistory + * + * Parameters: + * options - {Object} An optional object whose properties will be used + * to extend the control. + */ + initialize: function(options) { + OpenLayers.Control.prototype.initialize.apply(this, [options]); + + this.registry = OpenLayers.Util.extend({ + "moveend": function() { + return { + center: this.map.getCenter(), + resolution: this.map.getResolution() + }; + } + }, this.registry); + + this.clear(); + + var previousOptions = { + trigger: OpenLayers.Function.bind(this.previousTrigger, this), + displayClass: this.displayClass + " " + this.displayClass + "Previous" + }; + OpenLayers.Util.extend(previousOptions, this.previousOptions); + this.previous = new OpenLayers.Control.Button(previousOptions); + + var nextOptions = { + trigger: OpenLayers.Function.bind(this.nextTrigger, this), + displayClass: this.displayClass + " " + this.displayClass + "Next" + }; + OpenLayers.Util.extend(nextOptions, this.nextOptions); + this.next = new OpenLayers.Control.Button(nextOptions); + + }, + + /** + * Method: onPreviousChange + * Called when the previous history stack changes. + * + * Parameters: + * state - {Object} An object representing the state to be restored + * if previous is triggered again or null if no previous states remain. + * length - {Integer} The number of remaining previous states that can + * be restored. + */ + onPreviousChange: function(state, length) { + if(state && !this.previous.active) { + this.previous.activate(); + } else if(!state && this.previous.active) { + this.previous.deactivate(); + } + }, + + /** + * Method: onNextChange + * Called when the next history stack changes. + * + * Parameters: + * state - {Object} An object representing the state to be restored + * if next is triggered again or null if no next states remain. + * length - {Integer} The number of remaining next states that can + * be restored. + */ + onNextChange: function(state, length) { + if(state && !this.next.active) { + this.next.activate(); + } else if(!state && this.next.active) { + this.next.deactivate(); + } + }, + + /** + * APIMethod: destroy + * Destroy the control. + */ + destroy: function() { + OpenLayers.Control.prototype.destroy.apply(this); + this.previous.destroy(); + this.next.destroy(); + this.deactivate(); + for(var prop in this) { + this[prop] = null; + } + }, + + /** + * Method: setMap + * Set the map property for the control and and child + * controls. + * + * Parameters: + * map - {} + */ + setMap: function(map) { + this.map = map; + this.next.setMap(map); + this.previous.setMap(map); + }, + + /** + * Method: draw + * Called when the control is added to the map. + */ + draw: function() { + OpenLayers.Control.prototype.draw.apply(this, arguments); + this.next.draw(); + this.previous.draw(); + if(this.activateOnDraw) { + this.activate(); + } + }, + + /** + * Method: previousTrigger + * Restore the previous state. If no items are in the previous history + * stack, this has no effect. + * + * Returns: + * {Object} Item representing state that was restored. Undefined if no + * items are in the previous history stack. + */ + previousTrigger: function() { + var current = this.previousStack.shift(); + var state = this.previousStack.shift(); + if(state != undefined) { + this.nextStack.unshift(current); + this.previousStack.unshift(state); + this.restoring = true; + this.restore(state); + this.restoring = false; + this.onNextChange(this.nextStack[0], this.nextStack.length); + this.onPreviousChange( + this.previousStack[1], this.previousStack.length - 1 + ); + } else { + this.previousStack.unshift(current); + } + return state; + }, + + /** + * APIMethod: nextTrigger + * Restore the next state. If no items are in the next history + * stack, this has no effect. The next history stack is populated + * as states are restored from the previous history stack. + * + * Returns: + * {Object} Item representing state that was restored. Undefined if no + * items are in the next history stack. + */ + nextTrigger: function() { + var state = this.nextStack.shift(); + if(state != undefined) { + this.previousStack.unshift(state); + this.restoring = true; + this.restore(state); + this.restoring = false; + this.onNextChange(this.nextStack[0], this.nextStack.length); + this.onPreviousChange( + this.previousStack[1], this.previousStack.length - 1 + ); + } + return state; + }, + + /** + * APIMethod: clear + * Clear history. + */ + clear: function() { + this.previousStack = []; + this.nextStack = []; + }, + + /** + * Method: restore + * Update the state with the given object. + * + * Parameters: + * state - {Object} An object representing the state to restore. + */ + restore: function(state) { + var zoom = this.map.getZoomForResolution(state.resolution); + this.map.setCenter(state.center, zoom); + }, + + /** + * Method: setListeners + * Sets functions to be registered in the listeners object. + */ + setListeners: function() { + this.listeners = {}; + for(var type in this.registry) { + this.listeners[type] = OpenLayers.Function.bind(function() { + if(!this.restoring) { + var state = this.registry[type].apply(this, arguments); + this.previousStack.unshift(state); + if(this.previousStack.length > 1) { + this.onPreviousChange( + this.previousStack[1], this.previousStack.length - 1 + ); + } + if(this.previousStack.length > (this.limit + 1)) { + this.previousStack.pop(); + } + if(this.nextStack.length > 0) { + this.nextStack = []; + this.onNextChange(null, 0); + } + } + return true; + }, this); + } + }, + + /** + * APIMethod: activate + * Activate the control. This registers any listeners. + * + * Returns: + * {Boolean} Control successfully activated. + */ + activate: function() { + var activated = false; + if(this.map) { + if(OpenLayers.Control.prototype.activate.apply(this)) { + if(this.listeners == null) { + this.setListeners(); + } + for(var type in this.listeners) { + this.map.events.register(type, this, this.listeners[type]); + } + activated = true; + if(this.previousStack.length == 0) { + this.initStack(); + } + } + } + return activated; + }, + + /** + * Method: initStack + * Called after the control is activated if the previous history stack is + * empty. + */ + initStack: function() { + if(this.map.getCenter()) { + this.listeners.moveend(); + } + }, + + /** + * APIMethod: deactivate + * Deactivate the control. This unregisters any listeners. + * + * Returns: + * {Boolean} Control successfully deactivated. + */ + deactivate: function() { + var deactivated = false; + if(this.map) { + if(OpenLayers.Control.prototype.deactivate.apply(this)) { + for(var type in this.listeners) { + this.map.events.unregister( + type, this, this.listeners[type] + ); + } + if(this.clearOnDeactivate) { + this.clear(); + } + deactivated = true; + } + } + return deactivated; + }, + + CLASS_NAME: "OpenLayers.Control.NavigationHistory" +}); + diff --git a/openlayers/lib/OpenLayers/Control/OverviewMap.js b/openlayers/lib/OpenLayers/Control/OverviewMap.js new file mode 100644 index 0000000..03c92b8 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/OverviewMap.js @@ -0,0 +1,700 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control.js + * @requires OpenLayers/BaseTypes.js + * @requires OpenLayers/Events.js + */ + +/** + * Class: OpenLayers.Control.OverviewMap + * The OverMap control creates a small overview map, useful to display the + * extent of a zoomed map and your main map and provide additional + * navigation options to the User. By default the overview map is drawn in + * the lower right corner of the main map. Create a new overview map with the + * constructor. + * + * Inerits from: + * - + */ +OpenLayers.Control.OverviewMap = OpenLayers.Class(OpenLayers.Control, { + + /** + * Property: element + * {DOMElement} The DOM element that contains the overview map + */ + element: null, + + /** + * APIProperty: ovmap + * {} A reference to the overview map itself. + */ + ovmap: null, + + /** + * APIProperty: size + * {} The overvew map size in pixels. Note that this is + * the size of the map itself - the element that contains the map (default + * class name olControlOverviewMapElement) may have padding or other style + * attributes added via CSS. + */ + size: new OpenLayers.Size(180, 90), + + /** + * APIProperty: layers + * {Array()} Ordered list of layers in the overview map. + * If none are sent at construction, the base layer for the main map is used. + */ + layers: null, + + /** + * APIProperty: minRectSize + * {Integer} The minimum width or height (in pixels) of the extent + * rectangle on the overview map. When the extent rectangle reaches + * this size, it will be replaced depending on the value of the + * property. Default is 15 pixels. + */ + minRectSize: 15, + + /** + * APIProperty: minRectDisplayClass + * {String} Replacement style class name for the extent rectangle when + * is reached. This string will be suffixed on to the + * displayClass. Default is "RectReplacement". + * + * Example CSS declaration: + * (code) + * .olControlOverviewMapRectReplacement { + * overflow: hidden; + * cursor: move; + * background-image: url("img/overview_replacement.gif"); + * background-repeat: no-repeat; + * background-position: center; + * } + * (end) + */ + minRectDisplayClass: "RectReplacement", + + /** + * APIProperty: minRatio + * {Float} The ratio of the overview map resolution to the main map + * resolution at which to zoom farther out on the overview map. + */ + minRatio: 8, + + /** + * APIProperty: maxRatio + * {Float} The ratio of the overview map resolution to the main map + * resolution at which to zoom farther in on the overview map. + */ + maxRatio: 32, + + /** + * APIProperty: mapOptions + * {Object} An object containing any non-default properties to be sent to + * the overview map's map constructor. These should include any + * non-default options that the main map was constructed with. + */ + mapOptions: null, + + /** + * APIProperty: autoPan + * {Boolean} Always pan the overview map, so the extent marker remains in + * the center. Default is false. If true, when you drag the extent + * marker, the overview map will update itself so the marker returns + * to the center. + */ + autoPan: false, + + /** + * Property: handlers + * {Object} + */ + handlers: null, + + /** + * Property: resolutionFactor + * {Object} + */ + resolutionFactor: 1, + + /** + * Constructor: OpenLayers.Control.OverviewMap + * Create a new overview map + * + * Parameters: + * object - {Object} Properties of this object will be set on the overview + * map object. Note, to set options on the map object contained in this + * control, set as one of the options properties. + */ + initialize: function(options) { + this.layers = []; + this.handlers = {}; + OpenLayers.Control.prototype.initialize.apply(this, [options]); + }, + + /** + * APIMethod: destroy + * Deconstruct the control + */ + destroy: function() { + if (!this.mapDiv) { // we've already been destroyed + return; + } + this.handlers.click.destroy(); + + this.mapDiv.removeChild(this.extentRectangle); + this.extentRectangle = null; + this.rectEvents.destroy(); + this.rectEvents = null; + + this.ovmap.destroy(); + this.ovmap = null; + + this.element.removeChild(this.mapDiv); + this.mapDiv = null; + + this.div.removeChild(this.element); + this.element = null; + + if (this.maximizeDiv) { + OpenLayers.Event.stopObservingElement(this.maximizeDiv); + this.div.removeChild(this.maximizeDiv); + this.maximizeDiv = null; + } + + if (this.minimizeDiv) { + OpenLayers.Event.stopObservingElement(this.minimizeDiv); + this.div.removeChild(this.minimizeDiv); + this.minimizeDiv = null; + } + + this.map.events.un({ + "moveend": this.update, + "changebaselayer": this.baseLayerDraw, + scope: this + }); + + OpenLayers.Control.prototype.destroy.apply(this, arguments); + }, + + /** + * Method: draw + * Render the control in the browser. + */ + draw: function() { + OpenLayers.Control.prototype.draw.apply(this, arguments); + if(!(this.layers.length > 0)) { + if (this.map.baseLayer) { + var layer = this.map.baseLayer.clone(); + this.layers = [layer]; + } else { + this.map.events.register("changebaselayer", this, this.baseLayerDraw); + return this.div; + } + } + + // create overview map DOM elements + this.element = document.createElement('div'); + this.element.className = this.displayClass + 'Element'; + this.element.style.display = 'none'; + + this.mapDiv = document.createElement('div'); + this.mapDiv.style.width = this.size.w + 'px'; + this.mapDiv.style.height = this.size.h + 'px'; + this.mapDiv.style.position = 'relative'; + this.mapDiv.style.overflow = 'hidden'; + this.mapDiv.id = OpenLayers.Util.createUniqueID('overviewMap'); + + this.extentRectangle = document.createElement('div'); + this.extentRectangle.style.position = 'absolute'; + this.extentRectangle.style.zIndex = 1000; //HACK + this.extentRectangle.className = this.displayClass+'ExtentRectangle'; + this.mapDiv.appendChild(this.extentRectangle); + + this.element.appendChild(this.mapDiv); + + this.div.appendChild(this.element); + + // Optionally add min/max buttons if the control will go in the + // map viewport. + if(!this.outsideViewport) { + this.div.className += " " + this.displayClass + 'Container'; + var imgLocation = OpenLayers.Util.getImagesLocation(); + // maximize button div + var img = imgLocation + 'layer-switcher-maximize.png'; + this.maximizeDiv = OpenLayers.Util.createAlphaImageDiv( + this.displayClass + 'MaximizeButton', + null, + new OpenLayers.Size(18,18), + img, + 'absolute'); + this.maximizeDiv.style.display = 'none'; + this.maximizeDiv.className = this.displayClass + 'MaximizeButton'; + OpenLayers.Event.observe(this.maximizeDiv, 'click', + OpenLayers.Function.bindAsEventListener(this.maximizeControl, + this) + ); + this.div.appendChild(this.maximizeDiv); + + // minimize button div + var img = imgLocation + 'layer-switcher-minimize.png'; + this.minimizeDiv = OpenLayers.Util.createAlphaImageDiv( + 'OpenLayers_Control_minimizeDiv', + null, + new OpenLayers.Size(18,18), + img, + 'absolute'); + this.minimizeDiv.style.display = 'none'; + this.minimizeDiv.className = this.displayClass + 'MinimizeButton'; + OpenLayers.Event.observe(this.minimizeDiv, 'click', + OpenLayers.Function.bindAsEventListener(this.minimizeControl, + this) + ); + this.div.appendChild(this.minimizeDiv); + + var eventsToStop = ['dblclick','mousedown']; + + for (var i=0, len=eventsToStop.length; i} The pixel location of the drag. + */ + rectDrag: function(px) { + var deltaX = this.handlers.drag.last.x - px.x; + var deltaY = this.handlers.drag.last.y - px.y; + if(deltaX != 0 || deltaY != 0) { + var rectTop = this.rectPxBounds.top; + var rectLeft = this.rectPxBounds.left; + var rectHeight = Math.abs(this.rectPxBounds.getHeight()); + var rectWidth = this.rectPxBounds.getWidth(); + // don't allow dragging off of parent element + var newTop = Math.max(0, (rectTop - deltaY)); + newTop = Math.min(newTop, + this.ovmap.size.h - this.hComp - rectHeight); + var newLeft = Math.max(0, (rectLeft - deltaX)); + newLeft = Math.min(newLeft, + this.ovmap.size.w - this.wComp - rectWidth); + this.setRectPxBounds(new OpenLayers.Bounds(newLeft, + newTop + rectHeight, + newLeft + rectWidth, + newTop)); + } + }, + + /** + * Method: mapDivClick + * Handle browser events + * + * Parameters: + * evt - {} evt + */ + mapDivClick: function(evt) { + var pxCenter = this.rectPxBounds.getCenterPixel(); + var deltaX = evt.xy.x - pxCenter.x; + var deltaY = evt.xy.y - pxCenter.y; + var top = this.rectPxBounds.top; + var left = this.rectPxBounds.left; + var height = Math.abs(this.rectPxBounds.getHeight()); + var width = this.rectPxBounds.getWidth(); + var newTop = Math.max(0, (top + deltaY)); + newTop = Math.min(newTop, this.ovmap.size.h - height); + var newLeft = Math.max(0, (left + deltaX)); + newLeft = Math.min(newLeft, this.ovmap.size.w - width); + this.setRectPxBounds(new OpenLayers.Bounds(newLeft, + newTop + height, + newLeft + width, + newTop)); + this.updateMapToRect(); + }, + + /** + * Method: maximizeControl + * Unhide the control. Called when the control is in the map viewport. + * + * Parameters: + * e - {} + */ + maximizeControl: function(e) { + this.element.style.display = ''; + this.showToggle(false); + if (e != null) { + OpenLayers.Event.stop(e); + } + }, + + /** + * Method: minimizeControl + * Hide all the contents of the control, shrink the size, + * add the maximize icon + * + * Parameters: + * e - {} + */ + minimizeControl: function(e) { + this.element.style.display = 'none'; + this.showToggle(true); + if (e != null) { + OpenLayers.Event.stop(e); + } + }, + + /** + * Method: showToggle + * Hide/Show the toggle depending on whether the control is minimized + * + * Parameters: + * minimize - {Boolean} + */ + showToggle: function(minimize) { + this.maximizeDiv.style.display = minimize ? '' : 'none'; + this.minimizeDiv.style.display = minimize ? 'none' : ''; + }, + + /** + * Method: update + * Update the overview map after layers move. + */ + update: function() { + if(this.ovmap == null) { + this.createMap(); + } + + if(this.autoPan || !this.isSuitableOverview()) { + this.updateOverview(); + } + + // update extent rectangle + this.updateRectToMap(); + }, + + /** + * Method: isSuitableOverview + * Determines if the overview map is suitable given the extent and + * resolution of the main map. + */ + isSuitableOverview: function() { + var mapExtent = this.map.getExtent(); + var maxExtent = this.map.maxExtent; + var testExtent = new OpenLayers.Bounds( + Math.max(mapExtent.left, maxExtent.left), + Math.max(mapExtent.bottom, maxExtent.bottom), + Math.min(mapExtent.right, maxExtent.right), + Math.min(mapExtent.top, maxExtent.top)); + + if (this.ovmap.getProjection() != this.map.getProjection()) { + testExtent = testExtent.transform( + this.map.getProjectionObject(), + this.ovmap.getProjectionObject() ); + } + + var resRatio = this.ovmap.getResolution() / this.map.getResolution(); + return ((resRatio > this.minRatio) && + (resRatio <= this.maxRatio) && + (this.ovmap.getExtent().containsBounds(testExtent))); + }, + + /** + * Method updateOverview + * Called by if returns true + */ + updateOverview: function() { + var mapRes = this.map.getResolution(); + var targetRes = this.ovmap.getResolution(); + var resRatio = targetRes / mapRes; + if(resRatio > this.maxRatio) { + // zoom in overview map + targetRes = this.minRatio * mapRes; + } else if(resRatio <= this.minRatio) { + // zoom out overview map + targetRes = this.maxRatio * mapRes; + } + var center; + if (this.ovmap.getProjection() != this.map.getProjection()) { + center = this.map.center.clone(); + center.transform(this.map.getProjectionObject(), + this.ovmap.getProjectionObject() ); + } else { + center = this.map.center; + } + this.ovmap.setCenter(center, this.ovmap.getZoomForResolution( + targetRes * this.resolutionFactor)); + this.updateRectToMap(); + }, + + /** + * Method: createMap + * Construct the map that this control contains + */ + createMap: function() { + // create the overview map + var options = OpenLayers.Util.extend( + {controls: [], maxResolution: 'auto', + fallThrough: false}, this.mapOptions); + this.ovmap = new OpenLayers.Map(this.mapDiv, options); + + // prevent ovmap from being destroyed when the page unloads, because + // the OverviewMap control has to do this (and does it). + OpenLayers.Event.stopObserving(window, 'unload', this.ovmap.unloadDestroy); + + this.ovmap.addLayers(this.layers); + this.ovmap.zoomToMaxExtent(); + // check extent rectangle border width + this.wComp = parseInt(OpenLayers.Element.getStyle(this.extentRectangle, + 'border-left-width')) + + parseInt(OpenLayers.Element.getStyle(this.extentRectangle, + 'border-right-width')); + this.wComp = (this.wComp) ? this.wComp : 2; + this.hComp = parseInt(OpenLayers.Element.getStyle(this.extentRectangle, + 'border-top-width')) + + parseInt(OpenLayers.Element.getStyle(this.extentRectangle, + 'border-bottom-width')); + this.hComp = (this.hComp) ? this.hComp : 2; + + this.handlers.drag = new OpenLayers.Handler.Drag( + this, {move: this.rectDrag, done: this.updateMapToRect}, + {map: this.ovmap} + ); + this.handlers.click = new OpenLayers.Handler.Click( + this, { + "click": this.mapDivClick + },{ + "single": true, "double": false, + "stopSingle": true, "stopDouble": true, + "pixelTolerance": 1, + map: this.ovmap + } + ); + this.handlers.click.activate(); + + this.rectEvents = new OpenLayers.Events(this, this.extentRectangle, + null, true); + this.rectEvents.register("mouseover", this, function(e) { + if(!this.handlers.drag.active && !this.map.dragging) { + this.handlers.drag.activate(); + } + }); + this.rectEvents.register("mouseout", this, function(e) { + if(!this.handlers.drag.dragging) { + this.handlers.drag.deactivate(); + } + }); + + if (this.ovmap.getProjection() != this.map.getProjection()) { + var sourceUnits = this.map.getProjectionObject().getUnits() || + this.map.units || this.map.baseLayer.units; + var targetUnits = this.ovmap.getProjectionObject().getUnits() || + this.ovmap.units || this.ovmap.baseLayer.units; + this.resolutionFactor = sourceUnits && targetUnits ? + OpenLayers.INCHES_PER_UNIT[sourceUnits] / + OpenLayers.INCHES_PER_UNIT[targetUnits] : 1; + } + }, + + /** + * Method: updateRectToMap + * Updates the extent rectangle position and size to match the map extent + */ + updateRectToMap: function() { + // If the projections differ we need to reproject + var bounds; + if (this.ovmap.getProjection() != this.map.getProjection()) { + bounds = this.map.getExtent().transform( + this.map.getProjectionObject(), + this.ovmap.getProjectionObject() ); + } else { + bounds = this.map.getExtent(); + } + var pxBounds = this.getRectBoundsFromMapBounds(bounds); + if (pxBounds) { + this.setRectPxBounds(pxBounds); + } + }, + + /** + * Method: updateMapToRect + * Updates the map extent to match the extent rectangle position and size + */ + updateMapToRect: function() { + var lonLatBounds = this.getMapBoundsFromRectBounds(this.rectPxBounds); + if (this.ovmap.getProjection() != this.map.getProjection()) { + lonLatBounds = lonLatBounds.transform( + this.ovmap.getProjectionObject(), + this.map.getProjectionObject() ); + } + this.map.panTo(lonLatBounds.getCenterLonLat()); + }, + + /** + * Method: setRectPxBounds + * Set extent rectangle pixel bounds. + * + * Parameters: + * pxBounds - {} + */ + setRectPxBounds: function(pxBounds) { + var top = Math.max(pxBounds.top, 0); + var left = Math.max(pxBounds.left, 0); + var bottom = Math.min(pxBounds.top + Math.abs(pxBounds.getHeight()), + this.ovmap.size.h - this.hComp); + var right = Math.min(pxBounds.left + pxBounds.getWidth(), + this.ovmap.size.w - this.wComp); + var width = Math.max(right - left, 0); + var height = Math.max(bottom - top, 0); + if(width < this.minRectSize || height < this.minRectSize) { + this.extentRectangle.className = this.displayClass + + this.minRectDisplayClass; + var rLeft = left + (width / 2) - (this.minRectSize / 2); + var rTop = top + (height / 2) - (this.minRectSize / 2); + this.extentRectangle.style.top = Math.round(rTop) + 'px'; + this.extentRectangle.style.left = Math.round(rLeft) + 'px'; + this.extentRectangle.style.height = this.minRectSize + 'px'; + this.extentRectangle.style.width = this.minRectSize + 'px'; + } else { + this.extentRectangle.className = this.displayClass + + 'ExtentRectangle'; + this.extentRectangle.style.top = Math.round(top) + 'px'; + this.extentRectangle.style.left = Math.round(left) + 'px'; + this.extentRectangle.style.height = Math.round(height) + 'px'; + this.extentRectangle.style.width = Math.round(width) + 'px'; + } + this.rectPxBounds = new OpenLayers.Bounds( + Math.round(left), Math.round(bottom), + Math.round(right), Math.round(top) + ); + }, + + /** + * Method: getRectBoundsFromMapBounds + * Get the rect bounds from the map bounds. + * + * Parameters: + * lonLatBounds - {} + * + * Returns: + * {}A bounds which is the passed-in map lon/lat extent + * translated into pixel bounds for the overview map + */ + getRectBoundsFromMapBounds: function(lonLatBounds) { + var leftBottomLonLat = new OpenLayers.LonLat(lonLatBounds.left, + lonLatBounds.bottom); + var rightTopLonLat = new OpenLayers.LonLat(lonLatBounds.right, + lonLatBounds.top); + var leftBottomPx = this.getOverviewPxFromLonLat(leftBottomLonLat); + var rightTopPx = this.getOverviewPxFromLonLat(rightTopLonLat); + var bounds = null; + if (leftBottomPx && rightTopPx) { + bounds = new OpenLayers.Bounds(leftBottomPx.x, leftBottomPx.y, + rightTopPx.x, rightTopPx.y); + } + return bounds; + }, + + /** + * Method: getMapBoundsFromRectBounds + * Get the map bounds from the rect bounds. + * + * Parameters: + * pxBounds - {} + * + * Returns: + * {} Bounds which is the passed-in overview rect bounds + * translated into lon/lat bounds for the overview map + */ + getMapBoundsFromRectBounds: function(pxBounds) { + var leftBottomPx = new OpenLayers.Pixel(pxBounds.left, + pxBounds.bottom); + var rightTopPx = new OpenLayers.Pixel(pxBounds.right, + pxBounds.top); + var leftBottomLonLat = this.getLonLatFromOverviewPx(leftBottomPx); + var rightTopLonLat = this.getLonLatFromOverviewPx(rightTopPx); + return new OpenLayers.Bounds(leftBottomLonLat.lon, leftBottomLonLat.lat, + rightTopLonLat.lon, rightTopLonLat.lat); + }, + + /** + * Method: getLonLatFromOverviewPx + * Get a map location from a pixel location + * + * Parameters: + * overviewMapPx - {} + * + * Returns: + * {} Location which is the passed-in overview map + * OpenLayers.Pixel, translated into lon/lat by the overview map + */ + getLonLatFromOverviewPx: function(overviewMapPx) { + var size = this.ovmap.size; + var res = this.ovmap.getResolution(); + var center = this.ovmap.getExtent().getCenterLonLat(); + + var delta_x = overviewMapPx.x - (size.w / 2); + var delta_y = overviewMapPx.y - (size.h / 2); + + return new OpenLayers.LonLat(center.lon + delta_x * res , + center.lat - delta_y * res); + }, + + /** + * Method: getOverviewPxFromLonLat + * Get a pixel location from a map location + * + * Parameters: + * lonlat - {} + * + * Returns: + * {} Location which is the passed-in OpenLayers.LonLat, + * translated into overview map pixels + */ + getOverviewPxFromLonLat: function(lonlat) { + var res = this.ovmap.getResolution(); + var extent = this.ovmap.getExtent(); + var px = null; + if (extent) { + px = new OpenLayers.Pixel( + Math.round(1/res * (lonlat.lon - extent.left)), + Math.round(1/res * (extent.top - lonlat.lat))); + } + return px; + }, + + CLASS_NAME: 'OpenLayers.Control.OverviewMap' +}); diff --git a/openlayers/lib/OpenLayers/Control/Pan.js b/openlayers/lib/OpenLayers/Control/Pan.js new file mode 100644 index 0000000..9e6c412 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/Pan.js @@ -0,0 +1,85 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control.js + */ + +/** + * Class: OpenLayers.Control.Pan + * The Pan control is a single button to pan the map in one direction. For + * a more complete control see . + * + * Inherits from: + * - + */ +OpenLayers.Control.Pan = OpenLayers.Class(OpenLayers.Control, { + + /** + * APIProperty: slideFactor + * {Integer} Number of pixels by which we'll pan the map in any direction + * on clicking the arrow buttons. + */ + slideFactor: 50, + + /** + * Property: direction + * {String} in {'North', 'South', 'East', 'West'} + */ + direction: null, + + /** + * Property: type + * {String} The type of -- When added to a + * , 'type' is used by the panel to determine how to + * handle our events. + */ + type: OpenLayers.Control.TYPE_BUTTON, + + /** + * Constructor: OpenLayers.Control.Pan + * Control which handles the panning (in any of the cardinal directions) + * of the map by a set px distance. + * + * Parameters: + * direction - {String} The direction this button should pan. + * options - {Object} An optional object whose properties will be used + * to extend the control. + */ + initialize: function(direction, options) { + + this.direction = direction; + this.CLASS_NAME += this.direction; + + OpenLayers.Control.prototype.initialize.apply(this, [options]); + }, + + /** + * Method: trigger + */ + trigger: function(){ + + switch (this.direction) { + case OpenLayers.Control.Pan.NORTH: + this.map.pan(0, -this.slideFactor); + break; + case OpenLayers.Control.Pan.SOUTH: + this.map.pan(0, this.slideFactor); + break; + case OpenLayers.Control.Pan.WEST: + this.map.pan(-this.slideFactor, 0); + break; + case OpenLayers.Control.Pan.EAST: + this.map.pan(this.slideFactor, 0); + break; + } + }, + + CLASS_NAME: "OpenLayers.Control.Pan" +}); + +OpenLayers.Control.Pan.NORTH = "North"; +OpenLayers.Control.Pan.SOUTH = "South"; +OpenLayers.Control.Pan.EAST = "East"; +OpenLayers.Control.Pan.WEST = "West"; diff --git a/openlayers/lib/OpenLayers/Control/PanPanel.js b/openlayers/lib/OpenLayers/Control/PanPanel.js new file mode 100644 index 0000000..b8d1094 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/PanPanel.js @@ -0,0 +1,47 @@ +/** + * @requires OpenLayers/Control/Panel.js + * @requires OpenLayers/Control/Pan.js + */ + +/** + * Class: OpenLayers.Control.PanPanel + * The PanPanel is visible control for panning the map North, South, East or + * West in small steps. By default it is drawn in the top left corner of the + * map. + * + * Note: + * If you wish to use this class with the default images and you want + * it to look nice in ie6, you should add the following, conditionally + * added css stylesheet to your HTML file: + * + * (code) + * + * (end) + * + * Inherits from: + * - + */ +OpenLayers.Control.PanPanel = OpenLayers.Class(OpenLayers.Control.Panel, { + + /** + * Constructor: OpenLayers.Control.PanPanel + * Add the four directional pan buttons. + * + * Parameters: + * options - {Object} An optional object whose properties will be used + * to extend the control. + */ + initialize: function(options) { + OpenLayers.Control.Panel.prototype.initialize.apply(this, [options]); + this.addControls([ + new OpenLayers.Control.Pan(OpenLayers.Control.Pan.NORTH), + new OpenLayers.Control.Pan(OpenLayers.Control.Pan.SOUTH), + new OpenLayers.Control.Pan(OpenLayers.Control.Pan.EAST), + new OpenLayers.Control.Pan(OpenLayers.Control.Pan.WEST) + ]); + }, + + CLASS_NAME: "OpenLayers.Control.PanPanel" +}); diff --git a/openlayers/lib/OpenLayers/Control/PanZoom.js b/openlayers/lib/OpenLayers/Control/PanZoom.js new file mode 100644 index 0000000..e920360 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/PanZoom.js @@ -0,0 +1,244 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Control.js + */ + +/** + * Class: OpenLayers.Control.PanZoom + * The PanZoom is a visible control, composed of a + * and a . By + * default it is drawn in the upper left corner of the map. + * + * Inherits from: + * - + */ +OpenLayers.Control.PanZoom = OpenLayers.Class(OpenLayers.Control, { + + /** + * APIProperty: slideFactor + * {Integer} Number of pixels by which we'll pan the map in any direction + * on clicking the arrow buttons. If you want to pan by some ratio + * of the map dimensions, use instead. + */ + slideFactor: 50, + + /** + * APIProperty: slideRatio + * {Number} The fraction of map width/height by which we'll pan the map + * on clicking the arrow buttons. Default is null. If set, will + * override . E.g. if slideRatio is .5, then the Pan Up + * button will pan up half the map height. + */ + slideRatio: null, + + /** + * Property: buttons + * {Array(DOMElement)} Array of Button Divs + */ + buttons: null, + + /** + * Property: position + * {} + */ + position: null, + + /** + * Constructor: OpenLayers.Control.PanZoom + * + * Parameters: + * options - {Object} + */ + initialize: function(options) { + this.position = new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X, + OpenLayers.Control.PanZoom.Y); + OpenLayers.Control.prototype.initialize.apply(this, arguments); + }, + + /** + * APIMethod: destroy + */ + destroy: function() { + OpenLayers.Control.prototype.destroy.apply(this, arguments); + this.removeButtons(); + this.buttons = null; + this.position = null; + }, + + /** + * Method: draw + * + * Parameters: + * px - {} + * + * Returns: + * {DOMElement} A reference to the container div for the PanZoom control. + */ + draw: function(px) { + // initialize our internal div + OpenLayers.Control.prototype.draw.apply(this, arguments); + px = this.position; + + // place the controls + this.buttons = []; + + var sz = new OpenLayers.Size(18,18); + var centered = new OpenLayers.Pixel(px.x+sz.w/2, px.y); + + this._addButton("panup", "north-mini.png", centered, sz); + px.y = centered.y+sz.h; + this._addButton("panleft", "west-mini.png", px, sz); + this._addButton("panright", "east-mini.png", px.add(sz.w, 0), sz); + this._addButton("pandown", "south-mini.png", + centered.add(0, sz.h*2), sz); + this._addButton("zoomin", "zoom-plus-mini.png", + centered.add(0, sz.h*3+5), sz); + this._addButton("zoomworld", "zoom-world-mini.png", + centered.add(0, sz.h*4+5), sz); + this._addButton("zoomout", "zoom-minus-mini.png", + centered.add(0, sz.h*5+5), sz); + return this.div; + }, + + /** + * Method: _addButton + * + * Parameters: + * id - {String} + * img - {String} + * xy - {} + * sz - {} + * + * Returns: + * {DOMElement} A Div (an alphaImageDiv, to be precise) that contains the + * image of the button, and has all the proper event handlers set. + */ + _addButton:function(id, img, xy, sz) { + var imgLocation = OpenLayers.Util.getImagesLocation() + img; + var btn = OpenLayers.Util.createAlphaImageDiv( + this.id + "_" + id, + xy, sz, imgLocation, "absolute"); + + //we want to add the outer div + this.div.appendChild(btn); + + OpenLayers.Event.observe(btn, "mousedown", + OpenLayers.Function.bindAsEventListener(this.buttonDown, btn)); + OpenLayers.Event.observe(btn, "dblclick", + OpenLayers.Function.bindAsEventListener(this.doubleClick, btn)); + OpenLayers.Event.observe(btn, "click", + OpenLayers.Function.bindAsEventListener(this.doubleClick, btn)); + btn.action = id; + btn.map = this.map; + + if(!this.slideRatio){ + var slideFactorPixels = this.slideFactor; + var getSlideFactor = function() { + return slideFactorPixels; + }; + } else { + var slideRatio = this.slideRatio; + var getSlideFactor = function(dim) { + return this.map.getSize()[dim] * slideRatio; + }; + } + + btn.getSlideFactor = getSlideFactor; + + //we want to remember/reference the outer div + this.buttons.push(btn); + return btn; + }, + + /** + * Method: _removeButton + * + * Parameters: + * btn - {Object} + */ + _removeButton: function(btn) { + OpenLayers.Event.stopObservingElement(btn); + btn.map = null; + this.div.removeChild(btn); + OpenLayers.Util.removeItem(this.buttons, btn); + }, + + /** + * Method: removeButtons + */ + removeButtons: function() { + for(var i=this.buttons.length-1; i>=0; --i) { + this._removeButton(this.buttons[i]); + } + }, + + /** + * Method: doubleClick + * + * Parameters: + * evt - {Event} + * + * Returns: + * {Boolean} + */ + doubleClick: function (evt) { + OpenLayers.Event.stop(evt); + return false; + }, + + /** + * Method: buttonDown + * + * Parameters: + * evt - {Event} + */ + buttonDown: function (evt) { + if (!OpenLayers.Event.isLeftClick(evt)) { + return; + } + + switch (this.action) { + case "panup": + this.map.pan(0, -this.getSlideFactor("h")); + break; + case "pandown": + this.map.pan(0, this.getSlideFactor("h")); + break; + case "panleft": + this.map.pan(-this.getSlideFactor("w"), 0); + break; + case "panright": + this.map.pan(this.getSlideFactor("w"), 0); + break; + case "zoomin": + this.map.zoomIn(); + break; + case "zoomout": + this.map.zoomOut(); + break; + case "zoomworld": + this.map.zoomToMaxExtent(); + break; + } + + OpenLayers.Event.stop(evt); + }, + + CLASS_NAME: "OpenLayers.Control.PanZoom" +}); + +/** + * Constant: X + * {Integer} + */ +OpenLayers.Control.PanZoom.X = 4; + +/** + * Constant: Y + * {Integer} + */ +OpenLayers.Control.PanZoom.Y = 4; diff --git a/openlayers/lib/OpenLayers/Control/PanZoomBar.js b/openlayers/lib/OpenLayers/Control/PanZoomBar.js new file mode 100644 index 0000000..290cb6e --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/PanZoomBar.js @@ -0,0 +1,373 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Control/PanZoom.js + */ + +/** + * Class: OpenLayers.Control.PanZoomBar + * The PanZoomBar is a visible control composed of a + * and a . + * By default it is displayed in the upper left corner of the map as 4 + * directional arrows above a vertical slider. + * + * Inherits from: + * - + */ +OpenLayers.Control.PanZoomBar = OpenLayers.Class(OpenLayers.Control.PanZoom, { + + /** + * APIProperty: zoomStopWidth + */ + zoomStopWidth: 18, + + /** + * APIProperty: zoomStopHeight + */ + zoomStopHeight: 11, + + /** + * Property: slider + */ + slider: null, + + /** + * Property: sliderEvents + * {} + */ + sliderEvents: null, + + /** + * Property: zoomBarDiv + * {DOMElement} + */ + zoomBarDiv: null, + + /** + * Property: divEvents + * {} + */ + divEvents: null, + + /** + * APIProperty: zoomWorldIcon + * {Boolean} + */ + zoomWorldIcon: false, + + /** + * Constructor: OpenLayers.Control.PanZoomBar + */ + initialize: function() { + OpenLayers.Control.PanZoom.prototype.initialize.apply(this, arguments); + }, + + /** + * APIMethod: destroy + */ + destroy: function() { + + this._removeZoomBar(); + + this.map.events.un({ + "changebaselayer": this.redraw, + scope: this + }); + + OpenLayers.Control.PanZoom.prototype.destroy.apply(this, arguments); + }, + + /** + * Method: setMap + * + * Parameters: + * map - {} + */ + setMap: function(map) { + OpenLayers.Control.PanZoom.prototype.setMap.apply(this, arguments); + this.map.events.register("changebaselayer", this, this.redraw); + }, + + /** + * Method: redraw + * clear the div and start over. + */ + redraw: function() { + if (this.div != null) { + this.removeButtons(); + this._removeZoomBar(); + } + this.draw(); + }, + + /** + * Method: draw + * + * Parameters: + * px - {} + */ + draw: function(px) { + // initialize our internal div + OpenLayers.Control.prototype.draw.apply(this, arguments); + px = this.position.clone(); + + // place the controls + this.buttons = []; + + var sz = new OpenLayers.Size(18,18); + var centered = new OpenLayers.Pixel(px.x+sz.w/2, px.y); + var wposition = sz.w; + + if (this.zoomWorldIcon) { + centered = new OpenLayers.Pixel(px.x+sz.w, px.y); + } + + this._addButton("panup", "north-mini.png", centered, sz); + px.y = centered.y+sz.h; + this._addButton("panleft", "west-mini.png", px, sz); + if (this.zoomWorldIcon) { + this._addButton("zoomworld", "zoom-world-mini.png", px.add(sz.w, 0), sz); + + wposition *= 2; + } + this._addButton("panright", "east-mini.png", px.add(wposition, 0), sz); + this._addButton("pandown", "south-mini.png", centered.add(0, sz.h*2), sz); + this._addButton("zoomin", "zoom-plus-mini.png", centered.add(0, sz.h*3+5), sz); + centered = this._addZoomBar(centered.add(0, sz.h*4 + 5)); + this._addButton("zoomout", "zoom-minus-mini.png", centered, sz); + return this.div; + }, + + /** + * Method: _addZoomBar + * + * Parameters: + * location - {} where zoombar drawing is to start. + */ + _addZoomBar:function(centered) { + var imgLocation = OpenLayers.Util.getImagesLocation(); + + var id = this.id + "_" + this.map.id; + var zoomsToEnd = this.map.getNumZoomLevels() - 1 - this.map.getZoom(); + var slider = OpenLayers.Util.createAlphaImageDiv(id, + centered.add(-1, zoomsToEnd * this.zoomStopHeight), + new OpenLayers.Size(20,9), + imgLocation+"slider.png", + "absolute"); + this.slider = slider; + + this.sliderEvents = new OpenLayers.Events(this, slider, null, true, + {includeXY: true}); + this.sliderEvents.on({ + "mousedown": this.zoomBarDown, + "mousemove": this.zoomBarDrag, + "mouseup": this.zoomBarUp, + "dblclick": this.doubleClick, + "click": this.doubleClick + }); + + var sz = new OpenLayers.Size(); + sz.h = this.zoomStopHeight * this.map.getNumZoomLevels(); + sz.w = this.zoomStopWidth; + var div = null; + + if (OpenLayers.Util.alphaHack()) { + var id = this.id + "_" + this.map.id; + div = OpenLayers.Util.createAlphaImageDiv(id, centered, + new OpenLayers.Size(sz.w, + this.zoomStopHeight), + imgLocation + "zoombar.png", + "absolute", null, "crop"); + div.style.height = sz.h + "px"; + } else { + div = OpenLayers.Util.createDiv( + 'OpenLayers_Control_PanZoomBar_Zoombar' + this.map.id, + centered, + sz, + imgLocation+"zoombar.png"); + } + + this.zoombarDiv = div; + + this.divEvents = new OpenLayers.Events(this, div, null, true, + {includeXY: true}); + this.divEvents.on({ + "mousedown": this.divClick, + "mousemove": this.passEventToSlider, + "dblclick": this.doubleClick, + "click": this.doubleClick + }); + + this.div.appendChild(div); + + this.startTop = parseInt(div.style.top); + this.div.appendChild(slider); + + this.map.events.register("zoomend", this, this.moveZoomBar); + + centered = centered.add(0, + this.zoomStopHeight * this.map.getNumZoomLevels()); + return centered; + }, + + /** + * Method: _removeZoomBar + */ + _removeZoomBar: function() { + this.sliderEvents.un({ + "mousedown": this.zoomBarDown, + "mousemove": this.zoomBarDrag, + "mouseup": this.zoomBarUp, + "dblclick": this.doubleClick, + "click": this.doubleClick + }); + this.sliderEvents.destroy(); + + this.divEvents.un({ + "mousedown": this.divClick, + "mousemove": this.passEventToSlider, + "dblclick": this.doubleClick, + "click": this.doubleClick + }); + this.divEvents.destroy(); + + this.div.removeChild(this.zoombarDiv); + this.zoombarDiv = null; + this.div.removeChild(this.slider); + this.slider = null; + + this.map.events.unregister("zoomend", this, this.moveZoomBar); + }, + + /** + * Method: passEventToSlider + * This function is used to pass events that happen on the div, or the map, + * through to the slider, which then does its moving thing. + * + * Parameters: + * evt - {} + */ + passEventToSlider:function(evt) { + this.sliderEvents.handleBrowserEvent(evt); + }, + + /** + * Method: divClick + * Picks up on clicks directly on the zoombar div + * and sets the zoom level appropriately. + */ + divClick: function (evt) { + if (!OpenLayers.Event.isLeftClick(evt)) { + return; + } + var y = evt.xy.y; + var top = OpenLayers.Util.pagePosition(evt.object)[1]; + var levels = (y - top)/this.zoomStopHeight; + if(!this.map.fractionalZoom) { + levels = Math.floor(levels); + } + var zoom = (this.map.getNumZoomLevels() - 1) - levels; + zoom = Math.min(Math.max(zoom, 0), this.map.getNumZoomLevels() - 1); + this.map.zoomTo(zoom); + OpenLayers.Event.stop(evt); + }, + + /* + * Method: zoomBarDown + * event listener for clicks on the slider + * + * Parameters: + * evt - {} + */ + zoomBarDown:function(evt) { + if (!OpenLayers.Event.isLeftClick(evt)) { + return; + } + this.map.events.on({ + "mousemove": this.passEventToSlider, + "mouseup": this.passEventToSlider, + scope: this + }); + this.mouseDragStart = evt.xy.clone(); + this.zoomStart = evt.xy.clone(); + this.div.style.cursor = "move"; + // reset the div offsets just in case the div moved + this.zoombarDiv.offsets = null; + OpenLayers.Event.stop(evt); + }, + + /* + * Method: zoomBarDrag + * This is what happens when a click has occurred, and the client is + * dragging. Here we must ensure that the slider doesn't go beyond the + * bottom/top of the zoombar div, as well as moving the slider to its new + * visual location + * + * Parameters: + * evt - {} + */ + zoomBarDrag:function(evt) { + if (this.mouseDragStart != null) { + var deltaY = this.mouseDragStart.y - evt.xy.y; + var offsets = OpenLayers.Util.pagePosition(this.zoombarDiv); + if ((evt.clientY - offsets[1]) > 0 && + (evt.clientY - offsets[1]) < parseInt(this.zoombarDiv.style.height) - 2) { + var newTop = parseInt(this.slider.style.top) - deltaY; + this.slider.style.top = newTop+"px"; + this.mouseDragStart = evt.xy.clone(); + } + OpenLayers.Event.stop(evt); + } + }, + + /* + * Method: zoomBarUp + * Perform cleanup when a mouseup event is received -- discover new zoom + * level and switch to it. + * + * Parameters: + * evt - {} + */ + zoomBarUp:function(evt) { + if (!OpenLayers.Event.isLeftClick(evt)) { + return; + } + if (this.zoomStart) { + this.div.style.cursor=""; + this.map.events.un({ + "mouseup": this.passEventToSlider, + "mousemove": this.passEventToSlider, + scope: this + }); + var deltaY = this.zoomStart.y - evt.xy.y; + var zoomLevel = this.map.zoom; + if (this.map.fractionalZoom) { + zoomLevel += deltaY/this.zoomStopHeight; + zoomLevel = Math.min(Math.max(zoomLevel, 0), + this.map.getNumZoomLevels() - 1); + } else { + zoomLevel += Math.round(deltaY/this.zoomStopHeight); + } + this.map.zoomTo(zoomLevel); + this.moveZoomBar(); + this.mouseDragStart = null; + OpenLayers.Event.stop(evt); + } + }, + + /* + * Method: moveZoomBar + * Change the location of the slider to match the current zoom level. + */ + moveZoomBar:function() { + var newTop = + ((this.map.getNumZoomLevels()-1) - this.map.getZoom()) * + this.zoomStopHeight + this.startTop + 1; + this.slider.style.top = newTop + "px"; + }, + + CLASS_NAME: "OpenLayers.Control.PanZoomBar" +}); diff --git a/openlayers/lib/OpenLayers/Control/Panel.js b/openlayers/lib/OpenLayers/Control/Panel.js new file mode 100644 index 0000000..a6045a3 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/Panel.js @@ -0,0 +1,286 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control.js + */ + +/** + * Class: OpenLayers.Control.Panel + * The Panel control is a container for other controls. With it toolbars + * may be composed. + * + * Inherits from: + * - + */ +OpenLayers.Control.Panel = OpenLayers.Class(OpenLayers.Control, { + /** + * Property: controls + * {Array()} + */ + controls: null, + + /** + * APIProperty: defaultControl + * {} The control which is activated when the control is + * activated (turned on), which also happens at instantiation. + */ + defaultControl: null, + + /** + * Constructor: OpenLayers.Control.Panel + * Create a new control panel. + * + * Parameters: + * options - {Object} An optional object whose properties will be used + * to extend the control. + */ + initialize: function(options) { + OpenLayers.Control.prototype.initialize.apply(this, [options]); + this.controls = []; + }, + + /** + * APIMethod: destroy + */ + destroy: function() { + OpenLayers.Control.prototype.destroy.apply(this, arguments); + for(var i = this.controls.length - 1 ; i >= 0; i--) { + if(this.controls[i].events) { + this.controls[i].events.un({ + "activate": this.redraw, + "deactivate": this.redraw, + scope: this + }); + } + OpenLayers.Event.stopObservingElement(this.controls[i].panel_div); + this.controls[i].panel_div = null; + } + }, + + /** + * APIMethod: activate + */ + activate: function() { + if (OpenLayers.Control.prototype.activate.apply(this, arguments)) { + for(var i=0, len=this.controls.length; i} + */ + activateControl: function (control) { + if (!this.active) { return false; } + if (control.type == OpenLayers.Control.TYPE_BUTTON) { + control.trigger(); + this.redraw(); + return; + } + if (control.type == OpenLayers.Control.TYPE_TOGGLE) { + if (control.active) { + control.deactivate(); + } else { + control.activate(); + } + this.redraw(); + return; + } + for (var i=0, len=this.controls.length; i} + */ + addControls: function(controls) { + if (!(controls instanceof Array)) { + controls = [controls]; + } + this.controls = this.controls.concat(controls); + + // Give each control a panel_div which will be used later. + // Access to this div is via the panel_div attribute of the + // control added to the panel. + // Also, stop mousedowns and clicks, but don't stop mouseup, + // since they need to pass through. + for (var i=0, len=controls.length; i)} A list of controls matching the given criteria. + * An empty array is returned if no matches are found. + */ + getControlsBy: function(property, match) { + var test = (typeof match.test == "function"); + var found = OpenLayers.Array.filter(this.controls, function(item) { + return item[property] == match || (test && match.test(item[property])); + }); + return found; + }, + + /** + * APIMethod: getControlsByName + * Get a list of contorls with names matching the given name. + * + * Parameter: + * match - {String | Object} A control name. The name can also be a regular + * expression literal or object. In addition, it can be any object + * with a method named test. For reqular expressions or other, if + * name.test(control.name) evaluates to true, the control will be included + * in the list of controls returned. If no controls are found, an empty + * array is returned. + * + * Returns: + * {Array()} A list of controls matching the given name. + * An empty array is returned if no matches are found. + */ + getControlsByName: function(match) { + return this.getControlsBy("name", match); + }, + + /** + * APIMethod: getControlsByClass + * Get a list of controls of a given type (CLASS_NAME). + * + * Parameter: + * match - {String | Object} A control class name. The type can also be a + * regular expression literal or object. In addition, it can be any + * object with a method named test. For reqular expressions or other, + * if type.test(control.CLASS_NAME) evaluates to true, the control will + * be included in the list of controls returned. If no controls are + * found, an empty array is returned. + * + * Returns: + * {Array()} A list of controls matching the given type. + * An empty array is returned if no matches are found. + */ + getControlsByClass: function(match) { + return this.getControlsBy("CLASS_NAME", match); + }, + + CLASS_NAME: "OpenLayers.Control.Panel" +}); + diff --git a/openlayers/lib/OpenLayers/Control/Permalink.js b/openlayers/lib/OpenLayers/Control/Permalink.js new file mode 100644 index 0000000..b5c77e4 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/Permalink.js @@ -0,0 +1,219 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Control.js + * @requires OpenLayers/Control/ArgParser.js + */ + +/** + * Class: OpenLayers.Control.Permalink + * The Permalink control is hyperlink that will return the user to the + * current map view. By default it is drawn in the lower right corner of the + * map. The href is updated as the map is zoomed, panned and whilst layers + * are switched. + * ` + * Inherits from: + * - + */ +OpenLayers.Control.Permalink = OpenLayers.Class(OpenLayers.Control, { + + /** + * APIProperty: argParserClass + * {Class} The ArgParser control class (not instance) to use with this + * control. + */ + argParserClass: OpenLayers.Control.ArgParser, + + /** + * Property: element + * {DOMElement} + */ + element: null, + + /** + * APIProperty: base + * {String} + */ + base: '', + + /** + * APIProperty: displayProjection + * {} Requires proj4js support. Projection used + * when creating the coordinates in the link. This will reproject the + * map coordinates into display coordinates. If you are using this + * functionality, the permalink which is last added to the map will + * determine the coordinate type which is read from the URL, which + * means you should not add permalinks with different + * displayProjections to the same map. + */ + displayProjection: null, + + /** + * Constructor: OpenLayers.Control.Permalink + * + * Parameters: + * element - {DOMElement} + * base - {String} + * options - {Object} options to the control. + */ + initialize: function(element, base, options) { + OpenLayers.Control.prototype.initialize.apply(this, [options]); + this.element = OpenLayers.Util.getElement(element); + this.base = base || document.location.href; + }, + + /** + * APIMethod: destroy + */ + destroy: function() { + if (this.element.parentNode == this.div) { + this.div.removeChild(this.element); + } + this.element = null; + + this.map.events.unregister('moveend', this, this.updateLink); + + OpenLayers.Control.prototype.destroy.apply(this, arguments); + }, + + /** + * Method: setMap + * Set the map property for the control. + * + * Parameters: + * map - {} + */ + setMap: function(map) { + OpenLayers.Control.prototype.setMap.apply(this, arguments); + + //make sure we have an arg parser attached + for(var i=0, len=this.map.controls.length; i} center to encode in the permalink. + * Defaults to the current map center. + * zoom - {Integer} zoom level to encode in the permalink. Defaults to the + * current map zoom level. + * layers - {Array()} layers to encode in the permalink. + * Defaults to the current map layers. + * + * Returns: + * {Object} Hash of parameters that will be url-encoded into the + * permalink. + */ + createParams: function(center, zoom, layers) { + center = center || this.map.getCenter(); + + var params = OpenLayers.Util.getParameters(this.base); + + // If there's still no center, map is not initialized yet. + // Break out of this function, and simply return the params from the + // base link. + if (center) { + + //zoom + params.zoom = zoom || this.map.getZoom(); + + //lon,lat + var lat = center.lat; + var lon = center.lon; + + if (this.displayProjection) { + var mapPosition = OpenLayers.Projection.transform( + { x: lon, y: lat }, + this.map.getProjectionObject(), + this.displayProjection ); + lon = mapPosition.x; + lat = mapPosition.y; + } + params.lat = Math.round(lat*100000)/100000; + params.lon = Math.round(lon*100000)/100000; + + //layers + layers = layers || this.map.layers; + params.layers = ''; + for (var i=0, len=layers.length; i + */ +OpenLayers.Control.Scale = OpenLayers.Class(OpenLayers.Control, { + + /** + * Parameter: element + * {DOMElement} + */ + element: null, + + /** + * Constructor: OpenLayers.Control.Scale + * + * Parameters: + * element - {DOMElement} + * options - {Object} + */ + initialize: function(element, options) { + OpenLayers.Control.prototype.initialize.apply(this, [options]); + this.element = OpenLayers.Util.getElement(element); + }, + + /** + * Method: draw + * + * Returns: + * {DOMElement} + */ + draw: function() { + OpenLayers.Control.prototype.draw.apply(this, arguments); + if (!this.element) { + this.element = document.createElement("div"); + this.div.appendChild(this.element); + } + this.map.events.register( 'moveend', this, this.updateScale); + this.updateScale(); + return this.div; + }, + + /** + * Method: updateScale + */ + updateScale: function() { + var scale = this.map.getScale(); + if (!scale) { + return; + } + + if (scale >= 9500 && scale <= 950000) { + scale = Math.round(scale / 1000) + "K"; + } else if (scale >= 950000) { + scale = Math.round(scale / 1000000) + "M"; + } else { + scale = Math.round(scale); + } + + this.element.innerHTML = OpenLayers.i18n("scale", {'scaleDenom':scale}); + }, + + CLASS_NAME: "OpenLayers.Control.Scale" +}); + diff --git a/openlayers/lib/OpenLayers/Control/ScaleLine.js b/openlayers/lib/OpenLayers/Control/ScaleLine.js new file mode 100644 index 0000000..432dd66 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/ScaleLine.js @@ -0,0 +1,208 @@ +/* Copyright (c) 2006-2007 MetaCarta, Inc., published under a modified BSD license. + * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt + * for the full text of the license. */ + +/** + * @requires OpenLayers/Control.js + */ + +/** + * Class: OpenLayers.Control.ScaleLine + * The ScaleLine displays a small line indicator representing the current + * map scale on the map. By default it is drawn in the lower left corner of + * the map. + * + * Inherits from: + * - + * + * Is a very close copy of: + * - + */ +OpenLayers.Control.ScaleLine = OpenLayers.Class(OpenLayers.Control, { + + /** + * Property: maxWidth + * {Integer} Maximum width of the scale line in pixels. Default is 100. + */ + maxWidth: 100, + + /** + * Property: topOutUnits + * {String} Units for zoomed out on top bar. Default is km. + */ + topOutUnits: "km", + + /** + * Property: topInUnits + * {String} Units for zoomed in on top bar. Default is m. + */ + topInUnits: "m", + + /** + * Property: bottomOutUnits + * {String} Units for zoomed out on bottom bar. Default is mi. + */ + bottomOutUnits: "mi", + + /** + * Property: bottomInUnits + * {String} Units for zoomed in on bottom bar. Default is ft. + */ + bottomInUnits: "ft", + + /** + * Property: eTop + * {DOMElement} + */ + eTop: null, + + /** + * Property: eBottom + * {DOMElement} + */ + eBottom:null, + + /** + * Constructor: OpenLayers.Control.ScaleLine + * Create a new scale line control. + * + * Parameters: + * options - {Object} An optional object whose properties will be used + * to extend the control. + */ + initialize: function(options) { + OpenLayers.Control.prototype.initialize.apply(this, [options]); + }, + + /** + * Method: draw + * + * Returns: + * {DOMElement} + */ + draw: function() { + OpenLayers.Control.prototype.draw.apply(this, arguments); + if (!this.eTop) { + this.div.style.display = "block"; + this.div.style.position = "absolute"; + + // stick in the top bar + this.eTop = document.createElement("div"); + this.eTop.className = this.displayClass + "Top"; + var theLen = this.topInUnits.length; + this.div.appendChild(this.eTop); + if((this.topOutUnits == "") || (this.topInUnits == "")) { + this.eTop.style.visibility = "hidden"; + } else { + this.eTop.style.visibility = "visible"; + } + + // and the bottom bar + this.eBottom = document.createElement("div"); + this.eBottom.className = this.displayClass + "Bottom"; + this.div.appendChild(this.eBottom); + if((this.bottomOutUnits == "") || (this.bottomInUnits == "")) { + this.eBottom.style.visibility = "hidden"; + } else { + this.eBottom.style.visibility = "visible"; + } + } + this.map.events.register('moveend', this, this.update); + this.update(); + return this.div; + }, + + /** + * Method: getBarLen + * Given a number, round it down to the nearest 1,2,5 times a power of 10. + * That seems a fairly useful set of number groups to use. + * + * Parameters: + * maxLen - {float} the number we're rounding down from + * + * Returns: + * {Float} the rounded number (less than or equal to maxLen) + */ + getBarLen: function(maxLen) { + // nearest power of 10 lower than maxLen + var digits = parseInt(Math.log(maxLen) / Math.log(10)); + var pow10 = Math.pow(10, digits); + + // ok, find first character + var firstChar = parseInt(maxLen / pow10); + + // right, put it into the correct bracket + var barLen; + if(firstChar > 5) { + barLen = 5; + } else if(firstChar > 2) { + barLen = 2; + } else { + barLen = 1; + } + + // scale it up the correct power of 10 + return barLen * pow10; + }, + + /** + * Method: update + * Update the size of the bars, and the labels they contain. + */ + update: function() { + var res = this.map.getResolution(); + if (!res) { + return; + } + + var curMapUnits = this.map.getUnits(); + var inches = OpenLayers.INCHES_PER_UNIT; + + // convert maxWidth to map units + var maxSizeData = this.maxWidth * res * inches[curMapUnits]; + + // decide whether to use large or small scale units + var topUnits; + var bottomUnits; + if(maxSizeData > 100000) { + topUnits = this.topOutUnits; + bottomUnits = this.bottomOutUnits; + } else { + topUnits = this.topInUnits; + bottomUnits = this.bottomInUnits; + } + + // and to map units units + var topMax = maxSizeData / inches[topUnits]; + var bottomMax = maxSizeData / inches[bottomUnits]; + + // now trim this down to useful block length + var topRounded = this.getBarLen(topMax); + var bottomRounded = this.getBarLen(bottomMax); + + // and back to display units + topMax = topRounded / inches[curMapUnits] * inches[topUnits]; + bottomMax = bottomRounded / inches[curMapUnits] * inches[bottomUnits]; + + // and to pixel units + var topPx = topMax / res; + var bottomPx = bottomMax / res; + + // now set the pixel widths + // and the values inside them + + if (this.eBottom.style.visibility == "visible"){ + this.eBottom.style.width = Math.round(bottomPx) + "px"; + this.eBottom.innerHTML = bottomRounded + " " + bottomUnits ; + } + + if (this.eTop.style.visibility == "visible"){ + this.eTop.style.width = Math.round(topPx) + "px"; + this.eTop.innerHTML = topRounded + " " + topUnits; + } + + }, + + CLASS_NAME: "OpenLayers.Control.ScaleLine" +}); + diff --git a/openlayers/lib/OpenLayers/Control/SelectFeature.js b/openlayers/lib/OpenLayers/Control/SelectFeature.js new file mode 100644 index 0000000..d0772df --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/SelectFeature.js @@ -0,0 +1,562 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Control.js + * @requires OpenLayers/Feature/Vector.js + * @requires OpenLayers/Handler/Feature.js + * @requires OpenLayers/Layer/Vector/RootContainer.js + */ + +/** + * Class: OpenLayers.Control.SelectFeature + * The SelectFeature control selects vector features from a given layer on + * click or hover. + * + * Inherits from: + * - + */ +OpenLayers.Control.SelectFeature = OpenLayers.Class(OpenLayers.Control, { + + /** + * Constant: EVENT_TYPES + * + * Supported event types: + * - *beforefeaturehighlighted* Triggered before a feature is highlighted + * - *featurehighlighted* Triggered when a feature is highlighted + * - *featureunhighlighted* Triggered when a feature is unhighlighted + */ + EVENT_TYPES: ["beforefeaturehighlighted", "featurehighlighted", "featureunhighlighted"], + + /** + * Property: multipleKey + * {String} An event modifier ('altKey' or 'shiftKey') that temporarily sets + * the property to true. Default is null. + */ + multipleKey: null, + + /** + * Property: toggleKey + * {String} An event modifier ('altKey' or 'shiftKey') that temporarily sets + * the property to true. Default is null. + */ + toggleKey: null, + + /** + * APIProperty: multiple + * {Boolean} Allow selection of multiple geometries. Default is false. + */ + multiple: false, + + /** + * APIProperty: clickout + * {Boolean} Unselect features when clicking outside any feature. + * Default is true. + */ + clickout: true, + + /** + * APIProperty: toggle + * {Boolean} Unselect a selected feature on click. Default is false. Only + * has meaning if hover is false. + */ + toggle: false, + + /** + * APIProperty: hover + * {Boolean} Select on mouse over and deselect on mouse out. If true, this + * ignores clicks and only listens to mouse moves. + */ + hover: false, + + /** + * APIProperty: highlightOnly + * {Boolean} If true do not actually select features (i.e. place them in the + * layer's selected features array), just highlight them. This property has + * no effect if hover is false. Defaults to false. + */ + highlightOnly: false, + + /** + * APIProperty: box + * {Boolean} Allow feature selection by drawing a box. + */ + box: false, + + /** + * Property: onBeforeSelect + * {Function} Optional function to be called before a feature is selected. + * The function should expect to be called with a feature. + */ + onBeforeSelect: function() {}, + + /** + * APIProperty: onSelect + * {Function} Optional function to be called when a feature is selected. + * The function should expect to be called with a feature. + */ + onSelect: function() {}, + + /** + * APIProperty: onUnselect + * {Function} Optional function to be called when a feature is unselected. + * The function should expect to be called with a feature. + */ + onUnselect: function() {}, + + /** + * Property: scope + * {Object} The scope to use with the onBeforeSelect, onSelect, onUnselect + * callbacks. If null the scope will be this control. + */ + scope: null, + + /** + * APIProperty: geometryTypes + * {Array(String)} To restrict selecting to a limited set of geometry types, + * send a list of strings corresponding to the geometry class names. + */ + geometryTypes: null, + + /** + * Property: layer + * {} The vector layer with a common renderer + * root for all layers this control is configured with (if an array of + * layers was passed to the constructor), or the vector layer the control + * was configured with (if a single layer was passed to the constructor). + */ + layer: null, + + /** + * Property: layers + * {Array(} The layers this control will work on, + * or null if the control was configured with a single layer + */ + layers: null, + + /** + * APIProperty: callbacks + * {Object} The functions that are sent to the handlers.feature for callback + */ + callbacks: null, + + /** + * APIProperty: selectStyle + * {Object} Hash of styles + */ + selectStyle: null, + + /** + * Property: renderIntent + * {String} key used to retrieve the select style from the layer's + * style map. + */ + renderIntent: "select", + + /** + * Property: handlers + * {Object} Object with references to multiple + * instances. + */ + handlers: null, + + /** + * Constructor: OpenLayers.Control.SelectFeature + * Create a new control for selecting features. + * + * Parameters: + * layers - {}, or an array of vector layers. The + * layer(s) this control will select features from. + * options - {Object} + */ + initialize: function(layers, options) { + // concatenate events specific to this control with those from the base + this.EVENT_TYPES = + OpenLayers.Control.SelectFeature.prototype.EVENT_TYPES.concat( + OpenLayers.Control.prototype.EVENT_TYPES + ); + OpenLayers.Control.prototype.initialize.apply(this, [options]); + + if(this.scope === null) { + this.scope = this; + } + if(layers instanceof Array) { + this.layers = layers; + this.layer = new OpenLayers.Layer.Vector.RootContainer( + this.id + "_container", { + layers: layers + } + ); + } else { + this.layer = layers; + } + var callbacks = { + click: this.clickFeature, + clickout: this.clickoutFeature + }; + if (this.hover) { + callbacks.over = this.overFeature; + callbacks.out = this.outFeature; + } + + this.callbacks = OpenLayers.Util.extend(callbacks, this.callbacks); + this.handlers = { + feature: new OpenLayers.Handler.Feature( + this, this.layer, this.callbacks, + {geometryTypes: this.geometryTypes} + ) + }; + + if (this.box) { + this.handlers.box = new OpenLayers.Handler.Box( + this, {done: this.selectBox}, + {boxDivClassName: "olHandlerBoxSelectFeature"} + ); + } + }, + + /** + * Method: destroy + */ + destroy: function() { + OpenLayers.Control.prototype.destroy.apply(this, arguments); + if(this.layers) { + this.layer.destroy(); + } + }, + + /** + * Method: activate + * Activates the control. + * + * Returns: + * {Boolean} The control was effectively activated. + */ + activate: function () { + if (!this.active) { + if(this.layers) { + this.map.addLayer(this.layer); + } + this.handlers.feature.activate(); + if(this.box && this.handlers.box) { + this.handlers.box.activate(); + } + } + return OpenLayers.Control.prototype.activate.apply( + this, arguments + ); + }, + + /** + * Method: deactivate + * Deactivates the control. + * + * Returns: + * {Boolean} The control was effectively deactivated. + */ + deactivate: function () { + if (this.active) { + this.handlers.feature.deactivate(); + if(this.handlers.box) { + this.handlers.box.deactivate(); + } + if(this.layers) { + this.map.removeLayer(this.layer); + } + } + return OpenLayers.Control.prototype.deactivate.apply( + this, arguments + ); + }, + + /** + * Method: unselectAll + * Unselect all selected features. To unselect all except for a single + * feature, set the options.except property to the feature. + * + * Parameters: + * options - {Object} Optional configuration object. + */ + unselectAll: function(options) { + // we'll want an option to supress notification here + var layers = this.layers || [this.layer]; + var layer, feature; + for(var l=0; l=0; --i) { + feature = layer.selectedFeatures[i]; + if(!options || options.except != feature) { + this.unselect(feature); + } + } + } + }, + + /** + * Method: clickFeature + * Called on click in a feature + * Only responds if this.hover is false. + * + * Parameters: + * feature - {} + */ + clickFeature: function(feature) { + if(!this.hover) { + var selected = (OpenLayers.Util.indexOf( + feature.layer.selectedFeatures, feature) > -1); + if(selected) { + if(this.toggleSelect()) { + this.unselect(feature); + } else if(!this.multipleSelect()) { + this.unselectAll({except: feature}); + } + } else { + if(!this.multipleSelect()) { + this.unselectAll({except: feature}); + } + this.select(feature); + } + } + }, + + /** + * Method: multipleSelect + * Allow for multiple selected features based on property and + * event modifier. + * + * Returns: + * {Boolean} Allow for multiple selected features. + */ + multipleSelect: function() { + return this.multiple || (this.handlers.feature.evt && + this.handlers.feature.evt[this.multipleKey]); + }, + + /** + * Method: toggleSelect + * Event should toggle the selected state of a feature based on + * property and event modifier. + * + * Returns: + * {Boolean} Toggle the selected state of a feature. + */ + toggleSelect: function() { + return this.toggle || (this.handlers.feature.evt && + this.handlers.feature.evt[this.toggleKey]); + }, + + /** + * Method: clickoutFeature + * Called on click outside a previously clicked (selected) feature. + * Only responds if this.hover is false. + * + * Parameters: + * feature - {} + */ + clickoutFeature: function(feature) { + if(!this.hover && this.clickout) { + this.unselectAll(); + } + }, + + /** + * Method: overFeature + * Called on over a feature. + * Only responds if this.hover is true. + * + * Parameters: + * feature - {} + */ + overFeature: function(feature) { + var layer = feature.layer; + if(this.hover) { + if(this.highlightOnly) { + this.highlight(feature); + } else if(OpenLayers.Util.indexOf( + layer.selectedFeatures, feature) == -1) { + this.select(feature); + } + } + }, + + /** + * Method: outFeature + * Called on out of a selected feature. + * Only responds if this.hover is true. + * + * Parameters: + * feature - {} + */ + outFeature: function(feature) { + if(this.hover) { + if(this.highlightOnly) { + // we do nothing if we're not the last highlighter of the + // feature + if(feature._lastHighlighter == this.id) { + // if another select control had highlighted the feature before + // we did it ourself then we use that control to highlight the + // feature as it was before we highlighted it, else we just + // unhighlight it + if(feature._prevHighlighter && + feature._prevHighlighter != this.id) { + delete feature._lastHighlighter; + var control = this.map.getControl( + feature._prevHighlighter); + if(control) { + control.highlight(feature); + } + } else { + this.unhighlight(feature); + } + } + } else { + this.unselect(feature); + } + } + }, + + /** + * Method: highlight + * Redraw feature with the select style. + * + * Parameters: + * feature - {} + */ + highlight: function(feature) { + var layer = feature.layer; + var cont = this.events.triggerEvent("beforefeaturehighlighted", { + feature : feature + }); + if(cont !== false) { + feature._prevHighlighter = feature._lastHighlighter; + feature._lastHighlighter = this.id; + var style = this.selectStyle || this.renderIntent; + layer.drawFeature(feature, style); + this.events.triggerEvent("featurehighlighted", {feature : feature}); + } + }, + + /** + * Method: unhighlight + * Redraw feature with the "default" style + * + * Parameters: + * feature - {} + */ + unhighlight: function(feature) { + var layer = feature.layer; + feature._lastHighlighter = feature._prevHighlighter; + delete feature._prevHighlighter; + layer.drawFeature(feature, feature.style || feature.layer.style || + "default"); + this.events.triggerEvent("featureunhighlighted", {feature : feature}); + }, + + /** + * Method: select + * Add feature to the layer's selectedFeature array, render the feature as + * selected, and call the onSelect function. + * + * Parameters: + * feature - {} + */ + select: function(feature) { + var cont = this.onBeforeSelect.call(this.scope, feature); + var layer = feature.layer; + if(cont !== false) { + cont = layer.events.triggerEvent("beforefeatureselected", { + feature: feature + }); + if(cont !== false) { + layer.selectedFeatures.push(feature); + this.highlight(feature); + layer.events.triggerEvent("featureselected", {feature: feature}); + this.onSelect.call(this.scope, feature); + } + } + }, + + /** + * Method: unselect + * Remove feature from the layer's selectedFeature array, render the feature as + * normal, and call the onUnselect function. + * + * Parameters: + * feature - {} + */ + unselect: function(feature) { + var layer = feature.layer; + // Store feature style for restoration later + this.unhighlight(feature); + OpenLayers.Util.removeItem(layer.selectedFeatures, feature); + layer.events.triggerEvent("featureunselected", {feature: feature}); + this.onUnselect.call(this.scope, feature); + }, + + /** + * Method: selectBox + * Callback from the handlers.box set up when selection is true + * on. + * + * Parameters: + * position - { || } + */ + selectBox: function(position) { + if (position instanceof OpenLayers.Bounds) { + var minXY = this.map.getLonLatFromPixel( + new OpenLayers.Pixel(position.left, position.bottom) + ); + var maxXY = this.map.getLonLatFromPixel( + new OpenLayers.Pixel(position.right, position.top) + ); + var bounds = new OpenLayers.Bounds( + minXY.lon, minXY.lat, maxXY.lon, maxXY.lat + ); + + // if multiple is false, first deselect currently selected features + if (!this.multipleSelect()) { + this.unselectAll(); + } + + // because we're using a box, we consider we want multiple selection + var prevMultiple = this.multiple; + this.multiple = true; + var layers = this.layers || [this.layer]; + var layer; + for(var l=0; l -1) { + if (bounds.toGeometry().intersects(feature.geometry)) { + if (OpenLayers.Util.indexOf(layer.selectedFeatures, feature) == -1) { + this.select(feature); + } + } + } + } + } + this.multiple = prevMultiple; + } + }, + + /** + * Method: setMap + * Set the map property for the control. + * + * Parameters: + * map - {} + */ + setMap: function(map) { + this.handlers.feature.setMap(map); + if (this.box) { + this.handlers.box.setMap(map); + } + OpenLayers.Control.prototype.setMap.apply(this, arguments); + }, + + CLASS_NAME: "OpenLayers.Control.SelectFeature" +}); diff --git a/openlayers/lib/OpenLayers/Control/Snapping.js b/openlayers/lib/OpenLayers/Control/Snapping.js new file mode 100644 index 0000000..98307d9 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/Snapping.js @@ -0,0 +1,546 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control.js + * @requires OpenLayers/Layer/Vector.js + */ + +/** + * Class: OpenLayers.Control.Snapping + * Acts as a snapping agent while editing vector features. + * + * Inherits from: + * - + */ +OpenLayers.Control.Snapping = OpenLayers.Class(OpenLayers.Control, { + + /** + * Constant: EVENT_TYPES + * {Array(String)} Supported application event types. Register a listener + * for a particular event with the following syntax: + * (code) + * control.events.register(type, obj, listener); + * (end) + * + * Listeners will be called with a reference to an event object. The + * properties of this event depends on exactly what happened. + * + * Supported control event types (in addition to those from ): + * beforesnap - Triggered before a snap occurs. Listeners receive an + * event object with *point*, *x*, *y*, *distance*, *layer*, and + * *snapType* properties. The point property will be original point + * geometry considered for snapping. The x and y properties represent + * coordinates the point will receive. The distance is the distance + * of the snap. The layer is the target layer. The snapType property + * will be one of "node", "vertex", or "edge". Return false to stop + * snapping from occurring. + * snap - Triggered when a snap occurs. Listeners receive an event with + * *point*, *snapType*, *layer*, and *distance* properties. The point + * will be the location snapped to. The snapType will be one of "node", + * "vertex", or "edge". The layer will be the target layer. The + * distance will be the distance of the snap in map units. + * unsnap - Triggered when a vertex is unsnapped. Listeners receive an + * event with a *point* property. + */ + EVENT_TYPES: ["beforesnap", "snap", "unsnap"], + + /** + * CONSTANT: DEFAULTS + * Default target properties. + */ + DEFAULTS: { + tolerance: 10, + node: true, + edge: true, + vertex: true + }, + + /** + * Property: greedy + * {Boolean} Snap to closest feature in first layer with an eligible + * feature. Default is true. + */ + greedy: true, + + /** + * Property: precedence + * {Array} List representing precedence of different snapping types. + * Default is "node", "vertex", "edge". + */ + precedence: ["node", "vertex", "edge"], + + /** + * Property: resolution + * {Float} The map resolution for the previously considered snap. + */ + resolution: null, + + /** + * Property: geoToleranceCache + * {Object} A cache of geo-tolerances. Tolerance values (in map units) are + * calculated when the map resolution changes. + */ + geoToleranceCache: null, + + /** + * Property: layer + * {} The current editable layer. Set at + * construction or after construction with . + */ + layer: null, + + /** + * Property: feature + * {} The current editable feature. + */ + feature: null, + + /** + * Property: point + * {} The currently snapped vertex. + */ + point: null, + + /** + * Constructor: OpenLayers.Control.Snapping + * Creates a new snapping control. A control is constructed with an editable + * layer and a set of configuration objects for target layers. While the + * control is active, dragging vertices while drawing new features or + * modifying existing features on the editable layer will engage + * snapping to features on the target layers. Whether a vertex snaps to + * a feature on a target layer depends on the target layer configuration. + * + * Parameters: + * options - {Object} An object containing all configuration properties for + * the control. + * + * Valid options: + * layer - {OpenLayers.Layer.Vector} The editable layer. Features from this + * layer that are digitized or modified may have vertices snapped to + * features from any of the target layers. + * targets - {Array(Object | OpenLayers.Layer.Vector)} A list of objects for + * configuring target layers. See valid properties of the target + * objects below. If the items in the targets list are vector layers + * (instead of configuration objects), the defaults from the + * property will apply. The editable layer itself may be a target + * layer - allowing newly created or edited features to be snapped to + * existing features from the same layer. If no targets are provided + * the layer given in the constructor (as ) will become the + * initial target. + * defaults - {Object} An object with default properties to be applied + * to all target objects. + * greedy - {Boolean} Snap to closest feature in first target layer that + * applies. Default is true. If false, all features in all target + * layers will be checked and the closest feature in all target layers + * will be chosen. The greedy property determines if the order of the + * target layers is significant. By default, the order of the target + * layers is significant where layers earlier in the target layer list + * have precedence over layers later in the list. Within a single + * layer, the closest feature is always chosen for snapping. This + * property only determines whether the search for a closer feature + * continues after an eligible feature is found in a target layer. + * + * Valid target properties: + * layer - {OpenLayers.Layer.Vector} A target layer. Features from this + * layer will be eligible to act as snapping target for the editable + * layer. + * tolerance - {Float} The distance (in pixels) at which snapping may occur. + * Default is 10. + * node - {Boolean} Snap to nodes (first or last point in a geometry) in + * target layer. Default is true. + * nodeTolerance - {Float} Optional distance at which snapping may occur + * for nodes specifically. If none is provided, will be + * used. + * vertex - {Boolean} Snap to vertices in target layer. Default is true. + * vertexTolerance - {Float} Optional distance at which snapping may occur + * for vertices specifically. If none is provided, will be + * used. + * edge - {Boolean} Snap to edges in target layer. Default is true. + * edgeTolerance - {Float} Optional distance at which snapping may occur + * for edges specifically. If none is provided, will be + * used. + * filter - {OpenLayers.Filter} Optional filter to evaluate to determine if + * feature is eligible for snapping. If filter evaluates to true for a + * target feature a vertex may be snapped to the feature. + */ + initialize: function(options) { + // concatenate events specific to measure with those from the base + Array.prototype.push.apply( + this.EVENT_TYPES, OpenLayers.Control.prototype.EVENT_TYPES + ); + OpenLayers.Control.prototype.initialize.apply(this, [options]); + this.options = options || {}; // TODO: this could be done by the super + + // set the editable layer if provided + if(this.options.layer) { + this.setLayer(this.options.layer); + } + // configure target layers + var defaults = OpenLayers.Util.extend({}, this.options.defaults); + this.defaults = OpenLayers.Util.applyDefaults(defaults, this.DEFAULTS); + this.setTargets(this.options.targets); + if(this.targets.length === 0 && this.layer) { + this.addTargetLayer(this.layer); + } + + this.geoToleranceCache = {}; + }, + + /** + * APIMethod: setLayer + * Set the editable layer. Call the setLayer method if the editable layer + * changes and the same control should be used on a new editable layer. + * If the control is already active, it will be active after the new + * layer is set. + * + * Parameters: + * layer - {OpenLayers.Layer.Vector} The new editable layer. + */ + setLayer: function(layer) { + if(this.active) { + this.deactivate(); + this.layer = layer; + this.activate(); + } else { + this.layer = layer; + } + }, + + /** + * Method: setTargets + * Set the targets for the snapping agent. + * + * Parameters: + * targets - {Array} An array of target configs or target layers. + */ + setTargets: function(targets) { + this.targets = []; + if(targets && targets.length) { + var target; + for(var i=0, len=targets.length; i} A target layer. + */ + addTargetLayer: function(layer) { + this.addTarget({layer: layer}); + }, + + /** + * Method: addTarget + * Add a configured target layer. + * + * Parameters: + * target - {Object} A target config. + */ + addTarget: function(target) { + target = OpenLayers.Util.applyDefaults(target, this.defaults); + target.nodeTolerance = target.nodeTolerance || target.tolerance; + target.vertexTolerance = target.vertexTolerance || target.tolerance; + target.edgeTolerance = target.edgeTolerance || target.tolerance; + this.targets.push(target); + }, + + /** + * Method: removeTargetLayer + * Remove a target layer. + * + * Parameters: + * layer - {} The target layer to remove. + */ + removeTargetLayer: function(layer) { + var target; + for(var i=this.targets.length-1; i>=0; --i) { + target = this.targets[i]; + if(target.layer === layer) { + this.removeTarget(target); + } + } + }, + + /** + * Method: removeTarget + * Remove a target. + * + * Parameters: + * target - {Object} A target config. + * + * Returns: + * {Array} The targets array. + */ + removeTarget: function(target) { + return OpenLayers.Util.removeItem(this.targets, target); + }, + + /** + * APIMethod: activate + * Activate the control. Activating the control registers listeners for + * editing related events so that during feature creation and + * modification, moving vertices will trigger snapping. + */ + activate: function() { + var activated = OpenLayers.Control.prototype.activate.call(this); + if(activated) { + if(this.layer && this.layer.events) { + this.layer.events.on({ + sketchstarted: this.onSketchModified, + sketchmodified: this.onSketchModified, + vertexmodified: this.onVertexModified, + scope: this + }); + } + } + return activated; + }, + + /** + * APIMethod: deactivate + * Deactivate the control. Deactivating the control unregisters listeners + * so feature editing may proceed without engaging the snapping agent. + */ + deactivate: function() { + var deactivated = OpenLayers.Control.prototype.deactivate.call(this); + if(deactivated) { + if(this.layer && this.layer.events) { + this.layer.events.un({ + sketchstarted: this.onSketchModified, + sketchmodified: this.onSketchModified, + vertexmodified: this.onVertexModified, + scope: this + }); + } + } + this.feature = null; + this.point = null; + return deactivated; + }, + + /** + * Method: onSketchModified + * Registered as a listener for the sketchmodified event on the editable + * layer. + * + * Parameters: + * event - {Object} The sketch modified event. + */ + onSketchModified: function(event) { + this.feature = event.feature; + this.considerSnapping(event.vertex, event.vertex); + }, + + /** + * Method: onVertexModified + * Registered as a listener for the vertexmodified event on the editable + * layer. + * + * Parameters: + * event - {Object} The vertex modified event. + */ + onVertexModified: function(event) { + this.feature = event.feature; + var loc = this.layer.map.getLonLatFromViewPortPx(event.pixel); + this.considerSnapping( + event.vertex, new OpenLayers.Geometry.Point(loc.lon, loc.lat) + ); + }, + + /** + * Method: considerSnapping + * + * Parameters: + * point - {} The location of the mouse in map + * coords. + */ + considerSnapping: function(point, loc) { + var best = { + rank: Number.POSITIVE_INFINITY, + dist: Number.POSITIVE_INFINITY, + x: null, y: null + }; + var snapped = false; + var result, target; + for(var i=0, len=this.targets.length; i} The location of the mouse in map + * coords. + * + * Returns: + * {Object} A result object with rank, dist, x, and y properties. + * Returns null if candidate is not eligible for snapping. + */ + testTarget: function(target, loc) { + var tolerance = { + node: this.getGeoTolerance(target.nodeTolerance), + vertex: this.getGeoTolerance(target.vertexTolerance), + edge: this.getGeoTolerance(target.edgeTolerance) + }; + // this could be cached if we don't support setting tolerance values directly + var maxTolerance = Math.max( + tolerance.node, tolerance.vertex, tolerance.edge + ); + var result = { + rank: Number.POSITIVE_INFINITY, dist: Number.POSITIVE_INFINITY + }; + var eligible = false; + var features = target.layer.features; + var feature, type, vertices, vertex, closest, dist, found; + var numTypes = this.precedence.length; + var ll = new OpenLayers.LonLat(loc.x, loc.y); + for(var i=0, len=features.length; i when the map resolution + * has not changed. + * + * Parameters: + * tolerance - {Number} A tolerance value in pixels. + * + * Returns: + * {Number} A tolerance value in map units. + */ + getGeoTolerance: function(tolerance) { + var resolution = this.layer.map.getResolution(); + if(resolution !== this.resolution) { + this.resolution = resolution; + this.geoToleranceCache = {}; + } + var geoTolerance = this.geoToleranceCache[tolerance]; + if(geoTolerance === undefined) { + geoTolerance = tolerance * resolution; + this.geoToleranceCache[tolerance] = geoTolerance; + } + return geoTolerance; + }, + + /** + * Method: destroy + * Clean up the control. + */ + destroy: function() { + if(this.active) { + this.deactivate(); // TODO: this should be handled by the super + } + delete this.layer; + delete this.targets; + OpenLayers.Control.prototype.destroy.call(this); + }, + + CLASS_NAME: "OpenLayers.Control.Snapping" +}); diff --git a/openlayers/lib/OpenLayers/Control/Split.js b/openlayers/lib/OpenLayers/Control/Split.js new file mode 100644 index 0000000..2ccd9c4 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/Split.js @@ -0,0 +1,497 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control.js + * @requires OpenLayers/Handler/Path.js + * @requires OpenLayers/Layer/Vector.js + */ + +/** + * Class: OpenLayers.Control.Split + * Acts as a split feature agent while editing vector features. + * + * Inherits from: + * - + */ +OpenLayers.Control.Split = OpenLayers.Class(OpenLayers.Control, { + + /** + * Constant: EVENT_TYPES + * {Array(String)} Supported application event types. Register a listener + * for a particular event with the following syntax: + * (code) + * control.events.register(type, obj, listener); + * (end) + * + * Listeners will be called with a reference to an event object. The + * properties of this event depends on exactly what happened. + * + * Supported control event types (in addition to those from ): + * beforesplit - Triggered before a split occurs. Listeners receive an + * event object with *source* and *target* properties. + * split - Triggered when a split occurs. Listeners receive an event with + * an *original* property and a *features* property. The original + * is a reference to the target feature that the sketch or modified + * feature intersects. The features property is a list of all features + * that result from this single split. This event is triggered before + * the resulting features are added to the layer (while the layer still + * has a reference to the original). + * aftersplit - Triggered after all splits resulting from a single sketch + * or feature modification have occurred. The original features + * have been destroyed and features that result from the split + * have already been added to the layer. Listeners receive an event + * with a *source* and *features* property. The source references the + * sketch or modified feature used as a splitter. The features + * property is a list of all resulting features. + */ + EVENT_TYPES: ["beforesplit", "split", "aftersplit"], + + /** + * APIProperty: layer + * {} The target layer with features to be split. + * Set at construction or after construction with . + */ + layer: null, + + /** + * Property: source + * {} Optional source layer. Any newly created + * or modified features from this layer will be used to split features + * on the target layer. If not provided, a temporary sketch layer will + * be created. + */ + source: null, + + /** + * Property: sourceOptions + * {Options} If a temporary sketch layer is created, these layer options + * will be applied. + */ + sourceOptions: null, + + /** + * APIProperty: tolerance + * {Number} Distance between the calculated intersection and a vertex on + * the source geometry below which the existing vertex will be used + * for the split. Default is null. + */ + tolerance: null, + + /** + * APIProperty: edge + * {Boolean} Allow splits given intersection of edges only. Default is + * true. If false, a vertex on the source must be within the + * distance of the calculated intersection for a split + * to occur. + */ + edge: true, + + /** + * APIProperty: deferDelete + * {Boolean} Instead of removing features from the layer, set feature + * states of split features to DELETE. This assumes a save strategy + * or other component is in charge of removing features from the + * layer. Default is false. If false, split features will be + * immediately deleted from the layer. + */ + deferDelete: false, + + /** + * APIProperty: mutual + * {Boolean} If source and target layers are the same, split source + * features and target features where they intersect. Default is + * true. If false, only target features will be split. + */ + mutual: true, + + /** + * APIProperty: targetFilter + * {OpenLayers.Filter} Optional filter that will be evaluated + * to determine if a feature from the target layer is eligible for + * splitting. + */ + targetFilter: null, + + /** + * APIProperty: sourceFilter + * {OpenLayers.Filter} Optional filter that will be evaluated + * to determine if a feature from the target layer is eligible for + * splitting. + */ + sourceFilter: null, + + /** + * Property: handler + * {} The temporary sketch handler created if + * no source layer is provided. + */ + handler: null, + + /** + * Constructor: OpenLayers.Control.Split + * Creates a new split control. A control is constructed with a target + * layer and an optional source layer. While the control is active, + * creating new features or modifying existing features on the source + * layer will result in splitting any eligible features on the target + * layer. If no source layer is provided, a temporary sketch layer will + * be created to create lines for splitting features on the target. + * + * Parameters: + * options - {Object} An object containing all configuration properties for + * the control. + * + * Valid options: + * layer - {OpenLayers.Layer.Vector} The target layer. Features from this + * layer will be split by new or modified features on the source layer + * or temporary sketch layer. + * source - {OpenLayers.Layer.Vector} Optional source layer. If provided + * newly created features or modified features will be used to split + * features on the target layer. If not provided, a temporary sketch + * layer will be created for drawing lines. + * tolerance - {Number} Optional value for the distance between a source + * vertex and the calculated intersection below which the split will + * occur at the vertex. + * edge - {Boolean} Allow splits given intersection of edges only. Default + * is true. If false, a vertex on the source must be within the + * distance of the calculated intersection for a split + * to occur. + * mutual - {Boolean} If source and target are the same, split source + * features and target features where they intersect. Default is + * true. If false, only target features will be split. + * targetFilter - {OpenLayers.Filter} Optional filter that will be evaluated + * to determine if a feature from the target layer is eligible for + * splitting. + * sourceFilter - {OpenLayers.Filter} Optional filter that will be evaluated + * to determine if a feature from the target layer is eligible for + * splitting. + */ + initialize: function(options) { + // concatenate events specific to measure with those from the base + Array.prototype.push.apply( + this.EVENT_TYPES, OpenLayers.Control.prototype.EVENT_TYPES + ); + OpenLayers.Control.prototype.initialize.apply(this, [options]); + this.options = options || {}; // TODO: this could be done by the super + + // set the source layer if provided + if(this.options.source) { + this.setSource(this.options.source); + } + }, + + /** + * APIMethod: setSource + * Set the source layer for edits layer. + * + * Parameters: + * layer - {OpenLayers.Layer.Vector} The new source layer layer. If + * null, a temporary sketch layer will be created. + */ + setSource: function(layer) { + if(this.active) { + this.deactivate(); + if(this.handler) { + this.handler.destroy(); + delete this.handler; + } + this.source = layer; + this.activate(); + } else { + this.source = layer; + } + }, + + /** + * APIMethod: activate + * Activate the control. Activating the control registers listeners for + * editing related events so that during feature creation and + * modification, features in the target will be considered for + * splitting. + */ + activate: function() { + var activated = OpenLayers.Control.prototype.activate.call(this); + if(activated) { + if(!this.source) { + if(!this.handler) { + this.handler = new OpenLayers.Handler.Path(this, + {done: function(geometry) { + this.onSketchComplete({ + feature: new OpenLayers.Feature.Vector(geometry) + }); + }}, + {layerOptions: this.sourceOptions} + ); + } + this.handler.activate(); + } else if(this.source.events) { + this.source.events.on({ + sketchcomplete: this.onSketchComplete, + afterfeaturemodified: this.afterFeatureModified, + scope: this + }); + } + } + return activated; + }, + + /** + * APIMethod: deactivate + * Deactivate the control. Deactivating the control unregisters listeners + * so feature editing may proceed without engaging the split agent. + */ + deactivate: function() { + var deactivated = OpenLayers.Control.prototype.deactivate.call(this); + if(deactivated) { + if(this.source && this.source.events) { + this.layer.events.un({ + sketchcomplete: this.onSketchComplete, + afterfeaturemodified: this.afterFeatureModified, + scope: this + }); + } + } + return deactivated; + }, + + /** + * Method: onSketchComplete + * Registered as a listener for the sketchcomplete event on the editable + * layer. + * + * Parameters: + * event - {Object} The sketch complete event. + * + * Returns: + * {Boolean} Stop the sketch from being added to the layer (it has been + * split). + */ + onSketchComplete: function(event) { + this.feature = null; + return !this.considerSplit(event.feature); + }, + + /** + * Method: afterFeatureModified + * Registered as a listener for the afterfeaturemodified event on the + * editable layer. + * + * Parameters: + * event - {Object} The after feature modified event. + */ + afterFeatureModified: function(event) { + if(event.modified) { + var feature = event.feature; + if(feature.geometry instanceof OpenLayers.Geometry.LineString || + feature.geometry instanceof OpenLayers.Geometry.MultiLineString) { + this.feature = event.feature; + this.considerSplit(event.feature); + } + } + }, + + /** + * Method: removeByGeometry + * Remove a feature from a list based on the given geometry. + * + * Parameters: + * features - {Array(} A list of features. + * geometry - {} A geometry. + */ + removeByGeometry: function(features, geometry) { + for(var i=0, len=features.length; i} The target feature. + * + * Returns: + * {Boolean} The target is eligible for splitting. + */ + isEligible: function(target) { + return ( + target.state !== OpenLayers.State.DELETE + ) && ( + target.geometry instanceof OpenLayers.Geometry.LineString || + target.geometry instanceof OpenLayers.Geometry.MultiLineString + ) && ( + this.feature !== target + ) && ( + !this.targetFilter || + this.targetFilter.evaluate(target.attributes) + ); + }, + + /** + * Method: considerSplit + * Decide whether or not to split target features with the supplied + * feature. If is true, both the source and target features + * will be split if eligible. + * + * Parameters: + * feature - { 1) { + // splice in new source parts + parts.unshift(j, 1); // add args for splice below + Array.prototype.splice.apply(sourceParts, parts); + j += parts.length - 3; + } + results = results[1]; + } + // handle parts that result from target splitting + if(results.length > 1) { + // splice in new target parts + results.unshift(k, 1); // add args for splice below + Array.prototype.splice.apply(targetParts, results); + k += results.length - 3; + } + } + } + } + } + } + if(targetParts && targetParts.length > 1) { + this.geomsToFeatures(targetFeature, targetParts); + this.events.triggerEvent("split", { + original: targetFeature, + features: targetParts + }); + Array.prototype.push.apply(additions, targetParts); + removals.push(targetFeature); + targetSplit = true; + } + } + } + if(sourceParts && sourceParts.length > 1) { + this.geomsToFeatures(feature, sourceParts); + this.events.triggerEvent("split", { + original: feature, + features: sourceParts + }); + Array.prototype.push.apply(additions, sourceParts); + removals.push(feature); + sourceSplit = true; + } + if(sourceSplit || targetSplit) { + // remove and add feature events are suppressed + // listen for split event on this control instead + if(this.deferDelete) { + // Set state instead of removing. Take care to avoid + // setting delete for features that have not yet been + // inserted - those should be destroyed immediately. + var feat, destroys = []; + for(var i=0, len=removals.length; i} The feature to be cloned. + * geoms - {Array()} List of goemetries. This will + * become a list of new features. + */ + geomsToFeatures: function(feature, geoms) { + var clone = feature.clone(); + delete clone.geometry; + var newFeature; + for(var i=0, len=geoms.length; i + */ +OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, { + + /** + * APIProperty: hover + * {Boolean} Send GetFeatureInfo requests when mouse stops moving. + * Default is false. + */ + hover: false, + + /** + * APIProperty: maxFeatures + * {Integer} Maximum number of features to return from a WMS query. This + * sets the feature_count parameter on WMS GetFeatureInfo + * requests. + */ + maxFeatures: 10, + + /** + * Property: layers + * {Array()} The layers to query for feature info. + * If omitted, all map WMS layers with a url that matches this or + * will be considered. + */ + layers: null, + + /** + * Property: queryVisible + * {Boolean} If true, filter out hidden layers when searching the map for + * layers to query. Default is false. + */ + queryVisible: false, + + /** + * Property: url + * {String} The URL of the WMS service to use. If not provided, the url + * of the first eligible layer will be used. + */ + url: null, + + /** + * Property: layerUrls + * {Array(String)} Optional list of urls for layers that should be queried. + * This can be used when the layer url differs from the url used for + * making GetFeatureInfo requests (in the case of a layer using cached + * tiles). + */ + layerUrls: null, + + /** + * Property: infoFormat + * {String} The mimetype to request from the server + */ + infoFormat: 'text/html', + + /** + * Property: vendorParams + * {Object} Additional parameters that will be added to the request, for + * WMS implementations that support them. This could e.g. look like + * (start code) + * { + * radius: 5 + * } + * (end) + */ + vendorParams: {}, + + /** + * Property: format + * {} A format for parsing GetFeatureInfo responses. + * Default is . + */ + format: null, + + /** + * Property: formatOptions + * {Object} Optional properties to set on the format (if one is not provided + * in the property. + */ + formatOptions: null, + + /** + * APIProperty: handlerOptions + * {Object} Additional options for the handlers used by this control, e.g. + * (start code) + * { + * "click": {delay: 100}, + * "hover": {delay: 300} + * } + * (end) + */ + handlerOptions: null, + + /** + * Property: handler + * {Object} Reference to the for this control + */ + handler: null, + + /** + * Property: hoverRequest + * {} contains the currently running hover request + * (if any). + */ + hoverRequest: null, + + /** + * Constant: EVENT_TYPES + * + * Supported event types (in addition to those from ): + * getfeatureinfo - Triggered when a GetFeatureInfo response is received. + * The event object has a *text* property with the body of the + * response (String), a *features* property with an array of the + * parsed features, an *xy* property with the position of the mouse + * click or hover event that triggered the request, and a *request* + * property with the request itself. + */ + EVENT_TYPES: ["getfeatureinfo"], + + /** + * Constructor: + * + * Parameters: + * options - {Object} + */ + initialize: function(options) { + // concatenate events specific to vector with those from the base + this.EVENT_TYPES = + OpenLayers.Control.WMSGetFeatureInfo.prototype.EVENT_TYPES.concat( + OpenLayers.Control.prototype.EVENT_TYPES + ); + + options = options || {}; + options.handlerOptions = options.handlerOptions || {}; + + OpenLayers.Control.prototype.initialize.apply(this, [options]); + + if(!this.format) { + this.format = new OpenLayers.Format.WMSGetFeatureInfo( + options.formatOptions + ); + } + + if (this.hover) { + this.handler = new OpenLayers.Handler.Hover( + this, { + 'move': this.cancelHover, + 'pause': this.getInfoForHover + }, + OpenLayers.Util.extend(this.handlerOptions.hover || {}, { + 'delay': 250 + })); + } else { + this.handler = new OpenLayers.Handler.Click(this, + {click: this.getInfoForClick}, this.handlerOptions.click || {}); + } + }, + + /** + * Method: activate + * Activates the control. + * + * Returns: + * {Boolean} The control was effectively activated. + */ + activate: function () { + if (!this.active) { + this.handler.activate(); + } + return OpenLayers.Control.prototype.activate.apply( + this, arguments + ); + }, + + /** + * Method: deactivate + * Deactivates the control. + * + * Returns: + * {Boolean} The control was effectively deactivated. + */ + deactivate: function () { + return OpenLayers.Control.prototype.deactivate.apply( + this, arguments + ); + }, + + /** + * Method: getInfoForClick + * Called on click + * + * Parameters: + * evt - {} + */ + getInfoForClick: function(evt) { + // Set the cursor to "wait" to tell the user we're working on their + // click. + OpenLayers.Element.addClass(this.map.viewPortDiv, "olCursorWait"); + this.request(evt.xy, {}); + }, + + /** + * Method: getInfoForHover + * Pause callback for the hover handler + * + * Parameters: + * evt - {Object} + */ + getInfoForHover: function(evt) { + this.request(evt.xy, {hover: true}); + }, + + /** + * Method: cancelHover + * Cancel callback for the hover handler + */ + cancelHover: function() { + if (this.hoverRequest) { + this.hoverRequest.abort(); + this.hoverRequest = null; + } + }, + + /** + * Method: findLayers + * Internal method to get the layers, independent of whether we are + * inspecting the map or using a client-provided array + */ + findLayers: function() { + + var layers = []; + + var candidates = this.layers || this.map.layers; + var layer, url; + for(var i=0, len=candidates.length; i or one + * of the . + * + * Parameters: + * url - {String} The url to test. + * + * Returns: + * {Boolean} The provided url matches the control or one of the + * . + */ + urlMatches: function(url) { + var matches = OpenLayers.Util.isEquivalentUrl(this.url, url); + if(!matches && this.layerUrls) { + for(var i=0, len=this.layerUrls.length; i} The position on the map where the + * mouse event occurred. + * options - {Object} additional options for this method. + * + * Valid options: + * - *hover* {Boolean} true if we do the request for the hover handler + */ + request: function(clickPosition, options) { + options = options || {}; + var layerNames = []; + var styleNames = []; + + var layers = this.findLayers(); + if(layers.length > 0) { + + for (var i = 0, len = layers.length; i < len; i++) { + layerNames = layerNames.concat(layers[i].params.LAYERS); + // in the event of a WMS layer bundling multiple layers but not + // specifying styles,we need the same number of commas to specify + // the default style for each of the layers. We can't just leave it + // blank as we may be including other layers that do specify styles. + if (layers[i].params.STYLES) { + styleNames = styleNames.concat(layers[i].params.STYLES); + } else { + if (layers[i].params.LAYERS instanceof Array) { + styleNames = styleNames.concat(new Array(layers[i].params.LAYERS.length)); + } else { // Assume it's a String + styleNames = styleNames.concat(layers[i].params.LAYERS.replace(/[^,]/g, "")); + } + } + } + + var wmsOptions = { + url: this.url, + params: OpenLayers.Util.applyDefaults({ + service: "WMS", + version: "1.1.0", + request: "GetFeatureInfo", + layers: layerNames, + query_layers: layerNames, + styles: styleNames, + bbox: this.map.getExtent().toBBOX(), + srs: this.map.getProjection(), + feature_count: this.maxFeatures, + x: clickPosition.x, + y: clickPosition.y, + height: this.map.getSize().h, + width: this.map.getSize().w, + info_format: this.infoFormat + }, this.vendorParams), + callback: function(request) { + this.handleResponse(clickPosition, request); + }, + scope: this + }; + + var response = OpenLayers.Request.GET(wmsOptions); + + if (options.hover === true) { + this.hoverRequest = response.priv; + } + } else { + // Reset the cursor. + OpenLayers.Element.removeClass(this.map.viewPortDiv, "olCursorWait"); + } + }, + + /** + * Method: handleResponse + * Handler for the GetFeatureInfo response. + * + * Parameters: + * xy - {} The position on the map where the + * mouse event occurred. + * request - {XMLHttpRequest} The request object. + */ + handleResponse: function(xy, request) { + + var doc = request.responseXML; + if(!doc || !doc.documentElement) { + doc = request.responseText; + } + var features = this.format.read(doc); + + this.events.triggerEvent("getfeatureinfo", { + text: request.responseText, + features: features, + request: request, + xy: xy + }); + + // Reset the cursor. + OpenLayers.Element.removeClass(this.map.viewPortDiv, "olCursorWait"); + }, + + /** + * Method: setMap + * Set the map property for the control. + * + * Parameters: + * map - {} + */ + setMap: function(map) { + this.handler.setMap(map); + OpenLayers.Control.prototype.setMap.apply(this, arguments); + }, + + CLASS_NAME: "OpenLayers.Control.WMSGetFeatureInfo" +}); diff --git a/openlayers/lib/OpenLayers/Control/ZoomBox.js b/openlayers/lib/OpenLayers/Control/ZoomBox.js new file mode 100644 index 0000000..461ece4 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/ZoomBox.js @@ -0,0 +1,93 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control.js + * @requires OpenLayers/Handler/Box.js + */ + +/** + * Class: OpenLayers.Control.ZoomBox + * The ZoomBox control enables zooming directly to a given extent, by drawing + * a box on the map. The box is drawn by holding down shift, whilst dragging + * the mouse. + * + * Inherits from: + * - + */ +OpenLayers.Control.ZoomBox = OpenLayers.Class(OpenLayers.Control, { + /** + * Property: type + * {OpenLayers.Control.TYPE} + */ + type: OpenLayers.Control.TYPE_TOOL, + + /** + * Property: out + * {Boolean} Should the control be used for zooming out? + */ + out: false, + + /** + * Property: alwaysZoom + * {Boolean} Always zoom in/out, when box drawed + */ + alwaysZoom: false, + + /** + * Method: draw + */ + draw: function() { + this.handler = new OpenLayers.Handler.Box( this, + {done: this.zoomBox}, {keyMask: this.keyMask} ); + }, + + /** + * Method: zoomBox + * + * Parameters: + * position - {} or {} + */ + zoomBox: function (position) { + if (position instanceof OpenLayers.Bounds) { + if (!this.out) { + var minXY = this.map.getLonLatFromPixel( + new OpenLayers.Pixel(position.left, position.bottom)); + var maxXY = this.map.getLonLatFromPixel( + new OpenLayers.Pixel(position.right, position.top)); + var bounds = new OpenLayers.Bounds(minXY.lon, minXY.lat, + maxXY.lon, maxXY.lat); + } else { + var pixWidth = Math.abs(position.right-position.left); + var pixHeight = Math.abs(position.top-position.bottom); + var zoomFactor = Math.min((this.map.size.h / pixHeight), + (this.map.size.w / pixWidth)); + var extent = this.map.getExtent(); + var center = this.map.getLonLatFromPixel( + position.getCenterPixel()); + var xmin = center.lon - (extent.getWidth()/2)*zoomFactor; + var xmax = center.lon + (extent.getWidth()/2)*zoomFactor; + var ymin = center.lat - (extent.getHeight()/2)*zoomFactor; + var ymax = center.lat + (extent.getHeight()/2)*zoomFactor; + var bounds = new OpenLayers.Bounds(xmin, ymin, xmax, ymax); + } + // always zoom in/out + var lastZoom = this.map.getZoom(); + this.map.zoomToExtent(bounds); + if (lastZoom == this.map.getZoom() && this.alwaysZoom == true){ + this.map.zoomTo(lastZoom + (this.out ? -1 : 1)); + } + } else { // it's a pixel + if (!this.out) { + this.map.setCenter(this.map.getLonLatFromPixel(position), + this.map.getZoom() + 1); + } else { + this.map.setCenter(this.map.getLonLatFromPixel(position), + this.map.getZoom() - 1); + } + } + }, + + CLASS_NAME: "OpenLayers.Control.ZoomBox" +}); diff --git a/openlayers/lib/OpenLayers/Control/ZoomIn.js b/openlayers/lib/OpenLayers/Control/ZoomIn.js new file mode 100644 index 0000000..8173df3 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/ZoomIn.js @@ -0,0 +1,34 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control.js + */ + +/** + * Class: OpenLayers.Control.ZoomIn + * The ZoomIn control is a button to increase the zoom level of a map. + * + * Inherits from: + * - + */ +OpenLayers.Control.ZoomIn = OpenLayers.Class(OpenLayers.Control, { + + /** + * Property: type + * {String} The type of -- When added to a + * , 'type' is used by the panel to determine how to + * handle our events. + */ + type: OpenLayers.Control.TYPE_BUTTON, + + /** + * Method: trigger + */ + trigger: function(){ + this.map.zoomIn(); + }, + + CLASS_NAME: "OpenLayers.Control.ZoomIn" +}); diff --git a/openlayers/lib/OpenLayers/Control/ZoomOut.js b/openlayers/lib/OpenLayers/Control/ZoomOut.js new file mode 100644 index 0000000..48b8ac5 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/ZoomOut.js @@ -0,0 +1,34 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control.js + */ + +/** + * Class: OpenLayers.Control.ZoomOut + * The ZoomOut control is a button to decrease the zoom level of a map. + * + * Inherits from: + * - + */ +OpenLayers.Control.ZoomOut = OpenLayers.Class(OpenLayers.Control, { + + /** + * Property: type + * {String} The type of -- When added to a + * , 'type' is used by the panel to determine how to + * handle our events. + */ + type: OpenLayers.Control.TYPE_BUTTON, + + /** + * Method: trigger + */ + trigger: function(){ + this.map.zoomOut(); + }, + + CLASS_NAME: "OpenLayers.Control.ZoomOut" +}); diff --git a/openlayers/lib/OpenLayers/Control/ZoomPanel.js b/openlayers/lib/OpenLayers/Control/ZoomPanel.js new file mode 100644 index 0000000..c2cab2e --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/ZoomPanel.js @@ -0,0 +1,53 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control/Panel.js + * @requires OpenLayers/Control/ZoomIn.js + * @requires OpenLayers/Control/ZoomOut.js + * @requires OpenLayers/Control/ZoomToMaxExtent.js + */ + +/** + * Class: OpenLayers.Control.ZoomPanel + * The ZoomPanel control is a compact collecton of 3 zoom controls: a + * , a , and a + * . By default it is drawn in the upper left + * corner of the map. + * + * Note: + * If you wish to use this class with the default images and you want + * it to look nice in ie6, you should add the following, conditionally + * added css stylesheet to your HTML file: + * + * (code) + * + * (end) + * + * Inherits from: + * - + */ +OpenLayers.Control.ZoomPanel = OpenLayers.Class(OpenLayers.Control.Panel, { + + /** + * Constructor: OpenLayers.Control.ZoomPanel + * Add the three zooming controls. + * + * Parameters: + * options - {Object} An optional object whose properties will be used + * to extend the control. + */ + initialize: function(options) { + OpenLayers.Control.Panel.prototype.initialize.apply(this, [options]); + this.addControls([ + new OpenLayers.Control.ZoomIn(), + new OpenLayers.Control.ZoomToMaxExtent(), + new OpenLayers.Control.ZoomOut() + ]); + }, + + CLASS_NAME: "OpenLayers.Control.ZoomPanel" +}); diff --git a/openlayers/lib/OpenLayers/Control/ZoomToMaxExtent.js b/openlayers/lib/OpenLayers/Control/ZoomToMaxExtent.js new file mode 100644 index 0000000..7451173 --- /dev/null +++ b/openlayers/lib/OpenLayers/Control/ZoomToMaxExtent.js @@ -0,0 +1,39 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Control.js + */ + +/** + * Class: OpenLayers.Control.ZoomToMaxExtent + * The ZoomToMaxExtent control is a button that zooms out to the maximum + * extent of the map. It is designed to be used with a + * . + * + * Inherits from: + * - + */ +OpenLayers.Control.ZoomToMaxExtent = OpenLayers.Class(OpenLayers.Control, { + + /** + * Property: type + * {String} The type of -- When added to a + * , 'type' is used by the panel to determine how to + * handle our events. + */ + type: OpenLayers.Control.TYPE_BUTTON, + + /* + * Method: trigger + * Do the zoom. + */ + trigger: function() { + if (this.map) { + this.map.zoomToMaxExtent(); + } + }, + + CLASS_NAME: "OpenLayers.Control.ZoomToMaxExtent" +}); diff --git a/openlayers/lib/OpenLayers/Events.js b/openlayers/lib/OpenLayers/Events.js new file mode 100644 index 0000000..bb0d954 --- /dev/null +++ b/openlayers/lib/OpenLayers/Events.js @@ -0,0 +1,828 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Util.js + */ + +/** + * Namespace: OpenLayers.Event + * Utility functions for event handling. + */ +OpenLayers.Event = { + + /** + * Property: observers + * {Object} A hashtable cache of the event observers. Keyed by + * element._eventCacheID + */ + observers: false, + + /** + * Constant: KEY_BACKSPACE + * {int} + */ + KEY_BACKSPACE: 8, + + /** + * Constant: KEY_TAB + * {int} + */ + KEY_TAB: 9, + + /** + * Constant: KEY_RETURN + * {int} + */ + KEY_RETURN: 13, + + /** + * Constant: KEY_ESC + * {int} + */ + KEY_ESC: 27, + + /** + * Constant: KEY_LEFT + * {int} + */ + KEY_LEFT: 37, + + /** + * Constant: KEY_UP + * {int} + */ + KEY_UP: 38, + + /** + * Constant: KEY_RIGHT + * {int} + */ + KEY_RIGHT: 39, + + /** + * Constant: KEY_DOWN + * {int} + */ + KEY_DOWN: 40, + + /** + * Constant: KEY_DELETE + * {int} + */ + KEY_DELETE: 46, + + + /** + * Method: element + * Cross browser event element detection. + * + * Parameters: + * event - {Event} + * + * Returns: + * {DOMElement} The element that caused the event + */ + element: function(event) { + return event.target || event.srcElement; + }, + + /** + * Method: isLeftClick + * Determine whether event was caused by a left click. + * + * Parameters: + * event - {Event} + * + * Returns: + * {Boolean} + */ + isLeftClick: function(event) { + return (((event.which) && (event.which == 1)) || + ((event.button) && (event.button == 1))); + }, + + /** + * Method: isRightClick + * Determine whether event was caused by a right mouse click. + * + * Parameters: + * event - {Event} + * + * Returns: + * {Boolean} + */ + isRightClick: function(event) { + return (((event.which) && (event.which == 3)) || + ((event.button) && (event.button == 2))); + }, + + /** + * Method: stop + * Stops an event from propagating. + * + * Parameters: + * event - {Event} + * allowDefault - {Boolean} If true, we stop the event chain but + * still allow the default browser + * behaviour (text selection, radio-button + * clicking, etc) + * Default false + */ + stop: function(event, allowDefault) { + + if (!allowDefault) { + if (event.preventDefault) { + event.preventDefault(); + } else { + event.returnValue = false; + } + } + + if (event.stopPropagation) { + event.stopPropagation(); + } else { + event.cancelBubble = true; + } + }, + + /** + * Method: findElement + * + * Parameters: + * event - {Event} + * tagName - {String} + * + * Returns: + * {DOMElement} The first node with the given tagName, starting from the + * node the event was triggered on and traversing the DOM upwards + */ + findElement: function(event, tagName) { + var element = OpenLayers.Event.element(event); + while (element.parentNode && (!element.tagName || + (element.tagName.toUpperCase() != tagName.toUpperCase()))){ + element = element.parentNode; + } + return element; + }, + + /** + * Method: observe + * + * Parameters: + * elementParam - {DOMElement || String} + * name - {String} + * observer - {function} + * useCapture - {Boolean} + */ + observe: function(elementParam, name, observer, useCapture) { + var element = OpenLayers.Util.getElement(elementParam); + useCapture = useCapture || false; + + if (name == 'keypress' && + (navigator.appVersion.match(/Konqueror|Safari|KHTML/) + || element.attachEvent)) { + name = 'keydown'; + } + + //if observers cache has not yet been created, create it + if (!this.observers) { + this.observers = {}; + } + + //if not already assigned, make a new unique cache ID + if (!element._eventCacheID) { + var idPrefix = "eventCacheID_"; + if (element.id) { + idPrefix = element.id + "_" + idPrefix; + } + element._eventCacheID = OpenLayers.Util.createUniqueID(idPrefix); + } + + var cacheID = element._eventCacheID; + + //if there is not yet a hash entry for this element, add one + if (!this.observers[cacheID]) { + this.observers[cacheID] = []; + } + + //add a new observer to this element's list + this.observers[cacheID].push({ + 'element': element, + 'name': name, + 'observer': observer, + 'useCapture': useCapture + }); + + //add the actual browser event listener + if (element.addEventListener) { + element.addEventListener(name, observer, useCapture); + } else if (element.attachEvent) { + element.attachEvent('on' + name, observer); + } + }, + + /** + * Method: stopObservingElement + * Given the id of an element to stop observing, cycle through the + * element's cached observers, calling stopObserving on each one, + * skipping those entries which can no longer be removed. + * + * parameters: + * elementParam - {DOMElement || String} + */ + stopObservingElement: function(elementParam) { + var element = OpenLayers.Util.getElement(elementParam); + var cacheID = element._eventCacheID; + + this._removeElementObservers(OpenLayers.Event.observers[cacheID]); + }, + + /** + * Method: _removeElementObservers + * + * Parameters: + * elementObservers - {Array(Object)} Array of (element, name, + * observer, usecapture) objects, + * taken directly from hashtable + */ + _removeElementObservers: function(elementObservers) { + if (elementObservers) { + for(var i = elementObservers.length-1; i >= 0; i--) { + var entry = elementObservers[i]; + var args = new Array(entry.element, + entry.name, + entry.observer, + entry.useCapture); + var removed = OpenLayers.Event.stopObserving.apply(this, args); + } + } + }, + + /** + * Method: stopObserving + * + * Parameters: + * elementParam - {DOMElement || String} + * name - {String} + * observer - {function} + * useCapture - {Boolean} + * + * Returns: + * {Boolean} Whether or not the event observer was removed + */ + stopObserving: function(elementParam, name, observer, useCapture) { + useCapture = useCapture || false; + + var element = OpenLayers.Util.getElement(elementParam); + var cacheID = element._eventCacheID; + + if (name == 'keypress') { + if ( navigator.appVersion.match(/Konqueror|Safari|KHTML/) || + element.detachEvent) { + name = 'keydown'; + } + } + + // find element's entry in this.observers cache and remove it + var foundEntry = false; + var elementObservers = OpenLayers.Event.observers[cacheID]; + if (elementObservers) { + + // find the specific event type in the element's list + var i=0; + while(!foundEntry && i < elementObservers.length) { + var cacheEntry = elementObservers[i]; + + if ((cacheEntry.name == name) && + (cacheEntry.observer == observer) && + (cacheEntry.useCapture == useCapture)) { + + elementObservers.splice(i, 1); + if (elementObservers.length == 0) { + delete OpenLayers.Event.observers[cacheID]; + } + foundEntry = true; + break; + } + i++; + } + } + + //actually remove the event listener from browser + if (foundEntry) { + if (element.removeEventListener) { + element.removeEventListener(name, observer, useCapture); + } else if (element && element.detachEvent) { + element.detachEvent('on' + name, observer); + } + } + return foundEntry; + }, + + /** + * Method: unloadCache + * Cycle through all the element entries in the events cache and call + * stopObservingElement on each. + */ + unloadCache: function() { + // check for OpenLayers.Event before checking for observers, because + // OpenLayers.Event may be undefined in IE if no map instance was + // created + if (OpenLayers.Event && OpenLayers.Event.observers) { + for (var cacheID in OpenLayers.Event.observers) { + var elementObservers = OpenLayers.Event.observers[cacheID]; + OpenLayers.Event._removeElementObservers.apply(this, + [elementObservers]); + } + OpenLayers.Event.observers = false; + } + }, + + CLASS_NAME: "OpenLayers.Event" +}; + +/* prevent memory leaks in IE */ +OpenLayers.Event.observe(window, 'unload', OpenLayers.Event.unloadCache, false); + +// FIXME: Remove this in 3.0. In 3.0, Event.stop will no longer be provided +// by OpenLayers. +if (window.Event) { + OpenLayers.Util.applyDefaults(window.Event, OpenLayers.Event); +} else { + var Event = OpenLayers.Event; +} + +/** + * Class: OpenLayers.Events + */ +OpenLayers.Events = OpenLayers.Class({ + + /** + * Constant: BROWSER_EVENTS + * {Array(String)} supported events + */ + BROWSER_EVENTS: [ + "mouseover", "mouseout", + "mousedown", "mouseup", "mousemove", + "click", "dblclick", "rightclick", "dblrightclick", + "resize", "focus", "blur" + ], + + /** + * Property: listeners + * {Object} Hashtable of Array(Function): events listener functions + */ + listeners: null, + + /** + * Property: object + * {Object} the code object issuing application events + */ + object: null, + + /** + * Property: element + * {DOMElement} the DOM element receiving browser events + */ + element: null, + + /** + * Property: eventTypes + * {Array(String)} list of support application events + */ + eventTypes: null, + + /** + * Property: eventHandler + * {Function} bound event handler attached to elements + */ + eventHandler: null, + + /** + * APIProperty: fallThrough + * {Boolean} + */ + fallThrough: null, + + /** + * APIProperty: includeXY + * {Boolean} Should the .xy property automatically be created for browser + * mouse events? In general, this should be false. If it is true, then + * mouse events will automatically generate a '.xy' property on the + * event object that is passed. (Prior to OpenLayers 2.7, this was true + * by default.) Otherwise, you can call the getMousePosition on the + * relevant events handler on the object available via the 'evt.object' + * property of the evt object. So, for most events, you can call: + * function named(evt) { + * this.xy = this.object.events.getMousePosition(evt) + * } + * + * This option typically defaults to false for performance reasons: + * when creating an events object whose primary purpose is to manage + * relatively positioned mouse events within a div, it may make + * sense to set it to true. + * + * This option is also used to control whether the events object caches + * offsets. If this is false, it will not: the reason for this is that + * it is only expected to be called many times if the includeXY property + * is set to true. If you set this to true, you are expected to clear + * the offset cache manually (using this.clearMouseCache()) if: + * the border of the element changes + * the location of the element in the page changes + */ + includeXY: false, + + /** + * Method: clearMouseListener + * A version of that is bound to this instance so that + * it can be used with and + * . + */ + clearMouseListener: null, + + /** + * Constructor: OpenLayers.Events + * Construct an OpenLayers.Events object. + * + * Parameters: + * object - {Object} The js object to which this Events object is being + * added element - {DOMElement} A dom element to respond to browser events + * eventTypes - {Array(String)} Array of custom application events + * fallThrough - {Boolean} Allow events to fall through after these have + * been handled? + * options - {Object} Options for the events object. + */ + initialize: function (object, element, eventTypes, fallThrough, options) { + OpenLayers.Util.extend(this, options); + this.object = object; + this.fallThrough = fallThrough; + this.listeners = {}; + + // keep a bound copy of handleBrowserEvent() so that we can + // pass the same function to both Event.observe() and .stopObserving() + this.eventHandler = OpenLayers.Function.bindAsEventListener( + this.handleBrowserEvent, this + ); + + // to be used with observe and stopObserving + this.clearMouseListener = OpenLayers.Function.bind( + this.clearMouseCache, this + ); + + // if eventTypes is specified, create a listeners list for each + // custom application event. + this.eventTypes = []; + if (eventTypes != null) { + for (var i=0, len=eventTypes.length; i} The current xy coordinate of the mouse, adjusted + * for offsets + */ + getMousePosition: function (evt) { + if (!this.includeXY) { + this.clearMouseCache(); + } else if (!this.element.hasScrollEvent) { + OpenLayers.Event.observe(window, "scroll", this.clearMouseListener); + this.element.hasScrollEvent = true; + } + + if (!this.element.scrolls) { + this.element.scrolls = [ + (document.documentElement.scrollLeft + || document.body.scrollLeft), + (document.documentElement.scrollTop + || document.body.scrollTop) + ]; + } + + if (!this.element.lefttop) { + this.element.lefttop = [ + (document.documentElement.clientLeft || 0), + (document.documentElement.clientTop || 0) + ]; + } + + if (!this.element.offsets) { + this.element.offsets = OpenLayers.Util.pagePosition(this.element); + this.element.offsets[0] += this.element.scrolls[0]; + this.element.offsets[1] += this.element.scrolls[1]; + } + return new OpenLayers.Pixel( + (evt.clientX + this.element.scrolls[0]) - this.element.offsets[0] + - this.element.lefttop[0], + (evt.clientY + this.element.scrolls[1]) - this.element.offsets[1] + - this.element.lefttop[1] + ); + }, + + CLASS_NAME: "OpenLayers.Events" +}); diff --git a/openlayers/lib/OpenLayers/Feature.js b/openlayers/lib/OpenLayers/Feature.js new file mode 100644 index 0000000..2eaafbd --- /dev/null +++ b/openlayers/lib/OpenLayers/Feature.js @@ -0,0 +1,222 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Util.js + * @requires OpenLayers/Marker.js + * @requires OpenLayers/Popup/AnchoredBubble.js + */ + +/** + * Class: OpenLayers.Feature + * Features are combinations of geography and attributes. The OpenLayers.Feature + * class specifically combines a marker and a lonlat. + */ +OpenLayers.Feature = OpenLayers.Class({ + + /** + * Property: layer + * {} + */ + layer: null, + + /** + * Property: id + * {String} + */ + id: null, + + /** + * Property: lonlat + * {} + */ + lonlat: null, + + /** + * Property: data + * {Object} + */ + data: null, + + /** + * Property: marker + * {} + */ + marker: null, + + /** + * APIProperty: popupClass + * {} The class which will be used to instantiate + * a new Popup. Default is . + */ + popupClass: OpenLayers.Popup.AnchoredBubble, + + /** + * Property: popup + * {} + */ + popup: null, + + /** + * Constructor: OpenLayers.Feature + * Constructor for features. + * + * Parameters: + * layer - {} + * lonlat - {} + * data - {Object} + * + * Returns: + * {} + */ + initialize: function(layer, lonlat, data) { + this.layer = layer; + this.lonlat = lonlat; + this.data = (data != null) ? data : {}; + this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_"); + }, + + /** + * Method: destroy + * nullify references to prevent circular references and memory leaks + */ + destroy: function() { + + //remove the popup from the map + if ((this.layer != null) && (this.layer.map != null)) { + if (this.popup != null) { + this.layer.map.removePopup(this.popup); + } + } + + this.layer = null; + this.id = null; + this.lonlat = null; + this.data = null; + if (this.marker != null) { + this.destroyMarker(this.marker); + this.marker = null; + } + if (this.popup != null) { + this.destroyPopup(this.popup); + this.popup = null; + } + }, + + /** + * Method: onScreen + * + * Returns: + * {Boolean} Whether or not the feature is currently visible on screen + * (based on its 'lonlat' property) + */ + onScreen:function() { + + var onScreen = false; + if ((this.layer != null) && (this.layer.map != null)) { + var screenBounds = this.layer.map.getExtent(); + onScreen = screenBounds.containsLonLat(this.lonlat); + } + return onScreen; + }, + + + /** + * Method: createMarker + * Based on the data associated with the Feature, create and return a marker object. + * + * Returns: + * {} A Marker Object created from the 'lonlat' and 'icon' properties + * set in this.data. If no 'lonlat' is set, returns null. If no + * 'icon' is set, OpenLayers.Marker() will load the default image. + * + * Note - this.marker is set to return value + * + */ + createMarker: function() { + + if (this.lonlat != null) { + this.marker = new OpenLayers.Marker(this.lonlat, this.data.icon); + } + return this.marker; + }, + + /** + * Method: destroyMarker + * Destroys marker. + * If user overrides the createMarker() function, s/he should be able + * to also specify an alternative function for destroying it + */ + destroyMarker: function() { + this.marker.destroy(); + }, + + /** + * Method: createPopup + * Creates a popup object created from the 'lonlat', 'popupSize', + * and 'popupContentHTML' properties set in this.data. It uses + * this.marker.icon as default anchor. + * + * If no 'lonlat' is set, returns null. + * If no this.marker has been created, no anchor is sent. + * + * Note - the returned popup object is 'owned' by the feature, so you + * cannot use the popup's destroy method to discard the popup. + * Instead, you must use the feature's destroyPopup + * + * Note - this.popup is set to return value + * + * Parameters: + * closeBox - {Boolean} create popup with closebox or not + * + * Returns: + * {} Returns the created popup, which is also set + * as 'popup' property of this feature. Will be of whatever type + * specified by this feature's 'popupClass' property, but must be + * of type . + * + */ + createPopup: function(closeBox) { + + if (this.lonlat != null) { + + var id = this.id + "_popup"; + var anchor = (this.marker) ? this.marker.icon : null; + + if (!this.popup) { + this.popup = new this.popupClass(id, + this.lonlat, + this.data.popupSize, + this.data.popupContentHTML, + anchor, + closeBox); + } + if (this.data.overflow != null) { + this.popup.contentDiv.style.overflow = this.data.overflow; + } + + this.popup.feature = this; + } + return this.popup; + }, + + + /** + * Method: destroyPopup + * Destroys the popup created via createPopup. + * + * As with the marker, if user overrides the createPopup() function, s/he + * should also be able to override the destruction + */ + destroyPopup: function() { + if (this.popup) { + this.popup.feature = null; + this.popup.destroy(); + this.popup = null; + } + }, + + CLASS_NAME: "OpenLayers.Feature" +}); diff --git a/openlayers/lib/OpenLayers/Feature/Vector.js b/openlayers/lib/OpenLayers/Feature/Vector.js new file mode 100644 index 0000000..ecb7ccb --- /dev/null +++ b/openlayers/lib/OpenLayers/Feature/Vector.js @@ -0,0 +1,419 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +// TRASH THIS +OpenLayers.State = { + /** states */ + UNKNOWN: 'Unknown', + INSERT: 'Insert', + UPDATE: 'Update', + DELETE: 'Delete' +}; + +/** + * @requires OpenLayers/Feature.js + * @requires OpenLayers/Util.js + */ + +/** + * Class: OpenLayers.Feature.Vector + * Vector features use the OpenLayers.Geometry classes as geometry description. + * They have an 'attributes' property, which is the data object, and a 'style' + * property, the default values of which are defined in the + * objects. + * + * Inherits from: + * - + */ +OpenLayers.Feature.Vector = OpenLayers.Class(OpenLayers.Feature, { + + /** + * Property: fid + * {String} + */ + fid: null, + + /** + * APIProperty: geometry + * {} + */ + geometry: null, + + /** + * APIProperty: attributes + * {Object} This object holds arbitrary properties that describe the + * feature. + */ + attributes: null, + + /** + * Property: bounds + * {} The box bounding that feature's geometry, that + * property can be set by an object when + * deserializing the feature, so in most cases it represents an + * information set by the server. + */ + bounds: null, + + /** + * Property: state + * {String} + */ + state: null, + + /** + * APIProperty: style + * {Object} + */ + style: null, + + /** + * Property: renderIntent + * {String} rendering intent currently being used + */ + renderIntent: "default", + + /** + * Constructor: OpenLayers.Feature.Vector + * Create a vector feature. + * + * Parameters: + * geometry - {} The geometry that this feature + * represents. + * attributes - {Object} An optional object that will be mapped to the + * property. + * style - {Object} An optional style object. + */ + initialize: function(geometry, attributes, style) { + OpenLayers.Feature.prototype.initialize.apply(this, + [null, null, attributes]); + this.lonlat = null; + this.geometry = geometry ? geometry : null; + this.state = null; + this.attributes = {}; + if (attributes) { + this.attributes = OpenLayers.Util.extend(this.attributes, + attributes); + } + this.style = style ? style : null; + }, + + /** + * Method: destroy + * nullify references to prevent circular references and memory leaks + */ + destroy: function() { + if (this.layer) { + this.layer.removeFeatures(this); + this.layer = null; + } + + this.geometry = null; + OpenLayers.Feature.prototype.destroy.apply(this, arguments); + }, + + /** + * Method: clone + * Create a clone of this vector feature. Does not set any non-standard + * properties. + * + * Returns: + * {} An exact clone of this vector feature. + */ + clone: function () { + return new OpenLayers.Feature.Vector( + this.geometry ? this.geometry.clone() : null, + this.attributes, + this.style); + }, + + /** + * Method: onScreen + * Determine whether the feature is within the map viewport. This method + * tests for an intersection between the geometry and the viewport + * bounds. If a more effecient but less precise geometry bounds + * intersection is desired, call the method with the boundsOnly + * parameter true. + * + * Parameters: + * boundsOnly - {Boolean} Only test whether a feature's bounds intersects + * the viewport bounds. Default is false. If false, the feature's + * geometry must intersect the viewport for onScreen to return true. + * + * Returns: + * {Boolean} The feature is currently visible on screen (optionally + * based on its bounds if boundsOnly is true). + */ + onScreen:function(boundsOnly) { + var onScreen = false; + if(this.layer && this.layer.map) { + var screenBounds = this.layer.map.getExtent(); + if(boundsOnly) { + var featureBounds = this.geometry.getBounds(); + onScreen = screenBounds.intersectsBounds(featureBounds); + } else { + var screenPoly = screenBounds.toGeometry(); + onScreen = screenPoly.intersects(this.geometry); + } + } + return onScreen; + }, + + /** + * Method: createMarker + * HACK - we need to decide if all vector features should be able to + * create markers + * + * Returns: + * {} For now just returns null + */ + createMarker: function() { + return null; + }, + + /** + * Method: destroyMarker + * HACK - we need to decide if all vector features should be able to + * delete markers + * + * If user overrides the createMarker() function, s/he should be able + * to also specify an alternative function for destroying it + */ + destroyMarker: function() { + // pass + }, + + /** + * Method: createPopup + * HACK - we need to decide if all vector features should be able to + * create popups + * + * Returns: + * {} For now just returns null + */ + createPopup: function() { + return null; + }, + + /** + * Method: atPoint + * Determins whether the feature intersects with the specified location. + * + * Parameters: + * lonlat - {} + * toleranceLon - {float} Optional tolerance in Geometric Coords + * toleranceLat - {float} Optional tolerance in Geographic Coords + * + * Returns: + * {Boolean} Whether or not the feature is at the specified location + */ + atPoint: function(lonlat, toleranceLon, toleranceLat) { + var atPoint = false; + if(this.geometry) { + atPoint = this.geometry.atPoint(lonlat, toleranceLon, + toleranceLat); + } + return atPoint; + }, + + /** + * Method: destroyPopup + * HACK - we need to decide if all vector features should be able to + * delete popups + */ + destroyPopup: function() { + // pass + }, + + /** + * Method: move + * Moves the feature and redraws it at its new location + * + * Parameters: + * state - {OpenLayers.LonLat or OpenLayers.Pixel} the + * location to which to move the feature. + */ + move: function(location) { + + if(!this.layer || !this.geometry.move){ + //do nothing if no layer or immoveable geometry + return; + } + + var pixel; + if (location.CLASS_NAME == "OpenLayers.LonLat") { + pixel = this.layer.getViewPortPxFromLonLat(location); + } else { + pixel = location; + } + + var lastPixel = this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat()); + var res = this.layer.map.getResolution(); + this.geometry.move(res * (pixel.x - lastPixel.x), + res * (lastPixel.y - pixel.y)); + this.layer.drawFeature(this); + return lastPixel; + }, + + /** + * Method: toState + * Sets the new state + * + * Parameters: + * state - {String} + */ + toState: function(state) { + if (state == OpenLayers.State.UPDATE) { + switch (this.state) { + case OpenLayers.State.UNKNOWN: + case OpenLayers.State.DELETE: + this.state = state; + break; + case OpenLayers.State.UPDATE: + case OpenLayers.State.INSERT: + break; + } + } else if (state == OpenLayers.State.INSERT) { + switch (this.state) { + case OpenLayers.State.UNKNOWN: + break; + default: + this.state = state; + break; + } + } else if (state == OpenLayers.State.DELETE) { + switch (this.state) { + case OpenLayers.State.INSERT: + // the feature should be destroyed + break; + case OpenLayers.State.DELETE: + break; + case OpenLayers.State.UNKNOWN: + case OpenLayers.State.UPDATE: + this.state = state; + break; + } + } else if (state == OpenLayers.State.UNKNOWN) { + this.state = state; + } + }, + + CLASS_NAME: "OpenLayers.Feature.Vector" +}); + + +/** + * Constant: OpenLayers.Feature.Vector.style + * OpenLayers features can have a number of style attributes. The 'default' + * style will typically be used if no other style is specified. These + * styles correspond for the most part, to the styling properties defined + * by the SVG standard. + * Information on fill properties: http://www.w3.org/TR/SVG/painting.html#FillProperties + * Information on stroke properties: http://www.w3.org/TR/SVG/painting.html#StrokeProperties + * + * Symbolizer properties: + * fill - {Boolean} Set to false if no fill is desired. + * fillColor - {String} Hex fill color. Default is "#ee9900". + * fillOpacity - {Number} Fill opacity (0-1). Default is 0.4 + * stroke - {Boolean} Set to false if no stroke is desired. + * strokeColor - {String} Hex stroke color. Default is "#ee9900". + * strokeOpacity - {Number} Stroke opacity (0-1). Default is 1. + * strokeWidth - {Number} Pixel stroke width. Default is 1. + * strokeLinecap - {String} Stroke cap type. Default is "round". [butt | round | square] + * strokeDashstyle - {String} Stroke dash style. Default is "solid". [dot | dash | dashdot | longdash | longdashdot | solid] + * graphic - {Boolean} Set to false if no graphic is desired. + * pointRadius - {Number} Pixel point radius. Default is 6. + * pointerEvents - {String} Default is "visiblePainted". + * cursor - {String} Default is "". + * externalGraphic - {String} Url to an external graphic that will be used for rendering points. + * graphicWidth - {Number} Pixel width for sizing an external graphic. + * graphicHeight - {Number} Pixel height for sizing an external graphic. + * graphicOpacity - {Number} Opacity (0-1) for an external graphic. + * graphicXOffset - {Number} Pixel offset along the positive x axis for displacing an external graphic. + * graphicYOffset - {Number} Pixel offset along the positive y axis for displacing an external graphic. + * graphicZIndex - {Number} The integer z-index value to use in rendering. + * graphicName - {String} Named graphic to use when rendering points. Supported values include "circle" (default), + * "square", "star", "x", "cross", "triangle". + * graphicTitle - {String} Tooltip for an external graphic. Only supported in Firefox and Internet Explorer. + * backgroundGraphic - {String} Url to a graphic to be used as the background under an externalGraphic. + * backgroundGraphicZIndex - {Number} The integer z-index value to use in rendering the background graphic. + * backgroundXOffset - {Number} The x offset (in pixels) for the background graphic. + * backgroundYOffset - {Number} The y offset (in pixels) for the background graphic. + * backgroundHeight - {Number} The height of the background graphic. If not provided, the graphicHeight will be used. + * backgroundWidth - {Number} The width of the background width. If not provided, the graphicWidth will be used. + * label - {String} The text for an optional label. For browsers that use the canvas renderer, this requires either + * fillText or mozDrawText to be available. + * labelAlign - {String} Label alignment. This specifies the insertion point relative to the text. It is a string + * composed of two characters. The first character is for the horizontal alignment, the second for the vertical + * alignment. Valid values for horizontal alignment: "l"=left, "c"=center, "r"=right. Valid values for vertical + * alignment: "t"=top, "m"=middle, "b"=bottom. Example values: "lt", "cm", "rb". The canvas renderer does not + * support vertical alignment, it will always use "b". + * fontColor - {String} The font color for the label, to be provided like CSS. + * fontFamily - {String} The font family for the label, to be provided like in CSS. + * fontSize - {String} The font size for the label, to be provided like in CSS. + * fontWeight - {String} The font weight for the label, to be provided like in CSS. + * display - {String} Symbolizers will have no effect if display is set to "none". All other values have no effect. + */ +OpenLayers.Feature.Vector.style = { + 'default': { + fillColor: "#ee9900", + fillOpacity: 0.4, + hoverFillColor: "white", + hoverFillOpacity: 0.8, + strokeColor: "#ee9900", + strokeOpacity: 1, + strokeWidth: 1, + strokeLinecap: "round", + strokeDashstyle: "solid", + hoverStrokeColor: "red", + hoverStrokeOpacity: 1, + hoverStrokeWidth: 0.2, + pointRadius: 6, + hoverPointRadius: 1, + hoverPointUnit: "%", + pointerEvents: "visiblePainted", + cursor: "inherit" + }, + 'select': { + fillColor: "blue", + fillOpacity: 0.4, + hoverFillColor: "white", + hoverFillOpacity: 0.8, + strokeColor: "blue", + strokeOpacity: 1, + strokeWidth: 2, + strokeLinecap: "round", + strokeDashstyle: "solid", + hoverStrokeColor: "red", + hoverStrokeOpacity: 1, + hoverStrokeWidth: 0.2, + pointRadius: 6, + hoverPointRadius: 1, + hoverPointUnit: "%", + pointerEvents: "visiblePainted", + cursor: "pointer" + }, + 'temporary': { + fillColor: "#66cccc", + fillOpacity: 0.2, + hoverFillColor: "white", + hoverFillOpacity: 0.8, + strokeColor: "#66cccc", + strokeOpacity: 1, + strokeLinecap: "round", + strokeWidth: 2, + strokeDashstyle: "solid", + hoverStrokeColor: "red", + hoverStrokeOpacity: 1, + hoverStrokeWidth: 0.2, + pointRadius: 6, + hoverPointRadius: 1, + hoverPointUnit: "%", + pointerEvents: "visiblePainted", + cursor: "inherit" + }, + 'delete': { + display: "none" + } +}; diff --git a/openlayers/lib/OpenLayers/Feature/WFS.js b/openlayers/lib/OpenLayers/Feature/WFS.js new file mode 100644 index 0000000..722c983 --- /dev/null +++ b/openlayers/lib/OpenLayers/Feature/WFS.js @@ -0,0 +1,79 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Feature.js + */ + +/** + * Class: OpenLayers.Feature.WFS + * WFS handling class, for use as a featureClass on the WFS layer for handling + * 'point' WFS types. Good for subclassing when creating a custom WFS like + * XML application. + * + * Inherits from: + * - + */ +OpenLayers.Feature.WFS = OpenLayers.Class(OpenLayers.Feature, { + + /** + * Constructor: OpenLayers.Feature.WFS + * Create a WFS feature. + * + * Parameters: + * layer - {} + * xmlNode - {XMLNode} + */ + initialize: function(layer, xmlNode) { + var newArguments = arguments; + var data = this.processXMLNode(xmlNode); + newArguments = new Array(layer, data.lonlat, data); + OpenLayers.Feature.prototype.initialize.apply(this, newArguments); + this.createMarker(); + this.layer.addMarker(this.marker); + }, + + /** + * Method: destroy + * nullify references to prevent circular references and memory leaks + */ + destroy: function() { + if (this.marker != null) { + this.layer.removeMarker(this.marker); + } + OpenLayers.Feature.prototype.destroy.apply(this, arguments); + }, + + /** + * Method: processXMLNode + * When passed an xmlNode, parses it for a GML point, and passes + * back an object describing that point. + * + * For subclasses of Feature.WFS, this is the feature to change. + * + * Parameters: + * xmlNode - {XMLNode} + * + * Returns: + * {Object} Data Object with 'id', 'lonlat', and private properties set + */ + processXMLNode: function(xmlNode) { + //this should be overridden by subclasses + // must return an Object with 'id' and 'lonlat' values set + var point = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, "http://www.opengis.net/gml", "gml", "Point"); + var text = OpenLayers.Util.getXmlNodeValue(OpenLayers.Ajax.getElementsByTagNameNS(point[0], "http://www.opengis.net/gml","gml", "coordinates")[0]); + var floats = text.split(","); + return {lonlat: new OpenLayers.LonLat(parseFloat(floats[0]), + parseFloat(floats[1])), + id: null}; + + }, + + CLASS_NAME: "OpenLayers.Feature.WFS" +}); + + + + + diff --git a/openlayers/lib/OpenLayers/Filter.js b/openlayers/lib/OpenLayers/Filter.js new file mode 100644 index 0000000..31cbcd3 --- /dev/null +++ b/openlayers/lib/OpenLayers/Filter.js @@ -0,0 +1,66 @@ +/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license. + * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt + * for the full text of the license. */ + + +/** + * @requires OpenLayers/Util.js + * @requires OpenLayers/Style.js + */ + +/** + * Class: OpenLayers.Filter + * This class represents an OGC Filter. + */ +OpenLayers.Filter = OpenLayers.Class({ + + /** + * Constructor: OpenLayers.Filter + * This is an abstract class. Create an instance of a filter subclass. + * + * Parameters: + * options - {Object} Optional object whose properties will be set on the + * instance. + * + * Returns: + * {} + */ + initialize: function(options) { + OpenLayers.Util.extend(this, options); + }, + + /** + * APIMethod: destroy + * Remove reference to anything added. + */ + destroy: function() { + }, + + /** + * APIMethod: evaluate + * Evaluates this filter in a specific context. Should be implemented by + * subclasses. + * + * Parameters: + * context - {Object} Context to use in evaluating the filter. + * + * Returns: + * {Boolean} The filter applies. + */ + evaluate: function(context) { + return true; + }, + + /** + * APIMethod: clone + * Clones this filter. Should be implementted by subclasses. + * + * Returns: + * {} Clone of this filter. + */ + clone: function() { + return null; + }, + + CLASS_NAME: "OpenLayers.Filter" +}); diff --git a/openlayers/lib/OpenLayers/Filter/Comparison.js b/openlayers/lib/OpenLayers/Filter/Comparison.js new file mode 100644 index 0000000..b8d4e92 --- /dev/null +++ b/openlayers/lib/OpenLayers/Filter/Comparison.js @@ -0,0 +1,255 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Filter.js + * @requires OpenLayers/Console.js + */ + +/** + * Class: OpenLayers.Filter.Comparison + * This class represents a comparison filter. + * + * Inherits from + * - + */ +OpenLayers.Filter.Comparison = OpenLayers.Class(OpenLayers.Filter, { + + /** + * APIProperty: type + * {String} type: type of the comparison. This is one of + * - OpenLayers.Filter.Comparison.EQUAL_TO = "=="; + * - OpenLayers.Filter.Comparison.NOT_EQUAL_TO = "!="; + * - OpenLayers.Filter.Comparison.LESS_THAN = "<"; + * - OpenLayers.Filter.Comparison.GREATER_THAN = ">"; + * - OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO = "<="; + * - OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO = ">="; + * - OpenLayers.Filter.Comparison.BETWEEN = ".."; + * - OpenLayers.Filter.Comparison.LIKE = "~"; + */ + type: null, + + /** + * APIProperty: property + * {String} + * name of the context property to compare + */ + property: null, + + /** + * APIProperty: value + * {Number} or {String} + * comparison value for binary comparisons. In the case of a String, this + * can be a combination of text and propertyNames in the form + * "literal ${propertyName}" + */ + value: null, + + /** + * Property: matchCase + * {Boolean} Force case sensitive searches for EQUAL_TO and NOT_EQUAL_TO + * comparisons. The Filter Encoding 1.1 specification added a matchCase + * attribute to ogc:PropertyIsEqualTo and ogc:PropertyIsNotEqualTo + * elements. This property will be serialized with those elements only + * if using the v1.1.0 filter format. However, when evaluating filters + * here, the matchCase property will always be respected (for EQUAL_TO + * and NOT_EQUAL_TO). Default is true. + */ + matchCase: true, + + /** + * APIProperty: lowerBoundary + * {Number} or {String} + * lower boundary for between comparisons. In the case of a String, this + * can be a combination of text and propertyNames in the form + * "literal ${propertyName}" + */ + lowerBoundary: null, + + /** + * APIProperty: upperBoundary + * {Number} or {String} + * upper boundary for between comparisons. In the case of a String, this + * can be a combination of text and propertyNames in the form + * "literal ${propertyName}" + */ + upperBoundary: null, + + /** + * Constructor: OpenLayers.Filter.Comparison + * Creates a comparison rule. + * + * Parameters: + * options - {Object} An optional object with properties to set on the + * rule + * + * Returns: + * {} + */ + initialize: function(options) { + OpenLayers.Filter.prototype.initialize.apply(this, [options]); + }, + + /** + * APIMethod: evaluate + * Evaluates this filter in a specific context. Should be implemented by + * subclasses. + * + * Parameters: + * context - {Object} Context to use in evaluating the filter. + * + * Returns: + * {Boolean} The filter applies. + */ + evaluate: function(context) { + var result = false; + switch(this.type) { + case OpenLayers.Filter.Comparison.EQUAL_TO: + var got = context[this.property]; + var exp = this.value; + if(!this.matchCase && + typeof got == "string" && typeof exp == "string") { + result = (got.toUpperCase() == exp.toUpperCase()); + } else { + result = (got == exp); + } + break; + case OpenLayers.Filter.Comparison.NOT_EQUAL_TO: + var got = context[this.property]; + var exp = this.value; + if(!this.matchCase && + typeof got == "string" && typeof exp == "string") { + result = (got.toUpperCase() != exp.toUpperCase()); + } else { + result = (got != exp); + } + break; + case OpenLayers.Filter.Comparison.LESS_THAN: + result = context[this.property] < this.value; + break; + case OpenLayers.Filter.Comparison.GREATER_THAN: + result = context[this.property] > this.value; + break; + case OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO: + result = context[this.property] <= this.value; + break; + case OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO: + result = context[this.property] >= this.value; + break; + case OpenLayers.Filter.Comparison.BETWEEN: + result = (context[this.property] >= this.lowerBoundary) && + (context[this.property] <= this.upperBoundary); + break; + case OpenLayers.Filter.Comparison.LIKE: + var regexp = new RegExp(this.value, "gi"); + result = regexp.test(context[this.property]); + break; + } + return result; + }, + + /** + * APIMethod: value2regex + * Converts the value of this rule into a regular expression string, + * according to the wildcard characters specified. This method has to + * be called after instantiation of this class, if the value is not a + * regular expression already. + * + * Parameters: + * wildCard - {} wildcard character in the above value, default + * is "*" + * singleChar - {) single-character wildcard in the above value + * default is "." + * escape - {) escape character in the above value, default is + * "!" + * + * Returns: + * {String} regular expression string + */ + value2regex: function(wildCard, singleChar, escapeChar) { + if (wildCard == ".") { + var msg = "'.' is an unsupported wildCard character for "+ + "OpenLayers.Filter.Comparison"; + OpenLayers.Console.error(msg); + return null; + } + + + // set UMN MapServer defaults for unspecified parameters + wildCard = wildCard ? wildCard : "*"; + singleChar = singleChar ? singleChar : "."; + escapeChar = escapeChar ? escapeChar : "!"; + + this.value = this.value.replace( + new RegExp("\\"+escapeChar+"(.|$)", "g"), "\\$1"); + this.value = this.value.replace( + new RegExp("\\"+singleChar, "g"), "."); + this.value = this.value.replace( + new RegExp("\\"+wildCard, "g"), ".*"); + this.value = this.value.replace( + new RegExp("\\\\.\\*", "g"), "\\"+wildCard); + this.value = this.value.replace( + new RegExp("\\\\\\.", "g"), "\\"+singleChar); + + return this.value; + }, + + /** + * Method: regex2value + * Convert the value of this rule from a regular expression string into an + * ogc literal string using a wildCard of *, a singleChar of ., and an + * escape of !. Leaves the property unmodified. + * + * Returns: + * {String} A string value. + */ + regex2value: function() { + + var value = this.value; + + // replace ! with !! + value = value.replace(/!/g, "!!"); + + // replace \. with !. (watching out for \\.) + value = value.replace(/(\\)?\\\./g, function($0, $1) { + return $1 ? $0 : "!."; + }); + + // replace \* with #* (watching out for \\*) + value = value.replace(/(\\)?\\\*/g, function($0, $1) { + return $1 ? $0 : "!*"; + }); + + // replace \\ with \ + value = value.replace(/\\\\/g, "\\"); + + // convert .* to * (the sequence #.* is not allowed) + value = value.replace(/\.\*/g, "*"); + + return value; + }, + + /** + * APIMethod: clone + * Clones this filter. + * + * Returns: + * {} Clone of this filter. + */ + clone: function() { + return OpenLayers.Util.extend(new OpenLayers.Filter.Comparison(), this); + }, + + CLASS_NAME: "OpenLayers.Filter.Comparison" +}); + + +OpenLayers.Filter.Comparison.EQUAL_TO = "=="; +OpenLayers.Filter.Comparison.NOT_EQUAL_TO = "!="; +OpenLayers.Filter.Comparison.LESS_THAN = "<"; +OpenLayers.Filter.Comparison.GREATER_THAN = ">"; +OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO = "<="; +OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO = ">="; +OpenLayers.Filter.Comparison.BETWEEN = ".."; +OpenLayers.Filter.Comparison.LIKE = "~"; diff --git a/openlayers/lib/OpenLayers/Filter/FeatureId.js b/openlayers/lib/OpenLayers/Filter/FeatureId.js new file mode 100644 index 0000000..9574dd5 --- /dev/null +++ b/openlayers/lib/OpenLayers/Filter/FeatureId.js @@ -0,0 +1,80 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Filter.js + */ + +/** + * Class: OpenLayers.Filter.FeatureId + * This class represents a ogc:FeatureId Filter, as being used for rule-based SLD + * styling + * + * Inherits from + * - + */ +OpenLayers.Filter.FeatureId = OpenLayers.Class(OpenLayers.Filter, { + + /** + * APIProperty: fids + * {Array(String)} Feature Ids to evaluate this rule against. To be passed + * To be passed inside the params object. + */ + fids: null, + + /** + * Constructor: OpenLayers.Filter.FeatureId + * Creates an ogc:FeatureId rule. + * + * Parameters: + * options - {Object} An optional object with properties to set on the + * rule + * + * Returns: + * {} + */ + initialize: function(options) { + this.fids = []; + OpenLayers.Filter.prototype.initialize.apply(this, [options]); + }, + + /** + * APIMethod: evaluate + * evaluates this rule for a specific feature + * + * Parameters: + * feature - {} feature to apply the rule to. + * For vector features, the check is run against the fid, + * for plain features against the id. + * + * Returns: + * {Boolean} true if the rule applies, false if it does not + */ + evaluate: function(feature) { + for (var i=0, len=this.fids.length; i} Clone of this filter. + */ + clone: function() { + var filter = new OpenLayers.Filter.FeatureId(); + OpenLayers.Util.extend(filter, this); + filter.fids = this.fids.slice(); + return filter; + }, + + CLASS_NAME: "OpenLayers.Filter.FeatureId" +}); diff --git a/openlayers/lib/OpenLayers/Filter/Logical.js b/openlayers/lib/OpenLayers/Filter/Logical.js new file mode 100644 index 0000000..a438af4 --- /dev/null +++ b/openlayers/lib/OpenLayers/Filter/Logical.js @@ -0,0 +1,117 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + + +/** + * @requires OpenLayers/Filter.js + */ + +/** + * Class: OpenLayers.Filter.Logical + * This class represents ogc:And, ogc:Or and ogc:Not rules. + * + * Inherits from + * - + */ +OpenLayers.Filter.Logical = OpenLayers.Class(OpenLayers.Filter, { + + /** + * APIProperty: filters + * {Array()} Child filters for this filter. + */ + filters: null, + + /** + * APIProperty: type + * {String} type of logical operator. Available types are: + * - OpenLayers.Filter.Logical.AND = "&&"; + * - OpenLayers.Filter.Logical.OR = "||"; + * - OpenLayers.Filter.Logical.NOT = "!"; + */ + type: null, + + /** + * Constructor: OpenLayers.Filter.Logical + * Creates a logical filter (And, Or, Not). + * + * Parameters: + * options - {Object} An optional object with properties to set on the + * filter. + * + * Returns: + * {} + */ + initialize: function(options) { + this.filters = []; + OpenLayers.Filter.prototype.initialize.apply(this, [options]); + }, + + /** + * APIMethod: destroy + * Remove reference to child filters. + */ + destroy: function() { + this.filters = null; + OpenLayers.Filter.prototype.destroy.apply(this); + }, + + /** + * APIMethod: evaluate + * Evaluates this filter in a specific context. Should be implemented by + * subclasses. + * + * Parameters: + * context - {Object} Context to use in evaluating the filter. + * + * Returns: + * {Boolean} The filter applies. + */ + evaluate: function(context) { + switch(this.type) { + case OpenLayers.Filter.Logical.AND: + for (var i=0, len=this.filters.length; i} Clone of this filter. + */ + clone: function() { + var filters = []; + for(var i=0, len=this.filters.length; i + */ +OpenLayers.Filter.Spatial = OpenLayers.Class(OpenLayers.Filter, { + + /** + * APIProperty: type + * {String} Type of spatial filter. + * + * The type should be one of: + * - OpenLayers.Filter.Spatial.BBOX + * - OpenLayers.Filter.Spatial.INTERSECTS + * - OpenLayers.Filter.Spatial.DWITHIN + * - OpenLayers.Filter.Spatial.WITHIN + * - OpenLayers.Filter.Spatial.CONTAINS + */ + type: null, + + /** + * APIProperty: property + * {String} Name of the context property to compare. + */ + property: null, + + /** + * APIProperty: value + * { || } The bounds or geometry + * to be used by the filter. Use bounds for BBOX filters and geometry + * for INTERSECTS or DWITHIN filters. + */ + value: null, + + /** + * APIProperty: distance + * {Number} The distance to use in a DWithin spatial filter. + */ + distance: null, + + /** + * APIProperty: distanceUnits + * {String} The units to use for the distance, e.g. 'm'. + */ + distanceUnits: null, + + /** + * Constructor: OpenLayers.Filter.Spatial + * Creates a spatial filter. + * + * Parameters: + * options - {Object} An optional object with properties to set on the + * filter. + * + * Returns: + * {} + */ + initialize: function(options) { + OpenLayers.Filter.prototype.initialize.apply(this, [options]); + }, + + /** + * Method: evaluate + * Evaluates this filter for a specific feature. + * + * Parameters: + * feature - {} feature to apply the filter to. + * + * Returns: + * {Boolean} The feature meets filter criteria. + */ + evaluate: function(feature) { + var intersect = false; + switch(this.type) { + case OpenLayers.Filter.Spatial.BBOX: + case OpenLayers.Filter.Spatial.INTERSECTS: + if(feature.geometry) { + var geom = this.value; + if(this.value.CLASS_NAME == "OpenLayers.Bounds") { + geom = this.value.toGeometry(); + } + if(feature.geometry.intersects(geom)) { + intersect = true; + } + } + break; + default: + OpenLayers.Console.error( + OpenLayers.i18n("filterEvaluateNotImplemented")); + break; + } + return intersect; + }, + + /** + * APIMethod: clone + * Clones this filter. + * + * Returns: + * {} Clone of this filter. + */ + clone: function() { + var options = OpenLayers.Util.applyDefaults({ + value: this.value && this.value.clone && this.value.clone() + }, this); + return new OpenLayers.Filter.Spatial(options); + }, + CLASS_NAME: "OpenLayers.Filter.Spatial" +}); + +OpenLayers.Filter.Spatial.BBOX = "BBOX"; +OpenLayers.Filter.Spatial.INTERSECTS = "INTERSECTS"; +OpenLayers.Filter.Spatial.DWITHIN = "DWITHIN"; +OpenLayers.Filter.Spatial.WITHIN = "WITHIN"; +OpenLayers.Filter.Spatial.CONTAINS = "CONTAINS"; diff --git a/openlayers/lib/OpenLayers/Format.js b/openlayers/lib/OpenLayers/Format.js new file mode 100644 index 0000000..0a11e39 --- /dev/null +++ b/openlayers/lib/OpenLayers/Format.js @@ -0,0 +1,122 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Util.js + * @requires OpenLayers/Console.js + */ + +/** + * Class: OpenLayers.Format + * Base class for format reading/writing a variety of formats. Subclasses + * of OpenLayers.Format are expected to have read and write methods. + */ +OpenLayers.Format = OpenLayers.Class({ + + /** + * Property: options + * {Object} A reference to options passed to the constructor. + */ + options: null, + + /** + * APIProperty: externalProjection + * {} When passed a externalProjection and + * internalProjection, the format will reproject the geometries it + * reads or writes. The externalProjection is the projection used by + * the content which is passed into read or which comes out of write. + * In order to reproject, a projection transformation function for the + * specified projections must be available. This support may be + * provided via proj4js or via a custom transformation function. See + * {} for more information on + * custom transformations. + */ + externalProjection: null, + + /** + * APIProperty: internalProjection + * {} When passed a externalProjection and + * internalProjection, the format will reproject the geometries it + * reads or writes. The internalProjection is the projection used by + * the geometries which are returned by read or which are passed into + * write. In order to reproject, a projection transformation function + * for the specified projections must be available. This support may be + * provided via proj4js or via a custom transformation function. See + * {} for more information on + * custom transformations. + */ + internalProjection: null, + + /** + * APIProperty: data + * {Object} When is true, this is the parsed string sent to + * . + */ + data: null, + + /** + * APIProperty: keepData + * {Object} Maintain a reference () to the most recently read data. + * Default is false. + */ + keepData: false, + + /** + * Constructor: OpenLayers.Format + * Instances of this class are not useful. See one of the subclasses. + * + * Parameters: + * options - {Object} An optional object with properties to set on the + * format + * + * Valid options: + * keepData - {Boolean} If true, upon , the data property will be + * set to the parsed object (e.g. the json or xml object). + * + * Returns: + * An instance of OpenLayers.Format + */ + initialize: function(options) { + OpenLayers.Util.extend(this, options); + this.options = options; + }, + + /** + * APIMethod: destroy + * Clean up. + */ + destroy: function() { + }, + + /** + * Method: read + * Read data from a string, and return an object whose type depends on the + * subclass. + * + * Parameters: + * data - {string} Data to read/parse. + * + * Returns: + * Depends on the subclass + */ + read: function(data) { + OpenLayers.Console.userError(OpenLayers.i18n("readNotImplemented")); + }, + + /** + * Method: write + * Accept an object, and return a string. + * + * Parameters: + * object - {Object} Object to be serialized + * + * Returns: + * {String} A string representation of the object. + */ + write: function(object) { + OpenLayers.Console.userError(OpenLayers.i18n("writeNotImplemented")); + }, + + CLASS_NAME: "OpenLayers.Format" +}); diff --git a/openlayers/lib/OpenLayers/Format/ArcXML.js b/openlayers/lib/OpenLayers/Format/ArcXML.js new file mode 100644 index 0000000..ac195f8 --- /dev/null +++ b/openlayers/lib/OpenLayers/Format/ArcXML.js @@ -0,0 +1,1025 @@ +/* Copyright (c) 2009 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Format/XML.js + * @requires OpenLayers/Geometry/Polygon.js + * @requires OpenLayers/Geometry/Point.js + * @requires OpenLayers/Geometry/MultiPolygon.js + * @requires OpenLayers/Geometry/LinearRing.js + */ + +/** + * Class: OpenLayers.Format.ArcXML + * Read/Wite ArcXML. Create a new instance with the + * constructor. + * + * Inherits from: + * - + */ +OpenLayers.Format.ArcXML = OpenLayers.Class(OpenLayers.Format.XML, { + + /** + * Property: fontStyleKeys + * {Array} List of keys used in font styling. + */ + fontStyleKeys: [ + 'antialiasing', 'blockout', 'font', 'fontcolor','fontsize', 'fontstyle', + 'glowing', 'interval', 'outline', 'printmode', 'shadow', 'transparency' + ], + + /** + * Property: request + * A get_image request destined for an ArcIMS server. + */ + request: null, + + /** + * Property: response + * A parsed response from an ArcIMS server. + */ + response: null, + + /** + * Constructor: OpenLayers.Format.ArcXML + * Create a new parser/writer for ArcXML. Create an instance of this class + * to begin authoring a request to an ArcIMS service. This is used + * primarily by the ArcIMS layer, but could be used to do other wild + * stuff, like geocoding. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + */ + initialize: function(options) { + this.request = new OpenLayers.Format.ArcXML.Request(); + this.response = new OpenLayers.Format.ArcXML.Response(); + + if (options) { + if (options.requesttype == "feature") { + this.request.get_image = null; + + var qry = this.request.get_feature.query; + this.addCoordSys(qry.featurecoordsys, options.featureCoordSys); + this.addCoordSys(qry.filtercoordsys, options.filterCoordSys); + + if (options.polygon) { + qry.isspatial = true; + qry.spatialfilter.polygon = options.polygon; + } else if (options.envelope) { + qry.isspatial = true; + qry.spatialfilter.envelope = {minx:0, miny:0, maxx:0, maxy:0}; + this.parseEnvelope(qry.spatialfilter.envelope, options.envelope); + } + } else if (options.requesttype == "image") { + this.request.get_feature = null; + + var props = this.request.get_image.properties; + this.parseEnvelope(props.envelope, options.envelope); + + this.addLayers(props.layerlist, options.layers); + this.addImageSize(props.imagesize, options.tileSize); + this.addCoordSys(props.featurecoordsys, options.featureCoordSys); + this.addCoordSys(props.filtercoordsys, options.filterCoordSys); + } else { + // if an arcxml object is being created with no request type, it is + // probably going to consume a response, so do not throw an error if + // the requesttype is not defined + this.request = null; + } + } + + OpenLayers.Format.XML.prototype.initialize.apply(this, [options]); + }, + + /** + * Method: parseEnvelope + * Parse an array of coordinates into an ArcXML envelope structure. + * + * Parameters: + * env - {Object} An envelope object that will contain the parsed coordinates. + * arr - {Array(double)} An array of coordinates in the order: [ minx, miny, maxx, maxy ] + */ + parseEnvelope: function(env, arr) { + if (arr && arr.length == 4) { + env.minx = arr[0]; + env.miny = arr[1]; + env.maxx = arr[2]; + env.maxy = arr[3]; + } + }, + + /** + * Method: addLayers + * Add a collection of layers to another collection of layers. Each layer in the list is tuple of + * { id, visible }. These layer collections represent the + * /ARCXML/REQUEST/get_image/PROPERTIES/LAYERLIST/LAYERDEF items in ArcXML + * + * TODO: Add support for dynamic layer rendering. + * + * Parameters: + * ll - {Array({id,visible})} A list of layer definitions. + * lyrs - {Array({id,visible})} A list of layer definitions. + */ + addLayers: function(ll, lyrs) { + for(var lind = 0, len=lyrs.length; lind < len; lind++) { + ll.push(lyrs[lind]); + } + }, + + /** + * Method: addImageSize + * Set the size of the requested image. + * + * Parameters: + * imsize - {Object} An ArcXML imagesize object. + * olsize - {OpenLayers.Size} The image size to set. + */ + addImageSize: function(imsize, olsize) { + if (olsize !== null) { + imsize.width = olsize.w; + imsize.height = olsize.h; + imsize.printwidth = olsize.w; + imsize.printheight = olsize.h; + } + }, + + /** + * Method: addCoordSys + * Add the coordinate system information to an object. The object may be + * + * Parameters: + * featOrFilt - {Object} A featurecoordsys or filtercoordsys ArcXML structure. + * fsys - {String} or {OpenLayers.Projection} or {filtercoordsys} or + * {featurecoordsys} A projection representation. If it's a {String}, + * the value is assumed to be the SRID. If it's a {OpenLayers.Projection} + * AND Proj4js is available, the projection number and name are extracted + * from there. If it's a filter or feature ArcXML structure, it is copied. + */ + addCoordSys: function(featOrFilt, fsys) { + if (typeof fsys == "string") { + featOrFilt.id = parseInt(fsys); + featOrFilt.string = fsys; + } + // is this a proj4js instance? + else if (typeof fsys == "object" && fsys.proj !== null){ + featOrFilt.id = fsys.proj.srsProjNumber; + featOrFilt.string = fsys.proj.srsCode; + } else { + featOrFilt = fsys; + } + }, + + /** + * APIMethod: iserror + * Check to see if the response from the server was an error. + * + * Parameters: + * data - {String} or {DOMElement} data to read/parse. If nothing is supplied, + * the current response is examined. + * + * Returns: + * {Boolean} true if the response was an error. + */ + iserror: function(data) { + var ret = null; + + if (!data) { + ret = (this.response.error !== ''); + } else { + data = OpenLayers.Format.XML.prototype.read.apply(this, [data]); + var errorNodes = data.documentElement.getElementsByTagName("ERROR"); + ret = (errorNodes !== null && errorNodes.length > 0); + } + + return ret; + }, + + /** + * APIMethod: read + * Read data from a string, and return an response. + * + * Parameters: + * data - {String} or {DOMElement} data to read/parse. + * + * Returns: + * {OpenLayers.Format.ArcXML.Response} An ArcXML response. Note that this response + * data may change in the future. + */ + read: function(data) { + if(typeof data == "string") { + data = OpenLayers.Format.XML.prototype.read.apply(this, [data]); + } + + var arcNode = null; + if (data && data.documentElement) { + if(data.documentElement.nodeName == "ARCXML") { + arcNode = data.documentElement; + } else { + arcNode = data.documentElement.getElementsByTagName("ARCXML")[0]; + } + } + + if (!arcNode) { + var error, source; + try { + error = data.firstChild.nodeValue; + source = data.firstChild.childNodes[1].firstChild.nodeValue; + } catch (err) { + // pass + } + throw { + message: "Error parsing the ArcXML request", + error: error, + source: source + }; + } + + var response = this.parseResponse(arcNode); + return response; + }, + + /** + * APIMethod: write + * Generate an ArcXml document string for sending to an ArcIMS server. + * + * Returns: + * {String} A string representing the ArcXML document request. + */ + write: function(request) { + if (!request) { + request = this.request; + } + var root = this.createElementNS("", "ARCXML"); + root.setAttribute("version","1.1"); + + var reqElem = this.createElementNS("", "REQUEST"); + + if (request.get_image != null) { + var getElem = this.createElementNS("", "GET_IMAGE"); + reqElem.appendChild(getElem); + + var propElem = this.createElementNS("", "PROPERTIES"); + getElem.appendChild(propElem); + + var props = request.get_image.properties; + if (props.featurecoordsys != null) { + var feat = this.createElementNS("", "FEATURECOORDSYS"); + propElem.appendChild(feat); + + if (props.featurecoordsys.id === 0) { + feat.setAttribute("string", props.featurecoordsys['string']); + } + else { + feat.setAttribute("id", props.featurecoordsys.id); + } + } + + if (props.filtercoordsys != null) { + var filt = this.createElementNS("", "FILTERCOORDSYS"); + propElem.appendChild(filt); + + if (props.filtercoordsys.id === 0) { + filt.setAttribute("string", props.filtercoordsys.string); + } + else { + filt.setAttribute("id", props.filtercoordsys.id); + } + } + + if (props.envelope != null) { + var env = this.createElementNS("", "ENVELOPE"); + propElem.appendChild(env); + + env.setAttribute("minx", props.envelope.minx); + env.setAttribute("miny", props.envelope.miny); + env.setAttribute("maxx", props.envelope.maxx); + env.setAttribute("maxy", props.envelope.maxy); + } + + var imagesz = this.createElementNS("", "IMAGESIZE"); + propElem.appendChild(imagesz); + + imagesz.setAttribute("height", props.imagesize.height); + imagesz.setAttribute("width", props.imagesize.width); + + if (props.imagesize.height != props.imagesize.printheight || + props.imagesize.width != props.imagesize.printwidth) { + imagesz.setAttribute("printheight", props.imagesize.printheight); + imagesz.setArrtibute("printwidth", props.imagesize.printwidth); + } + + if (props.background != null) { + var backgrnd = this.createElementNS("", "BACKGROUND"); + propElem.appendChild(backgrnd); + + backgrnd.setAttribute("color", + props.background.color.r + "," + + props.background.color.g + "," + + props.background.color.b); + + if (props.background.transcolor !== null) { + backgrnd.setAttribute("transcolor", + props.background.transcolor.r + "," + + props.background.transcolor.g + "," + + props.background.transcolor.b); + } + } + + if (props.layerlist != null && props.layerlist.length > 0) { + var layerlst = this.createElementNS("", "LAYERLIST"); + propElem.appendChild(layerlst); + + for (var ld = 0; ld < props.layerlist.length; ld++) { + var ldef = this.createElementNS("", "LAYERDEF"); + layerlst.appendChild(ldef); + + ldef.setAttribute("id", props.layerlist[ld].id); + ldef.setAttribute("visible", props.layerlist[ld].visible); + + if (typeof props.layerlist[ld].query == "object") { + var query = props.layerlist[ld].query; + + if (query.where.length < 0) { + continue; + } + + var queryElem = null; + if (typeof query.spatialfilter == "boolean" && query.spatialfilter) { + // handle spatial filter madness + queryElem = this.createElementNS("", "SPATIALQUERY"); + } + else { + queryElem = this.createElementNS("", "QUERY"); + } + + queryElem.setAttribute("where", query.where); + + if (typeof query.accuracy == "number" && query.accuracy > 0) { + queryElem.setAttribute("accuracy", query.accuracy); + } + if (typeof query.featurelimit == "number" && query.featurelimit < 2000) { + queryElem.setAttribute("featurelimit", query.featurelimit); + } + if (typeof query.subfields == "string" && query.subfields != "#ALL#") { + queryElem.setAttribute("subfields", query.subfields); + } + if (typeof query.joinexpression == "string" && query.joinexpression.length > 0) { + queryElem.setAttribute("joinexpression", query.joinexpression); + } + if (typeof query.jointables == "string" && query.jointables.length > 0) { + queryElem.setAttribute("jointables", query.jointables); + } + + ldef.appendChild(queryElem); + } + + if (typeof props.layerlist[ld].renderer == "object") { + this.addRenderer(ldef, props.layerlist[ld].renderer); + } + } + } + } else if (request.get_feature != null) { + var getElem = this.createElementNS("", "GET_FEATURES"); + getElem.setAttribute("outputmode", "newxml"); + getElem.setAttribute("checkesc", "true"); + + if (request.get_feature.geometry) { + getElem.setAttribute("geometry", request.get_feature.geometry); + } + else { + getElem.setAttribute("geometry", "false"); + } + + if (request.get_feature.compact) { + getElem.setAttribute("compact", request.get_feature.compact); + } + + if (request.get_feature.featurelimit == "number") { + getElem.setAttribute("featurelimit", request.get_feature.featurelimit); + } + + getElem.setAttribute("globalenvelope", "true"); + reqElem.appendChild(getElem); + + if (request.get_feature.layer != null && request.get_feature.layer.length > 0) { + var lyrElem = this.createElementNS("", "LAYER"); + lyrElem.setAttribute("id", request.get_feature.layer); + getElem.appendChild(lyrElem); + } + + var fquery = request.get_feature.query; + if (fquery != null) { + var qElem = null; + if (fquery.isspatial) { + qElem = this.createElementNS("", "SPATIALQUERY"); + } else { + qElem = this.createElementNS("", "QUERY"); + } + getElem.appendChild(qElem); + + if (typeof fquery.accuracy == "number") { + qElem.setAttribute("accuracy", fquery.accuracy); + } + //qElem.setAttribute("featurelimit", "5"); + + if (fquery.featurecoordsys != null) { + var fcsElem1 = this.createElementNS("", "FEATURECOORDSYS"); + + if (fquery.featurecoordsys.id == 0) { + fcsElem1.setAttribute("string", fquery.featurecoordsys.string); + } else { + fcsElem1.setAttribute("id", fquery.featurecoordsys.id); + } + qElem.appendChild(fcsElem1); + } + + if (fquery.filtercoordsys != null) { + var fcsElem2 = this.createElementNS("", "FILTERCOORDSYS"); + + if (fquery.filtercoordsys.id === 0) { + fcsElem2.setAttribute("string", fquery.filtercoordsys.string); + } else { + fcsElem2.setAttribute("id", fquery.filtercoordsys.id); + } + qElem.appendChild(fcsElem2); + } + + if (fquery.buffer > 0) { + var bufElem = this.createElementNS("", "BUFFER"); + bufElem.setAttribute("distance", fquery.buffer); + qElem.appendChild(bufElem); + } + + if (fquery.isspatial) { + var spfElem = this.createElementNS("", "SPATIALFILTER"); + spfElem.setAttribute("relation", fquery.spatialfilter.relation); + qElem.appendChild(spfElem); + + if (fquery.spatialfilter.envelope) { + var envElem = this.createElementNS("", "ENVELOPE"); + envElem.setAttribute("minx", fquery.spatialfilter.envelope.minx); + envElem.setAttribute("miny", fquery.spatialfilter.envelope.miny); + envElem.setAttribute("maxx", fquery.spatialfilter.envelope.maxx); + envElem.setAttribute("maxy", fquery.spatialfilter.envelope.maxy); + spfElem.appendChild(envElem); + } else if(typeof fquery.spatialfilter.polygon == "object") { + spfElem.appendChild(this.writePolygonGeometry(fquery.spatialfilter.polygon)); + } + } + + if (fquery.where != null && fquery.where.length > 0) { + qElem.setAttribute("where", fquery.where); + } + } + } + + root.appendChild(reqElem); + + return OpenLayers.Format.XML.prototype.write.apply(this, [root]); + }, + + + addGroupRenderer: function(ldef, toprenderer) { + var topRelem = this.createElementNS("", "GROUPRENDERER"); + ldef.appendChild(topRelem); + + for (var rind = 0; rind < toprenderer.length; rind++) { + var renderer = toprenderer[rind]; + this.addRenderer(topRelem, renderer); + } + }, + + + addRenderer: function(topRelem, renderer) { + if (renderer instanceof Array) { + this.addGroupRenderer(topRelem, renderer); + } else { + var renderElem = this.createElementNS("", renderer.type.toUpperCase() + "RENDERER"); + topRelem.appendChild(renderElem); + + if (renderElem.tagName == "VALUEMAPRENDERER") { + this.addValueMapRenderer(renderElem, renderer); + } else if (renderElem.tagName == "VALUEMAPLABELRENDERER") { + this.addValueMapLabelRenderer(renderElem, renderer); + } else if (renderElem.tagName == "SIMPLELABELRENDERER") { + this.addSimpleLabelRenderer(renderElem, renderer); + } else if (renderElem.tagName == "SCALEDEPENDENTRENDERER") { + this.addScaleDependentRenderer(renderElem, renderer); + } + } + }, + + + addScaleDependentRenderer: function(renderElem, renderer) { + if (typeof renderer.lower == "string" || typeof renderer.lower == "number") { + renderElem.setAttribute("lower", renderer.lower); + } + if (typeof renderer.upper == "string" || typeof renderer.upper == "number") { + renderElem.setAttribute("upper", renderer.upper); + } + + this.addRenderer(renderElem, renderer.renderer); + }, + + + addValueMapLabelRenderer: function(renderElem, renderer) { + renderElem.setAttribute("lookupfield", renderer.lookupfield); + renderElem.setAttribute("labelfield", renderer.labelfield); + + if (typeof renderer.exacts == "object") { + for (var ext=0, extlen=renderer.exacts.length; ext 0) { + response.error = this.getChildValue(errorNode, "Unknown error."); + } else { + var responseNode = data.getElementsByTagName("RESPONSE"); + + if (responseNode == null || responseNode.length == 0) { + response.error = "No RESPONSE tag found in ArcXML response."; + return response; + } + + var rtype = responseNode[0].firstChild.nodeName; + if (rtype == "#text") { + rtype = responseNode[0].firstChild.nextSibling.nodeName; + } + + if (rtype == "IMAGE") { + var envelopeNode = data.getElementsByTagName("ENVELOPE"); + var outputNode = data.getElementsByTagName("OUTPUT"); + + if (envelopeNode == null || envelopeNode.length == 0) { + response.error = "No ENVELOPE tag found in ArcXML response."; + } else if (outputNode == null || outputNode.length == 0) { + response.error = "No OUTPUT tag found in ArcXML response."; + } else { + var envAttr = this.parseAttributes(envelopeNode[0]); + var outputAttr = this.parseAttributes(outputNode[0]); + + if (typeof outputAttr.type == "string") { + response.image = { + envelope: envAttr, + output: { + type: outputAttr.type, + data: this.getChildValue(outputNode[0]) + } + }; + } else { + response.image = { envelope: envAttr, output: outputAttr }; + } + } + } else if (rtype == "FEATURES") { + var features = responseNode[0].getElementsByTagName("FEATURES"); + + // get the feature count + var featureCount = features[0].getElementsByTagName("FEATURECOUNT"); + response.features.featurecount = featureCount[0].getAttribute("count"); + + if (response.features.featurecount > 0) { + // get the feature envelope + var envelope = features[0].getElementsByTagName("ENVELOPE"); + response.features.envelope = this.parseAttributes(envelope[0], typeof(0)); + + // get the field values per feature + var featureList = features[0].getElementsByTagName("FEATURE"); + for (var fn = 0; fn < featureList.length; fn++) { + var feature = new OpenLayers.Feature.Vector(); + var fields = featureList[fn].getElementsByTagName("FIELD"); + + for (var fdn = 0; fdn < fields.length; fdn++) { + var fieldName = fields[fdn].getAttribute("name"); + var fieldValue = fields[fdn].getAttribute("value"); + feature.attributes[ fieldName ] = fieldValue; + } + + var geom = featureList[fn].getElementsByTagName("POLYGON"); + + if (geom.length > 0) { + // if there is a polygon, create an openlayers polygon, and assign + // it to the .geometry property of the feature + var ring = geom[0].getElementsByTagName("RING"); + + var polys = []; + for (var rn = 0; rn < ring.length; rn++) { + var linearRings = []; + linearRings.push(this.parsePointGeometry(ring[rn])); + + var holes = ring[rn].getElementsByTagName("HOLE"); + for (var hn = 0; hn < holes.length; hn++) { + linearRings.push(this.parsePointGeometry(holes[hn])); + } + holes = null; + polys.push(new OpenLayers.Geometry.Polygon(linearRings)); + linearRings = null; + } + ring = null; + + if (polys.length == 1) { + feature.geometry = polys[0]; + } else + { + feature.geometry = new OpenLayers.Geometry.MultiPolygon(polys); + } + } + + response.features.feature.push(feature); + } + } + } else { + response.error = "Unidentified response type."; + } + } + return response; + }, + + + /** + * Method: parseAttributes + * + * Parameters: + * node - {} An element to parse attributes from. + * + * Returns: + * {Object} An attributes object, with properties set to attribute values. + */ + parseAttributes: function(node,type) { + var attributes = {}; + for(var attr = 0; attr < node.attributes.length; attr++) { + if (type == "number") { + attributes[node.attributes[attr].nodeName] = parseFloat(node.attributes[attr].nodeValue); + } else { + attributes[node.attributes[attr].nodeName] = node.attributes[attr].nodeValue; + } + } + return attributes; + }, + + + /** + * Method: parsePointGeometry + * + * Parameters: + * node - {} An element to parse or arcxml data from. + * + * Returns: + * {OpenLayers.Geometry.LinearRing} A linear ring represented by the node's points. + */ + parsePointGeometry: function(node) { + var ringPoints = []; + var coords = node.getElementsByTagName("COORDS"); + + if (coords.length > 0) { + // if coords is present, it's the only coords item + var coordArr = this.getChildValue(coords[0]); + coordArr = coordArr.split(/;/); + for (var cn = 0; cn < coordArr.length; cn++) { + var coordItems = coordArr[cn].split(/ /); + ringPoints.push(new OpenLayers.Geometry.Point(parseFloat(coordItems[0]), parseFloat(coordItems[1]))); + } + coords = null; + } else { + var point = node.getElementsByTagName("POINT"); + if (point.length > 0) { + for (var pn = 0; pn < point.length; pn++) { + ringPoints.push( + new OpenLayers.Geometry.Point( + parseFloat(point[pn].getAttribute("x")), + parseFloat(point[pn].getAttribute("y")) + ) + ); + } + } + point = null; + } + + return new OpenLayers.Geometry.LinearRing(ringPoints); + }, + + CLASS_NAME: "OpenLayers.Format.ArcXML" +}); + +OpenLayers.Format.ArcXML.Request = OpenLayers.Class({ + initialize: function(params) { + var defaults = { + get_image: { + properties: { + background: null, + /*{ + color: { r:255, g:255, b:255 }, + transcolor: null + },*/ + draw: true, + envelope: { + minx: 0, + miny: 0, + maxx: 0, + maxy: 0 + }, + featurecoordsys: { + id:0, + string:"", + datumtransformid:0, + datumtransformstring:"" + }, + filtercoordsys:{ + id:0, + string:"", + datumtransformid:0, + datumtransformstring:"" + }, + imagesize:{ + height:0, + width:0, + dpi:96, + printheight:0, + printwidth:0, + scalesymbols:false + }, + layerlist:[], + /* no support for legends */ + output:{ + baseurl:"", + legendbaseurl:"", + legendname:"", + legendpath:"", + legendurl:"", + name:"", + path:"", + type:"jpg", + url:"" + } + } + }, + + get_feature: { + layer: "", + query: { + isspatial: false, + featurecoordsys: { + id:0, + string:"", + datumtransformid:0, + datumtransformstring:"" + }, + filtercoordsys: { + id:0, + string:"", + datumtransformid:0, + datumtransformstring:"" + }, + buffer:0, + where:"", + spatialfilter: { + relation: "envelope_intersection", + envelope: null + } + } + }, + + environment: { + separators: { + cs:" ", + ts:";" + } + }, + + layer: [], + workspaces: [] + }; + + return OpenLayers.Util.extend(this, defaults); + }, + + CLASS_NAME: "OpenLayers.Format.ArcXML.Request" +}); + +OpenLayers.Format.ArcXML.Response = OpenLayers.Class({ + initialize: function(params) { + var defaults = { + image: { + envelope:null, + output:'' + }, + + features: { + featurecount: 0, + envelope: null, + feature: [] + }, + + error:'' + }; + + return OpenLayers.Util.extend(this, defaults); + }, + + CLASS_NAME: "OpenLayers.Format.ArcXML.Response" +}); diff --git a/openlayers/lib/OpenLayers/Format/ArcXML/Features.js b/openlayers/lib/OpenLayers/Format/ArcXML/Features.js new file mode 100644 index 0000000..7e71feb --- /dev/null +++ b/openlayers/lib/OpenLayers/Format/ArcXML/Features.js @@ -0,0 +1,48 @@ +/* Copyright (c) 2009 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Format/ArcXML.js + */ + +/** + * Class: OpenLayers.Format.ArcXML.Features + * Read/Wite ArcXML features. Create a new instance with the + * constructor. + * + * Inherits from: + * - + */ +OpenLayers.Format.ArcXML.Features = OpenLayers.Class(OpenLayers.Format.XML, { + + /** + * Constructor: OpenLayers.Format.ArcXML.Features + * Create a new parser/writer for ArcXML Features. Create an instance of this class + * to get a set of features from an ArcXML response. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + */ + initialize: function(options) { + OpenLayers.Format.XML.prototype.initialize.apply(this, [options]); + }, + + /** + * APIMethod: read + * Read data from a string of ArcXML, and return a set of OpenLayers features. + * + * Parameters: + * data - {String} or {DOMElement} data to read/parse. + * + * Returns: + * {Array()} A collection of features. + */ + read: function(data) { + var axl = new OpenLayers.Format.ArcXML(); + var parsed = axl.read(data); + + return parsed.features.feature; + } +}); diff --git a/openlayers/lib/OpenLayers/Format/Filter.js b/openlayers/lib/OpenLayers/Format/Filter.js new file mode 100644 index 0000000..142ffb7 --- /dev/null +++ b/openlayers/lib/OpenLayers/Format/Filter.js @@ -0,0 +1,114 @@ +/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license. + * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt + * for the full text of the license. */ + +/** + * @requires OpenLayers/Format/XML.js + * @requires OpenLayers/Filter/FeatureId.js + * @requires OpenLayers/Filter/Logical.js + * @requires OpenLayers/Filter/Comparison.js + */ + +/** + * Class: OpenLayers.Format.Filter + * Read/Wite ogc:Filter. Create a new instance with the + * constructor. + * + * Inherits from: + * - + */ +OpenLayers.Format.Filter = OpenLayers.Class(OpenLayers.Format.XML, { + + /** + * APIProperty: defaultVersion + * {String} Version number to assume if none found. Default is "1.0.0". + */ + defaultVersion: "1.0.0", + + /** + * APIProperty: version + * {String} Specify a version string if one is known. + */ + version: null, + + /** + * Property: parser + * {Object} Instance of the versioned parser. Cached for multiple read and + * write calls of the same version. + */ + parser: null, + + /** + * Constructor: OpenLayers.Format.Filter + * Create a new parser for Filter. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + */ + initialize: function(options) { + OpenLayers.Format.XML.prototype.initialize.apply(this, [options]); + }, + + /** + * APIMethod: write + * Write an ogc:Filter given a filter object. + * + * Parameters: + * filter - {} An filter. + * options - {Object} Optional configuration object. + * + * Returns: + * {Elment} An ogc:Filter element node. + */ + write: function(filter, options) { + var version = (options && options.version) || + this.version || this.defaultVersion; + if(!this.parser || this.parser.VERSION != version) { + var format = OpenLayers.Format.Filter[ + "v" + version.replace(/\./g, "_") + ]; + if(!format) { + throw "Can't find a Filter parser for version " + + version; + } + this.parser = new format(this.options); + } + return this.parser.write(filter); + //return OpenLayers.Format.XML.prototype.write.apply(this, [root]); + }, + + /** + * APIMethod: read + * Read and Filter doc and return an object representing the Filter. + * + * Parameters: + * data - {String | DOMElement} Data to read. + * + * Returns: + * {} A filter object. + */ + read: function(data) { + if(typeof data == "string") { + data = OpenLayers.Format.XML.prototype.read.apply(this, [data]); + } + var version = this.version; + if(!version) { + version = this.defaultVersion; + } + if(!this.parser || this.parser.VERSION != version) { + var format = OpenLayers.Format.Filter[ + "v" + version.replace(/\./g, "_") + ]; + if(!format) { + throw "Can't find a Filter parser for version " + + version; + } + this.parser = new format(this.options); + } + var filter = this.parser.read(data); + return filter; + }, + + CLASS_NAME: "OpenLayers.Format.Filter" +}); diff --git a/openlayers/lib/OpenLayers/Format/Filter/v1.js b/openlayers/lib/OpenLayers/Format/Filter/v1.js new file mode 100644 index 0000000..244e61d --- /dev/null +++ b/openlayers/lib/OpenLayers/Format/Filter/v1.js @@ -0,0 +1,449 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Format/Filter.js + * @requires OpenLayers/Format/XML.js + */ + +/** + * Class: OpenLayers.Format.Filter.v1 + * Superclass for Filter version 1 parsers. + * + * Inherits from: + * - + */ +OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, { + + /** + * Property: namespaces + * {Object} Mapping of namespace aliases to namespace URIs. + */ + namespaces: { + ogc: "http://www.opengis.net/ogc", + gml: "http://www.opengis.net/gml", + xlink: "http://www.w3.org/1999/xlink", + xsi: "http://www.w3.org/2001/XMLSchema-instance" + }, + + /** + * Property: defaultPrefix + */ + defaultPrefix: "ogc", + + /** + * Property: schemaLocation + * {String} Schema location for a particular minor version. + */ + schemaLocation: null, + + /** + * Constructor: OpenLayers.Format.Filter.v1 + * Instances of this class are not created directly. Use the + * constructor instead. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + */ + initialize: function(options) { + OpenLayers.Format.XML.prototype.initialize.apply(this, [options]); + }, + + /** + * Method: read + * + * Parameters: + * data - {DOMElement} A Filter document element. + * + * Returns: + * {} A filter object. + */ + read: function(data) { + var obj = {}; + this.readers.ogc["Filter"].apply(this, [data, obj]); + return obj.filter; + }, + + /** + * Property: readers + * Contains public functions, grouped by namespace prefix, that will + * be applied when a namespaced node is found matching the function + * name. The function will be applied in the scope of this parser + * with two arguments: the node being read and a context object passed + * from the parent. + */ + readers: { + "ogc": { + "Filter": function(node, parent) { + // Filters correspond to subclasses of OpenLayers.Filter. + // Since they contain information we don't persist, we + // create a temporary object and then pass on the filter + // (ogc:Filter) to the parent obj. + var obj = { + fids: [], + filters: [] + }; + this.readChildNodes(node, obj); + if(obj.fids.length > 0) { + parent.filter = new OpenLayers.Filter.FeatureId({ + fids: obj.fids + }); + } else if(obj.filters.length > 0) { + parent.filter = obj.filters[0]; + } + }, + "FeatureId": function(node, obj) { + var fid = node.getAttribute("fid"); + if(fid) { + obj.fids.push(fid); + } + }, + "And": function(node, obj) { + var filter = new OpenLayers.Filter.Logical({ + type: OpenLayers.Filter.Logical.AND + }); + this.readChildNodes(node, filter); + obj.filters.push(filter); + }, + "Or": function(node, obj) { + var filter = new OpenLayers.Filter.Logical({ + type: OpenLayers.Filter.Logical.OR + }); + this.readChildNodes(node, filter); + obj.filters.push(filter); + }, + "Not": function(node, obj) { + var filter = new OpenLayers.Filter.Logical({ + type: OpenLayers.Filter.Logical.NOT + }); + this.readChildNodes(node, filter); + obj.filters.push(filter); + }, + "PropertyIsLessThan": function(node, obj) { + var filter = new OpenLayers.Filter.Comparison({ + type: OpenLayers.Filter.Comparison.LESS_THAN + }); + this.readChildNodes(node, filter); + obj.filters.push(filter); + }, + "PropertyIsGreaterThan": function(node, obj) { + var filter = new OpenLayers.Filter.Comparison({ + type: OpenLayers.Filter.Comparison.GREATER_THAN + }); + this.readChildNodes(node, filter); + obj.filters.push(filter); + }, + "PropertyIsLessThanOrEqualTo": function(node, obj) { + var filter = new OpenLayers.Filter.Comparison({ + type: OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO + }); + this.readChildNodes(node, filter); + obj.filters.push(filter); + }, + "PropertyIsGreaterThanOrEqualTo": function(node, obj) { + var filter = new OpenLayers.Filter.Comparison({ + type: OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO + }); + this.readChildNodes(node, filter); + obj.filters.push(filter); + }, + "PropertyIsBetween": function(node, obj) { + var filter = new OpenLayers.Filter.Comparison({ + type: OpenLayers.Filter.Comparison.BETWEEN + }); + this.readChildNodes(node, filter); + obj.filters.push(filter); + }, + "PropertyIsLike": function(node, obj) { + var filter = new OpenLayers.Filter.Comparison({ + type: OpenLayers.Filter.Comparison.LIKE + }); + this.readChildNodes(node, filter); + var wildCard = node.getAttribute("wildCard"); + var singleChar = node.getAttribute("singleChar"); + var esc = node.getAttribute("escape"); + filter.value2regex(wildCard, singleChar, esc); + obj.filters.push(filter); + }, + "Literal": function(node, obj) { + obj.value = OpenLayers.String.numericIf( + this.getChildValue(node)); + }, + "PropertyName": function(node, filter) { + filter.property = this.getChildValue(node); + }, + "LowerBoundary": function(node, filter) { + filter.lowerBoundary = OpenLayers.String.numericIf( + this.readOgcExpression(node)); + }, + "UpperBoundary": function(node, filter) { + filter.upperBoundary = OpenLayers.String.numericIf( + this.readOgcExpression(node)); + }, + "Intersects": function(node, obj) { + this.readSpatial(node, obj, OpenLayers.Filter.Spatial.INTERSECTS); + }, + "Within": function(node, obj) { + this.readSpatial(node, obj, OpenLayers.Filter.Spatial.WITHIN); + }, + "Contains": function(node, obj) { + this.readSpatial(node, obj, OpenLayers.Filter.Spatial.CONTAINS); + }, + "DWithin": function(node, obj) { + this.readSpatial(node, obj, OpenLayers.Filter.Spatial.DWITHIN); + }, + "Distance": function(node, obj) { + obj.distance = parseInt(this.getChildValue(node)); + obj.distanceUnits = node.getAttribute("units"); + } + } + }, + + /** + * Method: readSpatial + * + * Read a {} filter. + * + * Parameters: + * node - {DOMElement} A DOM element that contains an ogc:expression. + * obj - {Object} The target object. + * type - {String} One of the OpenLayers.Filter.Spatial.* constants. + * + * Returns: + * {} The created filter. + */ + readSpatial: function(node, obj, type) { + var filter = new OpenLayers.Filter.Spatial({ + type: type + }); + this.readChildNodes(node, filter); + filter.value = filter.components[0]; + delete filter.components; + obj.filters.push(filter); + }, + + /** + * Method: readOgcExpression + * Limited support for OGC expressions. + * + * Parameters: + * node - {DOMElement} A DOM element that contains an ogc:expression. + * + * Returns: + * {String} A value to be used in a symbolizer. + */ + readOgcExpression: function(node) { + var obj = {}; + this.readChildNodes(node, obj); + var value = obj.value; + if(!value) { + value = this.getChildValue(node); + } + return value; + }, + + /** + * Method: write + * + * Parameters: + * filter - {} A filter object. + * + * Returns: + * {DOMElement} An ogc:Filter element. + */ + write: function(filter) { + return this.writers.ogc["Filter"].apply(this, [filter]); + }, + + /** + * Property: writers + * As a compliment to the readers property, this structure contains public + * writing functions grouped by namespace alias and named like the + * node names they produce. + */ + writers: { + "ogc": { + "Filter": function(filter) { + var node = this.createElementNSPlus("ogc:Filter"); + var sub = filter.CLASS_NAME.split(".").pop(); + if(sub == "FeatureId") { + for(var i=0; i": "PropertyIsGreaterThan", + "<=": "PropertyIsLessThanOrEqualTo", + ">=": "PropertyIsGreaterThanOrEqualTo", + "..": "PropertyIsBetween", + "~": "PropertyIsLike", + "BBOX": "BBOX", + "DWITHIN": "DWITHIN", + "WITHIN": "WITHIN", + "CONTAINS": "CONTAINS", + "INTERSECTS": "INTERSECTS" + }, + + CLASS_NAME: "OpenLayers.Format.Filter.v1" + +}); diff --git a/openlayers/lib/OpenLayers/Format/Filter/v1_0_0.js b/openlayers/lib/OpenLayers/Format/Filter/v1_0_0.js new file mode 100644 index 0000000..6024836 --- /dev/null +++ b/openlayers/lib/OpenLayers/Format/Filter/v1_0_0.js @@ -0,0 +1,145 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Format/GML/v2.js + * @requires OpenLayers/Format/Filter/v1.js + */ + +/** + * Class: OpenLayers.Format.Filter.v1_0_0 + * Write ogc:Filter version 1.0.0. + * + * Inherits from: + * - + * - + */ +OpenLayers.Format.Filter.v1_0_0 = OpenLayers.Class( + OpenLayers.Format.GML.v2, OpenLayers.Format.Filter.v1, { + + /** + * Constant: VERSION + * {String} 1.0.0 + */ + VERSION: "1.0.0", + + /** + * Property: schemaLocation + * {String} http://www.opengis.net/ogc/filter/1.0.0/filter.xsd + */ + schemaLocation: "http://www.opengis.net/ogc/filter/1.0.0/filter.xsd", + + /** + * Constructor: OpenLayers.Format.Filter.v1_0_0 + * Instances of this class are not created directly. Use the + * constructor instead. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + */ + initialize: function(options) { + OpenLayers.Format.GML.v2.prototype.initialize.apply( + this, [options] + ); + }, + + /** + * Property: readers + * Contains public functions, grouped by namespace prefix, that will + * be applied when a namespaced node is found matching the function + * name. The function will be applied in the scope of this parser + * with two arguments: the node being read and a context object passed + * from the parent. + */ + readers: { + "ogc": OpenLayers.Util.applyDefaults({ + "PropertyIsEqualTo": function(node, obj) { + var filter = new OpenLayers.Filter.Comparison({ + type: OpenLayers.Filter.Comparison.EQUAL_TO + }); + this.readChildNodes(node, filter); + obj.filters.push(filter); + }, + "PropertyIsNotEqualTo": function(node, obj) { + var filter = new OpenLayers.Filter.Comparison({ + type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO + }); + this.readChildNodes(node, filter); + obj.filters.push(filter); + } + }, OpenLayers.Format.Filter.v1.prototype.readers["ogc"]), + "gml": OpenLayers.Format.GML.v2.prototype.readers["gml"], + "feature": OpenLayers.Format.GML.v2.prototype.readers["feature"] + }, + + /** + * Property: writers + * As a compliment to the readers property, this structure contains public + * writing functions grouped by namespace alias and named like the + * node names they produce. + */ + writers: { + "ogc": OpenLayers.Util.applyDefaults({ + "PropertyIsEqualTo": function(filter) { + var node = this.createElementNSPlus("ogc:PropertyIsEqualTo"); + // no ogc:expression handling for now + this.writeNode("PropertyName", filter, node); + this.writeNode("Literal", filter.value, node); + return node; + }, + "PropertyIsNotEqualTo": function(filter) { + var node = this.createElementNSPlus("ogc:PropertyIsNotEqualTo"); + // no ogc:expression handling for now + this.writeNode("PropertyName", filter, node); + this.writeNode("Literal", filter.value, node); + return node; + }, + "BBOX": function(filter) { + var node = this.createElementNSPlus("ogc:BBOX"); + this.writeNode("PropertyName", filter, node); + var box = this.writeNode("gml:Box", filter.value, node); + if(filter.projection) { + box.setAttribute("srsName", filter.projection); + } + return node; + }}, OpenLayers.Format.Filter.v1.prototype.writers["ogc"]), + + "gml": OpenLayers.Format.GML.v2.prototype.writers["gml"], + "feature": OpenLayers.Format.GML.v2.prototype.writers["feature"] + + }, + + /** + * Method: writeSpatial + * + * Read a {} filter and converts it into XML. + * + * Parameters: + * filter - {} The filter. + * name - {String} Name of the generated XML element. + * + * Returns: + * {DOMElement} The created XML element. + */ + writeSpatial: function(filter, name) { + var node = this.createElementNSPlus("ogc:"+name); + this.writeNode("PropertyName", filter, node); + var child; + if(filter.value instanceof OpenLayers.Geometry) { + child = this.writeNode("feature:_geometry", filter.value).firstChild; + } else { + child = this.writeNode("gml:Box", filter.value); + } + if(filter.projection) { + child.setAttribute("srsName", filter.projection); + } + node.appendChild(child); + return node; + }, + + + CLASS_NAME: "OpenLayers.Format.Filter.v1_0_0" + +}); \ No newline at end of file diff --git a/openlayers/lib/OpenLayers/Format/Filter/v1_1_0.js b/openlayers/lib/OpenLayers/Format/Filter/v1_1_0.js new file mode 100644 index 0000000..1d0bfca --- /dev/null +++ b/openlayers/lib/OpenLayers/Format/Filter/v1_1_0.js @@ -0,0 +1,158 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Format/Filter/v1.js + * @requires OpenLayers/Format/GML/v3.js + */ + +/** + * Class: OpenLayers.Format.Filter.v1_1_0 + * Write ogc:Filter version 1.1.0. + * + * Differences from the v1.0.0 parser: + * - uses GML v3 instead of GML v2 + * - reads matchCase attribute on ogc:PropertyIsEqual and + * ogc:PropertyIsNotEqualelements. + * - writes matchCase attribute from comparison filters of type EQUAL_TO and + * type NOT_EQUAL_TO. + * + * Inherits from: + * - + */ +OpenLayers.Format.Filter.v1_1_0 = OpenLayers.Class( + OpenLayers.Format.GML.v3, OpenLayers.Format.Filter.v1, { + + /** + * Constant: VERSION + * {String} 1.1.0 + */ + VERSION: "1.1.0", + + /** + * Property: schemaLocation + * {String} http://www.opengis.net/ogc/filter/1.1.0/filter.xsd + */ + schemaLocation: "http://www.opengis.net/ogc/filter/1.1.0/filter.xsd", + + /** + * Constructor: OpenLayers.Format.Filter.v1_1_0 + * Instances of this class are not created directly. Use the + * constructor instead. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + */ + initialize: function(options) { + OpenLayers.Format.GML.v3.prototype.initialize.apply( + this, [options] + ); + }, + + /** + * Property: readers + * Contains public functions, grouped by namespace prefix, that will + * be applied when a namespaced node is found matching the function + * name. The function will be applied in the scope of this parser + * with two arguments: the node being read and a context object passed + * from the parent. + */ + readers: { + "ogc": OpenLayers.Util.applyDefaults({ + "PropertyIsEqualTo": function(node, obj) { + var matchCase = node.getAttribute("matchCase"); + var filter = new OpenLayers.Filter.Comparison({ + type: OpenLayers.Filter.Comparison.EQUAL_TO, + matchCase: !(matchCase === "false" || matchCase === "0") + }); + this.readChildNodes(node, filter); + obj.filters.push(filter); + }, + "PropertyIsNotEqualTo": function(node, obj) { + var matchCase = node.getAttribute("matchCase"); + var filter = new OpenLayers.Filter.Comparison({ + type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO, + matchCase: !(matchCase === "false" || matchCase === "0") + }); + this.readChildNodes(node, filter); + obj.filters.push(filter); + } + }, OpenLayers.Format.Filter.v1.prototype.readers["ogc"]), + "gml": OpenLayers.Format.GML.v3.prototype.readers["gml"], + "feature": OpenLayers.Format.GML.v3.prototype.readers["feature"] + }, + + /** + * Property: writers + * As a compliment to the readers property, this structure contains public + * writing functions grouped by namespace alias and named like the + * node names they produce. + */ + writers: { + "ogc": OpenLayers.Util.applyDefaults({ + "PropertyIsEqualTo": function(filter) { + var node = this.createElementNSPlus("ogc:PropertyIsEqualTo", { + attributes: {matchCase: filter.matchCase} + }); + // no ogc:expression handling for now + this.writeNode("PropertyName", filter, node); + this.writeNode("Literal", filter.value, node); + return node; + }, + "PropertyIsNotEqualTo": function(filter) { + var node = this.createElementNSPlus("ogc:PropertyIsNotEqualTo", { + attributes: {matchCase: filter.matchCase} + }); + // no ogc:expression handling for now + this.writeNode("PropertyName", filter, node); + this.writeNode("Literal", filter.value, node); + return node; + }, + "BBOX": function(filter) { + var node = this.createElementNSPlus("ogc:BBOX"); + this.writeNode("PropertyName", filter, node); + var box = this.writeNode("gml:Envelope", filter.value); + if(filter.projection) { + box.setAttribute("srsName", filter.projection); + } + node.appendChild(box); + return node; + }}, OpenLayers.Format.Filter.v1.prototype.writers["ogc"]), + + "gml": OpenLayers.Format.GML.v3.prototype.writers["gml"], + "feature": OpenLayers.Format.GML.v3.prototype.writers["feature"] + }, + + /** + * Method: writeSpatial + * + * Read a {} filter and converts it into XML. + * + * Parameters: + * filter - {} The filter. + * name - {String} Name of the generated XML element. + * + * Returns: + * {DOMElement} The created XML element. + */ + writeSpatial: function(filter, name) { + var node = this.createElementNSPlus("ogc:"+name); + this.writeNode("PropertyName", filter, node); + var child; + if(filter.value instanceof OpenLayers.Geometry) { + child = this.writeNode("feature:_geometry", filter.value).firstChild; + } else { + child = this.writeNode("gml:Envelope", filter.value); + } + if(filter.projection) { + child.setAttribute("srsName", filter.projection); + } + node.appendChild(child); + return node; + }, + + CLASS_NAME: "OpenLayers.Format.Filter.v1_1_0" + +}); \ No newline at end of file diff --git a/openlayers/lib/OpenLayers/Format/GML.js b/openlayers/lib/OpenLayers/Format/GML.js new file mode 100644 index 0000000..e691376 --- /dev/null +++ b/openlayers/lib/OpenLayers/Format/GML.js @@ -0,0 +1,872 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Format/XML.js + * @requires OpenLayers/Feature/Vector.js + * @requires OpenLayers/Geometry/Point.js + * @requires OpenLayers/Geometry/MultiPoint.js + * @requires OpenLayers/Geometry/LineString.js + * @requires OpenLayers/Geometry/MultiLineString.js + * @requires OpenLayers/Geometry/Polygon.js + * @requires OpenLayers/Geometry/MultiPolygon.js + * @requires OpenLayers/Console.js + */ + +/** + * Class: OpenLayers.Format.GML + * Read/Wite GML. Create a new instance with the + * constructor. Supports the GML simple features profile. + * + * Inherits from: + * - + */ +OpenLayers.Format.GML = OpenLayers.Class(OpenLayers.Format.XML, { + + /* + * APIProperty: featureNS + * {String} Namespace used for feature attributes. Default is + * "http://mapserver.gis.umn.edu/mapserver". + */ + featureNS: "http://mapserver.gis.umn.edu/mapserver", + + /** + * APIProperty: featurePrefix + * {String} Namespace alias (or prefix) for feature nodes. Default is + * "feature". + */ + featurePrefix: "feature", + + /* + * APIProperty: featureName + * {String} Element name for features. Default is "featureMember". + */ + featureName: "featureMember", + + /* + * APIProperty: layerName + * {String} Name of data layer. Default is "features". + */ + layerName: "features", + + /** + * APIProperty: geometryName + * {String} Name of geometry element. Defaults to "geometry". + */ + geometryName: "geometry", + + /** + * APIProperty: collectionName + * {String} Name of featureCollection element. + */ + collectionName: "FeatureCollection", + + /** + * APIProperty: gmlns + * {String} GML Namespace. + */ + gmlns: "http://www.opengis.net/gml", + + /** + * APIProperty: extractAttributes + * {Boolean} Extract attributes from GML. + */ + extractAttributes: true, + + /** + * APIProperty: xy + * {Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) + * Changing is not recommended, a new Format should be instantiated. + */ + xy: true, + + /** + * Constructor: OpenLayers.Format.GML + * Create a new parser for GML. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + */ + initialize: function(options) { + // compile regular expressions once instead of every time they are used + this.regExes = { + trimSpace: (/^\s*|\s*$/g), + removeSpace: (/\s*/g), + splitSpace: (/\s+/), + trimComma: (/\s*,\s*/g) + }; + OpenLayers.Format.XML.prototype.initialize.apply(this, [options]); + }, + + /** + * APIMethod: read + * Read data from a string, and return a list of features. + * + * Parameters: + * data - {String} or {DOMElement} data to read/parse. + * + * Returns: + * {Array()} An array of features. + */ + read: function(data) { + if(typeof data == "string") { + data = OpenLayers.Format.XML.prototype.read.apply(this, [data]); + } + var featureNodes = this.getElementsByTagNameNS(data.documentElement, + this.gmlns, + this.featureName); + var features = []; + for(var i=0; i 0) { + // only deal with first geometry of this type + var parser = this.parseGeometry[type.toLowerCase()]; + if(parser) { + geometry = parser.apply(this, [nodeList[0]]); + if (this.internalProjection && this.externalProjection) { + geometry.transform(this.externalProjection, + this.internalProjection); + } + } else { + OpenLayers.Console.error(OpenLayers.i18n( + "unsupportedGeometryType", {'geomType':type})); + } + // stop looking for different geometry types + break; + } + } + + // construct feature (optionally with attributes) + var attributes; + if(this.extractAttributes) { + attributes = this.parseAttributes(node); + } + var feature = new OpenLayers.Feature.Vector(geometry, attributes); + + feature.gml = { + featureType: node.firstChild.nodeName.split(":")[1], + featureNS: node.firstChild.namespaceURI, + featureNSPrefix: node.firstChild.prefix + }; + + // assign fid - this can come from a "fid" or "id" attribute + var childNode = node.firstChild; + var fid; + while(childNode) { + if(childNode.nodeType == 1) { + fid = childNode.getAttribute("fid") || + childNode.getAttribute("id"); + if(fid) { + break; + } + } + childNode = childNode.nextSibling; + } + feature.fid = fid; + return feature; + }, + + /** + * Property: parseGeometry + * Properties of this object are the functions that parse geometries based + * on their type. + */ + parseGeometry: { + + /** + * Method: parseGeometry.point + * Given a GML node representing a point geometry, create an OpenLayers + * point geometry. + * + * Parameters: + * node - {DOMElement} A GML node. + * + * Returns: + * {} A point geometry. + */ + point: function(node) { + /** + * Three coordinate variations to consider: + * 1) x y z + * 2) x, y, z + * 3) xy + */ + var nodeList, coordString; + var coords = []; + + // look for + var nodeList = this.getElementsByTagNameNS(node, this.gmlns, "pos"); + if(nodeList.length > 0) { + coordString = nodeList[0].firstChild.nodeValue; + coordString = coordString.replace(this.regExes.trimSpace, ""); + coords = coordString.split(this.regExes.splitSpace); + } + + // look for + if(coords.length == 0) { + nodeList = this.getElementsByTagNameNS(node, this.gmlns, + "coordinates"); + if(nodeList.length > 0) { + coordString = nodeList[0].firstChild.nodeValue; + coordString = coordString.replace(this.regExes.removeSpace, + ""); + coords = coordString.split(","); + } + } + + // look for + if(coords.length == 0) { + nodeList = this.getElementsByTagNameNS(node, this.gmlns, + "coord"); + if(nodeList.length > 0) { + var xList = this.getElementsByTagNameNS(nodeList[0], + this.gmlns, "X"); + var yList = this.getElementsByTagNameNS(nodeList[0], + this.gmlns, "Y"); + if(xList.length > 0 && yList.length > 0) { + coords = [xList[0].firstChild.nodeValue, + yList[0].firstChild.nodeValue]; + } + } + } + + // preserve third dimension + if(coords.length == 2) { + coords[2] = null; + } + + if (this.xy) { + return new OpenLayers.Geometry.Point(coords[0], coords[1], + coords[2]); + } + else{ + return new OpenLayers.Geometry.Point(coords[1], coords[0], + coords[2]); + } + }, + + /** + * Method: parseGeometry.multipoint + * Given a GML node representing a multipoint geometry, create an + * OpenLayers multipoint geometry. + * + * Parameters: + * node - {DOMElement} A GML node. + * + * Returns: + * {} A multipoint geometry. + */ + multipoint: function(node) { + var nodeList = this.getElementsByTagNameNS(node, this.gmlns, + "Point"); + var components = []; + if(nodeList.length > 0) { + var point; + for(var i=0; i} A linestring geometry. + */ + linestring: function(node, ring) { + /** + * Two coordinate variations to consider: + * 1) x0 y0 z0 x1 y1 z1 + * 2) x0, y0, z0 x1, y1, z1 + */ + var nodeList, coordString; + var coords = []; + var points = []; + + // look for + nodeList = this.getElementsByTagNameNS(node, this.gmlns, "posList"); + if(nodeList.length > 0) { + coordString = this.getChildValue(nodeList[0]); + coordString = coordString.replace(this.regExes.trimSpace, ""); + coords = coordString.split(this.regExes.splitSpace); + var dim = parseInt(nodeList[0].getAttribute("dimension")); + var j, x, y, z; + for(var i=0; i + if(coords.length == 0) { + nodeList = this.getElementsByTagNameNS(node, this.gmlns, + "coordinates"); + if(nodeList.length > 0) { + coordString = this.getChildValue(nodeList[0]); + coordString = coordString.replace(this.regExes.trimSpace, + ""); + coordString = coordString.replace(this.regExes.trimComma, + ","); + var pointList = coordString.split(this.regExes.splitSpace); + for(var i=0; i} A multilinestring geometry. + */ + multilinestring: function(node) { + var nodeList = this.getElementsByTagNameNS(node, this.gmlns, + "LineString"); + var components = []; + if(nodeList.length > 0) { + var line; + for(var i=0; i} A polygon geometry. + */ + polygon: function(node) { + var nodeList = this.getElementsByTagNameNS(node, this.gmlns, + "LinearRing"); + var components = []; + if(nodeList.length > 0) { + // this assumes exterior ring first, inner rings after + var ring; + for(var i=0; i} A multipolygon geometry. + */ + multipolygon: function(node) { + var nodeList = this.getElementsByTagNameNS(node, this.gmlns, + "Polygon"); + var components = []; + if(nodeList.length > 0) { + var polygon; + for(var i=0; i 0) { + var coords = []; + + if(lpoint.length > 0) { + coordString = lpoint[0].firstChild.nodeValue; + coordString = coordString.replace(this.regExes.trimSpace, ""); + coords = coordString.split(this.regExes.splitSpace); + } + + if(coords.length == 2) { + coords[2] = null; + } + if (this.xy) { + var lowerPoint = new OpenLayers.Geometry.Point(coords[0], coords[1],coords[2]); + } else { + var lowerPoint = new OpenLayers.Geometry.Point(coords[1], coords[0],coords[2]); + } + } + + var upoint = this.getElementsByTagNameNS(node, this.gmlns, "upperCorner"); + if (upoint.length > 0) { + var coords = []; + + if(upoint.length > 0) { + coordString = upoint[0].firstChild.nodeValue; + coordString = coordString.replace(this.regExes.trimSpace, ""); + coords = coordString.split(this.regExes.splitSpace); + } + + if(coords.length == 2) { + coords[2] = null; + } + if (this.xy) { + var upperPoint = new OpenLayers.Geometry.Point(coords[0], coords[1],coords[2]); + } else { + var upperPoint = new OpenLayers.Geometry.Point(coords[1], coords[0],coords[2]); + } + } + + if (lowerPoint && upperPoint) { + components.push(new OpenLayers.Geometry.Point(lowerPoint.x, lowerPoint.y)); + components.push(new OpenLayers.Geometry.Point(upperPoint.x, lowerPoint.y)); + components.push(new OpenLayers.Geometry.Point(upperPoint.x, upperPoint.y)); + components.push(new OpenLayers.Geometry.Point(lowerPoint.x, upperPoint.y)); + components.push(new OpenLayers.Geometry.Point(lowerPoint.x, lowerPoint.y)); + + var ring = new OpenLayers.Geometry.LinearRing(components); + envelope = new OpenLayers.Geometry.Polygon([ring]); + } + return envelope; + } + }, + + /** + * Method: parseAttributes + * + * Parameters: + * node - {} + * + * Returns: + * {Object} An attributes object. + */ + parseAttributes: function(node) { + var attributes = {}; + // assume attributes are children of the first type 1 child + var childNode = node.firstChild; + var children, i, child, grandchildren, grandchild, name, value; + while(childNode) { + if(childNode.nodeType == 1) { + // attributes are type 1 children with one type 3 child + children = childNode.childNodes; + for(i=0; i becomes + // {fieldname: null} + attributes[child.nodeName.split(":").pop()] = null; + } + } + } + break; + } + childNode = childNode.nextSibling; + } + return attributes; + }, + + /** + * APIMethod: write + * Generate a GML document string given a list of features. + * + * Parameters: + * features - {Array()} List of features to + * serialize into a string. + * + * Returns: + * {String} A string representing the GML document. + */ + write: function(features) { + if(!(features instanceof Array)) { + features = [features]; + } + var gml = this.createElementNS("http://www.opengis.net/wfs", + "wfs:" + this.collectionName); + for(var i=0; i} The feature to be built as GML. + * + * Returns: + * {DOMElement} A node reprensting the feature in GML. + */ + createFeatureXML: function(feature) { + var geometry = feature.geometry; + var geometryNode = this.buildGeometryNode(geometry); + var geomContainer = this.createElementNS(this.featureNS, + this.featurePrefix + ":" + + this.geometryName); + geomContainer.appendChild(geometryNode); + var featureNode = this.createElementNS(this.gmlns, + "gml:" + this.featureName); + var featureContainer = this.createElementNS(this.featureNS, + this.featurePrefix + ":" + + this.layerName); + var fid = feature.fid || feature.id; + featureContainer.setAttribute("fid", fid); + featureContainer.appendChild(geomContainer); + for(var attr in feature.attributes) { + var attrText = this.createTextNode(feature.attributes[attr]); + var nodename = attr.substring(attr.lastIndexOf(":") + 1); + var attrContainer = this.createElementNS(this.featureNS, + this.featurePrefix + ":" + + nodename); + attrContainer.appendChild(attrText); + featureContainer.appendChild(attrContainer); + } + featureNode.appendChild(featureContainer); + return featureNode; + }, + + /** + * APIMethod: buildGeometryNode + */ + buildGeometryNode: function(geometry) { + if (this.externalProjection && this.internalProjection) { + geometry = geometry.clone(); + geometry.transform(this.internalProjection, + this.externalProjection); + } + var className = geometry.CLASS_NAME; + var type = className.substring(className.lastIndexOf(".") + 1); + var builder = this.buildGeometry[type.toLowerCase()]; + return builder.apply(this, [geometry]); + }, + + /** + * Property: buildGeometry + * Object containing methods to do the actual geometry node building + * based on geometry type. + */ + buildGeometry: { + // TBD retrieve the srs from layer + // srsName is non-standard, so not including it until it's right. + // gml.setAttribute("srsName", + // "http://www.opengis.net/gml/srs/epsg.xml#4326"); + + /** + * Method: buildGeometry.point + * Given an OpenLayers point geometry, create a GML point. + * + * Parameters: + * geometry - {} A point geometry. + * + * Returns: + * {DOMElement} A GML point node. + */ + point: function(geometry) { + var gml = this.createElementNS(this.gmlns, "gml:Point"); + gml.appendChild(this.buildCoordinatesNode(geometry)); + return gml; + }, + + /** + * Method: buildGeometry.multipoint + * Given an OpenLayers multipoint geometry, create a GML multipoint. + * + * Parameters: + * geometry - {} A multipoint geometry. + * + * Returns: + * {DOMElement} A GML multipoint node. + */ + multipoint: function(geometry) { + var gml = this.createElementNS(this.gmlns, "gml:MultiPoint"); + var points = geometry.components; + var pointMember, pointGeom; + for(var i=0; i} A linestring geometry. + * + * Returns: + * {DOMElement} A GML linestring node. + */ + linestring: function(geometry) { + var gml = this.createElementNS(this.gmlns, "gml:LineString"); + gml.appendChild(this.buildCoordinatesNode(geometry)); + return gml; + }, + + /** + * Method: buildGeometry.multilinestring + * Given an OpenLayers multilinestring geometry, create a GML + * multilinestring. + * + * Parameters: + * geometry - {} A multilinestring + * geometry. + * + * Returns: + * {DOMElement} A GML multilinestring node. + */ + multilinestring: function(geometry) { + var gml = this.createElementNS(this.gmlns, "gml:MultiLineString"); + var lines = geometry.components; + var lineMember, lineGeom; + for(var i=0; i} A linearring geometry. + * + * Returns: + * {DOMElement} A GML linearring node. + */ + linearring: function(geometry) { + var gml = this.createElementNS(this.gmlns, "gml:LinearRing"); + gml.appendChild(this.buildCoordinatesNode(geometry)); + return gml; + }, + + /** + * Method: buildGeometry.polygon + * Given an OpenLayers polygon geometry, create a GML polygon. + * + * Parameters: + * geometry - {} A polygon geometry. + * + * Returns: + * {DOMElement} A GML polygon node. + */ + polygon: function(geometry) { + var gml = this.createElementNS(this.gmlns, "gml:Polygon"); + var rings = geometry.components; + var ringMember, ringGeom, type; + for(var i=0; i} A multipolygon + * geometry. + * + * Returns: + * {DOMElement} A GML multipolygon node. + */ + multipolygon: function(geometry) { + var gml = this.createElementNS(this.gmlns, "gml:MultiPolygon"); + var polys = geometry.components; + var polyMember, polyGeom; + for(var i=0; i} A bounds object. + * + * Returns: + * {DOMElement} A GML box node. + */ + bounds: function(bounds) { + var gml = this.createElementNS(this.gmlns, "gml:Box"); + gml.appendChild(this.buildCoordinatesNode(bounds)); + return gml; + } + }, + + /** + * Method: buildCoordinates + * builds the coordinates XmlNode + * (code) + * ... + * (end) + * Parameters: + * geometry - {} + * + * Returns: + * {XmlNode} created xmlNode + */ + buildCoordinatesNode: function(geometry) { + var coordinatesNode = this.createElementNS(this.gmlns, + "gml:coordinates"); + coordinatesNode.setAttribute("decimal", "."); + coordinatesNode.setAttribute("cs", ","); + coordinatesNode.setAttribute("ts", " "); + + var parts = []; + + if(geometry instanceof OpenLayers.Bounds){ + parts.push(geometry.left + "," + geometry.bottom); + parts.push(geometry.right + "," + geometry.top); + } else { + var points = (geometry.components) ? geometry.components : [geometry]; + for(var i=0; i + */ +OpenLayers.Format.GML.Base = OpenLayers.Class(OpenLayers.Format.XML, { + + /** + * Property: namespaces + * {Object} Mapping of namespace aliases to namespace URIs. + */ + namespaces: { + gml: "http://www.opengis.net/gml", + xlink: "http://www.w3.org/1999/xlink", + xsi: "http://www.w3.org/2001/XMLSchema-instance", + wfs: "http://www.opengis.net/wfs" // this is a convenience for reading wfs:FeatureCollection + }, + + /** + * Property: defaultPrefix + */ + defaultPrefix: "gml", + + /** + * Property: schemaLocation + * {String} Schema location for a particular minor version. + */ + schemaLocation: null, + + /** + * APIProperty: featureType + * {Array(String) or String} The local (without prefix) feature typeName(s). + */ + featureType: null, + + /** + * APIProperty: featureNS + * {String} The feature namespace. Must be set in the options at + * construction. + */ + featureNS: null, + + /** + * APIProperty: geometry + * {String} Name of geometry element. Defaults to "geometry". + */ + geometryName: "geometry", + + /** + * APIProperty: extractAttributes + * {Boolean} Extract attributes from GML. Default is true. + */ + extractAttributes: true, + + /** + * APIProperty: srsName + * {String} URI for spatial reference system. This is optional for + * single part geometries and mandatory for collections and multis. + * If set, the srsName attribute will be written for all geometries. + * Default is null. + */ + srsName: null, + + /** + * APIProperty: xy + * {Boolean} Order of the GML coordinate true:(x,y) or false:(y,x) + * Changing is not recommended, a new Format should be instantiated. + */ + xy: true, + + /** + * Property: geometryTypes + * {Object} Maps OpenLayers geometry class names to GML element names. + * Use before accessing this property. + */ + geometryTypes: null, + + /** + * Property: singleFeatureType + * {Boolean} True if there is only 1 featureType, and not an array + * of featuretypes. + */ + singleFeatureType: null, + + /** + * Property: regExes + * Compiled regular expressions for manipulating strings. + */ + regExes: { + trimSpace: (/^\s*|\s*$/g), + removeSpace: (/\s*/g), + splitSpace: (/\s+/), + trimComma: (/\s*,\s*/g) + }, + + /** + * Constructor: OpenLayers.Format.GML.Base + * Instances of this class are not created directly. Use the + * or constructor + * instead. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + * + * Valid options properties: + * featureType - {Array(String) or String} Local (without prefix) feature + * typeName(s) (required). + * featureNS - {String} Feature namespace (required). + * geometryName - {String} Geometry element name. + */ + initialize: function(options) { + OpenLayers.Format.XML.prototype.initialize.apply(this, [options]); + this.setGeometryTypes(); + if(options && options.featureNS) { + this.setNamespace("feature", options.featureNS); + } + this.singleFeatureType = !options || (typeof options.featureType === "string"); + }, + + /** + * Method: read + * + * Parameters: + * data - {DOMElement} A gml:featureMember element, a gml:featureMembers + * element, or an element containing either of the above at any level. + * + * Returns: + * {Array()} An array of features. + */ + read: function(data) { + if(typeof data == "string") { + data = OpenLayers.Format.XML.prototype.read.apply(this, [data]); + } + if(data && data.nodeType == 9) { + data = data.documentElement; + } + var features = []; + this.readNode(data, {features: features}); + if(features.length == 0) { + // look for gml:featureMember elements + var elements = this.getElementsByTagNameNS( + data, this.namespaces.gml, "featureMember" + ); + if(elements.length) { + for(var i=0, len=elements.length; i 0) { + obj.bounds = container.components[0]; + } + }, + "Point": function(node, container) { + var obj = {points: []}; + this.readChildNodes(node, obj); + if(!container.components) { + container.components = []; + } + container.components.push(obj.points[0]); + }, + "coordinates": function(node, obj) { + var str = this.getChildValue(node).replace( + this.regExes.trimSpace, "" + ); + str = str.replace(this.regExes.trimComma, ","); + var pointList = str.split(this.regExes.splitSpace); + var coords; + var numPoints = pointList.length; + var points = new Array(numPoints); + for(var i=0; i) | OpenLayers.Feature.Vector} + * An array of features or a single feature. + * + * Returns: + * {String} Given an array of features, a doc with a gml:featureMembers + * element will be returned. Given a single feature, a doc with a + * gml:featureMember element will be returned. + */ + write: function(features) { + var name; + if(features instanceof Array) { + name = "featureMembers"; + } else { + name = "featureMember"; + } + var root = this.writeNode("gml:" + name, features); + this.setAttributeNS( + root, this.namespaces["xsi"], + "xsi:schemaLocation", this.schemaLocation + ); + + return OpenLayers.Format.XML.prototype.write.apply(this, [root]); + }, + + /** + * Property: writers + * As a compliment to the readers property, this structure contains public + * writing functions grouped by namespace alias and named like the + * node names they produce. + */ + writers: { + "gml": { + "featureMember": function(feature) { + var node = this.createElementNSPlus("gml:featureMember"); + this.writeNode("feature:_typeName", feature, node); + return node; + }, + "MultiPoint": function(geometry) { + var node = this.createElementNSPlus("gml:MultiPoint"); + for(var i=0; i mapping. + */ + setGeometryTypes: function() { + this.geometryTypes = { + "OpenLayers.Geometry.Point": "Point", + "OpenLayers.Geometry.MultiPoint": "MultiPoint", + "OpenLayers.Geometry.LineString": "LineString", + "OpenLayers.Geometry.MultiLineString": "MultiLineString", + "OpenLayers.Geometry.Polygon": "Polygon", + "OpenLayers.Geometry.MultiPolygon": "MultiPolygon", + "OpenLayers.Geometry.Collection": "GeometryCollection" + }; + }, + + CLASS_NAME: "OpenLayers.Format.GML.Base" + +}); diff --git a/openlayers/lib/OpenLayers/Format/GML/v2.js b/openlayers/lib/OpenLayers/Format/GML/v2.js new file mode 100644 index 0000000..7bbf65f --- /dev/null +++ b/openlayers/lib/OpenLayers/Format/GML/v2.js @@ -0,0 +1,192 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Format/GML/Base.js + */ + +/** + * Class: OpenLayers.Format.GML.v2 + * Parses GML version 2. + * + * Inherits from: + * - + */ +OpenLayers.Format.GML.v2 = OpenLayers.Class(OpenLayers.Format.GML.Base, { + + /** + * Property: schemaLocation + * {String} Schema location for a particular minor version. + */ + schemaLocation: "http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd", + + /** + * Constructor: OpenLayers.Format.GML.v2 + * Create a parser for GML v2. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + * + * Valid options properties: + * featureType - {String} Local (without prefix) feature typeName (required). + * featureNS - {String} Feature namespace (required). + * geometryName - {String} Geometry element name. + */ + initialize: function(options) { + OpenLayers.Format.GML.Base.prototype.initialize.apply(this, [options]); + }, + + /** + * Property: readers + * Contains public functions, grouped by namespace prefix, that will + * be applied when a namespaced node is found matching the function + * name. The function will be applied in the scope of this parser + * with two arguments: the node being read and a context object passed + * from the parent. + */ + readers: { + "gml": OpenLayers.Util.applyDefaults({ + "outerBoundaryIs": function(node, container) { + var obj = {}; + this.readChildNodes(node, obj); + container.outer = obj.components[0]; + }, + "innerBoundaryIs": function(node, container) { + var obj = {}; + this.readChildNodes(node, obj); + container.inner.push(obj.components[0]); + }, + "Box": function(node, container) { + var obj = {}; + this.readChildNodes(node, obj); + if(!container.components) { + container.components = []; + } + var min = obj.points[0]; + var max = obj.points[1]; + container.components.push( + new OpenLayers.Bounds(min.x, min.y, max.x, max.y) + ); + } + }, OpenLayers.Format.GML.Base.prototype.readers["gml"]), + "feature": OpenLayers.Format.GML.Base.prototype.readers["feature"], + "wfs": OpenLayers.Format.GML.Base.prototype.readers["wfs"] + }, + + /** + * Method: write + * + * Parameters: + * features - {Array() | OpenLayers.Feature.Vector} + * An array of features or a single feature. + * + * Returns: + * {String} Given an array of features, a doc with a gml:featureMembers + * element will be returned. Given a single feature, a doc with a + * gml:featureMember element will be returned. + */ + write: function(features) { + var name; + if(features instanceof Array) { + // GML2 only has abstract feature collections + // wfs provides a feature collection from a well-known schema + name = "wfs:FeatureCollection"; + } else { + name = "gml:featureMember"; + } + var root = this.writeNode(name, features); + this.setAttributeNS( + root, this.namespaces["xsi"], + "xsi:schemaLocation", this.schemaLocation + ); + + return OpenLayers.Format.XML.prototype.write.apply(this, [root]); + }, + + /** + * Property: writers + * As a compliment to the readers property, this structure contains public + * writing functions grouped by namespace alias and named like the + * node names they produce. + */ + writers: { + "gml": OpenLayers.Util.applyDefaults({ + "Point": function(geometry) { + var node = this.createElementNSPlus("gml:Point"); + this.writeNode("coordinates", [geometry], node); + return node; + }, + "coordinates": function(points) { + var numPoints = points.length; + var parts = new Array(numPoints); + var point; + for(var i=0; i + */ +OpenLayers.Format.GML.v3 = OpenLayers.Class(OpenLayers.Format.GML.Base, { + + /** + * Property: schemaLocation + * {String} Schema location for a particular minor version. The writers + * conform with the Simple Features Profile for GML. + */ + schemaLocation: "http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd", + + /** + * Property: curve + * {Boolean} Write gml:Curve instead of gml:LineString elements. This also + * affects the elements in multi-part geometries. Default is false. + * To write gml:Curve elements instead of gml:LineString, set curve + * to true in the options to the contstructor (cannot be changed after + * instantiation). + */ + curve: false, + + /** + * Property: multiCurve + * {Boolean} Write gml:MultiCurve instead of gml:MultiLineString. Since + * the latter is deprecated in GML 3, the default is true. To write + * gml:MultiLineString instead of gml:MultiCurve, set multiCurve to + * false in the options to the constructor (cannot be changed after + * instantiation). + */ + multiCurve: true, + + /** + * Property: surface + * {Boolean} Write gml:Surface instead of gml:Polygon elements. This also + * affects the elements in multi-part geometries. Default is false. + * To write gml:Surface elements instead of gml:Polygon, set surface + * to true in the options to the contstructor (cannot be changed after + * instantiation). + */ + surface: false, + + /** + * Property: multiSurface + * {Boolean} Write gml:multiSurface instead of gml:MultiPolygon. Since + * the latter is deprecated in GML 3, the default is true. To write + * gml:MultiPolygon instead of gml:multiSurface, set multiSurface to + * false in the options to the constructor (cannot be changed after + * instantiation). + */ + multiSurface: true, + + /** + * Constructor: OpenLayers.Format.GML.v3 + * Create a parser for GML v3. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + * + * Valid options properties: + * featureType - {String} Local (without prefix) feature typeName (required). + * featureNS - {String} Feature namespace (required). + * geometryName - {String} Geometry element name. + */ + initialize: function(options) { + OpenLayers.Format.GML.Base.prototype.initialize.apply(this, [options]); + }, + + /** + * Property: readers + * Contains public functions, grouped by namespace prefix, that will + * be applied when a namespaced node is found matching the function + * name. The function will be applied in the scope of this parser + * with two arguments: the node being read and a context object passed + * from the parent. + */ + readers: { + "gml": OpenLayers.Util.applyDefaults({ + "featureMembers": function(node, obj) { + this.readChildNodes(node, obj); + }, + "Curve": function(node, container) { + var obj = {points: []}; + this.readChildNodes(node, obj); + if(!container.components) { + container.components = []; + } + container.components.push( + new OpenLayers.Geometry.LineString(obj.points) + ); + }, + "segments": function(node, obj) { + this.readChildNodes(node, obj); + }, + "LineStringSegment": function(node, container) { + var obj = {}; + this.readChildNodes(node, obj); + if(obj.points) { + Array.prototype.push.apply(container.points, obj.points); + } + }, + "pos": function(node, obj) { + var str = this.getChildValue(node).replace( + this.regExes.trimSpace, "" + ); + var coords = str.split(this.regExes.splitSpace); + var point; + if(this.xy) { + point = new OpenLayers.Geometry.Point( + coords[0], coords[1], coords[2] + ); + } else { + point = new OpenLayers.Geometry.Point( + coords[1], coords[0], coords[2] + ); + } + obj.points = [point]; + }, + "posList": function(node, obj) { + var str = this.getChildValue(node).replace( + this.regExes.trimSpace, "" + ); + var coords = str.split(this.regExes.splitSpace); + var dim = parseInt(node.getAttribute("dimension")) || 2; + var j, x, y, z; + var numPoints = coords.length / dim; + var points = new Array(numPoints); + for(var i=0, len=coords.length; i 0) { + container.components = [ + new OpenLayers.Geometry.MultiLineString(obj.components) + ]; + } + }, + "curveMember": function(node, obj) { + this.readChildNodes(node, obj); + }, + "MultiSurface": function(node, container) { + var obj = {components: []}; + this.readChildNodes(node, obj); + if(obj.components.length > 0) { + container.components = [ + new OpenLayers.Geometry.MultiPolygon(obj.components) + ]; + } + }, + "surfaceMember": function(node, obj) { + this.readChildNodes(node, obj); + }, + "surfaceMembers": function(node, obj) { + this.readChildNodes(node, obj); + }, + "pointMembers": function(node, obj) { + this.readChildNodes(node, obj); + }, + "lineStringMembers": function(node, obj) { + this.readChildNodes(node, obj); + }, + "polygonMembers": function(node, obj) { + this.readChildNodes(node, obj); + }, + "geometryMembers": function(node, obj) { + this.readChildNodes(node, obj); + }, + "Envelope": function(node, container) { + var obj = {points: new Array(2)}; + this.readChildNodes(node, obj); + if(!container.components) { + container.components = []; + } + var min = obj.points[0]; + var max = obj.points[1]; + container.components.push( + new OpenLayers.Bounds(min.x, min.y, max.x, max.y) + ); + }, + "lowerCorner": function(node, container) { + var obj = {}; + this.readers.gml.pos.apply(this, [node, obj]); + container.points[0] = obj.points[0]; + }, + "upperCorner": function(node, container) { + var obj = {}; + this.readers.gml.pos.apply(this, [node, obj]); + container.points[1] = obj.points[0]; + } + }, OpenLayers.Format.GML.Base.prototype.readers["gml"]), + "feature": OpenLayers.Format.GML.Base.prototype.readers["feature"], + "wfs": OpenLayers.Format.GML.Base.prototype.readers["wfs"] + }, + + /** + * Method: write + * + * Parameters: + * features - {Array() | OpenLayers.Feature.Vector} + * An array of features or a single feature. + * + * Returns: + * {String} Given an array of features, a doc with a gml:featureMembers + * element will be returned. Given a single feature, a doc with a + * gml:featureMember element will be returned. + */ + write: function(features) { + var name; + if(features instanceof Array) { + name = "featureMembers"; + } else { + name = "featureMember"; + } + var root = this.writeNode("gml:" + name, features); + this.setAttributeNS( + root, this.namespaces["xsi"], + "xsi:schemaLocation", this.schemaLocation + ); + + return OpenLayers.Format.XML.prototype.write.apply(this, [root]); + }, + + /** + * Property: writers + * As a compliment to the readers property, this structure contains public + * writing functions grouped by namespace alias and named like the + * node names they produce. + */ + writers: { + "gml": OpenLayers.Util.applyDefaults({ + "featureMembers": function(features) { + var node = this.createElementNSPlus("gml:featureMembers"); + for(var i=0, len=features.length; i mapping. + */ + setGeometryTypes: function() { + this.geometryTypes = { + "OpenLayers.Geometry.Point": "Point", + "OpenLayers.Geometry.MultiPoint": "MultiPoint", + "OpenLayers.Geometry.LineString": (this.curve === true) ? "Curve": "LineString", + "OpenLayers.Geometry.MultiLineString": (this.multiCurve === false) ? "MultiLineString" : "MultiCurve", + "OpenLayers.Geometry.Polygon": (this.surface === true) ? "Surface" : "Polygon", + "OpenLayers.Geometry.MultiPolygon": (this.multiSurface === false) ? "MultiPolygon" : "MultiSurface", + "OpenLayers.Geometry.Collection": "GeometryCollection" + }; + }, + + CLASS_NAME: "OpenLayers.Format.GML.v3" + +}); diff --git a/openlayers/lib/OpenLayers/Format/GPX.js b/openlayers/lib/OpenLayers/Format/GPX.js new file mode 100644 index 0000000..3866f82 --- /dev/null +++ b/openlayers/lib/OpenLayers/Format/GPX.js @@ -0,0 +1,179 @@ +/* Copyright (c) 2006-2007 MetaCarta, Inc., published under a modified BSD license. + * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt + * for the full text of the license. */ + +/** + * @requires OpenLayers/Format/XML.js + * @requires OpenLayers/Feature/Vector.js + * @requires OpenLayers/Geometry/Point.js + * @requires OpenLayers/Geometry/LineString.js + */ + +/** + * Class: OpenLayers.Format.GPX + * Read/write GPX parser. Create a new instance with the + * constructor. + * + * Inherits from: + * - + */ +OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, { + /** + * APIProperty: extractWaypoints + * {Boolean} Extract waypoints from GPX. (default: true) + */ + extractWaypoints: true, + + /** + * APIProperty: extractTracks + * {Boolean} Extract tracks from GPX. (default: true) + */ + extractTracks: true, + + /** + * APIProperty: extractRoutes + * {Boolean} Extract routes from GPX. (default: true) + */ + extractRoutes: true, + + /** + * APIProperty: extractAttributes + * {Boolean} Extract feature attributes from GPX. (default: true) + * NOTE: Attributes as part of extensions to the GPX standard may not + * be extracted. + */ + extractAttributes: true, + + /** + * Constructor: OpenLayers.Format.GPX + * Create a new parser for GPX. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + */ + initialize: function(options) { + OpenLayers.Format.XML.prototype.initialize.apply(this, [options]); + }, + + /** + * APIMethod: read + * Return a list of features from a GPX doc + * + * Parameters: + * doc - {Element} + * + * Returns: + * An Array of s + */ + read: function(doc) { + if (typeof doc == "string") { + doc = OpenLayers.Format.XML.prototype.read.apply(this, [doc]); + } + var features = []; + + if(this.extractTracks) { + var tracks = doc.getElementsByTagName("trk"); + for (var i=0, len=tracks.length; i} a trkseg or rte node to parse + * segmentType - {String} nodeName of waypoints that form the line + * + * Returns: + * {} A linestring geometry + */ + extractSegment: function(segment, segmentType) { + var points = this.getElementsByTagNameNS(segment, segment.namespaceURI, segmentType); + var point_features = []; + for (var i = 0, len = points.length; i < len; i++) { + point_features.push(new OpenLayers.Geometry.Point(points[i].getAttribute("lon"), points[i].getAttribute("lat"))); + } + return new OpenLayers.Geometry.LineString(point_features); + }, + + /** + * Method: parseAttributes + * + * Parameters: + * node - {} + * + * Returns: + * {Object} An attributes object. + */ + parseAttributes: function(node) { + // node is either a wpt, trk or rte + // attributes are children of the form value + var attributes = {}; + var attrNode = node.firstChild; + while(attrNode) { + if(attrNode.nodeType == 1) { + var value = attrNode.firstChild; + if(value.nodeType == 3 || value.nodeType == 4) { + name = (attrNode.prefix) ? + attrNode.nodeName.split(":")[1] : + attrNode.nodeName; + if(name != "trkseg" && name != "rtept") { + attributes[name] = value.nodeValue; + } + } + } + attrNode = attrNode.nextSibling; + } + return attributes; + }, + + CLASS_NAME: "OpenLayers.Format.GPX" +}); diff --git a/openlayers/lib/OpenLayers/Format/GeoJSON.js b/openlayers/lib/OpenLayers/Format/GeoJSON.js new file mode 100644 index 0000000..5a0bd39 --- /dev/null +++ b/openlayers/lib/OpenLayers/Format/GeoJSON.js @@ -0,0 +1,707 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Format/JSON.js + * @requires OpenLayers/Feature/Vector.js + * @requires OpenLayers/Geometry/Point.js + * @requires OpenLayers/Geometry/MultiPoint.js + * @requires OpenLayers/Geometry/LineString.js + * @requires OpenLayers/Geometry/MultiLineString.js + * @requires OpenLayers/Geometry/Polygon.js + * @requires OpenLayers/Geometry/MultiPolygon.js + * @requires OpenLayers/Console.js + */ + +/** + * Class: OpenLayers.Format.GeoJSON + * Read and write GeoJSON. Create a new parser with the + * constructor. + * + * Inherits from: + * - + */ +OpenLayers.Format.GeoJSON = OpenLayers.Class(OpenLayers.Format.JSON, { + + /** + * Constructor: OpenLayers.Format.GeoJSON + * Create a new parser for GeoJSON. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + */ + initialize: function(options) { + OpenLayers.Format.JSON.prototype.initialize.apply(this, [options]); + }, + + /** + * APIMethod: read + * Deserialize a GeoJSON string. + * + * Parameters: + * json - {String} A GeoJSON string + * type - {String} Optional string that determines the structure of + * the output. Supported values are "Geometry", "Feature", and + * "FeatureCollection". If absent or null, a default of + * "FeatureCollection" is assumed. + * filter - {Function} A function which will be called for every key and + * value at every level of the final result. Each value will be + * replaced by the result of the filter function. This can be used to + * reform generic objects into instances of classes, or to transform + * date strings into Date objects. + * + * Returns: + * {Object} The return depends on the value of the type argument. If type + * is "FeatureCollection" (the default), the return will be an array + * of . If type is "Geometry", the input json + * must represent a single geometry, and the return will be an + * . If type is "Feature", the input json must + * represent a single feature, and the return will be an + * . + */ + read: function(json, type, filter) { + type = (type) ? type : "FeatureCollection"; + var results = null; + var obj = null; + if (typeof json == "string") { + obj = OpenLayers.Format.JSON.prototype.read.apply(this, + [json, filter]); + } else { + obj = json; + } + if(!obj) { + OpenLayers.Console.error("Bad JSON: " + json); + } else if(typeof(obj.type) != "string") { + OpenLayers.Console.error("Bad GeoJSON - no type: " + json); + } else if(this.isValidType(obj, type)) { + switch(type) { + case "Geometry": + try { + results = this.parseGeometry(obj); + } catch(err) { + OpenLayers.Console.error(err); + } + break; + case "Feature": + try { + results = this.parseFeature(obj); + results.type = "Feature"; + } catch(err) { + OpenLayers.Console.error(err); + } + break; + case "FeatureCollection": + // for type FeatureCollection, we allow input to be any type + results = []; + switch(obj.type) { + case "Feature": + try { + results.push(this.parseFeature(obj)); + } catch(err) { + results = null; + OpenLayers.Console.error(err); + } + break; + case "FeatureCollection": + for(var i=0, len=obj.features.length; i. + * + * Parameters: + * obj - {Object} An object created from a GeoJSON object + * + * Returns: + * {} A feature. + */ + parseFeature: function(obj) { + var feature, geometry, attributes, bbox; + attributes = (obj.properties) ? obj.properties : {}; + bbox = (obj.geometry && obj.geometry.bbox) || obj.bbox; + try { + geometry = this.parseGeometry(obj.geometry); + } catch(err) { + // deal with bad geometries + throw err; + } + feature = new OpenLayers.Feature.Vector(geometry, attributes); + if(bbox) { + feature.bounds = OpenLayers.Bounds.fromArray(bbox); + } + if(obj.id) { + feature.fid = obj.id; + } + return feature; + }, + + /** + * Method: parseGeometry + * Convert a geometry object from GeoJSON into an . + * + * Parameters: + * obj - {Object} An object created from a GeoJSON object + * + * Returns: + * {} A geometry. + */ + parseGeometry: function(obj) { + if (obj == null) { + return null; + } + var geometry, collection = false; + if(obj.type == "GeometryCollection") { + if(!(obj.geometries instanceof Array)) { + throw "GeometryCollection must have geometries array: " + obj; + } + var numGeom = obj.geometries.length; + var components = new Array(numGeom); + for(var i=0; i. + * + * Parameters: + * array - {Object} The coordinates array from the GeoJSON fragment. + * + * Returns: + * {} A geometry. + */ + "point": function(array) { + if(array.length != 2) { + throw "Only 2D points are supported: " + array; + } + return new OpenLayers.Geometry.Point(array[0], array[1]); + }, + + /** + * Method: parseCoords.multipoint + * Convert a coordinate array from GeoJSON into an + * . + * + * Parameters: + * array {Object} The coordinates array from the GeoJSON fragment. + * + * Returns: + * {} A geometry. + */ + "multipoint": function(array) { + var points = []; + var p = null; + for(var i=0, len=array.length; i. + * + * Parameters: + * array - {Object} The coordinates array from the GeoJSON fragment. + * + * Returns: + * {} A geometry. + */ + "linestring": function(array) { + var points = []; + var p = null; + for(var i=0, len=array.length; i. + * + * Parameters: + * array - {Object} The coordinates array from the GeoJSON fragment. + * + * Returns: + * {} A geometry. + */ + "multilinestring": function(array) { + var lines = []; + var l = null; + for(var i=0, len=array.length; i. + * + * Returns: + * {} A geometry. + */ + "polygon": function(array) { + var rings = []; + var r, l; + for(var i=0, len=array.length; i. + * + * Parameters: + * array - {Object} The coordinates array from the GeoJSON fragment. + * + * Returns: + * {} A geometry. + */ + "multipolygon": function(array) { + var polys = []; + var p = null; + for(var i=0, len=array.length; i. + * + * Parameters: + * array - {Object} The coordinates array from the GeoJSON fragment. + * + * Returns: + * {} A geometry. + */ + "box": function(array) { + if(array.length != 2) { + throw "GeoJSON box coordinates must have 2 elements"; + } + return new OpenLayers.Geometry.Polygon([ + new OpenLayers.Geometry.LinearRing([ + new OpenLayers.Geometry.Point(array[0][0], array[0][1]), + new OpenLayers.Geometry.Point(array[1][0], array[0][1]), + new OpenLayers.Geometry.Point(array[1][0], array[1][1]), + new OpenLayers.Geometry.Point(array[0][0], array[1][1]), + new OpenLayers.Geometry.Point(array[0][0], array[0][1]) + ]) + ]); + } + + }, + + /** + * APIMethod: write + * Serialize a feature, geometry, array of features into a GeoJSON string. + * + * Parameters: + * obj - {Object} An , , + * or an array of features. + * pretty - {Boolean} Structure the output with newlines and indentation. + * Default is false. + * + * Returns: + * {String} The GeoJSON string representation of the input geometry, + * features, or array of features. + */ + write: function(obj, pretty) { + var geojson = { + "type": null + }; + if(obj instanceof Array) { + geojson.type = "FeatureCollection"; + var numFeatures = obj.length; + geojson.features = new Array(numFeatures); + for(var i=0; i} + * + * Returns: + * {Object} An object which can be assigned to the crs property + * of a GeoJSON object. + */ + createCRSObject: function(object) { + var proj = object.layer.projection.toString(); + var crs = {}; + if (proj.match(/epsg:/i)) { + var code = parseInt(proj.substring(proj.indexOf(":") + 1)); + if (code == 4326) { + crs = { + "type": "OGC", + "properties": { + "urn": "urn:ogc:def:crs:OGC:1.3:CRS84" + } + }; + } else { + crs = { + "type": "EPSG", + "properties": { + "code": code + } + }; + } + } + return crs; + }, + + /** + * Property: extract + * Object with properties corresponding to the GeoJSON types. + * Property values are functions that do the actual value extraction. + */ + extract: { + /** + * Method: extract.feature + * Return a partial GeoJSON object representing a single feature. + * + * Parameters: + * feature - {} + * + * Returns: + * {Object} An object representing the point. + */ + 'feature': function(feature) { + var geom = this.extract.geometry.apply(this, [feature.geometry]); + return { + "type": "Feature", + "id": feature.fid == null ? feature.id : feature.fid, + "properties": feature.attributes, + "geometry": geom + }; + }, + + /** + * Method: extract.geometry + * Return a GeoJSON object representing a single geometry. + * + * Parameters: + * geometry - {} + * + * Returns: + * {Object} An object representing the geometry. + */ + 'geometry': function(geometry) { + if (geometry == null) { + return null; + } + if (this.internalProjection && this.externalProjection) { + geometry = geometry.clone(); + geometry.transform(this.internalProjection, + this.externalProjection); + } + var geometryType = geometry.CLASS_NAME.split('.')[2]; + var data = this.extract[geometryType.toLowerCase()].apply(this, [geometry]); + var json; + if(geometryType == "Collection") { + json = { + "type": "GeometryCollection", + "geometries": data + }; + } else { + json = { + "type": geometryType, + "coordinates": data + }; + } + + return json; + }, + + /** + * Method: extract.point + * Return an array of coordinates from a point. + * + * Parameters: + * point - {} + * + * Returns: + * {Array} An array of coordinates representing the point. + */ + 'point': function(point) { + return [point.x, point.y]; + }, + + /** + * Method: extract.multipoint + * Return an array of point coordinates from a multipoint. + * + * Parameters: + * multipoint - {} + * + * Returns: + * {Array} An array of point coordinate arrays representing + * the multipoint. + */ + 'multipoint': function(multipoint) { + var array = []; + for(var i=0, len=multipoint.components.length; i} + * + * Returns: + * {Array} An array of coordinate arrays representing + * the linestring. + */ + 'linestring': function(linestring) { + var array = []; + for(var i=0, len=linestring.components.length; i} + * + * Returns: + * {Array} An array of linestring arrays representing + * the multilinestring. + */ + 'multilinestring': function(multilinestring) { + var array = []; + for(var i=0, len=multilinestring.components.length; i} + * + * Returns: + * {Array} An array of linear ring arrays representing the polygon. + */ + 'polygon': function(polygon) { + var array = []; + for(var i=0, len=polygon.components.length; i} + * + * Returns: + * {Array} An array of polygon arrays representing + * the multipolygon + */ + 'multipolygon': function(multipolygon) { + var array = []; + for(var i=0, len=multipolygon.components.length; i} + * + * Returns: + * {Array} An array of geometry objects representing the geometry + * collection. + */ + 'collection': function(collection) { + var len = collection.components.length; + var array = new Array(len); + for(var i=0; i constructor. + * + * Inherits from: + * - + */ +OpenLayers.Format.GeoRSS = OpenLayers.Class(OpenLayers.Format.XML, { + + /** + * APIProperty: rssns + * {String} RSS namespace to use. Defaults to + * "http://backend.userland.com/rss2" + */ + rssns: "http://backend.userland.com/rss2", + + /** + * APIProperty: featurens + * {String} Feature Attributes namespace. Defaults to + * "http://mapserver.gis.umn.edu/mapserver" + */ + featureNS: "http://mapserver.gis.umn.edu/mapserver", + + /** + * APIProperty: georssns + * {String} GeoRSS namespace to use. Defaults to + * "http://www.georss.org/georss" + */ + georssns: "http://www.georss.org/georss", + + /** + * APIProperty: geons + * {String} W3C Geo namespace to use. Defaults to + * "http://www.w3.org/2003/01/geo/wgs84_pos#" + */ + geons: "http://www.w3.org/2003/01/geo/wgs84_pos#", + + /** + * APIProperty: featureTitle + * {String} Default title for features. Defaults to "Untitled" + */ + featureTitle: "Untitled", + + /** + * APIProperty: featureDescription + * {String} Default description for features. Defaults to "No Description" + */ + featureDescription: "No Description", + + /** + * Property: gmlParse + * {Object} GML Format object for parsing features + * Non-API and only created if necessary + */ + gmlParser: null, + + /** + * APIProperty: xy + * {Boolean} Order of the GML coordinate: true:(x,y) or false:(y,x) + * For GeoRSS the default is (y,x), therefore: false + */ + xy: false, + + /** + * Constructor: OpenLayers.Format.GeoRSS + * Create a new parser for GeoRSS. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + */ + initialize: function(options) { + OpenLayers.Format.XML.prototype.initialize.apply(this, [options]); + }, + + /** + * Method: createGeometryFromItem + * Return a geometry from a GeoRSS Item. + * + * Parameters: + * item - {DOMElement} A GeoRSS item node. + * + * Returns: + * {} A geometry representing the node. + */ + createGeometryFromItem: function(item) { + var point = this.getElementsByTagNameNS(item, this.georssns, "point"); + var lat = this.getElementsByTagNameNS(item, this.geons, 'lat'); + var lon = this.getElementsByTagNameNS(item, this.geons, 'long'); + + var line = this.getElementsByTagNameNS(item, + this.georssns, + "line"); + var polygon = this.getElementsByTagNameNS(item, + this.georssns, + "polygon"); + var where = this.getElementsByTagNameNS(item, + this.georssns, + "where"); + var box = this.getElementsByTagNameNS(item, + this.georssns, + "box"); + + if (point.length > 0 || (lat.length > 0 && lon.length > 0)) { + var location; + if (point.length > 0) { + location = OpenLayers.String.trim( + point[0].firstChild.nodeValue).split(/\s+/); + if (location.length !=2) { + location = OpenLayers.String.trim( + point[0].firstChild.nodeValue).split(/\s*,\s*/); + } + } else { + location = [parseFloat(lat[0].firstChild.nodeValue), + parseFloat(lon[0].firstChild.nodeValue)]; + } + + var geometry = new OpenLayers.Geometry.Point(parseFloat(location[1]), + parseFloat(location[0])); + + } else if (line.length > 0) { + var coords = OpenLayers.String.trim(this.concatChildValues(line[0])).split(/\s+/); + var components = []; + var point; + for (var i=0, len=coords.length; i 0) { + var coords = OpenLayers.String.trim(this.concatChildValues(polygon[0])).split(/\s+/); + var components = []; + var point; + for (var i=0, len=coords.length; i 0) { + if (!this.gmlParser) { + this.gmlParser = new OpenLayers.Format.GML({'xy': this.xy}); + } + var feature = this.gmlParser.parseFeature(where[0]); + geometry = feature.geometry; + } else if (box.length > 0) { + var coords = OpenLayers.String.trim(box[0].firstChild.nodeValue).split(/\s+/); + var components = []; + var point; + if (coords.length > 3) { + point = new OpenLayers.Geometry.Point(parseFloat(coords[1]), + parseFloat(coords[0])); + components.push(point); + point = new OpenLayers.Geometry.Point(parseFloat(coords[1]), + parseFloat(coords[2])); + components.push(point); + point = new OpenLayers.Geometry.Point(parseFloat(coords[3]), + parseFloat(coords[2])); + components.push(point); + point = new OpenLayers.Geometry.Point(parseFloat(coords[3]), + parseFloat(coords[0])); + components.push(point); + point = new OpenLayers.Geometry.Point(parseFloat(coords[1]), + parseFloat(coords[0])); + components.push(point); + } + geometry = new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(components)]); + } + + if (geometry && this.internalProjection && this.externalProjection) { + geometry.transform(this.externalProjection, + this.internalProjection); + } + + return geometry; + }, + + /** + * Method: createFeatureFromItem + * Return a feature from a GeoRSS Item. + * + * Parameters: + * item - {DOMElement} A GeoRSS item node. + * + * Returns: + * {} A feature representing the item. + */ + createFeatureFromItem: function(item) { + var geometry = this.createGeometryFromItem(item); + + /* Provide defaults for title and description */ + var title = this.getChildValue(item, "*", "title", this.featureTitle); + + /* First try RSS descriptions, then Atom summaries */ + var description = this.getChildValue( + item, "*", "description", + this.getChildValue(item, "*", "content", + this.getChildValue(item, "*", "summary", this.featureDescription))); + + /* If no link URL is found in the first child node, try the + href attribute */ + var link = this.getChildValue(item, "*", "link"); + if(!link) { + try { + link = this.getElementsByTagNameNS(item, "*", "link")[0].getAttribute("href"); + } catch(e) { + link = null; + } + } + + var id = this.getChildValue(item, "*", "id", null); + + var data = { + "title": title, + "description": description, + "link": link + }; + var feature = new OpenLayers.Feature.Vector(geometry, data); + feature.fid = id; + return feature; + }, + + /** + * Method: getChildValue + * + * Parameters: + * node - {DOMElement} + * nsuri - {String} Child node namespace uri ("*" for any). + * name - {String} Child node name. + * def - {String} Optional string default to return if no child found. + * + * Returns: + * {String} The value of the first child with the given tag name. Returns + * default value or empty string if none found. + */ + getChildValue: function(node, nsuri, name, def) { + var value; + var eles = this.getElementsByTagNameNS(node, nsuri, name); + if(eles && eles[0] && eles[0].firstChild + && eles[0].firstChild.nodeValue) { + value = eles[0].firstChild.nodeValue; + } else { + value = (def == undefined) ? "" : def; + } + return value; + }, + + /** + * APIMethod: read + * Return a list of features from a GeoRSS doc + + * Parameters: + * data - {Element} + * + * Returns: + * An Array of s + */ + read: function(doc) { + if (typeof doc == "string") { + doc = OpenLayers.Format.XML.prototype.read.apply(this, [doc]); + } + + /* Try RSS items first, then Atom entries */ + var itemlist = null; + itemlist = this.getElementsByTagNameNS(doc, '*', 'item'); + if (itemlist.length == 0) { + itemlist = this.getElementsByTagNameNS(doc, '*', 'entry'); + } + + var numItems = itemlist.length; + var features = new Array(numItems); + for(var i=0; i)} List of features to serialize into a string. + */ + write: function(features) { + var georss; + if(features instanceof Array) { + georss = this.createElementNS(this.rssns, "rss"); + for(var i=0, len=features.length; i, and build a geometry for it. + * + * Parameters: + * feature - {} + * + * Returns: + * {DOMElement} + */ + createFeatureXML: function(feature) { + var geometryNode = this.buildGeometryNode(feature.geometry); + var featureNode = this.createElementNS(this.rssns, "item"); + var titleNode = this.createElementNS(this.rssns, "title"); + titleNode.appendChild(this.createTextNode(feature.attributes.title ? feature.attributes.title : "")); + var descNode = this.createElementNS(this.rssns, "description"); + descNode.appendChild(this.createTextNode(feature.attributes.description ? feature.attributes.description : "")); + featureNode.appendChild(titleNode); + featureNode.appendChild(descNode); + if (feature.attributes.link) { + var linkNode = this.createElementNS(this.rssns, "link"); + linkNode.appendChild(this.createTextNode(feature.attributes.link)); + featureNode.appendChild(linkNode); + } + for(var attr in feature.attributes) { + if (attr == "link" || attr == "title" || attr == "description") { continue; } + var attrText = this.createTextNode(feature.attributes[attr]); + var nodename = attr; + if (attr.search(":") != -1) { + nodename = attr.split(":")[1]; + } + var attrContainer = this.createElementNS(this.featureNS, "feature:"+nodename); + attrContainer.appendChild(attrText); + featureNode.appendChild(attrContainer); + } + featureNode.appendChild(geometryNode); + return featureNode; + }, + + /** + * Method: buildGeometryNode + * builds a GeoRSS node with a given geometry + * + * Parameters: + * geometry - {} + * + * Returns: + * {DOMElement} A gml node. + */ + buildGeometryNode: function(geometry) { + if (this.internalProjection && this.externalProjection) { + geometry = geometry.clone(); + geometry.transform(this.internalProjection, + this.externalProjection); + } + var node; + // match Polygon + if (geometry.CLASS_NAME == "OpenLayers.Geometry.Polygon") { + node = this.createElementNS(this.georssns, 'georss:polygon'); + + node.appendChild(this.buildCoordinatesNode(geometry.components[0])); + } + // match LineString + else if (geometry.CLASS_NAME == "OpenLayers.Geometry.LineString") { + node = this.createElementNS(this.georssns, 'georss:line'); + + node.appendChild(this.buildCoordinatesNode(geometry)); + } + // match Point + else if (geometry.CLASS_NAME == "OpenLayers.Geometry.Point") { + node = this.createElementNS(this.georssns, 'georss:point'); + node.appendChild(this.buildCoordinatesNode(geometry)); + } else { + throw "Couldn't parse " + geometry.CLASS_NAME; + } + return node; + }, + + /** + * Method: buildCoordinatesNode + * + * Parameters: + * geometry - {} + */ + buildCoordinatesNode: function(geometry) { + var points = null; + + if (geometry.components) { + points = geometry.components; + } + + var path; + if (points) { + var numPoints = points.length; + var parts = new Array(numPoints); + for (var i = 0; i < numPoints; i++) { + parts[i] = points[i].y + " " + points[i].x; + } + path = parts.join(" "); + } else { + path = geometry.y + " " + geometry.x; + } + return this.createTextNode(path); + }, + + CLASS_NAME: "OpenLayers.Format.GeoRSS" +}); diff --git a/openlayers/lib/OpenLayers/Format/JSON.js b/openlayers/lib/OpenLayers/Format/JSON.js new file mode 100644 index 0000000..6b3a461 --- /dev/null +++ b/openlayers/lib/OpenLayers/Format/JSON.js @@ -0,0 +1,388 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * Note: + * This work draws heavily from the public domain JSON serializer/deserializer + * at http://www.json.org/json.js. Rewritten so that it doesn't modify + * basic data prototypes. + */ + +/** + * @requires OpenLayers/Format.js + */ + +/** + * Class: OpenLayers.Format.JSON + * A parser to read/write JSON safely. Create a new instance with the + * constructor. + * + * Inherits from: + * - + */ +OpenLayers.Format.JSON = OpenLayers.Class(OpenLayers.Format, { + + /** + * APIProperty: indent + * {String} For "pretty" printing, the indent string will be used once for + * each indentation level. + */ + indent: " ", + + /** + * APIProperty: space + * {String} For "pretty" printing, the space string will be used after + * the ":" separating a name/value pair. + */ + space: " ", + + /** + * APIProperty: newline + * {String} For "pretty" printing, the newline string will be used at the + * end of each name/value pair or array item. + */ + newline: "\n", + + /** + * Property: level + * {Integer} For "pretty" printing, this is incremented/decremented during + * serialization. + */ + level: 0, + + /** + * Property: pretty + * {Boolean} Serialize with extra whitespace for structure. This is set + * by the method. + */ + pretty: false, + + /** + * Constructor: OpenLayers.Format.JSON + * Create a new parser for JSON. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + */ + initialize: function(options) { + OpenLayers.Format.prototype.initialize.apply(this, [options]); + }, + + /** + * APIMethod: read + * Deserialize a json string. + * + * Parameters: + * json - {String} A JSON string + * filter - {Function} A function which will be called for every key and + * value at every level of the final result. Each value will be + * replaced by the result of the filter function. This can be used to + * reform generic objects into instances of classes, or to transform + * date strings into Date objects. + * + * Returns: + * {Object} An object, array, string, or number . + */ + read: function(json, filter) { + /** + * Parsing happens in three stages. In the first stage, we run the text + * against a regular expression which looks for non-JSON + * characters. We are especially concerned with '()' and 'new' + * because they can cause invocation, and '=' because it can cause + * mutation. But just to be safe, we will reject all unexpected + * characters. + */ + try { + if (/^[\],:{}\s]*$/.test(json.replace(/\\["\\\/bfnrtu]/g, '@'). + replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). + replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + + /** + * In the second stage we use the eval function to compile the + * text into a JavaScript structure. The '{' operator is + * subject to a syntactic ambiguity in JavaScript - it can + * begin a block or an object literal. We wrap the text in + * parens to eliminate the ambiguity. + */ + var object = eval('(' + json + ')'); + + /** + * In the optional third stage, we recursively walk the new + * structure, passing each name/value pair to a filter + * function for possible transformation. + */ + if(typeof filter === 'function') { + function walk(k, v) { + if(v && typeof v === 'object') { + for(var i in v) { + if(v.hasOwnProperty(i)) { + v[i] = walk(i, v[i]); + } + } + } + return filter(k, v); + } + object = walk('', object); + } + + if(this.keepData) { + this.data = object; + } + + return object; + } + } catch(e) { + // Fall through if the regexp test fails. + } + return null; + }, + + /** + * APIMethod: write + * Serialize an object into a JSON string. + * + * Parameters: + * value - {String} The object, array, string, number, boolean or date + * to be serialized. + * pretty - {Boolean} Structure the output with newlines and indentation. + * Default is false. + * + * Returns: + * {String} The JSON string representation of the input value. + */ + write: function(value, pretty) { + this.pretty = !!pretty; + var json = null; + var type = typeof value; + if(this.serialize[type]) { + try { + json = this.serialize[type].apply(this, [value]); + } catch(err) { + OpenLayers.Console.error("Trouble serializing: " + err); + } + } + return json; + }, + + /** + * Method: writeIndent + * Output an indentation string depending on the indentation level. + * + * Returns: + * {String} An appropriate indentation string. + */ + writeIndent: function() { + var pieces = []; + if(this.pretty) { + for(var i=0; i 0) { + pieces.push(','); + } + pieces.push(this.writeNewline(), this.writeIndent(), json); + } + } + + this.level -= 1; + pieces.push(this.writeNewline(), this.writeIndent(), ']'); + return pieces.join(''); + }, + + /** + * Method: serialize.string + * Transform a string into a JSON string. + * + * Parameters: + * string - {String} The string to be serialized + * + * Returns: + * {String} A JSON string representing the string. + */ + 'string': function(string) { + // If the string contains no control characters, no quote characters, and no + // backslash characters, then we can simply slap some quotes around it. + // Otherwise we must also replace the offending characters with safe + // sequences. + var m = { + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }; + if(/["\\\x00-\x1f]/.test(string)) { + return '"' + string.replace(/([\x00-\x1f\\"])/g, function(a, b) { + var c = m[b]; + if(c) { + return c; + } + c = b.charCodeAt(); + return '\\u00' + + Math.floor(c / 16).toString(16) + + (c % 16).toString(16); + }) + '"'; + } + return '"' + string + '"'; + }, + + /** + * Method: serialize.number + * Transform a number into a JSON string. + * + * Parameters: + * number - {Number} The number to be serialized. + * + * Returns: + * {String} A JSON string representing the number. + */ + 'number': function(number) { + return isFinite(number) ? String(number) : "null"; + }, + + /** + * Method: serialize.boolean + * Transform a boolean into a JSON string. + * + * Parameters: + * bool - {Boolean} The boolean to be serialized. + * + * Returns: + * {String} A JSON string representing the boolean. + */ + 'boolean': function(bool) { + return String(bool); + }, + + /** + * Method: serialize.object + * Transform a date into a JSON string. + * + * Parameters: + * date - {Date} The date to be serialized. + * + * Returns: + * {String} A JSON string representing the date. + */ + 'date': function(date) { + function format(number) { + // Format integers to have at least two digits. + return (number < 10) ? '0' + number : number; + } + return '"' + date.getFullYear() + '-' + + format(date.getMonth() + 1) + '-' + + format(date.getDate()) + 'T' + + format(date.getHours()) + ':' + + format(date.getMinutes()) + ':' + + format(date.getSeconds()) + '"'; + } + }, + + CLASS_NAME: "OpenLayers.Format.JSON" + +}); diff --git a/openlayers/lib/OpenLayers/Format/KML.js b/openlayers/lib/OpenLayers/Format/KML.js new file mode 100644 index 0000000..b42644e --- /dev/null +++ b/openlayers/lib/OpenLayers/Format/KML.js @@ -0,0 +1,1238 @@ +/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD + * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the + * full text of the license. */ + +/** + * @requires OpenLayers/Format/XML.js + * @requires OpenLayers/Feature/Vector.js + * @requires OpenLayers/Geometry/Point.js + * @requires OpenLayers/Geometry/LineString.js + * @requires OpenLayers/Geometry/Polygon.js + * @requires OpenLayers/Geometry/Collection.js + * @requires OpenLayers/Request/XMLHttpRequest.js + * @requires OpenLayers/Console.js + */ + +/** + * Class: OpenLayers.Format.KML + * Read/Wite KML. Create a new instance with the + * constructor. + * + * Inherits from: + * - + */ +OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, { + + /** + * APIProperty: kmlns + * {String} KML Namespace to use. Defaults to 2.0 namespace. + */ + kmlns: "http://earth.google.com/kml/2.0", + + /** + * APIProperty: placemarksDesc + * {String} Name of the placemarks. Default is "No description available." + */ + placemarksDesc: "No description available", + + /** + * APIProperty: foldersName + * {String} Name of the folders. Default is "OpenLayers export." + */ + foldersName: "OpenLayers export", + + /** + * APIProperty: foldersDesc + * {String} Description of the folders. Default is "Exported on [date]." + */ + foldersDesc: "Exported on " + new Date(), + + /** + * APIProperty: extractAttributes + * {Boolean} Extract attributes from KML. Default is true. + * Extracting styleUrls requires this to be set to true + */ + extractAttributes: true, + + /** + * Property: extractStyles + * {Boolean} Extract styles from KML. Default is false. + * Extracting styleUrls also requires extractAttributes to be + * set to true + */ + extractStyles: false, + + /** + * Property: internalns + * {String} KML Namespace to use -- defaults to the namespace of the + * Placemark node being parsed, but falls back to kmlns. + */ + internalns: null, + + /** + * Property: features + * {Array} Array of features + * + */ + features: null, + + /** + * Property: styles + * {Object} Storage of style objects + * + */ + styles: null, + + /** + * Property: styleBaseUrl + * {String} + */ + styleBaseUrl: "", + + /** + * Property: fetched + * {Object} Storage of KML URLs that have been fetched before + * in order to prevent reloading them. + */ + fetched: null, + + /** + * APIProperty: maxDepth + * {Integer} Maximum depth for recursive loading external KML URLs + * Defaults to 0: do no external fetching + */ + maxDepth: 0, + + /** + * Constructor: OpenLayers.Format.KML + * Create a new parser for KML. + * + * Parameters: + * options - {Object} An optional object whose properties will be set on + * this instance. + */ + initialize: function(options) { + // compile regular expressions once instead of every time they are used + this.regExes = { + trimSpace: (/^\s*|\s*$/g), + removeSpace: (/\s*/g), + splitSpace: (/\s+/), + trimComma: (/\s*,\s*/g), + kmlColor: (/(\w{2})(\w{2})(\w{2})(\w{2})/), + kmlIconPalette: (/root:\/\/icons\/palette-(\d+)(\.\w+)/), + straightBracket: (/\$\[(.*?)\]/g) + }; + OpenLayers.Format.XML.prototype.initialize.apply(this, [options]); + }, + + /** + * APIMethod: read + * Read data from a string, and return a list of features. + * + * Parameters: + * data - {String} or {DOMElement} data to read/parse. + * + * Returns: + * {Array()} List of features. + */ + read: function(data) { + this.features = []; + this.styles = {}; + this.fetched = {}; + + // Set default options + var options = { + depth: 0, + styleBaseUrl: this.styleBaseUrl + }; + + return this.parseData(data, options); + }, + + /** + * Method: parseData + * Read data from a string, and return a list of features. + * + * Parameters: + * data - {String} or {DOMElement} data to read/parse. + * options - {Object} Hash of options + * + * Returns: + * {Array()} List of features. + */ + parseData: function(data, options) { + if(typeof data == "string") { + data = OpenLayers.Format.XML.prototype.read.apply(this, [data]); + } + + // Loop throught the following node types in this order and + // process the nodes found + var types = ["Link", "NetworkLink", "Style", "StyleMap", "Placemark"]; + for(var i=0, len=types.length; i and + // Don't do anything if we have reached our maximum depth for recursion + if (options.depth >= this.maxDepth) { + return false; + } + + // increase depth + var newOptions = OpenLayers.Util.extend({}, options); + newOptions.depth++; + + for(var i=0, len=nodes.length; i nodes in the data and parses them + * Also parses nodes, but only uses the 'normal' key + * + * Parameters: + * nodes - {Array} of {DOMElement} data to read/parse. + * options - {Object} Hash of options + * + */ + parseStyles: function(nodes, options) { + for(var i=0, len=nodes.length; i node and builds the style hash + * accordingly + * + * Parameters: + * node - {DOMElement} -112,36 -113,37 '; + var test_style_fill = ' -112,36 -113,37 '; + var test_nl = ' http://maker.geocommons.com/maps/1717/overlays/0 '; + + function test_Format_KML_constructor(t) { + t.plan(4); + + var options = {'foo': 'bar'}; + var format = new OpenLayers.Format.KML(options); + t.ok(format instanceof OpenLayers.Format.KML, + "new OpenLayers.Format.KML returns object" ); + t.eq(format.foo, "bar", "constructor sets options correctly"); + t.eq(typeof format.read, "function", "format has a read function"); + t.eq(typeof format.write, "function", "format has a write function"); + } + + function test_Format_KML_read(t) { + t.plan(5); + var features = (new OpenLayers.Format.KML()).read(this.test_content); + t.eq(features.length, 4, "Number of features read is correct"); + t.ok(features[0].geometry.toString() == "POLYGON((5.001370157823406 49.26855713824488,8.214706453896161 49.630662409673505,8.397385910100951 48.45172350357396,5.001370157823406 49.26855713824488))", "polygon feature geometry correctly created"); + t.ok(features[1].geometry.toString() == "LINESTRING(5.838523393080493 49.74814616928052,5.787079558782349 48.410795432216574,8.91427702008381 49.28932499608202)", "linestring feature geometry correctly created"); + t.ok(features[2].geometry.toString() == "POINT(6.985073041685488 49.8682250149058)", "point feature geometry correctly created"); + t.ok(features[3].geometry.CLASS_NAME == "OpenLayers.Geometry.Collection", + "read geometry collection"); + } + + function test_Format_KML_readCdataAttributes_20(t) { + t.plan(2); + var cdata = '#rel1.0 17.266666, 48.283333'; + var features = (new OpenLayers.Format.KML()).read(cdata); + t.eq(features[0].attributes.description, "Full of text.", "Description attribute in cdata read correctly"); + t.eq(features[0].attributes.name, "Pezinok", "title attribute in cdata read correctly"); + + } + + function test_Format_KML_networklink(t) { + t.plan(1); + var f = new OpenLayers.Format.KML({'maxDepth':1}); + f.fetchLink = function(url) { + t.eq(url, "http://maker.geocommons.com/maps/1717/overlays/0", "network link fetched a link correctly."); + return ''; + } + f.read(test_nl); + } + function test_Format_KML_readCdataAttributes_21(t) { + t.plan(2); + var cdata = '#rel1.0 17.266666, 48.283333'; + var features = (new OpenLayers.Format.KML()).read(cdata); + t.eq(features[0].attributes.description, "Full of text.", "Description attribute in cdata read correctly"); + t.eq(features[0].attributes.name, "Pezinok", "title attribute in cdata read correctly"); + + } + + function test_Format_KML_write(t) { + // make sure id, name, and description are preserved + t.plan(1); + var kmlExpected = this.test_content; + var options = { + folderName: "OpenLayers export", + foldersDesc: "Vector geometries from OpenLayers" + } + + var format = new OpenLayers.Format.KML(options); + var features = format.read(kmlExpected); + var kmlOut = format.write(features); + var kmlOut = kmlOut.replace(/<\?[^>]*\?>/, ''); // Remove XML Prolog + t.eq(kmlOut, kmlExpected, "correctly writes an KML doc string"); + } + + function test_Format_KML_write_multis(t) { + /** + * KML doesn't have a representation for multi geometries of a + * specific type. KML MultiGeometry maps to OL Geometry.Collection. + * Because of this, multi-geometries in OL can't make a round trip + * through KML (an OL MultiPoint maps to a KML MultiGeometry + * containing points, which maps back to an OL Collection containing + * points). So we need to acceptance tests for the writing of + * multi-geometries specifically instead of relying on the round-trip + * write test above. + */ + t.plan(3); + var format = new OpenLayers.Format.KML({foldersDesc: "test output"}); + var multi, feature, output, expected; + + // test multipoint + var multi = new OpenLayers.Geometry.MultiPoint([ + new OpenLayers.Geometry.Point(0, 1) + ]); + feature = new OpenLayers.Feature.Vector(multi, {name: "test name"}); + output = format.write(feature); + expected = 'OpenLayers exporttest outputtest nameNo description available0,1'; + var output = output.replace(/<\?[^>]*\?>/, ''); // Remove XML Prolog + t.eq(output, expected, "multipoint correctly written"); + + // test multilinestring + var multi = new OpenLayers.Geometry.MultiLineString([ + new OpenLayers.Geometry.LineString([ + new OpenLayers.Geometry.Point(1, 0), + new OpenLayers.Geometry.Point(0, 1) + ]) + ]); + feature = new OpenLayers.Feature.Vector(multi, {name: "test name"}); + output = format.write(feature); + expected = 'OpenLayers exporttest outputtest nameNo description available1,0 0,1'; + var output = output.replace(/<\?[^>]*\?>/, ''); // Remove XML Prolog + t.eq(output, expected, "multilinestring correctly written"); + + // test multipolygon + var multi = new OpenLayers.Geometry.MultiPolygon([ + new OpenLayers.Geometry.Polygon([ + new OpenLayers.Geometry.LinearRing([ + new OpenLayers.Geometry.Point(0, 0), + new OpenLayers.Geometry.Point(1, 0), + new OpenLayers.Geometry.Point(0, 1) + ]) + ]) + ]); + feature = new OpenLayers.Feature.Vector(multi, {name: "test name"}); + output = format.write(feature); + expected = 'OpenLayers exporttest outputtest nameNo description available0,0 1,0 0,1 0,0'; + var output = output.replace(/<\?[^>]*\?>/, ''); // Remove XML Prolog + t.eq(output, expected, "multilinestring correctly written"); + + } + function test_Format_KML_extractStyle(t) { + t.plan(1); + var f = new OpenLayers.Format.KML(); + var features = f.read(test_style); + t.ok(features[0].style == undefined, "KML Feature has no style with extractStyle false"); + } + function test_Format_KML_extractStyleFill(t) { + t.plan(2); + var f = new OpenLayers.Format.KML({extractStyles: true}); + var features = f.read(test_style); + t.eq(features[0].style.fillColor, "#ff0000", "default fill is set"); + var features = f.read(test_style_fill); + t.eq(features[0].style.fillColor, "none", "KML Feature has none fill"); + } + function test_Format_KML_getStyle(t) { + t.plan(1); + var style = {t: true}; + var f = new OpenLayers.Format.KML(); + f.styles = {test: style}; + var gotStyle = f.getStyle('test'); + gotStyle.t = false; + t.ok(style.t, "getStyle returns copy of style rather than reference"); + } + function test_Format_KML_extendedData(t) { + t.plan(2); + var f = new OpenLayers.Format.KML(); + var features = f.read(OpenLayers.Util.getElement("kml_extendeddata").value); + t.eq(features[0].attributes.all_bridges.value, "3030", "read value from extendeddata correctly."); + t.eq(features[0].attributes.all_bridges.displayName, "all bridges", "read displayName from extendeddata correctly."); + } + + + + + + + diff --git a/openlayers/tests/Format/OSM.html b/openlayers/tests/Format/OSM.html new file mode 100644 index 0000000..12f62b4 --- /dev/null +++ b/openlayers/tests/Format/OSM.html @@ -0,0 +1,101 @@ + + + + + + + + + diff --git a/openlayers/tests/Format/SLD.html b/openlayers/tests/Format/SLD.html new file mode 100644 index 0000000..d63798b --- /dev/null +++ b/openlayers/tests/Format/SLD.html @@ -0,0 +1,36 @@ + + + + + + + + diff --git a/openlayers/tests/Format/SLD/v1_0_0.html b/openlayers/tests/Format/SLD/v1_0_0.html new file mode 100644 index 0000000..4bd2277 --- /dev/null +++ b/openlayers/tests/Format/SLD/v1_0_0.html @@ -0,0 +1,387 @@ + + + + + + + + diff --git a/openlayers/tests/Format/Text.html b/openlayers/tests/Format/Text.html new file mode 100644 index 0000000..2b46ced --- /dev/null +++ b/openlayers/tests/Format/Text.html @@ -0,0 +1,49 @@ + + + + + + + + + + + + diff --git a/openlayers/tests/Format/WFS.html b/openlayers/tests/Format/WFS.html new file mode 100644 index 0000000..113e219 --- /dev/null +++ b/openlayers/tests/Format/WFS.html @@ -0,0 +1,81 @@ + + + + + + +
+
+ + diff --git a/openlayers/tests/Format/WFSCapabilities.html b/openlayers/tests/Format/WFSCapabilities.html new file mode 100644 index 0000000..7de3397 --- /dev/null +++ b/openlayers/tests/Format/WFSCapabilities.html @@ -0,0 +1,43 @@ + + + + + + + + \ No newline at end of file diff --git a/openlayers/tests/Format/WFSCapabilities/v1.html b/openlayers/tests/Format/WFSCapabilities/v1.html new file mode 100644 index 0000000..45f22d8 --- /dev/null +++ b/openlayers/tests/Format/WFSCapabilities/v1.html @@ -0,0 +1,128 @@ + + + + + + + + diff --git a/openlayers/tests/Format/WFSDescribeFeatureType.html b/openlayers/tests/Format/WFSDescribeFeatureType.html new file mode 100644 index 0000000..d191d4f --- /dev/null +++ b/openlayers/tests/Format/WFSDescribeFeatureType.html @@ -0,0 +1,381 @@ + + + + + + + + \ No newline at end of file diff --git a/openlayers/tests/Format/WFST.html b/openlayers/tests/Format/WFST.html new file mode 100644 index 0000000..e6793c0 --- /dev/null +++ b/openlayers/tests/Format/WFST.html @@ -0,0 +1,23 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Format/WFST/v1.html b/openlayers/tests/Format/WFST/v1.html new file mode 100644 index 0000000..eb0f8ce --- /dev/null +++ b/openlayers/tests/Format/WFST/v1.html @@ -0,0 +1,160 @@ + + + + + + +
+ +
+ +
+
+
+
+
+ + diff --git a/openlayers/tests/Format/WFST/v1_0_0.html b/openlayers/tests/Format/WFST/v1_0_0.html new file mode 100644 index 0000000..a3f176e --- /dev/null +++ b/openlayers/tests/Format/WFST/v1_0_0.html @@ -0,0 +1,111 @@ + + + + + + +
+
+
+ + diff --git a/openlayers/tests/Format/WFST/v1_1_0.html b/openlayers/tests/Format/WFST/v1_1_0.html new file mode 100644 index 0000000..78d7fe7 --- /dev/null +++ b/openlayers/tests/Format/WFST/v1_1_0.html @@ -0,0 +1,115 @@ + + + + + + +
+
+
+
+ + diff --git a/openlayers/tests/Format/WKT.html b/openlayers/tests/Format/WKT.html new file mode 100644 index 0000000..fdadda8 --- /dev/null +++ b/openlayers/tests/Format/WKT.html @@ -0,0 +1,244 @@ + + + + + + + + diff --git a/openlayers/tests/Format/WMC.html b/openlayers/tests/Format/WMC.html new file mode 100644 index 0000000..92a239f --- /dev/null +++ b/openlayers/tests/Format/WMC.html @@ -0,0 +1,143 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Format/WMC/v1.html b/openlayers/tests/Format/WMC/v1.html new file mode 100644 index 0000000..5d3bdb8 --- /dev/null +++ b/openlayers/tests/Format/WMC/v1.html @@ -0,0 +1,200 @@ + + + + + + + + diff --git a/openlayers/tests/Format/WMC/v1_1_0.html b/openlayers/tests/Format/WMC/v1_1_0.html new file mode 100644 index 0000000..8e43b99 --- /dev/null +++ b/openlayers/tests/Format/WMC/v1_1_0.html @@ -0,0 +1,74 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Format/WMSCapabilities.html b/openlayers/tests/Format/WMSCapabilities.html new file mode 100644 index 0000000..3dbce9d --- /dev/null +++ b/openlayers/tests/Format/WMSCapabilities.html @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/openlayers/tests/Format/WMSCapabilities/v1_1_1.html b/openlayers/tests/Format/WMSCapabilities/v1_1_1.html new file mode 100644 index 0000000..55c78f7 --- /dev/null +++ b/openlayers/tests/Format/WMSCapabilities/v1_1_1.html @@ -0,0 +1,57 @@ + + + + + + + + + diff --git a/openlayers/tests/Format/WMSCapabilities/v1_1_1.js b/openlayers/tests/Format/WMSCapabilities/v1_1_1.js new file mode 100644 index 0000000..d8b142c --- /dev/null +++ b/openlayers/tests/Format/WMSCapabilities/v1_1_1.js @@ -0,0 +1,4773 @@ +var doc = (new OpenLayers.Format.XML).read( + '' + + '' + + '' + + '' + + 'OGC:WMS' + + 'GeoServer Web Map Service' + + 'A compliant implementation of WMS 1.1.1 plus most of the SLD 1.0 extension (dynamic styling). Can also generate PDF, SVG, KML, GeoRSS' + + '' + + 'WFS' + + 'WMS' + + 'GEOSERVER' + + '' + + '' + + '' + + '' + + 'Claudius Ptolomaeus' + + 'The ancient geographes INC' + + '' + + 'Chief geographer' + + '' + + 'Work' + + '
' + + 'Alexandria' + + '' + + '' + + 'Egypt' + + '' + + '' + + '' + + 'claudius.ptolomaeus@gmail.com' + + '' + + 'NONE' + + 'NONE' + + '' + + '' + + '' + + '' + + 'application/vnd.ogc.wms_xml' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + 'image/png' + + 'application/atom xml' + + 'application/atom+xml' + + 'application/openlayers' + + 'application/pdf' + + 'application/rss xml' + + 'application/rss+xml' + + 'application/vnd.google-earth.kml' + + 'application/vnd.google-earth.kml xml' + + 'application/vnd.google-earth.kml+xml' + + 'application/vnd.google-earth.kmz' + + 'application/vnd.google-earth.kmz xml' + + 'application/vnd.google-earth.kmz+xml' + + 'atom' + + 'image/geotiff' + + 'image/geotiff8' + + 'image/gif' + + 'image/jpeg' + + 'image/png8' + + 'image/svg' + + 'image/svg xml' + + 'image/svg+xml' + + 'image/tiff' + + 'image/tiff8' + + 'kml' + + 'kmz' + + 'openlayers' + + 'rss' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + 'text/plain' + + 'text/html' + + 'application/vnd.ogc.gml' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + 'application/vnd.ogc.wms_xml' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + 'image/png' + + 'image/jpeg' + + 'image/gif' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + 'application/vnd.ogc.se_xml' + + '' + + '' + + '' + + 'GeoServer Web Map Service' + + 'A compliant implementation of WMS 1.1.1 plus most of the SLD 1.0 extension (dynamic styling). Can also generate PDF, SVG, KML, GeoRSS' + + '' + + 'EPSG:WGS84(DD)' + + 'EPSG:2000' + + 'EPSG:2001' + + 'EPSG:2002' + + 'EPSG:2003' + + 'EPSG:2004' + + 'EPSG:2005' + + 'EPSG:2006' + + 'EPSG:2007' + + 'EPSG:2008' + + 'EPSG:2009' + + 'EPSG:2010' + + 'EPSG:2011' + + 'EPSG:2012' + + 'EPSG:2013' + + 'EPSG:2014' + + 'EPSG:2015' + + 'EPSG:2016' + + 'EPSG:2017' + + 'EPSG:2018' + + 'EPSG:2019' + + 'EPSG:2020' + + 'EPSG:2021' + + 'EPSG:2022' + + 'EPSG:2023' + + 'EPSG:2024' + + 'EPSG:2025' + + 'EPSG:2026' + + 'EPSG:2027' + + 'EPSG:2028' + + 'EPSG:2029' + + 'EPSG:2030' + + 'EPSG:2031' + + 'EPSG:2032' + + 'EPSG:2033' + + 'EPSG:2034' + + 'EPSG:2035' + + 'EPSG:2036' + + 'EPSG:2037' + + 'EPSG:2038' + + 'EPSG:2039' + + 'EPSG:2040' + + 'EPSG:2041' + + 'EPSG:2042' + + 'EPSG:2043' + + 'EPSG:2044' + + 'EPSG:2045' + + 'EPSG:2046' + + 'EPSG:2047' + + 'EPSG:2048' + + 'EPSG:2049' + + 'EPSG:2050' + + 'EPSG:2051' + + 'EPSG:2052' + + 'EPSG:2053' + + 'EPSG:2054' + + 'EPSG:2055' + + 'EPSG:2056' + + 'EPSG:2057' + + 'EPSG:2058' + + 'EPSG:2059' + + 'EPSG:2060' + + 'EPSG:2061' + + 'EPSG:2062' + + 'EPSG:2063' + + 'EPSG:2064' + + 'EPSG:2065' + + 'EPSG:2066' + + 'EPSG:2067' + + 'EPSG:2068' + + 'EPSG:2069' + + 'EPSG:2070' + + 'EPSG:2071' + + 'EPSG:2072' + + 'EPSG:2073' + + 'EPSG:2074' + + 'EPSG:2075' + + 'EPSG:2076' + + 'EPSG:2077' + + 'EPSG:2078' + + 'EPSG:2079' + + 'EPSG:2080' + + 'EPSG:2081' + + 'EPSG:2082' + + 'EPSG:2083' + + 'EPSG:2084' + + 'EPSG:2085' + + 'EPSG:2086' + + 'EPSG:2087' + + 'EPSG:2088' + + 'EPSG:2089' + + 'EPSG:2090' + + 'EPSG:2091' + + 'EPSG:2092' + + 'EPSG:2093' + + 'EPSG:2094' + + 'EPSG:2095' + + 'EPSG:2096' + + 'EPSG:2097' + + 'EPSG:2098' + + 'EPSG:2099' + + 'EPSG:2100' + + 'EPSG:2101' + + 'EPSG:2102' + + 'EPSG:2103' + + 'EPSG:2104' + + 'EPSG:2105' + + 'EPSG:2106' + + 'EPSG:2107' + + 'EPSG:2108' + + 'EPSG:2109' + + 'EPSG:2110' + + 'EPSG:2111' + + 'EPSG:2112' + + 'EPSG:2113' + + 'EPSG:2114' + + 'EPSG:2115' + + 'EPSG:2116' + + 'EPSG:2117' + + 'EPSG:2118' + + 'EPSG:2119' + + 'EPSG:2120' + + 'EPSG:2121' + + 'EPSG:2122' + + 'EPSG:2123' + + 'EPSG:2124' + + 'EPSG:2125' + + 'EPSG:2126' + + 'EPSG:2127' + + 'EPSG:2128' + + 'EPSG:2129' + + 'EPSG:2130' + + 'EPSG:2131' + + 'EPSG:2132' + + 'EPSG:2133' + + 'EPSG:2134' + + 'EPSG:2135' + + 'EPSG:2136' + + 'EPSG:2137' + + 'EPSG:2138' + + 'EPSG:2139' + + 'EPSG:2140' + + 'EPSG:2141' + + 'EPSG:2142' + + 'EPSG:2143' + + 'EPSG:2144' + + 'EPSG:2145' + + 'EPSG:2146' + + 'EPSG:2147' + + 'EPSG:2148' + + 'EPSG:2149' + + 'EPSG:2150' + + 'EPSG:2151' + + 'EPSG:2152' + + 'EPSG:2153' + + 'EPSG:2154' + + 'EPSG:2155' + + 'EPSG:2156' + + 'EPSG:2157' + + 'EPSG:2158' + + 'EPSG:2159' + + 'EPSG:2160' + + 'EPSG:2161' + + 'EPSG:2162' + + 'EPSG:2163' + + 'EPSG:2164' + + 'EPSG:2165' + + 'EPSG:2166' + + 'EPSG:2167' + + 'EPSG:2168' + + 'EPSG:2169' + + 'EPSG:2170' + + 'EPSG:2171' + + 'EPSG:2172' + + 'EPSG:2173' + + 'EPSG:2174' + + 'EPSG:2175' + + 'EPSG:2176' + + 'EPSG:2177' + + 'EPSG:2178' + + 'EPSG:2179' + + 'EPSG:2180' + + 'EPSG:2188' + + 'EPSG:2189' + + 'EPSG:2190' + + 'EPSG:2191' + + 'EPSG:2192' + + 'EPSG:2193' + + 'EPSG:2194' + + 'EPSG:2195' + + 'EPSG:2196' + + 'EPSG:2197' + + 'EPSG:2198' + + 'EPSG:2199' + + 'EPSG:2200' + + 'EPSG:2201' + + 'EPSG:2202' + + 'EPSG:2203' + + 'EPSG:2204' + + 'EPSG:2205' + + 'EPSG:2206' + + 'EPSG:2207' + + 'EPSG:2208' + + 'EPSG:2209' + + 'EPSG:2210' + + 'EPSG:2211' + + 'EPSG:2212' + + 'EPSG:2213' + + 'EPSG:2214' + + 'EPSG:2215' + + 'EPSG:2216' + + 'EPSG:2217' + + 'EPSG:2218' + + 'EPSG:2219' + + 'EPSG:2220' + + 'EPSG:2221' + + 'EPSG:2222' + + 'EPSG:2223' + + 'EPSG:2224' + + 'EPSG:2225' + + 'EPSG:2226' + + 'EPSG:2227' + + 'EPSG:2228' + + 'EPSG:2229' + + 'EPSG:2230' + + 'EPSG:2231' + + 'EPSG:2232' + + 'EPSG:2233' + + 'EPSG:2234' + + 'EPSG:2235' + + 'EPSG:2236' + + 'EPSG:2237' + + 'EPSG:2238' + + 'EPSG:2239' + + 'EPSG:2240' + + 'EPSG:2241' + + 'EPSG:2242' + + 'EPSG:2243' + + 'EPSG:2244' + + 'EPSG:2245' + + 'EPSG:2246' + + 'EPSG:2247' + + 'EPSG:2248' + + 'EPSG:2249' + + 'EPSG:2250' + + 'EPSG:2251' + + 'EPSG:2252' + + 'EPSG:2253' + + 'EPSG:2254' + + 'EPSG:2255' + + 'EPSG:2256' + + 'EPSG:2257' + + 'EPSG:2258' + + 'EPSG:2259' + + 'EPSG:2260' + + 'EPSG:2261' + + 'EPSG:2262' + + 'EPSG:2263' + + 'EPSG:2264' + + 'EPSG:2265' + + 'EPSG:2266' + + 'EPSG:2267' + + 'EPSG:2268' + + 'EPSG:2269' + + 'EPSG:2270' + + 'EPSG:2271' + + 'EPSG:2272' + + 'EPSG:2273' + + 'EPSG:2274' + + 'EPSG:2275' + + 'EPSG:2276' + + 'EPSG:2277' + + 'EPSG:2278' + + 'EPSG:2279' + + 'EPSG:2280' + + 'EPSG:2281' + + 'EPSG:2282' + + 'EPSG:2283' + + 'EPSG:2284' + + 'EPSG:2285' + + 'EPSG:2286' + + 'EPSG:2287' + + 'EPSG:2288' + + 'EPSG:2289' + + 'EPSG:2290' + + 'EPSG:2291' + + 'EPSG:2292' + + 'EPSG:2294' + + 'EPSG:2295' + + 'EPSG:2296' + + 'EPSG:2297' + + 'EPSG:2298' + + 'EPSG:2299' + + 'EPSG:2300' + + 'EPSG:2301' + + 'EPSG:2302' + + 'EPSG:2303' + + 'EPSG:2304' + + 'EPSG:2305' + + 'EPSG:2306' + + 'EPSG:2307' + + 'EPSG:2308' + + 'EPSG:2309' + + 'EPSG:2310' + + 'EPSG:2311' + + 'EPSG:2312' + + 'EPSG:2313' + + 'EPSG:2314' + + 'EPSG:2315' + + 'EPSG:2316' + + 'EPSG:2317' + + 'EPSG:2318' + + 'EPSG:2319' + + 'EPSG:2320' + + 'EPSG:2321' + + 'EPSG:2322' + + 'EPSG:2323' + + 'EPSG:2324' + + 'EPSG:2325' + + 'EPSG:2326' + + 'EPSG:2327' + + 'EPSG:2328' + + 'EPSG:2329' + + 'EPSG:2330' + + 'EPSG:2331' + + 'EPSG:2332' + + 'EPSG:2333' + + 'EPSG:2334' + + 'EPSG:2335' + + 'EPSG:2336' + + 'EPSG:2337' + + 'EPSG:2338' + + 'EPSG:2339' + + 'EPSG:2340' + + 'EPSG:2341' + + 'EPSG:2342' + + 'EPSG:2343' + + 'EPSG:2344' + + 'EPSG:2345' + + 'EPSG:2346' + + 'EPSG:2347' + + 'EPSG:2348' + + 'EPSG:2349' + + 'EPSG:2350' + + 'EPSG:2351' + + 'EPSG:2352' + + 'EPSG:2353' + + 'EPSG:2354' + + 'EPSG:2355' + + 'EPSG:2356' + + 'EPSG:2357' + + 'EPSG:2358' + + 'EPSG:2359' + + 'EPSG:2360' + + 'EPSG:2361' + + 'EPSG:2362' + + 'EPSG:2363' + + 'EPSG:2364' + + 'EPSG:2365' + + 'EPSG:2366' + + 'EPSG:2367' + + 'EPSG:2368' + + 'EPSG:2369' + + 'EPSG:2370' + + 'EPSG:2371' + + 'EPSG:2372' + + 'EPSG:2373' + + 'EPSG:2374' + + 'EPSG:2375' + + 'EPSG:2376' + + 'EPSG:2377' + + 'EPSG:2378' + + 'EPSG:2379' + + 'EPSG:2380' + + 'EPSG:2381' + + 'EPSG:2382' + + 'EPSG:2383' + + 'EPSG:2384' + + 'EPSG:2385' + + 'EPSG:2386' + + 'EPSG:2387' + + 'EPSG:2388' + + 'EPSG:2389' + + 'EPSG:2390' + + 'EPSG:2391' + + 'EPSG:2392' + + 'EPSG:2393' + + 'EPSG:2394' + + 'EPSG:2395' + + 'EPSG:2396' + + 'EPSG:2397' + + 'EPSG:2398' + + 'EPSG:2399' + + 'EPSG:2400' + + 'EPSG:2401' + + 'EPSG:2402' + + 'EPSG:2403' + + 'EPSG:2404' + + 'EPSG:2405' + + 'EPSG:2406' + + 'EPSG:2407' + + 'EPSG:2408' + + 'EPSG:2409' + + 'EPSG:2410' + + 'EPSG:2411' + + 'EPSG:2412' + + 'EPSG:2413' + + 'EPSG:2414' + + 'EPSG:2415' + + 'EPSG:2416' + + 'EPSG:2417' + + 'EPSG:2418' + + 'EPSG:2419' + + 'EPSG:2420' + + 'EPSG:2421' + + 'EPSG:2422' + + 'EPSG:2423' + + 'EPSG:2424' + + 'EPSG:2425' + + 'EPSG:2426' + + 'EPSG:2427' + + 'EPSG:2428' + + 'EPSG:2429' + + 'EPSG:2430' + + 'EPSG:2431' + + 'EPSG:2432' + + 'EPSG:2433' + + 'EPSG:2434' + + 'EPSG:2435' + + 'EPSG:2436' + + 'EPSG:2437' + + 'EPSG:2438' + + 'EPSG:2439' + + 'EPSG:2440' + + 'EPSG:2441' + + 'EPSG:2442' + + 'EPSG:2443' + + 'EPSG:2444' + + 'EPSG:2445' + + 'EPSG:2446' + + 'EPSG:2447' + + 'EPSG:2448' + + 'EPSG:2449' + + 'EPSG:2450' + + 'EPSG:2451' + + 'EPSG:2452' + + 'EPSG:2453' + + 'EPSG:2454' + + 'EPSG:2455' + + 'EPSG:2456' + + 'EPSG:2457' + + 'EPSG:2458' + + 'EPSG:2459' + + 'EPSG:2460' + + 'EPSG:2461' + + 'EPSG:2462' + + 'EPSG:2463' + + 'EPSG:2464' + + 'EPSG:2465' + + 'EPSG:2466' + + 'EPSG:2467' + + 'EPSG:2468' + + 'EPSG:2469' + + 'EPSG:2470' + + 'EPSG:2471' + + 'EPSG:2472' + + 'EPSG:2473' + + 'EPSG:2474' + + 'EPSG:2475' + + 'EPSG:2476' + + 'EPSG:2477' + + 'EPSG:2478' + + 'EPSG:2479' + + 'EPSG:2480' + + 'EPSG:2481' + + 'EPSG:2482' + + 'EPSG:2483' + + 'EPSG:2484' + + 'EPSG:2485' + + 'EPSG:2486' + + 'EPSG:2487' + + 'EPSG:2488' + + 'EPSG:2489' + + 'EPSG:2490' + + 'EPSG:2491' + + 'EPSG:2492' + + 'EPSG:2493' + + 'EPSG:2494' + + 'EPSG:2495' + + 'EPSG:2496' + + 'EPSG:2497' + + 'EPSG:2498' + + 'EPSG:2499' + + 'EPSG:2500' + + 'EPSG:2501' + + 'EPSG:2502' + + 'EPSG:2503' + + 'EPSG:2504' + + 'EPSG:2505' + + 'EPSG:2506' + + 'EPSG:2507' + + 'EPSG:2508' + + 'EPSG:2509' + + 'EPSG:2510' + + 'EPSG:2511' + + 'EPSG:2512' + + 'EPSG:2513' + + 'EPSG:2514' + + 'EPSG:2515' + + 'EPSG:2516' + + 'EPSG:2517' + + 'EPSG:2518' + + 'EPSG:2519' + + 'EPSG:2520' + + 'EPSG:2521' + + 'EPSG:2522' + + 'EPSG:2523' + + 'EPSG:2524' + + 'EPSG:2525' + + 'EPSG:2526' + + 'EPSG:2527' + + 'EPSG:2528' + + 'EPSG:2529' + + 'EPSG:2530' + + 'EPSG:2531' + + 'EPSG:2532' + + 'EPSG:2533' + + 'EPSG:2534' + + 'EPSG:2535' + + 'EPSG:2536' + + 'EPSG:2537' + + 'EPSG:2538' + + 'EPSG:2539' + + 'EPSG:2540' + + 'EPSG:2541' + + 'EPSG:2542' + + 'EPSG:2543' + + 'EPSG:2544' + + 'EPSG:2545' + + 'EPSG:2546' + + 'EPSG:2547' + + 'EPSG:2548' + + 'EPSG:2549' + + 'EPSG:2550' + + 'EPSG:2551' + + 'EPSG:2552' + + 'EPSG:2553' + + 'EPSG:2554' + + 'EPSG:2555' + + 'EPSG:2556' + + 'EPSG:2557' + + 'EPSG:2558' + + 'EPSG:2559' + + 'EPSG:2560' + + 'EPSG:2561' + + 'EPSG:2562' + + 'EPSG:2563' + + 'EPSG:2564' + + 'EPSG:2565' + + 'EPSG:2566' + + 'EPSG:2567' + + 'EPSG:2568' + + 'EPSG:2569' + + 'EPSG:2570' + + 'EPSG:2571' + + 'EPSG:2572' + + 'EPSG:2573' + + 'EPSG:2574' + + 'EPSG:2575' + + 'EPSG:2576' + + 'EPSG:2577' + + 'EPSG:2578' + + 'EPSG:2579' + + 'EPSG:2580' + + 'EPSG:2581' + + 'EPSG:2582' + + 'EPSG:2583' + + 'EPSG:2584' + + 'EPSG:2585' + + 'EPSG:2586' + + 'EPSG:2587' + + 'EPSG:2588' + + 'EPSG:2589' + + 'EPSG:2590' + + 'EPSG:2591' + + 'EPSG:2592' + + 'EPSG:2593' + + 'EPSG:2594' + + 'EPSG:2595' + + 'EPSG:2596' + + 'EPSG:2597' + + 'EPSG:2598' + + 'EPSG:2599' + + 'EPSG:2600' + + 'EPSG:2601' + + 'EPSG:2602' + + 'EPSG:2603' + + 'EPSG:2604' + + 'EPSG:2605' + + 'EPSG:2606' + + 'EPSG:2607' + + 'EPSG:2608' + + 'EPSG:2609' + + 'EPSG:2610' + + 'EPSG:2611' + + 'EPSG:2612' + + 'EPSG:2613' + + 'EPSG:2614' + + 'EPSG:2615' + + 'EPSG:2616' + + 'EPSG:2617' + + 'EPSG:2618' + + 'EPSG:2619' + + 'EPSG:2620' + + 'EPSG:2621' + + 'EPSG:2622' + + 'EPSG:2623' + + 'EPSG:2624' + + 'EPSG:2625' + + 'EPSG:2626' + + 'EPSG:2627' + + 'EPSG:2628' + + 'EPSG:2629' + + 'EPSG:2630' + + 'EPSG:2631' + + 'EPSG:2632' + + 'EPSG:2633' + + 'EPSG:2634' + + 'EPSG:2635' + + 'EPSG:2636' + + 'EPSG:2637' + + 'EPSG:2638' + + 'EPSG:2639' + + 'EPSG:2640' + + 'EPSG:2641' + + 'EPSG:2642' + + 'EPSG:2643' + + 'EPSG:2644' + + 'EPSG:2645' + + 'EPSG:2646' + + 'EPSG:2647' + + 'EPSG:2648' + + 'EPSG:2649' + + 'EPSG:2650' + + 'EPSG:2651' + + 'EPSG:2652' + + 'EPSG:2653' + + 'EPSG:2654' + + 'EPSG:2655' + + 'EPSG:2656' + + 'EPSG:2657' + + 'EPSG:2658' + + 'EPSG:2659' + + 'EPSG:2660' + + 'EPSG:2661' + + 'EPSG:2662' + + 'EPSG:2663' + + 'EPSG:2664' + + 'EPSG:2665' + + 'EPSG:2666' + + 'EPSG:2667' + + 'EPSG:2668' + + 'EPSG:2669' + + 'EPSG:2670' + + 'EPSG:2671' + + 'EPSG:2672' + + 'EPSG:2673' + + 'EPSG:2674' + + 'EPSG:2675' + + 'EPSG:2676' + + 'EPSG:2677' + + 'EPSG:2678' + + 'EPSG:2679' + + 'EPSG:2680' + + 'EPSG:2681' + + 'EPSG:2682' + + 'EPSG:2683' + + 'EPSG:2684' + + 'EPSG:2685' + + 'EPSG:2686' + + 'EPSG:2687' + + 'EPSG:2688' + + 'EPSG:2689' + + 'EPSG:2690' + + 'EPSG:2691' + + 'EPSG:2692' + + 'EPSG:2693' + + 'EPSG:2694' + + 'EPSG:2695' + + 'EPSG:2696' + + 'EPSG:2697' + + 'EPSG:2698' + + 'EPSG:2699' + + 'EPSG:2700' + + 'EPSG:2701' + + 'EPSG:2702' + + 'EPSG:2703' + + 'EPSG:2704' + + 'EPSG:2705' + + 'EPSG:2706' + + 'EPSG:2707' + + 'EPSG:2708' + + 'EPSG:2709' + + 'EPSG:2710' + + 'EPSG:2711' + + 'EPSG:2712' + + 'EPSG:2713' + + 'EPSG:2714' + + 'EPSG:2715' + + 'EPSG:2716' + + 'EPSG:2717' + + 'EPSG:2718' + + 'EPSG:2719' + + 'EPSG:2720' + + 'EPSG:2721' + + 'EPSG:2722' + + 'EPSG:2723' + + 'EPSG:2724' + + 'EPSG:2725' + + 'EPSG:2726' + + 'EPSG:2727' + + 'EPSG:2728' + + 'EPSG:2729' + + 'EPSG:2730' + + 'EPSG:2731' + + 'EPSG:2732' + + 'EPSG:2733' + + 'EPSG:2734' + + 'EPSG:2735' + + 'EPSG:2736' + + 'EPSG:2737' + + 'EPSG:2738' + + 'EPSG:2739' + + 'EPSG:2740' + + 'EPSG:2741' + + 'EPSG:2742' + + 'EPSG:2743' + + 'EPSG:2744' + + 'EPSG:2745' + + 'EPSG:2746' + + 'EPSG:2747' + + 'EPSG:2748' + + 'EPSG:2749' + + 'EPSG:2750' + + 'EPSG:2751' + + 'EPSG:2752' + + 'EPSG:2753' + + 'EPSG:2754' + + 'EPSG:2755' + + 'EPSG:2756' + + 'EPSG:2757' + + 'EPSG:2758' + + 'EPSG:2759' + + 'EPSG:2760' + + 'EPSG:2761' + + 'EPSG:2762' + + 'EPSG:2763' + + 'EPSG:2764' + + 'EPSG:2765' + + 'EPSG:2766' + + 'EPSG:2767' + + 'EPSG:2768' + + 'EPSG:2769' + + 'EPSG:2770' + + 'EPSG:2771' + + 'EPSG:2772' + + 'EPSG:2773' + + 'EPSG:2774' + + 'EPSG:2775' + + 'EPSG:2776' + + 'EPSG:2777' + + 'EPSG:2778' + + 'EPSG:2779' + + 'EPSG:2780' + + 'EPSG:2781' + + 'EPSG:2782' + + 'EPSG:2783' + + 'EPSG:2784' + + 'EPSG:2785' + + 'EPSG:2786' + + 'EPSG:2787' + + 'EPSG:2788' + + 'EPSG:2789' + + 'EPSG:2790' + + 'EPSG:2791' + + 'EPSG:2792' + + 'EPSG:2793' + + 'EPSG:2794' + + 'EPSG:2795' + + 'EPSG:2796' + + 'EPSG:2797' + + 'EPSG:2798' + + 'EPSG:2799' + + 'EPSG:2800' + + 'EPSG:2801' + + 'EPSG:2802' + + 'EPSG:2803' + + 'EPSG:2804' + + 'EPSG:2805' + + 'EPSG:2806' + + 'EPSG:2807' + + 'EPSG:2808' + + 'EPSG:2809' + + 'EPSG:2810' + + 'EPSG:2811' + + 'EPSG:2812' + + 'EPSG:2813' + + 'EPSG:2814' + + 'EPSG:2815' + + 'EPSG:2816' + + 'EPSG:2817' + + 'EPSG:2818' + + 'EPSG:2819' + + 'EPSG:2820' + + 'EPSG:2821' + + 'EPSG:2822' + + 'EPSG:2823' + + 'EPSG:2824' + + 'EPSG:2825' + + 'EPSG:2826' + + 'EPSG:2827' + + 'EPSG:2828' + + 'EPSG:2829' + + 'EPSG:2830' + + 'EPSG:2831' + + 'EPSG:2832' + + 'EPSG:2833' + + 'EPSG:2834' + + 'EPSG:2835' + + 'EPSG:2836' + + 'EPSG:2837' + + 'EPSG:2838' + + 'EPSG:2839' + + 'EPSG:2840' + + 'EPSG:2841' + + 'EPSG:2842' + + 'EPSG:2843' + + 'EPSG:2844' + + 'EPSG:2845' + + 'EPSG:2846' + + 'EPSG:2847' + + 'EPSG:2848' + + 'EPSG:2849' + + 'EPSG:2850' + + 'EPSG:2851' + + 'EPSG:2852' + + 'EPSG:2853' + + 'EPSG:2854' + + 'EPSG:2855' + + 'EPSG:2856' + + 'EPSG:2857' + + 'EPSG:2858' + + 'EPSG:2859' + + 'EPSG:2860' + + 'EPSG:2861' + + 'EPSG:2862' + + 'EPSG:2863' + + 'EPSG:2864' + + 'EPSG:2865' + + 'EPSG:2866' + + 'EPSG:2867' + + 'EPSG:2868' + + 'EPSG:2869' + + 'EPSG:2870' + + 'EPSG:2871' + + 'EPSG:2872' + + 'EPSG:2873' + + 'EPSG:2874' + + 'EPSG:2875' + + 'EPSG:2876' + + 'EPSG:2877' + + 'EPSG:2878' + + 'EPSG:2879' + + 'EPSG:2880' + + 'EPSG:2881' + + 'EPSG:2882' + + 'EPSG:2883' + + 'EPSG:2884' + + 'EPSG:2885' + + 'EPSG:2886' + + 'EPSG:2887' + + 'EPSG:2888' + + 'EPSG:2889' + + 'EPSG:2890' + + 'EPSG:2891' + + 'EPSG:2892' + + 'EPSG:2893' + + 'EPSG:2894' + + 'EPSG:2895' + + 'EPSG:2896' + + 'EPSG:2897' + + 'EPSG:2898' + + 'EPSG:2899' + + 'EPSG:2900' + + 'EPSG:2901' + + 'EPSG:2902' + + 'EPSG:2903' + + 'EPSG:2904' + + 'EPSG:2905' + + 'EPSG:2906' + + 'EPSG:2907' + + 'EPSG:2908' + + 'EPSG:2909' + + 'EPSG:2910' + + 'EPSG:2911' + + 'EPSG:2912' + + 'EPSG:2913' + + 'EPSG:2914' + + 'EPSG:2915' + + 'EPSG:2916' + + 'EPSG:2917' + + 'EPSG:2918' + + 'EPSG:2919' + + 'EPSG:2920' + + 'EPSG:2921' + + 'EPSG:2922' + + 'EPSG:2923' + + 'EPSG:2924' + + 'EPSG:2925' + + 'EPSG:2926' + + 'EPSG:2927' + + 'EPSG:2928' + + 'EPSG:2929' + + 'EPSG:2930' + + 'EPSG:2931' + + 'EPSG:2932' + + 'EPSG:2933' + + 'EPSG:2934' + + 'EPSG:2935' + + 'EPSG:2936' + + 'EPSG:2937' + + 'EPSG:2938' + + 'EPSG:2939' + + 'EPSG:2940' + + 'EPSG:2941' + + 'EPSG:2942' + + 'EPSG:2943' + + 'EPSG:2944' + + 'EPSG:2945' + + 'EPSG:2946' + + 'EPSG:2947' + + 'EPSG:2948' + + 'EPSG:2949' + + 'EPSG:2950' + + 'EPSG:2951' + + 'EPSG:2952' + + 'EPSG:2953' + + 'EPSG:2954' + + 'EPSG:2955' + + 'EPSG:2956' + + 'EPSG:2957' + + 'EPSG:2958' + + 'EPSG:2959' + + 'EPSG:2960' + + 'EPSG:2961' + + 'EPSG:2962' + + 'EPSG:2963' + + 'EPSG:2964' + + 'EPSG:2965' + + 'EPSG:2966' + + 'EPSG:2967' + + 'EPSG:2968' + + 'EPSG:2969' + + 'EPSG:2970' + + 'EPSG:2971' + + 'EPSG:2972' + + 'EPSG:2973' + + 'EPSG:2975' + + 'EPSG:2976' + + 'EPSG:2977' + + 'EPSG:2978' + + 'EPSG:2979' + + 'EPSG:2980' + + 'EPSG:2981' + + 'EPSG:2982' + + 'EPSG:2983' + + 'EPSG:2984' + + 'EPSG:2985' + + 'EPSG:2986' + + 'EPSG:2987' + + 'EPSG:2988' + + 'EPSG:2989' + + 'EPSG:2990' + + 'EPSG:2991' + + 'EPSG:2992' + + 'EPSG:2993' + + 'EPSG:2994' + + 'EPSG:2995' + + 'EPSG:2996' + + 'EPSG:2997' + + 'EPSG:2998' + + 'EPSG:2999' + + 'EPSG:3000' + + 'EPSG:3001' + + 'EPSG:3002' + + 'EPSG:3003' + + 'EPSG:3004' + + 'EPSG:3005' + + 'EPSG:3006' + + 'EPSG:3007' + + 'EPSG:3008' + + 'EPSG:3009' + + 'EPSG:3010' + + 'EPSG:3011' + + 'EPSG:3012' + + 'EPSG:3013' + + 'EPSG:3014' + + 'EPSG:3015' + + 'EPSG:3016' + + 'EPSG:3017' + + 'EPSG:3018' + + 'EPSG:3019' + + 'EPSG:3020' + + 'EPSG:3021' + + 'EPSG:3022' + + 'EPSG:3023' + + 'EPSG:3024' + + 'EPSG:3025' + + 'EPSG:3026' + + 'EPSG:3027' + + 'EPSG:3028' + + 'EPSG:3029' + + 'EPSG:3030' + + 'EPSG:3031' + + 'EPSG:3032' + + 'EPSG:3033' + + 'EPSG:3034' + + 'EPSG:3035' + + 'EPSG:3036' + + 'EPSG:3037' + + 'EPSG:3038' + + 'EPSG:3039' + + 'EPSG:3040' + + 'EPSG:3041' + + 'EPSG:3042' + + 'EPSG:3043' + + 'EPSG:3044' + + 'EPSG:3045' + + 'EPSG:3046' + + 'EPSG:3047' + + 'EPSG:3048' + + 'EPSG:3049' + + 'EPSG:3050' + + 'EPSG:3051' + + 'EPSG:3052' + + 'EPSG:3053' + + 'EPSG:3054' + + 'EPSG:3055' + + 'EPSG:3056' + + 'EPSG:3057' + + 'EPSG:3058' + + 'EPSG:3059' + + 'EPSG:3060' + + 'EPSG:3061' + + 'EPSG:3062' + + 'EPSG:3063' + + 'EPSG:3064' + + 'EPSG:3065' + + 'EPSG:3066' + + 'EPSG:3067' + + 'EPSG:3068' + + 'EPSG:3069' + + 'EPSG:3070' + + 'EPSG:3071' + + 'EPSG:3072' + + 'EPSG:3073' + + 'EPSG:3074' + + 'EPSG:3075' + + 'EPSG:3076' + + 'EPSG:3077' + + 'EPSG:3078' + + 'EPSG:3079' + + 'EPSG:3080' + + 'EPSG:3081' + + 'EPSG:3082' + + 'EPSG:3083' + + 'EPSG:3084' + + 'EPSG:3085' + + 'EPSG:3086' + + 'EPSG:3087' + + 'EPSG:3088' + + 'EPSG:3089' + + 'EPSG:3090' + + 'EPSG:3091' + + 'EPSG:3092' + + 'EPSG:3093' + + 'EPSG:3094' + + 'EPSG:3095' + + 'EPSG:3096' + + 'EPSG:3097' + + 'EPSG:3098' + + 'EPSG:3099' + + 'EPSG:3100' + + 'EPSG:3101' + + 'EPSG:3102' + + 'EPSG:3103' + + 'EPSG:3104' + + 'EPSG:3105' + + 'EPSG:3106' + + 'EPSG:3107' + + 'EPSG:3108' + + 'EPSG:3109' + + 'EPSG:3110' + + 'EPSG:3111' + + 'EPSG:3112' + + 'EPSG:3113' + + 'EPSG:3114' + + 'EPSG:3115' + + 'EPSG:3116' + + 'EPSG:3117' + + 'EPSG:3118' + + 'EPSG:3119' + + 'EPSG:3120' + + 'EPSG:3121' + + 'EPSG:3122' + + 'EPSG:3123' + + 'EPSG:3124' + + 'EPSG:3125' + + 'EPSG:3126' + + 'EPSG:3127' + + 'EPSG:3128' + + 'EPSG:3129' + + 'EPSG:3130' + + 'EPSG:3131' + + 'EPSG:3132' + + 'EPSG:3133' + + 'EPSG:3134' + + 'EPSG:3135' + + 'EPSG:3136' + + 'EPSG:3137' + + 'EPSG:3138' + + 'EPSG:3139' + + 'EPSG:3140' + + 'EPSG:3141' + + 'EPSG:3142' + + 'EPSG:3143' + + 'EPSG:3144' + + 'EPSG:3145' + + 'EPSG:3146' + + 'EPSG:3147' + + 'EPSG:3148' + + 'EPSG:3149' + + 'EPSG:3150' + + 'EPSG:3151' + + 'EPSG:3152' + + 'EPSG:3153' + + 'EPSG:3154' + + 'EPSG:3155' + + 'EPSG:3156' + + 'EPSG:3157' + + 'EPSG:3158' + + 'EPSG:3159' + + 'EPSG:3160' + + 'EPSG:3161' + + 'EPSG:3162' + + 'EPSG:3163' + + 'EPSG:3164' + + 'EPSG:3165' + + 'EPSG:3166' + + 'EPSG:3167' + + 'EPSG:3168' + + 'EPSG:3169' + + 'EPSG:3170' + + 'EPSG:3171' + + 'EPSG:3172' + + 'EPSG:3173' + + 'EPSG:3174' + + 'EPSG:3175' + + 'EPSG:3176' + + 'EPSG:3177' + + 'EPSG:3178' + + 'EPSG:3179' + + 'EPSG:3180' + + 'EPSG:3181' + + 'EPSG:3182' + + 'EPSG:3183' + + 'EPSG:3184' + + 'EPSG:3185' + + 'EPSG:3186' + + 'EPSG:3187' + + 'EPSG:3188' + + 'EPSG:3189' + + 'EPSG:3190' + + 'EPSG:3191' + + 'EPSG:3192' + + 'EPSG:3193' + + 'EPSG:3194' + + 'EPSG:3195' + + 'EPSG:3196' + + 'EPSG:3197' + + 'EPSG:3198' + + 'EPSG:3199' + + 'EPSG:3200' + + 'EPSG:3201' + + 'EPSG:3202' + + 'EPSG:3203' + + 'EPSG:3204' + + 'EPSG:3205' + + 'EPSG:3206' + + 'EPSG:3207' + + 'EPSG:3208' + + 'EPSG:3209' + + 'EPSG:3210' + + 'EPSG:3211' + + 'EPSG:3212' + + 'EPSG:3213' + + 'EPSG:3214' + + 'EPSG:3215' + + 'EPSG:3216' + + 'EPSG:3217' + + 'EPSG:3218' + + 'EPSG:3219' + + 'EPSG:3220' + + 'EPSG:3221' + + 'EPSG:3222' + + 'EPSG:3223' + + 'EPSG:3224' + + 'EPSG:3225' + + 'EPSG:3226' + + 'EPSG:3227' + + 'EPSG:3228' + + 'EPSG:3229' + + 'EPSG:3230' + + 'EPSG:3231' + + 'EPSG:3232' + + 'EPSG:3233' + + 'EPSG:3234' + + 'EPSG:3235' + + 'EPSG:3236' + + 'EPSG:3237' + + 'EPSG:3238' + + 'EPSG:3239' + + 'EPSG:3240' + + 'EPSG:3241' + + 'EPSG:3242' + + 'EPSG:3243' + + 'EPSG:3244' + + 'EPSG:3245' + + 'EPSG:3246' + + 'EPSG:3247' + + 'EPSG:3248' + + 'EPSG:3249' + + 'EPSG:3250' + + 'EPSG:3251' + + 'EPSG:3252' + + 'EPSG:3253' + + 'EPSG:3254' + + 'EPSG:3255' + + 'EPSG:3256' + + 'EPSG:3257' + + 'EPSG:3258' + + 'EPSG:3259' + + 'EPSG:3260' + + 'EPSG:3261' + + 'EPSG:3262' + + 'EPSG:3263' + + 'EPSG:3264' + + 'EPSG:3265' + + 'EPSG:3266' + + 'EPSG:3267' + + 'EPSG:3268' + + 'EPSG:3269' + + 'EPSG:3270' + + 'EPSG:3271' + + 'EPSG:3272' + + 'EPSG:3273' + + 'EPSG:3274' + + 'EPSG:3275' + + 'EPSG:3276' + + 'EPSG:3277' + + 'EPSG:3278' + + 'EPSG:3279' + + 'EPSG:3280' + + 'EPSG:3281' + + 'EPSG:3282' + + 'EPSG:3283' + + 'EPSG:3284' + + 'EPSG:3285' + + 'EPSG:3286' + + 'EPSG:3287' + + 'EPSG:3288' + + 'EPSG:3289' + + 'EPSG:3290' + + 'EPSG:3291' + + 'EPSG:3292' + + 'EPSG:3293' + + 'EPSG:3294' + + 'EPSG:3295' + + 'EPSG:3296' + + 'EPSG:3297' + + 'EPSG:3298' + + 'EPSG:3299' + + 'EPSG:3300' + + 'EPSG:3301' + + 'EPSG:3302' + + 'EPSG:3303' + + 'EPSG:3304' + + 'EPSG:3305' + + 'EPSG:3306' + + 'EPSG:3307' + + 'EPSG:3308' + + 'EPSG:3309' + + 'EPSG:3310' + + 'EPSG:3311' + + 'EPSG:3312' + + 'EPSG:3313' + + 'EPSG:3314' + + 'EPSG:3315' + + 'EPSG:3316' + + 'EPSG:3317' + + 'EPSG:3318' + + 'EPSG:3319' + + 'EPSG:3320' + + 'EPSG:3321' + + 'EPSG:3322' + + 'EPSG:3323' + + 'EPSG:3324' + + 'EPSG:3325' + + 'EPSG:3326' + + 'EPSG:3327' + + 'EPSG:3328' + + 'EPSG:3329' + + 'EPSG:3330' + + 'EPSG:3331' + + 'EPSG:3332' + + 'EPSG:3333' + + 'EPSG:3334' + + 'EPSG:3335' + + 'EPSG:3336' + + 'EPSG:3337' + + 'EPSG:3338' + + 'EPSG:3339' + + 'EPSG:3340' + + 'EPSG:3341' + + 'EPSG:3342' + + 'EPSG:3343' + + 'EPSG:3344' + + 'EPSG:3345' + + 'EPSG:3346' + + 'EPSG:3347' + + 'EPSG:3348' + + 'EPSG:3349' + + 'EPSG:3350' + + 'EPSG:3351' + + 'EPSG:3352' + + 'EPSG:3353' + + 'EPSG:3354' + + 'EPSG:3355' + + 'EPSG:3356' + + 'EPSG:3357' + + 'EPSG:3358' + + 'EPSG:3359' + + 'EPSG:3360' + + 'EPSG:3361' + + 'EPSG:3362' + + 'EPSG:3363' + + 'EPSG:3364' + + 'EPSG:3365' + + 'EPSG:3366' + + 'EPSG:3367' + + 'EPSG:3368' + + 'EPSG:3369' + + 'EPSG:3370' + + 'EPSG:3371' + + 'EPSG:3372' + + 'EPSG:3373' + + 'EPSG:3374' + + 'EPSG:3375' + + 'EPSG:3376' + + 'EPSG:3377' + + 'EPSG:3378' + + 'EPSG:3379' + + 'EPSG:3380' + + 'EPSG:3381' + + 'EPSG:3382' + + 'EPSG:3383' + + 'EPSG:3384' + + 'EPSG:3385' + + 'EPSG:3386' + + 'EPSG:3387' + + 'EPSG:3388' + + 'EPSG:3389' + + 'EPSG:3390' + + 'EPSG:3391' + + 'EPSG:3392' + + 'EPSG:3393' + + 'EPSG:3394' + + 'EPSG:3395' + + 'EPSG:3396' + + 'EPSG:3397' + + 'EPSG:3398' + + 'EPSG:3399' + + 'EPSG:3400' + + 'EPSG:3401' + + 'EPSG:3402' + + 'EPSG:3403' + + 'EPSG:3404' + + 'EPSG:3405' + + 'EPSG:3406' + + 'EPSG:3407' + + 'EPSG:3408' + + 'EPSG:3409' + + 'EPSG:3410' + + 'EPSG:3411' + + 'EPSG:3412' + + 'EPSG:3413' + + 'EPSG:3414' + + 'EPSG:3415' + + 'EPSG:3416' + + 'EPSG:3417' + + 'EPSG:3418' + + 'EPSG:3419' + + 'EPSG:3420' + + 'EPSG:3421' + + 'EPSG:3422' + + 'EPSG:3423' + + 'EPSG:3424' + + 'EPSG:3425' + + 'EPSG:3426' + + 'EPSG:3427' + + 'EPSG:3428' + + 'EPSG:3429' + + 'EPSG:3430' + + 'EPSG:3431' + + 'EPSG:3432' + + 'EPSG:3433' + + 'EPSG:3434' + + 'EPSG:3435' + + 'EPSG:3436' + + 'EPSG:3437' + + 'EPSG:3438' + + 'EPSG:3439' + + 'EPSG:3440' + + 'EPSG:3441' + + 'EPSG:3442' + + 'EPSG:3443' + + 'EPSG:3444' + + 'EPSG:3445' + + 'EPSG:3446' + + 'EPSG:3447' + + 'EPSG:3448' + + 'EPSG:3449' + + 'EPSG:3450' + + 'EPSG:3451' + + 'EPSG:3452' + + 'EPSG:3453' + + 'EPSG:3454' + + 'EPSG:3455' + + 'EPSG:3456' + + 'EPSG:3457' + + 'EPSG:3458' + + 'EPSG:3459' + + 'EPSG:3460' + + 'EPSG:3461' + + 'EPSG:3462' + + 'EPSG:3463' + + 'EPSG:3464' + + 'EPSG:3560' + + 'EPSG:3561' + + 'EPSG:3562' + + 'EPSG:3563' + + 'EPSG:3564' + + 'EPSG:3565' + + 'EPSG:3566' + + 'EPSG:3567' + + 'EPSG:3568' + + 'EPSG:3569' + + 'EPSG:3570' + + 'EPSG:3571' + + 'EPSG:3572' + + 'EPSG:3573' + + 'EPSG:3574' + + 'EPSG:3575' + + 'EPSG:3576' + + 'EPSG:3577' + + 'EPSG:3920' + + 'EPSG:3991' + + 'EPSG:3992' + + 'EPSG:3993' + + 'EPSG:4001' + + 'EPSG:4002' + + 'EPSG:4003' + + 'EPSG:4004' + + 'EPSG:4005' + + 'EPSG:4006' + + 'EPSG:4007' + + 'EPSG:4008' + + 'EPSG:4009' + + 'EPSG:4010' + + 'EPSG:4011' + + 'EPSG:4012' + + 'EPSG:4013' + + 'EPSG:4014' + + 'EPSG:4015' + + 'EPSG:4016' + + 'EPSG:4018' + + 'EPSG:4019' + + 'EPSG:4020' + + 'EPSG:4021' + + 'EPSG:4022' + + 'EPSG:4024' + + 'EPSG:4025' + + 'EPSG:4027' + + 'EPSG:4028' + + 'EPSG:4029' + + 'EPSG:4030' + + 'EPSG:4031' + + 'EPSG:4032' + + 'EPSG:4033' + + 'EPSG:4034' + + 'EPSG:4035' + + 'EPSG:4036' + + 'EPSG:4041' + + 'EPSG:4042' + + 'EPSG:4043' + + 'EPSG:4044' + + 'EPSG:4045' + + 'EPSG:4047' + + 'EPSG:4052' + + 'EPSG:4053' + + 'EPSG:4054' + + 'EPSG:4120' + + 'EPSG:4121' + + 'EPSG:4122' + + 'EPSG:4123' + + 'EPSG:4124' + + 'EPSG:4125' + + 'EPSG:4126' + + 'EPSG:4127' + + 'EPSG:4128' + + 'EPSG:4129' + + 'EPSG:4130' + + 'EPSG:4131' + + 'EPSG:4132' + + 'EPSG:4133' + + 'EPSG:4134' + + 'EPSG:4135' + + 'EPSG:4136' + + 'EPSG:4137' + + 'EPSG:4138' + + 'EPSG:4139' + + 'EPSG:4140' + + 'EPSG:4141' + + 'EPSG:4142' + + 'EPSG:4143' + + 'EPSG:4144' + + 'EPSG:4145' + + 'EPSG:4146' + + 'EPSG:4147' + + 'EPSG:4148' + + 'EPSG:4149' + + 'EPSG:4150' + + 'EPSG:4151' + + 'EPSG:4152' + + 'EPSG:4153' + + 'EPSG:4154' + + 'EPSG:4155' + + 'EPSG:4156' + + 'EPSG:4157' + + 'EPSG:4158' + + 'EPSG:4159' + + 'EPSG:4160' + + 'EPSG:4161' + + 'EPSG:4162' + + 'EPSG:4163' + + 'EPSG:4164' + + 'EPSG:4165' + + 'EPSG:4166' + + 'EPSG:4167' + + 'EPSG:4168' + + 'EPSG:4169' + + 'EPSG:4170' + + 'EPSG:4171' + + 'EPSG:4172' + + 'EPSG:4173' + + 'EPSG:4174' + + 'EPSG:4175' + + 'EPSG:4176' + + 'EPSG:4178' + + 'EPSG:4179' + + 'EPSG:4180' + + 'EPSG:4181' + + 'EPSG:4182' + + 'EPSG:4183' + + 'EPSG:4184' + + 'EPSG:4185' + + 'EPSG:4188' + + 'EPSG:4189' + + 'EPSG:4190' + + 'EPSG:4191' + + 'EPSG:4192' + + 'EPSG:4193' + + 'EPSG:4194' + + 'EPSG:4195' + + 'EPSG:4196' + + 'EPSG:4197' + + 'EPSG:4198' + + 'EPSG:4199' + + 'EPSG:4200' + + 'EPSG:4201' + + 'EPSG:4202' + + 'EPSG:4203' + + 'EPSG:4204' + + 'EPSG:4205' + + 'EPSG:4206' + + 'EPSG:4207' + + 'EPSG:4208' + + 'EPSG:4209' + + 'EPSG:4210' + + 'EPSG:4211' + + 'EPSG:4212' + + 'EPSG:4213' + + 'EPSG:4214' + + 'EPSG:4215' + + 'EPSG:4216' + + 'EPSG:4218' + + 'EPSG:4219' + + 'EPSG:4220' + + 'EPSG:4221' + + 'EPSG:4222' + + 'EPSG:4223' + + 'EPSG:4224' + + 'EPSG:4225' + + 'EPSG:4226' + + 'EPSG:4227' + + 'EPSG:4228' + + 'EPSG:4229' + + 'EPSG:4230' + + 'EPSG:4231' + + 'EPSG:4232' + + 'EPSG:4233' + + 'EPSG:4234' + + 'EPSG:4235' + + 'EPSG:4236' + + 'EPSG:4237' + + 'EPSG:4238' + + 'EPSG:4239' + + 'EPSG:4240' + + 'EPSG:4241' + + 'EPSG:4242' + + 'EPSG:4243' + + 'EPSG:4244' + + 'EPSG:4245' + + 'EPSG:4246' + + 'EPSG:4247' + + 'EPSG:4248' + + 'EPSG:4249' + + 'EPSG:4250' + + 'EPSG:4251' + + 'EPSG:4252' + + 'EPSG:4253' + + 'EPSG:4254' + + 'EPSG:4255' + + 'EPSG:4256' + + 'EPSG:4257' + + 'EPSG:4258' + + 'EPSG:4259' + + 'EPSG:4260' + + 'EPSG:4261' + + 'EPSG:4262' + + 'EPSG:4263' + + 'EPSG:4264' + + 'EPSG:4265' + + 'EPSG:4266' + + 'EPSG:4267' + + 'EPSG:4268' + + 'EPSG:4269' + + 'EPSG:4270' + + 'EPSG:4271' + + 'EPSG:4272' + + 'EPSG:4273' + + 'EPSG:4274' + + 'EPSG:4275' + + 'EPSG:4276' + + 'EPSG:4277' + + 'EPSG:4278' + + 'EPSG:4279' + + 'EPSG:4280' + + 'EPSG:4281' + + 'EPSG:4282' + + 'EPSG:4283' + + 'EPSG:4284' + + 'EPSG:4285' + + 'EPSG:4286' + + 'EPSG:4287' + + 'EPSG:4288' + + 'EPSG:4289' + + 'EPSG:4291' + + 'EPSG:4292' + + 'EPSG:4293' + + 'EPSG:4294' + + 'EPSG:4295' + + 'EPSG:4296' + + 'EPSG:4297' + + 'EPSG:4298' + + 'EPSG:4299' + + 'EPSG:4300' + + 'EPSG:4301' + + 'EPSG:4302' + + 'EPSG:4303' + + 'EPSG:4304' + + 'EPSG:4306' + + 'EPSG:4307' + + 'EPSG:4308' + + 'EPSG:4309' + + 'EPSG:4310' + + 'EPSG:4311' + + 'EPSG:4312' + + 'EPSG:4313' + + 'EPSG:4314' + + 'EPSG:4315' + + 'EPSG:4316' + + 'EPSG:4317' + + 'EPSG:4318' + + 'EPSG:4319' + + 'EPSG:4322' + + 'EPSG:4324' + + 'EPSG:4326' + + 'EPSG:4327' + + 'EPSG:4328' + + 'EPSG:4329' + + 'EPSG:4330' + + 'EPSG:4331' + + 'EPSG:4332' + + 'EPSG:4333' + + 'EPSG:4334' + + 'EPSG:4335' + + 'EPSG:4336' + + 'EPSG:4337' + + 'EPSG:4338' + + 'EPSG:4339' + + 'EPSG:4340' + + 'EPSG:4341' + + 'EPSG:4342' + + 'EPSG:4343' + + 'EPSG:4344' + + 'EPSG:4345' + + 'EPSG:4346' + + 'EPSG:4347' + + 'EPSG:4348' + + 'EPSG:4349' + + 'EPSG:4350' + + 'EPSG:4351' + + 'EPSG:4352' + + 'EPSG:4353' + + 'EPSG:4354' + + 'EPSG:4355' + + 'EPSG:4356' + + 'EPSG:4357' + + 'EPSG:4358' + + 'EPSG:4359' + + 'EPSG:4360' + + 'EPSG:4361' + + 'EPSG:4362' + + 'EPSG:4363' + + 'EPSG:4364' + + 'EPSG:4365' + + 'EPSG:4366' + + 'EPSG:4367' + + 'EPSG:4368' + + 'EPSG:4369' + + 'EPSG:4370' + + 'EPSG:4371' + + 'EPSG:4372' + + 'EPSG:4373' + + 'EPSG:4374' + + 'EPSG:4375' + + 'EPSG:4376' + + 'EPSG:4377' + + 'EPSG:4378' + + 'EPSG:4379' + + 'EPSG:4380' + + 'EPSG:4381' + + 'EPSG:4382' + + 'EPSG:4383' + + 'EPSG:4384' + + 'EPSG:4385' + + 'EPSG:4386' + + 'EPSG:4387' + + 'EPSG:4388' + + 'EPSG:4389' + + 'EPSG:4600' + + 'EPSG:4601' + + 'EPSG:4602' + + 'EPSG:4603' + + 'EPSG:4604' + + 'EPSG:4605' + + 'EPSG:4606' + + 'EPSG:4607' + + 'EPSG:4608' + + 'EPSG:4609' + + 'EPSG:4610' + + 'EPSG:4611' + + 'EPSG:4612' + + 'EPSG:4613' + + 'EPSG:4614' + + 'EPSG:4615' + + 'EPSG:4616' + + 'EPSG:4617' + + 'EPSG:4618' + + 'EPSG:4619' + + 'EPSG:4620' + + 'EPSG:4621' + + 'EPSG:4622' + + 'EPSG:4623' + + 'EPSG:4624' + + 'EPSG:4625' + + 'EPSG:4626' + + 'EPSG:4627' + + 'EPSG:4628' + + 'EPSG:4629' + + 'EPSG:4630' + + 'EPSG:4631' + + 'EPSG:4632' + + 'EPSG:4633' + + 'EPSG:4634' + + 'EPSG:4635' + + 'EPSG:4636' + + 'EPSG:4637' + + 'EPSG:4638' + + 'EPSG:4639' + + 'EPSG:4640' + + 'EPSG:4641' + + 'EPSG:4642' + + 'EPSG:4643' + + 'EPSG:4644' + + 'EPSG:4645' + + 'EPSG:4646' + + 'EPSG:4657' + + 'EPSG:4658' + + 'EPSG:4659' + + 'EPSG:4660' + + 'EPSG:4661' + + 'EPSG:4662' + + 'EPSG:4663' + + 'EPSG:4664' + + 'EPSG:4665' + + 'EPSG:4666' + + 'EPSG:4667' + + 'EPSG:4668' + + 'EPSG:4669' + + 'EPSG:4670' + + 'EPSG:4671' + + 'EPSG:4672' + + 'EPSG:4673' + + 'EPSG:4674' + + 'EPSG:4675' + + 'EPSG:4676' + + 'EPSG:4677' + + 'EPSG:4678' + + 'EPSG:4679' + + 'EPSG:4680' + + 'EPSG:4681' + + 'EPSG:4682' + + 'EPSG:4683' + + 'EPSG:4684' + + 'EPSG:4685' + + 'EPSG:4686' + + 'EPSG:4687' + + 'EPSG:4688' + + 'EPSG:4689' + + 'EPSG:4690' + + 'EPSG:4691' + + 'EPSG:4692' + + 'EPSG:4693' + + 'EPSG:4694' + + 'EPSG:4695' + + 'EPSG:4696' + + 'EPSG:4697' + + 'EPSG:4698' + + 'EPSG:4699' + + 'EPSG:4700' + + 'EPSG:4701' + + 'EPSG:4702' + + 'EPSG:4703' + + 'EPSG:4704' + + 'EPSG:4705' + + 'EPSG:4706' + + 'EPSG:4707' + + 'EPSG:4708' + + 'EPSG:4709' + + 'EPSG:4710' + + 'EPSG:4711' + + 'EPSG:4712' + + 'EPSG:4713' + + 'EPSG:4714' + + 'EPSG:4715' + + 'EPSG:4716' + + 'EPSG:4717' + + 'EPSG:4718' + + 'EPSG:4719' + + 'EPSG:4720' + + 'EPSG:4721' + + 'EPSG:4722' + + 'EPSG:4723' + + 'EPSG:4724' + + 'EPSG:4725' + + 'EPSG:4726' + + 'EPSG:4727' + + 'EPSG:4728' + + 'EPSG:4729' + + 'EPSG:4730' + + 'EPSG:4731' + + 'EPSG:4732' + + 'EPSG:4733' + + 'EPSG:4734' + + 'EPSG:4735' + + 'EPSG:4736' + + 'EPSG:4737' + + 'EPSG:4738' + + 'EPSG:4739' + + 'EPSG:4740' + + 'EPSG:4741' + + 'EPSG:4742' + + 'EPSG:4743' + + 'EPSG:4744' + + 'EPSG:4745' + + 'EPSG:4746' + + 'EPSG:4747' + + 'EPSG:4748' + + 'EPSG:4749' + + 'EPSG:4750' + + 'EPSG:4751' + + 'EPSG:4752' + + 'EPSG:4753' + + 'EPSG:4754' + + 'EPSG:4755' + + 'EPSG:4756' + + 'EPSG:4757' + + 'EPSG:4758' + + 'EPSG:4801' + + 'EPSG:4802' + + 'EPSG:4803' + + 'EPSG:4804' + + 'EPSG:4805' + + 'EPSG:4806' + + 'EPSG:4807' + + 'EPSG:4808' + + 'EPSG:4809' + + 'EPSG:4810' + + 'EPSG:4811' + + 'EPSG:4813' + + 'EPSG:4814' + + 'EPSG:4815' + + 'EPSG:4816' + + 'EPSG:4817' + + 'EPSG:4818' + + 'EPSG:4819' + + 'EPSG:4820' + + 'EPSG:4821' + + 'EPSG:4894' + + 'EPSG:4895' + + 'EPSG:4896' + + 'EPSG:4897' + + 'EPSG:4898' + + 'EPSG:4899' + + 'EPSG:4900' + + 'EPSG:4901' + + 'EPSG:4902' + + 'EPSG:4903' + + 'EPSG:4904' + + 'EPSG:4906' + + 'EPSG:4907' + + 'EPSG:4908' + + 'EPSG:4909' + + 'EPSG:4910' + + 'EPSG:4911' + + 'EPSG:4912' + + 'EPSG:4913' + + 'EPSG:4914' + + 'EPSG:4915' + + 'EPSG:4916' + + 'EPSG:4917' + + 'EPSG:4918' + + 'EPSG:4919' + + 'EPSG:4920' + + 'EPSG:4921' + + 'EPSG:4922' + + 'EPSG:4923' + + 'EPSG:4924' + + 'EPSG:4925' + + 'EPSG:4926' + + 'EPSG:4927' + + 'EPSG:4928' + + 'EPSG:4929' + + 'EPSG:4930' + + 'EPSG:4931' + + 'EPSG:4932' + + 'EPSG:4933' + + 'EPSG:4934' + + 'EPSG:4935' + + 'EPSG:4936' + + 'EPSG:4937' + + 'EPSG:4938' + + 'EPSG:4939' + + 'EPSG:4940' + + 'EPSG:4941' + + 'EPSG:4942' + + 'EPSG:4943' + + 'EPSG:4944' + + 'EPSG:4945' + + 'EPSG:4946' + + 'EPSG:4947' + + 'EPSG:4948' + + 'EPSG:4949' + + 'EPSG:4950' + + 'EPSG:4951' + + 'EPSG:4952' + + 'EPSG:4953' + + 'EPSG:4954' + + 'EPSG:4955' + + 'EPSG:4956' + + 'EPSG:4957' + + 'EPSG:4958' + + 'EPSG:4959' + + 'EPSG:4960' + + 'EPSG:4961' + + 'EPSG:4962' + + 'EPSG:4963' + + 'EPSG:4964' + + 'EPSG:4965' + + 'EPSG:4966' + + 'EPSG:4967' + + 'EPSG:4968' + + 'EPSG:4969' + + 'EPSG:4970' + + 'EPSG:4971' + + 'EPSG:4972' + + 'EPSG:4973' + + 'EPSG:4974' + + 'EPSG:4975' + + 'EPSG:4976' + + 'EPSG:4977' + + 'EPSG:4978' + + 'EPSG:4979' + + 'EPSG:4980' + + 'EPSG:4981' + + 'EPSG:4982' + + 'EPSG:4983' + + 'EPSG:4984' + + 'EPSG:4985' + + 'EPSG:4986' + + 'EPSG:4987' + + 'EPSG:4988' + + 'EPSG:4989' + + 'EPSG:4990' + + 'EPSG:4991' + + 'EPSG:4992' + + 'EPSG:4993' + + 'EPSG:4994' + + 'EPSG:4995' + + 'EPSG:4996' + + 'EPSG:4997' + + 'EPSG:4998' + + 'EPSG:4999' + + 'EPSG:5600' + + 'EPSG:5601' + + 'EPSG:5602' + + 'EPSG:5603' + + 'EPSG:5604' + + 'EPSG:5605' + + 'EPSG:5606' + + 'EPSG:5607' + + 'EPSG:5608' + + 'EPSG:5609' + + 'EPSG:5701' + + 'EPSG:5702' + + 'EPSG:5703' + + 'EPSG:5704' + + 'EPSG:5705' + + 'EPSG:5706' + + 'EPSG:5709' + + 'EPSG:5710' + + 'EPSG:5711' + + 'EPSG:5712' + + 'EPSG:5713' + + 'EPSG:5714' + + 'EPSG:5715' + + 'EPSG:5716' + + 'EPSG:5717' + + 'EPSG:5718' + + 'EPSG:5719' + + 'EPSG:5720' + + 'EPSG:5721' + + 'EPSG:5722' + + 'EPSG:5723' + + 'EPSG:5724' + + 'EPSG:5725' + + 'EPSG:5726' + + 'EPSG:5727' + + 'EPSG:5728' + + 'EPSG:5729' + + 'EPSG:5730' + + 'EPSG:5731' + + 'EPSG:5732' + + 'EPSG:5733' + + 'EPSG:5734' + + 'EPSG:5735' + + 'EPSG:5736' + + 'EPSG:5737' + + 'EPSG:5738' + + 'EPSG:5739' + + 'EPSG:5740' + + 'EPSG:5741' + + 'EPSG:5742' + + 'EPSG:5743' + + 'EPSG:5744' + + 'EPSG:5745' + + 'EPSG:5746' + + 'EPSG:5747' + + 'EPSG:5748' + + 'EPSG:5749' + + 'EPSG:5750' + + 'EPSG:5751' + + 'EPSG:5752' + + 'EPSG:5753' + + 'EPSG:5754' + + 'EPSG:5755' + + 'EPSG:5756' + + 'EPSG:5757' + + 'EPSG:5758' + + 'EPSG:5759' + + 'EPSG:5760' + + 'EPSG:5761' + + 'EPSG:5762' + + 'EPSG:5763' + + 'EPSG:5764' + + 'EPSG:5765' + + 'EPSG:5766' + + 'EPSG:5767' + + 'EPSG:5768' + + 'EPSG:5769' + + 'EPSG:5770' + + 'EPSG:5771' + + 'EPSG:5772' + + 'EPSG:5773' + + 'EPSG:5774' + + 'EPSG:5775' + + 'EPSG:5776' + + 'EPSG:5777' + + 'EPSG:5778' + + 'EPSG:5779' + + 'EPSG:5780' + + 'EPSG:5781' + + 'EPSG:5782' + + 'EPSG:5783' + + 'EPSG:5784' + + 'EPSG:5785' + + 'EPSG:5786' + + 'EPSG:5787' + + 'EPSG:5788' + + 'EPSG:5789' + + 'EPSG:5790' + + 'EPSG:5791' + + 'EPSG:5792' + + 'EPSG:5793' + + 'EPSG:5794' + + 'EPSG:5795' + + 'EPSG:5796' + + 'EPSG:5797' + + 'EPSG:5798' + + 'EPSG:5799' + + 'EPSG:5800' + + 'EPSG:5801' + + 'EPSG:5802' + + 'EPSG:5803' + + 'EPSG:5804' + + 'EPSG:5805' + + 'EPSG:5806' + + 'EPSG:5807' + + 'EPSG:5808' + + 'EPSG:5809' + + 'EPSG:5810' + + 'EPSG:5811' + + 'EPSG:5812' + + 'EPSG:5813' + + 'EPSG:5814' + + 'EPSG:5815' + + 'EPSG:5816' + + 'EPSG:5817' + + 'EPSG:5818' + + 'EPSG:7400' + + 'EPSG:7401' + + 'EPSG:7402' + + 'EPSG:7403' + + 'EPSG:7404' + + 'EPSG:7405' + + 'EPSG:7406' + + 'EPSG:7407' + + 'EPSG:7408' + + 'EPSG:7409' + + 'EPSG:7410' + + 'EPSG:7411' + + 'EPSG:7412' + + 'EPSG:7413' + + 'EPSG:7414' + + 'EPSG:7415' + + 'EPSG:7416' + + 'EPSG:7417' + + 'EPSG:7418' + + 'EPSG:7419' + + 'EPSG:7420' + + 'EPSG:20004' + + 'EPSG:20005' + + 'EPSG:20006' + + 'EPSG:20007' + + 'EPSG:20008' + + 'EPSG:20009' + + 'EPSG:20010' + + 'EPSG:20011' + + 'EPSG:20012' + + 'EPSG:20013' + + 'EPSG:20014' + + 'EPSG:20015' + + 'EPSG:20016' + + 'EPSG:20017' + + 'EPSG:20018' + + 'EPSG:20019' + + 'EPSG:20020' + + 'EPSG:20021' + + 'EPSG:20022' + + 'EPSG:20023' + + 'EPSG:20024' + + 'EPSG:20025' + + 'EPSG:20026' + + 'EPSG:20027' + + 'EPSG:20028' + + 'EPSG:20029' + + 'EPSG:20030' + + 'EPSG:20031' + + 'EPSG:20032' + + 'EPSG:20064' + + 'EPSG:20065' + + 'EPSG:20066' + + 'EPSG:20067' + + 'EPSG:20068' + + 'EPSG:20069' + + 'EPSG:20070' + + 'EPSG:20071' + + 'EPSG:20072' + + 'EPSG:20073' + + 'EPSG:20074' + + 'EPSG:20075' + + 'EPSG:20076' + + 'EPSG:20077' + + 'EPSG:20078' + + 'EPSG:20079' + + 'EPSG:20080' + + 'EPSG:20081' + + 'EPSG:20082' + + 'EPSG:20083' + + 'EPSG:20084' + + 'EPSG:20085' + + 'EPSG:20086' + + 'EPSG:20087' + + 'EPSG:20088' + + 'EPSG:20089' + + 'EPSG:20090' + + 'EPSG:20091' + + 'EPSG:20092' + + 'EPSG:20135' + + 'EPSG:20136' + + 'EPSG:20137' + + 'EPSG:20138' + + 'EPSG:20248' + + 'EPSG:20249' + + 'EPSG:20250' + + 'EPSG:20251' + + 'EPSG:20252' + + 'EPSG:20253' + + 'EPSG:20254' + + 'EPSG:20255' + + 'EPSG:20256' + + 'EPSG:20257' + + 'EPSG:20258' + + 'EPSG:20348' + + 'EPSG:20349' + + 'EPSG:20350' + + 'EPSG:20351' + + 'EPSG:20352' + + 'EPSG:20353' + + 'EPSG:20354' + + 'EPSG:20355' + + 'EPSG:20356' + + 'EPSG:20357' + + 'EPSG:20358' + + 'EPSG:20436' + + 'EPSG:20437' + + 'EPSG:20438' + + 'EPSG:20439' + + 'EPSG:20440' + + 'EPSG:20499' + + 'EPSG:20538' + + 'EPSG:20539' + + 'EPSG:20790' + + 'EPSG:20791' + + 'EPSG:20822' + + 'EPSG:20823' + + 'EPSG:20824' + + 'EPSG:20934' + + 'EPSG:20935' + + 'EPSG:20936' + + 'EPSG:21035' + + 'EPSG:21036' + + 'EPSG:21037' + + 'EPSG:21095' + + 'EPSG:21096' + + 'EPSG:21097' + + 'EPSG:21100' + + 'EPSG:21148' + + 'EPSG:21149' + + 'EPSG:21150' + + 'EPSG:21291' + + 'EPSG:21292' + + 'EPSG:21413' + + 'EPSG:21414' + + 'EPSG:21415' + + 'EPSG:21416' + + 'EPSG:21417' + + 'EPSG:21418' + + 'EPSG:21419' + + 'EPSG:21420' + + 'EPSG:21421' + + 'EPSG:21422' + + 'EPSG:21423' + + 'EPSG:21453' + + 'EPSG:21454' + + 'EPSG:21455' + + 'EPSG:21456' + + 'EPSG:21457' + + 'EPSG:21458' + + 'EPSG:21459' + + 'EPSG:21460' + + 'EPSG:21461' + + 'EPSG:21462' + + 'EPSG:21463' + + 'EPSG:21473' + + 'EPSG:21474' + + 'EPSG:21475' + + 'EPSG:21476' + + 'EPSG:21477' + + 'EPSG:21478' + + 'EPSG:21479' + + 'EPSG:21480' + + 'EPSG:21481' + + 'EPSG:21482' + + 'EPSG:21483' + + 'EPSG:21500' + + 'EPSG:21780' + + 'EPSG:21781' + + 'EPSG:21817' + + 'EPSG:21818' + + 'EPSG:21891' + + 'EPSG:21892' + + 'EPSG:21893' + + 'EPSG:21894' + + 'EPSG:21896' + + 'EPSG:21897' + + 'EPSG:21898' + + 'EPSG:21899' + + 'EPSG:22032' + + 'EPSG:22033' + + 'EPSG:22091' + + 'EPSG:22092' + + 'EPSG:22171' + + 'EPSG:22172' + + 'EPSG:22173' + + 'EPSG:22174' + + 'EPSG:22175' + + 'EPSG:22176' + + 'EPSG:22177' + + 'EPSG:22181' + + 'EPSG:22182' + + 'EPSG:22183' + + 'EPSG:22184' + + 'EPSG:22185' + + 'EPSG:22186' + + 'EPSG:22187' + + 'EPSG:22191' + + 'EPSG:22192' + + 'EPSG:22193' + + 'EPSG:22194' + + 'EPSG:22195' + + 'EPSG:22196' + + 'EPSG:22197' + + 'EPSG:22234' + + 'EPSG:22235' + + 'EPSG:22236' + + 'EPSG:22275' + + 'EPSG:22277' + + 'EPSG:22279' + + 'EPSG:22281' + + 'EPSG:22283' + + 'EPSG:22285' + + 'EPSG:22287' + + 'EPSG:22289' + + 'EPSG:22291' + + 'EPSG:22293' + + 'EPSG:22300' + + 'EPSG:22332' + + 'EPSG:22391' + + 'EPSG:22392' + + 'EPSG:22521' + + 'EPSG:22522' + + 'EPSG:22523' + + 'EPSG:22524' + + 'EPSG:22525' + + 'EPSG:22700' + + 'EPSG:22770' + + 'EPSG:22780' + + 'EPSG:22832' + + 'EPSG:22991' + + 'EPSG:22992' + + 'EPSG:22993' + + 'EPSG:22994' + + 'EPSG:23028' + + 'EPSG:23029' + + 'EPSG:23030' + + 'EPSG:23031' + + 'EPSG:23032' + + 'EPSG:23033' + + 'EPSG:23034' + + 'EPSG:23035' + + 'EPSG:23036' + + 'EPSG:23037' + + 'EPSG:23038' + + 'EPSG:23090' + + 'EPSG:23095' + + 'EPSG:23239' + + 'EPSG:23240' + + 'EPSG:23433' + + 'EPSG:23700' + + 'EPSG:23846' + + 'EPSG:23847' + + 'EPSG:23848' + + 'EPSG:23849' + + 'EPSG:23850' + + 'EPSG:23851' + + 'EPSG:23852' + + 'EPSG:23853' + + 'EPSG:23866' + + 'EPSG:23867' + + 'EPSG:23868' + + 'EPSG:23869' + + 'EPSG:23870' + + 'EPSG:23871' + + 'EPSG:23872' + + 'EPSG:23877' + + 'EPSG:23878' + + 'EPSG:23879' + + 'EPSG:23880' + + 'EPSG:23881' + + 'EPSG:23882' + + 'EPSG:23883' + + 'EPSG:23884' + + 'EPSG:23886' + + 'EPSG:23887' + + 'EPSG:23888' + + 'EPSG:23889' + + 'EPSG:23890' + + 'EPSG:23891' + + 'EPSG:23892' + + 'EPSG:23893' + + 'EPSG:23894' + + 'EPSG:23946' + + 'EPSG:23947' + + 'EPSG:23948' + + 'EPSG:24047' + + 'EPSG:24048' + + 'EPSG:24100' + + 'EPSG:24200' + + 'EPSG:24305' + + 'EPSG:24306' + + 'EPSG:24311' + + 'EPSG:24312' + + 'EPSG:24313' + + 'EPSG:24342' + + 'EPSG:24343' + + 'EPSG:24344' + + 'EPSG:24345' + + 'EPSG:24346' + + 'EPSG:24347' + + 'EPSG:24370' + + 'EPSG:24371' + + 'EPSG:24372' + + 'EPSG:24373' + + 'EPSG:24374' + + 'EPSG:24375' + + 'EPSG:24376' + + 'EPSG:24377' + + 'EPSG:24378' + + 'EPSG:24379' + + 'EPSG:24380' + + 'EPSG:24381' + + 'EPSG:24382' + + 'EPSG:24383' + + 'EPSG:24500' + + 'EPSG:24547' + + 'EPSG:24548' + + 'EPSG:24571' + + 'EPSG:24600' + + 'EPSG:24718' + + 'EPSG:24719' + + 'EPSG:24720' + + 'EPSG:24817' + + 'EPSG:24818' + + 'EPSG:24819' + + 'EPSG:24820' + + 'EPSG:24821' + + 'EPSG:24877' + + 'EPSG:24878' + + 'EPSG:24879' + + 'EPSG:24880' + + 'EPSG:24881' + + 'EPSG:24882' + + 'EPSG:24891' + + 'EPSG:24892' + + 'EPSG:24893' + + 'EPSG:25000' + + 'EPSG:25231' + + 'EPSG:25391' + + 'EPSG:25392' + + 'EPSG:25393' + + 'EPSG:25394' + + 'EPSG:25395' + + 'EPSG:25700' + + 'EPSG:25828' + + 'EPSG:25829' + + 'EPSG:25830' + + 'EPSG:25831' + + 'EPSG:25832' + + 'EPSG:25833' + + 'EPSG:25834' + + 'EPSG:25835' + + 'EPSG:25836' + + 'EPSG:25837' + + 'EPSG:25838' + + 'EPSG:25884' + + 'EPSG:25932' + + 'EPSG:26191' + + 'EPSG:26192' + + 'EPSG:26193' + + 'EPSG:26194' + + 'EPSG:26195' + + 'EPSG:26237' + + 'EPSG:26331' + + 'EPSG:26332' + + 'EPSG:26391' + + 'EPSG:26392' + + 'EPSG:26393' + + 'EPSG:26432' + + 'EPSG:26591' + + 'EPSG:26592' + + 'EPSG:26632' + + 'EPSG:26692' + + 'EPSG:26701' + + 'EPSG:26702' + + 'EPSG:26703' + + 'EPSG:26704' + + 'EPSG:26705' + + 'EPSG:26706' + + 'EPSG:26707' + + 'EPSG:26708' + + 'EPSG:26709' + + 'EPSG:26710' + + 'EPSG:26711' + + 'EPSG:26712' + + 'EPSG:26713' + + 'EPSG:26714' + + 'EPSG:26715' + + 'EPSG:26716' + + 'EPSG:26717' + + 'EPSG:26718' + + 'EPSG:26719' + + 'EPSG:26720' + + 'EPSG:26721' + + 'EPSG:26722' + + 'EPSG:26729' + + 'EPSG:26730' + + 'EPSG:26731' + + 'EPSG:26732' + + 'EPSG:26733' + + 'EPSG:26734' + + 'EPSG:26735' + + 'EPSG:26736' + + 'EPSG:26737' + + 'EPSG:26738' + + 'EPSG:26739' + + 'EPSG:26740' + + 'EPSG:26741' + + 'EPSG:26742' + + 'EPSG:26743' + + 'EPSG:26744' + + 'EPSG:26745' + + 'EPSG:26746' + + 'EPSG:26747' + + 'EPSG:26748' + + 'EPSG:26749' + + 'EPSG:26750' + + 'EPSG:26751' + + 'EPSG:26752' + + 'EPSG:26753' + + 'EPSG:26754' + + 'EPSG:26755' + + 'EPSG:26756' + + 'EPSG:26757' + + 'EPSG:26758' + + 'EPSG:26759' + + 'EPSG:26760' + + 'EPSG:26766' + + 'EPSG:26767' + + 'EPSG:26768' + + 'EPSG:26769' + + 'EPSG:26770' + + 'EPSG:26771' + + 'EPSG:26772' + + 'EPSG:26773' + + 'EPSG:26774' + + 'EPSG:26775' + + 'EPSG:26776' + + 'EPSG:26777' + + 'EPSG:26778' + + 'EPSG:26779' + + 'EPSG:26780' + + 'EPSG:26781' + + 'EPSG:26782' + + 'EPSG:26783' + + 'EPSG:26784' + + 'EPSG:26785' + + 'EPSG:26786' + + 'EPSG:26787' + + 'EPSG:26791' + + 'EPSG:26792' + + 'EPSG:26793' + + 'EPSG:26794' + + 'EPSG:26795' + + 'EPSG:26796' + + 'EPSG:26797' + + 'EPSG:26798' + + 'EPSG:26799' + + 'EPSG:26801' + + 'EPSG:26802' + + 'EPSG:26803' + + 'EPSG:26811' + + 'EPSG:26812' + + 'EPSG:26813' + + 'EPSG:26901' + + 'EPSG:26902' + + 'EPSG:26903' + + 'EPSG:26904' + + 'EPSG:26905' + + 'EPSG:26906' + + 'EPSG:26907' + + 'EPSG:26908' + + 'EPSG:26909' + + 'EPSG:26910' + + 'EPSG:26911' + + 'EPSG:26912' + + 'EPSG:26913' + + 'EPSG:26914' + + 'EPSG:26915' + + 'EPSG:26916' + + 'EPSG:26917' + + 'EPSG:26918' + + 'EPSG:26919' + + 'EPSG:26920' + + 'EPSG:26921' + + 'EPSG:26922' + + 'EPSG:26923' + + 'EPSG:26929' + + 'EPSG:26930' + + 'EPSG:26931' + + 'EPSG:26932' + + 'EPSG:26933' + + 'EPSG:26934' + + 'EPSG:26935' + + 'EPSG:26936' + + 'EPSG:26937' + + 'EPSG:26938' + + 'EPSG:26939' + + 'EPSG:26940' + + 'EPSG:26941' + + 'EPSG:26942' + + 'EPSG:26943' + + 'EPSG:26944' + + 'EPSG:26945' + + 'EPSG:26946' + + 'EPSG:26948' + + 'EPSG:26949' + + 'EPSG:26950' + + 'EPSG:26951' + + 'EPSG:26952' + + 'EPSG:26953' + + 'EPSG:26954' + + 'EPSG:26955' + + 'EPSG:26956' + + 'EPSG:26957' + + 'EPSG:26958' + + 'EPSG:26959' + + 'EPSG:26960' + + 'EPSG:26961' + + 'EPSG:26962' + + 'EPSG:26963' + + 'EPSG:26964' + + 'EPSG:26965' + + 'EPSG:26966' + + 'EPSG:26967' + + 'EPSG:26968' + + 'EPSG:26969' + + 'EPSG:26970' + + 'EPSG:26971' + + 'EPSG:26972' + + 'EPSG:26973' + + 'EPSG:26974' + + 'EPSG:26975' + + 'EPSG:26976' + + 'EPSG:26977' + + 'EPSG:26978' + + 'EPSG:26979' + + 'EPSG:26980' + + 'EPSG:26981' + + 'EPSG:26982' + + 'EPSG:26983' + + 'EPSG:26984' + + 'EPSG:26985' + + 'EPSG:26986' + + 'EPSG:26987' + + 'EPSG:26988' + + 'EPSG:26989' + + 'EPSG:26990' + + 'EPSG:26991' + + 'EPSG:26992' + + 'EPSG:26993' + + 'EPSG:26994' + + 'EPSG:26995' + + 'EPSG:26996' + + 'EPSG:26997' + + 'EPSG:26998' + + 'EPSG:27037' + + 'EPSG:27038' + + 'EPSG:27039' + + 'EPSG:27040' + + 'EPSG:27120' + + 'EPSG:27200' + + 'EPSG:27205' + + 'EPSG:27206' + + 'EPSG:27207' + + 'EPSG:27208' + + 'EPSG:27209' + + 'EPSG:27210' + + 'EPSG:27211' + + 'EPSG:27212' + + 'EPSG:27213' + + 'EPSG:27214' + + 'EPSG:27215' + + 'EPSG:27216' + + 'EPSG:27217' + + 'EPSG:27218' + + 'EPSG:27219' + + 'EPSG:27220' + + 'EPSG:27221' + + 'EPSG:27222' + + 'EPSG:27223' + + 'EPSG:27224' + + 'EPSG:27225' + + 'EPSG:27226' + + 'EPSG:27227' + + 'EPSG:27228' + + 'EPSG:27229' + + 'EPSG:27230' + + 'EPSG:27231' + + 'EPSG:27232' + + 'EPSG:27258' + + 'EPSG:27259' + + 'EPSG:27260' + + 'EPSG:27291' + + 'EPSG:27292' + + 'EPSG:27391' + + 'EPSG:27392' + + 'EPSG:27393' + + 'EPSG:27394' + + 'EPSG:27395' + + 'EPSG:27396' + + 'EPSG:27397' + + 'EPSG:27398' + + 'EPSG:27429' + + 'EPSG:27492' + + 'EPSG:27500' + + 'EPSG:27561' + + 'EPSG:27562' + + 'EPSG:27563' + + 'EPSG:27564' + + 'EPSG:27571' + + 'EPSG:27572' + + 'EPSG:27573' + + 'EPSG:27574' + + 'EPSG:27581' + + 'EPSG:27582' + + 'EPSG:27583' + + 'EPSG:27584' + + 'EPSG:27591' + + 'EPSG:27592' + + 'EPSG:27593' + + 'EPSG:27594' + + 'EPSG:27700' + + 'EPSG:28191' + + 'EPSG:28192' + + 'EPSG:28193' + + 'EPSG:28232' + + 'EPSG:28348' + + 'EPSG:28349' + + 'EPSG:28350' + + 'EPSG:28351' + + 'EPSG:28352' + + 'EPSG:28353' + + 'EPSG:28354' + + 'EPSG:28355' + + 'EPSG:28356' + + 'EPSG:28357' + + 'EPSG:28358' + + 'EPSG:28402' + + 'EPSG:28403' + + 'EPSG:28404' + + 'EPSG:28405' + + 'EPSG:28406' + + 'EPSG:28407' + + 'EPSG:28408' + + 'EPSG:28409' + + 'EPSG:28410' + + 'EPSG:28411' + + 'EPSG:28412' + + 'EPSG:28413' + + 'EPSG:28414' + + 'EPSG:28415' + + 'EPSG:28416' + + 'EPSG:28417' + + 'EPSG:28418' + + 'EPSG:28419' + + 'EPSG:28420' + + 'EPSG:28421' + + 'EPSG:28422' + + 'EPSG:28423' + + 'EPSG:28424' + + 'EPSG:28425' + + 'EPSG:28426' + + 'EPSG:28427' + + 'EPSG:28428' + + 'EPSG:28429' + + 'EPSG:28430' + + 'EPSG:28431' + + 'EPSG:28432' + + 'EPSG:28462' + + 'EPSG:28463' + + 'EPSG:28464' + + 'EPSG:28465' + + 'EPSG:28466' + + 'EPSG:28467' + + 'EPSG:28468' + + 'EPSG:28469' + + 'EPSG:28470' + + 'EPSG:28471' + + 'EPSG:28472' + + 'EPSG:28473' + + 'EPSG:28474' + + 'EPSG:28475' + + 'EPSG:28476' + + 'EPSG:28477' + + 'EPSG:28478' + + 'EPSG:28479' + + 'EPSG:28480' + + 'EPSG:28481' + + 'EPSG:28482' + + 'EPSG:28483' + + 'EPSG:28484' + + 'EPSG:28485' + + 'EPSG:28486' + + 'EPSG:28487' + + 'EPSG:28488' + + 'EPSG:28489' + + 'EPSG:28490' + + 'EPSG:28491' + + 'EPSG:28492' + + 'EPSG:28600' + + 'EPSG:28991' + + 'EPSG:28992' + + 'EPSG:29100' + + 'EPSG:29101' + + 'EPSG:29118' + + 'EPSG:29119' + + 'EPSG:29120' + + 'EPSG:29121' + + 'EPSG:29122' + + 'EPSG:29168' + + 'EPSG:29169' + + 'EPSG:29170' + + 'EPSG:29171' + + 'EPSG:29172' + + 'EPSG:29177' + + 'EPSG:29178' + + 'EPSG:29179' + + 'EPSG:29180' + + 'EPSG:29181' + + 'EPSG:29182' + + 'EPSG:29183' + + 'EPSG:29184' + + 'EPSG:29185' + + 'EPSG:29187' + + 'EPSG:29188' + + 'EPSG:29189' + + 'EPSG:29190' + + 'EPSG:29191' + + 'EPSG:29192' + + 'EPSG:29193' + + 'EPSG:29194' + + 'EPSG:29195' + + 'EPSG:29220' + + 'EPSG:29221' + + 'EPSG:29333' + + 'EPSG:29371' + + 'EPSG:29373' + + 'EPSG:29375' + + 'EPSG:29377' + + 'EPSG:29379' + + 'EPSG:29381' + + 'EPSG:29383' + + 'EPSG:29385' + + 'EPSG:29635' + + 'EPSG:29636' + + 'EPSG:29700' + + 'EPSG:29701' + + 'EPSG:29702' + + 'EPSG:29738' + + 'EPSG:29739' + + 'EPSG:29849' + + 'EPSG:29850' + + 'EPSG:29871' + + 'EPSG:29872' + + 'EPSG:29873' + + 'EPSG:29900' + + 'EPSG:29901' + + 'EPSG:29902' + + 'EPSG:29903' + + 'EPSG:30161' + + 'EPSG:30162' + + 'EPSG:30163' + + 'EPSG:30164' + + 'EPSG:30165' + + 'EPSG:30166' + + 'EPSG:30167' + + 'EPSG:30168' + + 'EPSG:30169' + + 'EPSG:30170' + + 'EPSG:30171' + + 'EPSG:30172' + + 'EPSG:30173' + + 'EPSG:30174' + + 'EPSG:30175' + + 'EPSG:30176' + + 'EPSG:30177' + + 'EPSG:30178' + + 'EPSG:30179' + + 'EPSG:30200' + + 'EPSG:30339' + + 'EPSG:30340' + + 'EPSG:30491' + + 'EPSG:30492' + + 'EPSG:30493' + + 'EPSG:30494' + + 'EPSG:30729' + + 'EPSG:30730' + + 'EPSG:30731' + + 'EPSG:30732' + + 'EPSG:30791' + + 'EPSG:30792' + + 'EPSG:30800' + + 'EPSG:31028' + + 'EPSG:31121' + + 'EPSG:31154' + + 'EPSG:31170' + + 'EPSG:31171' + + 'EPSG:31251' + + 'EPSG:31252' + + 'EPSG:31253' + + 'EPSG:31254' + + 'EPSG:31255' + + 'EPSG:31256' + + 'EPSG:31257' + + 'EPSG:31258' + + 'EPSG:31259' + + 'EPSG:31265' + + 'EPSG:31266' + + 'EPSG:31267' + + 'EPSG:31268' + + 'EPSG:31275' + + 'EPSG:31276' + + 'EPSG:31277' + + 'EPSG:31278' + + 'EPSG:31279' + + 'EPSG:31281' + + 'EPSG:31282' + + 'EPSG:31283' + + 'EPSG:31284' + + 'EPSG:31285' + + 'EPSG:31286' + + 'EPSG:31287' + + 'EPSG:31288' + + 'EPSG:31289' + + 'EPSG:31290' + + 'EPSG:31291' + + 'EPSG:31292' + + 'EPSG:31293' + + 'EPSG:31294' + + 'EPSG:31295' + + 'EPSG:31296' + + 'EPSG:31297' + + 'EPSG:31300' + + 'EPSG:31370' + + 'EPSG:31461' + + 'EPSG:31462' + + 'EPSG:31463' + + 'EPSG:31464' + + 'EPSG:31465' + + 'EPSG:31466' + + 'EPSG:31467' + + 'EPSG:31468' + + 'EPSG:31469' + + 'EPSG:31528' + + 'EPSG:31529' + + 'EPSG:31600' + + 'EPSG:31700' + + 'EPSG:31838' + + 'EPSG:31839' + + 'EPSG:31900' + + 'EPSG:31901' + + 'EPSG:31965' + + 'EPSG:31966' + + 'EPSG:31967' + + 'EPSG:31968' + + 'EPSG:31969' + + 'EPSG:31970' + + 'EPSG:31971' + + 'EPSG:31972' + + 'EPSG:31973' + + 'EPSG:31974' + + 'EPSG:31975' + + 'EPSG:31976' + + 'EPSG:31977' + + 'EPSG:31978' + + 'EPSG:31979' + + 'EPSG:31980' + + 'EPSG:31981' + + 'EPSG:31982' + + 'EPSG:31983' + + 'EPSG:31984' + + 'EPSG:31985' + + 'EPSG:31986' + + 'EPSG:31987' + + 'EPSG:31988' + + 'EPSG:31989' + + 'EPSG:31990' + + 'EPSG:31991' + + 'EPSG:31992' + + 'EPSG:31993' + + 'EPSG:31994' + + 'EPSG:31995' + + 'EPSG:31996' + + 'EPSG:31997' + + 'EPSG:31998' + + 'EPSG:31999' + + 'EPSG:32000' + + 'EPSG:32001' + + 'EPSG:32002' + + 'EPSG:32003' + + 'EPSG:32005' + + 'EPSG:32006' + + 'EPSG:32007' + + 'EPSG:32008' + + 'EPSG:32009' + + 'EPSG:32010' + + 'EPSG:32011' + + 'EPSG:32012' + + 'EPSG:32013' + + 'EPSG:32014' + + 'EPSG:32015' + + 'EPSG:32016' + + 'EPSG:32017' + + 'EPSG:32018' + + 'EPSG:32019' + + 'EPSG:32020' + + 'EPSG:32021' + + 'EPSG:32022' + + 'EPSG:32023' + + 'EPSG:32024' + + 'EPSG:32025' + + 'EPSG:32026' + + 'EPSG:32027' + + 'EPSG:32028' + + 'EPSG:32029' + + 'EPSG:32030' + + 'EPSG:32031' + + 'EPSG:32033' + + 'EPSG:32034' + + 'EPSG:32035' + + 'EPSG:32036' + + 'EPSG:32037' + + 'EPSG:32038' + + 'EPSG:32039' + + 'EPSG:32040' + + 'EPSG:32041' + + 'EPSG:32042' + + 'EPSG:32043' + + 'EPSG:32044' + + 'EPSG:32045' + + 'EPSG:32046' + + 'EPSG:32047' + + 'EPSG:32048' + + 'EPSG:32049' + + 'EPSG:32050' + + 'EPSG:32051' + + 'EPSG:32052' + + 'EPSG:32053' + + 'EPSG:32054' + + 'EPSG:32055' + + 'EPSG:32056' + + 'EPSG:32057' + + 'EPSG:32058' + + 'EPSG:32061' + + 'EPSG:32062' + + 'EPSG:32064' + + 'EPSG:32065' + + 'EPSG:32066' + + 'EPSG:32067' + + 'EPSG:32074' + + 'EPSG:32075' + + 'EPSG:32076' + + 'EPSG:32077' + + 'EPSG:32081' + + 'EPSG:32082' + + 'EPSG:32083' + + 'EPSG:32084' + + 'EPSG:32085' + + 'EPSG:32086' + + 'EPSG:32098' + + 'EPSG:32099' + + 'EPSG:32100' + + 'EPSG:32104' + + 'EPSG:32107' + + 'EPSG:32108' + + 'EPSG:32109' + + 'EPSG:32110' + + 'EPSG:32111' + + 'EPSG:32112' + + 'EPSG:32113' + + 'EPSG:32114' + + 'EPSG:32115' + + 'EPSG:32116' + + 'EPSG:32117' + + 'EPSG:32118' + + 'EPSG:32119' + + 'EPSG:32120' + + 'EPSG:32121' + + 'EPSG:32122' + + 'EPSG:32123' + + 'EPSG:32124' + + 'EPSG:32125' + + 'EPSG:32126' + + 'EPSG:32127' + + 'EPSG:32128' + + 'EPSG:32129' + + 'EPSG:32130' + + 'EPSG:32133' + + 'EPSG:32134' + + 'EPSG:32135' + + 'EPSG:32136' + + 'EPSG:32137' + + 'EPSG:32138' + + 'EPSG:32139' + + 'EPSG:32140' + + 'EPSG:32141' + + 'EPSG:32142' + + 'EPSG:32143' + + 'EPSG:32144' + + 'EPSG:32145' + + 'EPSG:32146' + + 'EPSG:32147' + + 'EPSG:32148' + + 'EPSG:32149' + + 'EPSG:32150' + + 'EPSG:32151' + + 'EPSG:32152' + + 'EPSG:32153' + + 'EPSG:32154' + + 'EPSG:32155' + + 'EPSG:32156' + + 'EPSG:32157' + + 'EPSG:32158' + + 'EPSG:32161' + + 'EPSG:32164' + + 'EPSG:32165' + + 'EPSG:32166' + + 'EPSG:32167' + + 'EPSG:32180' + + 'EPSG:32181' + + 'EPSG:32182' + + 'EPSG:32183' + + 'EPSG:32184' + + 'EPSG:32185' + + 'EPSG:32186' + + 'EPSG:32187' + + 'EPSG:32188' + + 'EPSG:32189' + + 'EPSG:32190' + + 'EPSG:32191' + + 'EPSG:32192' + + 'EPSG:32193' + + 'EPSG:32194' + + 'EPSG:32195' + + 'EPSG:32196' + + 'EPSG:32197' + + 'EPSG:32198' + + 'EPSG:32199' + + 'EPSG:32201' + + 'EPSG:32202' + + 'EPSG:32203' + + 'EPSG:32204' + + 'EPSG:32205' + + 'EPSG:32206' + + 'EPSG:32207' + + 'EPSG:32208' + + 'EPSG:32209' + + 'EPSG:32210' + + 'EPSG:32211' + + 'EPSG:32212' + + 'EPSG:32213' + + 'EPSG:32214' + + 'EPSG:32215' + + 'EPSG:32216' + + 'EPSG:32217' + + 'EPSG:32218' + + 'EPSG:32219' + + 'EPSG:32220' + + 'EPSG:32221' + + 'EPSG:32222' + + 'EPSG:32223' + + 'EPSG:32224' + + 'EPSG:32225' + + 'EPSG:32226' + + 'EPSG:32227' + + 'EPSG:32228' + + 'EPSG:32229' + + 'EPSG:32230' + + 'EPSG:32231' + + 'EPSG:32232' + + 'EPSG:32233' + + 'EPSG:32234' + + 'EPSG:32235' + + 'EPSG:32236' + + 'EPSG:32237' + + 'EPSG:32238' + + 'EPSG:32239' + + 'EPSG:32240' + + 'EPSG:32241' + + 'EPSG:32242' + + 'EPSG:32243' + + 'EPSG:32244' + + 'EPSG:32245' + + 'EPSG:32246' + + 'EPSG:32247' + + 'EPSG:32248' + + 'EPSG:32249' + + 'EPSG:32250' + + 'EPSG:32251' + + 'EPSG:32252' + + 'EPSG:32253' + + 'EPSG:32254' + + 'EPSG:32255' + + 'EPSG:32256' + + 'EPSG:32257' + + 'EPSG:32258' + + 'EPSG:32259' + + 'EPSG:32260' + + 'EPSG:32301' + + 'EPSG:32302' + + 'EPSG:32303' + + 'EPSG:32304' + + 'EPSG:32305' + + 'EPSG:32306' + + 'EPSG:32307' + + 'EPSG:32308' + + 'EPSG:32309' + + 'EPSG:32310' + + 'EPSG:32311' + + 'EPSG:32312' + + 'EPSG:32313' + + 'EPSG:32314' + + 'EPSG:32315' + + 'EPSG:32316' + + 'EPSG:32317' + + 'EPSG:32318' + + 'EPSG:32319' + + 'EPSG:32320' + + 'EPSG:32321' + + 'EPSG:32322' + + 'EPSG:32323' + + 'EPSG:32324' + + 'EPSG:32325' + + 'EPSG:32326' + + 'EPSG:32327' + + 'EPSG:32328' + + 'EPSG:32329' + + 'EPSG:32330' + + 'EPSG:32331' + + 'EPSG:32332' + + 'EPSG:32333' + + 'EPSG:32334' + + 'EPSG:32335' + + 'EPSG:32336' + + 'EPSG:32337' + + 'EPSG:32338' + + 'EPSG:32339' + + 'EPSG:32340' + + 'EPSG:32341' + + 'EPSG:32342' + + 'EPSG:32343' + + 'EPSG:32344' + + 'EPSG:32345' + + 'EPSG:32346' + + 'EPSG:32347' + + 'EPSG:32348' + + 'EPSG:32349' + + 'EPSG:32350' + + 'EPSG:32351' + + 'EPSG:32352' + + 'EPSG:32353' + + 'EPSG:32354' + + 'EPSG:32355' + + 'EPSG:32356' + + 'EPSG:32357' + + 'EPSG:32358' + + 'EPSG:32359' + + 'EPSG:32360' + + 'EPSG:32401' + + 'EPSG:32402' + + 'EPSG:32403' + + 'EPSG:32404' + + 'EPSG:32405' + + 'EPSG:32406' + + 'EPSG:32407' + + 'EPSG:32408' + + 'EPSG:32409' + + 'EPSG:32410' + + 'EPSG:32411' + + 'EPSG:32412' + + 'EPSG:32413' + + 'EPSG:32414' + + 'EPSG:32415' + + 'EPSG:32416' + + 'EPSG:32417' + + 'EPSG:32418' + + 'EPSG:32419' + + 'EPSG:32420' + + 'EPSG:32421' + + 'EPSG:32422' + + 'EPSG:32423' + + 'EPSG:32424' + + 'EPSG:32425' + + 'EPSG:32426' + + 'EPSG:32427' + + 'EPSG:32428' + + 'EPSG:32429' + + 'EPSG:32430' + + 'EPSG:32431' + + 'EPSG:32432' + + 'EPSG:32433' + + 'EPSG:32434' + + 'EPSG:32435' + + 'EPSG:32436' + + 'EPSG:32437' + + 'EPSG:32438' + + 'EPSG:32439' + + 'EPSG:32440' + + 'EPSG:32441' + + 'EPSG:32442' + + 'EPSG:32443' + + 'EPSG:32444' + + 'EPSG:32445' + + 'EPSG:32446' + + 'EPSG:32447' + + 'EPSG:32448' + + 'EPSG:32449' + + 'EPSG:32450' + + 'EPSG:32451' + + 'EPSG:32452' + + 'EPSG:32453' + + 'EPSG:32454' + + 'EPSG:32455' + + 'EPSG:32456' + + 'EPSG:32457' + + 'EPSG:32458' + + 'EPSG:32459' + + 'EPSG:32460' + + 'EPSG:32501' + + 'EPSG:32502' + + 'EPSG:32503' + + 'EPSG:32504' + + 'EPSG:32505' + + 'EPSG:32506' + + 'EPSG:32507' + + 'EPSG:32508' + + 'EPSG:32509' + + 'EPSG:32510' + + 'EPSG:32511' + + 'EPSG:32512' + + 'EPSG:32513' + + 'EPSG:32514' + + 'EPSG:32515' + + 'EPSG:32516' + + 'EPSG:32517' + + 'EPSG:32518' + + 'EPSG:32519' + + 'EPSG:32520' + + 'EPSG:32521' + + 'EPSG:32522' + + 'EPSG:32523' + + 'EPSG:32524' + + 'EPSG:32525' + + 'EPSG:32526' + + 'EPSG:32527' + + 'EPSG:32528' + + 'EPSG:32529' + + 'EPSG:32530' + + 'EPSG:32531' + + 'EPSG:32532' + + 'EPSG:32533' + + 'EPSG:32534' + + 'EPSG:32535' + + 'EPSG:32536' + + 'EPSG:32537' + + 'EPSG:32538' + + 'EPSG:32539' + + 'EPSG:32540' + + 'EPSG:32541' + + 'EPSG:32542' + + 'EPSG:32543' + + 'EPSG:32544' + + 'EPSG:32545' + + 'EPSG:32546' + + 'EPSG:32547' + + 'EPSG:32548' + + 'EPSG:32549' + + 'EPSG:32550' + + 'EPSG:32551' + + 'EPSG:32552' + + 'EPSG:32553' + + 'EPSG:32554' + + 'EPSG:32555' + + 'EPSG:32556' + + 'EPSG:32557' + + 'EPSG:32558' + + 'EPSG:32559' + + 'EPSG:32560' + + 'EPSG:32600' + + 'EPSG:32601' + + 'EPSG:32602' + + 'EPSG:32603' + + 'EPSG:32604' + + 'EPSG:32605' + + 'EPSG:32606' + + 'EPSG:32607' + + 'EPSG:32608' + + 'EPSG:32609' + + 'EPSG:32610' + + 'EPSG:32611' + + 'EPSG:32612' + + 'EPSG:32613' + + 'EPSG:32614' + + 'EPSG:32615' + + 'EPSG:32616' + + 'EPSG:32617' + + 'EPSG:32618' + + 'EPSG:32619' + + 'EPSG:32620' + + 'EPSG:32621' + + 'EPSG:32622' + + 'EPSG:32623' + + 'EPSG:32624' + + 'EPSG:32625' + + 'EPSG:32626' + + 'EPSG:32627' + + 'EPSG:32628' + + 'EPSG:32629' + + 'EPSG:32630' + + 'EPSG:32631' + + 'EPSG:32632' + + 'EPSG:32633' + + 'EPSG:32634' + + 'EPSG:32635' + + 'EPSG:32636' + + 'EPSG:32637' + + 'EPSG:32638' + + 'EPSG:32639' + + 'EPSG:32640' + + 'EPSG:32641' + + 'EPSG:32642' + + 'EPSG:32643' + + 'EPSG:32644' + + 'EPSG:32645' + + 'EPSG:32646' + + 'EPSG:32647' + + 'EPSG:32648' + + 'EPSG:32649' + + 'EPSG:32650' + + 'EPSG:32651' + + 'EPSG:32652' + + 'EPSG:32653' + + 'EPSG:32654' + + 'EPSG:32655' + + 'EPSG:32656' + + 'EPSG:32657' + + 'EPSG:32658' + + 'EPSG:32659' + + 'EPSG:32660' + + 'EPSG:32661' + + 'EPSG:32662' + + 'EPSG:32664' + + 'EPSG:32665' + + 'EPSG:32666' + + 'EPSG:32667' + + 'EPSG:32700' + + 'EPSG:32701' + + 'EPSG:32702' + + 'EPSG:32703' + + 'EPSG:32704' + + 'EPSG:32705' + + 'EPSG:32706' + + 'EPSG:32707' + + 'EPSG:32708' + + 'EPSG:32709' + + 'EPSG:32710' + + 'EPSG:32711' + + 'EPSG:32712' + + 'EPSG:32713' + + 'EPSG:32714' + + 'EPSG:32715' + + 'EPSG:32716' + + 'EPSG:32717' + + 'EPSG:32718' + + 'EPSG:32719' + + 'EPSG:32720' + + 'EPSG:32721' + + 'EPSG:32722' + + 'EPSG:32723' + + 'EPSG:32724' + + 'EPSG:32725' + + 'EPSG:32726' + + 'EPSG:32727' + + 'EPSG:32728' + + 'EPSG:32729' + + 'EPSG:32730' + + 'EPSG:32731' + + 'EPSG:32732' + + 'EPSG:32733' + + 'EPSG:32734' + + 'EPSG:32735' + + 'EPSG:32736' + + 'EPSG:32737' + + 'EPSG:32738' + + 'EPSG:32739' + + 'EPSG:32740' + + 'EPSG:32741' + + 'EPSG:32742' + + 'EPSG:32743' + + 'EPSG:32744' + + 'EPSG:32745' + + 'EPSG:32746' + + 'EPSG:32747' + + 'EPSG:32748' + + 'EPSG:32749' + + 'EPSG:32750' + + 'EPSG:32751' + + 'EPSG:32752' + + 'EPSG:32753' + + 'EPSG:32754' + + 'EPSG:32755' + + 'EPSG:32756' + + 'EPSG:32757' + + 'EPSG:32758' + + 'EPSG:32759' + + 'EPSG:32760' + + 'EPSG:32761' + + 'EPSG:32766' + + 'EPSG:61206405' + + 'EPSG:61216405' + + 'EPSG:61226405' + + 'EPSG:61236405' + + 'EPSG:61246405' + + 'EPSG:61266405' + + 'EPSG:61266413' + + 'EPSG:61276405' + + 'EPSG:61286405' + + 'EPSG:61296405' + + 'EPSG:61306405' + + 'EPSG:61306413' + + 'EPSG:61316405' + + 'EPSG:61326405' + + 'EPSG:61336405' + + 'EPSG:61346405' + + 'EPSG:61356405' + + 'EPSG:61366405' + + 'EPSG:61376405' + + 'EPSG:61386405' + + 'EPSG:61396405' + + 'EPSG:61406405' + + 'EPSG:61406413' + + 'EPSG:61416405' + + 'EPSG:61426405' + + 'EPSG:61436405' + + 'EPSG:61446405' + + 'EPSG:61456405' + + 'EPSG:61466405' + + 'EPSG:61476405' + + 'EPSG:61486405' + + 'EPSG:61486413' + + 'EPSG:61496405' + + 'EPSG:61506405' + + 'EPSG:61516405' + + 'EPSG:61516413' + + 'EPSG:61526405' + + 'EPSG:61526413' + + 'EPSG:61536405' + + 'EPSG:61546405' + + 'EPSG:61556405' + + 'EPSG:61566405' + + 'EPSG:61576405' + + 'EPSG:61586405' + + 'EPSG:61596405' + + 'EPSG:61606405' + + 'EPSG:61616405' + + 'EPSG:61626405' + + 'EPSG:61636405' + + 'EPSG:61636413' + + 'EPSG:61646405' + + 'EPSG:61656405' + + 'EPSG:61666405' + + 'EPSG:61676405' + + 'EPSG:61676413' + + 'EPSG:61686405' + + 'EPSG:61696405' + + 'EPSG:61706405' + + 'EPSG:61706413' + + 'EPSG:61716405' + + 'EPSG:61716413' + + 'EPSG:61736405' + + 'EPSG:61736413' + + 'EPSG:61746405' + + 'EPSG:61756405' + + 'EPSG:61766405' + + 'EPSG:61766413' + + 'EPSG:61786405' + + 'EPSG:61796405' + + 'EPSG:61806405' + + 'EPSG:61806413' + + 'EPSG:61816405' + + 'EPSG:61826405' + + 'EPSG:61836405' + + 'EPSG:61846405' + + 'EPSG:61886405' + + 'EPSG:61896405' + + 'EPSG:61896413' + + 'EPSG:61906405' + + 'EPSG:61906413' + + 'EPSG:61916405' + + 'EPSG:61926405' + + 'EPSG:61936405' + + 'EPSG:61946405' + + 'EPSG:61956405' + + 'EPSG:61966405' + + 'EPSG:61976405' + + 'EPSG:61986405' + + 'EPSG:61996405' + + 'EPSG:62006405' + + 'EPSG:62016405' + + 'EPSG:62026405' + + 'EPSG:62036405' + + 'EPSG:62046405' + + 'EPSG:62056405' + + 'EPSG:62066405' + + 'EPSG:62076405' + + 'EPSG:62086405' + + 'EPSG:62096405' + + 'EPSG:62106405' + + 'EPSG:62116405' + + 'EPSG:62126405' + + 'EPSG:62136405' + + 'EPSG:62146405' + + 'EPSG:62156405' + + 'EPSG:62166405' + + 'EPSG:62186405' + + 'EPSG:62196405' + + 'EPSG:62206405' + + 'EPSG:62216405' + + 'EPSG:62226405' + + 'EPSG:62236405' + + 'EPSG:62246405' + + 'EPSG:62256405' + + 'EPSG:62276405' + + 'EPSG:62296405' + + 'EPSG:62306405' + + 'EPSG:62316405' + + 'EPSG:62326405' + + 'EPSG:62336405' + + 'EPSG:62366405' + + 'EPSG:62376405' + + 'EPSG:62386405' + + 'EPSG:62396405' + + 'EPSG:62406405' + + 'EPSG:62416405' + + 'EPSG:62426405' + + 'EPSG:62436405' + + 'EPSG:62446405' + + 'EPSG:62456405' + + 'EPSG:62466405' + + 'EPSG:62476405' + + 'EPSG:62486405' + + 'EPSG:62496405' + + 'EPSG:62506405' + + 'EPSG:62516405' + + 'EPSG:62526405' + + 'EPSG:62536405' + + 'EPSG:62546405' + + 'EPSG:62556405' + + 'EPSG:62566405' + + 'EPSG:62576405' + + 'EPSG:62586405' + + 'EPSG:62586413' + + 'EPSG:62596405' + + 'EPSG:62616405' + + 'EPSG:62626405' + + 'EPSG:62636405' + + 'EPSG:62646405' + + 'EPSG:62656405' + + 'EPSG:62666405' + + 'EPSG:62676405' + + 'EPSG:62686405' + + 'EPSG:62696405' + + 'EPSG:62706405' + + 'EPSG:62716405' + + 'EPSG:62726405' + + 'EPSG:62736405' + + 'EPSG:62746405' + + 'EPSG:62756405' + + 'EPSG:62766405' + + 'EPSG:62776405' + + 'EPSG:62786405' + + 'EPSG:62796405' + + 'EPSG:62806405' + + 'EPSG:62816405' + + 'EPSG:62826405' + + 'EPSG:62836405' + + 'EPSG:62836413' + + 'EPSG:62846405' + + 'EPSG:62856405' + + 'EPSG:62866405' + + 'EPSG:62886405' + + 'EPSG:62896405' + + 'EPSG:62926405' + + 'EPSG:62936405' + + 'EPSG:62956405' + + 'EPSG:62976405' + + 'EPSG:62986405' + + 'EPSG:62996405' + + 'EPSG:63006405' + + 'EPSG:63016405' + + 'EPSG:63026405' + + 'EPSG:63036405' + + 'EPSG:63046405' + + 'EPSG:63066405' + + 'EPSG:63076405' + + 'EPSG:63086405' + + 'EPSG:63096405' + + 'EPSG:63106405' + + 'EPSG:63116405' + + 'EPSG:63126405' + + 'EPSG:63136405' + + 'EPSG:63146405' + + 'EPSG:63156405' + + 'EPSG:63166405' + + 'EPSG:63176405' + + 'EPSG:63186405' + + 'EPSG:63196405' + + 'EPSG:63226405' + + 'EPSG:63246405' + + 'EPSG:63266405' + + 'EPSG:63266406' + + 'EPSG:63266407' + + 'EPSG:63266408' + + 'EPSG:63266409' + + 'EPSG:63266410' + + 'EPSG:63266411' + + 'EPSG:63266412' + + 'EPSG:63266413' + + 'EPSG:63266414' + + 'EPSG:63266415' + + 'EPSG:63266416' + + 'EPSG:63266417' + + 'EPSG:63266418' + + 'EPSG:63266419' + + 'EPSG:63266420' + + 'EPSG:66006405' + + 'EPSG:66016405' + + 'EPSG:66026405' + + 'EPSG:66036405' + + 'EPSG:66046405' + + 'EPSG:66056405' + + 'EPSG:66066405' + + 'EPSG:66076405' + + 'EPSG:66086405' + + 'EPSG:66096405' + + 'EPSG:66106405' + + 'EPSG:66116405' + + 'EPSG:66126405' + + 'EPSG:66126413' + + 'EPSG:66136405' + + 'EPSG:66146405' + + 'EPSG:66156405' + + 'EPSG:66166405' + + 'EPSG:66186405' + + 'EPSG:66196405' + + 'EPSG:66196413' + + 'EPSG:66206405' + + 'EPSG:66216405' + + 'EPSG:66226405' + + 'EPSG:66236405' + + 'EPSG:66246405' + + 'EPSG:66246413' + + 'EPSG:66256405' + + 'EPSG:66266405' + + 'EPSG:66276405' + + 'EPSG:66276413' + + 'EPSG:66286405' + + 'EPSG:66296405' + + 'EPSG:66306405' + + 'EPSG:66316405' + + 'EPSG:66326405' + + 'EPSG:66336405' + + 'EPSG:66346405' + + 'EPSG:66356405' + + 'EPSG:66366405' + + 'EPSG:66376405' + + 'EPSG:66386405' + + 'EPSG:66396405' + + 'EPSG:66406405' + + 'EPSG:66406413' + + 'EPSG:66416405' + + 'EPSG:66426405' + + 'EPSG:66436405' + + 'EPSG:66446405' + + 'EPSG:66456405' + + 'EPSG:66456413' + + 'EPSG:66466405' + + 'EPSG:66576405' + + 'EPSG:66586405' + + 'EPSG:66596405' + + 'EPSG:66596413' + + 'EPSG:66606405' + + 'EPSG:66616405' + + 'EPSG:66616413' + + 'EPSG:66636405' + + 'EPSG:66646405' + + 'EPSG:66656405' + + 'EPSG:66666405' + + 'EPSG:66676405' + + 'EPSG:68016405' + + 'EPSG:68026405' + + 'EPSG:68036405' + + 'EPSG:68046405' + + 'EPSG:68056405' + + 'EPSG:68066405' + + 'EPSG:68086405' + + 'EPSG:68096405' + + 'EPSG:68136405' + + 'EPSG:68146405' + + 'EPSG:68156405' + + 'EPSG:68186405' + + 'EPSG:68206405' + + 'EPSG:69036405' + + 'EPSG:42302' + + 'EPSG:42301' + + 'EPSG:900913' + + 'EPSG:45556' + + 'EPSG:45555' + + 'EPSG:54004' + + 'EPSG:41001' + + 'EPSG:42311' + + 'EPSG:42310' + + 'EPSG:18001' + + 'EPSG:100003' + + 'EPSG:42106' + + 'EPSG:100002' + + 'EPSG:42105' + + 'EPSG:100001' + + 'EPSG:42309' + + 'EPSG:42104' + + 'EPSG:42308' + + 'EPSG:42103' + + 'EPSG:42307' + + 'EPSG:42102' + + 'EPSG:42306' + + 'EPSG:42101' + + 'EPSG:42305' + + 'EPSG:42304' + + 'EPSG:42303' + + '' + + '' + + 'tiger:poly_landmarks' + + 'Manhattan (NY) landmarks' + + 'Manhattan landmarks, identifies water, lakes, parks, interesting buildilngs' + + '' + + 'DS_poly_landmarks' + + 'poly_landmarks' + + 'landmarks' + + 'manhattan' + + '' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + '' + + '' + + 'tiger:poi' + + 'Manhattan (NY) points of interest' + + 'Points of interest in New York, New York (on Manhattan). One of the attributes contains the name of a file with a picture of the point of interest.' + + '' + + 'poi' + + 'DS_poi' + + 'points_of_interest' + + 'Manhattan' + + '' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + '' + + '' + + 'tiger:tiger_roads' + + 'Manhattan (NY) roads' + + 'Highly simplified road layout of Manhattan in New York..' + + '' + + 'DS_tiger_roads' + + 'tiger_roads' + + 'roads' + + '' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + '' + + '' + + 'sf:archsites' + + 'Spearfish archeological sites' + + 'Sample data from GRASS, archeological sites location, Spearfish, South Dakota, USA' + + '' + + 'archsites' + + 'sfArchsites' + + 'spearfish' + + 'archeology' + + '' + + 'EPSG:26713' + + '' + + '' + + '' + + '' + + '' + + '' + + 'sf:bugsites' + + 'Spearfish bug locations' + + 'Sample data from GRASS, bug sites location, Spearfish, South Dakota, USA' + + '' + + 'sfBugsites' + + 'bugsites' + + 'insects' + + 'spearfish' + + 'tiger_beetles' + + '' + + 'EPSG:26713' + + '' + + '' + + '' + + '' + + '' + + '' + + 'sf:restricted' + + 'Spearfish restricted areas' + + 'Sample data from GRASS, restricted areas, Spearfish, South Dakota, USA' + + '' + + 'restricted' + + 'sfRestricted' + + 'spearfish' + + 'areas' + + '' + + 'EPSG:26713' + + '' + + '' + + '' + + '' + + '' + + '' + + 'sf:roads' + + 'Spearfish roads' + + 'Sample data from GRASS, road layout, Spearfish, South Dakota, USA' + + '' + + 'sfRoads' + + 'roads' + + 'spearfish' + + '' + + 'EPSG:26713' + + '' + + '' + + '' + + '' + + '' + + '' + + 'sf:streams' + + 'Spearfish streams' + + 'Sample data from GRASS, streams, Spearfish, South Dakota, USA' + + '' + + 'sfStreams' + + 'streams' + + 'spearfish' + + '' + + 'EPSG:26713' + + '' + + '' + + '' + + '' + + '' + + '' + + 'topp:tasmania_cities' + + 'Tasmania cities' + + 'Cities in Tasmania (actually, just the capital)' + + '' + + 'cities' + + 'Tasmania' + + '' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + '' + + '' + + 'topp:tasmania_roads' + + 'Tasmania roads' + + 'Main Tasmania roads' + + '' + + 'Roads' + + 'Tasmania' + + '' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + '' + + '' + + 'topp:tasmania_state_boundaries' + + 'Tasmania state boundaries' + + 'Tasmania state boundaries' + + '' + + 'tasmania_state_boundaries' + + 'Tasmania' + + 'boundaries' + + '' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + '' + + '' + + 'topp:tasmania_water_bodies' + + 'Tasmania water bodies' + + 'Tasmania water bodies' + + '' + + 'Lakes' + + 'Bodies' + + 'Australia' + + 'Water' + + 'Tasmania' + + '' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + '' + + '' + + 'topp:states' + + 'USA Population' + + 'This is some census data on the states.' + + '' + + 'census' + + 'united' + + 'boundaries' + + 'state' + + 'states' + + '' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + '' + + '' + + 'tiger:giant_polygon' + + 'World rectangle' + + 'A simple rectangular polygon covering most of the world, it\'s only used for the purpose of providing a background (WMS bgcolor could be used instead)' + + '' + + 'DS_giant_polygon' + + 'giant_polygon' + + '' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + '' + + '' + + 'nurc:Arc_Sample' + + 'Global annual rainfall' + + 'Global annual rainfall in ArcGrid format' + + '' + + 'WCS' + + 'arcGridSample' + + 'arcGridSample_Coverage' + + '' + + '' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + '' + + 'nurc:Img_Sample' + + 'North America sample imagery' + + 'A very rough imagery of North America' + + '' + + 'WCS' + + 'worldImageSample' + + 'worldImageSample_Coverage' + + '' + + '' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + '' + + 'nurc:mosaic' + + 'Sample PNG mosaic' + + 'Subsampled satellite imagery loaded as a mosaic of PNG images' + + '' + + 'WCS' + + 'mosaic' + + 'mosaic' + + '' + + '' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + '' + + 'nurc:Pk50095' + + 'Sample scanned and georerenced map' + + 'This is a sample for the world image format (wld + prj + tiff)' + + '' + + 'WCS' + + 'img_sample2' + + 'Pk50095' + + '' + + '' + + 'EPSG:32633' + + '' + + '' + + '' + + '' + + '' + + 'sf:sfdem' + + 'sfdem is a Tagged Image File Format with Geographic information' + + 'Generated from sfdem' + + '' + + 'WCS' + + 'sfdem' + + 'sfdem' + + '' + + '' + + 'EPSG:26713' + + '' + + '' + + '' + + '' + + '' + + 'spearfish' + + 'spearfish' + + 'Layer-Group type layer: spearfish' + + 'EPSG:26713' + + '' + + '' + + '' + + '' + + 'tasmania' + + 'tasmania' + + 'Layer-Group type layer: tasmania' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + 'tiger-ny' + + 'tiger-ny' + + 'Layer-Group type layer: tiger-ny' + + 'EPSG:4326' + + '' + + '' + + '' + + '' + + '' + + '' +); diff --git a/openlayers/tests/Format/WMSDescribeLayer.html b/openlayers/tests/Format/WMSDescribeLayer.html new file mode 100644 index 0000000..7c962a6 --- /dev/null +++ b/openlayers/tests/Format/WMSDescribeLayer.html @@ -0,0 +1,38 @@ + + + + + + + + diff --git a/openlayers/tests/Format/WMSGetFeatureInfo.html b/openlayers/tests/Format/WMSGetFeatureInfo.html new file mode 100644 index 0000000..07ea171 --- /dev/null +++ b/openlayers/tests/Format/WMSGetFeatureInfo.html @@ -0,0 +1,271 @@ + + + + + + + + diff --git a/openlayers/tests/Format/XML.html b/openlayers/tests/Format/XML.html new file mode 100644 index 0000000..ebd984c --- /dev/null +++ b/openlayers/tests/Format/XML.html @@ -0,0 +1,834 @@ + + + + + + + + diff --git a/openlayers/tests/Geometry.html b/openlayers/tests/Geometry.html new file mode 100644 index 0000000..f133061 --- /dev/null +++ b/openlayers/tests/Geometry.html @@ -0,0 +1,344 @@ + + + + + + + +
+ + diff --git a/openlayers/tests/Geometry/Collection.html b/openlayers/tests/Geometry/Collection.html new file mode 100644 index 0000000..4518295 --- /dev/null +++ b/openlayers/tests/Geometry/Collection.html @@ -0,0 +1,270 @@ + + + + + + + + diff --git a/openlayers/tests/Geometry/Curve.html b/openlayers/tests/Geometry/Curve.html new file mode 100644 index 0000000..194bf09 --- /dev/null +++ b/openlayers/tests/Geometry/Curve.html @@ -0,0 +1,157 @@ + + + + + + + + diff --git a/openlayers/tests/Geometry/LineString.html b/openlayers/tests/Geometry/LineString.html new file mode 100644 index 0000000..535a054 --- /dev/null +++ b/openlayers/tests/Geometry/LineString.html @@ -0,0 +1,383 @@ + + + + + + + + diff --git a/openlayers/tests/Geometry/LinearRing.html b/openlayers/tests/Geometry/LinearRing.html new file mode 100644 index 0000000..8e0feb5 --- /dev/null +++ b/openlayers/tests/Geometry/LinearRing.html @@ -0,0 +1,241 @@ + + + + + + + + diff --git a/openlayers/tests/Geometry/MultiLineString.html b/openlayers/tests/Geometry/MultiLineString.html new file mode 100644 index 0000000..0d049de --- /dev/null +++ b/openlayers/tests/Geometry/MultiLineString.html @@ -0,0 +1,267 @@ + + + + + + + + diff --git a/openlayers/tests/Geometry/MultiPoint.html b/openlayers/tests/Geometry/MultiPoint.html new file mode 100644 index 0000000..1fa0696 --- /dev/null +++ b/openlayers/tests/Geometry/MultiPoint.html @@ -0,0 +1,130 @@ + + + + + + + + diff --git a/openlayers/tests/Geometry/MultiPolygon.html b/openlayers/tests/Geometry/MultiPolygon.html new file mode 100644 index 0000000..6b6e355 --- /dev/null +++ b/openlayers/tests/Geometry/MultiPolygon.html @@ -0,0 +1,34 @@ + + + + + + + + diff --git a/openlayers/tests/Geometry/Point.html b/openlayers/tests/Geometry/Point.html new file mode 100644 index 0000000..8932ee2 --- /dev/null +++ b/openlayers/tests/Geometry/Point.html @@ -0,0 +1,214 @@ + + + + + + + + diff --git a/openlayers/tests/Geometry/Polygon.html b/openlayers/tests/Geometry/Polygon.html new file mode 100644 index 0000000..2a5fb36 --- /dev/null +++ b/openlayers/tests/Geometry/Polygon.html @@ -0,0 +1,381 @@ + + + + + + + + diff --git a/openlayers/tests/Geometry/Rectangle.html b/openlayers/tests/Geometry/Rectangle.html new file mode 100644 index 0000000..87e04d7 --- /dev/null +++ b/openlayers/tests/Geometry/Rectangle.html @@ -0,0 +1,76 @@ + + + + + + + + diff --git a/openlayers/tests/Geometry/Surface.html b/openlayers/tests/Geometry/Surface.html new file mode 100644 index 0000000..25e1705 --- /dev/null +++ b/openlayers/tests/Geometry/Surface.html @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/openlayers/tests/Handler.html b/openlayers/tests/Handler.html new file mode 100644 index 0000000..1650065 --- /dev/null +++ b/openlayers/tests/Handler.html @@ -0,0 +1,261 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Handler/Click.html b/openlayers/tests/Handler/Click.html new file mode 100644 index 0000000..0ffa6ff --- /dev/null +++ b/openlayers/tests/Handler/Click.html @@ -0,0 +1,299 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Handler/Drag.html b/openlayers/tests/Handler/Drag.html new file mode 100644 index 0000000..4f93679 --- /dev/null +++ b/openlayers/tests/Handler/Drag.html @@ -0,0 +1,379 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Handler/Feature.html b/openlayers/tests/Handler/Feature.html new file mode 100644 index 0000000..2f1e6de --- /dev/null +++ b/openlayers/tests/Handler/Feature.html @@ -0,0 +1,484 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Handler/Hover.html b/openlayers/tests/Handler/Hover.html new file mode 100644 index 0000000..075aa14 --- /dev/null +++ b/openlayers/tests/Handler/Hover.html @@ -0,0 +1,136 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Handler/Keyboard.html b/openlayers/tests/Handler/Keyboard.html new file mode 100644 index 0000000..0ea739c --- /dev/null +++ b/openlayers/tests/Handler/Keyboard.html @@ -0,0 +1,106 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Handler/MouseWheel.html b/openlayers/tests/Handler/MouseWheel.html new file mode 100644 index 0000000..f5b4933 --- /dev/null +++ b/openlayers/tests/Handler/MouseWheel.html @@ -0,0 +1,136 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Handler/Path.html b/openlayers/tests/Handler/Path.html new file mode 100644 index 0000000..a46a055 --- /dev/null +++ b/openlayers/tests/Handler/Path.html @@ -0,0 +1,186 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Handler/Point.html b/openlayers/tests/Handler/Point.html new file mode 100644 index 0000000..fb10edf --- /dev/null +++ b/openlayers/tests/Handler/Point.html @@ -0,0 +1,227 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Handler/Polygon.html b/openlayers/tests/Handler/Polygon.html new file mode 100644 index 0000000..dba05cb --- /dev/null +++ b/openlayers/tests/Handler/Polygon.html @@ -0,0 +1,201 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Handler/RegularPolygon.html b/openlayers/tests/Handler/RegularPolygon.html new file mode 100644 index 0000000..21e6c36 --- /dev/null +++ b/openlayers/tests/Handler/RegularPolygon.html @@ -0,0 +1,228 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Icon.html b/openlayers/tests/Icon.html new file mode 100644 index 0000000..09f09b8 --- /dev/null +++ b/openlayers/tests/Icon.html @@ -0,0 +1,68 @@ + + + + + + + + diff --git a/openlayers/tests/Lang.html b/openlayers/tests/Lang.html new file mode 100644 index 0000000..3251e34 --- /dev/null +++ b/openlayers/tests/Lang.html @@ -0,0 +1,106 @@ + + + + + + + + + + diff --git a/openlayers/tests/Layer.html b/openlayers/tests/Layer.html new file mode 100644 index 0000000..0b849de --- /dev/null +++ b/openlayers/tests/Layer.html @@ -0,0 +1,513 @@ + + + + + + +
+
+ + diff --git a/openlayers/tests/Layer/ArcGIS93Rest.html b/openlayers/tests/Layer/ArcGIS93Rest.html new file mode 100644 index 0000000..82df0bf --- /dev/null +++ b/openlayers/tests/Layer/ArcGIS93Rest.html @@ -0,0 +1,363 @@ + + + + + + + + +
+ + diff --git a/openlayers/tests/Layer/ArcIMS.html b/openlayers/tests/Layer/ArcIMS.html new file mode 100644 index 0000000..051c5c7 --- /dev/null +++ b/openlayers/tests/Layer/ArcIMS.html @@ -0,0 +1,89 @@ + + + + + + \ No newline at end of file diff --git a/openlayers/tests/Layer/EventPane.html b/openlayers/tests/Layer/EventPane.html new file mode 100644 index 0000000..15d47fd --- /dev/null +++ b/openlayers/tests/Layer/EventPane.html @@ -0,0 +1,130 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/FixedZoomLevels.html b/openlayers/tests/Layer/FixedZoomLevels.html new file mode 100644 index 0000000..9e00cb6 --- /dev/null +++ b/openlayers/tests/Layer/FixedZoomLevels.html @@ -0,0 +1,109 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/GML.html b/openlayers/tests/Layer/GML.html new file mode 100644 index 0000000..8e01e94 --- /dev/null +++ b/openlayers/tests/Layer/GML.html @@ -0,0 +1,60 @@ + + + + + + +
+ + + diff --git a/openlayers/tests/Layer/GeoRSS.html b/openlayers/tests/Layer/GeoRSS.html new file mode 100644 index 0000000..7d33ad3 --- /dev/null +++ b/openlayers/tests/Layer/GeoRSS.html @@ -0,0 +1,210 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/Google.html b/openlayers/tests/Layer/Google.html new file mode 100644 index 0000000..0c77e91 --- /dev/null +++ b/openlayers/tests/Layer/Google.html @@ -0,0 +1,246 @@ + + + + + + + + + + +
+ + diff --git a/openlayers/tests/Layer/Grid.html b/openlayers/tests/Layer/Grid.html new file mode 100644 index 0000000..aeb2f3d --- /dev/null +++ b/openlayers/tests/Layer/Grid.html @@ -0,0 +1,633 @@ + + + + + + + + + + + diff --git a/openlayers/tests/Layer/HTTPRequest.html b/openlayers/tests/Layer/HTTPRequest.html new file mode 100644 index 0000000..88a01f2 --- /dev/null +++ b/openlayers/tests/Layer/HTTPRequest.html @@ -0,0 +1,214 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/Image.html b/openlayers/tests/Layer/Image.html new file mode 100644 index 0000000..3925aab --- /dev/null +++ b/openlayers/tests/Layer/Image.html @@ -0,0 +1,164 @@ + + + + + + +
+
+ + diff --git a/openlayers/tests/Layer/KaMap.html b/openlayers/tests/Layer/KaMap.html new file mode 100644 index 0000000..11573b6 --- /dev/null +++ b/openlayers/tests/Layer/KaMap.html @@ -0,0 +1,287 @@ + + + + + + + + + + + diff --git a/openlayers/tests/Layer/MapGuide.html b/openlayers/tests/Layer/MapGuide.html new file mode 100644 index 0000000..43ebaa2 --- /dev/null +++ b/openlayers/tests/Layer/MapGuide.html @@ -0,0 +1,177 @@ + + + + + + + + + +
+ + diff --git a/openlayers/tests/Layer/MapServer.html b/openlayers/tests/Layer/MapServer.html new file mode 100644 index 0000000..25eb1e8 --- /dev/null +++ b/openlayers/tests/Layer/MapServer.html @@ -0,0 +1,472 @@ + + + + + + + + + + + +
+ + diff --git a/openlayers/tests/Layer/Markers.html b/openlayers/tests/Layer/Markers.html new file mode 100644 index 0000000..6e994f5 --- /dev/null +++ b/openlayers/tests/Layer/Markers.html @@ -0,0 +1,156 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/MultiMap.html b/openlayers/tests/Layer/MultiMap.html new file mode 100644 index 0000000..7de9eda --- /dev/null +++ b/openlayers/tests/Layer/MultiMap.html @@ -0,0 +1,105 @@ + + + + + + + +
+ + diff --git a/openlayers/tests/Layer/PointTrack.html b/openlayers/tests/Layer/PointTrack.html new file mode 100644 index 0000000..b8b70b8 --- /dev/null +++ b/openlayers/tests/Layer/PointTrack.html @@ -0,0 +1,79 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/SphericalMercator.html b/openlayers/tests/Layer/SphericalMercator.html new file mode 100644 index 0000000..460c57e --- /dev/null +++ b/openlayers/tests/Layer/SphericalMercator.html @@ -0,0 +1,95 @@ + + + + + + + + diff --git a/openlayers/tests/Layer/TMS.html b/openlayers/tests/Layer/TMS.html new file mode 100644 index 0000000..b94dd5b --- /dev/null +++ b/openlayers/tests/Layer/TMS.html @@ -0,0 +1,215 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/Text.html b/openlayers/tests/Layer/Text.html new file mode 100644 index 0000000..a287ed1 --- /dev/null +++ b/openlayers/tests/Layer/Text.html @@ -0,0 +1,211 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/TileCache.html b/openlayers/tests/Layer/TileCache.html new file mode 100644 index 0000000..d24a44a --- /dev/null +++ b/openlayers/tests/Layer/TileCache.html @@ -0,0 +1,203 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/Vector.html b/openlayers/tests/Layer/Vector.html new file mode 100644 index 0000000..31e26f8 --- /dev/null +++ b/openlayers/tests/Layer/Vector.html @@ -0,0 +1,556 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/Vector/RootContainer.html b/openlayers/tests/Layer/Vector/RootContainer.html new file mode 100644 index 0000000..982e492 --- /dev/null +++ b/openlayers/tests/Layer/Vector/RootContainer.html @@ -0,0 +1,63 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/WFS.html b/openlayers/tests/Layer/WFS.html new file mode 100644 index 0000000..e44d366 --- /dev/null +++ b/openlayers/tests/Layer/WFS.html @@ -0,0 +1,177 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/WMS.html b/openlayers/tests/Layer/WMS.html new file mode 100644 index 0000000..ee8c743 --- /dev/null +++ b/openlayers/tests/Layer/WMS.html @@ -0,0 +1,407 @@ + + + + + + + + + +
+ + diff --git a/openlayers/tests/Layer/WrapDateLine.html b/openlayers/tests/Layer/WrapDateLine.html new file mode 100644 index 0000000..01ed22f --- /dev/null +++ b/openlayers/tests/Layer/WrapDateLine.html @@ -0,0 +1,182 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/XYZ.html b/openlayers/tests/Layer/XYZ.html new file mode 100644 index 0000000..ae02f79 --- /dev/null +++ b/openlayers/tests/Layer/XYZ.html @@ -0,0 +1,182 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Layer/Yahoo.html b/openlayers/tests/Layer/Yahoo.html new file mode 100755 index 0000000..9059f02 --- /dev/null +++ b/openlayers/tests/Layer/Yahoo.html @@ -0,0 +1,120 @@ + + + + + + + +
+ + diff --git a/openlayers/tests/Layer/atom-1.0.xml b/openlayers/tests/Layer/atom-1.0.xml new file mode 100644 index 0000000..f0d5d6f --- /dev/null +++ b/openlayers/tests/Layer/atom-1.0.xml @@ -0,0 +1,34 @@ + + + + tumulus + + + + http://pleiades.stoa.org/places/tumulus + + + Unnamed Tumulus + + http://pleiades.stoa.org/places/638896 + + An ancient tumulus, attested during the Classical period (modern location: Karaburun). Its ancient name is not known. + 36.7702 29.9805 + + + Unnamed Tumulus + + http://pleiades.stoa.org/places/638924 + + An ancient tumulus, attested during the Classical period (modern location: Kızılbel). Its ancient name is not known. + 36.7263 29.8619 + + + + diff --git a/openlayers/tests/Layer/data_Layer_Text_textfile.txt b/openlayers/tests/Layer/data_Layer_Text_textfile.txt new file mode 100644 index 0000000..8250988 --- /dev/null +++ b/openlayers/tests/Layer/data_Layer_Text_textfile.txt @@ -0,0 +1,3 @@ +point image +10,20 http://boston.openguides.org/markers/ORANGE.png +15,25 http://boston.openguides.org/markers/ORANGE.png diff --git a/openlayers/tests/Layer/data_Layer_Text_textfile_2.txt b/openlayers/tests/Layer/data_Layer_Text_textfile_2.txt new file mode 100644 index 0000000..91a8093 --- /dev/null +++ b/openlayers/tests/Layer/data_Layer_Text_textfile_2.txt @@ -0,0 +1,3 @@ +point title description image +10,20 a b http://boston.openguides.org/markers/ORANGE.png +15,25 c d http://boston.openguides.org/markers/ORANGE.png diff --git a/openlayers/tests/Layer/data_Layer_Text_textfile_overflow.txt b/openlayers/tests/Layer/data_Layer_Text_textfile_overflow.txt new file mode 100644 index 0000000..bb4768e --- /dev/null +++ b/openlayers/tests/Layer/data_Layer_Text_textfile_overflow.txt @@ -0,0 +1,3 @@ +overflow point title description image +auto 10,20 a b http://boston.openguides.org/markers/ORANGE.png +hidden 15,25 c d http://boston.openguides.org/markers/ORANGE.png diff --git a/openlayers/tests/Layer/georss.txt b/openlayers/tests/Layer/georss.txt new file mode 100644 index 0000000..053749b --- /dev/null +++ b/openlayers/tests/Layer/georss.txt @@ -0,0 +1,378 @@ + + + +This is an RSS file. Copy the URL into your aggregator of choice. If you don't know what this means and want to learn more, please see: http://platial.typepad.com/news/2006/04/really_simple_t.html for more info. +http://platial.com +Crschmidt's Places At Platial + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +http://platial.com/place/90306 +Knitting Room +Address: 2 lake St, Arlington, MA
Tags: knitting, yarn, pins and needles, handspun, hand dyed, novelty yarn, fancy, simple, young, hip, friendly, needles, addy, cute hats

Map this on Platial
Grab this on Platial ]]>
+42.405696 -71.142197 +crschmidt +2006-06-08T17:35:01.942452+00:00 +
+ +http://platial.com/place/67230 +Knitting Room +Address: 2 lake St, Arlington, MA
Tags: knitting, yarn, pins and needles, handspun, hand dyed, novelty yarn, fancy, simple, young, hip, friendly, needles, addy, cute hats

Map this on Platial
Grab this on Platial ]]>
+42.405524 -71.142273 +crschmidt +2006-04-24T11:35:26.733857+00:00 +
+ +http://platial.com/place/65645 +†¢¢™£ˆøœ +Address: 151 Erie St., Cambridge, MA
Tags: platial graffiti

Map this on Platial
Grab this on Platial ]]>
+42.352455 -71.110210 +crschmidt +2006-04-20T08:56:12.696224+00:00 +
+ +http://platial.com/place/62200 +Allen Hall +Address: 1301 W Gregory Dr, Urbana, IL
Tags: dorm, uiuc, college



Map this on Platial
Grab this on Platial ]]>
+40.104172 -88.220623 +crschmidt +2006-04-14T08:01:01.872873+00:00 +
+ +http://platial.com/place/28232 +Bagby Hot Springs, OR +Tags: 20s, rosalie, romance, childhood, hike, camping, soak, relax, beautiful, hot springs, bathhouse, favorite, popular, crowded, organized, honeymoon tub, plumbing made from hollowed out trees, hot springs, mt hood, notorious car break in spot, rash, bacteria

Map this on Platial
Grab this on Platial ]]>
+44.936000 -122.173000 +crschmidt +2006-01-03T23:10:18.553063+00:00 +
+ +http://platial.com/place/43666 +Shooting Location for "The Field of Dreams" Film +Address: Dyersville, Iowa
Tags: iowa, baseball, movie locations, field of dreams, kevin costner, costner, dyersville, kinsella, james earl jones, chicago black sox, shoeless joe, joe jackson, famous farms, film, movie, cinema, shooting location

Map this on Platial
Grab this on Platial ]]>
+42.481213 -91.111679 +echinodermata +2006-03-23T11:40:17.654061+00:00 +
+ +http://platial.com/place/28394 +Moffetts (Bonneville) Hot Springs, WA +Tags: soak, hot springs, relax, nature

Map this on Platial
Grab this on Platial ]]>
+45.658000 -121.962000 +crschmidt +2006-01-03T23:16:27.329816+00:00 +
+ +http://platial.com/place/28251 +Austin Hot Springs, OR +Tags: soak, hot springs, relax, nature, popular, crowded

Map this on Platial
Grab this on Platial ]]>
+45.021000 -122.009000 +crschmidt +2006-01-03T23:11:04.489886+00:00 +
+ +http://platial.com/place/28392 +Rock Creek Hot Springs, WA +Tags: soak, hot springs, relax, nature

Map this on Platial
Grab this on Platial ]]>
+45.723000 -121.927000 +crschmidt +2006-01-03T23:16:22.636855+00:00 +
+ +http://platial.com/place/28391 +St. Martins (Wind River) Hot Springs, WA +Tags: hot springs, soak, relax, nature, wonderful

Map this on Platial
Grab this on Platial ]]>
+45.728000 -121.800000 +crschmidt +2006-01-03T23:16:20.383244+00:00 +
+ +http://platial.com/place/28231 +Breitenbush Hot Springs, OR +Tags: hot springs, resort, relax, nature, beautiful, http:www.breitenbush.com, soaking

Map this on Platial
Grab this on Platial ]]>
+44.782000 -121.975000 +crschmidt +2006-01-03T23:10:16.529195+00:00 +
+ +http://platial.com/place/28393 +Collins Hot Springs, WA +Tags: portland, nice, hot springs, soak

Map this on Platial
Grab this on Platial ]]>
+45.701000 -121.728000 +crschmidt +2006-01-03T23:16:24.648745+00:00 +
+ +http://platial.com/place/31685 +Darwin's Ltd. +Address: 148 Mount Auburn St, Cambridge, MA
Tags: coffee, beer, sandwiches, freewifi



Map this on Platial
Grab this on Platial ]]>
+42.373974 -71.125053 +crschmidt +2006-01-10T09:24:08.152985+00:00 +
+ +http://platial.com/place/28596 +Huckleberry Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.115000 -110.684000 +crschmidt +2006-01-03T23:24:32.283094+00:00 +
+ +http://platial.com/place/28595 +South Entrance Hot Springs, WY +


Map this on Platial
Grab this on Platial ]]>
+44.142000 -110.656000 +crschmidt +2006-01-03T23:24:30.279497+00:00 +
+ +http://platial.com/place/28594 +Crawfish Creek Hot Springs, WY +


Map this on Platial
Grab this on Platial ]]>
+44.157000 -110.699000 +crschmidt +2006-01-03T23:24:28.280271+00:00 +
+ +http://platial.com/place/28593 +Crawfish Creek Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.165000 -110.723000 +crschmidt +2006-01-03T23:24:20.364077+00:00 +
+ +http://platial.com/place/28592 +Snake Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.169000 -110.583000 +crschmidt +2006-01-03T23:24:12.234974+00:00 +
+ +http://platial.com/place/28591 +Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.187000 -110.726000 +crschmidt +2006-01-03T23:24:10.027857+00:00 +
+ +http://platial.com/place/28590 +Hot Springs on Upper Snake River, WY +
Map this on Platial
Grab this on Platial ]]>
+44.204000 -110.486000 +crschmidt +2006-01-03T23:24:07.79658+00:00 +
+ +http://platial.com/place/28589 +Hot Springs on lewis Lake, WY +
Map this on Platial
Grab this on Platial ]]>
+44.276000 -110.636000 +crschmidt +2006-01-03T23:24:05.683418+00:00 +
+ +http://platial.com/place/28588 +Rustic Geyser, WY +
Map this on Platial
Grab this on Platial ]]>
+44.282000 -110.506000 +crschmidt +2006-01-03T23:24:03.66329+00:00 +
+ +http://platial.com/place/28587 +Bechler River Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.285000 -110.900000 +crschmidt +2006-01-03T23:24:01.611442+00:00 +
+ +http://platial.com/place/28586 +Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.290000 -110.504000 +crschmidt +2006-01-03T23:23:59.658699+00:00 +
+ +http://platial.com/place/28585 +Heart Lake Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.299000 -110.517000 +crschmidt +2006-01-03T23:23:57.181801+00:00 +
+ +http://platial.com/place/28584 +Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.307000 -110.526000 +crschmidt +2006-01-03T23:23:55.240485+00:00 +
+ +http://platial.com/place/28583 +Hot Springs on lewis Lake, WY +
Map this on Platial
Grab this on Platial ]]>
+44.309000 -110.654000 +crschmidt +2006-01-03T23:23:53.22295+00:00 +
+ +http://platial.com/place/28582 +Shoshone Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.354000 -110.800000 +crschmidt +2006-01-03T23:23:51.179049+00:00 +
+ +http://platial.com/place/28581 +Hot Springs on Continental Divide, WY +
Map this on Platial
Grab this on Platial ]]>
+44.401000 -110.936000 +crschmidt +2006-01-03T23:23:49.077176+00:00 +
+ +http://platial.com/place/28580 +Hot Springs on Upper Firehole River, WY +
Map this on Platial
Grab this on Platial ]]>
+44.404000 -110.824000 +crschmidt +2006-01-03T23:23:47.054664+00:00 +
+ +http://platial.com/place/28579 +Summit Lake Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.410000 -110.953000 +crschmidt +2006-01-03T23:23:45.039394+00:00 +
+ +http://platial.com/place/28578 +Lone Star Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.414000 -110.817000 +crschmidt +2006-01-03T23:23:42.938808+00:00 +
+ +http://platial.com/place/28577 +West. Thumb Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.417000 -110.570000 +crschmidt +2006-01-03T23:23:40.90238+00:00 +
+ +http://platial.com/place/28576 +Lone Star Geyser, WY +
Map this on Platial
Grab this on Platial ]]>
+44.418000 -110.805000 +crschmidt +2006-01-03T23:23:38.844625+00:00 +
+ +http://platial.com/place/28575 +Smoke Jumper Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.421000 -110.952000 +crschmidt +2006-01-03T23:23:36.818513+00:00 +
+ +http://platial.com/place/28574 +West. Thumb Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.422000 -110.574000 +crschmidt +2006-01-03T23:23:34.767729+00:00 +
+ +http://platial.com/place/28573 +Potts Hot Spring Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.433000 -110.581000 +crschmidt +2006-01-03T23:23:32.749915+00:00 +
+ +http://platial.com/place/28572 +Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.433000 -110.813000 +crschmidt +2006-01-03T23:23:30.829745+00:00 +
+ +http://platial.com/place/28571 +Hot Springs on Continental Divide, WY +
Map this on Platial
Grab this on Platial ]]>
+44.438000 -110.977000 +crschmidt +2006-01-03T23:23:28.730401+00:00 +
+ +http://platial.com/place/28570 +SouthEastern Group, WY +
Map this on Platial
Grab this on Platial ]]>
+44.459000 -110.817000 +crschmidt +2006-01-03T23:23:26.706763+00:00 +
+
\ No newline at end of file diff --git a/openlayers/tests/Layer/mice.xml b/openlayers/tests/Layer/mice.xml new file mode 100644 index 0000000..4a001ec --- /dev/null +++ b/openlayers/tests/Layer/mice.xml @@ -0,0 +1,156 @@ + + + + + -89.817223,45.005555 -74.755001,51.701388 + + + + + + -79.771668,45.891110 -79.771668,45.891110 + + + + + -79.771668,45.891110 + + + + + + + + + -83.755834,46.365277 -83.755834,46.365277 + + + owl + + + -83.755834,46.365277 + + + + + + + + + -83.808612,46.175277 -83.808612,46.175277 + + + + + -83.808612,46.175277 + + + + + + + + + -84.111112,46.309166 -84.111112,46.309166 + + + + + -84.111112,46.309166 + + + + + + + + + -83.678612,46.821110 -83.678612,46.821110 + + + + + -83.678612,46.821110 + + + + + + + + + -83.664445,46.518888 -83.664445,46.518888 + + + + + -83.664445,46.518888 + + + + + + + + + -80.613334,46.730277 -80.613334,46.730277 + + + + + -80.613334,46.730277 + + + + + + + + + -79.676946,45.428054 -79.676946,45.428054 + + + + + -79.676946,45.428054 + + + + + + + + + -83.853056,46.236944 -83.853056,46.236944 + + + + + -83.853056,46.236944 + + + + + + + + + -82.289167,45.896388 -82.289167,45.896388 + + + + + -82.289167,45.896388 + + + + + + diff --git a/openlayers/tests/Layer/owls.xml b/openlayers/tests/Layer/owls.xml new file mode 100644 index 0000000..4a001ec --- /dev/null +++ b/openlayers/tests/Layer/owls.xml @@ -0,0 +1,156 @@ + + + + + -89.817223,45.005555 -74.755001,51.701388 + + + + + + -79.771668,45.891110 -79.771668,45.891110 + + + + + -79.771668,45.891110 + + + + + + + + + -83.755834,46.365277 -83.755834,46.365277 + + + owl + + + -83.755834,46.365277 + + + + + + + + + -83.808612,46.175277 -83.808612,46.175277 + + + + + -83.808612,46.175277 + + + + + + + + + -84.111112,46.309166 -84.111112,46.309166 + + + + + -84.111112,46.309166 + + + + + + + + + -83.678612,46.821110 -83.678612,46.821110 + + + + + -83.678612,46.821110 + + + + + + + + + -83.664445,46.518888 -83.664445,46.518888 + + + + + -83.664445,46.518888 + + + + + + + + + -80.613334,46.730277 -80.613334,46.730277 + + + + + -80.613334,46.730277 + + + + + + + + + -79.676946,45.428054 -79.676946,45.428054 + + + + + -79.676946,45.428054 + + + + + + + + + -83.853056,46.236944 -83.853056,46.236944 + + + + + -83.853056,46.236944 + + + + + + + + + -82.289167,45.896388 -82.289167,45.896388 + + + + + -82.289167,45.896388 + + + + + + diff --git a/openlayers/tests/Map.html b/openlayers/tests/Map.html new file mode 100644 index 0000000..807907a --- /dev/null +++ b/openlayers/tests/Map.html @@ -0,0 +1,1306 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Marker.html b/openlayers/tests/Marker.html new file mode 100644 index 0000000..69b9a81 --- /dev/null +++ b/openlayers/tests/Marker.html @@ -0,0 +1,163 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Marker/Box.html b/openlayers/tests/Marker/Box.html new file mode 100644 index 0000000..d8d5306 --- /dev/null +++ b/openlayers/tests/Marker/Box.html @@ -0,0 +1,183 @@ + + + + + + +
+ + \ No newline at end of file diff --git a/openlayers/tests/OpenLayers.html b/openlayers/tests/OpenLayers.html new file mode 100644 index 0000000..89081d7 --- /dev/null +++ b/openlayers/tests/OpenLayers.html @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/openlayers/tests/Popup.html b/openlayers/tests/Popup.html new file mode 100644 index 0000000..f7f8384 --- /dev/null +++ b/openlayers/tests/Popup.html @@ -0,0 +1,213 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Popup/Anchored.html b/openlayers/tests/Popup/Anchored.html new file mode 100644 index 0000000..be22abc --- /dev/null +++ b/openlayers/tests/Popup/Anchored.html @@ -0,0 +1,37 @@ + + + + + + + + diff --git a/openlayers/tests/Popup/AnchoredBubble.html b/openlayers/tests/Popup/AnchoredBubble.html new file mode 100644 index 0000000..a3ba599 --- /dev/null +++ b/openlayers/tests/Popup/AnchoredBubble.html @@ -0,0 +1,59 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Popup/FramedCloud.html b/openlayers/tests/Popup/FramedCloud.html new file mode 100644 index 0000000..b7f3325 --- /dev/null +++ b/openlayers/tests/Popup/FramedCloud.html @@ -0,0 +1,18 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Projection.html b/openlayers/tests/Projection.html new file mode 100644 index 0000000..2c6d72c --- /dev/null +++ b/openlayers/tests/Projection.html @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/openlayers/tests/Protocol.html b/openlayers/tests/Protocol.html new file mode 100644 index 0000000..e3ef06d --- /dev/null +++ b/openlayers/tests/Protocol.html @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/openlayers/tests/Protocol/HTTP.html b/openlayers/tests/Protocol/HTTP.html new file mode 100644 index 0000000..fd490c8 --- /dev/null +++ b/openlayers/tests/Protocol/HTTP.html @@ -0,0 +1,746 @@ + + + + + + + + diff --git a/openlayers/tests/Protocol/SQL.html b/openlayers/tests/Protocol/SQL.html new file mode 100644 index 0000000..01377e0 --- /dev/null +++ b/openlayers/tests/Protocol/SQL.html @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/openlayers/tests/Protocol/SQL/Gears.html b/openlayers/tests/Protocol/SQL/Gears.html new file mode 100644 index 0000000..6f97f1a --- /dev/null +++ b/openlayers/tests/Protocol/SQL/Gears.html @@ -0,0 +1,473 @@ + + + + + + + + diff --git a/openlayers/tests/Protocol/WFS.html b/openlayers/tests/Protocol/WFS.html new file mode 100644 index 0000000..636117e --- /dev/null +++ b/openlayers/tests/Protocol/WFS.html @@ -0,0 +1,285 @@ + + + + + + +
+
+
+
+
+ + diff --git a/openlayers/tests/README.txt b/openlayers/tests/README.txt new file mode 100644 index 0000000..dc1f192 --- /dev/null +++ b/openlayers/tests/README.txt @@ -0,0 +1,16 @@ +This directory contains unit tests for the OpenLayers library. + +Tests use the Test.AnotherWay library from . The test +runner is 'run-tests.html' and new test files need to be added to +'list-tests.html'. + +The following file naming conventions are used: + + * A filename that starts with `test_` and has an `.html` extension + contains tests. These should contain tests for a specific class. + + * A filename starting with `page_` and has an `.html` extension is a + supporting HTML file used in one or more tests. + + * A filename starting with 'data_` is a supporting data file used in one + or more tests. diff --git a/openlayers/tests/Renderer.html b/openlayers/tests/Renderer.html new file mode 100644 index 0000000..c3d0092 --- /dev/null +++ b/openlayers/tests/Renderer.html @@ -0,0 +1,80 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Renderer/Canvas.html b/openlayers/tests/Renderer/Canvas.html new file mode 100644 index 0000000..d9a1810 --- /dev/null +++ b/openlayers/tests/Renderer/Canvas.html @@ -0,0 +1,86 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Renderer/Elements.html b/openlayers/tests/Renderer/Elements.html new file mode 100644 index 0000000..69adc7c --- /dev/null +++ b/openlayers/tests/Renderer/Elements.html @@ -0,0 +1,565 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Renderer/SVG.html b/openlayers/tests/Renderer/SVG.html new file mode 100644 index 0000000..0d9d5c4 --- /dev/null +++ b/openlayers/tests/Renderer/SVG.html @@ -0,0 +1,481 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Renderer/VML.html b/openlayers/tests/Renderer/VML.html new file mode 100644 index 0000000..2199dcf --- /dev/null +++ b/openlayers/tests/Renderer/VML.html @@ -0,0 +1,421 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Request.html b/openlayers/tests/Request.html new file mode 100644 index 0000000..2fffbb2 --- /dev/null +++ b/openlayers/tests/Request.html @@ -0,0 +1,325 @@ + + + + + + + + diff --git a/openlayers/tests/Request/XMLHttpRequest.html b/openlayers/tests/Request/XMLHttpRequest.html new file mode 100644 index 0000000..be7a7e8 --- /dev/null +++ b/openlayers/tests/Request/XMLHttpRequest.html @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/openlayers/tests/Rule.html b/openlayers/tests/Rule.html new file mode 100644 index 0000000..9c5a465 --- /dev/null +++ b/openlayers/tests/Rule.html @@ -0,0 +1,99 @@ + + + + + + + + diff --git a/openlayers/tests/Strategy.html b/openlayers/tests/Strategy.html new file mode 100644 index 0000000..99521f6 --- /dev/null +++ b/openlayers/tests/Strategy.html @@ -0,0 +1,94 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Strategy/BBOX.html b/openlayers/tests/Strategy/BBOX.html new file mode 100644 index 0000000..f03dd65 --- /dev/null +++ b/openlayers/tests/Strategy/BBOX.html @@ -0,0 +1,278 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Strategy/Cluster.html b/openlayers/tests/Strategy/Cluster.html new file mode 100644 index 0000000..18e5a6f --- /dev/null +++ b/openlayers/tests/Strategy/Cluster.html @@ -0,0 +1,130 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Strategy/Fixed.html b/openlayers/tests/Strategy/Fixed.html new file mode 100644 index 0000000..120786f --- /dev/null +++ b/openlayers/tests/Strategy/Fixed.html @@ -0,0 +1,193 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Strategy/Paging.html b/openlayers/tests/Strategy/Paging.html new file mode 100644 index 0000000..221cd5c --- /dev/null +++ b/openlayers/tests/Strategy/Paging.html @@ -0,0 +1,113 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Strategy/Save.html b/openlayers/tests/Strategy/Save.html new file mode 100644 index 0000000..655fce8 --- /dev/null +++ b/openlayers/tests/Strategy/Save.html @@ -0,0 +1,108 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Style.html b/openlayers/tests/Style.html new file mode 100644 index 0000000..5bab4ad --- /dev/null +++ b/openlayers/tests/Style.html @@ -0,0 +1,345 @@ + + + + + + +
+ + diff --git a/openlayers/tests/StyleMap.html b/openlayers/tests/StyleMap.html new file mode 100644 index 0000000..2213352 --- /dev/null +++ b/openlayers/tests/StyleMap.html @@ -0,0 +1,44 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Tile.html b/openlayers/tests/Tile.html new file mode 100644 index 0000000..930f2e6 --- /dev/null +++ b/openlayers/tests/Tile.html @@ -0,0 +1,95 @@ + + + + + + + + + diff --git a/openlayers/tests/Tile/Image.html b/openlayers/tests/Tile/Image.html new file mode 100644 index 0000000..f5f327b --- /dev/null +++ b/openlayers/tests/Tile/Image.html @@ -0,0 +1,302 @@ + + + + + + +
+ + + diff --git a/openlayers/tests/Tile/WFS.html b/openlayers/tests/Tile/WFS.html new file mode 100644 index 0000000..c0b57c9 --- /dev/null +++ b/openlayers/tests/Tile/WFS.html @@ -0,0 +1,173 @@ + + + + + + + + + diff --git a/openlayers/tests/Tween.html b/openlayers/tests/Tween.html new file mode 100644 index 0000000..be159a7 --- /dev/null +++ b/openlayers/tests/Tween.html @@ -0,0 +1,68 @@ + + + + + + +
+ + diff --git a/openlayers/tests/Util.html b/openlayers/tests/Util.html new file mode 100644 index 0000000..00a1f57 --- /dev/null +++ b/openlayers/tests/Util.html @@ -0,0 +1,948 @@ + + + + + + + +
+ + diff --git a/openlayers/tests/atom-1.0.xml b/openlayers/tests/atom-1.0.xml new file mode 100644 index 0000000..f0d5d6f --- /dev/null +++ b/openlayers/tests/atom-1.0.xml @@ -0,0 +1,34 @@ + + + + tumulus + + + + http://pleiades.stoa.org/places/tumulus + + + Unnamed Tumulus + + http://pleiades.stoa.org/places/638896 + + An ancient tumulus, attested during the Classical period (modern location: Karaburun). Its ancient name is not known. + 36.7702 29.9805 + + + Unnamed Tumulus + + http://pleiades.stoa.org/places/638924 + + An ancient tumulus, attested during the Classical period (modern location: Kızılbel). Its ancient name is not known. + 36.7263 29.8619 + + + + diff --git a/openlayers/tests/auto-tests.html b/openlayers/tests/auto-tests.html new file mode 100644 index 0000000..f467e41 --- /dev/null +++ b/openlayers/tests/auto-tests.html @@ -0,0 +1,2447 @@ + + + + Run the testsuite + + + + + + + + +
+
Test pages:
+
+ +
+
+
+ + + + +
+ do not close windows opened by tests +
+
+ +

Record mouse input for the page:

+

+

or enter page url:

+

+
+
+ +
+
+Results: + + +
+
+
+
+
+
+ + + + + + +-
+ +

+  + +

+ +
 
+

+cursor is over +

+ +

+ keyboard control: press + ctrl - + shift - +

+ +

+s +to start recording + +

+ +

+h +to hide/show this window +

+ +

+m +to record mousemove + +

+ +

+p +to pause recording + +

+ +

+c +to add checkpoint +

+ +

+checkpoints: +

+
+
+
+ +
+ diff --git a/openlayers/tests/data/geos_wkt_intersects.js b/openlayers/tests/data/geos_wkt_intersects.js new file mode 100644 index 0000000..cdf6bf7 --- /dev/null +++ b/openlayers/tests/data/geos_wkt_intersects.js @@ -0,0 +1,495 @@ +var geos_test_data = [ +{'wkt1':'POLYGON ((100 100,100 200,200 200,200 100,100 100))', 'wkt2':'POLYGON ((100 100,1000000000000000.0 110.0,1000000000000000.0 100.0,100 100))', result:true}, +{'wkt1':'POLYGON ((120 100,120 200,200 200,200 100,120 100))', 'wkt2':'POLYGON ((100 100,1000000000000000.0 110.0,1000000000000000.0 100.0,100 100))', result:true}, +{'wkt1':'POLYGON ((20 20,20 100,120 100,140 20,20 20))', 'wkt2':'POLYGON ((20 20,20 100,120 100,140 20,20 20))', result:true}, +{'wkt1':'POLYGON ((20 20,20 100,120 100,140 20,20 20))', 'wkt2':'POLYGON ((20 20,140 20,120 100,20 100,20 20))', result:true}, +{'wkt1':'POLYGON ((20 20,20 100,120 100,140 20,20 20))', 'wkt2':'POLYGON ((120 100,140 20,20 20,20 100,120 100))', result:true}, +{'wkt1':'POLYGON ((20 20,20 100,120 100,140 20,20 20))', 'wkt2':'POLYGON ((20 100,60 100,120 100,140 20,80 20,20 20,20 100))', result:true}, +{'wkt1':'POLYGON ((0 0,80 0,80 80,0 80,0 0))', 'wkt2':'POLYGON ((100 200,100 140,180 140,180 200,100 200))', result:false}, +{'wkt1':'POLYGON ((140 120,160 20,20 20,20 120,140 120))', 'wkt2':'POLYGON ((140 120,140 200,240 200,240 120,140 120))', result:true}, +{'wkt1':'POLYGON ((140 120,160 20,20 20,20 120,140 120))', 'wkt2':'POLYGON ((80 180,140 260,260 200,200 60,80 180))', result:true}, +{'wkt1':'POLYGON ((140 120,160 20,20 20,20 120,140 120))', 'wkt2':'POLYGON ((240 80,140 120,180 240,280 200,240 80))', result:true}, +{'wkt1':'POLYGON ((140 160,20 20,270 20,150 160,230 40,60 40,140 160))', 'wkt2':'POLYGON ((140 40,180 80,120 100,140 40))', result:true}, +{'wkt1':'POLYGON ((140 160,20 20,270 20,150 160,230 40,60 40,140 160))', 'wkt2':'POLYGON ((120 100,180 80,130 40,120 100))', result:true}, +{'wkt1':'POLYGON ((20 20,180 20,140 140,20 140,20 20))', 'wkt2':'POLYGON ((180 100,80 200,180 280,260 200,180 100))', result:true}, +{'wkt1':'POLYGON ((140 120,160 20,20 20,20 120,140 120))', 'wkt2':'POLYGON ((140 140,20 120,0 220,120 240,140 140))', result:true}, +{'wkt1':'POLYGON ((160 200,210 70,120 70,160 200))', 'wkt2':'POLYGON ((160 200,260 40,70 40,160 200,20 20,310 20,160 200))', result:true}, +{'wkt1':'POLYGON ((110 140,200 70,200 160,110 140))', 'wkt2':'POLYGON ((110 140,110 50,60 50,60 90,160 190,20 110,20 20,200 20,110 140))', result:true}, +{'wkt1':'POLYGON ((20 120,20 20,260 20,260 120,200 40,140 120,80 40,20 120))', 'wkt2':'POLYGON ((20 120,20 240,260 240,260 120,200 200,140 120,80 200,20 120))', result:true}, +{'wkt1':'POLYGON ((20 120,20 20,260 20,260 120,180 40,140 120,100 40,20 120))', 'wkt2':'POLYGON ((20 120,300 120,140 240,20 120))', result:true}, +{'wkt1':'POLYGON ((20 20,20 300,280 300,280 260,220 260,60 100,60 60,280 60,280 20,20 20))', 'wkt2':'POLYGON ((100 140,160 80,280 180,200 240,220 160,160 200,180 120,100 140))', result:true}, +{'wkt1':'POLYGON ((20 20,20 300,280 300,280 260,220 260,60 100,60 60,280 60,280 20,20 20))', 'wkt2':'POLYGON ((260 200,180 80,120 160,200 160,180 220,260 200))', result:true}, +{'wkt1':'POLYGON ((20 20,280 20,280 140,220 60,140 140,80 60,20 140,20 20))', 'wkt2':'POLYGON ((0 140,300 140,140 240,0 140))', result:true}, +{'wkt1':'POLYGON ((20 20,280 20,280 140,220 60,140 140,80 60,20 140,20 20))', 'wkt2':'POLYGON ((20 240,20 140,320 140,180 240,20 240))', result:true}, +{'wkt1':'POLYGON ((20 20,280 20,280 140,220 60,140 140,80 60,20 140,20 20))', 'wkt2':'POLYGON ((20 240,20 140,80 180,140 140,220 180,280 140,280 240,20 240))', result:true}, +{'wkt1':'POLYGON ((120 120,180 60,20 20,20 120,120 120))', 'wkt2':'POLYGON ((120 120,220 20,280 20,240 160,120 120))', result:true}, +{'wkt1':'POLYGON ((140 120,160 20,20 20,20 120,140 120))', 'wkt2':'POLYGON ((140 120,160 20,260 120,220 200,140 120))', result:true}, +{'wkt1':'POLYGON ((20 140,120 40,20 40,20 140))', 'wkt2':'POLYGON ((190 140,190 20,140 20,20 140,190 140))', result:true}, +{'wkt1':'POLYGON ((120 120,180 60,20 20,20 120,120 120))', 'wkt2':'POLYGON ((300 20,220 20,120 120,260 160,300 20))', result:true}, +{'wkt1':'POLYGON ((140 120,160 20,20 20,20 120,140 120))', 'wkt2':'POLYGON ((140 120,240 160,280 60,160 20,140 120))', result:true}, +{'wkt1':'POLYGON ((120 120,180 60,20 20,20 120,120 120))', 'wkt2':'POLYGON ((280 60,180 60,120 120,260 180,280 60))', result:true}, +{'wkt1':'POLYGON ((140 120,160 20,20 20,20 120,140 120))', 'wkt2':'POLYGON ((120 200,120 120,40 120,40 200,120 200))', result:true}, +{'wkt1':'POLYGON ((140 120,160 20,20 20,20 120,140 120))', 'wkt2':'POLYGON ((160 220,140 120,60 120,40 220,160 220))', result:true}, +{'wkt1':'POLYGON ((140 120,160 20,20 20,20 120,140 120))', 'wkt2':'POLYGON ((140 120,20 120,20 220,140 220,140 120))', result:true}, +{'wkt1':'POLYGON ((120 120,180 60,20 20,20 120,120 120))', 'wkt2':'POLYGON ((320 20,220 20,80 160,240 140,320 20))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((60 40,60 140,180 140,180 40,60 40))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((20 20,80 140,160 60,20 20))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((160 60,20 20,100 140,160 60))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((20 100,140 160,160 40,20 100))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((160 40,20 100,160 160,160 40))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((20 180,180 120,80 40,20 180))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((180 120,100 40,20 180,180 120))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((20 20,140 40,140 120,20 160,80 80,20 20))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((20 20,140 40,140 140,20 180,80 100,20 20))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((40 180,60 100,180 100,200 180,120 120,40 180))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((20 180,60 80,180 80,220 180,120 120,20 180))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((40 60,20 180,100 100,140 180,160 120,220 100,140 40,40 60))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((60 100,180 100,220 180,120 140,20 180,60 100))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((20 20,20 140,120 120,120 40,20 20))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((20 20,20 180,140 140,140 60,20 20))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((20 20,120 40,120 120,20 140,20 20))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((120 40,20 20,20 140,120 120,120 40))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((20 20,140 60,140 140,20 180,20 20))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((140 60,20 20,20 180,140 140,140 60))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((20 20,60 120,140 120,180 20,20 20))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((20 40,120 40,120 120,20 140,20 40))', result:true}, +{'wkt1':'POLYGON ((20 20,20 180,220 180,220 20,20 20))', 'wkt2':'POLYGON ((20 20,20 180,60 120,100 180,140 120,220 180,200 120,140 60,20 20))', result:true}, +{'wkt1':'POLYGON ((150 150,330 150,250 70,70 70,150 150))', 'wkt2':'POLYGON ((150 150,270 150,140 20,20 20,150 150))', result:true}, +{'wkt1':'POLYGON ((150 150,270 150,330 150,250 70,190 70,70 70,150 150))', 'wkt2':'POLYGON ((150 150,270 150,190 70,140 20,20 20,70 70,150 150))', result:true}, +{'wkt1':'POLYGON ((20 20,60 50,20 40,60 70,20 60,60 90,20 90,70 110,20 130,80 130,20 150,80 160,20 170,80 180,20 200,80 200,30 240,80 220,50 260,100 220,100 260,120 220,130 260,140 220,150 280,150 190,160 280,170 190,180 280,190 190,200 280,210 190,220 280,230 190,240 260,250 230,260 260,260 220,290 270,290 220,330 260,300 210,340 240,290 180,340 210,290 170,350 170,240 150,350 150,240 140,350 130,240 120,350 120,240 110,350 110,240 100,350 100,240 90,350 90,240 80,350 80,300 70,340 60,290 60,340 40,300 50,340 20,270 60,310 20,250 60,270 20,230 60,240 20,210 60,210 20,190 70,190 20,180 90,170 20,160 90,150 20,140 90,130 20,120 90,110 20,100 90,100 20,90 60,80 20,70 40,20 20))', 'wkt2':'POLYGON ((190 140,140 130,200 160,130 150,210 170,130 170,210 180,120 190,220 200,120 200,250 210,120 210,250 220,120 220,250 230,120 240,230 240,120 250,240 260,120 260,240 270,120 270,270 290,120 290,230 300,150 310,250 310,180 320,250 320,200 360,260 330,240 360,280 320,290 370,290 320,320 360,310 320,360 360,310 310,380 340,310 290,390 330,310 280,410 310,310 270,420 280,310 260,430 250,300 250,440 240,300 240,450 230,280 220,440 220,280 210,440 210,300 200,430 190,300 190,440 180,330 180,430 150,320 180,420 130,300 180,410 120,280 180,400 110,280 170,390 90,280 160,400 70,270 160,450 30,260 160,420 30,250 160,390 30,240 160,370 30,230 160,360 30,230 150,330 50,240 130,330 30,230 130,310 30,220 130,280 30,230 100,270 40,220 110,250 30,210 130,240 30,210 100,220 40,200 90,200 20,190 100,180 30,20 20,180 40,20 30,180 50,20 50,180 60,30 60,180 70,20 70,170 80,80 80,170 90,20 80,180 100,40 100,200 110,60 110,200 120,120 120,190 140))', result:true}, +{'wkt1':'POLYGON ((70 150,20 160,110 160,20 180,100 200,20 200,190 210,20 210,160 220,20 220,150 230,60 240,180 250,20 260,170 260,60 270,160 270,100 310,170 280,200 260,180 230,210 260,130 330,230 250,210 290,240 250,230 210,260 300,250 230,270 300,270 240,300 340,280 250,320 330,290 250,340 350,290 240,350 360,270 190,350 340,290 200,350 330,300 190,360 320,310 190,360 300,320 200,360 280,330 200,360 260,340 200,370 260,340 180,390 290,340 170,400 260,350 170,400 250,350 160,410 240,350 150,400 170,350 140,310 170,340 140,270 180,330 140,260 170,310 140,240 170,290 140,200 190,270 140,180 190,260 140,170 190,260 130,170 180,250 130,170 170,240 120,170 160,210 120,170 150,210 110,340 130,230 110,420 140,220 100,410 130,220 90,400 120,220 80,390 110,220 70,420 110,240 70,420 100,260 70,420 90,280 70,430 80,230 60,430 60,270 50,450 40,210 50,370 40,260 40,460 30,160 40,210 60,200 110,190 60,190 120,170 50,180 130,150 30,170 130,140 20,160 120,130 20,160 150,120 20,160 170,110 20,160 190,100 20,150 190,90 20,140 180,80 20,120 140,70 20,120 150,60 20,110 150,50 20,100 140,50 30,90 130,40 30,80 120,30 30,80 130,30 40,80 140,20 40,70 140,40 90,60 130,20 90,60 140,20 130,70 150))', 'wkt2':'POLYGON ((190 140,140 130,200 160,130 150,210 170,130 170,210 180,120 190,220 200,120 200,250 210,120 210,250 220,120 220,250 230,120 240,230 240,120 250,240 260,120 260,240 270,120 270,270 290,120 290,230 300,150 310,250 310,180 320,250 320,200 360,260 330,240 360,280 320,290 370,290 320,320 360,310 320,360 360,310 310,380 340,310 290,390 330,310 280,410 310,310 270,420 280,310 260,430 250,300 250,440 240,300 240,450 230,280 220,440 220,280 210,440 210,300 200,430 190,300 190,440 180,330 180,430 150,320 180,420 130,300 180,410 120,280 180,400 110,280 170,390 90,280 160,400 70,270 160,450 30,260 160,420 30,250 160,390 30,240 160,370 30,230 160,360 30,230 150,330 50,240 130,330 30,230 130,310 30,220 130,280 30,230 100,270 40,220 110,250 30,210 130,240 30,210 100,220 40,200 90,200 20,190 100,180 30,20 20,180 40,20 30,180 50,20 50,180 60,30 60,180 70,20 70,170 80,80 80,170 90,20 80,180 100,40 100,200 110,60 110,200 120,120 120,190 140))', result:true}, +{'wkt1':'POLYGON ((60 160,220 160,220 20,60 20,60 160))', 'wkt2':'POLYGON ((60 160,20 200,260 200,220 160,140 80,60 160))', result:true}, +{'wkt1':'POLYGON ((60 160,220 160,220 20,60 20,60 160))', 'wkt2':'POLYGON ((60 160,20 200,260 200,140 80,60 160))', result:true}, +{'wkt1':'POLYGON ((60 160,220 160,220 20,60 20,60 160))', 'wkt2':'POLYGON ((20 200,140 80,260 200,20 200))', result:true}, +{'wkt1':'POLYGON ((60 160,220 160,220 20,60 20,60 160))', 'wkt2':'POLYGON ((20 200,60 160,140 80,220 160,260 200,20 200))', result:true}, +{'wkt1':'POLYGON ((60 160,220 160,220 20,60 20,60 160))', 'wkt2':'POLYGON ((20 200,60 160,140 80,260 200,20 200))', result:true}, +{'wkt1':'POLYGON ((0 0,0 200,200 200,200 0,0 0))', 'wkt2':'POLYGON ((100 100,1000000 110,10000000 100,100 100))', result:true}, +{'wkt1':'POLYGON ((100 0,100 200,200 200,200 0,100 0))', 'wkt2':'POLYGON ((100 100,1000000 110,10000000 100,100 100))', result:true}, +{'wkt1':'POLYGON ((120 0,120 200,200 200,200 0,120 0))', 'wkt2':'POLYGON ((100 100,1000000 110,10000000 100,100 100))', result:true}, +{'wkt1':'POLYGON ((0 0,0 200,110 200,110 0,0 0))', 'wkt2':'POLYGON ((100 100,1000000 110,10000000 100,100 100))', result:true}, +{'wkt1':'POLYGON ((100 100,100 200,200 200,200 100,100 100))', 'wkt2':'POLYGON ((100 100,2100 110,2100 100,100 100))', result:true}, +{'wkt1':'POLYGON ((100 100,100 200,200 200,200 100,100 100))', 'wkt2':'POLYGON ((100 100,2101 110,2101 100,100 100))', result:true}, +{'wkt1':'POLYGON ((100 100,200 200,200 100,100 100))', 'wkt2':'POLYGON ((100 100,2101 110,2101 100,100 100))', result:true}, +{'wkt1':'POLYGON ((100 100,100 200,200 200,200 100,100 100))', 'wkt2':'POLYGON ((100 100,1000000 110,1000000 100,100 100))', result:true}, +{'wkt1':'POLYGON ((120 100,120 200,200 200,200 100,120 100))', 'wkt2':'POLYGON ((100 100,500 110,500 100,100 100))', result:true}, +{'wkt1':'POLYGON ((120 100,120 200,200 200,200 100,120 100))', 'wkt2':'POLYGON ((100 100,501 110,501 100,100 100))', result:true}, +{'wkt1':'POLYGON ((120 100,130 200,200 200,200 100,120 100))', 'wkt2':'POLYGON ((100 100,501 110,501 100,100 100))', result:true}, +{'wkt1':'POLYGON ((120 100,17 200,200 200,200 100,120 100))', 'wkt2':'POLYGON ((100 100,501 110,501 100,100 100))', result:true}, +{'wkt1':'POLYGON ((120 100,120 200,200 200,200 100,120 100))', 'wkt2':'POLYGON ((100 100,1000000 110,1000000 100,100 100))', result:true}, +{'wkt1':'POLYGON ((101 99,101 1000000,102 1000000,101 99))', 'wkt2':'POLYGON ((100 100,1000000 110,1000000 100,100 100))', result:true}, +{'wkt1':'POLYGON ((100 100,200 101,200 100,100 100))', 'wkt2':'POLYGON ((100 100,2101 110,2101 100,100 100))', result:true}, +{'wkt1':'POLYGON ((16 319,150 39,25 302,160 20,265 20,127 317,16 319))', 'wkt2':'POLYGON ((10 307,22 307,153 34,22 34,10 307))', result:true}, +{'wkt1':'POLYGON ((160 200,210 70,120 70,160 200))', 'wkt2':'POLYGON ((160 200,310 20,20 20,160 200),(160 200,260 40,70 40,160 200))', result:true}, +{'wkt1':'POLYGON ((170 120,240 100,260 50,190 70,170 120))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((270 90,200 50,150 80,210 120,270 90))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((170 120,260 100,240 60,150 80,170 120))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((220 120,270 80,200 60,160 100,220 120))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((260 50,180 70,180 110,260 90,260 50))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((230 110,290 80,190 60,140 90,230 110))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((170 120,330 120,260 50,100 50,170 120))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((170 120,330 120,280 70,120 70,170 120))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((170 120,300 120,250 70,120 70,170 120))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((190 100,310 100,260 50,140 50,190 100))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((280 130,360 130,270 40,190 40,280 130))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,250 120,180 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((220 80,180 40,80 40,170 130,270 130,230 90,300 90,250 30,280 30,390 140,150 140,40 30,230 30,280 80,220 80))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,250 120,180 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((260 130,360 130,280 40,170 40,260 130))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,250 120,180 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((240 110,340 110,290 60,190 60,240 110))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,250 120,180 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((250 120,350 120,280 50,180 50,250 120))', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,250 120,180 50,100 50,170 120))', result:true}, +{'wkt1':'POLYGON ((230 210,230 20,20 20,20 210,230 210),(120 180,50 50,200 50,120 180))', 'wkt2':'POLYGON ((230 210,230 20,20 20,20 210,230 210),(120 180,50 50,200 50,120 180))', result:true}, +{'wkt1':'POLYGON ((230 210,230 20,20 20,20 210,230 210),(140 40,40 40,40 170,140 40),(110 190,210 190,210 50,110 190))', 'wkt2':'POLYGON ((230 210,230 20,20 20,20 210,230 210),(140 40,40 40,40 170,140 40),(110 190,210 190,210 50,110 190))', result:true}, +{'wkt1':'POLYGON ((280 190,330 150,200 110,150 150,280 190))', 'wkt2':'MULTIPOLYGON (((140 110,260 110,170 20,50 20,140 110)),((300 270,420 270,340 190,220 190,300 270)))', result:true}, +{'wkt1':'POLYGON ((80 190,220 190,140 110,0 110,80 190))', 'wkt2':'MULTIPOLYGON (((140 110,260 110,170 20,50 20,140 110)),((300 270,420 270,340 190,220 190,300 270)))', result:true}, +{'wkt1':'POLYGON ((330 150,200 110,150 150,280 190,330 150))', 'wkt2':'MULTIPOLYGON (((140 110,260 110,170 20,50 20,140 110)),((300 270,420 270,340 190,220 190,300 270)))', result:true}, +{'wkt1':'POLYGON ((290 190,340 150,220 120,170 170,290 190))', 'wkt2':'MULTIPOLYGON (((140 110,260 110,170 20,50 20,140 110)),((300 270,420 270,340 190,220 190,300 270)))', result:true}, +{'wkt1':'POLYGON ((220 190,340 190,260 110,140 110,220 190))', 'wkt2':'MULTIPOLYGON (((140 110,260 110,170 20,50 20,140 110)),((300 270,420 270,340 190,220 190,300 270)))', result:true}, +{'wkt1':'POLYGON ((140 190,220 190,100 70,20 70,140 190))', 'wkt2':'MULTIPOLYGON (((140 110,260 110,170 20,50 20,140 110)),((300 270,420 270,340 190,220 190,300 270)))', result:true}, +{'wkt1':'POLYGON ((140 220,60 140,140 60,220 140,140 220))', 'wkt2':'MULTIPOLYGON (((100 20,180 20,180 100,100 100,100 20)),((20 100,100 100,100 180,20 180,20 100)),((100 180,180 180,180 260,100 260,100 180)),((180 100,260 100,260 180,180 180,180 100)))', result:true}, +{'wkt1':'MULTIPOLYGON (((110 110,70 200,150 200,110 110)),((110 110,150 20,70 20,110 110)))', 'wkt2':'MULTIPOLYGON (((110 110,160 160,210 110,160 60,110 110)),((110 110,60 60,10 110,60 160,110 110)))', result:true}, +{'wkt1':'MULTIPOLYGON (((110 110,70 200,150 200,110 110),(110 110,100 180,120 180,110 110)),((110 110,150 20,70 20,110 110),(110 110,120 40,100 40,110 110)))', 'wkt2':'MULTIPOLYGON (((110 110,160 160,210 110,160 60,110 110),(110 110,160 130,160 90,110 110)),((110 110,60 60,10 110,60 160,110 110),(110 110,60 90,60 130,110 110)))', result:true}, +{'wkt1':'MULTIPOLYGON (((110 110,70 200,200 200,110 110),(110 110,100 180,120 180,110 110)),((110 110,200 20,70 20,110 110),(110 110,120 40,100 40,110 110)))', 'wkt2':'MULTIPOLYGON (((110 110,160 160,210 110,160 60,110 110),(110 110,160 130,160 90,110 110)),((110 110,60 60,10 110,60 160,110 110),(110 110,60 90,60 130,110 110)))', result:true}, +{'wkt1':'MULTIPOLYGON (((110 110,20 200,200 200,110 110),(110 110,100 180,120 180,110 110)),((110 110,200 20,20 20,110 110),(110 110,120 40,100 40,110 110)))', 'wkt2':'MULTIPOLYGON (((110 110,160 160,210 110,160 60,110 110),(110 110,160 130,160 90,110 110)),((110 110,60 60,10 110,60 160,110 110),(110 110,60 90,60 130,110 110)))', result:true}, +{'wkt1':'MULTIPOLYGON (((110 110,70 200,200 200,110 110),(110 110,100 180,120 180,110 110)),((110 110,200 20,70 20,110 110),(110 110,120 40,100 40,110 110)))', 'wkt2':'MULTIPOLYGON (((110 110,160 160,210 110,160 60,110 110),(110 110,160 130,160 90,110 110)),((110 110,60 60,10 110,60 160,110 110),(110 110,60 90,60 130,110 110)))', result:true}, +{'wkt1':'MULTIPOLYGON (((110 110,70 200,200 200,110 110),(110 110,100 180,120 180,110 110)),((110 110,200 20,70 20,110 110),(110 110,120 40,100 40,110 110)))', 'wkt2':'MULTIPOLYGON (((110 110,70 200,210 110,70 20,110 110),(110 110,110 140,150 110,110 80,110 110)),((110 110,60 60,10 110,60 160,110 110),(110 110,60 90,60 130,110 110)))', result:true}, +{'wkt1':'POLYGON ((100 60,140 100,100 140,60 100,100 60))', 'wkt2':'MULTIPOLYGON (((80 40,120 40,120 80,80 80,80 40)),((120 80,160 80,160 120,120 120,120 80)),((80 120,120 120,120 160,80 160,80 120)),((40 80,80 80,80 120,40 120,40 80)))', result:true}, +{'wkt1':'LINESTRING (150 150,40 230)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (40 40,50 130,130 130)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (40 230,150 150)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (210 150,330 150)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (200 150,310 150,360 220)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (180 150,250 150,230 250,370 250,410 150)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (210 210,220 150,320 150,370 210)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (20 60,150 60)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (60 90,310 180)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (90 210,210 90)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (290 10,130 170)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (30 100,100 100,180 100)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (20 100,100 100,360 100,410 100)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (90 210,150 150,210 90)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (180 90,280 120)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (70 70,80 20)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (130 20,150 60)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (70 70,80 20,140 20,150 60)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (170 50,170 20,240 20,260 60)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150))', result:true}, +{'wkt1':'LINESTRING (50 100,140 190,280 190)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:false}, +{'wkt1':'LINESTRING (140 60,180 100,290 100)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:false}, +{'wkt1':'LINESTRING (170 120,210 80,270 80)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:true}, +{'wkt1':'LINESTRING (170 120,260 50)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:true}, +{'wkt1':'LINESTRING (190 90,190 270)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(190 190,280 50,100 50,190 190))', result:true}, +{'wkt1':'LINESTRING (60 160,150 70)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(110 110,250 100,140 30,110 110))', result:true}, +{'wkt1':'LINESTRING (60 160,150 70)', 'wkt2':'POLYGON ((190 190,20 20,360 20,190 190),(250 100,110 110,140 30,250 100))', result:true}, +{'wkt1':'LINESTRING (60 160,150 70)', 'wkt2':'POLYGON ((190 190,20 20,360 20,190 190),(250 100,110 110,140 30,250 100))', result:true}, +{'wkt1':'LINESTRING (190 90,190 190,190 270)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(190 190,280 50,100 50,190 190))', result:true}, +{'wkt1':'LINESTRING (60 160,110 110,150 70)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(110 110,250 100,140 30,110 110))', result:true}, +{'wkt1':'LINESTRING (60 160,110 110,150 70)', 'wkt2':'POLYGON ((190 190,20 20,360 20,190 190),(250 100,110 110,140 30,250 100))', result:true}, +{'wkt1':'LINESTRING (60 160,110 110,150 70)', 'wkt2':'POLYGON ((190 190,110 110,20 20,360 20,190 190),(250 100,110 110,140 30,250 100))', result:true}, +{'wkt1':'LINESTRING (130 110,180 110,190 60)', 'wkt2':'POLYGON ((20 200,240 200,240 20,20 20,20 200),(130 110,60 180,60 40,130 110),(130 110,200 40,200 180,130 110))', result:true}, +{'wkt1':'LINESTRING (80 110,180 110)', 'wkt2':'POLYGON ((20 200,240 200,240 20,20 20,20 200),(130 110,60 180,60 40,130 110),(130 110,200 40,200 180,130 110))', result:true}, +{'wkt1':'LINESTRING (80 110,180 110)', 'wkt2':'POLYGON ((20 200,20 20,240 20,240 200,20 200),(60 180,130 110,60 40,60 180),(130 110,200 40,200 180,130 110))', result:true}, +{'wkt1':'LINESTRING (80 110,170 110)', 'wkt2':'POLYGON ((20 200,20 20,240 20,240 200,20 200),(130 110,60 40,60 180,130 110),(130 180,130 40,200 110,130 180))', result:true}, +{'wkt1':'LINESTRING (80 110,130 110,170 110)', 'wkt2':'POLYGON ((20 200,20 20,240 20,240 200,20 200),(130 110,60 40,60 180,130 110),(130 180,130 40,200 110,130 180))', result:true}, +{'wkt1':'LINESTRING (80 110,130 110,180 110)', 'wkt2':'POLYGON ((20 200,240 200,240 20,20 20,20 200),(130 110,60 180,60 40,130 110),(130 110,200 40,200 180,130 110))', result:true}, +{'wkt1':'LINESTRING (80 110,130 110,180 110)', 'wkt2':'POLYGON ((20 200,20 20,240 20,240 200,20 200),(60 180,130 110,60 40,60 180),(130 110,200 40,200 180,130 110))', result:true}, +{'wkt1':'LINESTRING (80 110,130 110,170 110)', 'wkt2':'POLYGON ((20 200,20 20,240 20,240 200,20 200),(130 110,60 40,60 180,130 110),(130 180,130 40,200 110,130 180))', result:true}, +{'wkt1':'LINESTRING (160 70,320 230)', 'wkt2':'MULTIPOLYGON (((140 110,260 110,170 20,50 20,140 110)),((300 270,420 270,340 190,220 190,300 270)))', result:true}, +{'wkt1':'LINESTRING (160 70,200 110,280 190,320 230)', 'wkt2':'MULTIPOLYGON (((140 110,260 110,170 20,50 20,140 110)),((300 270,420 270,340 190,220 190,300 270)))', result:true}, +{'wkt1':'LINESTRING (70 50,70 150)', 'wkt2':'MULTIPOLYGON (((0 0,0 100,140 100,140 0,0 0)),((20 170,70 100,130 170,20 170)))', result:true}, +{'wkt1':'LINESTRING (110 110,20 200,200 200,110 110)', 'wkt2':'POLYGON ((20 20,200 20,110 110,20 20))', result:true}, +{'wkt1':'LINESTRING (150 70,160 110,200 60,150 70)', 'wkt2':'POLYGON ((20 20,200 20,110 110,20 20))', result:true}, +{'wkt1':'LINESTRING (80 60,120 40,120 70,80 60)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110),(110 90,50 30,170 30,110 90))', result:true}, +{'wkt1':'LINESTRING (20 20,200 20,110 110,20 20)', 'wkt2':'POLYGON ((20 20,200 20,110 110,20 20))', result:true}, +{'wkt1':'LINESTRING (110 90,170 30,50 30,110 90)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110),(110 90,50 30,170 30,110 90))', result:true}, +{'wkt1':'LINESTRING (110 110,170 50,170 110,110 110)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110),(110 90,50 30,170 30,110 90))', result:true}, +{'wkt1':'LINESTRING (110 90,70 50,130 50,110 90)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110),(110 90,50 30,170 30,110 90))', result:true}, +{'wkt1':'LINESTRING (110 60,20 150,200 150,110 60)', 'wkt2':'POLYGON ((20 20,200 20,110 110,20 20))', result:true}, +{'wkt1':'LINESTRING (110 130,110 70,200 100,110 130)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110),(110 90,50 30,170 30,110 90))', result:true}, +{'wkt1':'LINESTRING (110 90,160 40,60 40,110 90)', 'wkt2':'POLYGON ((20 20,200 20,110 110,20 20))', result:true}, +{'wkt1':'LINESTRING (110 100,40 30,180 30,110 100)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110),(110 90,60 40,160 40,110 90))', result:true}, +{'wkt1':'LINESTRING (110 110,180 30,40 30,110 110)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110),(110 90,60 40,160 40,110 90))', result:true}, +{'wkt1':'LINESTRING (110 90,180 30,40 30,110 90)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110),(110 90,60 40,160 40,110 90))', result:true}, +{'wkt1':'LINESTRING (110 90,50 30,180 30,110 90)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110),(110 90,60 40,160 40,110 90))', result:true}, +{'wkt1':'LINESTRING (110 110,200 200,200 110,110 200)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'LINESTRING (110 110,200 200,110 110,20 200,20 110,200 110)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'LINESTRING (110 110,20 110,200 110,50 110,110 170)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'LINESTRING (110 110,20 200,110 200,110 110,200 200)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'LINESTRING (110 110,170 50,20 200,20 110,200 110)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'LINESTRING (110 110,180 40,110 40,110 180)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'LINESTRING (110 60,50 30,170 30,90 70)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'LINESTRING (110 110,180 40,110 40,110 110,70 40)', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'LINESTRING (230 70,170 120,190 60,140 60,170 120,270 90)', 'wkt2':'POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', result:true}, +{'wkt1':'MULTILINESTRING ((20 110,200 110),(200 200,110 110,20 210,110 110))', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'MULTILINESTRING ((20 110,200 110),(60 180,60 110,160 110,110 110))', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'MULTILINESTRING ((20 110,200 110),(200 200,110 110,20 200,110 200,110 110))', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'MULTILINESTRING ((20 110,200 110),(110 50,110 170,110 70,110 150,200 150))', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'MULTILINESTRING ((20 110,200 110),(50 110,170 110,110 170,110 50,110 170,110 50))', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'MULTILINESTRING ((20 110,200 110),(110 60,110 160,200 160))', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'MULTILINESTRING ((20 110,200 110),(110 60,110 160,200 160))', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'MULTILINESTRING ((110 100,40 30,180 30),(170 30,110 90,50 30))', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'MULTILINESTRING ((110 110,60 40,70 20,150 20,170 40),(180 30,40 30,110 80))', 'wkt2':'POLYGON ((110 110,200 20,20 20,110 110))', result:true}, +{'wkt1':'MULTILINESTRING ((20 110,200 110,200 160),(110 110,200 110,200 70,20 150))', 'wkt2':'MULTIPOLYGON (((110 110,20 20,200 20,110 110)),((110 110,20 200,200 200,110 110)))', result:true}, +{'wkt1':'MULTILINESTRING ((20 160,70 110,150 110,200 160),(110 110,20 110,50 80,70 110,200 110))', 'wkt2':'MULTIPOLYGON (((110 110,20 20,200 20,110 110)),((110 110,20 200,200 200,110 110)))', result:true}, +{'wkt1':'MULTILINESTRING ((20 110,200 110),(110 110,20 170,20 130,200 90))', 'wkt2':'MULTIPOLYGON (((110 110,20 20,200 20,110 110)),((110 110,20 200,200 200,110 110)))', result:true}, +{'wkt1':'LINESTRING (0 0,0 50,50 50,50 0,0 0)', 'wkt2':'MULTILINESTRING ((0 0,0 50),(0 50,50 50),(50 50,50 0),(50 0,0 0))', result:true}, +{'wkt1':'LINESTRING (40 180,140 180)', 'wkt2':'MULTIPOLYGON (((20 320,180 320,180 180,20 180,20 320)),((20 180,20 80,180 80,180 180,20 180)))', result:true}, +{'wkt1':'LINESTRING (40 180,140 180)', 'wkt2':'MULTIPOLYGON (((20 320,180 320,180 180,20 180,20 320)),((60 180,60 80,180 80,180 180,60 180)))', result:true}, +{'wkt1':'LINESTRING (0 0,60 0,60 60,60 0,120 0)', 'wkt2':'MULTILINESTRING ((0 0,60 0),(60 0,120 0),(60 0,60 60))', result:true}, +{'wkt1':'LINESTRING (40 40,120 120)', 'wkt2':'LINESTRING (40 40,60 120)', result:true}, +{'wkt1':'LINESTRING (40 40,120 120)', 'wkt2':'LINESTRING (60 240,40 40)', result:true}, +{'wkt1':'LINESTRING (40 40,180 180)', 'wkt2':'LINESTRING (120 120,20 200)', result:true}, +{'wkt1':'LINESTRING (40 40,120 120)', 'wkt2':'LINESTRING (60 240,120 120)', result:true}, +{'wkt1':'LINESTRING (40 40,180 180)', 'wkt2':'LINESTRING (20 180,140 140)', result:true}, +{'wkt1':'LINESTRING (40 40,120 120)', 'wkt2':'LINESTRING (40 120,120 40)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100)', 'wkt2':'LINESTRING (40 40,100 100)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100)', 'wkt2':'LINESTRING (100 100,40 40)', result:true}, +{'wkt1':'LINESTRING (40 40,120 120)', 'wkt2':'LINESTRING (40 120,120 160)', result:false}, +{'wkt1':'LINESTRING (20 20,180 180)', 'wkt2':'LINESTRING (20 20,180 180)', result:true}, +{'wkt1':'LINESTRING (20 20,180 180)', 'wkt2':'LINESTRING (20 20,110 110)', result:true}, +{'wkt1':'LINESTRING (20 20,180 180)', 'wkt2':'LINESTRING (50 50,140 140)', result:true}, +{'wkt1':'LINESTRING (180 180,40 40)', 'wkt2':'LINESTRING (120 120,260 260)', result:true}, +{'wkt1':'LINESTRING (40 40,180 180)', 'wkt2':'LINESTRING (260 260,120 120)', result:true}, +{'wkt1':'LINESTRING (40 40,180 180)', 'wkt2':'LINESTRING (120 120,260 260)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (40 40,20 100,40 160,20 200)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (20 200,40 160,20 100,40 40)', result:true}, +{'wkt1':'LINESTRING (80 240,200 120,100 100,40 40)', 'wkt2':'LINESTRING (20 200,40 160,20 100,40 40)', result:true}, +{'wkt1':'LINESTRING (60 60,60 230,140 230,250 160)', 'wkt2':'LINESTRING (20 20,60 60,250 160,310 230)', result:true}, +{'wkt1':'LINESTRING (60 60,60 230,140 230,250 160)', 'wkt2':'LINESTRING (20 20,110 110,200 110,320 230)', result:true}, +{'wkt1':'LINESTRING (60 110,60 250,360 210)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (60 110,60 250,360 210)', 'wkt2':'LINESTRING (360 210,310 160,110 160,60 110)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (160 160,240 240)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (240 240,160 160)', result:true}, +{'wkt1':'LINESTRING (60 60,60 230,140 230,250 160)', 'wkt2':'LINESTRING (60 150,110 100,170 100,110 230)', result:true}, +{'wkt1':'LINESTRING (60 60,60 230,140 230,250 160)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (200 120,200 190,150 240,200 240)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (200 240,150 240,200 200,200 120)', result:true}, +{'wkt1':'LINESTRING (60 60,60 230,140 230,250 160)', 'wkt2':'LINESTRING (60 230,80 140,120 140,140 230)', result:true}, +{'wkt1':'LINESTRING (60 110,200 110,250 160,300 210)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (60 110,200 110,250 160,300 210,360 210)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (60 110,220 110,250 160,280 110)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (60 110,150 110,200 160,250 110,360 110,360 210)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (130 160,160 110,220 110,250 160,250 210)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (130 160,160 110,190 110,230 210)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (130 160,160 110,200 110,230 160,260 210,360 210)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (130 160,160 110,200 110,230 160,260 210,360 210,380 210)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (130 160,160 110,200 110,230 160,260 210,380 210)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (110 160,160 110,200 110,250 160,250 210)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (110 160,180 110,250 160,320 110)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (140 160,180 80,220 160,250 80)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,130 190)', 'wkt2':'LINESTRING (20 130,70 130,160 40)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,130 190)', 'wkt2':'LINESTRING (40 160,40 100,110 40,170 40)', result:true}, +{'wkt1':'LINESTRING (130 110,180 160,230 110,280 160,330 110)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,130 190)', 'wkt2':'LINESTRING (30 140,80 140,100 100,200 30)', result:true}, +{'wkt1':'LINESTRING (110 110,110 160,180 110,250 160,250 110)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (20 20,80 80,160 80,240 80,300 140)', 'wkt2':'LINESTRING (20 60,60 60,60 140,80 80,100 20,140 140,180 20,200 80,220 20,240 80,300 80,270 110,200 110)', result:true}, +{'wkt1':'LINESTRING (20 20,230 20,20 30,170 30,20 40,230 40,20 50,230 60,60 60,230 70,20 70,180 80,60 80,230 90,20 90,230 100,30 100,210 110,20 110,80 120,20 130,170 130,90 120,230 130,170 140,230 140,80 150,160 140,20 140,70 150,20 150,230 160,80 160,230 170,20 160,180 170,20 170,230 180,20 180,40 190,230 190,20 200,230 200)', 'wkt2':'LINESTRING (30 210,30 60,40 210,40 30,50 190,50 20,60 160,60 50,70 220,70 50,80 20,80 210,90 50,90 150,100 30,100 210,110 20,110 190,120 50,120 180,130 210,120 20,140 210,130 50,150 210,130 20,160 210,140 30,170 210,150 20,180 210,160 20,190 210,180 80,170 50,170 20,180 70,180 20,190 190,190 30,200 210,200 30,210 210,210 20,220 150,220 20)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (40 40,100 100,200 120,80 240)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (80 240,200 120,100 100,40 40)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (80 240,120 200,200 120,100 100,80 80,40 40)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (260 210,240 130,280 120,260 40)', result:false}, +{'wkt1':'LINESTRING (100 20,20 20,20 160,210 160,210 20,110 20,50 120,120 150,200 150)', 'wkt2':'LINESTRING (140 130,100 110,120 60,170 60)', result:false}, +{'wkt1':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (60 110,110 160,310 160,360 210)', 'wkt2':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', result:true}, +{'wkt1':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', 'wkt2':'LINESTRING (60 110,110 160,250 160)', result:true}, +{'wkt1':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', 'wkt2':'LINESTRING (110 160,310 160,340 190)', result:true}, +{'wkt1':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', 'wkt2':'LINESTRING (140 160,250 160,310 160,340 190)', result:true}, +{'wkt1':'LINESTRING (60 110,110 160,250 160,310 160,360 210)', 'wkt2':'LINESTRING (110 160,250 160,310 160)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (200 120,100 100,40 40,140 80,200 40)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (280 240,240 140,200 120,100 100,40 40)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (80 190,140 140,40 40)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (240 200,200 260,80 240,140 180)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (140 180,80 240,200 260,240 200)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (280 240,240 140,200 120,80 240)', result:true}, +{'wkt1':'LINESTRING (20 20,80 80,160 80,240 80,300 140)', 'wkt2':'LINESTRING (20 80,120 80,200 80,260 20)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (100 100,200 120,240 140,280 240)', result:true}, +{'wkt1':'LINESTRING (40 40,100 100,200 120,80 240)', 'wkt2':'LINESTRING (280 240,240 140,200 120,100 100)', result:true}, +{'wkt1':'LINESTRING (20 20,80 80,160 80,240 80,300 140)', 'wkt2':'LINESTRING (80 20,80 80,240 80,300 20)', result:true}, +{'wkt1':'LINESTRING (20 20,80 80,160 80,240 80,300 140)', 'wkt2':'LINESTRING (20 80,80 80,120 80,140 140,160 80,200 80,220 20,240 80,270 110,300 80)', result:true}, +{'wkt1':'LINESTRING (100 100,20 180,180 180)', 'wkt2':'LINESTRING (100 100,180 20,20 20,100 100)', result:true}, +{'wkt1':'LINESTRING (20 100,180 100,100 180)', 'wkt2':'LINESTRING (100 100,180 20,20 20,100 100)', result:true}, +{'wkt1':'LINESTRING (100 40,100 160,180 160)', 'wkt2':'LINESTRING (100 100,180 20,20 20,100 100)', result:true}, +{'wkt1':'LINESTRING (20 100,100 100,180 100,100 180)', 'wkt2':'LINESTRING (100 100,180 20,20 20,100 100)', result:true}, +{'wkt1':'LINESTRING (100 100,160 40)', 'wkt2':'LINESTRING (100 100,180 20,20 20,100 100)', result:true}, +{'wkt1':'LINESTRING (100 100,180 20)', 'wkt2':'LINESTRING (100 100,180 20,20 20,100 100)', result:true}, +{'wkt1':'LINESTRING (60 60,100 100,140 60)', 'wkt2':'LINESTRING (100 100,180 20,20 20,100 100)', result:true}, +{'wkt1':'LINESTRING (100 100,190 10,190 100)', 'wkt2':'LINESTRING (100 100,180 20,20 20,100 100)', result:true}, +{'wkt1':'LINESTRING (100 100,160 40,160 100)', 'wkt2':'LINESTRING (100 100,180 20,20 20,100 100)', result:true}, +{'wkt1':'LINESTRING (60 140,160 40,160 140)', 'wkt2':'LINESTRING (100 100,180 20,20 20,100 100)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (80 80,20 80,140 80,80 20,80 140)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (80 80,20 80,140 80)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (80 80,140 80,80 20,80 140)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (80 80,20 80,140 80,80 20,80 80)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (80 80,20 80,140 80,80 80)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (80 80,20 80,20 140,140 20,80 20,80 80)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (20 140,140 20,100 20,100 80)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (140 80,20 80,120 80,80 20,80 140)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (140 80,20 80,140 80)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (140 80,20 80,80 140,80 20)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (140 80,80 80,20 80,50 140,50 60)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (140 80,20 80,120 80,80 20,80 80,80 140)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (140 80,20 80,80 80,140 80)', result:true}, +{'wkt1':'LINESTRING (20 20,140 140)', 'wkt2':'LINESTRING (140 80,20 80,80 140,80 80,80 20)', result:true}, +{'wkt1':'LINESTRING (130 150,220 150,220 240)', 'wkt2':'LINESTRING (130 240,130 150,220 20,50 20,130 150)', result:true}, +{'wkt1':'LINESTRING (30 150,130 150,250 150)', 'wkt2':'LINESTRING (130 240,130 150,220 20,50 20,130 150)', result:true}, +{'wkt1':'LINESTRING (30 150,250 150)', 'wkt2':'LINESTRING (130 240,130 150,220 20,50 20,130 150)', result:true}, +{'wkt1':'LINESTRING (30 150,130 150,250 150)', 'wkt2':'LINESTRING (130 240,130 20,30 20,130 150)', result:true}, +{'wkt1':'LINESTRING (30 150,250 150)', 'wkt2':'LINESTRING (120 240,120 20,20 20,120 170)', result:true}, +{'wkt1':'LINESTRING (200 200,20 20,200 20,110 110,20 200,110 200,110 110)', 'wkt2':'LINESTRING (110 110,200 110)', result:true}, +{'wkt1':'LINESTRING (110 110,200 110)', 'wkt2':'LINESTRING (200 200,20 20,200 20,110 110,20 200,110 200,110 110)', result:true}, +{'wkt1':'LINESTRING (20 110,200 110)', 'wkt2':'LINESTRING (200 200,20 20,200 20,110 110,20 200,110 200,110 110)', result:true}, +{'wkt1':'LINESTRING (200 200,20 20,200 20,110 110,20 200,110 200,110 110)', 'wkt2':'LINESTRING (20 110,200 110)', result:true}, +{'wkt1':'LINESTRING (90 200,90 130,110 110,150 200)', 'wkt2':'LINESTRING (200 200,20 20,200 20,20 200,20 130,90 130)', result:true}, +{'wkt1':'LINESTRING (200 110,110 110,90 130,90 200)', 'wkt2':'LINESTRING (200 200,20 20,200 20,20 200,20 130,90 130)', result:true}, +{'wkt1':'LINESTRING (80 80,150 80,210 80)', 'wkt2':'MULTILINESTRING ((20 20,140 140),(20 140,140 20))', result:true}, +{'wkt1':'LINESTRING (40 80,160 200,260 20,40 80)', 'wkt2':'LINESTRING (40 80,160 200,260 20,40 80)', result:true}, +{'wkt1':'LINESTRING (40 80,160 200,260 20,40 80)', 'wkt2':'LINESTRING (40 80,260 20,160 200,40 80)', result:true}, +{'wkt1':'LINESTRING (40 80,160 200,260 20,40 80)', 'wkt2':'LINESTRING (260 20,40 80,160 200,260 20)', result:true}, +{'wkt1':'LINESTRING (40 80,160 200,260 20,40 80)', 'wkt2':'LINESTRING (100 140,160 200,260 20,40 80,100 140)', result:true}, +{'wkt1':'LINESTRING (100 100,180 20,20 20,100 100)', 'wkt2':'LINESTRING (100 100,180 180,20 180,100 100)', result:true}, +{'wkt1':'LINESTRING (40 150,40 40,150 40,150 150,40 150)', 'wkt2':'LINESTRING (40 150,150 40,170 20,170 190,40 150)', result:true}, +{'wkt1':'LINESTRING (100 100,180 20,20 20,100 100)', 'wkt2':'LINESTRING (180 100,20 100,100 180,180 100)', result:true}, +{'wkt1':'LINESTRING (100 100,180 20,20 20,100 100)', 'wkt2':'LINESTRING (180 180,100 100,20 180,180 180)', result:true}, +{'wkt1':'LINESTRING (20 180,100 100,20 20,20 180)', 'wkt2':'LINESTRING (100 20,100 180,180 100,100 20)', result:true}, +{'wkt1':'LINESTRING (40 150,40 40,150 40,150 150,40 150)', 'wkt2':'LINESTRING (170 20,20 170,170 170,170 20)', result:true}, +{'wkt1':'LINESTRING (40 150,40 40,150 40,150 150,40 150)', 'wkt2':'LINESTRING (40 150,150 150,90 210,40 150)', result:true}, +{'wkt1':'LINESTRING (40 150,40 40,150 40,150 150,40 150)', 'wkt2':'LINESTRING (20 150,170 150,90 230,20 150)', result:true}, +{'wkt1':'LINESTRING (40 150,40 40,150 40,150 150,40 150)', 'wkt2':'LINESTRING (40 150,150 150,150 40,20 40,20 150,40 150)', result:true}, +{'wkt1':'LINESTRING (110 110,200 20,20 20,110 110)', 'wkt2':'LINESTRING (110 110,200 200,110 110,20 200,20 110,200 110)', result:true}, +{'wkt1':'LINESTRING (110 110,200 20,20 20,110 110)', 'wkt2':'LINESTRING (110 110,20 110,200 110,50 110,110 170)', result:true}, +{'wkt1':'LINESTRING (110 110,200 20,20 20,110 110)', 'wkt2':'LINESTRING (110 110,20 200,110 200,110 110,200 200)', result:true}, +{'wkt1':'LINESTRING (110 110,200 20,20 20,110 110)', 'wkt2':'LINESTRING (200 20,20 200,200 200,110 110,110 40)', result:true}, +{'wkt1':'LINESTRING (110 110,200 20,20 20,110 110)', 'wkt2':'LINESTRING (200 20,20 200,200 200,20 20)', result:true}, +{'wkt1':'LINESTRING (110 110,20 110,110 20,20 20,110 110)', 'wkt2':'LINESTRING (110 110,200 200,110 200,200 110,110 110)', result:true}, +{'wkt1':'LINESTRING (20 120,120 120,20 20,120 20,20 120)', 'wkt2':'LINESTRING (170 100,70 100,170 170,70 170,170 100)', result:true}, +{'wkt1':'LINESTRING (20 110,110 110,20 20,110 20,20 110)', 'wkt2':'LINESTRING (110 160,70 110,60 160,20 130,110 160)', result:true}, +{'wkt1':'LINESTRING (20 200,200 200,20 20,200 20,20 200)', 'wkt2':'LINESTRING (20 110,200 110,200 160,20 60,20 110)', result:true}, +{'wkt1':'LINESTRING (20 110,110 110,20 20,110 20,20 110)', 'wkt2':'LINESTRING (200 200,110 110,200 110,110 200,200 200)', result:true}, +{'wkt1':'LINESTRING (20 120,120 120,20 20,120 20,20 120)', 'wkt2':'LINESTRING (220 120,120 20,220 20,120 120,220 120)', result:true}, +{'wkt1':'MULTILINESTRING ((70 20,20 90,70 170),(70 170,120 90,70 20))', 'wkt2':'MULTILINESTRING ((70 20,20 90,70 170),(70 170,120 90,70 20))', result:true}, +{'wkt1':'MULTILINESTRING ((20 20,90 20,170 20),(90 20,90 80,90 140))', 'wkt2':'MULTILINESTRING ((20 20,90 20,170 20),(90 20,90 80,90 140))', result:true}, +{'wkt1':'MULTILINESTRING ((20 20,90 20,170 20),(90 20,90 80,90 140))', 'wkt2':'MULTILINESTRING ((90 140,90 60,90 20),(170 20,130 20,20 20))', result:true}, +{'wkt1':'MULTILINESTRING ((20 20,90 20,170 20),(90 20,90 80,90 140))', 'wkt2':'MULTILINESTRING ((90 20,170 100,170 140),(170 60,90 20,20 60),(130 100,130 60,90 20,50 90))', result:true}, +{'wkt1':'MULTILINESTRING ((20 20,90 20,170 20),(90 20,90 80,90 140))', 'wkt2':'MULTILINESTRING ((90 20,170 100,170 140),(130 140,130 60,90 20,20 90,90 20,130 60,170 60))', result:true}, +{'wkt1':'MULTILINESTRING ((20 20,90 20,170 20),(90 20,90 80,90 140))', 'wkt2':'MULTILINESTRING ((90 20,170 100,170 140),(170 60,90 20,20 60))', result:true}, +{'wkt1':'MULTILINESTRING ((20 20,90 20,170 20),(90 20,90 80,90 140))', 'wkt2':'MULTILINESTRING ((90 20,170 100,170 140),(170 60,90 20,20 60),(130 100,90 20))', result:true}, +{'wkt1':'MULTILINESTRING ((20 20,90 20,170 20),(90 20,90 80,90 140))', 'wkt2':'MULTILINESTRING ((90 20,170 100,170 140),(170 60,90 20,20 60),(120 100,170 100,90 20))', result:true}, +{'wkt1':'MULTILINESTRING ((20 20,90 20,170 20),(90 20,90 80,90 140))', 'wkt2':'MULTILINESTRING ((90 20,170 100,170 140),(170 60,90 20,20 60),(120 100,170 100,90 20))', result:true}, +{'wkt1':'MULTILINESTRING ((20 20,90 20,170 20),(90 20,90 80,90 140))', 'wkt2':'MULTILINESTRING ((90 20,170 100,170 140),(130 140,130 60,90 20,20 90,90 20))', result:true}, +{'wkt1':'MULTILINESTRING ((20 20,90 20,170 20),(90 20,90 80,90 140))', 'wkt2':'MULTILINESTRING ((90 20,170 100,170 140),(170 60,90 20,20 60,20 140,90 20))', result:true}, +{'wkt1':'MULTILINESTRING ((20 20,90 90,20 160),(90 160,90 20))', 'wkt2':'MULTILINESTRING ((160 160,90 90,160 20),(160 120,120 120,90 90,160 60))', result:true}, +{'wkt1':'MULTILINESTRING ((20 20,90 90,20 160),(90 160,90 20))', 'wkt2':'MULTILINESTRING ((160 160,90 90,160 20),(160 120,120 120,90 90,120 60,160 60))', result:true}, +{'wkt1':'MULTILINESTRING ((20 20,90 90,20 160),(90 160,90 20))', 'wkt2':'MULTILINESTRING ((160 160,90 90,160 20),(160 120,90 90,160 60))', result:true}, +{'wkt1':'POINT (20 20)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:false}, +{'wkt1':'POINT (70 170)', 'wkt2':'POLYGON ((110 230,80 160,20 160,20 20,200 20,200 160,140 160,110 230))', result:false}, +{'wkt1':'POINT (110 130)', 'wkt2':'POLYGON ((20 160,80 160,110 100,140 160,200 160,200 20,20 20,20 160))', result:false}, +{'wkt1':'POINT (100 70)', 'wkt2':'POLYGON ((20 150,100 150,40 50,170 50,110 150,190 150,190 20,20 20,20 150))', result:false}, +{'wkt1':'POINT (100 70)', 'wkt2':'POLYGON ((20 150,100 150,40 50,160 50,100 150,180 150,180 20,20 20,20 150))', result:false}, +{'wkt1':'POINT (60 120)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'POINT (110 120)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'POINT (160 120)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'POINT (100 150)', 'wkt2':'POLYGON ((20 150,100 150,40 50,160 50,100 150,180 150,180 20,20 20,20 150))', result:true}, +{'wkt1':'POINT (100 80)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'POINT (60 160)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(280 50,100 50,190 140,280 50))', result:false}, +{'wkt1':'POINT (190 90)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(280 50,100 50,190 140,280 50))', result:false}, +{'wkt1':'POINT (190 190)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(280 50,100 50,190 140,280 50))', result:true}, +{'wkt1':'POINT (360 20)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(280 50,100 50,190 140,280 50))', result:true}, +{'wkt1':'POINT (130 130)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(280 50,100 50,190 140,280 50))', result:true}, +{'wkt1':'POINT (280 50)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(280 50,100 50,190 140,280 50))', result:true}, +{'wkt1':'POINT (150 100)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(280 50,100 50,190 140,280 50))', result:true}, +{'wkt1':'POINT (100 50)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(280 50,100 50,190 140,280 50))', result:true}, +{'wkt1':'POINT (140 120)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(280 50,100 50,190 140,280 50))', result:true}, +{'wkt1':'POINT (190 50)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(90 50,150 110,190 50,90 50),(190 50,230 110,290 50,190 50))', result:true}, +{'wkt1':'POINT (180 90)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(180 140,180 40,80 40,180 140),(180 90,210 140,310 40,230 40,180 90))', result:true}, +{'wkt1':'MULTIPOINT (20 80,110 160,20 160)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:false}, +{'wkt1':'MULTIPOINT (20 80,60 120,20 160)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'MULTIPOINT (10 80,110 170,110 120)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'MULTIPOINT (10 80,110 170,160 120)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'MULTIPOINT (20 120,60 120,110 120,160 120,200 120)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'MULTIPOINT (60 120,110 120,160 120)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'MULTIPOINT (60 120,160 120,160 40,60 40)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'MULTIPOINT (20 150,60 120,110 80)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'MULTIPOINT (110 80,160 120,200 160)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'MULTIPOINT (110 80,110 120,110 160)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'MULTIPOINT (110 170,110 80)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'MULTIPOINT (60 120,160 120,110 80,110 170)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'MULTIPOINT (90 80,130 80)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'MULTIPOINT (60 120,160 120,110 80)', 'wkt2':'POLYGON ((60 120,60 40,160 40,160 120,60 120))', result:true}, +{'wkt1':'MULTIPOINT (40 170,40 90,130 170)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(280 50,100 50,190 140,280 50))', result:false}, +{'wkt1':'MULTIPOINT (90 170,280 170,190 90)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(280 50,100 50,190 140,280 50))', result:false}, +{'wkt1':'MULTIPOINT (190 110,150 70,230 70)', 'wkt2':'POLYGON ((190 190,360 20,20 20,190 190),(280 50,100 50,190 140,280 50))', result:false}, +{'wkt1':'POINT (100 100)', 'wkt2':'MULTIPOLYGON (((20 100,20 20,100 20,100 100,20 100)),((100 180,100 100,180 100,180 180,100 180)))', result:true}, +{'wkt1':'POINT (20 100)', 'wkt2':'MULTIPOLYGON (((20 100,20 20,100 20,100 100,20 100)),((100 180,100 100,180 100,180 180,100 180)))', result:true}, +{'wkt1':'POINT (60 100)', 'wkt2':'MULTIPOLYGON (((20 100,20 20,100 20,100 100,20 100)),((100 180,100 100,180 100,180 180,100 180)))', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'MULTIPOLYGON (((110 110,20 200,200 200,110 110),(110 110,80 180,140 180,110 110)),((110 110,20 20,200 20,110 110),(110 110,80 40,140 40,110 110)))', result:true}, +{'wkt1':'POINT (110 200)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:false}, +{'wkt1':'POINT (90 80)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'POINT (340 240)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'POINT (230 150)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'POINT (160 150)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'POINT (90 150)', 'wkt2':'LINESTRING (150 150,20 20,280 20,150 150)', result:false}, +{'wkt1':'POINT (150 80)', 'wkt2':'LINESTRING (150 150,20 20,280 20,150 150)', result:false}, +{'wkt1':'POINT (150 150)', 'wkt2':'LINESTRING (150 150,20 20,280 20,150 150)', result:true}, +{'wkt1':'POINT (100 20)', 'wkt2':'LINESTRING (150 150,20 20,280 20,150 150)', result:true}, +{'wkt1':'POINT (20 20)', 'wkt2':'LINESTRING (150 150,20 20,280 20,150 150)', result:true}, +{'wkt1':'POINT (220 220)', 'wkt2':'LINESTRING (110 110,220 20,20 20,110 110,220 220)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,220 20,20 20,110 110,220 220)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,220 20,20 20,220 220)', result:true}, +{'wkt1':'POINT (110 20)', 'wkt2':'LINESTRING (110 110,220 20,20 20,220 220)', result:true}, +{'wkt1':'POINT (220 20)', 'wkt2':'LINESTRING (110 110,220 20,20 20,220 220)', result:true}, +{'wkt1':'POINT (110 20)', 'wkt2':'LINESTRING (220 220,20 20,220 20,110 110)', result:true}, +{'wkt1':'POINT (20 20)', 'wkt2':'LINESTRING (220 220,20 20,220 20,110 110)', result:true}, +{'wkt1':'POINT (20 110)', 'wkt2':'LINESTRING (20 200,20 20,110 20,20 110,110 200)', result:true}, +{'wkt1':'POINT (20 200)', 'wkt2':'LINESTRING (20 200,200 20,20 20,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (20 200,200 20,140 20,140 80,80 140,20 140)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (20 200,200 20,20 20,200 200)', result:true}, +{'wkt1':'POINT (80 140)', 'wkt2':'LINESTRING (20 200,110 110,200 20,140 20,140 80,110 110,80 140,20 140)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (20 200,110 110,200 20,140 20,140 80,110 110,80 140,20 140)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (20 200,200 20,140 20,140 80,110 110,80 140,20 140)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (20 200,110 110,200 20,20 20,110 110,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (20 200,200 20,20 20,110 110,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (20 200,110 110,20 20,200 20,110 110,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,110 200,20 200,110 110,200 20,140 20,140 80,110 110,80 140,20 140)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,110 200,20 200,200 20,140 20,140 80,110 110,80 140,20 140)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,110 200,20 200,200 20,140 20,140 80,80 140,20 140)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,110 200,20 200,110 110,200 20,20 20,110 110,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,110 200,20 200,200 20,20 20,110 110,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,110 200,20 200,200 20,20 20,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,110 200,20 200,110 110,20 20,200 20,110 110,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,110 200,20 200,200 20,200 110,110 110,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (200 200,110 110,20 20,200 20,110 110,20 200,110 200,110 110)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (200 200,20 20,200 20,110 110,20 200,110 200,110 110)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (200 200,20 20,200 20,20 200,110 200,110 110)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (200 200,110 110,200 20,20 20,110 110,20 200,110 200,110 110)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (200 200,20 20,20 110,110 110,20 200,110 200,110 110)', result:true}, +{'wkt1':'POINT (110 160)', 'wkt2':'LINESTRING (110 160,200 250,110 250,110 160,110 110,110 20,20 20,110 110)', result:true}, +{'wkt1':'POINT (110 160)', 'wkt2':'LINESTRING (110 160,200 250,110 250,110 110,110 20,20 20,110 110)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 160,200 250,110 250,110 160,110 110,110 20,20 20,110 110)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 160,200 250,110 250,110 160,110 20,20 20,110 110)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,200 200,110 200,110 110,110 20,20 20,110 110)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,200 200,110 200,110 20,20 20,110 110)', result:true}, +{'wkt1':'POINT (140 200)', 'wkt2':'LINESTRING (110 110,200 200,110 200,110 110,110 20,20 20,110 110)', result:true}, +{'wkt1':'POINT (110 200)', 'wkt2':'LINESTRING (110 110,200 200,110 200,110 110,110 20,20 20,110 110)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,200 200,110 200,110 110,110 20,200 20,110 110)', result:true}, +{'wkt1':'POINT (140 200)', 'wkt2':'LINESTRING (110 110,200 200,110 200,110 110,110 20,200 20,110 110)', result:true}, +{'wkt1':'POINT (110 200)', 'wkt2':'LINESTRING (110 110,200 200,110 200,110 110,110 20,200 20,110 110)', result:true}, +{'wkt1':'POINT (90 130)', 'wkt2':'LINESTRING (90 130,20 130,20 200,90 130,200 20,20 20,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (90 130,20 130,20 200,90 130,200 20,20 20,200 200)', result:true}, +{'wkt1':'POINT (90 130)', 'wkt2':'LINESTRING (90 130,20 130,20 200,200 20,20 20,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (90 130,20 130,20 200,200 20,20 20,200 200)', result:true}, +{'wkt1':'POINT (90 130)', 'wkt2':'LINESTRING (200 200,20 20,200 20,90 130,20 200,20 130,90 130)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (200 200,20 20,200 20,90 130,20 200,20 130,90 130)', result:true}, +{'wkt1':'POINT (90 130)', 'wkt2':'LINESTRING (200 200,20 20,200 20,20 200,20 130,90 130)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (200 200,20 20,200 20,20 200,20 130,90 130)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,20 130,20 200,110 110,200 20,20 20,110 110,200 200,200 130,110 110)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,20 130,20 200,200 20,20 20,200 200,200 130,110 110)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,80 200,20 200,110 110,200 20,20 20,110 110,200 200,140 200,110 110)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 110,80 200,20 200,200 20,20 20,200 200,140 200,110 110)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (200 200,20 20,200 20,20 200,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (200 200,110 110,20 20,200 20,110 110,20 200,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (200 200,110 110,200 20,20 20,110 110,20 200,200 200)', result:true}, +{'wkt1':'POINT (90 130)', 'wkt2':'LINESTRING (90 130,20 130,20 200,90 130,110 110,200 20,20 20,110 110,200 200,90 130)', result:true}, +{'wkt1':'POINT (90 130)', 'wkt2':'LINESTRING (90 130,20 130,20 200,110 110,200 20,20 20,110 110,200 200,90 130)', result:true}, +{'wkt1':'POINT (90 130)', 'wkt2':'LINESTRING (90 130,90 200,20 200,90 130,110 110,200 20,20 20,110 110,200 200,90 130)', result:true}, +{'wkt1':'POINT (90 130)', 'wkt2':'LINESTRING (90 130,90 200,20 200,200 20,20 20,200 200,90 130)', result:true}, +{'wkt1':'POINT (90 130)', 'wkt2':'LINESTRING (90 130,90 200,20 200,110 110,200 20,20 20,110 110,200 200,90 130)', result:true}, +{'wkt1':'POINT (90 130)', 'wkt2':'LINESTRING (90 130,90 200,20 200,200 20,20 20,200 200,90 130)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (90 130,90 200,20 200,200 20,20 20,200 200,90 130)', result:true}, +{'wkt1':'POINT (110 200)', 'wkt2':'LINESTRING (110 200,110 110,20 20,200 20,110 110,110 200,200 200)', result:true}, +{'wkt1':'POINT (110 150)', 'wkt2':'LINESTRING (110 200,110 110,20 20,200 20,110 110,110 200,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 200,110 110,20 20,200 20,110 110,110 200,200 200)', result:true}, +{'wkt1':'POINT (110 200)', 'wkt2':'LINESTRING (110 200,110 110,20 20,200 20,110 110,110 200)', result:true}, +{'wkt1':'POINT (110 150)', 'wkt2':'LINESTRING (110 200,110 110,20 20,200 20,110 110,110 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (110 200,110 110,20 20,200 20,110 110,110 200)', result:true}, +{'wkt1':'POINT (110 150)', 'wkt2':'LINESTRING (20 200,110 200,110 110,20 20,200 20,110 110,110 200,200 200)', result:true}, +{'wkt1':'POINT (110 110)', 'wkt2':'LINESTRING (20 200,110 200,110 110,20 20,200 20,110 110,110 200,200 200)', result:true}, +{'wkt1':'POINT (110 200)', 'wkt2':'LINESTRING (20 200,110 200,110 110,20 20,200 20,110 110,110 200,200 200)', result:true}, +{'wkt1':'MULTIPOINT (50 250,90 220,130 190)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:false}, +{'wkt1':'MULTIPOINT (180 180,230 130,280 80)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:false}, +{'wkt1':'MULTIPOINT (50 120,90 80,130 40)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'MULTIPOINT (300 280,340 240,380 200)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'MULTIPOINT (230 150,260 120,290 90)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'MULTIPOINT (200 190,240 150,270 110)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'MULTIPOINT (160 150,190 120,220 90)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'MULTIPOINT (120 190,160 150,200 110)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'MULTIPOINT (90 80,160 150,340 240)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'MULTIPOINT (90 80,160 150,300 150)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'MULTIPOINT (90 80,160 150,240 150)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'MULTIPOINT (90 80,130 120,210 150)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'MULTIPOINT (130 120,210 150,340 200)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'MULTIPOINT (160 150,240 150,340 210)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'MULTIPOINT (160 150,300 150,340 150)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'MULTIPOINT (160 150,240 150,340 240)', 'wkt2':'LINESTRING (90 80,160 150,300 150,340 150,340 240)', result:true}, +{'wkt1':'POINT (20 20)', 'wkt2':'POINT (20 20)', result:true}, +{'wkt1':'POINT (20 20)', 'wkt2':'POINT (40 60)', result:false}, +{'wkt1':'POINT (40 40)', 'wkt2':'MULTIPOINT (20 20,80 80,20 120)', result:false}, +{'wkt1':'POINT (20 20)', 'wkt2':'MULTIPOINT (20 20,80 80,20 120)', result:true}, +{'wkt1':'MULTIPOINT (40 40,80 60,120 100)', 'wkt2':'MULTIPOINT (40 40,80 60,120 100)', result:true}, +{'wkt1':'MULTIPOINT (40 40,80 60,120 100)', 'wkt2':'MULTIPOINT (40 40,120 100,80 60)', result:true}, +{'wkt1':'MULTIPOINT (40 40,60 100,100 60,120 120)', 'wkt2':'MULTIPOINT (20 120,60 60,100 100,140 40)', result:false}, +{'wkt1':'MULTIPOINT (20 20,80 70,140 120,200 170)', 'wkt2':'MULTIPOINT (20 20,80 70,140 120,200 170)', result:true}, +{'wkt1':'MULTIPOINT (20 20,140 120,80 70,200 170)', 'wkt2':'MULTIPOINT (80 70,20 20,200 170,140 120)', result:true}, +{'wkt1':'MULTIPOINT (20 20,80 70,140 120,200 170)', 'wkt2':'MULTIPOINT (80 70,140 120)', result:true}, +{'wkt1':'MULTIPOINT (80 70,20 20,200 170,140 120)', 'wkt2':'MULTIPOINT (140 120,80 70)', result:true}, +{'wkt1':'MULTIPOINT (80 70,20 20,200 170,140 120)', 'wkt2':'MULTIPOINT (80 170,140 120,200 80)', result:true}, +{'wkt1':'MULTIPOINT (80 70,20 20,200 170,140 120)', 'wkt2':'MULTIPOINT (80 170,140 120,200 80,80 70)', result:true}, +{'wkt1':'POLYGON((-8239529.462853361 4980952.065110421,-8224242.057199065 4980952.065110421,-8224242.057199064 4988844.188279452,-8239529.462853361 4988844.188279452,-8239529.462853361 4980952.065110421))', 'wkt2':'POINT(-8225445.94039435 4982695.78481786)', result:true}, +{'wkt1':'POLYGON((-8239529.462853361 4980952.065110421,-8224242.057199065 4980952.065110421,-8224242.057199064 4988844.188279452,-8239529.462853361 4988844.188279452,-8239529.462853361 4980952.065110421))', 'wkt2':'POINT(-8224242.0571985 4982695.78481786)', result:false}, +{'wkt1':'POLYGON((-8239529.462853361 4980952.065110421,-8224242.057199065 4980952.065110421,-8224242.057199064 4988844.188279452,-8239529.462853361 4988844.188279452,-8239529.462853361 4980952.065110421))', 'wkt2':'POINT(-8224242.0571995 4982695.78481786)', result:true} +]; diff --git a/openlayers/tests/data/osm.js b/openlayers/tests/data/osm.js new file mode 100644 index 0000000..6c94459 --- /dev/null +++ b/openlayers/tests/data/osm.js @@ -0,0 +1,14 @@ +var osm_test_data = { + 'node': ' ', + 'node_with_tags': ' ', + 'way': ' ', + 'node_way': ' ' +}; + +var osm_serialized_data = { + 'node':'', + 'node_with_tags':'', + 'way':'', + 'node_way':'' +}; + diff --git a/openlayers/tests/data_Layer_Text_textfile.txt b/openlayers/tests/data_Layer_Text_textfile.txt new file mode 100644 index 0000000..8250988 --- /dev/null +++ b/openlayers/tests/data_Layer_Text_textfile.txt @@ -0,0 +1,3 @@ +point image +10,20 http://boston.openguides.org/markers/ORANGE.png +15,25 http://boston.openguides.org/markers/ORANGE.png diff --git a/openlayers/tests/data_Layer_Text_textfile_2.txt b/openlayers/tests/data_Layer_Text_textfile_2.txt new file mode 100644 index 0000000..91a8093 --- /dev/null +++ b/openlayers/tests/data_Layer_Text_textfile_2.txt @@ -0,0 +1,3 @@ +point title description image +10,20 a b http://boston.openguides.org/markers/ORANGE.png +15,25 c d http://boston.openguides.org/markers/ORANGE.png diff --git a/openlayers/tests/data_Layer_Text_textfile_overflow.txt b/openlayers/tests/data_Layer_Text_textfile_overflow.txt new file mode 100644 index 0000000..bb4768e --- /dev/null +++ b/openlayers/tests/data_Layer_Text_textfile_overflow.txt @@ -0,0 +1,3 @@ +overflow point title description image +auto 10,20 a b http://boston.openguides.org/markers/ORANGE.png +hidden 15,25 c d http://boston.openguides.org/markers/ORANGE.png diff --git a/openlayers/tests/geom_eq.js b/openlayers/tests/geom_eq.js new file mode 100644 index 0000000..26f3a95 --- /dev/null +++ b/openlayers/tests/geom_eq.js @@ -0,0 +1,110 @@ +/** + * File: xml_eq.js + * Adds a xml_eq method to AnotherWay test objects. + * + */ + +(function() { + + /** + * Function assertEqual + * Test two objects for equivalence (based on ==). Throw an exception + * if not equivalent. + * + * Parameters: + * got - {Object} + * expected - {Object} + * msg - {String} The message to be thrown. This message will be appended + * with ": got {got} but expected {expected}" where got and expected are + * replaced with string representations of the above arguments. + */ + function assertEqual(got, expected, msg) { + if(got === undefined) { + got = "undefined"; + } else if (got === null) { + got = "null"; + } + if(expected === undefined) { + expected = "undefined"; + } else if (expected === null) { + expected = "null"; + } + if(got != expected) { + throw msg + ": got '" + got + "' but expected '" + expected + "'"; + } + } + + /** + * Function assertGeometryEqual + * Test two geometries for equivalence. Geometries are considered + * equivalent if they are of the same class, and given component + * geometries, if all components are equivalent. Throws a message as + * exception if not equivalent. + * + * Parameters: + * got - {OpenLayers.Geometry} + * expected - {OpenLayers.Geometry} + * options - {Object} Optional object for configuring test options. + */ + function assertGeometryEqual(got, expected, options) { + + var OpenLayers = Test.AnotherWay._g_test_iframe.OpenLayers; + + // compare types + assertEqual(typeof got, typeof expected, "Object types mismatch"); + + // compare classes + assertEqual(got.CLASS_NAME, expected.CLASS_NAME, "Object class mismatch"); + + if(got instanceof OpenLayers.Geometry.Point) { + // compare points + assertEqual(got.x, expected.x, "x mismatch"); + assertEqual(got.y, expected.y, "y mismatch"); + assertEqual(got.z, expected.z, "z mismatch"); + } else { + // compare components + assertEqual( + got.components.length, expected.components.length, + "Component length mismatch for " + got.CLASS_NAME + ); + for(var i=0; i + + +This is an RSS file. Copy the URL into your aggregator of choice. If you don't know what this means and want to learn more, please see: http://platial.typepad.com/news/2006/04/really_simple_t.html for more info. +http://platial.com +Crschmidt's Places At Platial + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +http://platial.com/place/90306 +Knitting Room +Address: 2 lake St, Arlington, MA
Tags: knitting, yarn, pins and needles, handspun, hand dyed, novelty yarn, fancy, simple, young, hip, friendly, needles, addy, cute hats

Map this on Platial
Grab this on Platial ]]>
+42.405696 -71.142197 +crschmidt +2006-06-08T17:35:01.942452+00:00 +
+ +http://platial.com/place/67230 +Knitting Room +Address: 2 lake St, Arlington, MA
Tags: knitting, yarn, pins and needles, handspun, hand dyed, novelty yarn, fancy, simple, young, hip, friendly, needles, addy, cute hats

Map this on Platial
Grab this on Platial ]]>
+42.405524 -71.142273 +crschmidt +2006-04-24T11:35:26.733857+00:00 +
+ +http://platial.com/place/65645 +†¢¢™£ˆøœ +Address: 151 Erie St., Cambridge, MA
Tags: platial graffiti

Map this on Platial
Grab this on Platial ]]>
+42.352455 -71.110210 +crschmidt +2006-04-20T08:56:12.696224+00:00 +
+ +http://platial.com/place/62200 +Allen Hall +Address: 1301 W Gregory Dr, Urbana, IL
Tags: dorm, uiuc, college



Map this on Platial
Grab this on Platial ]]>
+40.104172 -88.220623 +crschmidt +2006-04-14T08:01:01.872873+00:00 +
+ +http://platial.com/place/28232 +Bagby Hot Springs, OR +Tags: 20s, rosalie, romance, childhood, hike, camping, soak, relax, beautiful, hot springs, bathhouse, favorite, popular, crowded, organized, honeymoon tub, plumbing made from hollowed out trees, hot springs, mt hood, notorious car break in spot, rash, bacteria

Map this on Platial
Grab this on Platial ]]>
+44.936000 -122.173000 +crschmidt +2006-01-03T23:10:18.553063+00:00 +
+ +http://platial.com/place/43666 +Shooting Location for "The Field of Dreams" Film +Address: Dyersville, Iowa
Tags: iowa, baseball, movie locations, field of dreams, kevin costner, costner, dyersville, kinsella, james earl jones, chicago black sox, shoeless joe, joe jackson, famous farms, film, movie, cinema, shooting location

Map this on Platial
Grab this on Platial ]]>
+42.481213 -91.111679 +echinodermata +2006-03-23T11:40:17.654061+00:00 +
+ +http://platial.com/place/28394 +Moffetts (Bonneville) Hot Springs, WA +Tags: soak, hot springs, relax, nature

Map this on Platial
Grab this on Platial ]]>
+45.658000 -121.962000 +crschmidt +2006-01-03T23:16:27.329816+00:00 +
+ +http://platial.com/place/28251 +Austin Hot Springs, OR +Tags: soak, hot springs, relax, nature, popular, crowded

Map this on Platial
Grab this on Platial ]]>
+45.021000 -122.009000 +crschmidt +2006-01-03T23:11:04.489886+00:00 +
+ +http://platial.com/place/28392 +Rock Creek Hot Springs, WA +Tags: soak, hot springs, relax, nature

Map this on Platial
Grab this on Platial ]]>
+45.723000 -121.927000 +crschmidt +2006-01-03T23:16:22.636855+00:00 +
+ +http://platial.com/place/28391 +St. Martins (Wind River) Hot Springs, WA +Tags: hot springs, soak, relax, nature, wonderful

Map this on Platial
Grab this on Platial ]]>
+45.728000 -121.800000 +crschmidt +2006-01-03T23:16:20.383244+00:00 +
+ +http://platial.com/place/28231 +Breitenbush Hot Springs, OR +Tags: hot springs, resort, relax, nature, beautiful, http:www.breitenbush.com, soaking

Map this on Platial
Grab this on Platial ]]>
+44.782000 -121.975000 +crschmidt +2006-01-03T23:10:16.529195+00:00 +
+ +http://platial.com/place/28393 +Collins Hot Springs, WA +Tags: portland, nice, hot springs, soak

Map this on Platial
Grab this on Platial ]]>
+45.701000 -121.728000 +crschmidt +2006-01-03T23:16:24.648745+00:00 +
+ +http://platial.com/place/31685 +Darwin's Ltd. +Address: 148 Mount Auburn St, Cambridge, MA
Tags: coffee, beer, sandwiches, freewifi



Map this on Platial
Grab this on Platial ]]>
+42.373974 -71.125053 +crschmidt +2006-01-10T09:24:08.152985+00:00 +
+ +http://platial.com/place/28596 +Huckleberry Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.115000 -110.684000 +crschmidt +2006-01-03T23:24:32.283094+00:00 +
+ +http://platial.com/place/28595 +South Entrance Hot Springs, WY +


Map this on Platial
Grab this on Platial ]]>
+44.142000 -110.656000 +crschmidt +2006-01-03T23:24:30.279497+00:00 +
+ +http://platial.com/place/28594 +Crawfish Creek Hot Springs, WY +


Map this on Platial
Grab this on Platial ]]>
+44.157000 -110.699000 +crschmidt +2006-01-03T23:24:28.280271+00:00 +
+ +http://platial.com/place/28593 +Crawfish Creek Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.165000 -110.723000 +crschmidt +2006-01-03T23:24:20.364077+00:00 +
+ +http://platial.com/place/28592 +Snake Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.169000 -110.583000 +crschmidt +2006-01-03T23:24:12.234974+00:00 +
+ +http://platial.com/place/28591 +Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.187000 -110.726000 +crschmidt +2006-01-03T23:24:10.027857+00:00 +
+ +http://platial.com/place/28590 +Hot Springs on Upper Snake River, WY +
Map this on Platial
Grab this on Platial ]]>
+44.204000 -110.486000 +crschmidt +2006-01-03T23:24:07.79658+00:00 +
+ +http://platial.com/place/28589 +Hot Springs on lewis Lake, WY +
Map this on Platial
Grab this on Platial ]]>
+44.276000 -110.636000 +crschmidt +2006-01-03T23:24:05.683418+00:00 +
+ +http://platial.com/place/28588 +Rustic Geyser, WY +
Map this on Platial
Grab this on Platial ]]>
+44.282000 -110.506000 +crschmidt +2006-01-03T23:24:03.66329+00:00 +
+ +http://platial.com/place/28587 +Bechler River Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.285000 -110.900000 +crschmidt +2006-01-03T23:24:01.611442+00:00 +
+ +http://platial.com/place/28586 +Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.290000 -110.504000 +crschmidt +2006-01-03T23:23:59.658699+00:00 +
+ +http://platial.com/place/28585 +Heart Lake Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.299000 -110.517000 +crschmidt +2006-01-03T23:23:57.181801+00:00 +
+ +http://platial.com/place/28584 +Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.307000 -110.526000 +crschmidt +2006-01-03T23:23:55.240485+00:00 +
+ +http://platial.com/place/28583 +Hot Springs on lewis Lake, WY +
Map this on Platial
Grab this on Platial ]]>
+44.309000 -110.654000 +crschmidt +2006-01-03T23:23:53.22295+00:00 +
+ +http://platial.com/place/28582 +Shoshone Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.354000 -110.800000 +crschmidt +2006-01-03T23:23:51.179049+00:00 +
+ +http://platial.com/place/28581 +Hot Springs on Continental Divide, WY +
Map this on Platial
Grab this on Platial ]]>
+44.401000 -110.936000 +crschmidt +2006-01-03T23:23:49.077176+00:00 +
+ +http://platial.com/place/28580 +Hot Springs on Upper Firehole River, WY +
Map this on Platial
Grab this on Platial ]]>
+44.404000 -110.824000 +crschmidt +2006-01-03T23:23:47.054664+00:00 +
+ +http://platial.com/place/28579 +Summit Lake Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.410000 -110.953000 +crschmidt +2006-01-03T23:23:45.039394+00:00 +
+ +http://platial.com/place/28578 +Lone Star Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.414000 -110.817000 +crschmidt +2006-01-03T23:23:42.938808+00:00 +
+ +http://platial.com/place/28577 +West. Thumb Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.417000 -110.570000 +crschmidt +2006-01-03T23:23:40.90238+00:00 +
+ +http://platial.com/place/28576 +Lone Star Geyser, WY +
Map this on Platial
Grab this on Platial ]]>
+44.418000 -110.805000 +crschmidt +2006-01-03T23:23:38.844625+00:00 +
+ +http://platial.com/place/28575 +Smoke Jumper Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.421000 -110.952000 +crschmidt +2006-01-03T23:23:36.818513+00:00 +
+ +http://platial.com/place/28574 +West. Thumb Geyser Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.422000 -110.574000 +crschmidt +2006-01-03T23:23:34.767729+00:00 +
+ +http://platial.com/place/28573 +Potts Hot Spring Basin, WY +
Map this on Platial
Grab this on Platial ]]>
+44.433000 -110.581000 +crschmidt +2006-01-03T23:23:32.749915+00:00 +
+ +http://platial.com/place/28572 +Hot Springs, WY +
Map this on Platial
Grab this on Platial ]]>
+44.433000 -110.813000 +crschmidt +2006-01-03T23:23:30.829745+00:00 +
+ +http://platial.com/place/28571 +Hot Springs on Continental Divide, WY +
Map this on Platial
Grab this on Platial ]]>
+44.438000 -110.977000 +crschmidt +2006-01-03T23:23:28.730401+00:00 +
+ +http://platial.com/place/28570 +SouthEastern Group, WY +
Map this on Platial
Grab this on Platial ]]>
+44.459000 -110.817000 +crschmidt +2006-01-03T23:23:26.706763+00:00 +
+
\ No newline at end of file diff --git a/openlayers/tests/grid_inittiles.html b/openlayers/tests/grid_inittiles.html new file mode 100644 index 0000000..40035a2 --- /dev/null +++ b/openlayers/tests/grid_inittiles.html @@ -0,0 +1,30 @@ + + + + + + + +

Grid Test

+

Map should display with two centered tiles. If there appear to be a combination of two zoom levels, then this test is failed, and something is broken in OpenLayers.

+
+ + diff --git a/openlayers/tests/index.html b/openlayers/tests/index.html new file mode 100644 index 0000000..86ec617 --- /dev/null +++ b/openlayers/tests/index.html @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/openlayers/tests/list-tests.html b/openlayers/tests/list-tests.html new file mode 100644 index 0000000..52b23c8 --- /dev/null +++ b/openlayers/tests/list-tests.html @@ -0,0 +1,170 @@ +
    +
  • Ajax.html
  • +
  • BaseTypes.html
  • +
  • BaseTypes/Bounds.html
  • +
  • BaseTypes/Class.html
  • +
  • BaseTypes/Element.html
  • +
  • BaseTypes/LonLat.html
  • +
  • BaseTypes/Pixel.html
  • +
  • BaseTypes/Size.html
  • +
  • Console.html
  • +
  • Control.html
  • +
  • Control/Attribution.html
  • +
  • Control/Button.html
  • +
  • Control/DragFeature.html
  • +
  • Control/DragPan.html
  • +
  • Control/DrawFeature.html
  • +
  • Control/GetFeature.html
  • +
  • Control/KeyboardDefaults.html
  • +
  • Control/LayerSwitcher.html
  • +
  • Control/Measure.html
  • +
  • Control/ModifyFeature.html
  • +
  • Control/MousePosition.html
  • +
  • Control/MouseToolbar.html
  • +
  • Control/Navigation.html
  • +
  • Control/NavigationHistory.html
  • +
  • Control/NavToolbar.html
  • +
  • Control/OverviewMap.html
  • +
  • Control/Panel.html
  • +
  • Control/PanZoom.html
  • +
  • Control/PanZoomBar.html
  • +
  • Control/Permalink.html
  • +
  • Control/Scale.html
  • +
  • Control/ScaleLine.html
  • +
  • Control/SelectFeature.html
  • +
  • Control/Snapping.html
  • +
  • Control/Split.html
  • +
  • Control/WMSGetFeatureInfo.html
  • +
  • Events.html
  • +
  • Extras.html
  • +
  • Feature.html
  • +
  • Feature/Vector.html
  • +
  • Filter.html
  • +
  • Filter/Comparison.html
  • +
  • Filter/FeatureId.html
  • +
  • Filter/Logical.html
  • +
  • Filter/Spatial.html
  • +
  • Format.html
  • +
  • Format/ArcXML.html
  • +
  • Format/ArcXML/Features.html
  • +
  • Format/GeoJSON.html
  • +
  • Format/GeoRSS.html
  • +
  • Format/GML.html
  • +
  • Format/GML/v2.html
  • +
  • Format/GML/v3.html
  • +
  • Format/GPX.html
  • +
  • Format/JSON.html
  • +
  • Format/KML.html
  • +
  • Format/OSM.html
  • +
  • Format/Text.html
  • +
  • Format/SLD.html
  • +
  • Format/SLD/v1_0_0.html
  • +
  • Format/Filter.html
  • +
  • Format/Filter/v1.html
  • +
  • Format/Filter/v1_0_0.html
  • +
  • Format/Filter/v1_1_0.html
  • +
  • Format/WFS.html
  • +
  • Format/WFSCapabilities.html
  • +
  • Format/WFSCapabilities/v1.html
  • +
  • Format/WFSDescribeFeatureType.html
  • +
  • Format/WFST.html
  • +
  • Format/WFST/v1.html
  • +
  • Format/WFST/v1_0_0.html
  • +
  • Format/WFST/v1_1_0.html
  • +
  • Format/WKT.html
  • +
  • Format/WMC.html
  • +
  • Format/WMC/v1_1_0.html
  • +
  • Format/WMC/v1.html
  • +
  • Format/WMSCapabilities.html
  • +
  • Format/WMSCapabilities/v1_1_1.html
  • +
  • Format/WMSDescribeLayer.html
  • +
  • Format/WMSGetFeatureInfo.html
  • +
  • Format/XML.html
  • +
  • Geometry.html
  • +
  • Geometry/Collection.html
  • +
  • Geometry/Curve.html
  • +
  • Geometry/LinearRing.html
  • +
  • Geometry/LineString.html
  • +
  • Geometry/MultiLineString.html
  • +
  • Geometry/MultiPoint.html
  • +
  • Geometry/MultiPolygon.html
  • +
  • Geometry/Point.html
  • +
  • Geometry/Polygon.html
  • +
  • Geometry/Rectangle.html
  • +
  • Geometry/Surface.html
  • +
  • Handler.html
  • +
  • Handler/Click.html
  • +
  • Handler/Drag.html
  • +
  • Handler/Feature.html
  • +
  • Handler/Hover.html
  • +
  • Handler/Keyboard.html
  • +
  • Handler/MouseWheel.html
  • +
  • Handler/Path.html
  • +
  • Handler/Point.html
  • +
  • Handler/Polygon.html
  • +
  • Handler/RegularPolygon.html
  • +
  • Icon.html
  • +
  • Lang.html
  • +
  • Layer.html
  • +
  • Layer/ArcIMS.html
  • +
  • Layer/ArcGIS93Rest.html
  • +
  • Layer/EventPane.html
  • +
  • Layer/FixedZoomLevels.html
  • +
  • Layer/GeoRSS.html
  • +
  • Layer/GML.html
  • +
  • Layer/Google.html
  • +
  • Layer/Grid.html
  • +
  • Layer/HTTPRequest.html
  • +
  • Layer/Image.html
  • +
  • Layer/KaMap.html
  • +
  • Layer/MapGuide.html
  • +
  • Layer/MapServer.html
  • +
  • Layer/Markers.html
  • +
  • Layer/PointTrack.html
  • +
  • Layer/SphericalMercator.html
  • +
  • Layer/Text.html
  • +
  • Layer/TileCache.html
  • +
  • Layer/TMS.html
  • +
  • Layer/Vector.html
  • +
  • Layer/Vector/RootContainer.html
  • +
  • Layer/WFS.html
  • +
  • Layer/WMS.html
  • +
  • Layer/WrapDateLine.html
  • +
  • Layer/XYZ.html
  • +
  • Layer/Yahoo.html
  • +
  • Map.html
  • +
  • Marker.html
  • +
  • Marker/Box.html
  • +
  • OpenLayers.html
  • +
  • Popup.html
  • +
  • Popup/Anchored.html
  • +
  • Popup/AnchoredBubble.html
  • +
  • Popup/FramedCloud.html
  • +
  • Projection.html
  • +
  • Protocol.html
  • +
  • Protocol/HTTP.html
  • +
  • Protocol/SQL.html
  • +
  • Protocol/SQL/Gears.html
  • +
  • Protocol/WFS.html
  • +
  • Renderer.html
  • +
  • Renderer/Canvas.html
  • +
  • Renderer/Elements.html
  • +
  • Renderer/SVG.html
  • +
  • Renderer/VML.html
  • +
  • Request.html
  • +
  • Request/XMLHttpRequest.html
  • +
  • Rule.html
  • +
  • Strategy.html
  • +
  • Strategy/BBOX.html
  • +
  • Strategy/Cluster.html
  • +
  • Strategy/Fixed.html
  • +
  • Strategy/Paging.html
  • +
  • Strategy/Save.html
  • +
  • Style.html
  • +
  • StyleMap.html
  • +
  • Tile.html
  • +
  • Tile/Image.html
  • +
  • Tile/WFS.html
  • +
  • Tween.html
  • +
  • Util.html
  • +
diff --git a/openlayers/tests/manual/ajax.html b/openlayers/tests/manual/ajax.html new file mode 100644 index 0000000..be038ad --- /dev/null +++ b/openlayers/tests/manual/ajax.html @@ -0,0 +1,49 @@ + + + XHR Acceptance Test + + + + + + expected output: "request completed" then "other processing"
+ + expected output: "other processing" then "request completed"
+ + expected output: "other processing" (and not "never called")
+
+ + + diff --git a/openlayers/tests/manual/ajax.txt b/openlayers/tests/manual/ajax.txt new file mode 100644 index 0000000..b10a427 --- /dev/null +++ b/openlayers/tests/manual/ajax.txt @@ -0,0 +1 @@ +one fake text file \ No newline at end of file diff --git a/openlayers/tests/manual/arcims-2117.html b/openlayers/tests/manual/arcims-2117.html new file mode 100644 index 0000000..08dc4aa --- /dev/null +++ b/openlayers/tests/manual/arcims-2117.html @@ -0,0 +1,103 @@ + + + ArcIMS Test Ticket #2117 + + + + + + +

ArcIMS Test Ticket #2117

+ +
+
+

+ Testing ticket #2117 +

+ +
+ +
+ This is an example of a bug in the ArcXML format writer. + If you don't see a map, it's broken. +
+ + + + + + + diff --git a/openlayers/tests/manual/arkansas.rss b/openlayers/tests/manual/arkansas.rss new file mode 100644 index 0000000..926d357 --- /dev/null +++ b/openlayers/tests/manual/arkansas.rss @@ -0,0 +1,9 @@ +topp:statesFeed auto-generated by GeoServerArkansas + +
+ +Map by:
TOPP +]]>
34.19665500000001 -94.461479 34.508326999999994 -94.452408 34.735504000000006 -94.44574 34.929050000000004 -94.439102 35.400454999999994 -94.428337 35.641003 -94.468269 35.760227 -94.485718 36.106753999999995 -94.542198 36.164444 -94.552895 36.478714 -94.607231 36.489338000000004 -94.617035 36.49095199999999 -94.080849 36.489716 -93.857323 36.489891 -93.59626 36.490196 -93.328163 36.490616 -93.297142 36.489819 -92.852104 36.489918 -92.777466 36.490855999999994 -92.522888 36.491596 -92.146164 36.491371 -92.127487 36.490955 -91.688416 36.490376 -91.45285 36.491039 -91.411659 36.487953000000005 -91.133827 36.489204 -90.804314 36.490962999999994 -90.581619 36.492751999999996 -90.224373 36.491814000000005 -90.150162 36.45741700000001 -90.137276 36.453896 -90.117226 36.422565000000006 -90.123833 36.404915 -90.116829 36.39738800000001 -90.080177 36.382553 -90.052063 36.362606 -90.050201 36.325333 -90.067635 36.300472 -90.049751 36.272273999999996 -90.066093 36.257996000000006 -90.109917 36.21207 -90.131218 36.196940999999995 -90.161308 36.172565000000006 -90.219223 36.161148 -90.232224 36.137089 -90.23484 36.118763 -90.263702 36.115905999999995 -90.284752 36.091656 -90.315239 35.989586 -90.37896 35.991158 -90.283455 35.996838 -89.963203 35.999877999999995 -89.721756 35.966324 -89.713135 35.93782 -89.664192 35.913799 -89.645401 35.894287000000006 -89.649338 35.885647000000006 -89.66465 35.911427 -89.714684 35.915012000000004 -89.737976 35.896812 -89.762909 35.884102 -89.766273 35.871418000000006 -89.757713 35.842037000000005 -89.701439 35.827515000000005 -89.700829 35.807036999999994 -89.735939 35.817420999999996 -89.759796 35.805553 -89.790382 35.774223000000006 -89.799904 35.758269999999996 -89.827042 35.748192 -89.859871 35.754836999999995 -89.909782 35.734268 -89.951035 35.712486 -89.952034 35.676266 -89.929741 35.655972000000006 -89.893402 35.673306 -89.865181 35.671062000000006 -89.857246 35.645222000000004 -89.849197 35.629745 -89.863838 35.633335 -89.877441 35.603104 -89.957047 35.578593999999995 -89.958031 35.546059 -89.921661 35.52923199999999 -89.931175 35.526900999999995 -89.947548 35.532291 -89.962273 35.561676000000006 -89.989586 35.552414 -90.033051 35.542846999999995 -90.040901 35.51244 -90.041817 35.445454 -89.999565 35.417103 -90.046783 35.41341 -90.060295 35.426506 -90.073936 35.472342999999995 -90.074844 35.478207 -90.08223 35.473568 -90.101959 35.442524000000006 -90.137276 35.423716999999996 -90.172676 35.384254 -90.167816 35.383044999999996 -90.140167 35.4076 -90.132469 35.41768999999999 -90.112244 35.418282000000005 -90.085159 35.406527999999994 -90.075478 35.381508 -90.087135 35.365982 -90.105621 35.345591999999996 -90.098701 35.314685999999995 -90.106346 35.30624400000001 -90.15699 35.282566 -90.169746 35.264056999999994 -90.152122 35.263847 -90.105942 35.254397999999995 -90.090103 35.212738 -90.068962 35.191833 -90.073303 35.166916 -90.062431 35.147385 -90.064537 35.12505 -90.082924 35.13653600000001 -90.14373 35.129611999999995 -90.164474 35.10864599999999 -90.178345 35.077827 -90.169083 35.040897 -90.195709 35.048458 -90.291809 35.000693999999996 -90.305351 34.978481 -90.299507 34.94976 -90.248169 34.938903999999994 -90.241898 34.920731 -90.242844 34.896511000000004 -90.266708 34.88269 -90.296272 34.864959999999996 -90.299446 34.851776 -90.301552 34.850266000000005 -90.322823 34.860577000000006 -90.341423 34.841038 -90.403931 34.832268 -90.42231 34.835353999999995 -90.433548 34.872643 -90.427841 34.88618099999999 -90.438087 34.88092399999999 -90.470528 34.857727 -90.474716 34.82521800000001 -90.451904 34.79966400000001 -90.466705 34.76075 -90.448868 34.741198999999995 -90.451431 34.726833 -90.485924 34.729855 -90.504417 34.748371000000006 -90.516968 34.765784999999994 -90.498734 34.789833 -90.501282 34.805603000000005 -90.516045 34.807323 -90.52726 34.790336999999994 -90.547745 34.713252999999995 -90.533279 34.702068 -90.513565 34.704254000000006 -90.469978 34.672039 -90.466225 34.638065 -90.508812 34.636894 -90.538963 34.65180599999999 -90.547546 34.685947 -90.539062 34.700287 -90.561058 34.645611 -90.5793 34.627815 -90.58799 34.604744 -90.577614 34.555649 -90.530617 34.543327000000005 -90.537148 34.532509000000005 -90.565681 34.520222000000004 -90.580345 34.496506 -90.59005 34.453945000000004 -90.574402 34.432998999999995 -90.579124 34.40459799999999 -90.60379 34.36591 -90.657242 34.330006 -90.657814 34.31797400000001 -90.679337 34.320145 -90.689377 34.3634 -90.681137 34.377871999999996 -90.687485 34.37216600000001 -90.75531 34.363913999999994 -90.761856 34.317719 -90.747757 34.278976 -90.758255 34.299957000000006 -90.792526 34.299347 -90.806419 34.277339999999995 -90.823837 34.229534 -90.83136 34.219162 -90.863411 34.250195000000005 -90.928436 34.23467599999999 -90.933708 34.20483 -90.921486 34.190544 -90.822922 34.166172 -90.80751 34.148658999999995 -90.828865 34.147544999999994 -90.846611 34.185649999999995 -90.928917 34.155804 -90.953346 34.125941999999995 -90.942245 34.102749 -90.906311 34.10095200000001 -90.866333 34.040710000000004 -90.886345 34.031288 -90.95047 34.010998 -90.973366 33.994606000000005 -90.975273 33.978874000000005 -90.961128 33.967461 -90.96479 33.960815 -90.986816 33.968372 -91.000259 33.990528 -91.009544 33.985699 -91.031059 34.006096 -91.069695 33.994468999999995 -91.088852 33.974644 -91.075706 33.936306 -91.018463 33.867081 -91.061371 33.843525 -91.054817 33.816586 -91.028854 33.798897 -90.990372 33.78533899999999 -90.984039 33.77154899999999 -90.995377 33.76397299999999 -91.018433 33.769554 -91.043404 33.786525999999995 -91.066391 33.776439999999994 -91.105415 33.780086999999995 -91.136986 33.771820000000005 -91.142891 33.723225 -91.138 33.71244 -91.128944 33.70823300000001 -91.104568 33.719357 -91.056213 33.70549 -91.038826 33.683216 -91.037834 33.662586000000005 -91.083771 33.677527999999995 -91.121048 33.718315000000004 -91.1633 33.708965000000006 -91.211678 33.690723000000006 -91.215141 33.669945 -91.205307 33.637032000000005 -91.154404 33.616161000000005 -91.15065 33.57724399999999 -91.168022 33.57468 -91.187805 33.590481 -91.22673 33.55635100000001 -91.227631 33.539276 -91.213486 33.538506 -91.204102 33.52334999999999 -91.182846 33.512012 -91.180405 33.473395999999994 -91.207642 33.459453999999994 -91.22715 33.443443 -91.232849 33.447388000000004 -91.18177 33.466644 -91.17173 33.504368 -91.174179 33.51178 -91.164978 33.493190999999996 -91.128799 33.469673 -91.118958 33.452831 -91.119713 33.443123 -91.130516 33.422112 -91.19883 33.414299 -91.204163 33.39183 -91.184982 33.388878000000005 -91.137634 33.414897999999994 -91.099129 33.462856 -91.0858 33.466206 -91.073761 33.460010999999994 -91.060982 33.431797 -91.061516 33.410179 -91.07869 33.393406 -91.106941 33.359402 -91.130424 33.322384 -91.141747 33.268505000000005 -91.122505 33.249210000000005 -91.102905 33.29235799999999 -91.076324 33.293575000000004 -91.053833 33.281921 -91.040428 33.245780999999994 -91.054543 33.225697 -91.092003 33.161602 -91.086319 33.145084 -91.095856 33.131069 -91.12133 33.150288 -91.177628 33.140465000000006 -91.195503 33.113224 -91.190536 33.090652000000006 -91.14679 33.065571000000006 -91.11779 33.04727200000001 -91.123985 33.040431999999996 -91.156685 33.021709 -91.160675 33.013039000000006 -91.162132 33.013476999999995 -91.254616 33.013419999999996 -91.427528 33.013874 -91.454353 33.010025 -92.063309 33.016701 -92.717079 33.018135 -92.978828 33.019238 -93.232376 33.021393 -93.478897 33.021152 -93.511742 33.022594 -93.809753 33.023289000000005 -94.03875 33.270325 -94.036507 33.555912000000006 -94.035927 33.577213 -94.061432 33.583954000000006 -94.086655 33.572998 -94.098701 33.567085000000006 -94.155167 33.593773 -94.159515 33.58507899999999 -94.205345 33.557987 -94.210884 33.561535000000006 -94.235367 33.585719999999995 -94.223038 33.592422 -94.237236 33.561736999999994 -94.274544 33.584605999999994 -94.272079 33.589332999999996 -94.278984 33.579853 -94.29882 33.556934 -94.302383 33.57313499999999 -94.328751 33.547684000000004 -94.370758 33.560303000000005 -94.395264 33.572661999999994 -94.372307 33.590042 -94.370628 33.593327 -94.379112 33.57495900000001 -94.393417 33.573486 -94.40657 33.59714099999999 -94.428467 33.596503999999996 -94.443329 33.604347000000004 -94.451553 33.616844 -94.436333 33.636444 -94.435913 33.631966000000006 -94.476486 33.939198000000005 -94.468376 34.19665500000001 -94.461479
\ No newline at end of file diff --git a/openlayers/tests/manual/big-georss.html b/openlayers/tests/manual/big-georss.html new file mode 100644 index 0000000..6be290c --- /dev/null +++ b/openlayers/tests/manual/big-georss.html @@ -0,0 +1,27 @@ + + + OpenLayers GML Layer Example + + + + + + +

Does this map look like arkansas?

+
+ + diff --git a/openlayers/tests/manual/clip-features-svg.html b/openlayers/tests/manual/clip-features-svg.html new file mode 100644 index 0000000..0fdad9e --- /dev/null +++ b/openlayers/tests/manual/clip-features-svg.html @@ -0,0 +1,123 @@ + + +SVG inValidRange Test Case + + + + + +

SVG inValidRange Clipping Test Case

+

Behavior before fixing #1631: Push Zoom 5. You see lines. Push +Zoom 6. No lines.

+
+
+ + + + + + \ No newline at end of file diff --git a/openlayers/tests/manual/draw-feature.html b/openlayers/tests/manual/draw-feature.html new file mode 100644 index 0000000..8872b63 --- /dev/null +++ b/openlayers/tests/manual/draw-feature.html @@ -0,0 +1,73 @@ + + + Draw Feature Acceptance Test + + + + + + +
+

Resolution properties set at the map level.

+

Points should draw as you draw lines. Click to start + drawing and double-click to draw the last point.

+
+ +
+

Resolution properties set at the layer level.

+

Points should draw as you draw lines. Click to start + drawing and double-click to draw the last point.

+ + diff --git a/openlayers/tests/manual/feature-handler.html b/openlayers/tests/manual/feature-handler.html new file mode 100644 index 0000000..f9b8892 --- /dev/null +++ b/openlayers/tests/manual/feature-handler.html @@ -0,0 +1,126 @@ + + + Feature Handler Acceptance Test + + + + + + +
+
+

+ Draw a few polygons on the map. Some overlapping. Activate the + feature handler and ensure that "over" and "out" are called only + when mousing over/out of a feature for the first time. The + "click" callback should be called for every click on a feature. + The "clickout" callback should be called when? +

+
+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
+
+ +
+ + diff --git a/openlayers/tests/manual/geojson-geomcoll-reprojection.html b/openlayers/tests/manual/geojson-geomcoll-reprojection.html new file mode 100644 index 0000000..e82e08a --- /dev/null +++ b/openlayers/tests/manual/geojson-geomcoll-reprojection.html @@ -0,0 +1,74 @@ + + + + + + + + + +
+ + diff --git a/openlayers/tests/manual/google-panning.html b/openlayers/tests/manual/google-panning.html new file mode 100644 index 0000000..0b2fe3a --- /dev/null +++ b/openlayers/tests/manual/google-panning.html @@ -0,0 +1,117 @@ + + + Google Panning Acceptance Test + + + + + + + + +
+

Even sized map. The map on the left should pan regularly, and the + two centers below should be equivalent. Both dragging and panning with + buttons should maintain the same center.

+

pixel center: +
map center: +
equvalent: +

+
+ +
+

Odd sized map. The map on the left should pan regularly, and the + two centers below should be equivalent. Both dragging and panning with + buttons should maintain the same center.

+

pixel center: +
map center: +
equvalent: +

+ + + diff --git a/openlayers/tests/manual/overviewmap-projection.html b/openlayers/tests/manual/overviewmap-projection.html new file mode 100644 index 0000000..bb15c9f --- /dev/null +++ b/openlayers/tests/manual/overviewmap-projection.html @@ -0,0 +1,70 @@ + + + + + + + + + + + + +

OpenLayers Overview Map Projection Test

+ +
+
+

+ Acceptance test for different projections in map and overview map. + The map uses EPSG:900913, the overview map EPSG:4326. Zoom the map and + drag both the map and the overview map to see it in action. +

+
+ +
+
+ + + + + diff --git a/openlayers/tests/manual/pan-redraw-svg.html b/openlayers/tests/manual/pan-redraw-svg.html new file mode 100644 index 0000000..ec1126b --- /dev/null +++ b/openlayers/tests/manual/pan-redraw-svg.html @@ -0,0 +1,58 @@ + + + + + + + + + +

SVG inValidRange Redraw Test Case

+

Before fixing #1631, after klicking Go! no point would have appeared. The Go! button + pans the map over a long distance. Before dragging, the point would have been + outside the valid range, and the pan operation would not have triggered the SVG + coordinate system to be recreated. The new vector rendering takes care of all this.

+
+ + + diff --git a/openlayers/tests/manual/popup-keepInMap.html b/openlayers/tests/manual/popup-keepInMap.html new file mode 100644 index 0000000..4ba1c18 --- /dev/null +++ b/openlayers/tests/manual/popup-keepInMap.html @@ -0,0 +1,100 @@ + + + OpenLayers: Popup Mayhem + + + + + + + +

Popup KeepInMap

+ +
+
+ Click on popup, and the content should scroll rather than expanding outside the map. +
+ + diff --git a/openlayers/tests/manual/reflow.html b/openlayers/tests/manual/reflow.html new file mode 100644 index 0000000..bb9585e --- /dev/null +++ b/openlayers/tests/manual/reflow.html @@ -0,0 +1,59 @@ + + + + + + + +
+

Use the pan buttons. See flicker at end of animated pan.

+ + diff --git a/openlayers/tests/manual/rendered-dimensions.html b/openlayers/tests/manual/rendered-dimensions.html new file mode 100644 index 0000000..41b0fcf --- /dev/null +++ b/openlayers/tests/manual/rendered-dimensions.html @@ -0,0 +1,48 @@ + + + + + + + +
+ + diff --git a/openlayers/tests/manual/renderedDimensions.html b/openlayers/tests/manual/renderedDimensions.html new file mode 100644 index 0000000..b01624b --- /dev/null +++ b/openlayers/tests/manual/renderedDimensions.html @@ -0,0 +1,113 @@ + + + OpenLayers: Popup Mayhem + + + + + + + +

Popup Matrix

+ +
+
+
+
+
+ Click on popup, should be able to read a full sentence, not just two lines. +
+ + diff --git a/openlayers/tests/manual/select-feature.html b/openlayers/tests/manual/select-feature.html new file mode 100644 index 0000000..6e1fba0 --- /dev/null +++ b/openlayers/tests/manual/select-feature.html @@ -0,0 +1,75 @@ + + + Select Feature Test + + + + + + +

Select Feature Test

+
+

+ + The map includes two select feature controls. The first one operates on + geometries of type OpenLayers.Geometry.Point only and works on clicks. The + second one operates on geometries of type OpenLayers.Geometry.Polygon and + works on mouseover's. If you select the point geometry by clicking on it, + it shouldn't be unselected when the mouse moves out if it. + +

+ + diff --git a/openlayers/tests/manual/tiles-loading.html b/openlayers/tests/manual/tiles-loading.html new file mode 100644 index 0000000..52cdaf9 --- /dev/null +++ b/openlayers/tests/manual/tiles-loading.html @@ -0,0 +1,122 @@ + + + Tiles Loading Acceptance Test + + + + + + + +
+

+ + Test 0 : at the initial zoom the WMS layer is in range, you should + therefore see the 'Loading tiles...' message when loading the page for + the first time. + +

+

+ + Test 1 : If you zoom out by one level (using the zoombar), the WMS + layer becomes out of range. No tile should be loaded so you shouldn't see + the 'Loading tiles...' message. + +

+

+ + Test 2 : Zoom in by one level to go back to initial state (the WMS + is back). Open the layer switcher and turn off the WMS layer. No tile + should be loaded so you shouldn't see the 'Loading tiles...' message. + +

+

+ + Test 3 : Keep the WMS layer turned off in the layer switcher. Zoom + out by one level again. The layer is both invisible and out of range, so + you shouldn't see the 'Loading tiles...' message. + +

+

WMS Layer state - in range: true, visibility: true

+

Message:

+ + diff --git a/openlayers/tests/manual/tween.html b/openlayers/tests/manual/tween.html new file mode 100644 index 0000000..88606cb --- /dev/null +++ b/openlayers/tests/manual/tween.html @@ -0,0 +1,82 @@ + + + Tween Example + + + + + +
Tween Example
+
+
Show transition effects
+ + + +
+
+
+
+ This is an example of transition effects. +
+ + \ No newline at end of file diff --git a/openlayers/tests/manual/ve-opacity.html b/openlayers/tests/manual/ve-opacity.html new file mode 100644 index 0000000..8352941 --- /dev/null +++ b/openlayers/tests/manual/ve-opacity.html @@ -0,0 +1,62 @@ + + + + + + + + + + +

VE Opacity

+

The overlay should have an opacity of 40%.

+
+ + diff --git a/openlayers/tests/manual/vector-features-performance.html b/openlayers/tests/manual/vector-features-performance.html new file mode 100644 index 0000000..62bd197 --- /dev/null +++ b/openlayers/tests/manual/vector-features-performance.html @@ -0,0 +1,142 @@ + + + Vector Features Performance Test + + + + + + + +

New Rendering - Vector Features Performance Test

+
+

+ This test examines if checking for a feature being inside the visible + extent before rendering it has an impact on performance. Open the Firebug + console after running this test (hit F12) to see the results. +
+ After the performance test, you can drag around the map to see how the new + vector rendering feels where features get rendered only when they are visible + inside the map extent. +

+ + diff --git a/openlayers/tests/manual/vector-layer-zindex.html b/openlayers/tests/manual/vector-layer-zindex.html new file mode 100644 index 0000000..d33c853 --- /dev/null +++ b/openlayers/tests/manual/vector-layer-zindex.html @@ -0,0 +1,143 @@ + + + Vector Layer ZIndex Test + + + + + + +

Vector Layer ZIndex Test

+
+

+ + The map includes one base layer (vmap0) and three overlays, namely a vector + layer, a fake layer with no images, and a dmsolutions layer. The overlays are + added to the map in this order: the vector layer, the fake layer, and the + dmsolutions layer. The map also includes a select feature control, which + when activated bumped the vector layer z-index to some high value. This + makes feature selection work, even though other overlays were added after + the vector layer. + +

+

+ + If the fake layer is removed from the map (first link below), the vector layer's + z-index must not be reset, so the vector layer must not go under the + dmsolutions layer and feature selection must continue to function as + expected. + +

+

+ + If one of the SelectFeature controls is deactivated or activated (second + and third link below), the vector layer should change it's position in the + layer stack: on top if at least one of the controls is activated, covered + by other layers if both are deactivated. + +

+ +

+ Remove the fake layer +
Toggle the click SelectFeature control's active status +
Toggle the hover SelectFeature control's active status +

+ + diff --git a/openlayers/tests/mice.xml b/openlayers/tests/mice.xml new file mode 100644 index 0000000..4a001ec --- /dev/null +++ b/openlayers/tests/mice.xml @@ -0,0 +1,156 @@ + + + + + -89.817223,45.005555 -74.755001,51.701388 + + + + + + -79.771668,45.891110 -79.771668,45.891110 + + + + + -79.771668,45.891110 + + + + + + + + + -83.755834,46.365277 -83.755834,46.365277 + + + owl + + + -83.755834,46.365277 + + + + + + + + + -83.808612,46.175277 -83.808612,46.175277 + + + + + -83.808612,46.175277 + + + + + + + + + -84.111112,46.309166 -84.111112,46.309166 + + + + + -84.111112,46.309166 + + + + + + + + + -83.678612,46.821110 -83.678612,46.821110 + + + + + -83.678612,46.821110 + + + + + + + + + -83.664445,46.518888 -83.664445,46.518888 + + + + + -83.664445,46.518888 + + + + + + + + + -80.613334,46.730277 -80.613334,46.730277 + + + + + -80.613334,46.730277 + + + + + + + + + -79.676946,45.428054 -79.676946,45.428054 + + + + + -79.676946,45.428054 + + + + + + + + + -83.853056,46.236944 -83.853056,46.236944 + + + + + -83.853056,46.236944 + + + + + + + + + -82.289167,45.896388 -82.289167,45.896388 + + + + + -82.289167,45.896388 + + + + + + diff --git a/openlayers/tests/owls.xml b/openlayers/tests/owls.xml new file mode 100644 index 0000000..4a001ec --- /dev/null +++ b/openlayers/tests/owls.xml @@ -0,0 +1,156 @@ + + + + + -89.817223,45.005555 -74.755001,51.701388 + + + + + + -79.771668,45.891110 -79.771668,45.891110 + + + + + -79.771668,45.891110 + + + + + + + + + -83.755834,46.365277 -83.755834,46.365277 + + + owl + + + -83.755834,46.365277 + + + + + + + + + -83.808612,46.175277 -83.808612,46.175277 + + + + + -83.808612,46.175277 + + + + + + + + + -84.111112,46.309166 -84.111112,46.309166 + + + + + -84.111112,46.309166 + + + + + + + + + -83.678612,46.821110 -83.678612,46.821110 + + + + + -83.678612,46.821110 + + + + + + + + + -83.664445,46.518888 -83.664445,46.518888 + + + + + -83.664445,46.518888 + + + + + + + + + -80.613334,46.730277 -80.613334,46.730277 + + + + + -80.613334,46.730277 + + + + + + + + + -79.676946,45.428054 -79.676946,45.428054 + + + + + -79.676946,45.428054 + + + + + + + + + -83.853056,46.236944 -83.853056,46.236944 + + + + + -83.853056,46.236944 + + + + + + + + + -82.289167,45.896388 -82.289167,45.896388 + + + + + -82.289167,45.896388 + + + + + + diff --git a/openlayers/tests/run-tests.html b/openlayers/tests/run-tests.html new file mode 100644 index 0000000..bdc3b85 --- /dev/null +++ b/openlayers/tests/run-tests.html @@ -0,0 +1,2413 @@ + + Run the testsuite + + + + + + + + +
+
Test pages:
+
+ +
+
+
+ + + + +
+ do not close windows opened by tests +
+
+ +

Record mouse input for the page:

+

+

or enter page url:

+

+
+
+ +
+
+Results: + + +
+
+
+
+
+
+ + + + + + +-
+ +

+  + +

+ +
 
+

+cursor is over +

+ +

+ keyboard control: press + ctrl - + shift - +

+ +

+s +to start recording + +

+ +

+h +to hide/show this window +

+ +

+m +to record mousemove + +

+ +

+p +to pause recording + +

+ +

+c +to add checkpoint +

+ +

+checkpoints: +

+
+
+
+ +
+ diff --git a/openlayers/tests/selenium/remotecontrol/config.cfg b/openlayers/tests/selenium/remotecontrol/config.cfg new file mode 100644 index 0000000..764bd3d --- /dev/null +++ b/openlayers/tests/selenium/remotecontrol/config.cfg @@ -0,0 +1,48 @@ +[config] +server=http://openlayers.org/ +url=/dev/tests/run-tests.html?run=all&windows=none + +[local_ff] +host=localhost +browserCmd=firefox +comment=Firefox on localhost + +[local_safari] +host=localhost +browserCmd=safari +comment=Safari on localhost + +#[ie6-winxp] +#host=208.80.142.184 +#browserCmd=iexploreproxy C:\Program Files\MultipleIEs\IE6\iexplore.exe +#comment=IE6 on WinXP + +[ie7-winxp] +host=208.80.142.184 +browserCmd=iexploreproxy +comment=IE7 on WinXP + +# Running on alta: debian etch +[opera-winxp] +host=208.80.142.184 +browserCmd=opera C:\Program Files\Opera 9\Opera.exe +comment=Opera on WinXP + +# Running on alta: debian etch +[opera] +host=208.80.142.140 +browserCmd=opera +comment=Opera on Debian Etch + +# Running on alta: Debian Etch +[firefox2] +host=208.80.142.140 +browserCmd=firefox /usr/lib/iceweasel/firefox-bin +comment=Iceweasel 2 on Debian Etch + +# Running on alta: Debian Etch +[firefox3] +host=208.80.142.105 +browserCmd=firefox /usr/lib/firefox-3.0.1/firefox-bin +comment=FF3 on Ubuntu + diff --git a/openlayers/tests/selenium/remotecontrol/selenium.py b/openlayers/tests/selenium/remotecontrol/selenium.py new file mode 100644 index 0000000..e5505ed --- /dev/null +++ b/openlayers/tests/selenium/remotecontrol/selenium.py @@ -0,0 +1,1846 @@ + +""" +Copyright 2006 ThoughtWorks, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +__docformat__ = "restructuredtext en" + +# This file has been automatically generated via XSL + +import httplib +import urllib +import re + +class selenium: + """ + Defines an object that runs Selenium commands. + + Element Locators + ~~~~~~~~~~~~~~~~ + + Element Locators tell Selenium which HTML element a command refers to. + The format of a locator is: + + \ *locatorType*\ **=**\ \ *argument* + + + We support the following strategies for locating elements: + + + * \ **identifier**\ =\ *id*: + Select the element with the specified @id attribute. If no match is + found, select the first element whose @name attribute is \ *id*. + (This is normally the default; see below.) + * \ **id**\ =\ *id*: + Select the element with the specified @id attribute. + * \ **name**\ =\ *name*: + Select the first element with the specified @name attribute. + + * username + * name=username + + + The name may optionally be followed by one or more \ *element-filters*, separated from the name by whitespace. If the \ *filterType* is not specified, \ **value**\ is assumed. + + * name=flavour value=chocolate + + + * \ **dom**\ =\ *javascriptExpression*: + + Find an element by evaluating the specified string. This allows you to traverse the HTML Document Object + Model using JavaScript. Note that you must not return a value in this string; simply make it the last expression in the block. + + * dom=document.forms['myForm'].myDropdown + * dom=document.images[56] + * dom=function foo() { return document.links[1]; }; foo(); + + + * \ **xpath**\ =\ *xpathExpression*: + Locate an element using an XPath expression. + + * xpath=//img[@alt='The image alt text'] + * xpath=//table[@id='table1']//tr[4]/td[2] + * xpath=//a[contains(@href,'#id1')] + * xpath=//a[contains(@href,'#id1')]/@class + * xpath=(//table[@class='stylee'])//th[text()='theHeaderText']/../td + * xpath=//input[@name='name2' and @value='yes'] + * xpath=//\*[text()="right"] + + + * \ **link**\ =\ *textPattern*: + Select the link (anchor) element which contains text matching the + specified \ *pattern*. + + * link=The link text + + + * \ **css**\ =\ *cssSelectorSyntax*: + Select the element using css selectors. Please refer to CSS2 selectors, CSS3 selectors for more information. You can also check the TestCssLocators test in the selenium test suite for an example of usage, which is included in the downloaded selenium core package. + + * css=a[href="#id3"] + * css=span#firstChild + span + + + Currently the css selector locator supports all css1, css2 and css3 selectors except namespace in css3, some pseudo classes(:nth-of-type, :nth-last-of-type, :first-of-type, :last-of-type, :only-of-type, :visited, :hover, :active, :focus, :indeterminate) and pseudo elements(::first-line, ::first-letter, ::selection, ::before, ::after). + + + + + Without an explicit locator prefix, Selenium uses the following default + strategies: + + + * \ **dom**\ , for locators starting with "document." + * \ **xpath**\ , for locators starting with "//" + * \ **identifier**\ , otherwise + + Element Filters + ~~~~~~~~~~~~~~~ + + Element filters can be used with a locator to refine a list of candidate elements. They are currently used only in the 'name' element-locator. + + Filters look much like locators, ie. + + \ *filterType*\ **=**\ \ *argument* + + Supported element-filters are: + + \ **value=**\ \ *valuePattern* + + + Matches elements based on their values. This is particularly useful for refining a list of similarly-named toggle-buttons. + + \ **index=**\ \ *index* + + + Selects a single element based on its position in the list (offset from zero). + + String-match Patterns + ~~~~~~~~~~~~~~~~~~~~~ + + Various Pattern syntaxes are available for matching string values: + + + * \ **glob:**\ \ *pattern*: + Match a string against a "glob" (aka "wildmat") pattern. "Glob" is a + kind of limited regular-expression syntax typically used in command-line + shells. In a glob pattern, "\*" represents any sequence of characters, and "?" + represents any single character. Glob patterns match against the entire + string. + * \ **regexp:**\ \ *regexp*: + Match a string using a regular-expression. The full power of JavaScript + regular-expressions is available. + * \ **regexpi:**\ \ *regexpi*: + Match a string using a case-insensitive regular-expression. + * \ **exact:**\ \ *string*: + + Match a string exactly, verbatim, without any of that fancy wildcard + stuff. + + + + If no pattern prefix is specified, Selenium assumes that it's a "glob" + pattern. + + + + For commands that return multiple values (such as verifySelectOptions), + the string being matched is a comma-separated list of the return values, + where both commas and backslashes in the values are backslash-escaped. + When providing a pattern, the optional matching syntax (i.e. glob, + regexp, etc.) is specified once, as usual, at the beginning of the + pattern. + + + """ + +### This part is hard-coded in the XSL + def __init__(self, host, port, browserStartCommand, browserURL): + self.host = host + self.port = port + self.browserStartCommand = browserStartCommand + self.browserURL = browserURL + self.sessionId = None + + def start(self): + result = self.get_string("getNewBrowserSession", [self.browserStartCommand, self.browserURL]) + try: + self.sessionId = result + except ValueError: + raise Exception, result + + def stop(self): + self.do_command("testComplete", []) + self.sessionId = None + + def do_command(self, verb, args): + conn = httplib.HTTPConnection(self.host, self.port) + commandString = u'/selenium-server/driver/?cmd=' + urllib.quote_plus(unicode(verb).encode('utf-8')) + for i in range(len(args)): + commandString = commandString + '&' + unicode(i+1) + '=' + urllib.quote_plus(unicode(args[i]).encode('utf-8')) + if (None != self.sessionId): + commandString = commandString + "&sessionId=" + unicode(self.sessionId) + conn.request("GET", commandString) + + response = conn.getresponse() + #print response.status, response.reason + data = unicode(response.read(), "UTF-8") + result = response.reason + #print "Selenium Result: " + repr(data) + "\n\n" + if (not data.startswith('OK')): + raise Exception, data + return data + + def get_string(self, verb, args): + result = self.do_command(verb, args) + return result[3:] + + def get_string_array(self, verb, args): + csv = self.get_string(verb, args) + token = "" + tokens = [] + escape = False + for i in range(len(csv)): + letter = csv[i] + if (escape): + token = token + letter + escape = False + continue + if (letter == '\\'): + escape = True + elif (letter == ','): + tokens.append(token) + token = "" + else: + token = token + letter + tokens.append(token) + return tokens + + def get_number(self, verb, args): + # Is there something I need to do here? + return self.get_string(verb, args) + + def get_number_array(self, verb, args): + # Is there something I need to do here? + return self.get_string_array(verb, args) + + def get_boolean(self, verb, args): + boolstr = self.get_string(verb, args) + if ("true" == boolstr): + return True + if ("false" == boolstr): + return False + raise ValueError, "result is neither 'true' nor 'false': " + boolstr + + def get_boolean_array(self, verb, args): + boolarr = self.get_string_array(verb, args) + for i in range(len(boolarr)): + if ("true" == boolstr): + boolarr[i] = True + continue + if ("false" == boolstr): + boolarr[i] = False + continue + raise ValueError, "result is neither 'true' nor 'false': " + boolarr[i] + return boolarr + + + +### From here on, everything's auto-generated from XML + + + def click(self,locator): + """ + Clicks on a link, button, checkbox or radio button. If the click action + causes a new page to load (like a link usually does), call + waitForPageToLoad. + + 'locator' is an element locator + """ + self.do_command("click", [locator,]) + + + def double_click(self,locator): + """ + Double clicks on a link, button, checkbox or radio button. If the double click action + causes a new page to load (like a link usually does), call + waitForPageToLoad. + + 'locator' is an element locator + """ + self.do_command("doubleClick", [locator,]) + + + def context_menu(self,locator): + """ + Simulates opening the context menu for the specified element (as might happen if the user "right-clicked" on the element). + + 'locator' is an element locator + """ + self.do_command("contextMenu", [locator,]) + + + def click_at(self,locator,coordString): + """ + Clicks on a link, button, checkbox or radio button. If the click action + causes a new page to load (like a link usually does), call + waitForPageToLoad. + + 'locator' is an element locator + 'coordString' is specifies the x,y position (i.e. - 10,20) of the mouse event relative to the element returned by the locator. + """ + self.do_command("clickAt", [locator,coordString,]) + + + def double_click_at(self,locator,coordString): + """ + Doubleclicks on a link, button, checkbox or radio button. If the action + causes a new page to load (like a link usually does), call + waitForPageToLoad. + + 'locator' is an element locator + 'coordString' is specifies the x,y position (i.e. - 10,20) of the mouse event relative to the element returned by the locator. + """ + self.do_command("doubleClickAt", [locator,coordString,]) + + + def context_menu_at(self,locator,coordString): + """ + Simulates opening the context menu for the specified element (as might happen if the user "right-clicked" on the element). + + 'locator' is an element locator + 'coordString' is specifies the x,y position (i.e. - 10,20) of the mouse event relative to the element returned by the locator. + """ + self.do_command("contextMenuAt", [locator,coordString,]) + + + def fire_event(self,locator,eventName): + """ + Explicitly simulate an event, to trigger the corresponding "on\ *event*" + handler. + + 'locator' is an element locator + 'eventName' is the event name, e.g. "focus" or "blur" + """ + self.do_command("fireEvent", [locator,eventName,]) + + + def focus(self,locator): + """ + Move the focus to the specified element; for example, if the element is an input field, move the cursor to that field. + + 'locator' is an element locator + """ + self.do_command("focus", [locator,]) + + + def key_press(self,locator,keySequence): + """ + Simulates a user pressing and releasing a key. + + 'locator' is an element locator + 'keySequence' is Either be a string("\" followed by the numeric keycode of the key to be pressed, normally the ASCII value of that key), or a single character. For example: "w", "\119". + """ + self.do_command("keyPress", [locator,keySequence,]) + + + def shift_key_down(self): + """ + Press the shift key and hold it down until doShiftUp() is called or a new page is loaded. + + """ + self.do_command("shiftKeyDown", []) + + + def shift_key_up(self): + """ + Release the shift key. + + """ + self.do_command("shiftKeyUp", []) + + + def meta_key_down(self): + """ + Press the meta key and hold it down until doMetaUp() is called or a new page is loaded. + + """ + self.do_command("metaKeyDown", []) + + + def meta_key_up(self): + """ + Release the meta key. + + """ + self.do_command("metaKeyUp", []) + + + def alt_key_down(self): + """ + Press the alt key and hold it down until doAltUp() is called or a new page is loaded. + + """ + self.do_command("altKeyDown", []) + + + def alt_key_up(self): + """ + Release the alt key. + + """ + self.do_command("altKeyUp", []) + + + def control_key_down(self): + """ + Press the control key and hold it down until doControlUp() is called or a new page is loaded. + + """ + self.do_command("controlKeyDown", []) + + + def control_key_up(self): + """ + Release the control key. + + """ + self.do_command("controlKeyUp", []) + + + def key_down(self,locator,keySequence): + """ + Simulates a user pressing a key (without releasing it yet). + + 'locator' is an element locator + 'keySequence' is Either be a string("\" followed by the numeric keycode of the key to be pressed, normally the ASCII value of that key), or a single character. For example: "w", "\119". + """ + self.do_command("keyDown", [locator,keySequence,]) + + + def key_up(self,locator,keySequence): + """ + Simulates a user releasing a key. + + 'locator' is an element locator + 'keySequence' is Either be a string("\" followed by the numeric keycode of the key to be pressed, normally the ASCII value of that key), or a single character. For example: "w", "\119". + """ + self.do_command("keyUp", [locator,keySequence,]) + + + def mouse_over(self,locator): + """ + Simulates a user hovering a mouse over the specified element. + + 'locator' is an element locator + """ + self.do_command("mouseOver", [locator,]) + + + def mouse_out(self,locator): + """ + Simulates a user moving the mouse pointer away from the specified element. + + 'locator' is an element locator + """ + self.do_command("mouseOut", [locator,]) + + + def mouse_down(self,locator): + """ + Simulates a user pressing the mouse button (without releasing it yet) on + the specified element. + + 'locator' is an element locator + """ + self.do_command("mouseDown", [locator,]) + + + def mouse_down_at(self,locator,coordString): + """ + Simulates a user pressing the mouse button (without releasing it yet) at + the specified location. + + 'locator' is an element locator + 'coordString' is specifies the x,y position (i.e. - 10,20) of the mouse event relative to the element returned by the locator. + """ + self.do_command("mouseDownAt", [locator,coordString,]) + + + def mouse_up(self,locator): + """ + Simulates the event that occurs when the user releases the mouse button (i.e., stops + holding the button down) on the specified element. + + 'locator' is an element locator + """ + self.do_command("mouseUp", [locator,]) + + + def mouse_up_at(self,locator,coordString): + """ + Simulates the event that occurs when the user releases the mouse button (i.e., stops + holding the button down) at the specified location. + + 'locator' is an element locator + 'coordString' is specifies the x,y position (i.e. - 10,20) of the mouse event relative to the element returned by the locator. + """ + self.do_command("mouseUpAt", [locator,coordString,]) + + + def mouse_move(self,locator): + """ + Simulates a user pressing the mouse button (without releasing it yet) on + the specified element. + + 'locator' is an element locator + """ + self.do_command("mouseMove", [locator,]) + + + def mouse_move_at(self,locator,coordString): + """ + Simulates a user pressing the mouse button (without releasing it yet) on + the specified element. + + 'locator' is an element locator + 'coordString' is specifies the x,y position (i.e. - 10,20) of the mouse event relative to the element returned by the locator. + """ + self.do_command("mouseMoveAt", [locator,coordString,]) + + + def type(self,locator,value): + """ + Sets the value of an input field, as though you typed it in. + + + Can also be used to set the value of combo boxes, check boxes, etc. In these cases, + value should be the value of the option selected, not the visible text. + + + 'locator' is an element locator + 'value' is the value to type + """ + self.do_command("type", [locator,value,]) + + + def type_keys(self,locator,value): + """ + Simulates keystroke events on the specified element, as though you typed the value key-by-key. + + + This is a convenience method for calling keyDown, keyUp, keyPress for every character in the specified string; + this is useful for dynamic UI widgets (like auto-completing combo boxes) that require explicit key events. + + Unlike the simple "type" command, which forces the specified value into the page directly, this command + may or may not have any visible effect, even in cases where typing keys would normally have a visible effect. + For example, if you use "typeKeys" on a form element, you may or may not see the results of what you typed in + the field. + + In some cases, you may need to use the simple "type" command to set the value of the field and then the "typeKeys" command to + send the keystroke events corresponding to what you just typed. + + + 'locator' is an element locator + 'value' is the value to type + """ + self.do_command("typeKeys", [locator,value,]) + + + def set_speed(self,value): + """ + Set execution speed (i.e., set the millisecond length of a delay which will follow each selenium operation). By default, there is no such delay, i.e., + the delay is 0 milliseconds. + + 'value' is the number of milliseconds to pause after operation + """ + self.do_command("setSpeed", [value,]) + + + def get_speed(self): + """ + Get execution speed (i.e., get the millisecond length of the delay following each selenium operation). By default, there is no such delay, i.e., + the delay is 0 milliseconds. + + See also setSpeed. + + """ + return self.get_string("getSpeed", []) + + + def check(self,locator): + """ + Check a toggle-button (checkbox/radio) + + 'locator' is an element locator + """ + self.do_command("check", [locator,]) + + + def uncheck(self,locator): + """ + Uncheck a toggle-button (checkbox/radio) + + 'locator' is an element locator + """ + self.do_command("uncheck", [locator,]) + + + def select(self,selectLocator,optionLocator): + """ + Select an option from a drop-down using an option locator. + + + + Option locators provide different ways of specifying options of an HTML + Select element (e.g. for selecting a specific option, or for asserting + that the selected option satisfies a specification). There are several + forms of Select Option Locator. + + + * \ **label**\ =\ *labelPattern*: + matches options based on their labels, i.e. the visible text. (This + is the default.) + + * label=regexp:^[Oo]ther + + + * \ **value**\ =\ *valuePattern*: + matches options based on their values. + + * value=other + + + * \ **id**\ =\ *id*: + + matches options based on their ids. + + * id=option1 + + + * \ **index**\ =\ *index*: + matches an option based on its index (offset from zero). + + * index=2 + + + + + + If no option locator prefix is provided, the default behaviour is to match on \ **label**\ . + + + + 'selectLocator' is an element locator identifying a drop-down menu + 'optionLocator' is an option locator (a label by default) + """ + self.do_command("select", [selectLocator,optionLocator,]) + + + def add_selection(self,locator,optionLocator): + """ + Add a selection to the set of selected options in a multi-select element using an option locator. + + @see #doSelect for details of option locators + + 'locator' is an element locator identifying a multi-select box + 'optionLocator' is an option locator (a label by default) + """ + self.do_command("addSelection", [locator,optionLocator,]) + + + def remove_selection(self,locator,optionLocator): + """ + Remove a selection from the set of selected options in a multi-select element using an option locator. + + @see #doSelect for details of option locators + + 'locator' is an element locator identifying a multi-select box + 'optionLocator' is an option locator (a label by default) + """ + self.do_command("removeSelection", [locator,optionLocator,]) + + + def remove_all_selections(self,locator): + """ + Unselects all of the selected options in a multi-select element. + + 'locator' is an element locator identifying a multi-select box + """ + self.do_command("removeAllSelections", [locator,]) + + + def submit(self,formLocator): + """ + Submit the specified form. This is particularly useful for forms without + submit buttons, e.g. single-input "Search" forms. + + 'formLocator' is an element locator for the form you want to submit + """ + self.do_command("submit", [formLocator,]) + + + def open(self,url): + """ + Opens an URL in the test frame. This accepts both relative and absolute + URLs. + + The "open" command waits for the page to load before proceeding, + ie. the "AndWait" suffix is implicit. + + \ *Note*: The URL must be on the same domain as the runner HTML + due to security restrictions in the browser (Same Origin Policy). If you + need to open an URL on another domain, use the Selenium Server to start a + new browser session on that domain. + + 'url' is the URL to open; may be relative or absolute + """ + self.do_command("open", [url,]) + + + def open_window(self,url,windowID): + """ + Opens a popup window (if a window with that ID isn't already open). + After opening the window, you'll need to select it using the selectWindow + command. + + + This command can also be a useful workaround for bug SEL-339. In some cases, Selenium will be unable to intercept a call to window.open (if the call occurs during or before the "onLoad" event, for example). + In those cases, you can force Selenium to notice the open window's name by using the Selenium openWindow command, using + an empty (blank) url, like this: openWindow("", "myFunnyWindow"). + + + 'url' is the URL to open, which can be blank + 'windowID' is the JavaScript window ID of the window to select + """ + self.do_command("openWindow", [url,windowID,]) + + + def select_window(self,windowID): + """ + Selects a popup window using a window locator; once a popup window has been selected, all + commands go to that window. To select the main window again, use null + as the target. + + + + + Window locators provide different ways of specifying the window object: + by title, by internal JavaScript "name," or by JavaScript variable. + + + * \ **title**\ =\ *My Special Window*: + Finds the window using the text that appears in the title bar. Be careful; + two windows can share the same title. If that happens, this locator will + just pick one. + + * \ **name**\ =\ *myWindow*: + Finds the window using its internal JavaScript "name" property. This is the second + parameter "windowName" passed to the JavaScript method window.open(url, windowName, windowFeatures, replaceFlag) + (which Selenium intercepts). + + * \ **var**\ =\ *variableName*: + Some pop-up windows are unnamed (anonymous), but are associated with a JavaScript variable name in the current + application window, e.g. "window.foo = window.open(url);". In those cases, you can open the window using + "var=foo". + + + + + If no window locator prefix is provided, we'll try to guess what you mean like this: + + 1.) if windowID is null, (or the string "null") then it is assumed the user is referring to the original window instantiated by the browser). + + 2.) if the value of the "windowID" parameter is a JavaScript variable name in the current application window, then it is assumed + that this variable contains the return value from a call to the JavaScript window.open() method. + + 3.) Otherwise, selenium looks in a hash it maintains that maps string names to window "names". + + 4.) If \ *that* fails, we'll try looping over all of the known windows to try to find the appropriate "title". + Since "title" is not necessarily unique, this may have unexpected behavior. + + If you're having trouble figuring out the name of a window that you want to manipulate, look at the Selenium log messages + which identify the names of windows created via window.open (and therefore intercepted by Selenium). You will see messages + like the following for each window as it is opened: + + ``debug: window.open call intercepted; window ID (which you can use with selectWindow()) is "myNewWindow"`` + + In some cases, Selenium will be unable to intercept a call to window.open (if the call occurs during or before the "onLoad" event, for example). + (This is bug SEL-339.) In those cases, you can force Selenium to notice the open window's name by using the Selenium openWindow command, using + an empty (blank) url, like this: openWindow("", "myFunnyWindow"). + + + 'windowID' is the JavaScript window ID of the window to select + """ + self.do_command("selectWindow", [windowID,]) + + + def select_frame(self,locator): + """ + Selects a frame within the current window. (You may invoke this command + multiple times to select nested frames.) To select the parent frame, use + "relative=parent" as a locator; to select the top frame, use "relative=top". + You can also select a frame by its 0-based index number; select the first frame with + "index=0", or the third frame with "index=2". + + + You may also use a DOM expression to identify the frame you want directly, + like this: ``dom=frames["main"].frames["subframe"]`` + + + 'locator' is an element locator identifying a frame or iframe + """ + self.do_command("selectFrame", [locator,]) + + + def get_whether_this_frame_match_frame_expression(self,currentFrameString,target): + """ + Determine whether current/locator identify the frame containing this running code. + + + This is useful in proxy injection mode, where this code runs in every + browser frame and window, and sometimes the selenium server needs to identify + the "current" frame. In this case, when the test calls selectFrame, this + routine is called for each frame to figure out which one has been selected. + The selected frame will return true, while all others will return false. + + + 'currentFrameString' is starting frame + 'target' is new frame (which might be relative to the current one) + """ + return self.get_boolean("getWhetherThisFrameMatchFrameExpression", [currentFrameString,target,]) + + + def get_whether_this_window_match_window_expression(self,currentWindowString,target): + """ + Determine whether currentWindowString plus target identify the window containing this running code. + + + This is useful in proxy injection mode, where this code runs in every + browser frame and window, and sometimes the selenium server needs to identify + the "current" window. In this case, when the test calls selectWindow, this + routine is called for each window to figure out which one has been selected. + The selected window will return true, while all others will return false. + + + 'currentWindowString' is starting window + 'target' is new window (which might be relative to the current one, e.g., "_parent") + """ + return self.get_boolean("getWhetherThisWindowMatchWindowExpression", [currentWindowString,target,]) + + + def wait_for_pop_up(self,windowID,timeout): + """ + Waits for a popup window to appear and load up. + + 'windowID' is the JavaScript window "name" of the window that will appear (not the text of the title bar) + 'timeout' is a timeout in milliseconds, after which the action will return with an error + """ + self.do_command("waitForPopUp", [windowID,timeout,]) + + + def choose_cancel_on_next_confirmation(self): + """ + By default, Selenium's overridden window.confirm() function will + return true, as if the user had manually clicked OK; after running + this command, the next call to confirm() will return false, as if + the user had clicked Cancel. Selenium will then resume using the + default behavior for future confirmations, automatically returning + true (OK) unless/until you explicitly call this command for each + confirmation. + + """ + self.do_command("chooseCancelOnNextConfirmation", []) + + + def choose_ok_on_next_confirmation(self): + """ + Undo the effect of calling chooseCancelOnNextConfirmation. Note + that Selenium's overridden window.confirm() function will normally automatically + return true, as if the user had manually clicked OK, so you shouldn't + need to use this command unless for some reason you need to change + your mind prior to the next confirmation. After any confirmation, Selenium will resume using the + default behavior for future confirmations, automatically returning + true (OK) unless/until you explicitly call chooseCancelOnNextConfirmation for each + confirmation. + + """ + self.do_command("chooseOkOnNextConfirmation", []) + + + def answer_on_next_prompt(self,answer): + """ + Instructs Selenium to return the specified answer string in response to + the next JavaScript prompt [window.prompt()]. + + 'answer' is the answer to give in response to the prompt pop-up + """ + self.do_command("answerOnNextPrompt", [answer,]) + + + def go_back(self): + """ + Simulates the user clicking the "back" button on their browser. + + """ + self.do_command("goBack", []) + + + def refresh(self): + """ + Simulates the user clicking the "Refresh" button on their browser. + + """ + self.do_command("refresh", []) + + + def close(self): + """ + Simulates the user clicking the "close" button in the titlebar of a popup + window or tab. + + """ + self.do_command("close", []) + + + def is_alert_present(self): + """ + Has an alert occurred? + + + + This function never throws an exception + + + + """ + return self.get_boolean("isAlertPresent", []) + + + def is_prompt_present(self): + """ + Has a prompt occurred? + + + + This function never throws an exception + + + + """ + return self.get_boolean("isPromptPresent", []) + + + def is_confirmation_present(self): + """ + Has confirm() been called? + + + + This function never throws an exception + + + + """ + return self.get_boolean("isConfirmationPresent", []) + + + def get_alert(self): + """ + Retrieves the message of a JavaScript alert generated during the previous action, or fail if there were no alerts. + + + Getting an alert has the same effect as manually clicking OK. If an + alert is generated but you do not get/verify it, the next Selenium action + will fail. + + NOTE: under Selenium, JavaScript alerts will NOT pop up a visible alert + dialog. + + NOTE: Selenium does NOT support JavaScript alerts that are generated in a + page's onload() event handler. In this case a visible dialog WILL be + generated and Selenium will hang until someone manually clicks OK. + + + """ + return self.get_string("getAlert", []) + + + def get_confirmation(self): + """ + Retrieves the message of a JavaScript confirmation dialog generated during + the previous action. + + + + By default, the confirm function will return true, having the same effect + as manually clicking OK. This can be changed by prior execution of the + chooseCancelOnNextConfirmation command. If an confirmation is generated + but you do not get/verify it, the next Selenium action will fail. + + + + NOTE: under Selenium, JavaScript confirmations will NOT pop up a visible + dialog. + + + + NOTE: Selenium does NOT support JavaScript confirmations that are + generated in a page's onload() event handler. In this case a visible + dialog WILL be generated and Selenium will hang until you manually click + OK. + + + + """ + return self.get_string("getConfirmation", []) + + + def get_prompt(self): + """ + Retrieves the message of a JavaScript question prompt dialog generated during + the previous action. + + + Successful handling of the prompt requires prior execution of the + answerOnNextPrompt command. If a prompt is generated but you + do not get/verify it, the next Selenium action will fail. + + NOTE: under Selenium, JavaScript prompts will NOT pop up a visible + dialog. + + NOTE: Selenium does NOT support JavaScript prompts that are generated in a + page's onload() event handler. In this case a visible dialog WILL be + generated and Selenium will hang until someone manually clicks OK. + + + """ + return self.get_string("getPrompt", []) + + + def get_location(self): + """ + Gets the absolute URL of the current page. + + """ + return self.get_string("getLocation", []) + + + def get_title(self): + """ + Gets the title of the current page. + + """ + return self.get_string("getTitle", []) + + + def get_body_text(self): + """ + Gets the entire text of the page. + + """ + return self.get_string("getBodyText", []) + + + def get_value(self,locator): + """ + Gets the (whitespace-trimmed) value of an input field (or anything else with a value parameter). + For checkbox/radio elements, the value will be "on" or "off" depending on + whether the element is checked or not. + + 'locator' is an element locator + """ + return self.get_string("getValue", [locator,]) + + + def get_text(self,locator): + """ + Gets the text of an element. This works for any element that contains + text. This command uses either the textContent (Mozilla-like browsers) or + the innerText (IE-like browsers) of the element, which is the rendered + text shown to the user. + + 'locator' is an element locator + """ + return self.get_string("getText", [locator,]) + + + def highlight(self,locator): + """ + Briefly changes the backgroundColor of the specified element yellow. Useful for debugging. + + 'locator' is an element locator + """ + self.do_command("highlight", [locator,]) + + + def get_eval(self,script): + """ + Gets the result of evaluating the specified JavaScript snippet. The snippet may + have multiple lines, but only the result of the last line will be returned. + + + Note that, by default, the snippet will run in the context of the "selenium" + object itself, so ``this`` will refer to the Selenium object. Use ``window`` to + refer to the window of your application, e.g. ``window.document.getElementById('foo')`` + + If you need to use + a locator to refer to a single element in your application page, you can + use ``this.browserbot.findElement("id=foo")`` where "id=foo" is your locator. + + + 'script' is the JavaScript snippet to run + """ + return self.get_string("getEval", [script,]) + + + def is_checked(self,locator): + """ + Gets whether a toggle-button (checkbox/radio) is checked. Fails if the specified element doesn't exist or isn't a toggle-button. + + 'locator' is an element locator pointing to a checkbox or radio button + """ + return self.get_boolean("isChecked", [locator,]) + + + def get_table(self,tableCellAddress): + """ + Gets the text from a cell of a table. The cellAddress syntax + tableLocator.row.column, where row and column start at 0. + + 'tableCellAddress' is a cell address, e.g. "foo.1.4" + """ + return self.get_string("getTable", [tableCellAddress,]) + + + def get_selected_labels(self,selectLocator): + """ + Gets all option labels (visible text) for selected options in the specified select or multi-select element. + + 'selectLocator' is an element locator identifying a drop-down menu + """ + return self.get_string_array("getSelectedLabels", [selectLocator,]) + + + def get_selected_label(self,selectLocator): + """ + Gets option label (visible text) for selected option in the specified select element. + + 'selectLocator' is an element locator identifying a drop-down menu + """ + return self.get_string("getSelectedLabel", [selectLocator,]) + + + def get_selected_values(self,selectLocator): + """ + Gets all option values (value attributes) for selected options in the specified select or multi-select element. + + 'selectLocator' is an element locator identifying a drop-down menu + """ + return self.get_string_array("getSelectedValues", [selectLocator,]) + + + def get_selected_value(self,selectLocator): + """ + Gets option value (value attribute) for selected option in the specified select element. + + 'selectLocator' is an element locator identifying a drop-down menu + """ + return self.get_string("getSelectedValue", [selectLocator,]) + + + def get_selected_indexes(self,selectLocator): + """ + Gets all option indexes (option number, starting at 0) for selected options in the specified select or multi-select element. + + 'selectLocator' is an element locator identifying a drop-down menu + """ + return self.get_string_array("getSelectedIndexes", [selectLocator,]) + + + def get_selected_index(self,selectLocator): + """ + Gets option index (option number, starting at 0) for selected option in the specified select element. + + 'selectLocator' is an element locator identifying a drop-down menu + """ + return self.get_string("getSelectedIndex", [selectLocator,]) + + + def get_selected_ids(self,selectLocator): + """ + Gets all option element IDs for selected options in the specified select or multi-select element. + + 'selectLocator' is an element locator identifying a drop-down menu + """ + return self.get_string_array("getSelectedIds", [selectLocator,]) + + + def get_selected_id(self,selectLocator): + """ + Gets option element ID for selected option in the specified select element. + + 'selectLocator' is an element locator identifying a drop-down menu + """ + return self.get_string("getSelectedId", [selectLocator,]) + + + def is_something_selected(self,selectLocator): + """ + Determines whether some option in a drop-down menu is selected. + + 'selectLocator' is an element locator identifying a drop-down menu + """ + return self.get_boolean("isSomethingSelected", [selectLocator,]) + + + def get_select_options(self,selectLocator): + """ + Gets all option labels in the specified select drop-down. + + 'selectLocator' is an element locator identifying a drop-down menu + """ + return self.get_string_array("getSelectOptions", [selectLocator,]) + + + def get_attribute(self,attributeLocator): + """ + Gets the value of an element attribute. The value of the attribute may + differ across browsers (this is the case for the "style" attribute, for + example). + + 'attributeLocator' is an element locator followed by an @ sign and then the name of the attribute, e.g. "foo@bar" + """ + return self.get_string("getAttribute", [attributeLocator,]) + + + def is_text_present(self,pattern): + """ + Verifies that the specified text pattern appears somewhere on the rendered page shown to the user. + + 'pattern' is a pattern to match with the text of the page + """ + return self.get_boolean("isTextPresent", [pattern,]) + + + def is_element_present(self,locator): + """ + Verifies that the specified element is somewhere on the page. + + 'locator' is an element locator + """ + return self.get_boolean("isElementPresent", [locator,]) + + + def is_visible(self,locator): + """ + Determines if the specified element is visible. An + element can be rendered invisible by setting the CSS "visibility" + property to "hidden", or the "display" property to "none", either for the + element itself or one if its ancestors. This method will fail if + the element is not present. + + 'locator' is an element locator + """ + return self.get_boolean("isVisible", [locator,]) + + + def is_editable(self,locator): + """ + Determines whether the specified input element is editable, ie hasn't been disabled. + This method will fail if the specified element isn't an input element. + + 'locator' is an element locator + """ + return self.get_boolean("isEditable", [locator,]) + + + def get_all_buttons(self): + """ + Returns the IDs of all buttons on the page. + + + If a given button has no ID, it will appear as "" in this array. + + + """ + return self.get_string_array("getAllButtons", []) + + + def get_all_links(self): + """ + Returns the IDs of all links on the page. + + + If a given link has no ID, it will appear as "" in this array. + + + """ + return self.get_string_array("getAllLinks", []) + + + def get_all_fields(self): + """ + Returns the IDs of all input fields on the page. + + + If a given field has no ID, it will appear as "" in this array. + + + """ + return self.get_string_array("getAllFields", []) + + + def get_attribute_from_all_windows(self,attributeName): + """ + Returns every instance of some attribute from all known windows. + + 'attributeName' is name of an attribute on the windows + """ + return self.get_string_array("getAttributeFromAllWindows", [attributeName,]) + + + def dragdrop(self,locator,movementsString): + """ + deprecated - use dragAndDrop instead + + 'locator' is an element locator + 'movementsString' is offset in pixels from the current location to which the element should be moved, e.g., "+70,-300" + """ + self.do_command("dragdrop", [locator,movementsString,]) + + + def set_mouse_speed(self,pixels): + """ + Configure the number of pixels between "mousemove" events during dragAndDrop commands (default=10). + + Setting this value to 0 means that we'll send a "mousemove" event to every single pixel + in between the start location and the end location; that can be very slow, and may + cause some browsers to force the JavaScript to timeout. + + If the mouse speed is greater than the distance between the two dragged objects, we'll + just send one "mousemove" at the start location and then one final one at the end location. + + + 'pixels' is the number of pixels between "mousemove" events + """ + self.do_command("setMouseSpeed", [pixels,]) + + + def get_mouse_speed(self): + """ + Returns the number of pixels between "mousemove" events during dragAndDrop commands (default=10). + + """ + return self.get_number("getMouseSpeed", []) + + + def drag_and_drop(self,locator,movementsString): + """ + Drags an element a certain distance and then drops it + + 'locator' is an element locator + 'movementsString' is offset in pixels from the current location to which the element should be moved, e.g., "+70,-300" + """ + self.do_command("dragAndDrop", [locator,movementsString,]) + + + def drag_and_drop_to_object(self,locatorOfObjectToBeDragged,locatorOfDragDestinationObject): + """ + Drags an element and drops it on another element + + 'locatorOfObjectToBeDragged' is an element to be dragged + 'locatorOfDragDestinationObject' is an element whose location (i.e., whose center-most pixel) will be the point where locatorOfObjectToBeDragged is dropped + """ + self.do_command("dragAndDropToObject", [locatorOfObjectToBeDragged,locatorOfDragDestinationObject,]) + + + def window_focus(self): + """ + Gives focus to the currently selected window + + """ + self.do_command("windowFocus", []) + + + def window_maximize(self): + """ + Resize currently selected window to take up the entire screen + + """ + self.do_command("windowMaximize", []) + + + def get_all_window_ids(self): + """ + Returns the IDs of all windows that the browser knows about. + + """ + return self.get_string_array("getAllWindowIds", []) + + + def get_all_window_names(self): + """ + Returns the names of all windows that the browser knows about. + + """ + return self.get_string_array("getAllWindowNames", []) + + + def get_all_window_titles(self): + """ + Returns the titles of all windows that the browser knows about. + + """ + return self.get_string_array("getAllWindowTitles", []) + + + def get_html_source(self): + """ + Returns the entire HTML source between the opening and + closing "html" tags. + + """ + return self.get_string("getHtmlSource", []) + + + def set_cursor_position(self,locator,position): + """ + Moves the text cursor to the specified position in the given input element or textarea. + This method will fail if the specified element isn't an input element or textarea. + + 'locator' is an element locator pointing to an input element or textarea + 'position' is the numerical position of the cursor in the field; position should be 0 to move the position to the beginning of the field. You can also set the cursor to -1 to move it to the end of the field. + """ + self.do_command("setCursorPosition", [locator,position,]) + + + def get_element_index(self,locator): + """ + Get the relative index of an element to its parent (starting from 0). The comment node and empty text node + will be ignored. + + 'locator' is an element locator pointing to an element + """ + return self.get_number("getElementIndex", [locator,]) + + + def is_ordered(self,locator1,locator2): + """ + Check if these two elements have same parent and are ordered siblings in the DOM. Two same elements will + not be considered ordered. + + 'locator1' is an element locator pointing to the first element + 'locator2' is an element locator pointing to the second element + """ + return self.get_boolean("isOrdered", [locator1,locator2,]) + + + def get_element_position_left(self,locator): + """ + Retrieves the horizontal position of an element + + 'locator' is an element locator pointing to an element OR an element itself + """ + return self.get_number("getElementPositionLeft", [locator,]) + + + def get_element_position_top(self,locator): + """ + Retrieves the vertical position of an element + + 'locator' is an element locator pointing to an element OR an element itself + """ + return self.get_number("getElementPositionTop", [locator,]) + + + def get_element_width(self,locator): + """ + Retrieves the width of an element + + 'locator' is an element locator pointing to an element + """ + return self.get_number("getElementWidth", [locator,]) + + + def get_element_height(self,locator): + """ + Retrieves the height of an element + + 'locator' is an element locator pointing to an element + """ + return self.get_number("getElementHeight", [locator,]) + + + def get_cursor_position(self,locator): + """ + Retrieves the text cursor position in the given input element or textarea; beware, this may not work perfectly on all browsers. + + + Specifically, if the cursor/selection has been cleared by JavaScript, this command will tend to + return the position of the last location of the cursor, even though the cursor is now gone from the page. This is filed as SEL-243. + + This method will fail if the specified element isn't an input element or textarea, or there is no cursor in the element. + + 'locator' is an element locator pointing to an input element or textarea + """ + return self.get_number("getCursorPosition", [locator,]) + + + def get_expression(self,expression): + """ + Returns the specified expression. + + + This is useful because of JavaScript preprocessing. + It is used to generate commands like assertExpression and waitForExpression. + + + 'expression' is the value to return + """ + return self.get_string("getExpression", [expression,]) + + + def get_xpath_count(self,xpath): + """ + Returns the number of nodes that match the specified xpath, eg. "//table" would give + the number of tables. + + 'xpath' is the xpath expression to evaluate. do NOT wrap this expression in a 'count()' function; we will do that for you. + """ + return self.get_number("getXpathCount", [xpath,]) + + + def assign_id(self,locator,identifier): + """ + Temporarily sets the "id" attribute of the specified element, so you can locate it in the future + using its ID rather than a slow/complicated XPath. This ID will disappear once the page is + reloaded. + + 'locator' is an element locator pointing to an element + 'identifier' is a string to be used as the ID of the specified element + """ + self.do_command("assignId", [locator,identifier,]) + + + def allow_native_xpath(self,allow): + """ + Specifies whether Selenium should use the native in-browser implementation + of XPath (if any native version is available); if you pass "false" to + this function, we will always use our pure-JavaScript xpath library. + Using the pure-JS xpath library can improve the consistency of xpath + element locators between different browser vendors, but the pure-JS + version is much slower than the native implementations. + + 'allow' is boolean, true means we'll prefer to use native XPath; false means we'll only use JS XPath + """ + self.do_command("allowNativeXpath", [allow,]) + + + def ignore_attributes_without_value(self,ignore): + """ + Specifies whether Selenium will ignore xpath attributes that have no + value, i.e. are the empty string, when using the non-native xpath + evaluation engine. You'd want to do this for performance reasons in IE. + However, this could break certain xpaths, for example an xpath that looks + for an attribute whose value is NOT the empty string. + + The hope is that such xpaths are relatively rare, but the user should + have the option of using them. Note that this only influences xpath + evaluation when using the ajaxslt engine (i.e. not "javascript-xpath"). + + 'ignore' is boolean, true means we'll ignore attributes without value at the expense of xpath "correctness"; false means we'll sacrifice speed for correctness. + """ + self.do_command("ignoreAttributesWithoutValue", [ignore,]) + + + def wait_for_condition(self,script,timeout): + """ + Runs the specified JavaScript snippet repeatedly until it evaluates to "true". + The snippet may have multiple lines, but only the result of the last line + will be considered. + + + Note that, by default, the snippet will be run in the runner's test window, not in the window + of your application. To get the window of your application, you can use + the JavaScript snippet ``selenium.browserbot.getCurrentWindow()``, and then + run your JavaScript in there + + + 'script' is the JavaScript snippet to run + 'timeout' is a timeout in milliseconds, after which this command will return with an error + """ + self.do_command("waitForCondition", [script,timeout,]) + + + def set_timeout(self,timeout): + """ + Specifies the amount of time that Selenium will wait for actions to complete. + + + Actions that require waiting include "open" and the "waitFor\*" actions. + + The default timeout is 30 seconds. + + 'timeout' is a timeout in milliseconds, after which the action will return with an error + """ + self.do_command("setTimeout", [timeout,]) + + + def wait_for_page_to_load(self,timeout): + """ + Waits for a new page to load. + + + You can use this command instead of the "AndWait" suffixes, "clickAndWait", "selectAndWait", "typeAndWait" etc. + (which are only available in the JS API). + + Selenium constantly keeps track of new pages loading, and sets a "newPageLoaded" + flag when it first notices a page load. Running any other Selenium command after + turns the flag to false. Hence, if you want to wait for a page to load, you must + wait immediately after a Selenium command that caused a page-load. + + + 'timeout' is a timeout in milliseconds, after which this command will return with an error + """ + self.do_command("waitForPageToLoad", [timeout,]) + + + def wait_for_frame_to_load(self,frameAddress,timeout): + """ + Waits for a new frame to load. + + + Selenium constantly keeps track of new pages and frames loading, + and sets a "newPageLoaded" flag when it first notices a page load. + + + See waitForPageToLoad for more information. + + 'frameAddress' is FrameAddress from the server side + 'timeout' is a timeout in milliseconds, after which this command will return with an error + """ + self.do_command("waitForFrameToLoad", [frameAddress,timeout,]) + + + def get_cookie(self): + """ + Return all cookies of the current page under test. + + """ + return self.get_string("getCookie", []) + + + def get_cookie_by_name(self,name): + """ + Returns the value of the cookie with the specified name, or throws an error if the cookie is not present. + + 'name' is the name of the cookie + """ + return self.get_string("getCookieByName", [name,]) + + + def is_cookie_present(self,name): + """ + Returns true if a cookie with the specified name is present, or false otherwise. + + 'name' is the name of the cookie + """ + return self.get_boolean("isCookiePresent", [name,]) + + + def create_cookie(self,nameValuePair,optionsString): + """ + Create a new cookie whose path and domain are same with those of current page + under test, unless you specified a path for this cookie explicitly. + + 'nameValuePair' is name and value of the cookie in a format "name=value" + 'optionsString' is options for the cookie. Currently supported options include 'path', 'max_age' and 'domain'. the optionsString's format is "path=/path/, max_age=60, domain=.foo.com". The order of options are irrelevant, the unit of the value of 'max_age' is second. Note that specifying a domain that isn't a subset of the current domain will usually fail. + """ + self.do_command("createCookie", [nameValuePair,optionsString,]) + + + def delete_cookie(self,name,optionsString): + """ + Delete a named cookie with specified path and domain. Be careful; to delete a cookie, you + need to delete it using the exact same path and domain that were used to create the cookie. + If the path is wrong, or the domain is wrong, the cookie simply won't be deleted. Also + note that specifying a domain that isn't a subset of the current domain will usually fail. + + Since there's no way to discover at runtime the original path and domain of a given cookie, + we've added an option called 'recurse' to try all sub-domains of the current domain with + all paths that are a subset of the current path. Beware; this option can be slow. In + big-O notation, it operates in O(n\*m) time, where n is the number of dots in the domain + name and m is the number of slashes in the path. + + 'name' is the name of the cookie to be deleted + 'optionsString' is options for the cookie. Currently supported options include 'path', 'domain' and 'recurse.' The optionsString's format is "path=/path/, domain=.foo.com, recurse=true". The order of options are irrelevant. Note that specifying a domain that isn't a subset of the current domain will usually fail. + """ + self.do_command("deleteCookie", [name,optionsString,]) + + + def delete_all_visible_cookies(self): + """ + Calls deleteCookie with recurse=true on all cookies visible to the current page. + As noted on the documentation for deleteCookie, recurse=true can be much slower + than simply deleting the cookies using a known domain/path. + + """ + self.do_command("deleteAllVisibleCookies", []) + + + def set_browser_log_level(self,logLevel): + """ + Sets the threshold for browser-side logging messages; log messages beneath this threshold will be discarded. + Valid logLevel strings are: "debug", "info", "warn", "error" or "off". + To see the browser logs, you need to + either show the log window in GUI mode, or enable browser-side logging in Selenium RC. + + 'logLevel' is one of the following: "debug", "info", "warn", "error" or "off" + """ + self.do_command("setBrowserLogLevel", [logLevel,]) + + + def run_script(self,script): + """ + Creates a new "script" tag in the body of the current test window, and + adds the specified text into the body of the command. Scripts run in + this way can often be debugged more easily than scripts executed using + Selenium's "getEval" command. Beware that JS exceptions thrown in these script + tags aren't managed by Selenium, so you should probably wrap your script + in try/catch blocks if there is any chance that the script will throw + an exception. + + 'script' is the JavaScript snippet to run + """ + self.do_command("runScript", [script,]) + + + def add_location_strategy(self,strategyName,functionDefinition): + """ + Defines a new function for Selenium to locate elements on the page. + For example, + if you define the strategy "foo", and someone runs click("foo=blah"), we'll + run your function, passing you the string "blah", and click on the element + that your function + returns, or throw an "Element not found" error if your function returns null. + + We'll pass three arguments to your function: + + * locator: the string the user passed in + * inWindow: the currently selected window + * inDocument: the currently selected document + + + The function must return null if the element can't be found. + + 'strategyName' is the name of the strategy to define; this should use only letters [a-zA-Z] with no spaces or other punctuation. + 'functionDefinition' is a string defining the body of a function in JavaScript. For example: ``return inDocument.getElementById(locator);`` + """ + self.do_command("addLocationStrategy", [strategyName,functionDefinition,]) + + + def capture_entire_page_screenshot(self,filename): + """ + Saves the entire contents of the current window canvas to a PNG file. + Currently this only works in Mozilla and when running in chrome mode. + Contrast this with the captureScreenshot command, which captures the + contents of the OS viewport (i.e. whatever is currently being displayed + on the monitor), and is implemented in the RC only. Implementation + mostly borrowed from the Screengrab! Firefox extension. Please see + http://www.screengrab.org for details. + + 'filename' is the path to the file to persist the screenshot as. No filename extension will be appended by default. Directories will not be created if they do not exist, and an exception will be thrown, possibly by native code. + """ + self.do_command("captureEntirePageScreenshot", [filename,]) + + + def set_context(self,context): + """ + Writes a message to the status bar and adds a note to the browser-side + log. + + 'context' is the message to be sent to the browser + """ + self.do_command("setContext", [context,]) + + + def attach_file(self,fieldLocator,fileLocator): + """ + Sets a file input (upload) field to the file listed in fileLocator + + 'fieldLocator' is an element locator + 'fileLocator' is a URL pointing to the specified file. Before the file can be set in the input field (fieldLocator), Selenium RC may need to transfer the file to the local machine before attaching the file in a web page form. This is common in selenium grid configurations where the RC server driving the browser is not the same machine that started the test. Supported Browsers: Firefox ("\*chrome") only. + """ + self.do_command("attachFile", [fieldLocator,fileLocator,]) + + + def capture_screenshot(self,filename): + """ + Captures a PNG screenshot to the specified file. + + 'filename' is the absolute path to the file to be written, e.g. "c:\blah\screenshot.png" + """ + self.do_command("captureScreenshot", [filename,]) + + + def shut_down_selenium_server(self): + """ + Kills the running Selenium Server and all browser sessions. After you run this command, you will no longer be able to send + commands to the server; you can't remotely start the server once it has been stopped. Normally + you should prefer to run the "stop" command, which terminates the current browser session, rather than + shutting down the entire server. + + """ + self.do_command("shutDownSeleniumServer", []) + + + def key_down_native(self,keycode): + """ + Simulates a user pressing a key (without releasing it yet) by sending a native operating system keystroke. + This function uses the java.awt.Robot class to send a keystroke; this more accurately simulates typing + a key on the keyboard. It does not honor settings from the shiftKeyDown, controlKeyDown, altKeyDown and + metaKeyDown commands, and does not target any particular HTML element. To send a keystroke to a particular + element, focus on the element first before running this command. + + 'keycode' is an integer keycode number corresponding to a java.awt.event.KeyEvent; note that Java keycodes are NOT the same thing as JavaScript keycodes! + """ + self.do_command("keyDownNative", [keycode,]) + + + def key_up_native(self,keycode): + """ + Simulates a user releasing a key by sending a native operating system keystroke. + This function uses the java.awt.Robot class to send a keystroke; this more accurately simulates typing + a key on the keyboard. It does not honor settings from the shiftKeyDown, controlKeyDown, altKeyDown and + metaKeyDown commands, and does not target any particular HTML element. To send a keystroke to a particular + element, focus on the element first before running this command. + + 'keycode' is an integer keycode number corresponding to a java.awt.event.KeyEvent; note that Java keycodes are NOT the same thing as JavaScript keycodes! + """ + self.do_command("keyUpNative", [keycode,]) + + + def key_press_native(self,keycode): + """ + Simulates a user pressing and releasing a key by sending a native operating system keystroke. + This function uses the java.awt.Robot class to send a keystroke; this more accurately simulates typing + a key on the keyboard. It does not honor settings from the shiftKeyDown, controlKeyDown, altKeyDown and + metaKeyDown commands, and does not target any particular HTML element. To send a keystroke to a particular + element, focus on the element first before running this command. + + 'keycode' is an integer keycode number corresponding to a java.awt.event.KeyEvent; note that Java keycodes are NOT the same thing as JavaScript keycodes! + """ + self.do_command("keyPressNative", [keycode,]) + diff --git a/openlayers/tests/selenium/remotecontrol/setup.txt b/openlayers/tests/selenium/remotecontrol/setup.txt new file mode 100644 index 0000000..d349491 --- /dev/null +++ b/openlayers/tests/selenium/remotecontrol/setup.txt @@ -0,0 +1,8 @@ + * Install selenium remote control from the latest snapshot: + + http://nexus.openqa.org/content/repositories/snapshots/org/seleniumhq/selenium/selenium-remote-control/1.0-SNAPSHOT/ + + * Run the server with java -jar selenium-server.jar + * Run the python script + + diff --git a/openlayers/tests/selenium/remotecontrol/test_ol.py b/openlayers/tests/selenium/remotecontrol/test_ol.py new file mode 100644 index 0000000..cb8ad98 --- /dev/null +++ b/openlayers/tests/selenium/remotecontrol/test_ol.py @@ -0,0 +1,95 @@ +from selenium import selenium +import time +import sys +from ConfigParser import ConfigParser + +MAX_TEST_LENGTH = 300 +if len(sys.argv) > 2: + filename = sys.argv[2] +else: + filename = "config.cfg" + +c = ConfigParser() +c.read(filename) + +targets = {} + +server = c.get('config', 'server') +url= c.get('config', 'url') +if c.has_option('config', 'timeout'): + MAX_TEST_LENGTH = int(c.get('config', 'timeout')) + + +sections = c.sections() +for s in sections: + if s == 'config': + continue + targets[s] = dict(c.items(s)) + targets[s]['name'] = s + +if sys.argv[1] == "all": + browsers = list(targets.values()) +elif sys.argv[1] not in targets: + print "Invalid target" + sys.exit() +else: + browsers = [targets[sys.argv[1]]] + +keep_going = True + +if 1: + for b in browsers: + if not keep_going: + continue + + print "Running %s on %s" % (b['name'], b['host']) + s = selenium(b['host'], 4444, "*%s" % b['browsercmd'], server) + s.start() + try: + s.open_window(url, "test_running") + time.sleep(2) + s.select_window("test_running") + time.sleep(2) + s.refresh() + + count = 0 + while count == 0: + count = int(s.get_eval("window.document.getElementById('testtable').getElementsByTagName('tr').length")) + time.sleep(5) + + ok = 0 + fail = 0 + last_change = time.time() + while True: + new_ok = int(s.get_eval('window.Test.AnotherWay._g_ok_pages')) + new_fail = int(s.get_eval('window.Test.AnotherWay._g_fail_pages')) + if new_ok != ok or new_fail != fail: + ok = new_ok + fail = new_fail + last_change = time.time() + + if (ok + fail) >= count: + break + if time.time() - last_change > MAX_TEST_LENGTH: + raise Exception("Failed: with %s okay and %s failed, ran out of time: %s is more than %s" % (ok, fail, (time.time() - last_change), MAX_TEST_LENGTH)) + time.sleep(10) + + if fail: + print "Failed: %s" % fail + html = s.get_eval("window.document.getElementById('results').innerHTML").encode("utf-8") + all_html = """ + + + + %s""" % html + + f = open("fail.%s.%s.html" % (time.time(), b['name']), "w") + f.write(all_html) + f.close() + except KeyboardInterrupt, E: + keep_going = False + print "Stopped by keyboard interrupt" + except Exception, E: + print "Error: ", E + s.stop() + diff --git a/openlayers/tests/speed/geometry.html b/openlayers/tests/speed/geometry.html new file mode 100644 index 0000000..bc2b488 --- /dev/null +++ b/openlayers/tests/speed/geometry.html @@ -0,0 +1,43 @@ + + + + + +
+ diff --git a/openlayers/tests/speed/string_format.html b/openlayers/tests/speed/string_format.html new file mode 100644 index 0000000..39146b7 --- /dev/null +++ b/openlayers/tests/speed/string_format.html @@ -0,0 +1,29 @@ + + + + + + +Run +
+ + diff --git a/openlayers/tests/speed/wmc_speed.html b/openlayers/tests/speed/wmc_speed.html new file mode 100644 index 0000000..0dd0ce8 --- /dev/null +++ b/openlayers/tests/speed/wmc_speed.html @@ -0,0 +1,30 @@ + + + + + + +Run +
+ + diff --git a/openlayers/tests/throws.js b/openlayers/tests/throws.js new file mode 100644 index 0000000..c320355 --- /dev/null +++ b/openlayers/tests/throws.js @@ -0,0 +1,82 @@ +/* + + throws.js -- Adds a `throws_` method to AnotherWay test objects. + + Copyright 2005 MetaCarta, Inc., released under the BSD License. + + + A reference to this file needs to be added to `run-tests.html` in the + head element after the AnotherWay classes are created: + + + + Then, it can be used just like the `ok`, `fail` and other such methods + in your unit tests. + + e.g. + + t.throws_(function () {new OpenLayers.View.Map.Dynamic();}, + ReferenceError("No container supplied."), + "OpenLayers.View.Map.Dynamic instantiation with no container " + + "must throw."); + + This was inspired by the `assertRaises` method of Python's unittest + library. + + Possible future enhancements: + + * Contribute to official AnotherWay distribution. + * Use `apply` rather than require a inner function (or as an option). + * Preserve the stack fields. + + */ + +Test.AnotherWay._test_object_t.prototype.throws_ = +function (fn, expectedException, doc) { + /* + + Executes the supplied function object catching any exception(s) + thrown, then verifies the supplied expected exception occurred. + + If no exception is thrown the test fails. + + If an exception is thrown and it does not match the supplied + expected exception the test fails. + + If the exception thrown matches the supplied expected exception + the test passes. + + Two exceptions "match" if Test.AnotherWay's `eq` method considers + the two equal when their respective stacks are ignored. + + fn - The function object to be executed + expectedException - The exception object expected to result + doc - Description of the test + + Note: The name of this method is `throws_` (with a trailing + underscore) as `throws` is a reserved identifier and can + not be used as a method name. + + Note: This function does not preserve the stack field associated + with either exception. + + */ + var theCaughtException = null; + + try { + fn(); + } catch (innerCaughtException) { + // As `innerCaughtException` is not visible outside the scope + // of this `catch` block we need to make it visible explicitly. + theCaughtException = innerCaughtException; + } + + if (theCaughtException) { + // We delete the stacks before comparison as they will never match. + delete theCaughtException.stack; + delete expectedException.stack; + this.eq(theCaughtException, expectedException, doc); + } else { + this.fail(doc); + } +}; \ No newline at end of file diff --git a/openlayers/tests/xml_eq.js b/openlayers/tests/xml_eq.js new file mode 100644 index 0000000..47084cd --- /dev/null +++ b/openlayers/tests/xml_eq.js @@ -0,0 +1,311 @@ +/** + * File: xml_eq.js + * Adds a xml_eq method to AnotherWay test objects. + * + */ + +(function() { + + /** + * Function: createNode + * Given a string, try to create an XML DOM node. Throws string messages + * on failure. + * + * Parameters: + * text - {String} An XML string. + * + * Returns: + * {DOMElement} An element node. + */ + function createNode(text) { + + var index = text.indexOf('<'); + if(index > 0) { + text = text.substring(index); + } + + var doc; + if(window.ActiveXObject && !this.xmldom) { + doc = new ActiveXObject("Microsoft.XMLDOM"); + try { + doc.loadXML(text); + } catch(err) { + throw "ActiveXObject loadXML failed: " + err; + } + } else if(window.DOMParser) { + try { + doc = new DOMParser().parseFromString(text, 'text/xml'); + } catch(err) { + throw "DOMParser.parseFromString failed"; + } + if(doc.documentElement && doc.documentElement.nodeName == "parsererror") { + throw "DOMParser.parseFromString returned parsererror"; + } + } else { + var req = new XMLHttpRequest(); + req.open("GET", "data:text/xml;charset=utf-8," + + encodeURIComponent(text), false); + if(req.overrideMimeType) { + req.overrideMimeType("text/xml"); + } + req.send(null); + doc = req.responseXML; + } + + var root = doc.documentElement; + if(!root) { + throw "no documentElement"; + } + return root; + } + + /** + * Function assertEqual + * Test two objects for equivalence (based on ==). Throw an exception + * if not equivalent. + * + * Parameters: + * got - {Object} + * expected - {Object} + * msg - {String} The message to be thrown. This message will be appended + * with ": got {got} but expected {expected}" where got and expected are + * replaced with string representations of the above arguments. + */ + function assertEqual(got, expected, msg) { + if(got === undefined) { + got = "undefined"; + } else if (got === null) { + got = "null"; + } + if(expected === undefined) { + expected = "undefined"; + } else if (expected === null) { + expected = "null"; + } + if(got != expected) { + throw msg + ": got '" + got + "' but expected '" + expected + "'"; + } + } + + /** + * Function assertElementNodesEqual + * Test two element nodes for equivalence. Nodes are considered equivalent + * if they are of the same type, have the same name, have the same + * namespace prefix and uri, and if all child nodes are equivalent. + * Throws a message as exception if not equivalent. + * + * Parameters: + * got - {DOMElement} + * expected - {DOMElement} + * options - {Object} Optional object for configuring test options. + * + * Valid options: + * prefix - {Boolean} Compare element and attribute + * prefixes (namespace uri always tested). Default is false. + * includeWhiteSpace - {Boolean} Include whitespace only nodes when + * comparing child nodes. Default is false. + */ + function assertElementNodesEqual(got, expected, options) { + var testPrefix = (options && options.prefix === true); + + // compare types + assertEqual(got.nodeType, expected.nodeType, "Node type mismatch"); + + // compare names + var gotName = testPrefix ? + got.nodeName : got.nodeName.split(":").pop(); + var expName = testPrefix ? + expected.nodeName : expected.nodeName.split(":").pop(); + assertEqual(gotName, expName, "Node name mismatch"); + + // for text nodes compare value + if(got.nodeType == 3) { + assertEqual( + got.nodeValue, expected.nodeValue, "Node value mismatch" + ); + } + // for element type nodes compare namespace, attributes, and children + else if(got.nodeType == 1) { + + // test namespace alias and uri + if(got.prefix || expected.prefix) { + if(testPrefix) { + assertEqual( + got.prefix, expected.prefix, + "Bad prefix for " + got.nodeName + ); + } + } + if(got.namespaceURI || expected.namespaceURI) { + assertEqual( + got.namespaceURI, expected.namespaceURI, + "Bad namespaceURI for " + got.nodeName + ); + } + + // compare attributes - disregard xmlns given namespace handling above + var gotAttrLen = 0; + var gotAttr = {}; + var expAttrLen = 0; + var expAttr = {}; + var ga, ea, gn, en; + for(var i=0; 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 S7Cw~#0000bmP+{ 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 literal 0 HcmV?d00001 diff --git a/openlayers/theme/default/img/draw_line_off.png b/openlayers/theme/default/img/draw_line_off.png new file mode 100644 index 0000000000000000000000000000000000000000..7f15612548a17545c7dceaee437c78078b9b8373 GIT binary patch literal 1567 zcmV+)2H^RLP)4Tx0C=30lFLg1K^(`wyAnpvLzWQ)dol?P=>Z85n9u_|m;{xVSl87ATbJ3< z3c7X|xf;w~ygf1c5%ueA+q%ZuK&-|E~-~1kcTvJUmF9X;$ zC`l|WD4SbJ#r*^qy5LCFEHe_1ucD>C9wG7dA;{mVbRXVj#y|R}-wU1I?eb#ldyaYt z3kXOa#-6NTKj)O-InI03q>SU7wH-Chm>B|OJrQMGX55z*e8xE?_?B}?%ksNb#vvn} zGZ=p|o=xkP2FN@X)l9<9$ft~hJb&>u8UyA>0avZ*OIpD772x$Xeg0u!a09rXYWnJH zPEDktnw6QFbX-!;0?_ed+jSq{J_Z_P+y1_=?ZzdG@eEWAtw>70b&=#S&~7hs6MNAE zhtP^e{*FSx`7*Gus{L<{)> zu}oFd+cf&WqWZp*TeM&vkX&|$DiJnaIt#dK7O74G%8H>)1eD28XojEr0p&M$wvB-o zTL1t908mU+MbOX9o12jM`}XPQEoWBlUP<(w6n6q!^4GygxA;2b#!#$-Ou{=>-YEf=;z_a#I>ZLn9a+(=jY=0_44@l z_3+=T8yOi$Mn&%I-ezTG=;q<;>gDmkDyXQP?(ORO`~KeB%lrEIX=!OHC@B8=?a{bp z%*@LK1O@f=^}@lx`S|vBb8OPm(z36n%*?^&FMRSEC2lQ>gnX^ z=Hcz_?e_HR?(X4@jEl9hqwm2rm6VhH{QJGTto{A}kdKYLy0m6wUev2BYH4DVl98&a zru6dbl#+y9TvY4FR`~e!u&=J|z&L$;ajcCo|NZu)p_Gk`f85*Gf`NDI>EySqjrjTg zxwohB@9M6soRX1`YkmQ?Ca_A@#gF6>(tW2=H=yA zRZ!vK;K9GJeSCVUsHFe@`{&Ge+1AI}z-{~a@&Et-{rvd;{{645rmv-i`1$r;UR(M6 z_v!5C>gnhI{`r}jm;V3$`~Ca&_V(xK@2#w+pP!;JF)f*xmjC+fVPIeX|Nr{=_w4NF z{QUd<{rvp<`uh3!@9*#X`}zC&`276*^z`)l`udiYmH+*o3S`TqU<@bK{S z^Yi}w{p{=J?Ca*w3q$m;3X#{dBO{Q3X?|LW`I z`uY0R(!>A%{mRF<*w)7S`T6wp^ZNSvo`W-?pr5Iyn$yw1*VV+2kCX84@6pb{>gww9 z^75IPj=;aZ>FDOcoi8FHAF#2v+S}mn@b2&M@sW^}?CIgp$gltZ|NsC0?C9Rn(9pNH zu8E0-dulb6l$4c~l==Di`uOs{rd9d<_vhy1sHK<6z@N>{(d+8y*VM)8(SQ8@`wP5Z z3IG5BElET{R49>Uk}Yn;Fc3yvSqgMWNI*e=M;mIk(7u9EsX<{6uxQm&_yk6_ysJoF z+=8Osp+_h!>^I4(TeZ)>^Sv>%I1XL^kMrp$PTfBKB@f+6oQLvHfV1dZX*FIhB{uH3 z#I3IveaShNT#b3C@v2HK5cMtB+TJI#cwbVBu~is|oN~^|+cabM9%TX$DN$O;Q=-g~ z_e7gm7DB!x;z_`p>7F2HE$GH<46z7g>0l998#d!31qjQ6Y_LoSf!i#D>ST002ovPDHLkV1jy{zg7SM literal 0 HcmV?d00001 diff --git a/openlayers/theme/default/img/draw_line_on.png b/openlayers/theme/default/img/draw_line_on.png new file mode 100644 index 0000000000000000000000000000000000000000..ba09186c7e212a9af610cfaa91b63f0dea314820 GIT binary patch literal 1399 zcmV--1&I2IP)4Tx0C=30lFLg1K^(`wyAnpvLzWQ)dol?P=>Z85n9u_|m;{xVSl87ATbJ3< z3c7X|xf;w~ygf1c5%ueA+q%ZuK&-|E~-~1kcTvJUmF9X;$ zC`l|WD4SbJ#r*^qy5LCFEHe_1ucD>C9wG7dA;{mVbRXVj#y|R}-wU1I?eb#ldyaYt z3kXOa#-6NTKj)O-InI03q>SU7wH-Chm>B|OJrQMGX55z*e8xE?_?B}?%ksNb#vvn} zGZ=p|o=xkP2FN@X)l9<9$ft~hJb&>u8UyA>0avZ*OIpD772x$Xeg0u!a09rXYWnJH zPEDktnw6QFbX-!;0?_ed+jSq{J_Z_P+y1_=?ZzdG@eEWAtw>70b&=#S&~7hs6MNAE zhtP^e{*FSx`7*Gus{L<{)> zu}oFd+cf&WqWZp*TeM&vkX&|$DiJnaIt#dK7O74G%8H>)1eD28XojEr0p&M$wvB-o zTL1t908mU+MbOX9o12jM`}XPQEoWBlUP<(w6n6q!^4GygxA;2b#!#$-Ou{=>-YEf=;z_a#I>ZLn9a+(=jY=0_44@l z_3+=T8yOi$Mn&%I-ezTG=;q<;>gDmkDyXQP?(ORO`~KeB%lrEIX=!OHC@B8=?a{bp z%*@LK1O@f=^}@lx`S|vBb8OPm(z36n%*?^&FMRSEC2lQ>gnX^ z=Hcz_?e_HR?(X4@jEl9hqwm2rm6VhH{QJGTto{A}kdKYLy0m6wUev2BYH4DVl98&a zru6dbl#+y9TvY4FR`~e!u&=J|z&L$;ajcCo|NZu)p_Gk`f85*Gf`NDI>EySqjrjTg zxwohB@9M6soRX1`YkmQ?Ca_A@#gF6>(tW2=H=yA zRZ!vK;K9GJeSCVUsHFe@`{&Ge+1AI}z-{~a@&Et-{rvd;{{645rmv-i`1$r;UR(M6 z_v!5C>gnhI{`r}jm;V3$`~Ca&_V(xK@2#w+pP!;JF)f*xmjC+fVPIeX|Nr{=_w4NF z{QUd<{rvp<`uh3!@9*#X`}zC&`276*^z`)l`udiYmH+*o3S`TqU<@bK{S z^Yi}w{p{=J?Ca*w3q$m;3X#{dBO{Q3X?|LW`I z`uY0R(!>A%{mRF<*w)7S`T6wp^ZNSvo`W-?pr5Iyn$yw1*VV+2kCX84@6pb{>gww9 z^75IPj=;aZ>FDOcoi8FHAF#2v+S}mn@b2&M@sW^}?CIgp$gltZ|NsC0?C9Rn(9pNH zu8E0-dulb6l$4c~l==Di`uOs{rd9d<_vhy1sHK<6z@N>{(d+8y*VM)8(SQ8@`wP5Z z3IG5Ag-Jv~R49>SXb@rJ#{e5QG%##n+o6sDcCc+=*oZ|O2sSeCV-;8Dhf5e4ZNe_0 zXr#Vr6BY@G*e19fngm!5MFQFUO-72?C4laLOQ48@dH5wjTCquZfGk53NAe&A5)d0P zC7?E9GfEvIp@CgOgTWG8)T+O?WI#>~jEC|L-iIWHCIBNhV8yc%ja>i$002ovPDHLk FV1oMCUvvNf literal 0 HcmV?d00001 diff --git a/openlayers/theme/default/img/draw_point_off.png b/openlayers/theme/default/img/draw_point_off.png new file mode 100644 index 0000000000000000000000000000000000000000..fde94bde24ad8eb7c5f2109bf6fe837f1bddf9fe GIT binary patch literal 1612 zcmV-S2DABzP)4Tx0C=30lFLg1K^(`wyAnpvLzWQ)dol?P=>Z85n9u_|m;{xVSl87ATbJ3< z3c7X|xf;w~ygf1c5%ueA+q%ZuK&-|E~-~1kcTvJUmF9X;$ zC`l|WD4SbJ#r*^qy5LCFEHe_1ucD>C9wG7dA;{mVbRXVj#y|R}-wU1I?eb#ldyaYt z3kXOa#-6NTKj)O-InI03q>SU7wH-Chm>B|OJrQMGX55z*e8xE?_?B}?%ksNb#vvn} zGZ=p|o=xkP2FN@X)l9<9$ft~hJb&>u8UyA>0avZ*OIpD772x$Xeg0u!a09rXYWnJH zPEDktnw6QFbX-!;0?_ed+jSq{J_Z_P+y1_=?ZzdG@eEWAtw>70b&=#S&~7hs6MNAE zhtP^e{*FSx`7*Gus{L<{)> zu}oFd+cf&WqWZp*TeM&vkX&|$DiJnaIt#dK7O74G%8H>)1eD28XojEr0p&M$wvB-o zTL1t908mU+MbOX9o12jM`}XPQEoWBlUP<(w6n6q!^4GygxA;2b#!#$-Ou{=>-YEf=;z_a#I>ZLn9a+(=jY=0_44@l z_3+=T8yOi$Mn&%I-ezTG=;q<;>gDmkDyXQP?(ORO`~KeB%lrEIX=!OHC@B8=?a{bp z%*@LK1O@f=^}@lx`S|vBb8OPm(z36n%*?^&FMRSEC2lQ>gnX^ z=Hcz_?e_HR?(X4@jEl9hqwm2rm6VhH{QJGTto{A}kdKYLy0m6wUev2BYH4DVl98&a zru6dbl#+y9TvY4FR`~e!u&=J|z&L$;ajcCo|NZu)p_Gk`f85*Gf`NDI>EySqjrjTg zxwohB@9M6soRX1`YkmQ?Ca_A@#gF6>(tW2=H=yA zRZ!vK;K9GJeSCVUsHFe@`{&Ge+1AI}z-{~a@&Et-{rvd;{{645rmv-i`1$r;UR(M6 z_v!5C>gnhI{`r}jm;V3$`~Ca&_V(xK@2#w+pP!;JF)f*xmjC+fVPIeX|Nr{=_w4NF z{QUd<{rvp<`uh3!@9*#X`}zC&`276*^z`)l`udiYmH+*o3S`TqU<@bK{S z^Yi}w{p{=J?Ca*w3q$m;3X#{dBO{Q3X?|LW`I z`uY0R(!>A%{mRF<*w)7S`T6wp^ZNSvo`W-?pr5Iyn$yw1*VV+2kCX84@6pb{>gww9 z^75IPj=;aZ>FDOcoi8FHAF#2v+S}mn@b2&M@sW^}?CIgp$gltZ|NsC0?C9Rn(9pNH zu8E0-dulb6l$4c~l==Di`uOs{rd9d<_vhy1sHK<6z@N>{(d+8y*VM)8(SQ8@`wP5Z z3IG5BT1iAfR49>Uk}+$-Kp2K2feZz6O9))ZR_+k8-Db86NdJMOppeC(lN1+0`zx-K z+f8?z5=h2ihq|@t)}he3Q`e6DF4`*fxsZ?Vecog`XBl|tg6(GMY`nhsj|#kvvkmlx z0JaV)b!kLZX;IonRU$NPgg_3`N(rruP^J=~&`TY4jRs+!lrg1IQW~vQht+j-6&esq zDg~*O_Kn7)aTKwA3PMUM3reY^N}&}(W5(jw8bnc0$O{P%TCJnqkVWyr3i=0nSP!nJ zkk3NQ9E^?hzdOFrmM zk9{9j|5wcOLC%i-77*CZ5zE4Tx0C=30lFLg1K^(`wyAnpvLzWQ)dol?P=>Z85n9u_|m;{xVSl87ATbJ3< z3c7X|xf;w~ygf1c5%ueA+q%ZuK&-|E~-~1kcTvJUmF9X;$ zC`l|WD4SbJ#r*^qy5LCFEHe_1ucD>C9wG7dA;{mVbRXVj#y|R}-wU1I?eb#ldyaYt z3kXOa#-6NTKj)O-InI03q>SU7wH-Chm>B|OJrQMGX55z*e8xE?_?B}?%ksNb#vvn} zGZ=p|o=xkP2FN@X)l9<9$ft~hJb&>u8UyA>0avZ*OIpD772x$Xeg0u!a09rXYWnJH zPEDktnw6QFbX-!;0?_ed+jSq{J_Z_P+y1_=?ZzdG@eEWAtw>70b&=#S&~7hs6MNAE zhtP^e{*FSx`7*Gus{L<{)> zu}oFd+cf&WqWZp*TeM&vkX&|$DiJnaIt#dK7O74G%8H>)1eD28XojEr0p&M$wvB-o zTL1t908mU+MbOX9o12jM`}XPQEoWBlUP<(w6n6q!^4GygxA;2b#!#$-Ou{=>-YEf=;z_a#I>ZLn9a+(=jY=0_44@l z_3+=T8yOi$Mn&%I-ezTG=;q<;>gDmkDyXQP?(ORO`~KeB%lrEIX=!OHC@B8=?a{bp z%*@LK1O@f=^}@lx`S|vBb8OPm(z36n%*?^&FMRSEC2lQ>gnX^ z=Hcz_?e_HR?(X4@jEl9hqwm2rm6VhH{QJGTto{A}kdKYLy0m6wUev2BYH4DVl98&a zru6dbl#+y9TvY4FR`~e!u&=J|z&L$;ajcCo|NZu)p_Gk`f85*Gf`NDI>EySqjrjTg zxwohB@9M6soRX1`YkmQ?Ca_A@#gF6>(tW2=H=yA zRZ!vK;K9GJeSCVUsHFe@`{&Ge+1AI}z-{~a@&Et-{rvd;{{645rmv-i`1$r;UR(M6 z_v!5C>gnhI{`r}jm;V3$`~Ca&_V(xK@2#w+pP!;JF)f*xmjC+fVPIeX|Nr{=_w4NF z{QUd<{rvp<`uh3!@9*#X`}zC&`276*^z`)l`udiYmH+*o3S`TqU<@bK{S z^Yi}w{p{=J?Ca*w3q$m;3X#{dBO{Q3X?|LW`I z`uY0R(!>A%{mRF<*w)7S`T6wp^ZNSvo`W-?pr5Iyn$yw1*VV+2kCX84@6pb{>gww9 z^75IPj=;aZ>FDOcoi8FHAF#2v+S}mn@b2&M@sW^}?CIgp$gltZ|NsC0?C9Rn(9pNH zu8E0-dulb6l$4c~l==Di`uOs{rd9d<_vhy1sHK<6z@N>{(d+8y*VM)8(SQ8@`wP5Z z3IG5A!bwCyR49>SXb@rJ#{e5QG%##n+o6sDcCc+=*oZ|O2sSeCqYCizXI%i(XcGMA z_e=3&kzh31zh8<=3`2rHF)mR`$_PUTe4Tx0C=30lFLg1K^(`wyAnpvLzWQ)dol?P=>Z85n9u_|m;{xVSl87ATbJ3< z3c7X|xf;w~ygf1c5%ueA+q%ZuK&-|E~-~1kcTvJUmF9X;$ zC`l|WD4SbJ#r*^qy5LCFEHe_1ucD>C9wG7dA;{mVbRXVj#y|R}-wU1I?eb#ldyaYt z3kXOa#-6NTKj)O-InI03q>SU7wH-Chm>B|OJrQMGX55z*e8xE?_?B}?%ksNb#vvn} zGZ=p|o=xkP2FN@X)l9<9$ft~hJb&>u8UyA>0avZ*OIpD772x$Xeg0u!a09rXYWnJH zPEDktnw6QFbX-!;0?_ed+jSq{J_Z_P+y1_=?ZzdG@eEWAtw>70b&=#S&~7hs6MNAE zhtP^e{*FSx`7*Gus{L<{)> zu}oFd+cf&WqWZp*TeM&vkX&|$DiJnaIt#dK7O74G%8H>)1eD28XojEr0p&M$wvB-o zTL1t908mU+MbOX9o12jM`}XPQEoWBlUP<(w6n6q!^4GygxA;2b#!#$-Ou{=>-YEf=;z_a#I>ZLn9a+(=jY=0_44@l z_3+=T8yOi$Mn&%I-ezTG=;q<;>gDmkDyXQP?(ORO`~KeB%lrEIX=!OHC@B8=?a{bp z%*@LK1O@f=^}@lx`S|vBb8OPm(z36n%*?^&FMRSEC2lQ>gnX^ z=Hcz_?e_HR?(X4@jEl9hqwm2rm6VhH{QJGTto{A}kdKYLy0m6wUev2BYH4DVl98&a zru6dbl#+y9TvY4FR`~e!u&=J|z&L$;ajcCo|NZu)p_Gk`f85*Gf`NDI>EySqjrjTg zxwohB@9M6soRX1`YkmQ?Ca_A@#gF6>(tW2=H=yA zRZ!vK;K9GJeSCVUsHFe@`{&Ge+1AI}z-{~a@&Et-{rvd;{{645rmv-i`1$r;UR(M6 z_v!5C>gnhI{`r}jm;V3$`~Ca&_V(xK@2#w+pP!;JF)f*xmjC+fVPIeX|Nr{=_w4NF z{QUd<{rvp<`uh3!@9*#X`}zC&`276*^z`)l`udiYmH+*o3S`TqU<@bK{S z^Yi}w{p{=J?Ca*w3q$m;3X#{dBO{Q3X?|LW`I z`uY0R(!>A%{mRF<*w)7S`T6wp^ZNSvo`W-?pr5Iyn$yw1*VV+2kCX84@6pb{>gww9 z^75IPj=;aZ>FDOcoi8FHAF#2v+S}mn@b2&M@sW^}?CIgp$gltZ|NsC0?C9Rn(9pNH zu8E0-dulb6l$4c~l==Di`uOs{rd9d<_vhy1sHK<6z@N>{(d+8y*VM)8(SQ8@`wP5Z z3IG5B7)eAyR49>U(kpJnFc1b{SC#@35@N7Y0&FcP8WtE|!KgF`=m7%v1cg3K%H7(!$QfX`Al;@+L%i|Q`(bYWA`+1vQKnAlv0JHX7WN+CtNuE8d{ zvD$pEVpZ_o1|I>QqTMOPfDqq&jOo3F#+cxewJD+?c;~%$rlA;P@Y7)soKtR588%ZY z!?LJDoe0{KLQs?=GysZVP`w(D_2y+&144fXW8YIp*#k7UP$F>N!oOdPye#_-Bv&Km z4>->qbinyz1ROzZl2>X3NIPInczAuje(aCo8-+`bFbc^JssI2007*qoM6N<$g2t_|e*gdg literal 0 HcmV?d00001 diff --git a/openlayers/theme/default/img/draw_polygon_on.png b/openlayers/theme/default/img/draw_polygon_on.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3337614fa182ca28fc8e884b72f615ff6c94e0 GIT binary patch literal 1407 zcmV-_1%UdAP)4Tx0C=30lFLg1K^(`wyAnpvLzWQ)dol?P=>Z85n9u_|m;{xVSl87ATbJ3< z3c7X|xf;w~ygf1c5%ueA+q%ZuK&-|E~-~1kcTvJUmF9X;$ zC`l|WD4SbJ#r*^qy5LCFEHe_1ucD>C9wG7dA;{mVbRXVj#y|R}-wU1I?eb#ldyaYt z3kXOa#-6NTKj)O-InI03q>SU7wH-Chm>B|OJrQMGX55z*e8xE?_?B}?%ksNb#vvn} zGZ=p|o=xkP2FN@X)l9<9$ft~hJb&>u8UyA>0avZ*OIpD772x$Xeg0u!a09rXYWnJH zPEDktnw6QFbX-!;0?_ed+jSq{J_Z_P+y1_=?ZzdG@eEWAtw>70b&=#S&~7hs6MNAE zhtP^e{*FSx`7*Gus{L<{)> zu}oFd+cf&WqWZp*TeM&vkX&|$DiJnaIt#dK7O74G%8H>)1eD28XojEr0p&M$wvB-o zTL1t908mU+MbOX9o12jM`}XPQEoWBlUP<(w6n6q!^4GygxA;2b#!#$-Ou{=>-YEf=;z_a#I>ZLn9a+(=jY=0_44@l z_3+=T8yOi$Mn&%I-ezTG=;q<;>gDmkDyXQP?(ORO`~KeB%lrEIX=!OHC@B8=?a{bp z%*@LK1O@f=^}@lx`S|vBb8OPm(z36n%*?^&FMRSEC2lQ>gnX^ z=Hcz_?e_HR?(X4@jEl9hqwm2rm6VhH{QJGTto{A}kdKYLy0m6wUev2BYH4DVl98&a zru6dbl#+y9TvY4FR`~e!u&=J|z&L$;ajcCo|NZu)p_Gk`f85*Gf`NDI>EySqjrjTg zxwohB@9M6soRX1`YkmQ?Ca_A@#gF6>(tW2=H=yA zRZ!vK;K9GJeSCVUsHFe@`{&Ge+1AI}z-{~a@&Et-{rvd;{{645rmv-i`1$r;UR(M6 z_v!5C>gnhI{`r}jm;V3$`~Ca&_V(xK@2#w+pP!;JF)f*xmjC+fVPIeX|Nr{=_w4NF z{QUd<{rvp<`uh3!@9*#X`}zC&`276*^z`)l`udiYmH+*o3S`TqU<@bK{S z^Yi}w{p{=J?Ca*w3q$m;3X#{dBO{Q3X?|LW`I z`uY0R(!>A%{mRF<*w)7S`T6wp^ZNSvo`W-?pr5Iyn$yw1*VV+2kCX84@6pb{>gww9 z^75IPj=;aZ>FDOcoi8FHAF#2v+S}mn@b2&M@sW^}?CIgp$gltZ|NsC0?C9Rn(9pNH zu8E0-dulb6l$4c~l==Di`uOs{rd9d<_vhy1sHK<6z@N>{(d+8y*VM)8(SQ8@`wP5Z z3IG5AjY&j7R49>!(ySgSe56!r#3i@|3roh5IFB#9 z9R}uk8LrMZ$!U<}#@J+ZNiyk|Wbw3*z5-wz0@RFvX^B-k!P^c{`$7mD6sU0M)#5(@ zltX}>`|ssTC~U}KJ6Imuz&f-a@R?P|p_86{ZG85!Uxv$kn;z>j++XxZocWJqGll>F N002ovPDHLkV1l|7aCra# literal 0 HcmV?d00001 diff --git a/openlayers/theme/default/img/editing_tool_bar.png b/openlayers/theme/default/img/editing_tool_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..464340efb61df48b4cab2225ca724d53314ee67b GIT binary patch literal 3901 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 literal 0 HcmV?d00001 diff --git a/openlayers/theme/default/img/move_feature_on.png b/openlayers/theme/default/img/move_feature_on.png new file mode 100644 index 0000000000000000000000000000000000000000..072f066c30836dd2a0185fb3208be2214d67f329 GIT binary patch literal 1379 zcmV-p1)TbcP)4Tx0C=30lFLg1K^(`wyAnpvLzWQ)dol?P=>Z85n9u_|m;{xVSl87ATbJ3< z3c7X|xf;w~ygf1c5%ueA+q%ZuK&-|E~-~1kcTvJUmF9X;$ zC`l|WD4SbJ#r*^qy5LCFEHe_1ucD>C9wG7dA;{mVbRXVj#y|R}-wU1I?eb#ldyaYt z3kXOa#-6NTKj)O-InI03q>SU7wH-Chm>B|OJrQMGX55z*e8xE?_?B}?%ksNb#vvn} zGZ=p|o=xkP2FN@X)l9<9$ft~hJb&>u8UyA>0avZ*OIpD772x$Xeg0u!a09rXYWnJH zPEDktnw6QFbX-!;0?_ed+jSq{J_Z_P+y1_=?ZzdG@eEWAtw>70b&=#S&~7hs6MNAE zhtP^e{*FSx`7*Gus{L<{)> zu}oFd+cf&WqWZp*TeM&vkX&|$DiJnaIt#dK7O74G%8H>)1eD28XojEr0p&M$wvB-o zTL1t908mU+MbOX9o12jM`}XPQEoWBlUP<(w6n6q!^4GygxA;2b#!#$-Ou{=>-YEf=;z_a#I>ZLn9a+(=jY=0_44@l z_3+=T8yOi$Mn&%I-ezTG=;q<;>gDmkDyXQP?(ORO`~KeB%lrEIX=!OHC@B8=?a{bp z%*@LK1O@f=^}@lx`S|vBb8OPm(z36n%*?^&FMRSEC2lQ>gnX^ z=Hcz_?e_HR?(X4@jEl9hqwm2rm6VhH{QJGTto{A}kdKYLy0m6wUev2BYH4DVl98&a zru6dbl#+y9TvY4FR`~e!u&=J|z&L$;ajcCo|NZu)p_Gk`f85*Gf`NDI>EySqjrjTg zxwohB@9M6soRX1`YkmQ?Ca_A@#gF6>(tW2=H=yA zRZ!vK;K9GJeSCVUsHFe@`{&Ge+1AI}z-{~a@&Et-{rvd;{{645rmv-i`1$r;UR(M6 z_v!5C>gnhI{`r}jm;V3$`~Ca&_V(xK@2#w+pP!;JF)f*xmjC+fVPIeX|Nr{=_w4NF z{QUd<{rvp<`uh3!@9*#X`}zC&`276*^z`)l`udiYmH+*o3S`TqU<@bK{S z^Yi}w{p{=J?Ca*w3q$m;3X#{dBO{Q3X?|LW`I z`uY0R(!>A%{mRF<*w)7S`T6wp^ZNSvo`W-?pr5Iyn$yw1*VV+2kCX84@6pb{>gww9 z^75IPj=;aZ>FDOcoi8FHAF#2v+S}mn@b2&M@sW^}?CIgp$gltZ|NsC0?C9Rn(9pNH zu8E0-dulb6l$4c~l==Di`uOs{rd9d<_vhy1sHK<6z@N>{(d+8y*VM)8(SQ8@`wP5Z z3IG5AaY;l$R49>SXb@rJ#{e5QG%##n+o6sDcCc+=*oZ|O2sSeCV-;8DN0HFQA)%|Q zi&a8b7fFUVqp(Woq7rZkT_g!zBne$qK!gt5c97v*ygtVjR%k|PsAB~h43^lUR{gyt l19DB1ORibRs~T(?alxI002ovPDHLkV1oQjSo#0} literal 0 HcmV?d00001 diff --git a/openlayers/theme/default/img/navigation_history.png b/openlayers/theme/default/img/navigation_history.png new file mode 100644 index 0000000000000000000000000000000000000000..053d1e0d26a5b41e84c441b4d4e08d6ae7abf1ad GIT binary patch literal 7021 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 literal 0 HcmV?d00001 diff --git a/openlayers/theme/default/img/overview_replacement.gif b/openlayers/theme/default/img/overview_replacement.gif new file mode 100644 index 0000000000000000000000000000000000000000..a82cf5fc54cc0064099720322d62e9bf4dde05c9 GIT binary patch literal 79 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 literal 0 HcmV?d00001 diff --git a/openlayers/theme/default/img/remove_point_off.png b/openlayers/theme/default/img/remove_point_off.png new file mode 100644 index 0000000000000000000000000000000000000000..76c8606f550c1d95cb9df2e8b8656447e8a9e58d GIT binary patch literal 1612 zcmV-S2DABzP)4Tx0C=30lFLg1K^(`wyAnpvLzWQ)dol?P=>Z85n9u_|m;{xVSl87ATbJ3< z3c7X|xf;w~ygf1c5%ueA+q%ZuK&-|E~-~1kcTvJUmF9X;$ zC`l|WD4SbJ#r*^qy5LCFEHe_1ucD>C9wG7dA;{mVbRXVj#y|R}-wU1I?eb#ldyaYt z3kXOa#-6NTKj)O-InI03q>SU7wH-Chm>B|OJrQMGX55z*e8xE?_?B}?%ksNb#vvn} zGZ=p|o=xkP2FN@X)l9<9$ft~hJb&>u8UyA>0avZ*OIpD772x$Xeg0u!a09rXYWnJH zPEDktnw6QFbX-!;0?_ed+jSq{J_Z_P+y1_=?ZzdG@eEWAtw>70b&=#S&~7hs6MNAE zhtP^e{*FSx`7*Gus{L<{)> zu}oFd+cf&WqWZp*TeM&vkX&|$DiJnaIt#dK7O74G%8H>)1eD28XojEr0p&M$wvB-o zTL1t908mU+MbOX9o12jM`}XPQEoWBlUP<(w6n6q!^4GygxA;2b#!#$-Ou{=>-YEf=;z_a#I>ZLn9a+(=jY=0_44@l z_3+=T8yOi$Mn&%I-ezTG=;q<;>gDmkDyXQP?(ORO`~KeB%lrEIX=!OHC@B8=?a{bp z%*@LK1O@f=^}@lx`S|vBb8OPm(z36n%*?^&FMRSEC2lQ>gnX^ z=Hcz_?e_HR?(X4@jEl9hqwm2rm6VhH{QJGTto{A}kdKYLy0m6wUev2BYH4DVl98&a zru6dbl#+y9TvY4FR`~e!u&=J|z&L$;ajcCo|NZu)p_Gk`f85*Gf`NDI>EySqjrjTg zxwohB@9M6soRX1`YkmQ?Ca_A@#gF6>(tW2=H=yA zRZ!vK;K9GJeSCVUsHFe@`{&Ge+1AI}z-{~a@&Et-{rvd;{{645rmv-i`1$r;UR(M6 z_v!5C>gnhI{`r}jm;V3$`~Ca&_V(xK@2#w+pP!;JF)f*xmjC+fVPIeX|Nr{=_w4NF z{QUd<{rvp<`uh3!@9*#X`}zC&`276*^z`)l`udiYmH+*o3S`TqU<@bK{S z^Yi}w{p{=J?Ca*w3q$m;3X#{dBO{Q3X?|LW`I z`uY0R(!>A%{mRF<*w)7S`T6wp^ZNSvo`W-?pr5Iyn$yw1*VV+2kCX84@6pb{>gww9 z^75IPj=;aZ>FDOcoi8FHAF#2v+S}mn@b2&M@sW^}?CIgp$gltZ|NsC0?C9Rn(9pNH zu8E0-dulb6l$4c~l==Di`uOs{rd9d<_vhy1sHK<6z@N>{(d+8y*VM)8(SQ8@`wP5Z z3IG5BT1iAfR49>Uk}+$-Kp2Kk0vQVCmJmotr*emo?KZPrK>80H1%)gQous%p=&!g= zZrA0)DS>1RcBoq$w+@BQow|1HcQLI}pF8sLz0XUgLyxYFFW7EYXk+)qf0S!)(ALc^ z1h7T8$O#$(39Lj@wwDdf3?i&oAY_Ex6!`sTaLqxXh;X$ zY1?;Tb$-P>9i*)7H-PZX9I=$$H+^RC8v%x};jpg5mngm_hNG~2Kk*Ll;oHKC6Q7vf zPcZ5cm=;N3Kr?{_oS*bi-*&$Vf#!*Xkgq;kojr!m)7|c)eGES;bEA)yi@5Uu0000< KMNUMnLSTZbgw{R) literal 0 HcmV?d00001 diff --git a/openlayers/theme/default/img/remove_point_on.png b/openlayers/theme/default/img/remove_point_on.png new file mode 100644 index 0000000000000000000000000000000000000000..0ff28fc7168a54e550cf98006e02d05958b5a6ab GIT binary patch literal 1464 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 literal 0 HcmV?d00001 diff --git a/openlayers/theme/default/img/save_features_on.png b/openlayers/theme/default/img/save_features_on.png new file mode 100644 index 0000000000000000000000000000000000000000..93c8f080bff6c78ed95d7d5c6ccadb90a9a66401 GIT binary patch literal 364 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 literal 0 HcmV?d00001 diff --git a/openlayers/theme/default/img/view_previous_off.png b/openlayers/theme/default/img/view_previous_off.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c230f749e1887d70d1928398b5d03e0105a3d8 GIT binary patch literal 1553 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�a{vGU0d!JMQvg8b*k%9#00Cl4M??UK1szBL000Sa zNLh0L01FcU01FcV0GgZ_00007bV*G`2iOM!5(+95W_CLO000?uMObu0Z*6U5Zgc=c za%Ew3Wn>_CX>@2HM@dakSAh-}0005ZNkliz`RUC*NR1}GbSRZP=+y%aT+HBjXxSYASj%|Z${aiZ00000NkvXXu0mjf$)YM? literal 0 HcmV?d00001 diff --git a/openlayers/theme/default/img/zoom-panel.png b/openlayers/theme/default/img/zoom-panel.png new file mode 100755 index 0000000000000000000000000000000000000000..f2c7c518d592b2142c2e94bef00e985c6884de69 GIT binary patch literal 1624 zcmV-e2B-OnP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOM! z1|kHG!rt-#000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000HENklF7{`CTz4QeuZ3#$)%1}|98iPPp)GE#eO%s(w;!AW+iA$zN6OG*>CWXz)o{z;SDr}zAN zpXZ$OocmYMt8!C;nScdI2?Q&EUw|`U|M}GsidO)7AP-nU-`WqX2YX8|pxi0IVIYS7 zsSa2O_RHNsxq6`L4ItfNW5C`b1Oj<)0U*~INLO5^Q(-Wu z0q}Tyw6%3~AC{tk+^)Y23sd26e2ORvU3YYJNXRmTg!GI>M}LFMPNrRDPxN@cb z-9Y`-zh5IkfRq#yvu6(_B0@_^$wSVatHtM&`Rs1ZrlNEw(r@r=^}3TOENN!@c#SxR8%xj zTs)VYoXNd|va=_WnK_bKvx;##-5fqVhlB(pzy8`pY-|{2vyP4qiSy@csi|pU-n@AB z?fbANC?-b7nlTr* z($a=7dUW{THM(+T2{kp%h@!yKrN{Aje2f@jz-l#Z57w9JtZzqPksFhva-fvwVKiERU{`zF?g_!<;%x1e7GK^ zQbB90m%V#$V6m9|>uAA(QOGh(of<=FX&q{{l9MMNaq{FNva=_0@ZcQ)d_IY=FcsUj z`48DGTT)Rd;N?pnX=$+tt*ss^DxP9C59G@)t%Qeby3%QF^&&|!PG=j>pL=>tcX+sl zJ$q(SUEPdcuR=I+;y03$qbMr6%g&uwiHRA=_U%(hPk)cd$WUA^KR^@}Xtg3)S!3C; zV=A$+VXR$yhJ=K0PMvy$c;iMRXk?W?(R=X>a%Wr#~a(M=TZ-F4s$T?V85KiGx|TYzzej zw*mhNVloZD;dp^YqvWfvti;3&#AX}H;>Ab*-u+EYZ5%pumszvoNKO5Y`SVAxaN#Hn z1~nd!kHo}5G&H!`x-}J}QN#7?jU**SQBv}dt5=`)Y$KaDmr`HFIG~W{#w##mm{Vk0~pwdu=`acYF5#ptm^JqN4{87N+iV zkjv%4;dl`oWHhR&srdx2SLzd_QVEz$U(?*|=^dn03MiEVlGOK`hf*o@cs=X{Ie=&Y zr?ZV2GY%6Gq3sjY)a1tLZ0jC!hym9#w=+^&TK6`!t`Gv&>0R}U;P+qetTRHu#O;3v z$bPW@+*$hd0n7BJstb(mT-o*(zlnPzSf}x8d1Z^(FZ)egztY?vFnpJTc-pr&$A1Cq W+8RZ(A4&570000= len(self.contents): + newChild.nextSibling = None + + parent = self + parentsNextSibling = None + while not parentsNextSibling: + parentsNextSibling = parent.nextSibling + parent = parent.parent + if not parent: # This is the last element in the document. + break + if parentsNextSibling: + newChildsLastElement.next = parentsNextSibling + else: + newChildsLastElement.next = None + else: + nextChild = self.contents[position] + newChild.nextSibling = nextChild + if newChild.nextSibling: + newChild.nextSibling.previousSibling = newChild + newChildsLastElement.next = nextChild + + if newChildsLastElement.next: + newChildsLastElement.next.previous = newChildsLastElement + self.contents.insert(position, newChild) + + def findNext(self, name=None, attrs={}, text=None, **kwargs): + """Returns the first item that matches the given criteria and + appears after this Tag in the document.""" + return self._findOne(self.findAllNext, name, attrs, text, **kwargs) + + def findAllNext(self, name=None, attrs={}, text=None, limit=None, + **kwargs): + """Returns all items that match the given criteria and appear + before after Tag in the document.""" + return self._findAll(name, attrs, text, limit, self.nextGenerator) + + def findNextSibling(self, name=None, attrs={}, text=None, **kwargs): + """Returns the closest sibling to this Tag that matches the + given criteria and appears after this Tag in the document.""" + return self._findOne(self.findNextSiblings, name, attrs, text, + **kwargs) + + def findNextSiblings(self, name=None, attrs={}, text=None, limit=None, + **kwargs): + """Returns the siblings of this Tag that match the given + criteria and appear after this Tag in the document.""" + return self._findAll(name, attrs, text, limit, + self.nextSiblingGenerator, **kwargs) + fetchNextSiblings = findNextSiblings # Compatibility with pre-3.x + + def findPrevious(self, name=None, attrs={}, text=None, **kwargs): + """Returns the first item that matches the given criteria and + appears before this Tag in the document.""" + return self._findOne(self.findAllPrevious, name, attrs, text, **kwargs) + + def findAllPrevious(self, name=None, attrs={}, text=None, limit=None, + **kwargs): + """Returns all items that match the given criteria and appear + before this Tag in the document.""" + return self._findAll(name, attrs, text, limit, self.previousGenerator, + **kwargs) + fetchPrevious = findAllPrevious # Compatibility with pre-3.x + + def findPreviousSibling(self, name=None, attrs={}, text=None, **kwargs): + """Returns the closest sibling to this Tag that matches the + given criteria and appears before this Tag in the document.""" + return self._findOne(self.findPreviousSiblings, name, attrs, text, + **kwargs) + + def findPreviousSiblings(self, name=None, attrs={}, text=None, + limit=None, **kwargs): + """Returns the siblings of this Tag that match the given + criteria and appear before this Tag in the document.""" + return self._findAll(name, attrs, text, limit, + self.previousSiblingGenerator, **kwargs) + fetchPreviousSiblings = findPreviousSiblings # Compatibility with pre-3.x + + def findParent(self, name=None, attrs={}, **kwargs): + """Returns the closest parent of this Tag that matches the given + criteria.""" + # NOTE: We can't use _findOne because findParents takes a different + # set of arguments. + r = None + l = self.findParents(name, attrs, 1) + if l: + r = l[0] + return r + + def findParents(self, name=None, attrs={}, limit=None, **kwargs): + """Returns the parents of this Tag that match the given + criteria.""" + + return self._findAll(name, attrs, None, limit, self.parentGenerator, + **kwargs) + fetchParents = findParents # Compatibility with pre-3.x + + #These methods do the real heavy lifting. + + def _findOne(self, method, name, attrs, text, **kwargs): + r = None + l = method(name, attrs, text, 1, **kwargs) + if l: + r = l[0] + return r + + def _findAll(self, name, attrs, text, limit, generator, **kwargs): + "Iterates over a generator looking for things that match." + + if isinstance(name, SoupStrainer): + strainer = name + else: + # Build a SoupStrainer + strainer = SoupStrainer(name, attrs, text, **kwargs) + results = ResultSet(strainer) + g = generator() + while True: + try: + i = g.next() + except StopIteration: + break + if i: + found = strainer.search(i) + if found: + results.append(found) + if limit and len(results) >= limit: + break + return results + + #These Generators can be used to navigate starting from both + #NavigableStrings and Tags. + def nextGenerator(self): + i = self + while i: + i = i.next + yield i + + def nextSiblingGenerator(self): + i = self + while i: + i = i.nextSibling + yield i + + def previousGenerator(self): + i = self + while i: + i = i.previous + yield i + + def previousSiblingGenerator(self): + i = self + while i: + i = i.previousSibling + yield i + + def parentGenerator(self): + i = self + while i: + i = i.parent + yield i + + # Utility methods + def substituteEncoding(self, str, encoding=None): + encoding = encoding or "utf-8" + return str.replace("%SOUP-ENCODING%", encoding) + + def toEncoding(self, s, encoding=None): + """Encodes an object to a string in some encoding, or to Unicode. + .""" + if isinstance(s, unicode): + if encoding: + s = s.encode(encoding) + elif isinstance(s, str): + if encoding: + s = s.encode(encoding) + else: + s = unicode(s) + else: + if encoding: + s = self.toEncoding(str(s), encoding) + else: + s = unicode(s) + return s + +class NavigableString(unicode, PageElement): + + def __getattr__(self, attr): + """text.string gives you text. This is for backwards + compatibility for Navigable*String, but for CData* it lets you + get the string without the CData wrapper.""" + if attr == 'string': + return self + else: + raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__.__name__, attr) + + def __unicode__(self): + return self.__str__(None) + + def __str__(self, encoding=DEFAULT_OUTPUT_ENCODING): + if encoding: + return self.encode(encoding) + else: + return self + +class CData(NavigableString): + + def __str__(self, encoding=DEFAULT_OUTPUT_ENCODING): + return "" % NavigableString.__str__(self, encoding) + +class ProcessingInstruction(NavigableString): + def __str__(self, encoding=DEFAULT_OUTPUT_ENCODING): + output = self + if "%SOUP-ENCODING%" in output: + output = self.substituteEncoding(output, encoding) + return "" % self.toEncoding(output, encoding) + +class Comment(NavigableString): + def __str__(self, encoding=DEFAULT_OUTPUT_ENCODING): + return "" % NavigableString.__str__(self, encoding) + +class Declaration(NavigableString): + def __str__(self, encoding=DEFAULT_OUTPUT_ENCODING): + return "" % NavigableString.__str__(self, encoding) + +class Tag(PageElement): + + """Represents a found HTML tag with its attributes and contents.""" + + XML_SPECIAL_CHARS_TO_ENTITIES = { "'" : "squot", + '"' : "quote", + "&" : "amp", + "<" : "lt", + ">" : "gt" } + + def __init__(self, parser, name, attrs=None, parent=None, + previous=None): + "Basic constructor." + + # We don't actually store the parser object: that lets extracted + # chunks be garbage-collected + self.parserClass = parser.__class__ + self.isSelfClosing = parser.isSelfClosingTag(name) + self.name = name + if attrs == None: + attrs = [] + self.attrs = attrs + self.contents = [] + self.setup(parent, previous) + self.hidden = False + self.containsSubstitutions = False + + def get(self, key, default=None): + """Returns the value of the 'key' attribute for the tag, or + the value given for 'default' if it doesn't have that + attribute.""" + return self._getAttrMap().get(key, default) + + def has_key(self, key): + return self._getAttrMap().has_key(key) + + def __getitem__(self, key): + """tag[key] returns the value of the 'key' attribute for the tag, + and throws an exception if it's not there.""" + return self._getAttrMap()[key] + + def __iter__(self): + "Iterating over a tag iterates over its contents." + return iter(self.contents) + + def __len__(self): + "The length of a tag is the length of its list of contents." + return len(self.contents) + + def __contains__(self, x): + return x in self.contents + + def __nonzero__(self): + "A tag is non-None even if it has no contents." + return True + + def __setitem__(self, key, value): + """Setting tag[key] sets the value of the 'key' attribute for the + tag.""" + self._getAttrMap() + self.attrMap[key] = value + found = False + for i in range(0, len(self.attrs)): + if self.attrs[i][0] == key: + self.attrs[i] = (key, value) + found = True + if not found: + self.attrs.append((key, value)) + self._getAttrMap()[key] = value + + def __delitem__(self, key): + "Deleting tag[key] deletes all 'key' attributes for the tag." + for item in self.attrs: + if item[0] == key: + self.attrs.remove(item) + #We don't break because bad HTML can define the same + #attribute multiple times. + self._getAttrMap() + if self.attrMap.has_key(key): + del self.attrMap[key] + + def __call__(self, *args, **kwargs): + """Calling a tag like a function is the same as calling its + findAll() method. Eg. tag('a') returns a list of all the A tags + found within this tag.""" + return apply(self.findAll, args, kwargs) + + def __getattr__(self, tag): + #print "Getattr %s.%s" % (self.__class__, tag) + if len(tag) > 3 and tag.rfind('Tag') == len(tag)-3: + return self.find(tag[:-3]) + elif tag.find('__') != 0: + return self.find(tag) + + def __eq__(self, other): + """Returns true iff this tag has the same name, the same attributes, + and the same contents (recursively) as the given tag. + + NOTE: right now this will return false if two tags have the + same attributes in a different order. Should this be fixed?""" + if not hasattr(other, 'name') or not hasattr(other, 'attrs') or not hasattr(other, 'contents') or self.name != other.name or self.attrs != other.attrs or len(self) != len(other): + return False + for i in range(0, len(self.contents)): + if self.contents[i] != other.contents[i]: + return False + return True + + def __ne__(self, other): + """Returns true iff this tag is not identical to the other tag, + as defined in __eq__.""" + return not self == other + + def __repr__(self, encoding=DEFAULT_OUTPUT_ENCODING): + """Renders this tag as a string.""" + return self.__str__(encoding) + + def __unicode__(self): + return self.__str__(None) + + def __str__(self, encoding=DEFAULT_OUTPUT_ENCODING, + prettyPrint=False, indentLevel=0): + """Returns a string or Unicode representation of this tag and + its contents. To get Unicode, pass None for encoding. + + NOTE: since Python's HTML parser consumes whitespace, this + method is not certain to reproduce the whitespace present in + the original string.""" + + encodedName = self.toEncoding(self.name, encoding) + + attrs = [] + if self.attrs: + for key, val in self.attrs: + fmt = '%s="%s"' + if isString(val): + if self.containsSubstitutions and '%SOUP-ENCODING%' in val: + val = self.substituteEncoding(val, encoding) + + # The attribute value either: + # + # * Contains no embedded double quotes or single quotes. + # No problem: we enclose it in double quotes. + # * Contains embedded single quotes. No problem: + # double quotes work here too. + # * Contains embedded double quotes. No problem: + # we enclose it in single quotes. + # * Embeds both single _and_ double quotes. This + # can't happen naturally, but it can happen if + # you modify an attribute value after parsing + # the document. Now we have a bit of a + # problem. We solve it by enclosing the + # attribute in single quotes, and escaping any + # embedded single quotes to XML entities. + if '"' in val: + fmt = "%s='%s'" + # This can't happen naturally, but it can happen + # if you modify an attribute value after parsing. + if "'" in val: + val = val.replace("'", "&squot;") + + # Now we're okay w/r/t quotes. But the attribute + # value might also contain angle brackets, or + # ampersands that aren't part of entities. We need + # to escape those to XML entities too. + val = re.sub("([<>]|&(?![^\s]+;))", + lambda x: "&" + self.XML_SPECIAL_CHARS_TO_ENTITIES[x.group(0)[0]] + ";", + val) + + attrs.append(fmt % (self.toEncoding(key, encoding), + self.toEncoding(val, encoding))) + close = '' + closeTag = '' + if self.isSelfClosing: + close = ' /' + else: + closeTag = '' % encodedName + + indentTag, indentContents = 0, 0 + if prettyPrint: + indentTag = indentLevel + space = (' ' * (indentTag-1)) + indentContents = indentTag + 1 + contents = self.renderContents(encoding, prettyPrint, indentContents) + if self.hidden: + s = contents + else: + s = [] + attributeString = '' + if attrs: + attributeString = ' ' + ' '.join(attrs) + if prettyPrint: + s.append(space) + s.append('<%s%s%s>' % (encodedName, attributeString, close)) + if prettyPrint: + s.append("\n") + s.append(contents) + if prettyPrint and contents and contents[-1] != "\n": + s.append("\n") + if prettyPrint and closeTag: + s.append(space) + s.append(closeTag) + if prettyPrint and closeTag and self.nextSibling: + s.append("\n") + s = ''.join(s) + return s + + def prettify(self, encoding=DEFAULT_OUTPUT_ENCODING): + return self.__str__(encoding, True) + + def renderContents(self, encoding=DEFAULT_OUTPUT_ENCODING, + prettyPrint=False, indentLevel=0): + """Renders the contents of this tag as a string in the given + encoding. If encoding is None, returns a Unicode string..""" + s=[] + for c in self: + text = None + if isinstance(c, NavigableString): + text = c.__str__(encoding) + elif isinstance(c, Tag): + s.append(c.__str__(encoding, prettyPrint, indentLevel)) + if text and prettyPrint: + text = text.strip() + if text: + if prettyPrint: + s.append(" " * (indentLevel-1)) + s.append(text) + if prettyPrint: + s.append("\n") + return ''.join(s) + + #Soup methods + + def find(self, name=None, attrs={}, recursive=True, text=None, + **kwargs): + """Return only the first child of this Tag matching the given + criteria.""" + r = None + l = self.findAll(name, attrs, recursive, text, 1, **kwargs) + if l: + r = l[0] + return r + findChild = find + + def findAll(self, name=None, attrs={}, recursive=True, text=None, + limit=None, **kwargs): + """Extracts a list of Tag objects that match the given + criteria. You can specify the name of the Tag and any + attributes you want the Tag to have. + + The value of a key-value pair in the 'attrs' map can be a + string, a list of strings, a regular expression object, or a + callable that takes a string and returns whether or not the + string matches for some custom definition of 'matches'. The + same is true of the tag name.""" + generator = self.recursiveChildGenerator + if not recursive: + generator = self.childGenerator + return self._findAll(name, attrs, text, limit, generator, **kwargs) + findChildren = findAll + + # Pre-3.x compatibility methods + first = find + fetch = findAll + + def fetchText(self, text=None, recursive=True, limit=None): + return self.findAll(text=text, recursive=recursive, limit=limit) + + def firstText(self, text=None, recursive=True): + return self.find(text=text, recursive=recursive) + + #Utility methods + + def append(self, tag): + """Appends the given tag to the contents of this tag.""" + self.contents.append(tag) + + #Private methods + + def _getAttrMap(self): + """Initializes a map representation of this tag's attributes, + if not already initialized.""" + if not getattr(self, 'attrMap'): + self.attrMap = {} + for (key, value) in self.attrs: + self.attrMap[key] = value + return self.attrMap + + #Generator methods + def childGenerator(self): + for i in range(0, len(self.contents)): + yield self.contents[i] + raise StopIteration + + def recursiveChildGenerator(self): + stack = [(self, 0)] + while stack: + tag, start = stack.pop() + if isinstance(tag, Tag): + for i in range(start, len(tag.contents)): + a = tag.contents[i] + yield a + if isinstance(a, Tag) and tag.contents: + if i < len(tag.contents) - 1: + stack.append((tag, i+1)) + stack.append((a, 0)) + break + raise StopIteration + +# Next, a couple classes to represent queries and their results. +class SoupStrainer: + """Encapsulates a number of ways of matching a markup element (tag or + text).""" + + def __init__(self, name=None, attrs={}, text=None, **kwargs): + self.name = name + if isString(attrs): + kwargs['class'] = attrs + attrs = None + if kwargs: + if attrs: + attrs = attrs.copy() + attrs.update(kwargs) + else: + attrs = kwargs + self.attrs = attrs + self.text = text + + def __str__(self): + if self.text: + return self.text + else: + return "%s|%s" % (self.name, self.attrs) + + def searchTag(self, markupName=None, markupAttrs={}): + found = None + markup = None + if isinstance(markupName, Tag): + markup = markupName + markupAttrs = markup + callFunctionWithTagData = callable(self.name) \ + and not isinstance(markupName, Tag) + + if (not self.name) \ + or callFunctionWithTagData \ + or (markup and self._matches(markup, self.name)) \ + or (not markup and self._matches(markupName, self.name)): + if callFunctionWithTagData: + match = self.name(markupName, markupAttrs) + else: + match = True + markupAttrMap = None + for attr, matchAgainst in self.attrs.items(): + if not markupAttrMap: + if hasattr(markupAttrs, 'get'): + markupAttrMap = markupAttrs + else: + markupAttrMap = {} + for k,v in markupAttrs: + markupAttrMap[k] = v + attrValue = markupAttrMap.get(attr) + if not self._matches(attrValue, matchAgainst): + match = False + break + if match: + if markup: + found = markup + else: + found = markupName + return found + + def search(self, markup): + #print 'looking for %s in %s' % (self, markup) + found = None + # If given a list of items, scan it for a text element that + # matches. + if isList(markup) and not isinstance(markup, Tag): + for element in markup: + if isinstance(element, NavigableString) \ + and self.search(element): + found = element + break + # If it's a Tag, make sure its name or attributes match. + # Don't bother with Tags if we're searching for text. + elif isinstance(markup, Tag): + if not self.text: + found = self.searchTag(markup) + # If it's text, make sure the text matches. + elif isinstance(markup, NavigableString) or \ + isString(markup): + if self._matches(markup, self.text): + found = markup + else: + raise Exception, "I don't know how to match against a %s" \ + % markup.__class__ + return found + + def _matches(self, markup, matchAgainst): + #print "Matching %s against %s" % (markup, matchAgainst) + result = False + if matchAgainst == True and type(matchAgainst) == types.BooleanType: + result = markup != None + elif callable(matchAgainst): + result = matchAgainst(markup) + else: + #Custom match methods take the tag as an argument, but all + #other ways of matching match the tag name as a string. + if isinstance(markup, Tag): + markup = markup.name + if markup and not isString(markup): + markup = unicode(markup) + #Now we know that chunk is either a string, or None. + if hasattr(matchAgainst, 'match'): + # It's a regexp object. + result = markup and matchAgainst.search(markup) + elif isList(matchAgainst): + result = markup in matchAgainst + elif hasattr(matchAgainst, 'items'): + result = markup.has_key(matchAgainst) + elif matchAgainst and isString(markup): + if isinstance(markup, unicode): + matchAgainst = unicode(matchAgainst) + else: + matchAgainst = str(matchAgainst) + + if not result: + result = matchAgainst == markup + return result + +class ResultSet(list): + """A ResultSet is just a list that keeps track of the SoupStrainer + that created it.""" + def __init__(self, source): + list.__init__([]) + self.source = source + +# Now, some helper functions. + +def isList(l): + """Convenience method that works with all 2.x versions of Python + to determine whether or not something is listlike.""" + return hasattr(l, '__iter__') \ + or (type(l) in (types.ListType, types.TupleType)) + +def isString(s): + """Convenience method that works with all 2.x versions of Python + to determine whether or not something is stringlike.""" + try: + return isinstance(s, unicode) or isintance(s, basestring) + except NameError: + return isinstance(s, str) + +def buildTagMap(default, *args): + """Turns a list of maps, lists, or scalars into a single map. + Used to build the SELF_CLOSING_TAGS, NESTABLE_TAGS, and + NESTING_RESET_TAGS maps out of lists and partial maps.""" + built = {} + for portion in args: + if hasattr(portion, 'items'): + #It's a map. Merge it. + for k,v in portion.items(): + built[k] = v + elif isList(portion): + #It's a list. Map each item to the default. + for k in portion: + built[k] = default + else: + #It's a scalar. Map it to the default. + built[portion] = default + return built + +# Now, the parser classes. + +class BeautifulStoneSoup(Tag, SGMLParser): + + """This class contains the basic parser and search code. It defines + a parser that knows nothing about tag behavior except for the + following: + + You can't close a tag without closing all the tags it encloses. + That is, "" actually means + "". + + [Another possible explanation is "", but since + this class defines no SELF_CLOSING_TAGS, it will never use that + explanation.] + + This class is useful for parsing XML or made-up markup languages, + or when BeautifulSoup makes an assumption counter to what you were + expecting.""" + + XML_ENTITY_LIST = {} + for i in Tag.XML_SPECIAL_CHARS_TO_ENTITIES.values(): + XML_ENTITY_LIST[i] = True + + SELF_CLOSING_TAGS = {} + NESTABLE_TAGS = {} + RESET_NESTING_TAGS = {} + QUOTE_TAGS = {} + + MARKUP_MASSAGE = [(re.compile('(<[^<>]*)/>'), + lambda x: x.group(1) + ' />'), + (re.compile(']*)>'), + lambda x: '') + ] + + ROOT_TAG_NAME = u'[document]' + + HTML_ENTITIES = "html" + XML_ENTITIES = "xml" + + def __init__(self, markup="", parseOnlyThese=None, fromEncoding=None, + markupMassage=True, smartQuotesTo=XML_ENTITIES, + convertEntities=None, selfClosingTags=None): + """The Soup object is initialized as the 'root tag', and the + provided markup (which can be a string or a file-like object) + is fed into the underlying parser. + + sgmllib will process most bad HTML, and the BeautifulSoup + class has some tricks for dealing with some HTML that kills + sgmllib, but Beautiful Soup can nonetheless choke or lose data + if your data uses self-closing tags or declarations + incorrectly. + + By default, Beautiful Soup uses regexes to sanitize input, + avoiding the vast majority of these problems. If the problems + don't apply to you, pass in False for markupMassage, and + you'll get better performance. + + The default parser massage techniques fix the two most common + instances of invalid HTML that choke sgmllib: + +
(No space between name of closing tag and tag close) + (Extraneous whitespace in declaration) + + You can pass in a custom list of (RE object, replace method) + tuples to get Beautiful Soup to scrub your input the way you + want.""" + + self.parseOnlyThese = parseOnlyThese + self.fromEncoding = fromEncoding + self.smartQuotesTo = smartQuotesTo + self.convertEntities = convertEntities + if self.convertEntities: + # It doesn't make sense to convert encoded characters to + # entities even while you're converting entities to Unicode. + # Just convert it all to Unicode. + self.smartQuotesTo = None + self.instanceSelfClosingTags = buildTagMap(None, selfClosingTags) + SGMLParser.__init__(self) + + if hasattr(markup, 'read'): # It's a file-type object. + markup = markup.read() + self.markup = markup + self.markupMassage = markupMassage + try: + self._feed() + except StopParsing: + pass + self.markup = None # The markup can now be GCed + + def _feed(self, inDocumentEncoding=None): + # Convert the document to Unicode. + markup = self.markup + if isinstance(markup, unicode): + if not hasattr(self, 'originalEncoding'): + self.originalEncoding = None + else: + dammit = UnicodeDammit\ + (markup, [self.fromEncoding, inDocumentEncoding], + smartQuotesTo=self.smartQuotesTo) + markup = dammit.unicode + self.originalEncoding = dammit.originalEncoding + if markup: + if self.markupMassage: + if not isList(self.markupMassage): + self.markupMassage = self.MARKUP_MASSAGE + for fix, m in self.markupMassage: + markup = fix.sub(m, markup) + self.reset() + + SGMLParser.feed(self, markup) + # Close out any unfinished strings and close all the open tags. + self.endData() + while self.currentTag.name != self.ROOT_TAG_NAME: + self.popTag() + + def __getattr__(self, methodName): + """This method routes method call requests to either the SGMLParser + superclass or the Tag superclass, depending on the method name.""" + #print "__getattr__ called on %s.%s" % (self.__class__, methodName) + + if methodName.find('start_') == 0 or methodName.find('end_') == 0 \ + or methodName.find('do_') == 0: + return SGMLParser.__getattr__(self, methodName) + elif methodName.find('__') != 0: + return Tag.__getattr__(self, methodName) + else: + raise AttributeError + + def isSelfClosingTag(self, name): + """Returns true iff the given string is the name of a + self-closing tag according to this parser.""" + return self.SELF_CLOSING_TAGS.has_key(name) \ + or self.instanceSelfClosingTags.has_key(name) + + def reset(self): + Tag.__init__(self, self, self.ROOT_TAG_NAME) + self.hidden = 1 + SGMLParser.reset(self) + self.currentData = [] + self.currentTag = None + self.tagStack = [] + self.quoteStack = [] + self.pushTag(self) + + def popTag(self): + tag = self.tagStack.pop() + # Tags with just one string-owning child get the child as a + # 'string' property, so that soup.tag.string is shorthand for + # soup.tag.contents[0] + if len(self.currentTag.contents) == 1 and \ + isinstance(self.currentTag.contents[0], NavigableString): + self.currentTag.string = self.currentTag.contents[0] + + #print "Pop", tag.name + if self.tagStack: + self.currentTag = self.tagStack[-1] + return self.currentTag + + def pushTag(self, tag): + #print "Push", tag.name + if self.currentTag: + self.currentTag.append(tag) + self.tagStack.append(tag) + self.currentTag = self.tagStack[-1] + + def endData(self, containerClass=NavigableString): + if self.currentData: + currentData = ''.join(self.currentData) + if not currentData.strip(): + if '\n' in currentData: + currentData = '\n' + else: + currentData = ' ' + self.currentData = [] + if self.parseOnlyThese and len(self.tagStack) <= 1 and \ + (not self.parseOnlyThese.text or \ + not self.parseOnlyThese.search(currentData)): + return + o = containerClass(currentData) + o.setup(self.currentTag, self.previous) + if self.previous: + self.previous.next = o + self.previous = o + self.currentTag.contents.append(o) + + + def _popToTag(self, name, inclusivePop=True): + """Pops the tag stack up to and including the most recent + instance of the given tag. If inclusivePop is false, pops the tag + stack up to but *not* including the most recent instqance of + the given tag.""" + #print "Popping to %s" % name + if name == self.ROOT_TAG_NAME: + return + + numPops = 0 + mostRecentTag = None + for i in range(len(self.tagStack)-1, 0, -1): + if name == self.tagStack[i].name: + numPops = len(self.tagStack)-i + break + if not inclusivePop: + numPops = numPops - 1 + + for i in range(0, numPops): + mostRecentTag = self.popTag() + return mostRecentTag + + def _smartPop(self, name): + + """We need to pop up to the previous tag of this type, unless + one of this tag's nesting reset triggers comes between this + tag and the previous tag of this type, OR unless this tag is a + generic nesting trigger and another generic nesting trigger + comes between this tag and the previous tag of this type. + + Examples: +

FooBar

should pop to 'p', not 'b'. +

FooBar

should pop to 'table', not 'p'. +

Foo

Bar

should pop to 'tr', not 'p'. +

FooBar

should pop to 'p', not 'b'. + +

    • *
    • * should pop to 'ul', not the first 'li'. +
  • ** should pop to 'table', not the first 'tr' + tag should + implicitly close the previous tag within the same
    ** should pop to 'tr', not the first 'td' + """ + + nestingResetTriggers = self.NESTABLE_TAGS.get(name) + isNestable = nestingResetTriggers != None + isResetNesting = self.RESET_NESTING_TAGS.has_key(name) + popTo = None + inclusive = True + for i in range(len(self.tagStack)-1, 0, -1): + p = self.tagStack[i] + if (not p or p.name == name) and not isNestable: + #Non-nestable tags get popped to the top or to their + #last occurance. + popTo = name + break + if (nestingResetTriggers != None + and p.name in nestingResetTriggers) \ + or (nestingResetTriggers == None and isResetNesting + and self.RESET_NESTING_TAGS.has_key(p.name)): + + #If we encounter one of the nesting reset triggers + #peculiar to this tag, or we encounter another tag + #that causes nesting to reset, pop up to but not + #including that tag. + popTo = p.name + inclusive = False + break + p = p.parent + if popTo: + self._popToTag(popTo, inclusive) + + def unknown_starttag(self, name, attrs, selfClosing=0): + #print "Start tag %s: %s" % (name, attrs) + if self.quoteStack: + #This is not a real tag. + #print "<%s> is not real!" % name + attrs = ''.join(map(lambda(x, y): ' %s="%s"' % (x, y), attrs)) + self.handle_data('<%s%s>' % (name, attrs)) + return + self.endData() + + if not self.isSelfClosingTag(name) and not selfClosing: + self._smartPop(name) + + if self.parseOnlyThese and len(self.tagStack) <= 1 \ + and (self.parseOnlyThese.text or not self.parseOnlyThese.searchTag(name, attrs)): + return + + tag = Tag(self, name, attrs, self.currentTag, self.previous) + if self.previous: + self.previous.next = tag + self.previous = tag + self.pushTag(tag) + if selfClosing or self.isSelfClosingTag(name): + self.popTag() + if name in self.QUOTE_TAGS: + #print "Beginning quote (%s)" % name + self.quoteStack.append(name) + self.literal = 1 + return tag + + def unknown_endtag(self, name): + #print "End tag %s" % name + if self.quoteStack and self.quoteStack[-1] != name: + #This is not a real end tag. + #print " is not real!" % name + self.handle_data('' % name) + return + self.endData() + self._popToTag(name) + if self.quoteStack and self.quoteStack[-1] == name: + self.quoteStack.pop() + self.literal = (len(self.quoteStack) > 0) + + def handle_data(self, data): + self.currentData.append(data) + + def _toStringSubclass(self, text, subclass): + """Adds a certain piece of text to the tree as a NavigableString + subclass.""" + self.endData() + self.handle_data(text) + self.endData(subclass) + + def handle_pi(self, text): + """Handle a processing instruction as a ProcessingInstruction + object, possibly one with a %SOUP-ENCODING% slot into which an + encoding will be plugged later.""" + if text[:3] == "xml": + text = "xml version='1.0' encoding='%SOUP-ENCODING%'" + self._toStringSubclass(text, ProcessingInstruction) + + def handle_comment(self, text): + "Handle comments as Comment objects." + self._toStringSubclass(text, Comment) + + def handle_charref(self, ref): + "Handle character references as data." + if self.convertEntities in [self.HTML_ENTITIES, + self.XML_ENTITIES]: + data = unichr(int(ref)) + else: + data = '&#%s;' % ref + self.handle_data(data) + + def handle_entityref(self, ref): + """Handle entity references as data, possibly converting known + HTML entity references to the corresponding Unicode + characters.""" + data = None + if self.convertEntities == self.HTML_ENTITIES or \ + (self.convertEntities == self.XML_ENTITIES and \ + self.XML_ENTITY_LIST.get(ref)): + try: + data = unichr(name2codepoint[ref]) + except KeyError: + pass + if not data: + data = '&%s;' % ref + self.handle_data(data) + + def handle_decl(self, data): + "Handle DOCTYPEs and the like as Declaration objects." + self._toStringSubclass(data, Declaration) + + def parse_declaration(self, i): + """Treat a bogus SGML declaration as raw data. Treat a CDATA + declaration as a CData object.""" + j = None + if self.rawdata[i:i+9] == '', i) + if k == -1: + k = len(self.rawdata) + data = self.rawdata[i+9:k] + j = k+3 + self._toStringSubclass(data, CData) + else: + try: + j = SGMLParser.parse_declaration(self, i) + except SGMLParseError: + toHandle = self.rawdata[i:] + self.handle_data(toHandle) + j = i + len(toHandle) + return j + +class BeautifulSoup(BeautifulStoneSoup): + + """This parser knows the following facts about HTML: + + * Some tags have no closing tag and should be interpreted as being + closed as soon as they are encountered. + + * The text inside some tags (ie. 'script') may contain tags which + are not really part of the document and which should be parsed + as text, not tags. If you want to parse the text as tags, you can + always fetch it and parse it explicitly. + + * Tag nesting rules: + + Most tags can't be nested at all. For instance, the occurance of + a

    tag should implicitly close the previous

    tag. + +

    Para1

    Para2 + should be transformed into: +

    Para1

    Para2 + + Some tags can be nested arbitrarily. For instance, the occurance + of a

    tag should _not_ implicitly close the previous +
    tag. + + Alice said:
    Bob said:
    Blah + should NOT be transformed into: + Alice said:
    Bob said:
    Blah + + Some tags can be nested, but the nesting is reset by the + interposition of other tags. For instance, a
    , + but not close a tag in another table. + +
    BlahBlah + should be transformed into: +
    BlahBlah + but, + Blah
    Blah + should NOT be transformed into + Blah
    Blah + + Differing assumptions about tag nesting rules are a major source + of problems with the BeautifulSoup class. If BeautifulSoup is not + treating as nestable a tag your page author treats as nestable, + try ICantBelieveItsBeautifulSoup, MinimalSoup, or + BeautifulStoneSoup before writing your own subclass.""" + + def __init__(self, *args, **kwargs): + if not kwargs.has_key('smartQuotesTo'): + kwargs['smartQuotesTo'] = self.HTML_ENTITIES + BeautifulStoneSoup.__init__(self, *args, **kwargs) + + SELF_CLOSING_TAGS = buildTagMap(None, + ['br' , 'hr', 'input', 'img', 'meta', + 'spacer', 'link', 'frame', 'base']) + + QUOTE_TAGS = {'script': None} + + #According to the HTML standard, each of these inline tags can + #contain another tag of the same type. Furthermore, it's common + #to actually use these tags this way. + NESTABLE_INLINE_TAGS = ['span', 'font', 'q', 'object', 'bdo', 'sub', 'sup', + 'center'] + + #According to the HTML standard, these block tags can contain + #another tag of the same type. Furthermore, it's common + #to actually use these tags this way. + NESTABLE_BLOCK_TAGS = ['blockquote', 'div', 'fieldset', 'ins', 'del'] + + #Lists can contain other lists, but there are restrictions. + NESTABLE_LIST_TAGS = { 'ol' : [], + 'ul' : [], + 'li' : ['ul', 'ol'], + 'dl' : [], + 'dd' : ['dl'], + 'dt' : ['dl'] } + + #Tables can contain other tables, but there are restrictions. + NESTABLE_TABLE_TAGS = {'table' : [], + 'tr' : ['table', 'tbody', 'tfoot', 'thead'], + 'td' : ['tr'], + 'th' : ['tr'], + 'thead' : ['table'], + 'tbody' : ['table'], + 'tfoot' : ['table'], + } + + NON_NESTABLE_BLOCK_TAGS = ['address', 'form', 'p', 'pre'] + + #If one of these tags is encountered, all tags up to the next tag of + #this type are popped. + RESET_NESTING_TAGS = buildTagMap(None, NESTABLE_BLOCK_TAGS, 'noscript', + NON_NESTABLE_BLOCK_TAGS, + NESTABLE_LIST_TAGS, + NESTABLE_TABLE_TAGS) + + NESTABLE_TAGS = buildTagMap([], NESTABLE_INLINE_TAGS, NESTABLE_BLOCK_TAGS, + NESTABLE_LIST_TAGS, NESTABLE_TABLE_TAGS) + + # Used to detect the charset in a META tag; see start_meta + CHARSET_RE = re.compile("((^|;)\s*charset=)([^;]*)") + + def start_meta(self, attrs): + """Beautiful Soup can detect a charset included in a META tag, + try to convert the document to that charset, and re-parse the + document from the beginning.""" + httpEquiv = None + contentType = None + contentTypeIndex = None + tagNeedsEncodingSubstitution = False + + for i in range(0, len(attrs)): + key, value = attrs[i] + key = key.lower() + if key == 'http-equiv': + httpEquiv = value + elif key == 'content': + contentType = value + contentTypeIndex = i + + if httpEquiv and contentType: # It's an interesting meta tag. + match = self.CHARSET_RE.search(contentType) + if match: + if getattr(self, 'declaredHTMLEncoding') or \ + (self.originalEncoding == self.fromEncoding): + # This is our second pass through the document, or + # else an encoding was specified explicitly and it + # worked. Rewrite the meta tag. + newAttr = self.CHARSET_RE.sub\ + (lambda(match):match.group(1) + + "%SOUP-ENCODING%", value) + attrs[contentTypeIndex] = (attrs[contentTypeIndex][0], + newAttr) + tagNeedsEncodingSubstitution = True + else: + # This is our first pass through the document. + # Go through it again with the new information. + newCharset = match.group(3) + if newCharset and newCharset != self.originalEncoding: + self.declaredHTMLEncoding = newCharset + self._feed(self.declaredHTMLEncoding) + raise StopParsing + tag = self.unknown_starttag("meta", attrs) + if tag and tagNeedsEncodingSubstitution: + tag.containsSubstitutions = True + +class StopParsing(Exception): + pass + +class ICantBelieveItsBeautifulSoup(BeautifulSoup): + + """The BeautifulSoup class is oriented towards skipping over + common HTML errors like unclosed tags. However, sometimes it makes + errors of its own. For instance, consider this fragment: + + FooBar + + This is perfectly valid (if bizarre) HTML. However, the + BeautifulSoup class will implicitly close the first b tag when it + encounters the second 'b'. It will think the author wrote + "FooBar", and didn't close the first 'b' tag, because + there's no real-world reason to bold something that's already + bold. When it encounters '' it will close two more 'b' + tags, for a grand total of three tags closed instead of two. This + can throw off the rest of your document structure. The same is + true of a number of other tags, listed below. + + It's much more common for someone to forget to close a 'b' tag + than to actually use nested 'b' tags, and the BeautifulSoup class + handles the common case. This class handles the not-co-common + case: where you can't believe someone wrote what they did, but + it's valid HTML and BeautifulSoup screwed up by assuming it + wouldn't be.""" + + I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS = \ + ['em', 'big', 'i', 'small', 'tt', 'abbr', 'acronym', 'strong', + 'cite', 'code', 'dfn', 'kbd', 'samp', 'strong', 'var', 'b', + 'big'] + + I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS = ['noscript'] + + NESTABLE_TAGS = buildTagMap([], BeautifulSoup.NESTABLE_TAGS, + I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS, + I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS) + +class MinimalSoup(BeautifulSoup): + """The MinimalSoup class is for parsing HTML that contains + pathologically bad markup. It makes no assumptions about tag + nesting, but it does know which tags are self-closing, that +