postrunner 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +4 -3
- data/lib/postrunner/ActivitiesDB.rb +8 -9
- data/lib/postrunner/Activity.rb +7 -1
- data/lib/postrunner/ActivityView.rb +10 -2
- data/lib/postrunner/DataSources.rb +100 -0
- data/lib/postrunner/DeviceList.rb +40 -17
- data/lib/postrunner/Log.rb +25 -0
- data/lib/postrunner/Main.rb +9 -8
- data/lib/postrunner/RuntimeConfig.rb +1 -0
- data/lib/postrunner/TrackView.rb +39 -62
- data/lib/postrunner/version.rb +1 -1
- data/misc/openlayers/ol.css +1 -0
- data/misc/openlayers/ol.js +948 -0
- data/postrunner.gemspec +2 -2
- data/spec/PostRunner_spec.rb +22 -23
- data/spec/spec_helper.rb +34 -4
- metadata +11 -1214
- data/misc/openlayers/.gitignore +0 -7
- data/misc/openlayers/OpenLayers.debug.js +0 -85622
- data/misc/openlayers/OpenLayers.js +0 -1443
- data/misc/openlayers/OpenLayers.light.debug.js +0 -37230
- data/misc/openlayers/OpenLayers.light.js +0 -592
- data/misc/openlayers/OpenLayers.mobile.debug.js +0 -41831
- data/misc/openlayers/OpenLayers.mobile.js +0 -681
- data/misc/openlayers/apidoc_config/Languages.txt +0 -113
- data/misc/openlayers/apidoc_config/Menu.txt +0 -520
- data/misc/openlayers/apidoc_config/OL.css +0 -20
- data/misc/openlayers/apidoc_config/Topics.txt +0 -105
- data/misc/openlayers/art/arrows.svg +0 -127
- data/misc/openlayers/art/layer-switcher-maximize.svg +0 -128
- data/misc/openlayers/art/layer-switcher-minimize.svg +0 -142
- data/misc/openlayers/art/marker.svg +0 -25
- data/misc/openlayers/art/measuring-stick-off.svg +0 -36
- data/misc/openlayers/art/measuring-stick-on.svg +0 -36
- data/misc/openlayers/art/panning-hand-off.svg +0 -44
- data/misc/openlayers/art/panning-hand-on.svg +0 -44
- data/misc/openlayers/art/slider.svg +0 -71
- data/misc/openlayers/art/zoom-world.svg +0 -193
- data/misc/openlayers/art/zoombar.svg +0 -73
- data/misc/openlayers/authors.txt +0 -56
- data/misc/openlayers/build/README.txt +0 -46
- data/misc/openlayers/build/build.py +0 -158
- data/misc/openlayers/build/buildUncompressed.py +0 -25
- data/misc/openlayers/build/closure-compiler/Externs.js +0 -50
- data/misc/openlayers/build/full.cfg +0 -14
- data/misc/openlayers/build/license.txt +0 -57
- data/misc/openlayers/build/light.cfg +0 -32
- data/misc/openlayers/build/lite.cfg +0 -17
- data/misc/openlayers/build/mobile.cfg +0 -36
- data/misc/openlayers/build/tests.cfg +0 -11
- data/misc/openlayers/doc_config/Data/ClassHierarchy.nd +0 -0
- data/misc/openlayers/doc_config/Data/ConfigFileInfo.nd +0 -0
- data/misc/openlayers/doc_config/Data/FileInfo.nd +0 -323
- data/misc/openlayers/doc_config/Data/ImageFileInfo.nd +0 -0
- data/misc/openlayers/doc_config/Data/ImageReferenceTable.nd +0 -0
- data/misc/openlayers/doc_config/Data/IndexInfo.nd +0 -0
- data/misc/openlayers/doc_config/Data/PreviousMenuState.nd +0 -0
- data/misc/openlayers/doc_config/Data/PreviousSettings.nd +0 -0
- data/misc/openlayers/doc_config/Data/SymbolTable.nd +0 -0
- data/misc/openlayers/doc_config/Languages.txt +0 -113
- data/misc/openlayers/doc_config/Menu.txt +0 -520
- data/misc/openlayers/doc_config/OL.css +0 -20
- data/misc/openlayers/doc_config/Topics.txt +0 -102
- data/misc/openlayers/examples/Jugl.js +0 -8
- data/misc/openlayers/examples/KMLParser.html +0 -57
- data/misc/openlayers/examples/SLDSelect.html +0 -202
- data/misc/openlayers/examples/WMSDescribeLayerParser.html +0 -52
- data/misc/openlayers/examples/accelerometer.html +0 -100
- data/misc/openlayers/examples/accessible-click-control.html +0 -69
- data/misc/openlayers/examples/accessible-click-control.js +0 -199
- data/misc/openlayers/examples/accessible-panel.html +0 -130
- data/misc/openlayers/examples/accessible-panel.js +0 -64
- data/misc/openlayers/examples/accessible.html +0 -167
- data/misc/openlayers/examples/all-overlays-google.html +0 -34
- data/misc/openlayers/examples/all-overlays-google.js +0 -19
- data/misc/openlayers/examples/all-overlays.html +0 -76
- data/misc/openlayers/examples/anchor-permalink.html +0 -29
- data/misc/openlayers/examples/anchor-permalink.js +0 -13
- data/misc/openlayers/examples/animated_panning.html +0 -98
- data/misc/openlayers/examples/animator.js +0 -670
- data/misc/openlayers/examples/arcgis93rest.html +0 -69
- data/misc/openlayers/examples/arcgiscache_ags.html +0 -221
- data/misc/openlayers/examples/arcgiscache_direct.html +0 -108
- data/misc/openlayers/examples/arcgiscache_jsonp.html +0 -106
- data/misc/openlayers/examples/arcims-thematic.html +0 -82
- data/misc/openlayers/examples/arcims.html +0 -57
- data/misc/openlayers/examples/attribution.html +0 -60
- data/misc/openlayers/examples/behavior-fixed-http-gml.html +0 -56
- data/misc/openlayers/examples/bing-tiles-restrictedzoom.html +0 -43
- data/misc/openlayers/examples/bing-tiles-restrictedzoom.js +0 -37
- data/misc/openlayers/examples/bing-tiles.html +0 -39
- data/misc/openlayers/examples/bing-tiles.js +0 -31
- data/misc/openlayers/examples/bing.html +0 -64
- data/misc/openlayers/examples/bootstrap.html +0 -81
- data/misc/openlayers/examples/bootstrap.js +0 -31
- data/misc/openlayers/examples/boxes-vector.html +0 -59
- data/misc/openlayers/examples/boxes.html +0 -58
- data/misc/openlayers/examples/browser.html +0 -152
- data/misc/openlayers/examples/browser.js +0 -241
- data/misc/openlayers/examples/buffer.html +0 -54
- data/misc/openlayers/examples/cache-read.html +0 -36
- data/misc/openlayers/examples/cache-read.js +0 -36
- data/misc/openlayers/examples/cache-write.html +0 -37
- data/misc/openlayers/examples/cache-write.js +0 -46
- data/misc/openlayers/examples/canvas-hit-detection.html +0 -31
- data/misc/openlayers/examples/canvas-hit-detection.js +0 -88
- data/misc/openlayers/examples/canvas-inspector.html +0 -53
- data/misc/openlayers/examples/canvas-inspector.js +0 -91
- data/misc/openlayers/examples/canvas.html +0 -35
- data/misc/openlayers/examples/canvas.js +0 -57
- data/misc/openlayers/examples/cartodb-geojson.html +0 -71
- data/misc/openlayers/examples/click-handler.html +0 -232
- data/misc/openlayers/examples/click.html +0 -91
- data/misc/openlayers/examples/clientzoom.html +0 -72
- data/misc/openlayers/examples/clientzoom.js +0 -39
- data/misc/openlayers/examples/controls.html +0 -86
- data/misc/openlayers/examples/cql-format.html +0 -54
- data/misc/openlayers/examples/cql-format.js +0 -61
- data/misc/openlayers/examples/cross-origin-xml.html +0 -32
- data/misc/openlayers/examples/cross-origin-xml.js +0 -25
- data/misc/openlayers/examples/cross-origin.html +0 -36
- data/misc/openlayers/examples/cross-origin.js +0 -39
- data/misc/openlayers/examples/custom-control.html +0 -68
- data/misc/openlayers/examples/custom-style.html +0 -66
- data/misc/openlayers/examples/data/4_m_citylights_lg.gif +0 -0
- data/misc/openlayers/examples/data/line.json +0 -10
- data/misc/openlayers/examples/data/point.json +0 -8
- data/misc/openlayers/examples/data/poly.json +0 -9
- data/misc/openlayers/examples/data/roads.json +0 -349
- data/misc/openlayers/examples/data/tazdem.tiff +0 -0
- data/misc/openlayers/examples/debug.html +0 -77
- data/misc/openlayers/examples/document-drag.html +0 -43
- data/misc/openlayers/examples/donut.html +0 -62
- data/misc/openlayers/examples/donut.js +0 -44
- data/misc/openlayers/examples/drag-feature.html +0 -114
- data/misc/openlayers/examples/draw-feature.html +0 -143
- data/misc/openlayers/examples/draw-undo-redo.html +0 -38
- data/misc/openlayers/examples/draw-undo-redo.js +0 -45
- data/misc/openlayers/examples/dynamic-text-layer.html +0 -101
- data/misc/openlayers/examples/editing-methods.html +0 -58
- data/misc/openlayers/examples/editing-methods.js +0 -83
- data/misc/openlayers/examples/editingtoolbar-outside.html +0 -56
- data/misc/openlayers/examples/editingtoolbar.html +0 -55
- data/misc/openlayers/examples/encoded-polyline.html +0 -47
- data/misc/openlayers/examples/events.html +0 -155
- data/misc/openlayers/examples/example-list.html +0 -302
- data/misc/openlayers/examples/example.html +0 -25
- data/misc/openlayers/examples/example.js +0 -23
- data/misc/openlayers/examples/feature-events.html +0 -46
- data/misc/openlayers/examples/feature-events.js +0 -67
- data/misc/openlayers/examples/filter-strategy.html +0 -54
- data/misc/openlayers/examples/filter-strategy.js +0 -84
- data/misc/openlayers/examples/filter.html +0 -107
- data/misc/openlayers/examples/fractional-zoom.html +0 -72
- data/misc/openlayers/examples/fullScreen.html +0 -53
- data/misc/openlayers/examples/fullScreen.js +0 -20
- data/misc/openlayers/examples/fusiontables.html +0 -35
- data/misc/openlayers/examples/fusiontables.js +0 -51
- data/misc/openlayers/examples/game-accel-ball.html +0 -82
- data/misc/openlayers/examples/geojson-reprojected.html +0 -46
- data/misc/openlayers/examples/geojson-reprojected.js +0 -27
- data/misc/openlayers/examples/geojson-reprojected.json +0 -1
- data/misc/openlayers/examples/geojson.html +0 -77
- data/misc/openlayers/examples/geolocation.html +0 -41
- data/misc/openlayers/examples/geolocation.js +0 -112
- data/misc/openlayers/examples/georss-flickr.html +0 -119
- data/misc/openlayers/examples/georss-markers.html +0 -45
- data/misc/openlayers/examples/georss.html +0 -63
- data/misc/openlayers/examples/georss.xml +0 -378
- data/misc/openlayers/examples/getfeature-wfs.html +0 -84
- data/misc/openlayers/examples/getfeatureinfo-control.html +0 -221
- data/misc/openlayers/examples/getfeatureinfo-popup.html +0 -96
- data/misc/openlayers/examples/gml-layer.html +0 -48
- data/misc/openlayers/examples/gml/line.xml +0 -42
- data/misc/openlayers/examples/gml/multipoint.xml +0 -70
- data/misc/openlayers/examples/gml/multipolygon.xml +0 -106
- data/misc/openlayers/examples/gml/owls.xml +0 -156
- data/misc/openlayers/examples/gml/point.xml +0 -42
- data/misc/openlayers/examples/gml/polygon.xml +0 -89
- data/misc/openlayers/examples/google-static.html +0 -39
- data/misc/openlayers/examples/google-static.js +0 -61
- data/misc/openlayers/examples/google-v3-alloverlays.html +0 -33
- data/misc/openlayers/examples/google-v3-alloverlays.js +0 -35
- data/misc/openlayers/examples/google-v3.html +0 -35
- data/misc/openlayers/examples/google-v3.js +0 -39
- data/misc/openlayers/examples/google.html +0 -69
- data/misc/openlayers/examples/graphic-name.html +0 -42
- data/misc/openlayers/examples/graphic-name.js +0 -67
- data/misc/openlayers/examples/graticule.html +0 -116
- data/misc/openlayers/examples/gutter.html +0 -55
- data/misc/openlayers/examples/highlight-feature.html +0 -88
- data/misc/openlayers/examples/hover-handler.html +0 -216
- data/misc/openlayers/examples/image-layer.html +0 -76
- data/misc/openlayers/examples/img/check-round-green.png +0 -0
- data/misc/openlayers/examples/img/check-round-grey.png +0 -0
- data/misc/openlayers/examples/img/list.png +0 -0
- data/misc/openlayers/examples/img/locate.png +0 -0
- data/misc/openlayers/examples/img/marker_shadow.png +0 -0
- data/misc/openlayers/examples/img/minus1.png +0 -0
- data/misc/openlayers/examples/img/mobile-layers.png +0 -0
- data/misc/openlayers/examples/img/mobile-loc.png +0 -0
- data/misc/openlayers/examples/img/mobile-zoombar.png +0 -0
- data/misc/openlayers/examples/img/openlayers.png +0 -0
- data/misc/openlayers/examples/img/popupMatrix.jpg +0 -0
- data/misc/openlayers/examples/img/small.jpg +0 -0
- data/misc/openlayers/examples/img/thinlong.jpg +0 -0
- data/misc/openlayers/examples/img/widelong.jpg +0 -0
- data/misc/openlayers/examples/img/wideshort.jpg +0 -0
- data/misc/openlayers/examples/intersects.html +0 -193
- data/misc/openlayers/examples/kamap.html +0 -45
- data/misc/openlayers/examples/kamap.txt +0 -508
- data/misc/openlayers/examples/kinetic.html +0 -44
- data/misc/openlayers/examples/kinetic.js +0 -27
- data/misc/openlayers/examples/kml-layer.html +0 -36
- data/misc/openlayers/examples/kml-layer.js +0 -22
- data/misc/openlayers/examples/kml-pointtrack.html +0 -40
- data/misc/openlayers/examples/kml-pointtrack.js +0 -52
- data/misc/openlayers/examples/kml-track.html +0 -42
- data/misc/openlayers/examples/kml-track.js +0 -40
- data/misc/openlayers/examples/kml-track.kml +0 -3359
- data/misc/openlayers/examples/kml/lines.kml +0 -275
- data/misc/openlayers/examples/kml/styles.kml +0 -21
- data/misc/openlayers/examples/kml/sundials.kml +0 -2273
- data/misc/openlayers/examples/label-scale.html +0 -34
- data/misc/openlayers/examples/label-scale.js +0 -72
- data/misc/openlayers/examples/late-render.html +0 -48
- data/misc/openlayers/examples/layer-opacity.html +0 -95
- data/misc/openlayers/examples/layerLoadMonitoring.html +0 -135
- data/misc/openlayers/examples/layerswitcher.html +0 -60
- data/misc/openlayers/examples/light-basic.html +0 -35
- data/misc/openlayers/examples/light-basic.js +0 -67
- data/misc/openlayers/examples/lite.html +0 -39
- data/misc/openlayers/examples/mapbox.html +0 -30
- data/misc/openlayers/examples/mapbox.js +0 -21
- data/misc/openlayers/examples/mapguide.html +0 -155
- data/misc/openlayers/examples/mapquest.html +0 -28
- data/misc/openlayers/examples/mapquest.js +0 -36
- data/misc/openlayers/examples/mapserver.html +0 -41
- data/misc/openlayers/examples/mapserver_untiled.html +0 -43
- data/misc/openlayers/examples/marker-shadow.html +0 -152
- data/misc/openlayers/examples/markerResize.html +0 -60
- data/misc/openlayers/examples/markers.html +0 -59
- data/misc/openlayers/examples/markersTextLayer.html +0 -41
- data/misc/openlayers/examples/measure.html +0 -203
- data/misc/openlayers/examples/mobile-base.js +0 -167
- data/misc/openlayers/examples/mobile-drawing.html +0 -52
- data/misc/openlayers/examples/mobile-drawing.js +0 -71
- data/misc/openlayers/examples/mobile-jq.html +0 -76
- data/misc/openlayers/examples/mobile-jq.js +0 -159
- data/misc/openlayers/examples/mobile-layers.html +0 -62
- data/misc/openlayers/examples/mobile-layers.js +0 -71
- data/misc/openlayers/examples/mobile-navigation.html +0 -52
- data/misc/openlayers/examples/mobile-navigation.js +0 -24
- data/misc/openlayers/examples/mobile-sencha.html +0 -184
- data/misc/openlayers/examples/mobile-sencha.js +0 -198
- data/misc/openlayers/examples/mobile-wmts-vienna.css +0 -205
- data/misc/openlayers/examples/mobile-wmts-vienna.html +0 -27
- data/misc/openlayers/examples/mobile-wmts-vienna.js +0 -281
- data/misc/openlayers/examples/mobile.html +0 -56
- data/misc/openlayers/examples/mobile.js +0 -39
- data/misc/openlayers/examples/modify-feature.html +0 -193
- data/misc/openlayers/examples/mouse-position.html +0 -67
- data/misc/openlayers/examples/mousewheel-interval.html +0 -63
- data/misc/openlayers/examples/multiserver.html +0 -52
- data/misc/openlayers/examples/multitouch.html +0 -28
- data/misc/openlayers/examples/mvs.html +0 -129
- data/misc/openlayers/examples/navigation-control.html +0 -44
- data/misc/openlayers/examples/navigation-history.html +0 -62
- data/misc/openlayers/examples/navtoolbar-alwaysZoom.html +0 -85
- data/misc/openlayers/examples/navtoolbar-outsidemap.html +0 -47
- data/misc/openlayers/examples/navtoolbar.html +0 -46
- data/misc/openlayers/examples/offline-storage.html +0 -44
- data/misc/openlayers/examples/offline-storage.js +0 -199
- data/misc/openlayers/examples/openls.html +0 -88
- data/misc/openlayers/examples/ordering.html +0 -221
- data/misc/openlayers/examples/osm-google.html +0 -32
- data/misc/openlayers/examples/osm-google.js +0 -23
- data/misc/openlayers/examples/osm-grayscale.html +0 -77
- data/misc/openlayers/examples/osm-marker-popup.html +0 -32
- data/misc/openlayers/examples/osm-marker-popup.js +0 -39
- data/misc/openlayers/examples/osm.html +0 -41
- data/misc/openlayers/examples/osm/sutton_coldfield.osm +0 -662
- data/misc/openlayers/examples/overviewmap.html +0 -120
- data/misc/openlayers/examples/pan-zoom-panels.html +0 -97
- data/misc/openlayers/examples/panel.html +0 -99
- data/misc/openlayers/examples/point-grid.html +0 -75
- data/misc/openlayers/examples/point-grid.js +0 -33
- data/misc/openlayers/examples/point-track-markers.html +0 -72
- data/misc/openlayers/examples/polar-projections.html +0 -41
- data/misc/openlayers/examples/polar-projections.js +0 -84
- data/misc/openlayers/examples/popupMatrix.html +0 -652
- data/misc/openlayers/examples/proxy.cgi +0 -81
- data/misc/openlayers/examples/regular-polygons.html +0 -177
- data/misc/openlayers/examples/resize-features.html +0 -101
- data/misc/openlayers/examples/restricted-extent.html +0 -77
- data/misc/openlayers/examples/rotate-features.html +0 -113
- data/misc/openlayers/examples/select-feature-multilayer.html +0 -129
- data/misc/openlayers/examples/select-feature-openpopup.html +0 -106
- data/misc/openlayers/examples/select-feature.html +0 -170
- data/misc/openlayers/examples/setextent.html +0 -39
- data/misc/openlayers/examples/simplify-linestring.html +0 -103
- data/misc/openlayers/examples/simplify-linestring.js +0 -599
- data/misc/openlayers/examples/single-tile.html +0 -33
- data/misc/openlayers/examples/single-tile.js +0 -20
- data/misc/openlayers/examples/sld-parser.html +0 -70
- data/misc/openlayers/examples/sld.html +0 -31
- data/misc/openlayers/examples/sld.js +0 -102
- data/misc/openlayers/examples/snap-grid.html +0 -78
- data/misc/openlayers/examples/snap-grid.js +0 -81
- data/misc/openlayers/examples/snap-split.html +0 -281
- data/misc/openlayers/examples/snapping.html +0 -324
- data/misc/openlayers/examples/sos.html +0 -189
- data/misc/openlayers/examples/spherical-mercator.html +0 -120
- data/misc/openlayers/examples/split-feature.html +0 -116
- data/misc/openlayers/examples/strategy-bbox.html +0 -106
- data/misc/openlayers/examples/strategy-cluster-extended.html +0 -125
- data/misc/openlayers/examples/strategy-cluster-extended.js +0 -247
- data/misc/openlayers/examples/strategy-cluster-threshold.html +0 -149
- data/misc/openlayers/examples/strategy-cluster.html +0 -238
- data/misc/openlayers/examples/strategy-paging.html +0 -115
- data/misc/openlayers/examples/style-rules.html +0 -49
- data/misc/openlayers/examples/style-rules.js +0 -99
- data/misc/openlayers/examples/style.css +0 -143
- data/misc/openlayers/examples/style.mobile-jq.css +0 -62
- data/misc/openlayers/examples/stylemap.html +0 -100
- data/misc/openlayers/examples/styles-context.html +0 -117
- data/misc/openlayers/examples/styles-rotation.html +0 -93
- data/misc/openlayers/examples/styles-unique.html +0 -109
- data/misc/openlayers/examples/sundials-spherical-mercator.html +0 -111
- data/misc/openlayers/examples/sundials.html +0 -107
- data/misc/openlayers/examples/symbolizers-fill-stroke-graphic.html +0 -141
- data/misc/openlayers/examples/tasmania/TasmaniaCities.xml +0 -40
- data/misc/openlayers/examples/tasmania/TasmaniaRoads.xml +0 -204
- data/misc/openlayers/examples/tasmania/TasmaniaStateBoundaries.xml +0 -92
- data/misc/openlayers/examples/tasmania/TasmaniaWaterBodies.xml +0 -162
- data/misc/openlayers/examples/tasmania/sld-tasmania.xml +0 -594
- data/misc/openlayers/examples/teleportation.html +0 -76
- data/misc/openlayers/examples/textfile.txt +0 -4
- data/misc/openlayers/examples/tile-origin.html +0 -38
- data/misc/openlayers/examples/tile-origin.js +0 -16
- data/misc/openlayers/examples/tilecache.html +0 -58
- data/misc/openlayers/examples/tms.html +0 -62
- data/misc/openlayers/examples/transform-feature.html +0 -123
- data/misc/openlayers/examples/transition.html +0 -70
- data/misc/openlayers/examples/using-proj4js.html +0 -109
- data/misc/openlayers/examples/using-proj4js.js +0 -132
- data/misc/openlayers/examples/utfgrid-geography-class.html +0 -51
- data/misc/openlayers/examples/utfgrid-geography-class.js +0 -62
- data/misc/openlayers/examples/utfgrid.html +0 -64
- data/misc/openlayers/examples/utfgrid.js +0 -61
- data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/0/0.json +0 -1
- data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/0/1.json +0 -1
- data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/0/2.json +0 -1
- data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/1/0.json +0 -1
- data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/1/1.json +0 -1
- data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/1/2.json +0 -1
- data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/2/0.json +0 -1
- data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/2/1.json +0 -1
- data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/2/2.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/0/0/0.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/1/0/0.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/1/0/1.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/1/1/0.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/1/1/1.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/0/0.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/0/1.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/0/2.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/0/3.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/1/0.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/1/1.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/1/2.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/1/3.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/2/0.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/2/1.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/2/2.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/2/3.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/3/0.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/3/1.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/3/2.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/geography-class/2/3/3.grid.json +0 -1
- data/misc/openlayers/examples/utfgrid/world_utfgrid/1/0/0.json +0 -1
- data/misc/openlayers/examples/utfgrid/world_utfgrid/1/0/1.json +0 -1
- data/misc/openlayers/examples/utfgrid/world_utfgrid/1/0/2.json +0 -1
- data/misc/openlayers/examples/utfgrid/world_utfgrid/1/1/0.json +0 -1
- data/misc/openlayers/examples/utfgrid/world_utfgrid/1/1/1.json +0 -1
- data/misc/openlayers/examples/utfgrid/world_utfgrid/1/1/2.json +0 -1
- data/misc/openlayers/examples/utfgrid/world_utfgrid/1/2/0.json +0 -1
- data/misc/openlayers/examples/utfgrid/world_utfgrid/1/2/1.json +0 -1
- data/misc/openlayers/examples/utfgrid/world_utfgrid/1/2/2.json +0 -1
- data/misc/openlayers/examples/utfgrid_twogrids.html +0 -51
- data/misc/openlayers/examples/utfgrid_twogrids.js +0 -70
- data/misc/openlayers/examples/vector-features-with-text.html +0 -138
- data/misc/openlayers/examples/vector-features.html +0 -149
- data/misc/openlayers/examples/vector-formats.html +0 -240
- data/misc/openlayers/examples/web-mercator.html +0 -50
- data/misc/openlayers/examples/web-mercator.js +0 -37
- data/misc/openlayers/examples/wfs-filter.html +0 -35
- data/misc/openlayers/examples/wfs-filter.js +0 -48
- data/misc/openlayers/examples/wfs-protocol-transactions.html +0 -104
- data/misc/openlayers/examples/wfs-protocol-transactions.js +0 -106
- data/misc/openlayers/examples/wfs-protocol.html +0 -55
- data/misc/openlayers/examples/wfs-reprojection.html +0 -42
- data/misc/openlayers/examples/wfs-reprojection.js +0 -60
- data/misc/openlayers/examples/wfs-snap-split.html +0 -292
- data/misc/openlayers/examples/wfs-spatial-filter.html +0 -37
- data/misc/openlayers/examples/wfs-spatial-filter.js +0 -36
- data/misc/openlayers/examples/wfs-states.html +0 -34
- data/misc/openlayers/examples/wfs-states.js +0 -35
- data/misc/openlayers/examples/wmc.html +0 -150
- data/misc/openlayers/examples/wms-long-url.html +0 -44
- data/misc/openlayers/examples/wms-long-url.js +0 -26
- data/misc/openlayers/examples/wms-untiled.html +0 -48
- data/misc/openlayers/examples/wms-v13.html +0 -57
- data/misc/openlayers/examples/wms.html +0 -49
- data/misc/openlayers/examples/wmst.html +0 -63
- data/misc/openlayers/examples/wmts-capabilities.html +0 -43
- data/misc/openlayers/examples/wmts-capabilities.js +0 -58
- data/misc/openlayers/examples/wmts-getfeatureinfo.html +0 -74
- data/misc/openlayers/examples/wmts-getfeatureinfo.js +0 -94
- data/misc/openlayers/examples/wmts.html +0 -41
- data/misc/openlayers/examples/wmts.js +0 -35
- data/misc/openlayers/examples/wps-client.html +0 -31
- data/misc/openlayers/examples/wps-client.js +0 -75
- data/misc/openlayers/examples/wps.html +0 -89
- data/misc/openlayers/examples/wps.js +0 -353
- data/misc/openlayers/examples/wrapDateLine.html +0 -73
- data/misc/openlayers/examples/xhtml.html +0 -42
- data/misc/openlayers/examples/xml.html +0 -161
- data/misc/openlayers/examples/xml/features.xml +0 -2
- data/misc/openlayers/examples/xml/georss-flickr.xml +0 -730
- data/misc/openlayers/examples/xml/track1.xml +0 -98
- data/misc/openlayers/examples/xml/wmsdescribelayer.xml +0 -5
- data/misc/openlayers/examples/xyz-esri.html +0 -45
- data/misc/openlayers/examples/yelp-georss.xml +0 -147
- data/misc/openlayers/examples/zoom.html +0 -68
- data/misc/openlayers/examples/zoom.js +0 -34
- data/misc/openlayers/examples/zoomLevels.html +0 -81
- data/misc/openlayers/examples/zoomify.html +0 -70
- data/misc/openlayers/img/blank.gif +0 -0
- data/misc/openlayers/img/cloud-popup-relative.png +0 -0
- data/misc/openlayers/img/drag-rectangle-off.png +0 -0
- data/misc/openlayers/img/drag-rectangle-on.png +0 -0
- data/misc/openlayers/img/east-mini.png +0 -0
- data/misc/openlayers/img/layer-switcher-maximize.png +0 -0
- data/misc/openlayers/img/layer-switcher-minimize.png +0 -0
- data/misc/openlayers/img/marker-blue.png +0 -0
- data/misc/openlayers/img/marker-gold.png +0 -0
- data/misc/openlayers/img/marker-green.png +0 -0
- data/misc/openlayers/img/marker.png +0 -0
- data/misc/openlayers/img/measuring-stick-off.png +0 -0
- data/misc/openlayers/img/measuring-stick-on.png +0 -0
- data/misc/openlayers/img/north-mini.png +0 -0
- data/misc/openlayers/img/panning-hand-off.png +0 -0
- data/misc/openlayers/img/panning-hand-on.png +0 -0
- data/misc/openlayers/img/slider.png +0 -0
- data/misc/openlayers/img/south-mini.png +0 -0
- data/misc/openlayers/img/west-mini.png +0 -0
- data/misc/openlayers/img/zoom-minus-mini.png +0 -0
- data/misc/openlayers/img/zoom-plus-mini.png +0 -0
- data/misc/openlayers/img/zoom-world-mini.png +0 -0
- data/misc/openlayers/img/zoombar.png +0 -0
- data/misc/openlayers/lib/Firebug/errorIcon.png +0 -0
- data/misc/openlayers/lib/Firebug/firebug.css +0 -209
- data/misc/openlayers/lib/Firebug/firebug.html +0 -23
- data/misc/openlayers/lib/Firebug/firebug.js +0 -674
- data/misc/openlayers/lib/Firebug/firebugx.js +0 -10
- data/misc/openlayers/lib/Firebug/infoIcon.png +0 -0
- data/misc/openlayers/lib/Firebug/license.txt +0 -30
- data/misc/openlayers/lib/Firebug/readme.txt +0 -13
- data/misc/openlayers/lib/Firebug/warningIcon.png +0 -0
- data/misc/openlayers/lib/OpenLayers.js +0 -429
- data/misc/openlayers/lib/OpenLayers/Animation.js +0 -102
- data/misc/openlayers/lib/OpenLayers/BaseTypes.js +0 -463
- data/misc/openlayers/lib/OpenLayers/BaseTypes/Bounds.js +0 -837
- data/misc/openlayers/lib/OpenLayers/BaseTypes/Class.js +0 -121
- data/misc/openlayers/lib/OpenLayers/BaseTypes/Date.js +0 -123
- data/misc/openlayers/lib/OpenLayers/BaseTypes/Element.js +0 -189
- data/misc/openlayers/lib/OpenLayers/BaseTypes/LonLat.js +0 -215
- data/misc/openlayers/lib/OpenLayers/BaseTypes/Pixel.js +0 -143
- data/misc/openlayers/lib/OpenLayers/BaseTypes/Size.js +0 -89
- data/misc/openlayers/lib/OpenLayers/Console.js +0 -250
- data/misc/openlayers/lib/OpenLayers/Control.js +0 -371
- data/misc/openlayers/lib/OpenLayers/Control/ArgParser.js +0 -182
- data/misc/openlayers/lib/OpenLayers/Control/Attribution.js +0 -104
- data/misc/openlayers/lib/OpenLayers/Control/Button.js +0 -44
- data/misc/openlayers/lib/OpenLayers/Control/CacheRead.js +0 -156
- data/misc/openlayers/lib/OpenLayers/Control/CacheWrite.js +0 -257
- data/misc/openlayers/lib/OpenLayers/Control/DragFeature.js +0 -366
- data/misc/openlayers/lib/OpenLayers/Control/DragPan.js +0 -156
- data/misc/openlayers/lib/OpenLayers/Control/DrawFeature.js +0 -229
- data/misc/openlayers/lib/OpenLayers/Control/EditingToolbar.js +0 -81
- data/misc/openlayers/lib/OpenLayers/Control/Geolocate.js +0 -192
- data/misc/openlayers/lib/OpenLayers/Control/GetFeature.js +0 -597
- data/misc/openlayers/lib/OpenLayers/Control/Graticule.js +0 -377
- data/misc/openlayers/lib/OpenLayers/Control/KeyboardDefaults.js +0 -142
- data/misc/openlayers/lib/OpenLayers/Control/LayerSwitcher.js +0 -521
- data/misc/openlayers/lib/OpenLayers/Control/Measure.js +0 -379
- data/misc/openlayers/lib/OpenLayers/Control/ModifyFeature.js +0 -835
- data/misc/openlayers/lib/OpenLayers/Control/MousePosition.js +0 -227
- data/misc/openlayers/lib/OpenLayers/Control/NavToolbar.js +0 -57
- data/misc/openlayers/lib/OpenLayers/Control/Navigation.js +0 -345
- data/misc/openlayers/lib/OpenLayers/Control/NavigationHistory.js +0 -423
- data/misc/openlayers/lib/OpenLayers/Control/OverviewMap.js +0 -750
- data/misc/openlayers/lib/OpenLayers/Control/Pan.js +0 -95
- data/misc/openlayers/lib/OpenLayers/Control/PanPanel.js +0 -73
- data/misc/openlayers/lib/OpenLayers/Control/PanZoom.js +0 -233
- data/misc/openlayers/lib/OpenLayers/Control/PanZoomBar.js +0 -408
- data/misc/openlayers/lib/OpenLayers/Control/Panel.js +0 -431
- data/misc/openlayers/lib/OpenLayers/Control/Permalink.js +0 -257
- data/misc/openlayers/lib/OpenLayers/Control/PinchZoom.js +0 -157
- data/misc/openlayers/lib/OpenLayers/Control/SLDSelect.js +0 -567
- data/misc/openlayers/lib/OpenLayers/Control/Scale.js +0 -100
- data/misc/openlayers/lib/OpenLayers/Control/ScaleLine.js +0 -220
- data/misc/openlayers/lib/OpenLayers/Control/SelectFeature.js +0 -643
- data/misc/openlayers/lib/OpenLayers/Control/Snapping.js +0 -560
- data/misc/openlayers/lib/OpenLayers/Control/Split.js +0 -494
- data/misc/openlayers/lib/OpenLayers/Control/TouchNavigation.js +0 -182
- data/misc/openlayers/lib/OpenLayers/Control/TransformFeature.js +0 -624
- data/misc/openlayers/lib/OpenLayers/Control/UTFGrid.js +0 -240
- data/misc/openlayers/lib/OpenLayers/Control/WMSGetFeatureInfo.js +0 -532
- data/misc/openlayers/lib/OpenLayers/Control/WMTSGetFeatureInfo.js +0 -400
- data/misc/openlayers/lib/OpenLayers/Control/Zoom.js +0 -138
- data/misc/openlayers/lib/OpenLayers/Control/ZoomBox.js +0 -129
- data/misc/openlayers/lib/OpenLayers/Control/ZoomIn.js +0 -29
- data/misc/openlayers/lib/OpenLayers/Control/ZoomOut.js +0 -29
- data/misc/openlayers/lib/OpenLayers/Control/ZoomPanel.js +0 -54
- data/misc/openlayers/lib/OpenLayers/Control/ZoomToMaxExtent.js +0 -35
- data/misc/openlayers/lib/OpenLayers/Events.js +0 -1170
- data/misc/openlayers/lib/OpenLayers/Events/buttonclick.js +0 -206
- data/misc/openlayers/lib/OpenLayers/Events/featureclick.js +0 -321
- data/misc/openlayers/lib/OpenLayers/Feature.js +0 -225
- data/misc/openlayers/lib/OpenLayers/Feature/Vector.js +0 -510
- data/misc/openlayers/lib/OpenLayers/Filter.js +0 -87
- data/misc/openlayers/lib/OpenLayers/Filter/Comparison.js +0 -267
- data/misc/openlayers/lib/OpenLayers/Filter/FeatureId.js +0 -87
- data/misc/openlayers/lib/OpenLayers/Filter/Function.js +0 -49
- data/misc/openlayers/lib/OpenLayers/Filter/Logical.js +0 -121
- data/misc/openlayers/lib/OpenLayers/Filter/Spatial.js +0 -122
- data/misc/openlayers/lib/OpenLayers/Format.js +0 -123
- data/misc/openlayers/lib/OpenLayers/Format/ArcXML.js +0 -1028
- data/misc/openlayers/lib/OpenLayers/Format/ArcXML/Features.js +0 -46
- data/misc/openlayers/lib/OpenLayers/Format/Atom.js +0 -712
- data/misc/openlayers/lib/OpenLayers/Format/CQL.js +0 -452
- data/misc/openlayers/lib/OpenLayers/Format/CSWGetDomain.js +0 -34
- data/misc/openlayers/lib/OpenLayers/Format/CSWGetDomain/v2_0_2.js +0 -240
- data/misc/openlayers/lib/OpenLayers/Format/CSWGetRecords.js +0 -34
- data/misc/openlayers/lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js +0 -457
- data/misc/openlayers/lib/OpenLayers/Format/Context.js +0 -334
- data/misc/openlayers/lib/OpenLayers/Format/EncodedPolyline.js +0 -557
- data/misc/openlayers/lib/OpenLayers/Format/Filter.js +0 -53
- data/misc/openlayers/lib/OpenLayers/Format/Filter/v1.js +0 -504
- data/misc/openlayers/lib/OpenLayers/Format/Filter/v1_0_0.js +0 -184
- data/misc/openlayers/lib/OpenLayers/Format/Filter/v1_1_0.js +0 -222
- data/misc/openlayers/lib/OpenLayers/Format/GML.js +0 -923
- data/misc/openlayers/lib/OpenLayers/Format/GML/Base.js +0 -645
- data/misc/openlayers/lib/OpenLayers/Format/GML/v2.js +0 -193
- data/misc/openlayers/lib/OpenLayers/Format/GML/v3.js +0 -477
- data/misc/openlayers/lib/OpenLayers/Format/GPX.js +0 -385
- data/misc/openlayers/lib/OpenLayers/Format/GeoJSON.js +0 -716
- data/misc/openlayers/lib/OpenLayers/Format/GeoRSS.js +0 -409
- data/misc/openlayers/lib/OpenLayers/Format/JSON.js +0 -398
- data/misc/openlayers/lib/OpenLayers/Format/KML.js +0 -1517
- data/misc/openlayers/lib/OpenLayers/Format/OGCExceptionReport.js +0 -108
- data/misc/openlayers/lib/OpenLayers/Format/OSM.js +0 -465
- data/misc/openlayers/lib/OpenLayers/Format/OWSCommon.js +0 -78
- data/misc/openlayers/lib/OpenLayers/Format/OWSCommon/v1.js +0 -318
- data/misc/openlayers/lib/OpenLayers/Format/OWSCommon/v1_0_0.js +0 -62
- data/misc/openlayers/lib/OpenLayers/Format/OWSCommon/v1_1_0.js +0 -116
- data/misc/openlayers/lib/OpenLayers/Format/OWSContext.js +0 -86
- data/misc/openlayers/lib/OpenLayers/Format/OWSContext/v0_3_1.js +0 -595
- data/misc/openlayers/lib/OpenLayers/Format/QueryStringFilter.js +0 -183
- data/misc/openlayers/lib/OpenLayers/Format/SLD.js +0 -81
- data/misc/openlayers/lib/OpenLayers/Format/SLD/v1.js +0 -1309
- data/misc/openlayers/lib/OpenLayers/Format/SLD/v1_0_0.js +0 -46
- data/misc/openlayers/lib/OpenLayers/Format/SLD/v1_0_0_GeoServer.js +0 -149
- data/misc/openlayers/lib/OpenLayers/Format/SOSCapabilities.js +0 -48
- data/misc/openlayers/lib/OpenLayers/Format/SOSCapabilities/v1_0_0.js +0 -158
- data/misc/openlayers/lib/OpenLayers/Format/SOSGetFeatureOfInterest.js +0 -190
- data/misc/openlayers/lib/OpenLayers/Format/SOSGetObservation.js +0 -302
- data/misc/openlayers/lib/OpenLayers/Format/Text.js +0 -151
- data/misc/openlayers/lib/OpenLayers/Format/WCSCapabilities.js +0 -47
- data/misc/openlayers/lib/OpenLayers/Format/WCSCapabilities/v1.js +0 -55
- data/misc/openlayers/lib/OpenLayers/Format/WCSCapabilities/v1_0_0.js +0 -170
- data/misc/openlayers/lib/OpenLayers/Format/WCSCapabilities/v1_1_0.js +0 -109
- data/misc/openlayers/lib/OpenLayers/Format/WCSGetCoverage.js +0 -199
- data/misc/openlayers/lib/OpenLayers/Format/WFS.js +0 -223
- data/misc/openlayers/lib/OpenLayers/Format/WFSCapabilities.js +0 -47
- data/misc/openlayers/lib/OpenLayers/Format/WFSCapabilities/v1.js +0 -129
- data/misc/openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_0_0.js +0 -115
- data/misc/openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_1_0.js +0 -63
- data/misc/openlayers/lib/OpenLayers/Format/WFSDescribeFeatureType.js +0 -234
- data/misc/openlayers/lib/OpenLayers/Format/WFST.js +0 -34
- data/misc/openlayers/lib/OpenLayers/Format/WFST/v1.js +0 -446
- data/misc/openlayers/lib/OpenLayers/Format/WFST/v1_0_0.js +0 -174
- data/misc/openlayers/lib/OpenLayers/Format/WFST/v1_1_0.js +0 -189
- data/misc/openlayers/lib/OpenLayers/Format/WKT.js +0 -392
- data/misc/openlayers/lib/OpenLayers/Format/WMC.js +0 -182
- data/misc/openlayers/lib/OpenLayers/Format/WMC/v1.js +0 -1267
- data/misc/openlayers/lib/OpenLayers/Format/WMC/v1_0_0.js +0 -104
- data/misc/openlayers/lib/OpenLayers/Format/WMC/v1_1_0.js +0 -149
- data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities.js +0 -56
- data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1.js +0 -368
- data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1.js +0 -122
- data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1_0.js +0 -57
- data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1_1.js +0 -60
- data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1_1_WMSC.js +0 -85
- data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_3.js +0 -128
- data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_3_0.js +0 -30
- data/misc/openlayers/lib/OpenLayers/Format/WMSDescribeLayer.js +0 -53
- data/misc/openlayers/lib/OpenLayers/Format/WMSDescribeLayer/v1_1.js +0 -122
- data/misc/openlayers/lib/OpenLayers/Format/WMSGetFeatureInfo.js +0 -296
- data/misc/openlayers/lib/OpenLayers/Format/WMTSCapabilities.js +0 -230
- data/misc/openlayers/lib/OpenLayers/Format/WMTSCapabilities/v1_0_0.js +0 -251
- data/misc/openlayers/lib/OpenLayers/Format/WPSCapabilities.js +0 -48
- data/misc/openlayers/lib/OpenLayers/Format/WPSCapabilities/v1_0_0.js +0 -119
- data/misc/openlayers/lib/OpenLayers/Format/WPSDescribeProcess.js +0 -185
- data/misc/openlayers/lib/OpenLayers/Format/WPSExecute.js +0 -395
- data/misc/openlayers/lib/OpenLayers/Format/XLS.js +0 -68
- data/misc/openlayers/lib/OpenLayers/Format/XLS/v1.js +0 -304
- data/misc/openlayers/lib/OpenLayers/Format/XLS/v1_1_0.js +0 -48
- data/misc/openlayers/lib/OpenLayers/Format/XML.js +0 -897
- data/misc/openlayers/lib/OpenLayers/Format/XML/VersionedOGC.js +0 -212
- data/misc/openlayers/lib/OpenLayers/Geometry.js +0 -500
- data/misc/openlayers/lib/OpenLayers/Geometry/Collection.js +0 -563
- data/misc/openlayers/lib/OpenLayers/Geometry/Curve.js +0 -89
- data/misc/openlayers/lib/OpenLayers/Geometry/LineString.js +0 -646
- data/misc/openlayers/lib/OpenLayers/Geometry/LinearRing.js +0 -433
- data/misc/openlayers/lib/OpenLayers/Geometry/MultiLineString.js +0 -258
- data/misc/openlayers/lib/OpenLayers/Geometry/MultiPoint.js +0 -66
- data/misc/openlayers/lib/OpenLayers/Geometry/MultiPolygon.js +0 -42
- data/misc/openlayers/lib/OpenLayers/Geometry/Point.js +0 -283
- data/misc/openlayers/lib/OpenLayers/Geometry/Polygon.js +0 -255
- data/misc/openlayers/lib/OpenLayers/Handler.js +0 -325
- data/misc/openlayers/lib/OpenLayers/Handler/Box.js +0 -244
- data/misc/openlayers/lib/OpenLayers/Handler/Click.js +0 -505
- data/misc/openlayers/lib/OpenLayers/Handler/Drag.js +0 -547
- data/misc/openlayers/lib/OpenLayers/Handler/Feature.js +0 -434
- data/misc/openlayers/lib/OpenLayers/Handler/Hover.js +0 -180
- data/misc/openlayers/lib/OpenLayers/Handler/Keyboard.js +0 -117
- data/misc/openlayers/lib/OpenLayers/Handler/MouseWheel.js +0 -264
- data/misc/openlayers/lib/OpenLayers/Handler/Path.js +0 -543
- data/misc/openlayers/lib/OpenLayers/Handler/Pinch.js +0 -239
- data/misc/openlayers/lib/OpenLayers/Handler/Point.js +0 -556
- data/misc/openlayers/lib/OpenLayers/Handler/Polygon.js +0 -305
- data/misc/openlayers/lib/OpenLayers/Handler/RegularPolygon.js +0 -429
- data/misc/openlayers/lib/OpenLayers/Icon.js +0 -243
- data/misc/openlayers/lib/OpenLayers/Kinetic.js +0 -178
- data/misc/openlayers/lib/OpenLayers/Lang.js +0 -134
- data/misc/openlayers/lib/OpenLayers/Lang/ar.js +0 -32
- data/misc/openlayers/lib/OpenLayers/Lang/be-tarask.js +0 -54
- data/misc/openlayers/lib/OpenLayers/Lang/bg.js +0 -25
- data/misc/openlayers/lib/OpenLayers/Lang/br.js +0 -53
- data/misc/openlayers/lib/OpenLayers/Lang/ca.js +0 -89
- data/misc/openlayers/lib/OpenLayers/Lang/cs-CZ.js +0 -45
- data/misc/openlayers/lib/OpenLayers/Lang/da-DK.js +0 -80
- data/misc/openlayers/lib/OpenLayers/Lang/de.js +0 -55
- data/misc/openlayers/lib/OpenLayers/Lang/el.js +0 -19
- data/misc/openlayers/lib/OpenLayers/Lang/en-CA.js +0 -21
- data/misc/openlayers/lib/OpenLayers/Lang/en.js +0 -89
- data/misc/openlayers/lib/OpenLayers/Lang/es.js +0 -90
- data/misc/openlayers/lib/OpenLayers/Lang/fi.js +0 -32
- data/misc/openlayers/lib/OpenLayers/Lang/fr.js +0 -53
- data/misc/openlayers/lib/OpenLayers/Lang/fur.js +0 -35
- data/misc/openlayers/lib/OpenLayers/Lang/gl.js +0 -53
- data/misc/openlayers/lib/OpenLayers/Lang/gsw.js +0 -53
- data/misc/openlayers/lib/OpenLayers/Lang/hr.js +0 -37
- data/misc/openlayers/lib/OpenLayers/Lang/hsb.js +0 -53
- data/misc/openlayers/lib/OpenLayers/Lang/hu.js +0 -54
- data/misc/openlayers/lib/OpenLayers/Lang/ia.js +0 -53
- data/misc/openlayers/lib/OpenLayers/Lang/id.js +0 -54
- data/misc/openlayers/lib/OpenLayers/Lang/io.js +0 -19
- data/misc/openlayers/lib/OpenLayers/Lang/is.js +0 -27
- data/misc/openlayers/lib/OpenLayers/Lang/it.js +0 -80
- data/misc/openlayers/lib/OpenLayers/Lang/ja.js +0 -54
- data/misc/openlayers/lib/OpenLayers/Lang/km.js +0 -23
- data/misc/openlayers/lib/OpenLayers/Lang/ksh.js +0 -53
- data/misc/openlayers/lib/OpenLayers/Lang/lt.js +0 -47
- data/misc/openlayers/lib/OpenLayers/Lang/nb.js +0 -82
- data/misc/openlayers/lib/OpenLayers/Lang/nds.js +0 -37
- data/misc/openlayers/lib/OpenLayers/Lang/nl.js +0 -53
- data/misc/openlayers/lib/OpenLayers/Lang/nn.js +0 -19
- data/misc/openlayers/lib/OpenLayers/Lang/oc.js +0 -53
- data/misc/openlayers/lib/OpenLayers/Lang/pl.js +0 -89
- data/misc/openlayers/lib/OpenLayers/Lang/pt-BR.js +0 -54
- data/misc/openlayers/lib/OpenLayers/Lang/pt.js +0 -55
- data/misc/openlayers/lib/OpenLayers/Lang/ro.js +0 -69
- data/misc/openlayers/lib/OpenLayers/Lang/ru.js +0 -56
- data/misc/openlayers/lib/OpenLayers/Lang/sk.js +0 -44
- data/misc/openlayers/lib/OpenLayers/Lang/sv-SE.js +0 -45
- data/misc/openlayers/lib/OpenLayers/Lang/te.js +0 -27
- data/misc/openlayers/lib/OpenLayers/Lang/vi.js +0 -53
- data/misc/openlayers/lib/OpenLayers/Lang/zh-CN.js +0 -80
- data/misc/openlayers/lib/OpenLayers/Lang/zh-TW.js +0 -81
- data/misc/openlayers/lib/OpenLayers/Layer.js +0 -1377
- data/misc/openlayers/lib/OpenLayers/Layer/ArcGIS93Rest.js +0 -225
- data/misc/openlayers/lib/OpenLayers/Layer/ArcGISCache.js +0 -480
- data/misc/openlayers/lib/OpenLayers/Layer/ArcIMS.js +0 -425
- data/misc/openlayers/lib/OpenLayers/Layer/Bing.js +0 -333
- data/misc/openlayers/lib/OpenLayers/Layer/Boxes.js +0 -76
- data/misc/openlayers/lib/OpenLayers/Layer/EventPane.js +0 -441
- data/misc/openlayers/lib/OpenLayers/Layer/FixedZoomLevels.js +0 -319
- data/misc/openlayers/lib/OpenLayers/Layer/GeoRSS.js +0 -265
- data/misc/openlayers/lib/OpenLayers/Layer/Google.js +0 -809
- data/misc/openlayers/lib/OpenLayers/Layer/Google/v3.js +0 -351
- data/misc/openlayers/lib/OpenLayers/Layer/Grid.js +0 -1343
- data/misc/openlayers/lib/OpenLayers/Layer/HTTPRequest.js +0 -230
- data/misc/openlayers/lib/OpenLayers/Layer/Image.js +0 -259
- data/misc/openlayers/lib/OpenLayers/Layer/KaMap.js +0 -192
- data/misc/openlayers/lib/OpenLayers/Layer/KaMapCache.js +0 -143
- data/misc/openlayers/lib/OpenLayers/Layer/MapGuide.js +0 -443
- data/misc/openlayers/lib/OpenLayers/Layer/MapServer.js +0 -181
- data/misc/openlayers/lib/OpenLayers/Layer/Markers.js +0 -187
- data/misc/openlayers/lib/OpenLayers/Layer/OSM.js +0 -123
- data/misc/openlayers/lib/OpenLayers/Layer/PointGrid.js +0 -299
- data/misc/openlayers/lib/OpenLayers/Layer/PointTrack.js +0 -125
- data/misc/openlayers/lib/OpenLayers/Layer/SphericalMercator.js +0 -146
- data/misc/openlayers/lib/OpenLayers/Layer/TMS.js +0 -202
- data/misc/openlayers/lib/OpenLayers/Layer/Text.js +0 -267
- data/misc/openlayers/lib/OpenLayers/Layer/TileCache.js +0 -140
- data/misc/openlayers/lib/OpenLayers/Layer/UTFGrid.js +0 -184
- data/misc/openlayers/lib/OpenLayers/Layer/Vector.js +0 -1007
- data/misc/openlayers/lib/OpenLayers/Layer/Vector/RootContainer.js +0 -154
- data/misc/openlayers/lib/OpenLayers/Layer/WMS.js +0 -267
- data/misc/openlayers/lib/OpenLayers/Layer/WMTS.js +0 -510
- data/misc/openlayers/lib/OpenLayers/Layer/WorldWind.js +0 -105
- data/misc/openlayers/lib/OpenLayers/Layer/XYZ.js +0 -172
- data/misc/openlayers/lib/OpenLayers/Layer/Zoomify.js +0 -260
- data/misc/openlayers/lib/OpenLayers/Map.js +0 -2867
- data/misc/openlayers/lib/OpenLayers/Marker.js +0 -241
- data/misc/openlayers/lib/OpenLayers/Marker/Box.js +0 -120
- data/misc/openlayers/lib/OpenLayers/Popup.js +0 -1065
- data/misc/openlayers/lib/OpenLayers/Popup/Anchored.js +0 -195
- data/misc/openlayers/lib/OpenLayers/Popup/Framed.js +0 -343
- data/misc/openlayers/lib/OpenLayers/Popup/FramedCloud.js +0 -227
- data/misc/openlayers/lib/OpenLayers/Projection.js +0 -322
- data/misc/openlayers/lib/OpenLayers/Protocol.js +0 -291
- data/misc/openlayers/lib/OpenLayers/Protocol/CSW.js +0 -30
- data/misc/openlayers/lib/OpenLayers/Protocol/CSW/v2_0_2.js +0 -127
- data/misc/openlayers/lib/OpenLayers/Protocol/HTTP.js +0 -580
- data/misc/openlayers/lib/OpenLayers/Protocol/SOS.js +0 -33
- data/misc/openlayers/lib/OpenLayers/Protocol/SOS/v1_0_0.js +0 -133
- data/misc/openlayers/lib/OpenLayers/Protocol/Script.js +0 -377
- data/misc/openlayers/lib/OpenLayers/Protocol/WFS.js +0 -86
- data/misc/openlayers/lib/OpenLayers/Protocol/WFS/v1.js +0 -453
- data/misc/openlayers/lib/OpenLayers/Protocol/WFS/v1_0_0.js +0 -44
- data/misc/openlayers/lib/OpenLayers/Protocol/WFS/v1_1_0.js +0 -68
- data/misc/openlayers/lib/OpenLayers/Renderer.js +0 -432
- data/misc/openlayers/lib/OpenLayers/Renderer/Canvas.js +0 -906
- data/misc/openlayers/lib/OpenLayers/Renderer/Elements.js +0 -1053
- data/misc/openlayers/lib/OpenLayers/Renderer/SVG.js +0 -1012
- data/misc/openlayers/lib/OpenLayers/Renderer/VML.js +0 -985
- data/misc/openlayers/lib/OpenLayers/Request.js +0 -429
- data/misc/openlayers/lib/OpenLayers/Request/XMLHttpRequest.js +0 -458
- data/misc/openlayers/lib/OpenLayers/Rule.js +0 -236
- data/misc/openlayers/lib/OpenLayers/SingleFile.js +0 -78
- data/misc/openlayers/lib/OpenLayers/Spherical.js +0 -67
- data/misc/openlayers/lib/OpenLayers/Strategy.js +0 -121
- data/misc/openlayers/lib/OpenLayers/Strategy/BBOX.js +0 -290
- data/misc/openlayers/lib/OpenLayers/Strategy/Cluster.js +0 -283
- data/misc/openlayers/lib/OpenLayers/Strategy/Filter.js +0 -159
- data/misc/openlayers/lib/OpenLayers/Strategy/Fixed.js +0 -135
- data/misc/openlayers/lib/OpenLayers/Strategy/Paging.js +0 -233
- data/misc/openlayers/lib/OpenLayers/Strategy/Refresh.js +0 -141
- data/misc/openlayers/lib/OpenLayers/Strategy/Save.js +0 -231
- data/misc/openlayers/lib/OpenLayers/Style.js +0 -448
- data/misc/openlayers/lib/OpenLayers/Style2.js +0 -112
- data/misc/openlayers/lib/OpenLayers/StyleMap.js +0 -161
- data/misc/openlayers/lib/OpenLayers/Symbolizer.js +0 -55
- data/misc/openlayers/lib/OpenLayers/Symbolizer/Line.js +0 -74
- data/misc/openlayers/lib/OpenLayers/Symbolizer/Point.js +0 -157
- data/misc/openlayers/lib/OpenLayers/Symbolizer/Polygon.js +0 -88
- data/misc/openlayers/lib/OpenLayers/Symbolizer/Raster.js +0 -34
- data/misc/openlayers/lib/OpenLayers/Symbolizer/Text.js +0 -70
- data/misc/openlayers/lib/OpenLayers/Tile.js +0 -292
- data/misc/openlayers/lib/OpenLayers/Tile/Image.js +0 -510
- data/misc/openlayers/lib/OpenLayers/Tile/Image/IFrame.js +0 -233
- data/misc/openlayers/lib/OpenLayers/Tile/UTFGrid.js +0 -252
- data/misc/openlayers/lib/OpenLayers/TileManager.js +0 -462
- data/misc/openlayers/lib/OpenLayers/Tween.js +0 -361
- data/misc/openlayers/lib/OpenLayers/Util.js +0 -1773
- data/misc/openlayers/lib/OpenLayers/Util/vendorPrefix.js +0 -131
- data/misc/openlayers/lib/OpenLayers/WPSClient.js +0 -223
- data/misc/openlayers/lib/OpenLayers/WPSProcess.js +0 -501
- data/misc/openlayers/lib/Rico/Color.js +0 -253
- data/misc/openlayers/lib/Rico/Corner.js +0 -339
- data/misc/openlayers/lib/Rico/license.js +0 -19
- data/misc/openlayers/lib/deprecated.js +0 -5842
- data/misc/openlayers/license.txt +0 -27
- data/misc/openlayers/licenses/APACHE-2.0.txt +0 -202
- data/misc/openlayers/licenses/BSD-LICENSE.txt +0 -28
- data/misc/openlayers/licenses/MIT-LICENSE.txt +0 -18
- data/misc/openlayers/notes/2.12.md +0 -391
- data/misc/openlayers/notes/2.13.md +0 -159
- data/misc/openlayers/readme.md +0 -79
- data/misc/openlayers/tests/Animation.html +0 -96
- data/misc/openlayers/tests/BaseTypes.html +0 -387
- data/misc/openlayers/tests/BaseTypes/Bounds.html +0 -738
- data/misc/openlayers/tests/BaseTypes/Class.html +0 -350
- data/misc/openlayers/tests/BaseTypes/Date.html +0 -191
- data/misc/openlayers/tests/BaseTypes/Element.html +0 -195
- data/misc/openlayers/tests/BaseTypes/LonLat.html +0 -241
- data/misc/openlayers/tests/BaseTypes/Pixel.html +0 -123
- data/misc/openlayers/tests/BaseTypes/Size.html +0 -67
- data/misc/openlayers/tests/Console.html +0 -39
- data/misc/openlayers/tests/Control.html +0 -107
- data/misc/openlayers/tests/Control/ArgParser.html +0 -26
- data/misc/openlayers/tests/Control/Attribution.html +0 -60
- data/misc/openlayers/tests/Control/Button.html +0 -17
- data/misc/openlayers/tests/Control/CacheRead.html +0 -108
- data/misc/openlayers/tests/Control/CacheWrite.html +0 -90
- data/misc/openlayers/tests/Control/DragFeature.html +0 -383
- data/misc/openlayers/tests/Control/DragPan.html +0 -104
- data/misc/openlayers/tests/Control/DrawFeature.html +0 -160
- data/misc/openlayers/tests/Control/EditingToolbar.html +0 -33
- data/misc/openlayers/tests/Control/Geolocate.html +0 -129
- data/misc/openlayers/tests/Control/GetFeature.html +0 -177
- data/misc/openlayers/tests/Control/Graticule.html +0 -66
- data/misc/openlayers/tests/Control/KeyboardDefaults.html +0 -173
- data/misc/openlayers/tests/Control/LayerSwitcher.html +0 -249
- data/misc/openlayers/tests/Control/Measure.html +0 -386
- data/misc/openlayers/tests/Control/ModifyFeature.html +0 -828
- data/misc/openlayers/tests/Control/MousePosition.html +0 -109
- data/misc/openlayers/tests/Control/NavToolbar.html +0 -45
- data/misc/openlayers/tests/Control/Navigation.html +0 -200
- data/misc/openlayers/tests/Control/NavigationHistory.html +0 -245
- data/misc/openlayers/tests/Control/OverviewMap.html +0 -266
- data/misc/openlayers/tests/Control/Pan.html +0 -201
- data/misc/openlayers/tests/Control/PanPanel.html +0 -61
- data/misc/openlayers/tests/Control/PanZoom.html +0 -244
- data/misc/openlayers/tests/Control/PanZoomBar.html +0 -245
- data/misc/openlayers/tests/Control/Panel.html +0 -382
- data/misc/openlayers/tests/Control/Permalink.html +0 -453
- data/misc/openlayers/tests/Control/PinchZoom.html +0 -134
- data/misc/openlayers/tests/Control/SLDSelect.html +0 -239
- data/misc/openlayers/tests/Control/Scale.html +0 -54
- data/misc/openlayers/tests/Control/ScaleLine.html +0 -187
- data/misc/openlayers/tests/Control/SelectFeature.html +0 -632
- data/misc/openlayers/tests/Control/Snapping.html +0 -448
- data/misc/openlayers/tests/Control/Split.html +0 -319
- data/misc/openlayers/tests/Control/TouchNavigation.html +0 -155
- data/misc/openlayers/tests/Control/TransformFeature.html +0 -129
- data/misc/openlayers/tests/Control/UTFGrid.html +0 -120
- data/misc/openlayers/tests/Control/WMSGetFeatureInfo.html +0 -644
- data/misc/openlayers/tests/Control/WMTSGetFeatureInfo.html +0 -334
- data/misc/openlayers/tests/Control/Zoom.html +0 -83
- data/misc/openlayers/tests/Control/ZoomBox.html +0 -54
- data/misc/openlayers/tests/Control/ZoomIn.html +0 -101
- data/misc/openlayers/tests/Control/ZoomOut.html +0 -100
- data/misc/openlayers/tests/Control/ZoomToMaxExtent.html +0 -102
- data/misc/openlayers/tests/Events.html +0 -487
- data/misc/openlayers/tests/Events/buttonclick.html +0 -214
- data/misc/openlayers/tests/Events/featureclick.html +0 -91
- data/misc/openlayers/tests/Extras.html +0 -21
- data/misc/openlayers/tests/Feature.html +0 -205
- data/misc/openlayers/tests/Feature/Vector.html +0 -170
- data/misc/openlayers/tests/Filter.html +0 -31
- data/misc/openlayers/tests/Filter/Comparison.html +0 -373
- data/misc/openlayers/tests/Filter/FeatureId.html +0 -67
- data/misc/openlayers/tests/Filter/Logical.html +0 -144
- data/misc/openlayers/tests/Filter/Spatial.html +0 -112
- data/misc/openlayers/tests/Format.html +0 -23
- data/misc/openlayers/tests/Format/ArcXML.html +0 -277
- data/misc/openlayers/tests/Format/ArcXML/Features.html +0 -69
- data/misc/openlayers/tests/Format/Atom.html +0 -450
- data/misc/openlayers/tests/Format/CQL.html +0 -364
- data/misc/openlayers/tests/Format/CSWGetDomain.html +0 -23
- data/misc/openlayers/tests/Format/CSWGetDomain/v2_0_2.html +0 -56
- data/misc/openlayers/tests/Format/CSWGetDomain/v2_0_2.js +0 -18
- data/misc/openlayers/tests/Format/CSWGetRecords.html +0 -23
- data/misc/openlayers/tests/Format/CSWGetRecords/v2_0_2.html +0 -88
- data/misc/openlayers/tests/Format/CSWGetRecords/v2_0_2.js +0 -50
- data/misc/openlayers/tests/Format/EncodedPolyline.html +0 -372
- data/misc/openlayers/tests/Format/Filter.html +0 -21
- data/misc/openlayers/tests/Format/Filter/v1.html +0 -404
- data/misc/openlayers/tests/Format/Filter/v1_0_0.html +0 -295
- data/misc/openlayers/tests/Format/Filter/v1_1_0.html +0 -402
- data/misc/openlayers/tests/Format/GML.html +0 -462
- data/misc/openlayers/tests/Format/GML/cases.js +0 -232
- data/misc/openlayers/tests/Format/GML/v2.html +0 -684
- data/misc/openlayers/tests/Format/GML/v3.html +0 -828
- data/misc/openlayers/tests/Format/GPX.html +0 -179
- data/misc/openlayers/tests/Format/GeoJSON.html +0 -468
- data/misc/openlayers/tests/Format/GeoRSS.html +0 -122
- data/misc/openlayers/tests/Format/JSON.html +0 -53
- data/misc/openlayers/tests/Format/KML.html +0 -1437
- data/misc/openlayers/tests/Format/OGCExceptionReport.html +0 -100
- data/misc/openlayers/tests/Format/OSM.html +0 -115
- data/misc/openlayers/tests/Format/OWSCommon/v1_0_0.html +0 -34
- data/misc/openlayers/tests/Format/OWSCommon/v1_1_0.html +0 -34
- data/misc/openlayers/tests/Format/OWSContext/v0_3_1.html +0 -278
- data/misc/openlayers/tests/Format/QueryStringFilter.html +0 -306
- data/misc/openlayers/tests/Format/SLD.html +0 -36
- data/misc/openlayers/tests/Format/SLD/v1_0_0.html +0 -1028
- data/misc/openlayers/tests/Format/SLD/v1_0_0_GeoServer.html +0 -228
- data/misc/openlayers/tests/Format/SOSCapabilities/v1_0_0.html +0 -80
- data/misc/openlayers/tests/Format/SOSCapabilities/v1_0_0.js +0 -484
- data/misc/openlayers/tests/Format/SOSGetFeatureOfInterest.html +0 -80
- data/misc/openlayers/tests/Format/SOSGetObservation.html +0 -183
- data/misc/openlayers/tests/Format/Text.html +0 -49
- data/misc/openlayers/tests/Format/WCSCapabilities.html +0 -43
- data/misc/openlayers/tests/Format/WCSCapabilities/v1.html +0 -87
- data/misc/openlayers/tests/Format/WCSGetCoverage.html +0 -80
- data/misc/openlayers/tests/Format/WFS.html +0 -81
- data/misc/openlayers/tests/Format/WFSCapabilities.html +0 -43
- data/misc/openlayers/tests/Format/WFSCapabilities/v1.html +0 -179
- data/misc/openlayers/tests/Format/WFSDescribeFeatureType.html +0 -436
- data/misc/openlayers/tests/Format/WFST.html +0 -23
- data/misc/openlayers/tests/Format/WFST/v1.html +0 -455
- data/misc/openlayers/tests/Format/WFST/v1_0_0.html +0 -135
- data/misc/openlayers/tests/Format/WFST/v1_1_0.html +0 -236
- data/misc/openlayers/tests/Format/WKT.html +0 -297
- data/misc/openlayers/tests/Format/WMC.html +0 -315
- data/misc/openlayers/tests/Format/WMC/v1.html +0 -266
- data/misc/openlayers/tests/Format/WMC/v1_1_0.html +0 -86
- data/misc/openlayers/tests/Format/WMSCapabilities.html +0 -20
- data/misc/openlayers/tests/Format/WMSCapabilities/v1_1_1.html +0 -5209
- data/misc/openlayers/tests/Format/WMSCapabilities/v1_1_1_WMSC.html +0 -348
- data/misc/openlayers/tests/Format/WMSCapabilities/v1_3_0.html +0 -614
- data/misc/openlayers/tests/Format/WMSDescribeLayer.html +0 -65
- data/misc/openlayers/tests/Format/WMSGetFeatureInfo.html +0 -319
- data/misc/openlayers/tests/Format/WMTSCapabilities.html +0 -20
- data/misc/openlayers/tests/Format/WMTSCapabilities/v1_0_0.html +0 -1042
- data/misc/openlayers/tests/Format/WPSCapabilities/v1_0_0.html +0 -30
- data/misc/openlayers/tests/Format/WPSCapabilities/v1_0_0.js +0 -112
- data/misc/openlayers/tests/Format/WPSDescribeProcess.html +0 -206
- data/misc/openlayers/tests/Format/WPSExecute.html +0 -549
- data/misc/openlayers/tests/Format/XLS/v1_1_0.html +0 -98
- data/misc/openlayers/tests/Format/XML.html +0 -900
- data/misc/openlayers/tests/Format/XML/VersionedOGC.html +0 -51
- data/misc/openlayers/tests/Geometry.html +0 -356
- data/misc/openlayers/tests/Geometry/Collection.html +0 -431
- data/misc/openlayers/tests/Geometry/Curve.html +0 -157
- data/misc/openlayers/tests/Geometry/LineString.html +0 -443
- data/misc/openlayers/tests/Geometry/LinearRing.html +0 -362
- data/misc/openlayers/tests/Geometry/MultiLineString.html +0 -267
- data/misc/openlayers/tests/Geometry/MultiPoint.html +0 -130
- data/misc/openlayers/tests/Geometry/MultiPolygon.html +0 -34
- data/misc/openlayers/tests/Geometry/Point.html +0 -244
- data/misc/openlayers/tests/Geometry/Polygon.html +0 -420
- data/misc/openlayers/tests/Handler.html +0 -265
- data/misc/openlayers/tests/Handler/Box.html +0 -106
- data/misc/openlayers/tests/Handler/Click.html +0 -735
- data/misc/openlayers/tests/Handler/Drag.html +0 -603
- data/misc/openlayers/tests/Handler/Feature.html +0 -698
- data/misc/openlayers/tests/Handler/Hover.html +0 -136
- data/misc/openlayers/tests/Handler/Keyboard.html +0 -150
- data/misc/openlayers/tests/Handler/MouseWheel.html +0 -182
- data/misc/openlayers/tests/Handler/Path.html +0 -1464
- data/misc/openlayers/tests/Handler/Pinch.html +0 -285
- data/misc/openlayers/tests/Handler/Point.html +0 -600
- data/misc/openlayers/tests/Handler/Polygon.html +0 -1161
- data/misc/openlayers/tests/Handler/RegularPolygon.html +0 -235
- data/misc/openlayers/tests/Icon.html +0 -68
- data/misc/openlayers/tests/Kinetic.html +0 -132
- data/misc/openlayers/tests/Lang.html +0 -106
- data/misc/openlayers/tests/Layer.html +0 -910
- data/misc/openlayers/tests/Layer/ArcGIS93Rest.html +0 -324
- data/misc/openlayers/tests/Layer/ArcGISCache.html +0 -256
- data/misc/openlayers/tests/Layer/ArcGISCache.json +0 -334
- data/misc/openlayers/tests/Layer/ArcIMS.html +0 -123
- data/misc/openlayers/tests/Layer/Bing.html +0 -200
- data/misc/openlayers/tests/Layer/EventPane.html +0 -172
- data/misc/openlayers/tests/Layer/FixedZoomLevels.html +0 -137
- data/misc/openlayers/tests/Layer/GeoRSS.html +0 -210
- data/misc/openlayers/tests/Layer/Google.html +0 -369
- data/misc/openlayers/tests/Layer/Google/v3.html +0 -337
- data/misc/openlayers/tests/Layer/Grid.html +0 -1593
- data/misc/openlayers/tests/Layer/HTTPRequest.html +0 -229
- data/misc/openlayers/tests/Layer/Image.html +0 -164
- data/misc/openlayers/tests/Layer/KaMap.html +0 -287
- data/misc/openlayers/tests/Layer/MapGuide.html +0 -177
- data/misc/openlayers/tests/Layer/MapServer.html +0 -238
- data/misc/openlayers/tests/Layer/Markers.html +0 -156
- data/misc/openlayers/tests/Layer/OSM.html +0 -16
- data/misc/openlayers/tests/Layer/PointGrid.html +0 -232
- data/misc/openlayers/tests/Layer/PointTrack.html +0 -79
- data/misc/openlayers/tests/Layer/SphericalMercator.html +0 -126
- data/misc/openlayers/tests/Layer/TMS.html +0 -262
- data/misc/openlayers/tests/Layer/Text.html +0 -211
- data/misc/openlayers/tests/Layer/TileCache.html +0 -203
- data/misc/openlayers/tests/Layer/UTFGrid.html +0 -131
- data/misc/openlayers/tests/Layer/Vector.html +0 -879
- data/misc/openlayers/tests/Layer/Vector/RootContainer.html +0 -63
- data/misc/openlayers/tests/Layer/WMS.html +0 -583
- data/misc/openlayers/tests/Layer/WMTS.html +0 -1491
- data/misc/openlayers/tests/Layer/WrapDateLine.html +0 -188
- data/misc/openlayers/tests/Layer/XYZ.html +0 -266
- data/misc/openlayers/tests/Layer/atom-1.0.xml +0 -34
- data/misc/openlayers/tests/Layer/data_Layer_Text_textfile.txt +0 -3
- data/misc/openlayers/tests/Layer/data_Layer_Text_textfile_2.txt +0 -3
- data/misc/openlayers/tests/Layer/data_Layer_Text_textfile_overflow.txt +0 -3
- data/misc/openlayers/tests/Layer/georss.txt +0 -378
- data/misc/openlayers/tests/Map.html +0 -2255
- data/misc/openlayers/tests/Marker.html +0 -163
- data/misc/openlayers/tests/Marker/Box.html +0 -183
- data/misc/openlayers/tests/OLLoader.js +0 -26
- data/misc/openlayers/tests/OpenLayers1.html +0 -18
- data/misc/openlayers/tests/OpenLayers2.html +0 -19
- data/misc/openlayers/tests/OpenLayers3.html +0 -19
- data/misc/openlayers/tests/OpenLayers4.html +0 -18
- data/misc/openlayers/tests/OpenLayersJsFiles.html +0 -27
- data/misc/openlayers/tests/Popup.html +0 -219
- data/misc/openlayers/tests/Popup/Anchored.html +0 -37
- data/misc/openlayers/tests/Popup/FramedCloud.html +0 -18
- data/misc/openlayers/tests/Projection.html +0 -87
- data/misc/openlayers/tests/Protocol.html +0 -63
- data/misc/openlayers/tests/Protocol/CSW.html +0 -90
- data/misc/openlayers/tests/Protocol/HTTP.html +0 -842
- data/misc/openlayers/tests/Protocol/SOS.html +0 -57
- data/misc/openlayers/tests/Protocol/Script.html +0 -282
- data/misc/openlayers/tests/Protocol/WFS.html +0 -471
- data/misc/openlayers/tests/README.txt +0 -16
- data/misc/openlayers/tests/Renderer.html +0 -96
- data/misc/openlayers/tests/Renderer/Canvas.html +0 -501
- data/misc/openlayers/tests/Renderer/Elements.html +0 -651
- data/misc/openlayers/tests/Renderer/SVG.html +0 -441
- data/misc/openlayers/tests/Renderer/VML.html +0 -454
- data/misc/openlayers/tests/Request.html +0 -524
- data/misc/openlayers/tests/Request/XMLHttpRequest.html +0 -59
- data/misc/openlayers/tests/Rule.html +0 -123
- data/misc/openlayers/tests/SingleFile1.html +0 -15
- data/misc/openlayers/tests/SingleFile2.html +0 -15
- data/misc/openlayers/tests/SingleFile3.html +0 -15
- data/misc/openlayers/tests/Strategy.html +0 -94
- data/misc/openlayers/tests/Strategy/BBOX.html +0 -361
- data/misc/openlayers/tests/Strategy/Cluster.html +0 -148
- data/misc/openlayers/tests/Strategy/Filter.html +0 -135
- data/misc/openlayers/tests/Strategy/Fixed.html +0 -253
- data/misc/openlayers/tests/Strategy/Paging.html +0 -113
- data/misc/openlayers/tests/Strategy/Refresh.html +0 -177
- data/misc/openlayers/tests/Strategy/Save.html +0 -127
- data/misc/openlayers/tests/Style.html +0 -426
- data/misc/openlayers/tests/Style2.html +0 -56
- data/misc/openlayers/tests/StyleMap.html +0 -44
- data/misc/openlayers/tests/Symbolizer.html +0 -31
- data/misc/openlayers/tests/Symbolizer/Line.html +0 -42
- data/misc/openlayers/tests/Symbolizer/Point.html +0 -52
- data/misc/openlayers/tests/Symbolizer/Polygon.html +0 -44
- data/misc/openlayers/tests/Symbolizer/Raster.html +0 -32
- data/misc/openlayers/tests/Symbolizer/Text.html +0 -42
- data/misc/openlayers/tests/Test.AnotherWay.baseadditions.js +0 -191
- data/misc/openlayers/tests/Test.AnotherWay.css +0 -243
- data/misc/openlayers/tests/Test.AnotherWay.geom_eq.js +0 -139
- data/misc/openlayers/tests/Test.AnotherWay.js +0 -2498
- data/misc/openlayers/tests/Test.AnotherWay.xml_eq.js +0 -311
- data/misc/openlayers/tests/Tile.html +0 -130
- data/misc/openlayers/tests/Tile/Image.html +0 -490
- data/misc/openlayers/tests/Tile/Image/IFrame.html +0 -183
- data/misc/openlayers/tests/Tile/UTFGrid.html +0 -306
- data/misc/openlayers/tests/TileManager.html +0 -137
- data/misc/openlayers/tests/Tween.html +0 -116
- data/misc/openlayers/tests/Util.html +0 -1180
- data/misc/openlayers/tests/Util/vendorPrefix.html +0 -117
- data/misc/openlayers/tests/Util_common.js +0 -64
- data/misc/openlayers/tests/Util_w3c.html +0 -35
- data/misc/openlayers/tests/WPSClient.html +0 -108
- data/misc/openlayers/tests/WPSProcess.html +0 -188
- data/misc/openlayers/tests/atom-1.0.xml +0 -34
- data/misc/openlayers/tests/auto-tests.html +0 -2447
- data/misc/openlayers/tests/data/geos_wkt_intersects.js +0 -495
- data/misc/openlayers/tests/data/osm.js +0 -14
- data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/0/0.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/0/1.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/0/2.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/1/0.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/1/1.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/1/2.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/2/0.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/2/1.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/2/2.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/demo-1.1.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/0/0.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/0/1.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/0/2.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/1/0.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/1/1.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/1/2.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/2/0.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/2/1.json +0 -1
- data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/2/2.json +0 -1
- data/misc/openlayers/tests/data_Layer_Text_textfile.txt +0 -3
- data/misc/openlayers/tests/data_Layer_Text_textfile_2.txt +0 -3
- data/misc/openlayers/tests/data_Layer_Text_textfile_overflow.txt +0 -3
- data/misc/openlayers/tests/deprecated/Ajax.html +0 -28
- data/misc/openlayers/tests/deprecated/BaseTypes/Class.html +0 -142
- data/misc/openlayers/tests/deprecated/BaseTypes/Element.html +0 -56
- data/misc/openlayers/tests/deprecated/Control/MouseToolbar.html +0 -60
- data/misc/openlayers/tests/deprecated/Geometry/Rectangle.html +0 -77
- data/misc/openlayers/tests/deprecated/Layer/GML.html +0 -61
- data/misc/openlayers/tests/deprecated/Layer/MapServer.html +0 -59
- data/misc/openlayers/tests/deprecated/Layer/MapServer/Untiled.html +0 -158
- data/misc/openlayers/tests/deprecated/Layer/WFS.html +0 -178
- data/misc/openlayers/tests/deprecated/Layer/WMS.html +0 -60
- data/misc/openlayers/tests/deprecated/Layer/WMS/Post.html +0 -89
- data/misc/openlayers/tests/deprecated/Layer/Yahoo.html +0 -121
- data/misc/openlayers/tests/deprecated/Layer/mice.xml +0 -156
- data/misc/openlayers/tests/deprecated/Layer/owls.xml +0 -156
- data/misc/openlayers/tests/deprecated/Popup/AnchoredBubble.html +0 -61
- data/misc/openlayers/tests/deprecated/Protocol/SQL.html +0 -24
- data/misc/openlayers/tests/deprecated/Protocol/SQL/Gears.html +0 -474
- data/misc/openlayers/tests/deprecated/Renderer/SVG2.html +0 -399
- data/misc/openlayers/tests/deprecated/Tile/WFS.html +0 -215
- data/misc/openlayers/tests/deprecated/Util.html +0 -20
- data/misc/openlayers/tests/georss.txt +0 -378
- data/misc/openlayers/tests/grid_inittiles.html +0 -30
- data/misc/openlayers/tests/index.html +0 -6
- data/misc/openlayers/tests/list-tests.html +0 -260
- data/misc/openlayers/tests/manual/ajax.html +0 -49
- data/misc/openlayers/tests/manual/ajax.txt +0 -1
- data/misc/openlayers/tests/manual/alloverlays-mixed.html +0 -55
- data/misc/openlayers/tests/manual/arcims-2117.html +0 -103
- data/misc/openlayers/tests/manual/arkansas.rss +0 -9
- data/misc/openlayers/tests/manual/big-georss.html +0 -33
- data/misc/openlayers/tests/manual/box-quirks.html +0 -52
- data/misc/openlayers/tests/manual/box-strict.html +0 -46
- data/misc/openlayers/tests/manual/clip-features-svg.html +0 -128
- data/misc/openlayers/tests/manual/dateline-sketch.html +0 -66
- data/misc/openlayers/tests/manual/dateline-smallextent.html +0 -61
- data/misc/openlayers/tests/manual/draw-feature.html +0 -73
- data/misc/openlayers/tests/manual/feature-handler.html +0 -126
- data/misc/openlayers/tests/manual/geodesic.html +0 -160
- data/misc/openlayers/tests/manual/geojson-geomcoll-reprojection.html +0 -74
- data/misc/openlayers/tests/manual/google-fullscreen-overlay.html +0 -54
- data/misc/openlayers/tests/manual/google-panning.html +0 -122
- data/misc/openlayers/tests/manual/google-resize.html +0 -55
- data/misc/openlayers/tests/manual/google-tilt.html +0 -37
- data/misc/openlayers/tests/manual/google-v3-resize.html +0 -54
- data/misc/openlayers/tests/manual/loadend.html +0 -73
- data/misc/openlayers/tests/manual/map-events.html +0 -38
- data/misc/openlayers/tests/manual/memory/Marker-2258.html +0 -60
- data/misc/openlayers/tests/manual/memory/PanZoom-2323.html +0 -41
- data/misc/openlayers/tests/manual/memory/RemoveChild-2170.html +0 -56
- data/misc/openlayers/tests/manual/memory/VML-2170.html +0 -49
- data/misc/openlayers/tests/manual/multiple-google-layers.html +0 -135
- data/misc/openlayers/tests/manual/overviewmap-projection.html +0 -70
- data/misc/openlayers/tests/manual/page-position.html +0 -103
- data/misc/openlayers/tests/manual/pan-redraw-svg.html +0 -58
- data/misc/openlayers/tests/manual/popup-keepInMap.html +0 -100
- data/misc/openlayers/tests/manual/reflow.html +0 -59
- data/misc/openlayers/tests/manual/renderedDimensions.html +0 -113
- data/misc/openlayers/tests/manual/select-feature-right-click.html +0 -86
- data/misc/openlayers/tests/manual/select-feature.html +0 -75
- data/misc/openlayers/tests/manual/tiles-loading.html +0 -122
- data/misc/openlayers/tests/manual/tween.html +0 -82
- data/misc/openlayers/tests/manual/vector-features-performance.html +0 -149
- data/misc/openlayers/tests/manual/vector-layer-zindex.html +0 -143
- data/misc/openlayers/tests/mice.xml +0 -156
- data/misc/openlayers/tests/node.js/mockdom.js +0 -104
- data/misc/openlayers/tests/node.js/node-tests.cfg +0 -12
- data/misc/openlayers/tests/node.js/node.js +0 -1
- data/misc/openlayers/tests/node.js/run-test.js +0 -26
- data/misc/openlayers/tests/node.js/run.sh +0 -10
- data/misc/openlayers/tests/owls.xml +0 -156
- data/misc/openlayers/tests/run-tests.html +0 -155
- data/misc/openlayers/tests/selenium/remotecontrol/config.cfg +0 -48
- data/misc/openlayers/tests/selenium/remotecontrol/selenium.py +0 -1846
- data/misc/openlayers/tests/selenium/remotecontrol/setup.txt +0 -8
- data/misc/openlayers/tests/selenium/remotecontrol/test_ol.py +0 -95
- data/misc/openlayers/tests/speed/geometry.html +0 -43
- data/misc/openlayers/tests/speed/string_format.html +0 -29
- data/misc/openlayers/tests/speed/vector-renderers.html +0 -25
- data/misc/openlayers/tests/speed/vector-renderers.js +0 -70
- data/misc/openlayers/tests/speed/wmc_speed.html +0 -30
- data/misc/openlayers/tests/speed/wmscaps.html +0 -52
- data/misc/openlayers/tests/speed/wmscaps.js +0 -4956
- data/misc/openlayers/tests/speed/wmscaps.xml +0 -4954
- data/misc/openlayers/tests/throws.js +0 -82
- data/misc/openlayers/theme/default/google.css +0 -9
- data/misc/openlayers/theme/default/google.tidy.css +0 -1
- data/misc/openlayers/theme/default/ie6-style.css +0 -10
- data/misc/openlayers/theme/default/ie6-style.tidy.css +0 -1
- data/misc/openlayers/theme/default/img/add_point_off.png +0 -0
- data/misc/openlayers/theme/default/img/add_point_on.png +0 -0
- data/misc/openlayers/theme/default/img/blank.gif +0 -0
- data/misc/openlayers/theme/default/img/close.gif +0 -0
- data/misc/openlayers/theme/default/img/drag-rectangle-off.png +0 -0
- data/misc/openlayers/theme/default/img/drag-rectangle-on.png +0 -0
- data/misc/openlayers/theme/default/img/draw_line_off.png +0 -0
- data/misc/openlayers/theme/default/img/draw_line_on.png +0 -0
- data/misc/openlayers/theme/default/img/draw_point_off.png +0 -0
- data/misc/openlayers/theme/default/img/draw_point_on.png +0 -0
- data/misc/openlayers/theme/default/img/draw_polygon_off.png +0 -0
- data/misc/openlayers/theme/default/img/draw_polygon_on.png +0 -0
- data/misc/openlayers/theme/default/img/editing_tool_bar.png +0 -0
- data/misc/openlayers/theme/default/img/move_feature_off.png +0 -0
- data/misc/openlayers/theme/default/img/move_feature_on.png +0 -0
- data/misc/openlayers/theme/default/img/navigation_history.png +0 -0
- data/misc/openlayers/theme/default/img/overview_replacement.gif +0 -0
- data/misc/openlayers/theme/default/img/pan-panel-NOALPHA.png +0 -0
- data/misc/openlayers/theme/default/img/pan-panel.png +0 -0
- data/misc/openlayers/theme/default/img/pan_off.png +0 -0
- data/misc/openlayers/theme/default/img/pan_on.png +0 -0
- data/misc/openlayers/theme/default/img/panning-hand-off.png +0 -0
- data/misc/openlayers/theme/default/img/panning-hand-on.png +0 -0
- data/misc/openlayers/theme/default/img/remove_point_off.png +0 -0
- data/misc/openlayers/theme/default/img/remove_point_on.png +0 -0
- data/misc/openlayers/theme/default/img/ruler.png +0 -0
- data/misc/openlayers/theme/default/img/save_features_off.png +0 -0
- data/misc/openlayers/theme/default/img/save_features_on.png +0 -0
- data/misc/openlayers/theme/default/img/view_next_off.png +0 -0
- data/misc/openlayers/theme/default/img/view_next_on.png +0 -0
- data/misc/openlayers/theme/default/img/view_previous_off.png +0 -0
- data/misc/openlayers/theme/default/img/view_previous_on.png +0 -0
- data/misc/openlayers/theme/default/img/zoom-panel-NOALPHA.png +0 -0
- data/misc/openlayers/theme/default/img/zoom-panel.png +0 -0
- data/misc/openlayers/theme/default/style.css +0 -516
- data/misc/openlayers/theme/default/style.mobile.css +0 -70
- data/misc/openlayers/theme/default/style.mobile.tidy.css +0 -1
- data/misc/openlayers/theme/default/style.tidy.css +0 -1
- data/misc/openlayers/tools/BeautifulSoup.py +0 -1767
- data/misc/openlayers/tools/README.txt +0 -14
- data/misc/openlayers/tools/closure_library_jscompiler.py +0 -71
- data/misc/openlayers/tools/closure_ws.py +0 -28
- data/misc/openlayers/tools/exampleparser.py +0 -251
- data/misc/openlayers/tools/jsmin.c +0 -272
- data/misc/openlayers/tools/jsmin.py +0 -216
- data/misc/openlayers/tools/mergejs.py +0 -287
- data/misc/openlayers/tools/minimize.py +0 -47
- data/misc/openlayers/tools/oldot.py +0 -43
- data/misc/openlayers/tools/release.sh +0 -71
- data/misc/openlayers/tools/shrinksafe.py +0 -54
- data/misc/openlayers/tools/toposort.py +0 -35
- data/misc/openlayers/tools/uglify_js.py +0 -35
- data/misc/openlayers/tools/update_dev_dir.sh +0 -103
@@ -1,2867 +0,0 @@
|
|
1
|
-
/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
|
2
|
-
* full list of contributors). Published under the 2-clause BSD license.
|
3
|
-
* See license.txt in the OpenLayers distribution or repository for the
|
4
|
-
* full text of the license. */
|
5
|
-
|
6
|
-
/**
|
7
|
-
* @requires OpenLayers/BaseTypes/Class.js
|
8
|
-
* @requires OpenLayers/Util.js
|
9
|
-
* @requires OpenLayers/Util/vendorPrefix.js
|
10
|
-
* @requires OpenLayers/Events.js
|
11
|
-
* @requires OpenLayers/Tween.js
|
12
|
-
* @requires OpenLayers/Projection.js
|
13
|
-
*/
|
14
|
-
|
15
|
-
/**
|
16
|
-
* Class: OpenLayers.Map
|
17
|
-
* Instances of OpenLayers.Map are interactive maps embedded in a web page.
|
18
|
-
* Create a new map with the <OpenLayers.Map> constructor.
|
19
|
-
*
|
20
|
-
* On their own maps do not provide much functionality. To extend a map
|
21
|
-
* it's necessary to add controls (<OpenLayers.Control>) and
|
22
|
-
* layers (<OpenLayers.Layer>) to the map.
|
23
|
-
*/
|
24
|
-
OpenLayers.Map = OpenLayers.Class({
|
25
|
-
|
26
|
-
/**
|
27
|
-
* Constant: Z_INDEX_BASE
|
28
|
-
* {Object} Base z-indexes for different classes of thing
|
29
|
-
*/
|
30
|
-
Z_INDEX_BASE: {
|
31
|
-
BaseLayer: 100,
|
32
|
-
Overlay: 325,
|
33
|
-
Feature: 725,
|
34
|
-
Popup: 750,
|
35
|
-
Control: 1000
|
36
|
-
},
|
37
|
-
|
38
|
-
/**
|
39
|
-
* APIProperty: events
|
40
|
-
* {<OpenLayers.Events>}
|
41
|
-
*
|
42
|
-
* Register a listener for a particular event with the following syntax:
|
43
|
-
* (code)
|
44
|
-
* map.events.register(type, obj, listener);
|
45
|
-
* (end)
|
46
|
-
*
|
47
|
-
* Listeners will be called with a reference to an event object. The
|
48
|
-
* properties of this event depends on exactly what happened.
|
49
|
-
*
|
50
|
-
* All event objects have at least the following properties:
|
51
|
-
* object - {Object} A reference to map.events.object.
|
52
|
-
* element - {DOMElement} A reference to map.events.element.
|
53
|
-
*
|
54
|
-
* Browser events have the following additional properties:
|
55
|
-
* xy - {<OpenLayers.Pixel>} The pixel location of the event (relative
|
56
|
-
* to the the map viewport).
|
57
|
-
*
|
58
|
-
* Supported map event types:
|
59
|
-
* preaddlayer - triggered before a layer has been added. The event
|
60
|
-
* object will include a *layer* property that references the layer
|
61
|
-
* to be added. When a listener returns "false" the adding will be
|
62
|
-
* aborted.
|
63
|
-
* addlayer - triggered after a layer has been added. The event object
|
64
|
-
* will include a *layer* property that references the added layer.
|
65
|
-
* preremovelayer - triggered before a layer has been removed. The event
|
66
|
-
* object will include a *layer* property that references the layer
|
67
|
-
* to be removed. When a listener returns "false" the removal will be
|
68
|
-
* aborted.
|
69
|
-
* removelayer - triggered after a layer has been removed. The event
|
70
|
-
* object will include a *layer* property that references the removed
|
71
|
-
* layer.
|
72
|
-
* changelayer - triggered after a layer name change, order change,
|
73
|
-
* opacity change, params change, visibility change (actual visibility,
|
74
|
-
* not the layer's visibility property) or attribution change (due to
|
75
|
-
* extent change). Listeners will receive an event object with *layer*
|
76
|
-
* and *property* properties. The *layer* property will be a reference
|
77
|
-
* to the changed layer. The *property* property will be a key to the
|
78
|
-
* changed property (name, order, opacity, params, visibility or
|
79
|
-
* attribution).
|
80
|
-
* movestart - triggered after the start of a drag, pan, or zoom. The event
|
81
|
-
* object may include a *zoomChanged* property that tells whether the
|
82
|
-
* zoom has changed.
|
83
|
-
* move - triggered after each drag, pan, or zoom
|
84
|
-
* moveend - triggered after a drag, pan, or zoom completes
|
85
|
-
* zoomend - triggered after a zoom completes
|
86
|
-
* mouseover - triggered after mouseover the map
|
87
|
-
* mouseout - triggered after mouseout the map
|
88
|
-
* mousemove - triggered after mousemove the map
|
89
|
-
* changebaselayer - triggered after the base layer changes
|
90
|
-
* updatesize - triggered after the <updateSize> method was executed
|
91
|
-
*/
|
92
|
-
|
93
|
-
/**
|
94
|
-
* Property: id
|
95
|
-
* {String} Unique identifier for the map
|
96
|
-
*/
|
97
|
-
id: null,
|
98
|
-
|
99
|
-
/**
|
100
|
-
* Property: fractionalZoom
|
101
|
-
* {Boolean} For a base layer that supports it, allow the map resolution
|
102
|
-
* to be set to a value between one of the values in the resolutions
|
103
|
-
* array. Default is false.
|
104
|
-
*
|
105
|
-
* When fractionalZoom is set to true, it is possible to zoom to
|
106
|
-
* an arbitrary extent. This requires a base layer from a source
|
107
|
-
* that supports requests for arbitrary extents (i.e. not cached
|
108
|
-
* tiles on a regular lattice). This means that fractionalZoom
|
109
|
-
* will not work with commercial layers (Google, Yahoo, VE), layers
|
110
|
-
* using TileCache, or any other pre-cached data sources.
|
111
|
-
*
|
112
|
-
* If you are using fractionalZoom, then you should also use
|
113
|
-
* <getResolutionForZoom> instead of layer.resolutions[zoom] as the
|
114
|
-
* former works for non-integer zoom levels.
|
115
|
-
*/
|
116
|
-
fractionalZoom: false,
|
117
|
-
|
118
|
-
/**
|
119
|
-
* APIProperty: events
|
120
|
-
* {<OpenLayers.Events>} An events object that handles all
|
121
|
-
* events on the map
|
122
|
-
*/
|
123
|
-
events: null,
|
124
|
-
|
125
|
-
/**
|
126
|
-
* APIProperty: allOverlays
|
127
|
-
* {Boolean} Allow the map to function with "overlays" only. Defaults to
|
128
|
-
* false. If true, the lowest layer in the draw order will act as
|
129
|
-
* the base layer. In addition, if set to true, all layers will
|
130
|
-
* have isBaseLayer set to false when they are added to the map.
|
131
|
-
*
|
132
|
-
* Note:
|
133
|
-
* If you set map.allOverlays to true, then you *cannot* use
|
134
|
-
* map.setBaseLayer or layer.setIsBaseLayer. With allOverlays true,
|
135
|
-
* the lowest layer in the draw layer is the base layer. So, to change
|
136
|
-
* the base layer, use <setLayerIndex> or <raiseLayer> to set the layer
|
137
|
-
* index to 0.
|
138
|
-
*/
|
139
|
-
allOverlays: false,
|
140
|
-
|
141
|
-
/**
|
142
|
-
* APIProperty: div
|
143
|
-
* {DOMElement|String} The element that contains the map (or an id for
|
144
|
-
* that element). If the <OpenLayers.Map> constructor is called
|
145
|
-
* with two arguments, this should be provided as the first argument.
|
146
|
-
* Alternatively, the map constructor can be called with the options
|
147
|
-
* object as the only argument. In this case (one argument), a
|
148
|
-
* div property may or may not be provided. If the div property
|
149
|
-
* is not provided, the map can be rendered to a container later
|
150
|
-
* using the <render> method.
|
151
|
-
*
|
152
|
-
* Note:
|
153
|
-
* If you are calling <render> after map construction, do not use
|
154
|
-
* <maxResolution> auto. Instead, divide your <maxExtent> by your
|
155
|
-
* maximum expected dimension.
|
156
|
-
*/
|
157
|
-
div: null,
|
158
|
-
|
159
|
-
/**
|
160
|
-
* Property: dragging
|
161
|
-
* {Boolean} The map is currently being dragged.
|
162
|
-
*/
|
163
|
-
dragging: false,
|
164
|
-
|
165
|
-
/**
|
166
|
-
* Property: size
|
167
|
-
* {<OpenLayers.Size>} Size of the main div (this.div)
|
168
|
-
*/
|
169
|
-
size: null,
|
170
|
-
|
171
|
-
/**
|
172
|
-
* Property: viewPortDiv
|
173
|
-
* {HTMLDivElement} The element that represents the map viewport
|
174
|
-
*/
|
175
|
-
viewPortDiv: null,
|
176
|
-
|
177
|
-
/**
|
178
|
-
* Property: layerContainerOrigin
|
179
|
-
* {<OpenLayers.LonLat>} The lonlat at which the later container was
|
180
|
-
* re-initialized (on-zoom)
|
181
|
-
*/
|
182
|
-
layerContainerOrigin: null,
|
183
|
-
|
184
|
-
/**
|
185
|
-
* Property: layerContainerDiv
|
186
|
-
* {HTMLDivElement} The element that contains the layers.
|
187
|
-
*/
|
188
|
-
layerContainerDiv: null,
|
189
|
-
|
190
|
-
/**
|
191
|
-
* APIProperty: layers
|
192
|
-
* {Array(<OpenLayers.Layer>)} Ordered list of layers in the map
|
193
|
-
*/
|
194
|
-
layers: null,
|
195
|
-
|
196
|
-
/**
|
197
|
-
* APIProperty: controls
|
198
|
-
* {Array(<OpenLayers.Control>)} List of controls associated with the map.
|
199
|
-
*
|
200
|
-
* If not provided in the map options at construction, the map will
|
201
|
-
* by default be given the following controls if present in the build:
|
202
|
-
* - <OpenLayers.Control.Navigation> or <OpenLayers.Control.TouchNavigation>
|
203
|
-
* - <OpenLayers.Control.Zoom> or <OpenLayers.Control.PanZoom>
|
204
|
-
* - <OpenLayers.Control.ArgParser>
|
205
|
-
* - <OpenLayers.Control.Attribution>
|
206
|
-
*/
|
207
|
-
controls: null,
|
208
|
-
|
209
|
-
/**
|
210
|
-
* Property: popups
|
211
|
-
* {Array(<OpenLayers.Popup>)} List of popups associated with the map
|
212
|
-
*/
|
213
|
-
popups: null,
|
214
|
-
|
215
|
-
/**
|
216
|
-
* APIProperty: baseLayer
|
217
|
-
* {<OpenLayers.Layer>} The currently selected base layer. This determines
|
218
|
-
* min/max zoom level, projection, etc.
|
219
|
-
*/
|
220
|
-
baseLayer: null,
|
221
|
-
|
222
|
-
/**
|
223
|
-
* Property: center
|
224
|
-
* {<OpenLayers.LonLat>} The current center of the map
|
225
|
-
*/
|
226
|
-
center: null,
|
227
|
-
|
228
|
-
/**
|
229
|
-
* Property: resolution
|
230
|
-
* {Float} The resolution of the map.
|
231
|
-
*/
|
232
|
-
resolution: null,
|
233
|
-
|
234
|
-
/**
|
235
|
-
* Property: zoom
|
236
|
-
* {Integer} The current zoom level of the map
|
237
|
-
*/
|
238
|
-
zoom: 0,
|
239
|
-
|
240
|
-
/**
|
241
|
-
* Property: panRatio
|
242
|
-
* {Float} The ratio of the current extent within
|
243
|
-
* which panning will tween.
|
244
|
-
*/
|
245
|
-
panRatio: 1.5,
|
246
|
-
|
247
|
-
/**
|
248
|
-
* APIProperty: options
|
249
|
-
* {Object} The options object passed to the class constructor. Read-only.
|
250
|
-
*/
|
251
|
-
options: null,
|
252
|
-
|
253
|
-
// Options
|
254
|
-
|
255
|
-
/**
|
256
|
-
* APIProperty: tileSize
|
257
|
-
* {<OpenLayers.Size>} Set in the map options to override the default tile
|
258
|
-
* size for this map.
|
259
|
-
*/
|
260
|
-
tileSize: null,
|
261
|
-
|
262
|
-
/**
|
263
|
-
* APIProperty: projection
|
264
|
-
* {String} Set in the map options to specify the default projection
|
265
|
-
* for layers added to this map. When using a projection other than EPSG:4326
|
266
|
-
* (CRS:84, Geographic) or EPSG:3857 (EPSG:900913, Web Mercator),
|
267
|
-
* also set maxExtent, maxResolution or resolutions. Default is "EPSG:4326".
|
268
|
-
* Note that the projection of the map is usually determined
|
269
|
-
* by that of the current baseLayer (see <baseLayer> and <getProjectionObject>).
|
270
|
-
*/
|
271
|
-
projection: "EPSG:4326",
|
272
|
-
|
273
|
-
/**
|
274
|
-
* APIProperty: units
|
275
|
-
* {String} The map units. Possible values are 'degrees' (or 'dd'), 'm',
|
276
|
-
* 'ft', 'km', 'mi', 'inches'. Normally taken from the projection.
|
277
|
-
* Only required if both map and layers do not define a projection,
|
278
|
-
* or if they define a projection which does not define units
|
279
|
-
*/
|
280
|
-
units: null,
|
281
|
-
|
282
|
-
/**
|
283
|
-
* APIProperty: resolutions
|
284
|
-
* {Array(Float)} A list of map resolutions (map units per pixel) in
|
285
|
-
* descending order. If this is not set in the layer constructor, it
|
286
|
-
* will be set based on other resolution related properties
|
287
|
-
* (maxExtent, maxResolution, maxScale, etc.).
|
288
|
-
*/
|
289
|
-
resolutions: null,
|
290
|
-
|
291
|
-
/**
|
292
|
-
* APIProperty: maxResolution
|
293
|
-
* {Float} Required if you are not displaying the whole world on a tile
|
294
|
-
* with the size specified in <tileSize>.
|
295
|
-
*/
|
296
|
-
maxResolution: null,
|
297
|
-
|
298
|
-
/**
|
299
|
-
* APIProperty: minResolution
|
300
|
-
* {Float}
|
301
|
-
*/
|
302
|
-
minResolution: null,
|
303
|
-
|
304
|
-
/**
|
305
|
-
* APIProperty: maxScale
|
306
|
-
* {Float}
|
307
|
-
*/
|
308
|
-
maxScale: null,
|
309
|
-
|
310
|
-
/**
|
311
|
-
* APIProperty: minScale
|
312
|
-
* {Float}
|
313
|
-
*/
|
314
|
-
minScale: null,
|
315
|
-
|
316
|
-
/**
|
317
|
-
* APIProperty: maxExtent
|
318
|
-
* {<OpenLayers.Bounds>|Array} If provided as an array, the array
|
319
|
-
* should consist of four values (left, bottom, right, top).
|
320
|
-
* The maximum extent for the map.
|
321
|
-
* Default depends on projection; if this is one of those defined in OpenLayers.Projection.defaults
|
322
|
-
* (EPSG:4326 or web mercator), maxExtent will be set to the value defined there;
|
323
|
-
* else, defaults to null.
|
324
|
-
* To restrict user panning and zooming of the map, use <restrictedExtent> instead.
|
325
|
-
* The value for <maxExtent> will change calculations for tile URLs.
|
326
|
-
*/
|
327
|
-
maxExtent: null,
|
328
|
-
|
329
|
-
/**
|
330
|
-
* APIProperty: minExtent
|
331
|
-
* {<OpenLayers.Bounds>|Array} If provided as an array, the array
|
332
|
-
* should consist of four values (left, bottom, right, top).
|
333
|
-
* The minimum extent for the map. Defaults to null.
|
334
|
-
*/
|
335
|
-
minExtent: null,
|
336
|
-
|
337
|
-
/**
|
338
|
-
* APIProperty: restrictedExtent
|
339
|
-
* {<OpenLayers.Bounds>|Array} If provided as an array, the array
|
340
|
-
* should consist of four values (left, bottom, right, top).
|
341
|
-
* Limit map navigation to this extent where possible.
|
342
|
-
* If a non-null restrictedExtent is set, panning will be restricted
|
343
|
-
* to the given bounds. In addition, zooming to a resolution that
|
344
|
-
* displays more than the restricted extent will center the map
|
345
|
-
* on the restricted extent. If you wish to limit the zoom level
|
346
|
-
* or resolution, use maxResolution.
|
347
|
-
*/
|
348
|
-
restrictedExtent: null,
|
349
|
-
|
350
|
-
/**
|
351
|
-
* APIProperty: numZoomLevels
|
352
|
-
* {Integer} Number of zoom levels for the map. Defaults to 16. Set a
|
353
|
-
* different value in the map options if needed.
|
354
|
-
*/
|
355
|
-
numZoomLevels: 16,
|
356
|
-
|
357
|
-
/**
|
358
|
-
* APIProperty: theme
|
359
|
-
* {String} Relative path to a CSS file from which to load theme styles.
|
360
|
-
* Specify null in the map options (e.g. {theme: null}) if you
|
361
|
-
* want to get cascading style declarations - by putting links to
|
362
|
-
* stylesheets or style declarations directly in your page.
|
363
|
-
*/
|
364
|
-
theme: null,
|
365
|
-
|
366
|
-
/**
|
367
|
-
* APIProperty: displayProjection
|
368
|
-
* {<OpenLayers.Projection>} Requires proj4js support for projections other
|
369
|
-
* than EPSG:4326 or EPSG:900913/EPSG:3857. Projection used by
|
370
|
-
* several controls to display data to user. If this property is set,
|
371
|
-
* it will be set on any control which has a null displayProjection
|
372
|
-
* property at the time the control is added to the map.
|
373
|
-
*/
|
374
|
-
displayProjection: null,
|
375
|
-
|
376
|
-
/**
|
377
|
-
* APIProperty: tileManager
|
378
|
-
* {<OpenLayers.TileManager>|Object} By default, and if the build contains
|
379
|
-
* TileManager.js, the map will use the TileManager to queue image requests
|
380
|
-
* and to cache tile image elements. To create a map without a TileManager
|
381
|
-
* configure the map with tileManager: null. To create a TileManager with
|
382
|
-
* non-default options, supply the options instead or alternatively supply
|
383
|
-
* an instance of {<OpenLayers.TileManager>}.
|
384
|
-
*/
|
385
|
-
|
386
|
-
/**
|
387
|
-
* APIProperty: fallThrough
|
388
|
-
* {Boolean} Should OpenLayers allow events on the map to fall through to
|
389
|
-
* other elements on the page, or should it swallow them? (#457)
|
390
|
-
* Default is to swallow.
|
391
|
-
*/
|
392
|
-
fallThrough: false,
|
393
|
-
|
394
|
-
/**
|
395
|
-
* APIProperty: autoUpdateSize
|
396
|
-
* {Boolean} Should OpenLayers automatically update the size of the map
|
397
|
-
* when the resize event is fired. Default is true.
|
398
|
-
*/
|
399
|
-
autoUpdateSize: true,
|
400
|
-
|
401
|
-
/**
|
402
|
-
* APIProperty: eventListeners
|
403
|
-
* {Object} If set as an option at construction, the eventListeners
|
404
|
-
* object will be registered with <OpenLayers.Events.on>. Object
|
405
|
-
* structure must be a listeners object as shown in the example for
|
406
|
-
* the events.on method.
|
407
|
-
*/
|
408
|
-
eventListeners: null,
|
409
|
-
|
410
|
-
/**
|
411
|
-
* Property: panTween
|
412
|
-
* {<OpenLayers.Tween>} Animated panning tween object, see panTo()
|
413
|
-
*/
|
414
|
-
panTween: null,
|
415
|
-
|
416
|
-
/**
|
417
|
-
* APIProperty: panMethod
|
418
|
-
* {Function} The Easing function to be used for tweening. Default is
|
419
|
-
* OpenLayers.Easing.Expo.easeOut. Setting this to 'null' turns off
|
420
|
-
* animated panning.
|
421
|
-
*/
|
422
|
-
panMethod: OpenLayers.Easing.Expo.easeOut,
|
423
|
-
|
424
|
-
/**
|
425
|
-
* Property: panDuration
|
426
|
-
* {Integer} The number of steps to be passed to the
|
427
|
-
* OpenLayers.Tween.start() method when the map is
|
428
|
-
* panned.
|
429
|
-
* Default is 50.
|
430
|
-
*/
|
431
|
-
panDuration: 50,
|
432
|
-
|
433
|
-
/**
|
434
|
-
* Property: zoomTween
|
435
|
-
* {<OpenLayers.Tween>} Animated zooming tween object, see zoomTo()
|
436
|
-
*/
|
437
|
-
zoomTween: null,
|
438
|
-
|
439
|
-
/**
|
440
|
-
* APIProperty: zoomMethod
|
441
|
-
* {Function} The Easing function to be used for tweening. Default is
|
442
|
-
* OpenLayers.Easing.Quad.easeOut. Setting this to 'null' turns off
|
443
|
-
* animated zooming.
|
444
|
-
*/
|
445
|
-
zoomMethod: OpenLayers.Easing.Quad.easeOut,
|
446
|
-
|
447
|
-
/**
|
448
|
-
* Property: zoomDuration
|
449
|
-
* {Integer} The number of steps to be passed to the
|
450
|
-
* OpenLayers.Tween.start() method when the map is zoomed.
|
451
|
-
* Default is 20.
|
452
|
-
*/
|
453
|
-
zoomDuration: 20,
|
454
|
-
|
455
|
-
/**
|
456
|
-
* Property: paddingForPopups
|
457
|
-
* {<OpenLayers.Bounds>} Outside margin of the popup. Used to prevent
|
458
|
-
* the popup from getting too close to the map border.
|
459
|
-
*/
|
460
|
-
paddingForPopups : null,
|
461
|
-
|
462
|
-
/**
|
463
|
-
* Property: layerContainerOriginPx
|
464
|
-
* {Object} Cached object representing the layer container origin (in pixels).
|
465
|
-
*/
|
466
|
-
layerContainerOriginPx: null,
|
467
|
-
|
468
|
-
/**
|
469
|
-
* Property: minPx
|
470
|
-
* {Object} An object with a 'x' and 'y' values that is the lower
|
471
|
-
* left of maxExtent in viewport pixel space.
|
472
|
-
* Used to verify in moveByPx that the new location we're moving to
|
473
|
-
* is valid. It is also used in the getLonLatFromViewPortPx function
|
474
|
-
* of Layer.
|
475
|
-
*/
|
476
|
-
minPx: null,
|
477
|
-
|
478
|
-
/**
|
479
|
-
* Property: maxPx
|
480
|
-
* {Object} An object with a 'x' and 'y' values that is the top
|
481
|
-
* right of maxExtent in viewport pixel space.
|
482
|
-
* Used to verify in moveByPx that the new location we're moving to
|
483
|
-
* is valid.
|
484
|
-
*/
|
485
|
-
maxPx: null,
|
486
|
-
|
487
|
-
/**
|
488
|
-
* Constructor: OpenLayers.Map
|
489
|
-
* Constructor for a new OpenLayers.Map instance. There are two possible
|
490
|
-
* ways to call the map constructor. See the examples below.
|
491
|
-
*
|
492
|
-
* Parameters:
|
493
|
-
* div - {DOMElement|String} The element or id of an element in your page
|
494
|
-
* that will contain the map. May be omitted if the <div> option is
|
495
|
-
* provided or if you intend to call the <render> method later.
|
496
|
-
* options - {Object} Optional object with properties to tag onto the map.
|
497
|
-
*
|
498
|
-
* Valid options (in addition to the listed API properties):
|
499
|
-
* center - {<OpenLayers.LonLat>|Array} The default initial center of the map.
|
500
|
-
* If provided as array, the first value is the x coordinate,
|
501
|
-
* and the 2nd value is the y coordinate.
|
502
|
-
* Only specify if <layers> is provided.
|
503
|
-
* Note that if an ArgParser/Permalink control is present,
|
504
|
-
* and the querystring contains coordinates, center will be set
|
505
|
-
* by that, and this option will be ignored.
|
506
|
-
* zoom - {Number} The initial zoom level for the map. Only specify if
|
507
|
-
* <layers> is provided.
|
508
|
-
* Note that if an ArgParser/Permalink control is present,
|
509
|
-
* and the querystring contains a zoom level, zoom will be set
|
510
|
-
* by that, and this option will be ignored.
|
511
|
-
* extent - {<OpenLayers.Bounds>|Array} The initial extent of the map.
|
512
|
-
* If provided as an array, the array should consist of
|
513
|
-
* four values (left, bottom, right, top).
|
514
|
-
* Only specify if <center> and <zoom> are not provided.
|
515
|
-
*
|
516
|
-
* Examples:
|
517
|
-
* (code)
|
518
|
-
* // create a map with default options in an element with the id "map1"
|
519
|
-
* var map = new OpenLayers.Map("map1");
|
520
|
-
*
|
521
|
-
* // create a map with non-default options in an element with id "map2"
|
522
|
-
* var options = {
|
523
|
-
* projection: "EPSG:3857",
|
524
|
-
* maxExtent: new OpenLayers.Bounds(-200000, -200000, 200000, 200000),
|
525
|
-
* center: new OpenLayers.LonLat(-12356463.476333, 5621521.4854095)
|
526
|
-
* };
|
527
|
-
* var map = new OpenLayers.Map("map2", options);
|
528
|
-
*
|
529
|
-
* // map with non-default options - same as above but with a single argument,
|
530
|
-
* // a restricted extent, and using arrays for bounds and center
|
531
|
-
* var map = new OpenLayers.Map({
|
532
|
-
* div: "map_id",
|
533
|
-
* projection: "EPSG:3857",
|
534
|
-
* maxExtent: [-18924313.432222, -15538711.094146, 18924313.432222, 15538711.094146],
|
535
|
-
* restrictedExtent: [-13358338.893333, -9608371.5085962, 13358338.893333, 9608371.5085962],
|
536
|
-
* center: [-12356463.476333, 5621521.4854095]
|
537
|
-
* });
|
538
|
-
*
|
539
|
-
* // create a map without a reference to a container - call render later
|
540
|
-
* var map = new OpenLayers.Map({
|
541
|
-
* projection: "EPSG:3857",
|
542
|
-
* maxExtent: new OpenLayers.Bounds(-200000, -200000, 200000, 200000)
|
543
|
-
* });
|
544
|
-
* (end)
|
545
|
-
*/
|
546
|
-
initialize: function (div, options) {
|
547
|
-
|
548
|
-
// If only one argument is provided, check if it is an object.
|
549
|
-
if(arguments.length === 1 && typeof div === "object") {
|
550
|
-
options = div;
|
551
|
-
div = options && options.div;
|
552
|
-
}
|
553
|
-
|
554
|
-
// Simple-type defaults are set in class definition.
|
555
|
-
// Now set complex-type defaults
|
556
|
-
this.tileSize = new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH,
|
557
|
-
OpenLayers.Map.TILE_HEIGHT);
|
558
|
-
|
559
|
-
this.paddingForPopups = new OpenLayers.Bounds(15, 15, 15, 15);
|
560
|
-
|
561
|
-
this.theme = OpenLayers._getScriptLocation() +
|
562
|
-
'theme/default/style.css';
|
563
|
-
|
564
|
-
// backup original options
|
565
|
-
this.options = OpenLayers.Util.extend({}, options);
|
566
|
-
|
567
|
-
// now override default options
|
568
|
-
OpenLayers.Util.extend(this, options);
|
569
|
-
|
570
|
-
var projCode = this.projection instanceof OpenLayers.Projection ?
|
571
|
-
this.projection.projCode : this.projection;
|
572
|
-
OpenLayers.Util.applyDefaults(this, OpenLayers.Projection.defaults[projCode]);
|
573
|
-
|
574
|
-
// allow extents and center to be arrays
|
575
|
-
if (this.maxExtent && !(this.maxExtent instanceof OpenLayers.Bounds)) {
|
576
|
-
this.maxExtent = new OpenLayers.Bounds(this.maxExtent);
|
577
|
-
}
|
578
|
-
if (this.minExtent && !(this.minExtent instanceof OpenLayers.Bounds)) {
|
579
|
-
this.minExtent = new OpenLayers.Bounds(this.minExtent);
|
580
|
-
}
|
581
|
-
if (this.restrictedExtent && !(this.restrictedExtent instanceof OpenLayers.Bounds)) {
|
582
|
-
this.restrictedExtent = new OpenLayers.Bounds(this.restrictedExtent);
|
583
|
-
}
|
584
|
-
if (this.center && !(this.center instanceof OpenLayers.LonLat)) {
|
585
|
-
this.center = new OpenLayers.LonLat(this.center);
|
586
|
-
}
|
587
|
-
|
588
|
-
// initialize layers array
|
589
|
-
this.layers = [];
|
590
|
-
|
591
|
-
this.id = OpenLayers.Util.createUniqueID("OpenLayers.Map_");
|
592
|
-
|
593
|
-
this.div = OpenLayers.Util.getElement(div);
|
594
|
-
if(!this.div) {
|
595
|
-
this.div = document.createElement("div");
|
596
|
-
this.div.style.height = "1px";
|
597
|
-
this.div.style.width = "1px";
|
598
|
-
}
|
599
|
-
|
600
|
-
OpenLayers.Element.addClass(this.div, 'olMap');
|
601
|
-
|
602
|
-
// the viewPortDiv is the outermost div we modify
|
603
|
-
var id = this.id + "_OpenLayers_ViewPort";
|
604
|
-
this.viewPortDiv = OpenLayers.Util.createDiv(id, null, null, null,
|
605
|
-
"relative", null,
|
606
|
-
"hidden");
|
607
|
-
this.viewPortDiv.style.width = "100%";
|
608
|
-
this.viewPortDiv.style.height = "100%";
|
609
|
-
this.viewPortDiv.className = "olMapViewport";
|
610
|
-
this.div.appendChild(this.viewPortDiv);
|
611
|
-
|
612
|
-
this.events = new OpenLayers.Events(
|
613
|
-
this, this.viewPortDiv, null, this.fallThrough,
|
614
|
-
{includeXY: true}
|
615
|
-
);
|
616
|
-
|
617
|
-
if (OpenLayers.TileManager && this.tileManager !== null) {
|
618
|
-
if (!(this.tileManager instanceof OpenLayers.TileManager)) {
|
619
|
-
this.tileManager = new OpenLayers.TileManager(this.tileManager);
|
620
|
-
}
|
621
|
-
this.tileManager.addMap(this);
|
622
|
-
}
|
623
|
-
|
624
|
-
// the layerContainerDiv is the one that holds all the layers
|
625
|
-
id = this.id + "_OpenLayers_Container";
|
626
|
-
this.layerContainerDiv = OpenLayers.Util.createDiv(id);
|
627
|
-
this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE['Popup']-1;
|
628
|
-
this.layerContainerOriginPx = {x: 0, y: 0};
|
629
|
-
this.applyTransform();
|
630
|
-
|
631
|
-
this.viewPortDiv.appendChild(this.layerContainerDiv);
|
632
|
-
|
633
|
-
this.updateSize();
|
634
|
-
if(this.eventListeners instanceof Object) {
|
635
|
-
this.events.on(this.eventListeners);
|
636
|
-
}
|
637
|
-
|
638
|
-
if (this.autoUpdateSize === true) {
|
639
|
-
// updateSize on catching the window's resize
|
640
|
-
// Note that this is ok, as updateSize() does nothing if the
|
641
|
-
// map's size has not actually changed.
|
642
|
-
this.updateSizeDestroy = OpenLayers.Function.bind(this.updateSize,
|
643
|
-
this);
|
644
|
-
OpenLayers.Event.observe(window, 'resize',
|
645
|
-
this.updateSizeDestroy);
|
646
|
-
}
|
647
|
-
|
648
|
-
// only append link stylesheet if the theme property is set
|
649
|
-
if(this.theme) {
|
650
|
-
// check existing links for equivalent url
|
651
|
-
var addNode = true;
|
652
|
-
var nodes = document.getElementsByTagName('link');
|
653
|
-
for(var i=0, len=nodes.length; i<len; ++i) {
|
654
|
-
if(OpenLayers.Util.isEquivalentUrl(nodes.item(i).href,
|
655
|
-
this.theme)) {
|
656
|
-
addNode = false;
|
657
|
-
break;
|
658
|
-
}
|
659
|
-
}
|
660
|
-
// only add a new node if one with an equivalent url hasn't already
|
661
|
-
// been added
|
662
|
-
if(addNode) {
|
663
|
-
var cssNode = document.createElement('link');
|
664
|
-
cssNode.setAttribute('rel', 'stylesheet');
|
665
|
-
cssNode.setAttribute('type', 'text/css');
|
666
|
-
cssNode.setAttribute('href', this.theme);
|
667
|
-
document.getElementsByTagName('head')[0].appendChild(cssNode);
|
668
|
-
}
|
669
|
-
}
|
670
|
-
|
671
|
-
if (this.controls == null) { // default controls
|
672
|
-
this.controls = [];
|
673
|
-
if (OpenLayers.Control != null) { // running full or lite?
|
674
|
-
// Navigation or TouchNavigation depending on what is in build
|
675
|
-
if (OpenLayers.Control.Navigation) {
|
676
|
-
this.controls.push(new OpenLayers.Control.Navigation());
|
677
|
-
} else if (OpenLayers.Control.TouchNavigation) {
|
678
|
-
this.controls.push(new OpenLayers.Control.TouchNavigation());
|
679
|
-
}
|
680
|
-
if (OpenLayers.Control.Zoom) {
|
681
|
-
this.controls.push(new OpenLayers.Control.Zoom());
|
682
|
-
} else if (OpenLayers.Control.PanZoom) {
|
683
|
-
this.controls.push(new OpenLayers.Control.PanZoom());
|
684
|
-
}
|
685
|
-
|
686
|
-
if (OpenLayers.Control.ArgParser) {
|
687
|
-
this.controls.push(new OpenLayers.Control.ArgParser());
|
688
|
-
}
|
689
|
-
if (OpenLayers.Control.Attribution) {
|
690
|
-
this.controls.push(new OpenLayers.Control.Attribution());
|
691
|
-
}
|
692
|
-
}
|
693
|
-
}
|
694
|
-
|
695
|
-
for(var i=0, len=this.controls.length; i<len; i++) {
|
696
|
-
this.addControlToMap(this.controls[i]);
|
697
|
-
}
|
698
|
-
|
699
|
-
this.popups = [];
|
700
|
-
|
701
|
-
this.unloadDestroy = OpenLayers.Function.bind(this.destroy, this);
|
702
|
-
|
703
|
-
|
704
|
-
// always call map.destroy()
|
705
|
-
OpenLayers.Event.observe(window, 'unload', this.unloadDestroy);
|
706
|
-
|
707
|
-
// add any initial layers
|
708
|
-
if (options && options.layers) {
|
709
|
-
/**
|
710
|
-
* If you have set options.center, the map center property will be
|
711
|
-
* set at this point. However, since setCenter has not been called,
|
712
|
-
* addLayers gets confused. So we delete the map center in this
|
713
|
-
* case. Because the check below uses options.center, it will
|
714
|
-
* be properly set below.
|
715
|
-
*/
|
716
|
-
delete this.center;
|
717
|
-
delete this.zoom;
|
718
|
-
this.addLayers(options.layers);
|
719
|
-
// set center (and optionally zoom)
|
720
|
-
if (options.center && !this.getCenter()) {
|
721
|
-
// zoom can be undefined here
|
722
|
-
this.setCenter(options.center, options.zoom);
|
723
|
-
}
|
724
|
-
}
|
725
|
-
|
726
|
-
if (this.panMethod) {
|
727
|
-
this.panTween = new OpenLayers.Tween(this.panMethod);
|
728
|
-
}
|
729
|
-
if (this.zoomMethod && this.applyTransform.transform) {
|
730
|
-
this.zoomTween = new OpenLayers.Tween(this.zoomMethod);
|
731
|
-
}
|
732
|
-
},
|
733
|
-
|
734
|
-
/**
|
735
|
-
* APIMethod: getViewport
|
736
|
-
* Get the DOMElement representing the view port.
|
737
|
-
*
|
738
|
-
* Returns:
|
739
|
-
* {DOMElement}
|
740
|
-
*/
|
741
|
-
getViewport: function() {
|
742
|
-
return this.viewPortDiv;
|
743
|
-
},
|
744
|
-
|
745
|
-
/**
|
746
|
-
* APIMethod: render
|
747
|
-
* Render the map to a specified container.
|
748
|
-
*
|
749
|
-
* Parameters:
|
750
|
-
* div - {String|DOMElement} The container that the map should be rendered
|
751
|
-
* to. If different than the current container, the map viewport
|
752
|
-
* will be moved from the current to the new container.
|
753
|
-
*/
|
754
|
-
render: function(div) {
|
755
|
-
this.div = OpenLayers.Util.getElement(div);
|
756
|
-
OpenLayers.Element.addClass(this.div, 'olMap');
|
757
|
-
this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);
|
758
|
-
this.div.appendChild(this.viewPortDiv);
|
759
|
-
this.updateSize();
|
760
|
-
},
|
761
|
-
|
762
|
-
/**
|
763
|
-
* Method: unloadDestroy
|
764
|
-
* Function that is called to destroy the map on page unload. stored here
|
765
|
-
* so that if map is manually destroyed, we can unregister this.
|
766
|
-
*/
|
767
|
-
unloadDestroy: null,
|
768
|
-
|
769
|
-
/**
|
770
|
-
* Method: updateSizeDestroy
|
771
|
-
* When the map is destroyed, we need to stop listening to updateSize
|
772
|
-
* events: this method stores the function we need to unregister in
|
773
|
-
* non-IE browsers.
|
774
|
-
*/
|
775
|
-
updateSizeDestroy: null,
|
776
|
-
|
777
|
-
/**
|
778
|
-
* APIMethod: destroy
|
779
|
-
* Destroy this map.
|
780
|
-
* Note that if you are using an application which removes a container
|
781
|
-
* of the map from the DOM, you need to ensure that you destroy the
|
782
|
-
* map *before* this happens; otherwise, the page unload handler
|
783
|
-
* will fail because the DOM elements that map.destroy() wants
|
784
|
-
* to clean up will be gone. (See
|
785
|
-
* http://trac.osgeo.org/openlayers/ticket/2277 for more information).
|
786
|
-
* This will apply to GeoExt and also to other applications which
|
787
|
-
* modify the DOM of the container of the OpenLayers Map.
|
788
|
-
*/
|
789
|
-
destroy:function() {
|
790
|
-
// if unloadDestroy is null, we've already been destroyed
|
791
|
-
if (!this.unloadDestroy) {
|
792
|
-
return false;
|
793
|
-
}
|
794
|
-
|
795
|
-
// make sure panning doesn't continue after destruction
|
796
|
-
if(this.panTween) {
|
797
|
-
this.panTween.stop();
|
798
|
-
this.panTween = null;
|
799
|
-
}
|
800
|
-
// make sure zooming doesn't continue after destruction
|
801
|
-
if(this.zoomTween) {
|
802
|
-
this.zoomTween.stop();
|
803
|
-
this.zoomTween = null;
|
804
|
-
}
|
805
|
-
|
806
|
-
// map has been destroyed. dont do it again!
|
807
|
-
OpenLayers.Event.stopObserving(window, 'unload', this.unloadDestroy);
|
808
|
-
this.unloadDestroy = null;
|
809
|
-
|
810
|
-
if (this.updateSizeDestroy) {
|
811
|
-
OpenLayers.Event.stopObserving(window, 'resize',
|
812
|
-
this.updateSizeDestroy);
|
813
|
-
}
|
814
|
-
|
815
|
-
this.paddingForPopups = null;
|
816
|
-
|
817
|
-
if (this.controls != null) {
|
818
|
-
for (var i = this.controls.length - 1; i>=0; --i) {
|
819
|
-
this.controls[i].destroy();
|
820
|
-
}
|
821
|
-
this.controls = null;
|
822
|
-
}
|
823
|
-
if (this.layers != null) {
|
824
|
-
for (var i = this.layers.length - 1; i>=0; --i) {
|
825
|
-
//pass 'false' to destroy so that map wont try to set a new
|
826
|
-
// baselayer after each baselayer is removed
|
827
|
-
this.layers[i].destroy(false);
|
828
|
-
}
|
829
|
-
this.layers = null;
|
830
|
-
}
|
831
|
-
if (this.viewPortDiv && this.viewPortDiv.parentNode) {
|
832
|
-
this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);
|
833
|
-
}
|
834
|
-
this.viewPortDiv = null;
|
835
|
-
|
836
|
-
if (this.tileManager) {
|
837
|
-
this.tileManager.removeMap(this);
|
838
|
-
this.tileManager = null;
|
839
|
-
}
|
840
|
-
|
841
|
-
if(this.eventListeners) {
|
842
|
-
this.events.un(this.eventListeners);
|
843
|
-
this.eventListeners = null;
|
844
|
-
}
|
845
|
-
this.events.destroy();
|
846
|
-
this.events = null;
|
847
|
-
|
848
|
-
this.options = null;
|
849
|
-
},
|
850
|
-
|
851
|
-
/**
|
852
|
-
* APIMethod: setOptions
|
853
|
-
* Change the map options
|
854
|
-
*
|
855
|
-
* Parameters:
|
856
|
-
* options - {Object} Hashtable of options to tag to the map
|
857
|
-
*/
|
858
|
-
setOptions: function(options) {
|
859
|
-
var updatePxExtent = this.minPx &&
|
860
|
-
options.restrictedExtent != this.restrictedExtent;
|
861
|
-
OpenLayers.Util.extend(this, options);
|
862
|
-
// force recalculation of minPx and maxPx
|
863
|
-
updatePxExtent && this.moveTo(this.getCachedCenter(), this.zoom, {
|
864
|
-
forceZoomChange: true
|
865
|
-
});
|
866
|
-
},
|
867
|
-
|
868
|
-
/**
|
869
|
-
* APIMethod: getTileSize
|
870
|
-
* Get the tile size for the map
|
871
|
-
*
|
872
|
-
* Returns:
|
873
|
-
* {<OpenLayers.Size>}
|
874
|
-
*/
|
875
|
-
getTileSize: function() {
|
876
|
-
return this.tileSize;
|
877
|
-
},
|
878
|
-
|
879
|
-
|
880
|
-
/**
|
881
|
-
* APIMethod: getBy
|
882
|
-
* Get a list of objects given a property and a match item.
|
883
|
-
*
|
884
|
-
* Parameters:
|
885
|
-
* array - {String} A property on the map whose value is an array.
|
886
|
-
* property - {String} A property on each item of the given array.
|
887
|
-
* match - {String | Object} A string to match. Can also be a regular
|
888
|
-
* expression literal or object. In addition, it can be any object
|
889
|
-
* with a method named test. For reqular expressions or other, if
|
890
|
-
* match.test(map[array][i][property]) evaluates to true, the item will
|
891
|
-
* be included in the array returned. If no items are found, an empty
|
892
|
-
* array is returned.
|
893
|
-
*
|
894
|
-
* Returns:
|
895
|
-
* {Array} An array of items where the given property matches the given
|
896
|
-
* criteria.
|
897
|
-
*/
|
898
|
-
getBy: function(array, property, match) {
|
899
|
-
var test = (typeof match.test == "function");
|
900
|
-
var found = OpenLayers.Array.filter(this[array], function(item) {
|
901
|
-
return item[property] == match || (test && match.test(item[property]));
|
902
|
-
});
|
903
|
-
return found;
|
904
|
-
},
|
905
|
-
|
906
|
-
/**
|
907
|
-
* APIMethod: getLayersBy
|
908
|
-
* Get a list of layers with properties matching the given criteria.
|
909
|
-
*
|
910
|
-
* Parameters:
|
911
|
-
* property - {String} A layer property to be matched.
|
912
|
-
* match - {String | Object} A string to match. Can also be a regular
|
913
|
-
* expression literal or object. In addition, it can be any object
|
914
|
-
* with a method named test. For reqular expressions or other, if
|
915
|
-
* match.test(layer[property]) evaluates to true, the layer will be
|
916
|
-
* included in the array returned. If no layers are found, an empty
|
917
|
-
* array is returned.
|
918
|
-
*
|
919
|
-
* Returns:
|
920
|
-
* {Array(<OpenLayers.Layer>)} A list of layers matching the given criteria.
|
921
|
-
* An empty array is returned if no matches are found.
|
922
|
-
*/
|
923
|
-
getLayersBy: function(property, match) {
|
924
|
-
return this.getBy("layers", property, match);
|
925
|
-
},
|
926
|
-
|
927
|
-
/**
|
928
|
-
* APIMethod: getLayersByName
|
929
|
-
* Get a list of layers with names matching the given name.
|
930
|
-
*
|
931
|
-
* Parameters:
|
932
|
-
* match - {String | Object} A layer name. The name can also be a regular
|
933
|
-
* expression literal or object. In addition, it can be any object
|
934
|
-
* with a method named test. For reqular expressions or other, if
|
935
|
-
* name.test(layer.name) evaluates to true, the layer will be included
|
936
|
-
* in the list of layers returned. If no layers are found, an empty
|
937
|
-
* array is returned.
|
938
|
-
*
|
939
|
-
* Returns:
|
940
|
-
* {Array(<OpenLayers.Layer>)} A list of layers matching the given name.
|
941
|
-
* An empty array is returned if no matches are found.
|
942
|
-
*/
|
943
|
-
getLayersByName: function(match) {
|
944
|
-
return this.getLayersBy("name", match);
|
945
|
-
},
|
946
|
-
|
947
|
-
/**
|
948
|
-
* APIMethod: getLayersByClass
|
949
|
-
* Get a list of layers of a given class (CLASS_NAME).
|
950
|
-
*
|
951
|
-
* Parameters:
|
952
|
-
* match - {String | Object} A layer class name. The match can also be a
|
953
|
-
* regular expression literal or object. In addition, it can be any
|
954
|
-
* object with a method named test. For reqular expressions or other,
|
955
|
-
* if type.test(layer.CLASS_NAME) evaluates to true, the layer will
|
956
|
-
* be included in the list of layers returned. If no layers are
|
957
|
-
* found, an empty array is returned.
|
958
|
-
*
|
959
|
-
* Returns:
|
960
|
-
* {Array(<OpenLayers.Layer>)} A list of layers matching the given class.
|
961
|
-
* An empty array is returned if no matches are found.
|
962
|
-
*/
|
963
|
-
getLayersByClass: function(match) {
|
964
|
-
return this.getLayersBy("CLASS_NAME", match);
|
965
|
-
},
|
966
|
-
|
967
|
-
/**
|
968
|
-
* APIMethod: getControlsBy
|
969
|
-
* Get a list of controls with properties matching the given criteria.
|
970
|
-
*
|
971
|
-
* Parameters:
|
972
|
-
* property - {String} A control property to be matched.
|
973
|
-
* match - {String | Object} A string to match. Can also be a regular
|
974
|
-
* expression literal or object. In addition, it can be any object
|
975
|
-
* with a method named test. For reqular expressions or other, if
|
976
|
-
* match.test(layer[property]) evaluates to true, the layer will be
|
977
|
-
* included in the array returned. If no layers are found, an empty
|
978
|
-
* array is returned.
|
979
|
-
*
|
980
|
-
* Returns:
|
981
|
-
* {Array(<OpenLayers.Control>)} A list of controls matching the given
|
982
|
-
* criteria. An empty array is returned if no matches are found.
|
983
|
-
*/
|
984
|
-
getControlsBy: function(property, match) {
|
985
|
-
return this.getBy("controls", property, match);
|
986
|
-
},
|
987
|
-
|
988
|
-
/**
|
989
|
-
* APIMethod: getControlsByClass
|
990
|
-
* Get a list of controls of a given class (CLASS_NAME).
|
991
|
-
*
|
992
|
-
* Parameters:
|
993
|
-
* match - {String | Object} A control class name. The match can also be a
|
994
|
-
* regular expression literal or object. In addition, it can be any
|
995
|
-
* object with a method named test. For reqular expressions or other,
|
996
|
-
* if type.test(control.CLASS_NAME) evaluates to true, the control will
|
997
|
-
* be included in the list of controls returned. If no controls are
|
998
|
-
* found, an empty array is returned.
|
999
|
-
*
|
1000
|
-
* Returns:
|
1001
|
-
* {Array(<OpenLayers.Control>)} A list of controls matching the given class.
|
1002
|
-
* An empty array is returned if no matches are found.
|
1003
|
-
*/
|
1004
|
-
getControlsByClass: function(match) {
|
1005
|
-
return this.getControlsBy("CLASS_NAME", match);
|
1006
|
-
},
|
1007
|
-
|
1008
|
-
/********************************************************/
|
1009
|
-
/* */
|
1010
|
-
/* Layer Functions */
|
1011
|
-
/* */
|
1012
|
-
/* The following functions deal with adding and */
|
1013
|
-
/* removing Layers to and from the Map */
|
1014
|
-
/* */
|
1015
|
-
/********************************************************/
|
1016
|
-
|
1017
|
-
/**
|
1018
|
-
* APIMethod: getLayer
|
1019
|
-
* Get a layer based on its id
|
1020
|
-
*
|
1021
|
-
* Parameters:
|
1022
|
-
* id - {String} A layer id
|
1023
|
-
*
|
1024
|
-
* Returns:
|
1025
|
-
* {<OpenLayers.Layer>} The Layer with the corresponding id from the map's
|
1026
|
-
* layer collection, or null if not found.
|
1027
|
-
*/
|
1028
|
-
getLayer: function(id) {
|
1029
|
-
var foundLayer = null;
|
1030
|
-
for (var i=0, len=this.layers.length; i<len; i++) {
|
1031
|
-
var layer = this.layers[i];
|
1032
|
-
if (layer.id == id) {
|
1033
|
-
foundLayer = layer;
|
1034
|
-
break;
|
1035
|
-
}
|
1036
|
-
}
|
1037
|
-
return foundLayer;
|
1038
|
-
},
|
1039
|
-
|
1040
|
-
/**
|
1041
|
-
* Method: setLayerZIndex
|
1042
|
-
*
|
1043
|
-
* Parameters:
|
1044
|
-
* layer - {<OpenLayers.Layer>}
|
1045
|
-
* zIdx - {int}
|
1046
|
-
*/
|
1047
|
-
setLayerZIndex: function (layer, zIdx) {
|
1048
|
-
layer.setZIndex(
|
1049
|
-
this.Z_INDEX_BASE[layer.isBaseLayer ? 'BaseLayer' : 'Overlay']
|
1050
|
-
+ zIdx * 5 );
|
1051
|
-
},
|
1052
|
-
|
1053
|
-
/**
|
1054
|
-
* Method: resetLayersZIndex
|
1055
|
-
* Reset each layer's z-index based on layer's array index
|
1056
|
-
*/
|
1057
|
-
resetLayersZIndex: function() {
|
1058
|
-
for (var i=0, len=this.layers.length; i<len; i++) {
|
1059
|
-
var layer = this.layers[i];
|
1060
|
-
this.setLayerZIndex(layer, i);
|
1061
|
-
}
|
1062
|
-
},
|
1063
|
-
|
1064
|
-
/**
|
1065
|
-
* APIMethod: addLayer
|
1066
|
-
*
|
1067
|
-
* Parameters:
|
1068
|
-
* layer - {<OpenLayers.Layer>}
|
1069
|
-
*
|
1070
|
-
* Returns:
|
1071
|
-
* {Boolean} True if the layer has been added to the map.
|
1072
|
-
*/
|
1073
|
-
addLayer: function (layer) {
|
1074
|
-
for(var i = 0, len = this.layers.length; i < len; i++) {
|
1075
|
-
if (this.layers[i] == layer) {
|
1076
|
-
return false;
|
1077
|
-
}
|
1078
|
-
}
|
1079
|
-
if (this.events.triggerEvent("preaddlayer", {layer: layer}) === false) {
|
1080
|
-
return false;
|
1081
|
-
}
|
1082
|
-
if(this.allOverlays) {
|
1083
|
-
layer.isBaseLayer = false;
|
1084
|
-
}
|
1085
|
-
|
1086
|
-
layer.div.className = "olLayerDiv";
|
1087
|
-
layer.div.style.overflow = "";
|
1088
|
-
this.setLayerZIndex(layer, this.layers.length);
|
1089
|
-
|
1090
|
-
if (layer.isFixed) {
|
1091
|
-
this.viewPortDiv.appendChild(layer.div);
|
1092
|
-
} else {
|
1093
|
-
this.layerContainerDiv.appendChild(layer.div);
|
1094
|
-
}
|
1095
|
-
this.layers.push(layer);
|
1096
|
-
layer.setMap(this);
|
1097
|
-
|
1098
|
-
if (layer.isBaseLayer || (this.allOverlays && !this.baseLayer)) {
|
1099
|
-
if (this.baseLayer == null) {
|
1100
|
-
// set the first baselaye we add as the baselayer
|
1101
|
-
this.setBaseLayer(layer);
|
1102
|
-
} else {
|
1103
|
-
layer.setVisibility(false);
|
1104
|
-
}
|
1105
|
-
} else {
|
1106
|
-
layer.redraw();
|
1107
|
-
}
|
1108
|
-
|
1109
|
-
this.events.triggerEvent("addlayer", {layer: layer});
|
1110
|
-
layer.events.triggerEvent("added", {map: this, layer: layer});
|
1111
|
-
layer.afterAdd();
|
1112
|
-
|
1113
|
-
return true;
|
1114
|
-
},
|
1115
|
-
|
1116
|
-
/**
|
1117
|
-
* APIMethod: addLayers
|
1118
|
-
*
|
1119
|
-
* Parameters:
|
1120
|
-
* layers - {Array(<OpenLayers.Layer>)}
|
1121
|
-
*/
|
1122
|
-
addLayers: function (layers) {
|
1123
|
-
for (var i=0, len=layers.length; i<len; i++) {
|
1124
|
-
this.addLayer(layers[i]);
|
1125
|
-
}
|
1126
|
-
},
|
1127
|
-
|
1128
|
-
/**
|
1129
|
-
* APIMethod: removeLayer
|
1130
|
-
* Removes a layer from the map by removing its visual element (the
|
1131
|
-
* layer.div property), then removing it from the map's internal list
|
1132
|
-
* of layers, setting the layer's map property to null.
|
1133
|
-
*
|
1134
|
-
* a "removelayer" event is triggered.
|
1135
|
-
*
|
1136
|
-
* very worthy of mention is that simply removing a layer from a map
|
1137
|
-
* will not cause the removal of any popups which may have been created
|
1138
|
-
* by the layer. this is due to the fact that it was decided at some
|
1139
|
-
* point that popups would not belong to layers. thus there is no way
|
1140
|
-
* for us to know here to which layer the popup belongs.
|
1141
|
-
*
|
1142
|
-
* A simple solution to this is simply to call destroy() on the layer.
|
1143
|
-
* the default OpenLayers.Layer class's destroy() function
|
1144
|
-
* automatically takes care to remove itself from whatever map it has
|
1145
|
-
* been attached to.
|
1146
|
-
*
|
1147
|
-
* The correct solution is for the layer itself to register an
|
1148
|
-
* event-handler on "removelayer" and when it is called, if it
|
1149
|
-
* recognizes itself as the layer being removed, then it cycles through
|
1150
|
-
* its own personal list of popups, removing them from the map.
|
1151
|
-
*
|
1152
|
-
* Parameters:
|
1153
|
-
* layer - {<OpenLayers.Layer>}
|
1154
|
-
* setNewBaseLayer - {Boolean} Default is true
|
1155
|
-
*/
|
1156
|
-
removeLayer: function(layer, setNewBaseLayer) {
|
1157
|
-
if (this.events.triggerEvent("preremovelayer", {layer: layer}) === false) {
|
1158
|
-
return;
|
1159
|
-
}
|
1160
|
-
if (setNewBaseLayer == null) {
|
1161
|
-
setNewBaseLayer = true;
|
1162
|
-
}
|
1163
|
-
|
1164
|
-
if (layer.isFixed) {
|
1165
|
-
this.viewPortDiv.removeChild(layer.div);
|
1166
|
-
} else {
|
1167
|
-
this.layerContainerDiv.removeChild(layer.div);
|
1168
|
-
}
|
1169
|
-
OpenLayers.Util.removeItem(this.layers, layer);
|
1170
|
-
layer.removeMap(this);
|
1171
|
-
layer.map = null;
|
1172
|
-
|
1173
|
-
// if we removed the base layer, need to set a new one
|
1174
|
-
if(this.baseLayer == layer) {
|
1175
|
-
this.baseLayer = null;
|
1176
|
-
if(setNewBaseLayer) {
|
1177
|
-
for(var i=0, len=this.layers.length; i<len; i++) {
|
1178
|
-
var iLayer = this.layers[i];
|
1179
|
-
if (iLayer.isBaseLayer || this.allOverlays) {
|
1180
|
-
this.setBaseLayer(iLayer);
|
1181
|
-
break;
|
1182
|
-
}
|
1183
|
-
}
|
1184
|
-
}
|
1185
|
-
}
|
1186
|
-
|
1187
|
-
this.resetLayersZIndex();
|
1188
|
-
|
1189
|
-
this.events.triggerEvent("removelayer", {layer: layer});
|
1190
|
-
layer.events.triggerEvent("removed", {map: this, layer: layer});
|
1191
|
-
},
|
1192
|
-
|
1193
|
-
/**
|
1194
|
-
* APIMethod: getNumLayers
|
1195
|
-
*
|
1196
|
-
* Returns:
|
1197
|
-
* {Int} The number of layers attached to the map.
|
1198
|
-
*/
|
1199
|
-
getNumLayers: function () {
|
1200
|
-
return this.layers.length;
|
1201
|
-
},
|
1202
|
-
|
1203
|
-
/**
|
1204
|
-
* APIMethod: getLayerIndex
|
1205
|
-
*
|
1206
|
-
* Parameters:
|
1207
|
-
* layer - {<OpenLayers.Layer>}
|
1208
|
-
*
|
1209
|
-
* Returns:
|
1210
|
-
* {Integer} The current (zero-based) index of the given layer in the map's
|
1211
|
-
* layer stack. Returns -1 if the layer isn't on the map.
|
1212
|
-
*/
|
1213
|
-
getLayerIndex: function (layer) {
|
1214
|
-
return OpenLayers.Util.indexOf(this.layers, layer);
|
1215
|
-
},
|
1216
|
-
|
1217
|
-
/**
|
1218
|
-
* APIMethod: setLayerIndex
|
1219
|
-
* Move the given layer to the specified (zero-based) index in the layer
|
1220
|
-
* list, changing its z-index in the map display. Use
|
1221
|
-
* map.getLayerIndex() to find out the current index of a layer. Note
|
1222
|
-
* that this cannot (or at least should not) be effectively used to
|
1223
|
-
* raise base layers above overlays.
|
1224
|
-
*
|
1225
|
-
* Parameters:
|
1226
|
-
* layer - {<OpenLayers.Layer>}
|
1227
|
-
* idx - {int}
|
1228
|
-
*/
|
1229
|
-
setLayerIndex: function (layer, idx) {
|
1230
|
-
var base = this.getLayerIndex(layer);
|
1231
|
-
if (idx < 0) {
|
1232
|
-
idx = 0;
|
1233
|
-
} else if (idx > this.layers.length) {
|
1234
|
-
idx = this.layers.length;
|
1235
|
-
}
|
1236
|
-
if (base != idx) {
|
1237
|
-
this.layers.splice(base, 1);
|
1238
|
-
this.layers.splice(idx, 0, layer);
|
1239
|
-
for (var i=0, len=this.layers.length; i<len; i++) {
|
1240
|
-
this.setLayerZIndex(this.layers[i], i);
|
1241
|
-
}
|
1242
|
-
this.events.triggerEvent("changelayer", {
|
1243
|
-
layer: layer, property: "order"
|
1244
|
-
});
|
1245
|
-
if(this.allOverlays) {
|
1246
|
-
if(idx === 0) {
|
1247
|
-
this.setBaseLayer(layer);
|
1248
|
-
} else if(this.baseLayer !== this.layers[0]) {
|
1249
|
-
this.setBaseLayer(this.layers[0]);
|
1250
|
-
}
|
1251
|
-
}
|
1252
|
-
}
|
1253
|
-
},
|
1254
|
-
|
1255
|
-
/**
|
1256
|
-
* APIMethod: raiseLayer
|
1257
|
-
* Change the index of the given layer by delta. If delta is positive,
|
1258
|
-
* the layer is moved up the map's layer stack; if delta is negative,
|
1259
|
-
* the layer is moved down. Again, note that this cannot (or at least
|
1260
|
-
* should not) be effectively used to raise base layers above overlays.
|
1261
|
-
*
|
1262
|
-
* Paremeters:
|
1263
|
-
* layer - {<OpenLayers.Layer>}
|
1264
|
-
* delta - {int}
|
1265
|
-
*/
|
1266
|
-
raiseLayer: function (layer, delta) {
|
1267
|
-
var idx = this.getLayerIndex(layer) + delta;
|
1268
|
-
this.setLayerIndex(layer, idx);
|
1269
|
-
},
|
1270
|
-
|
1271
|
-
/**
|
1272
|
-
* APIMethod: setBaseLayer
|
1273
|
-
* Allows user to specify one of the currently-loaded layers as the Map's
|
1274
|
-
* new base layer.
|
1275
|
-
*
|
1276
|
-
* Parameters:
|
1277
|
-
* newBaseLayer - {<OpenLayers.Layer>}
|
1278
|
-
*/
|
1279
|
-
setBaseLayer: function(newBaseLayer) {
|
1280
|
-
|
1281
|
-
if (newBaseLayer != this.baseLayer) {
|
1282
|
-
|
1283
|
-
// ensure newBaseLayer is already loaded
|
1284
|
-
if (OpenLayers.Util.indexOf(this.layers, newBaseLayer) != -1) {
|
1285
|
-
|
1286
|
-
// preserve center and scale when changing base layers
|
1287
|
-
var center = this.getCachedCenter();
|
1288
|
-
var newResolution = OpenLayers.Util.getResolutionFromScale(
|
1289
|
-
this.getScale(), newBaseLayer.units
|
1290
|
-
);
|
1291
|
-
|
1292
|
-
// make the old base layer invisible
|
1293
|
-
if (this.baseLayer != null && !this.allOverlays) {
|
1294
|
-
this.baseLayer.setVisibility(false);
|
1295
|
-
}
|
1296
|
-
|
1297
|
-
// set new baselayer
|
1298
|
-
this.baseLayer = newBaseLayer;
|
1299
|
-
|
1300
|
-
if(!this.allOverlays || this.baseLayer.visibility) {
|
1301
|
-
this.baseLayer.setVisibility(true);
|
1302
|
-
// Layer may previously have been visible but not in range.
|
1303
|
-
// In this case we need to redraw it to make it visible.
|
1304
|
-
if (this.baseLayer.inRange === false) {
|
1305
|
-
this.baseLayer.redraw();
|
1306
|
-
}
|
1307
|
-
}
|
1308
|
-
|
1309
|
-
// recenter the map
|
1310
|
-
if (center != null) {
|
1311
|
-
// new zoom level derived from old scale
|
1312
|
-
var newZoom = this.getZoomForResolution(
|
1313
|
-
newResolution || this.resolution, true
|
1314
|
-
);
|
1315
|
-
// zoom and force zoom change
|
1316
|
-
this.setCenter(center, newZoom, false, true);
|
1317
|
-
}
|
1318
|
-
|
1319
|
-
this.events.triggerEvent("changebaselayer", {
|
1320
|
-
layer: this.baseLayer
|
1321
|
-
});
|
1322
|
-
}
|
1323
|
-
}
|
1324
|
-
},
|
1325
|
-
|
1326
|
-
|
1327
|
-
/********************************************************/
|
1328
|
-
/* */
|
1329
|
-
/* Control Functions */
|
1330
|
-
/* */
|
1331
|
-
/* The following functions deal with adding and */
|
1332
|
-
/* removing Controls to and from the Map */
|
1333
|
-
/* */
|
1334
|
-
/********************************************************/
|
1335
|
-
|
1336
|
-
/**
|
1337
|
-
* APIMethod: addControl
|
1338
|
-
* Add the passed over control to the map. Optionally
|
1339
|
-
* position the control at the given pixel.
|
1340
|
-
*
|
1341
|
-
* Parameters:
|
1342
|
-
* control - {<OpenLayers.Control>}
|
1343
|
-
* px - {<OpenLayers.Pixel>}
|
1344
|
-
*/
|
1345
|
-
addControl: function (control, px) {
|
1346
|
-
this.controls.push(control);
|
1347
|
-
this.addControlToMap(control, px);
|
1348
|
-
},
|
1349
|
-
|
1350
|
-
/**
|
1351
|
-
* APIMethod: addControls
|
1352
|
-
* Add all of the passed over controls to the map.
|
1353
|
-
* You can pass over an optional second array
|
1354
|
-
* with pixel-objects to position the controls.
|
1355
|
-
* The indices of the two arrays should match and
|
1356
|
-
* you can add null as pixel for those controls
|
1357
|
-
* you want to be autopositioned.
|
1358
|
-
*
|
1359
|
-
* Parameters:
|
1360
|
-
* controls - {Array(<OpenLayers.Control>)}
|
1361
|
-
* pixels - {Array(<OpenLayers.Pixel>)}
|
1362
|
-
*/
|
1363
|
-
addControls: function (controls, pixels) {
|
1364
|
-
var pxs = (arguments.length === 1) ? [] : pixels;
|
1365
|
-
for (var i=0, len=controls.length; i<len; i++) {
|
1366
|
-
var ctrl = controls[i];
|
1367
|
-
var px = (pxs[i]) ? pxs[i] : null;
|
1368
|
-
this.addControl( ctrl, px );
|
1369
|
-
}
|
1370
|
-
},
|
1371
|
-
|
1372
|
-
/**
|
1373
|
-
* Method: addControlToMap
|
1374
|
-
*
|
1375
|
-
* Parameters:
|
1376
|
-
*
|
1377
|
-
* control - {<OpenLayers.Control>}
|
1378
|
-
* px - {<OpenLayers.Pixel>}
|
1379
|
-
*/
|
1380
|
-
addControlToMap: function (control, px) {
|
1381
|
-
// If a control doesn't have a div at this point, it belongs in the
|
1382
|
-
// viewport.
|
1383
|
-
control.outsideViewport = (control.div != null);
|
1384
|
-
|
1385
|
-
// If the map has a displayProjection, and the control doesn't, set
|
1386
|
-
// the display projection.
|
1387
|
-
if (this.displayProjection && !control.displayProjection) {
|
1388
|
-
control.displayProjection = this.displayProjection;
|
1389
|
-
}
|
1390
|
-
|
1391
|
-
control.setMap(this);
|
1392
|
-
var div = control.draw(px);
|
1393
|
-
if (div) {
|
1394
|
-
if(!control.outsideViewport) {
|
1395
|
-
div.style.zIndex = this.Z_INDEX_BASE['Control'] +
|
1396
|
-
this.controls.length;
|
1397
|
-
this.viewPortDiv.appendChild( div );
|
1398
|
-
}
|
1399
|
-
}
|
1400
|
-
if(control.autoActivate) {
|
1401
|
-
control.activate();
|
1402
|
-
}
|
1403
|
-
},
|
1404
|
-
|
1405
|
-
/**
|
1406
|
-
* APIMethod: getControl
|
1407
|
-
*
|
1408
|
-
* Parameters:
|
1409
|
-
* id - {String} ID of the control to return.
|
1410
|
-
*
|
1411
|
-
* Returns:
|
1412
|
-
* {<OpenLayers.Control>} The control from the map's list of controls
|
1413
|
-
* which has a matching 'id'. If none found,
|
1414
|
-
* returns null.
|
1415
|
-
*/
|
1416
|
-
getControl: function (id) {
|
1417
|
-
var returnControl = null;
|
1418
|
-
for(var i=0, len=this.controls.length; i<len; i++) {
|
1419
|
-
var control = this.controls[i];
|
1420
|
-
if (control.id == id) {
|
1421
|
-
returnControl = control;
|
1422
|
-
break;
|
1423
|
-
}
|
1424
|
-
}
|
1425
|
-
return returnControl;
|
1426
|
-
},
|
1427
|
-
|
1428
|
-
/**
|
1429
|
-
* APIMethod: removeControl
|
1430
|
-
* Remove a control from the map. Removes the control both from the map
|
1431
|
-
* object's internal array of controls, as well as from the map's
|
1432
|
-
* viewPort (assuming the control was not added outsideViewport)
|
1433
|
-
*
|
1434
|
-
* Parameters:
|
1435
|
-
* control - {<OpenLayers.Control>} The control to remove.
|
1436
|
-
*/
|
1437
|
-
removeControl: function (control) {
|
1438
|
-
//make sure control is non-null and actually part of our map
|
1439
|
-
if ( (control) && (control == this.getControl(control.id)) ) {
|
1440
|
-
if (control.div && (control.div.parentNode == this.viewPortDiv)) {
|
1441
|
-
this.viewPortDiv.removeChild(control.div);
|
1442
|
-
}
|
1443
|
-
OpenLayers.Util.removeItem(this.controls, control);
|
1444
|
-
}
|
1445
|
-
},
|
1446
|
-
|
1447
|
-
/********************************************************/
|
1448
|
-
/* */
|
1449
|
-
/* Popup Functions */
|
1450
|
-
/* */
|
1451
|
-
/* The following functions deal with adding and */
|
1452
|
-
/* removing Popups to and from the Map */
|
1453
|
-
/* */
|
1454
|
-
/********************************************************/
|
1455
|
-
|
1456
|
-
/**
|
1457
|
-
* APIMethod: addPopup
|
1458
|
-
*
|
1459
|
-
* Parameters:
|
1460
|
-
* popup - {<OpenLayers.Popup>}
|
1461
|
-
* exclusive - {Boolean} If true, closes all other popups first
|
1462
|
-
*/
|
1463
|
-
addPopup: function(popup, exclusive) {
|
1464
|
-
|
1465
|
-
if (exclusive) {
|
1466
|
-
//remove all other popups from screen
|
1467
|
-
for (var i = this.popups.length - 1; i >= 0; --i) {
|
1468
|
-
this.removePopup(this.popups[i]);
|
1469
|
-
}
|
1470
|
-
}
|
1471
|
-
|
1472
|
-
popup.map = this;
|
1473
|
-
this.popups.push(popup);
|
1474
|
-
var popupDiv = popup.draw();
|
1475
|
-
if (popupDiv) {
|
1476
|
-
popupDiv.style.zIndex = this.Z_INDEX_BASE['Popup'] +
|
1477
|
-
this.popups.length;
|
1478
|
-
this.layerContainerDiv.appendChild(popupDiv);
|
1479
|
-
}
|
1480
|
-
},
|
1481
|
-
|
1482
|
-
/**
|
1483
|
-
* APIMethod: removePopup
|
1484
|
-
*
|
1485
|
-
* Parameters:
|
1486
|
-
* popup - {<OpenLayers.Popup>}
|
1487
|
-
*/
|
1488
|
-
removePopup: function(popup) {
|
1489
|
-
OpenLayers.Util.removeItem(this.popups, popup);
|
1490
|
-
if (popup.div) {
|
1491
|
-
try { this.layerContainerDiv.removeChild(popup.div); }
|
1492
|
-
catch (e) { } // Popups sometimes apparently get disconnected
|
1493
|
-
// from the layerContainerDiv, and cause complaints.
|
1494
|
-
}
|
1495
|
-
popup.map = null;
|
1496
|
-
},
|
1497
|
-
|
1498
|
-
/********************************************************/
|
1499
|
-
/* */
|
1500
|
-
/* Container Div Functions */
|
1501
|
-
/* */
|
1502
|
-
/* The following functions deal with the access to */
|
1503
|
-
/* and maintenance of the size of the container div */
|
1504
|
-
/* */
|
1505
|
-
/********************************************************/
|
1506
|
-
|
1507
|
-
/**
|
1508
|
-
* APIMethod: getSize
|
1509
|
-
*
|
1510
|
-
* Returns:
|
1511
|
-
* {<OpenLayers.Size>} An <OpenLayers.Size> object that represents the
|
1512
|
-
* size, in pixels, of the div into which OpenLayers
|
1513
|
-
* has been loaded.
|
1514
|
-
* Note - A clone() of this locally cached variable is
|
1515
|
-
* returned, so as not to allow users to modify it.
|
1516
|
-
*/
|
1517
|
-
getSize: function () {
|
1518
|
-
var size = null;
|
1519
|
-
if (this.size != null) {
|
1520
|
-
size = this.size.clone();
|
1521
|
-
}
|
1522
|
-
return size;
|
1523
|
-
},
|
1524
|
-
|
1525
|
-
/**
|
1526
|
-
* APIMethod: updateSize
|
1527
|
-
* This function should be called by any external code which dynamically
|
1528
|
-
* changes the size of the map div (because mozilla wont let us catch
|
1529
|
-
* the "onresize" for an element)
|
1530
|
-
*/
|
1531
|
-
updateSize: function() {
|
1532
|
-
// the div might have moved on the page, also
|
1533
|
-
var newSize = this.getCurrentSize();
|
1534
|
-
if (newSize && !isNaN(newSize.h) && !isNaN(newSize.w)) {
|
1535
|
-
this.events.clearMouseCache();
|
1536
|
-
var oldSize = this.getSize();
|
1537
|
-
if (oldSize == null) {
|
1538
|
-
this.size = oldSize = newSize;
|
1539
|
-
}
|
1540
|
-
if (!newSize.equals(oldSize)) {
|
1541
|
-
|
1542
|
-
// store the new size
|
1543
|
-
this.size = newSize;
|
1544
|
-
|
1545
|
-
//notify layers of mapresize
|
1546
|
-
for(var i=0, len=this.layers.length; i<len; i++) {
|
1547
|
-
this.layers[i].onMapResize();
|
1548
|
-
}
|
1549
|
-
|
1550
|
-
var center = this.getCachedCenter();
|
1551
|
-
|
1552
|
-
if (this.baseLayer != null && center != null) {
|
1553
|
-
var zoom = this.getZoom();
|
1554
|
-
this.zoom = null;
|
1555
|
-
this.setCenter(center, zoom);
|
1556
|
-
}
|
1557
|
-
|
1558
|
-
}
|
1559
|
-
}
|
1560
|
-
this.events.triggerEvent("updatesize");
|
1561
|
-
},
|
1562
|
-
|
1563
|
-
/**
|
1564
|
-
* Method: getCurrentSize
|
1565
|
-
*
|
1566
|
-
* Returns:
|
1567
|
-
* {<OpenLayers.Size>} A new <OpenLayers.Size> object with the dimensions
|
1568
|
-
* of the map div
|
1569
|
-
*/
|
1570
|
-
getCurrentSize: function() {
|
1571
|
-
|
1572
|
-
var size = new OpenLayers.Size(this.div.clientWidth,
|
1573
|
-
this.div.clientHeight);
|
1574
|
-
|
1575
|
-
if (size.w == 0 && size.h == 0 || isNaN(size.w) && isNaN(size.h)) {
|
1576
|
-
size.w = this.div.offsetWidth;
|
1577
|
-
size.h = this.div.offsetHeight;
|
1578
|
-
}
|
1579
|
-
if (size.w == 0 && size.h == 0 || isNaN(size.w) && isNaN(size.h)) {
|
1580
|
-
size.w = parseInt(this.div.style.width);
|
1581
|
-
size.h = parseInt(this.div.style.height);
|
1582
|
-
}
|
1583
|
-
return size;
|
1584
|
-
},
|
1585
|
-
|
1586
|
-
/**
|
1587
|
-
* Method: calculateBounds
|
1588
|
-
*
|
1589
|
-
* Parameters:
|
1590
|
-
* center - {<OpenLayers.LonLat>} Default is this.getCenter()
|
1591
|
-
* resolution - {float} Default is this.getResolution()
|
1592
|
-
*
|
1593
|
-
* Returns:
|
1594
|
-
* {<OpenLayers.Bounds>} A bounds based on resolution, center, and
|
1595
|
-
* current mapsize.
|
1596
|
-
*/
|
1597
|
-
calculateBounds: function(center, resolution) {
|
1598
|
-
|
1599
|
-
var extent = null;
|
1600
|
-
|
1601
|
-
if (center == null) {
|
1602
|
-
center = this.getCachedCenter();
|
1603
|
-
}
|
1604
|
-
if (resolution == null) {
|
1605
|
-
resolution = this.getResolution();
|
1606
|
-
}
|
1607
|
-
|
1608
|
-
if ((center != null) && (resolution != null)) {
|
1609
|
-
var halfWDeg = (this.size.w * resolution) / 2;
|
1610
|
-
var halfHDeg = (this.size.h * resolution) / 2;
|
1611
|
-
|
1612
|
-
extent = new OpenLayers.Bounds(center.lon - halfWDeg,
|
1613
|
-
center.lat - halfHDeg,
|
1614
|
-
center.lon + halfWDeg,
|
1615
|
-
center.lat + halfHDeg);
|
1616
|
-
}
|
1617
|
-
|
1618
|
-
return extent;
|
1619
|
-
},
|
1620
|
-
|
1621
|
-
|
1622
|
-
/********************************************************/
|
1623
|
-
/* */
|
1624
|
-
/* Zoom, Center, Pan Functions */
|
1625
|
-
/* */
|
1626
|
-
/* The following functions handle the validation, */
|
1627
|
-
/* getting and setting of the Zoom Level and Center */
|
1628
|
-
/* as well as the panning of the Map */
|
1629
|
-
/* */
|
1630
|
-
/********************************************************/
|
1631
|
-
/**
|
1632
|
-
* APIMethod: getCenter
|
1633
|
-
*
|
1634
|
-
* Returns:
|
1635
|
-
* {<OpenLayers.LonLat>}
|
1636
|
-
*/
|
1637
|
-
getCenter: function () {
|
1638
|
-
var center = null;
|
1639
|
-
var cachedCenter = this.getCachedCenter();
|
1640
|
-
if (cachedCenter) {
|
1641
|
-
center = cachedCenter.clone();
|
1642
|
-
}
|
1643
|
-
return center;
|
1644
|
-
},
|
1645
|
-
|
1646
|
-
/**
|
1647
|
-
* Method: getCachedCenter
|
1648
|
-
*
|
1649
|
-
* Returns:
|
1650
|
-
* {<OpenLayers.LonLat>}
|
1651
|
-
*/
|
1652
|
-
getCachedCenter: function() {
|
1653
|
-
if (!this.center && this.size) {
|
1654
|
-
this.center = this.getLonLatFromViewPortPx({
|
1655
|
-
x: this.size.w / 2,
|
1656
|
-
y: this.size.h / 2
|
1657
|
-
});
|
1658
|
-
}
|
1659
|
-
return this.center;
|
1660
|
-
},
|
1661
|
-
|
1662
|
-
/**
|
1663
|
-
* APIMethod: getZoom
|
1664
|
-
*
|
1665
|
-
* Returns:
|
1666
|
-
* {Integer}
|
1667
|
-
*/
|
1668
|
-
getZoom: function () {
|
1669
|
-
return this.zoom;
|
1670
|
-
},
|
1671
|
-
|
1672
|
-
/**
|
1673
|
-
* APIMethod: pan
|
1674
|
-
* Allows user to pan by a value of screen pixels
|
1675
|
-
*
|
1676
|
-
* Parameters:
|
1677
|
-
* dx - {Integer}
|
1678
|
-
* dy - {Integer}
|
1679
|
-
* options - {Object} Options to configure panning:
|
1680
|
-
* - *animate* {Boolean} Use panTo instead of setCenter. Default is true.
|
1681
|
-
* - *dragging* {Boolean} Call setCenter with dragging true. Default is
|
1682
|
-
* false.
|
1683
|
-
*/
|
1684
|
-
pan: function(dx, dy, options) {
|
1685
|
-
options = OpenLayers.Util.applyDefaults(options, {
|
1686
|
-
animate: true,
|
1687
|
-
dragging: false
|
1688
|
-
});
|
1689
|
-
if (options.dragging) {
|
1690
|
-
if (dx != 0 || dy != 0) {
|
1691
|
-
this.moveByPx(dx, dy);
|
1692
|
-
}
|
1693
|
-
} else {
|
1694
|
-
// getCenter
|
1695
|
-
var centerPx = this.getViewPortPxFromLonLat(this.getCachedCenter());
|
1696
|
-
|
1697
|
-
// adjust
|
1698
|
-
var newCenterPx = centerPx.add(dx, dy);
|
1699
|
-
|
1700
|
-
if (this.dragging || !newCenterPx.equals(centerPx)) {
|
1701
|
-
var newCenterLonLat = this.getLonLatFromViewPortPx(newCenterPx);
|
1702
|
-
if (options.animate) {
|
1703
|
-
this.panTo(newCenterLonLat);
|
1704
|
-
} else {
|
1705
|
-
this.moveTo(newCenterLonLat);
|
1706
|
-
if(this.dragging) {
|
1707
|
-
this.dragging = false;
|
1708
|
-
this.events.triggerEvent("moveend");
|
1709
|
-
}
|
1710
|
-
}
|
1711
|
-
}
|
1712
|
-
}
|
1713
|
-
|
1714
|
-
},
|
1715
|
-
|
1716
|
-
/**
|
1717
|
-
* APIMethod: panTo
|
1718
|
-
* Allows user to pan to a new lonlat
|
1719
|
-
* If the new lonlat is in the current extent the map will slide smoothly
|
1720
|
-
*
|
1721
|
-
* Parameters:
|
1722
|
-
* lonlat - {<OpenLayers.LonLat>}
|
1723
|
-
*/
|
1724
|
-
panTo: function(lonlat) {
|
1725
|
-
if (this.panTween && this.getExtent().scale(this.panRatio).containsLonLat(lonlat)) {
|
1726
|
-
var center = this.getCachedCenter();
|
1727
|
-
|
1728
|
-
// center will not change, don't do nothing
|
1729
|
-
if (lonlat.equals(center)) {
|
1730
|
-
return;
|
1731
|
-
}
|
1732
|
-
|
1733
|
-
var from = this.getPixelFromLonLat(center);
|
1734
|
-
var to = this.getPixelFromLonLat(lonlat);
|
1735
|
-
var vector = { x: to.x - from.x, y: to.y - from.y };
|
1736
|
-
var last = { x: 0, y: 0 };
|
1737
|
-
|
1738
|
-
this.panTween.start( { x: 0, y: 0 }, vector, this.panDuration, {
|
1739
|
-
callbacks: {
|
1740
|
-
eachStep: OpenLayers.Function.bind(function(px) {
|
1741
|
-
var x = px.x - last.x,
|
1742
|
-
y = px.y - last.y;
|
1743
|
-
this.moveByPx(x, y);
|
1744
|
-
last.x = Math.round(px.x);
|
1745
|
-
last.y = Math.round(px.y);
|
1746
|
-
}, this),
|
1747
|
-
done: OpenLayers.Function.bind(function(px) {
|
1748
|
-
this.moveTo(lonlat);
|
1749
|
-
this.dragging = false;
|
1750
|
-
this.events.triggerEvent("moveend");
|
1751
|
-
}, this)
|
1752
|
-
}
|
1753
|
-
});
|
1754
|
-
} else {
|
1755
|
-
this.setCenter(lonlat);
|
1756
|
-
}
|
1757
|
-
},
|
1758
|
-
|
1759
|
-
/**
|
1760
|
-
* APIMethod: setCenter
|
1761
|
-
* Set the map center (and optionally, the zoom level).
|
1762
|
-
*
|
1763
|
-
* Parameters:
|
1764
|
-
* lonlat - {<OpenLayers.LonLat>|Array} The new center location.
|
1765
|
-
* If provided as array, the first value is the x coordinate,
|
1766
|
-
* and the 2nd value is the y coordinate.
|
1767
|
-
* zoom - {Integer} Optional zoom level.
|
1768
|
-
* dragging - {Boolean} Specifies whether or not to trigger
|
1769
|
-
* movestart/end events
|
1770
|
-
* forceZoomChange - {Boolean} Specifies whether or not to trigger zoom
|
1771
|
-
* change events (needed on baseLayer change)
|
1772
|
-
*
|
1773
|
-
* TBD: reconsider forceZoomChange in 3.0
|
1774
|
-
*/
|
1775
|
-
setCenter: function(lonlat, zoom, dragging, forceZoomChange) {
|
1776
|
-
if (this.panTween) {
|
1777
|
-
this.panTween.stop();
|
1778
|
-
}
|
1779
|
-
if (this.zoomTween) {
|
1780
|
-
this.zoomTween.stop();
|
1781
|
-
}
|
1782
|
-
this.moveTo(lonlat, zoom, {
|
1783
|
-
'dragging': dragging,
|
1784
|
-
'forceZoomChange': forceZoomChange
|
1785
|
-
});
|
1786
|
-
},
|
1787
|
-
|
1788
|
-
/**
|
1789
|
-
* Method: moveByPx
|
1790
|
-
* Drag the map by pixels.
|
1791
|
-
*
|
1792
|
-
* Parameters:
|
1793
|
-
* dx - {Number}
|
1794
|
-
* dy - {Number}
|
1795
|
-
*/
|
1796
|
-
moveByPx: function(dx, dy) {
|
1797
|
-
var hw = this.size.w / 2;
|
1798
|
-
var hh = this.size.h / 2;
|
1799
|
-
var x = hw + dx;
|
1800
|
-
var y = hh + dy;
|
1801
|
-
var wrapDateLine = this.baseLayer.wrapDateLine;
|
1802
|
-
var xRestriction = 0;
|
1803
|
-
var yRestriction = 0;
|
1804
|
-
if (this.restrictedExtent) {
|
1805
|
-
xRestriction = hw;
|
1806
|
-
yRestriction = hh;
|
1807
|
-
// wrapping the date line makes no sense for restricted extents
|
1808
|
-
wrapDateLine = false;
|
1809
|
-
}
|
1810
|
-
dx = wrapDateLine ||
|
1811
|
-
x <= this.maxPx.x - xRestriction &&
|
1812
|
-
x >= this.minPx.x + xRestriction ? Math.round(dx) : 0;
|
1813
|
-
dy = y <= this.maxPx.y - yRestriction &&
|
1814
|
-
y >= this.minPx.y + yRestriction ? Math.round(dy) : 0;
|
1815
|
-
if (dx || dy) {
|
1816
|
-
if (!this.dragging) {
|
1817
|
-
this.dragging = true;
|
1818
|
-
this.events.triggerEvent("movestart");
|
1819
|
-
}
|
1820
|
-
this.center = null;
|
1821
|
-
if (dx) {
|
1822
|
-
this.layerContainerOriginPx.x -= dx;
|
1823
|
-
this.minPx.x -= dx;
|
1824
|
-
this.maxPx.x -= dx;
|
1825
|
-
}
|
1826
|
-
if (dy) {
|
1827
|
-
this.layerContainerOriginPx.y -= dy;
|
1828
|
-
this.minPx.y -= dy;
|
1829
|
-
this.maxPx.y -= dy;
|
1830
|
-
}
|
1831
|
-
this.applyTransform();
|
1832
|
-
var layer, i, len;
|
1833
|
-
for (i=0, len=this.layers.length; i<len; ++i) {
|
1834
|
-
layer = this.layers[i];
|
1835
|
-
if (layer.visibility &&
|
1836
|
-
(layer === this.baseLayer || layer.inRange)) {
|
1837
|
-
layer.moveByPx(dx, dy);
|
1838
|
-
layer.events.triggerEvent("move");
|
1839
|
-
}
|
1840
|
-
}
|
1841
|
-
this.events.triggerEvent("move");
|
1842
|
-
}
|
1843
|
-
},
|
1844
|
-
|
1845
|
-
/**
|
1846
|
-
* Method: adjustZoom
|
1847
|
-
*
|
1848
|
-
* Parameters:
|
1849
|
-
* zoom - {Number} The zoom level to adjust
|
1850
|
-
*
|
1851
|
-
* Returns:
|
1852
|
-
* {Integer} Adjusted zoom level that shows a map not wider than its
|
1853
|
-
* <baseLayer>'s maxExtent.
|
1854
|
-
*/
|
1855
|
-
adjustZoom: function(zoom) {
|
1856
|
-
if (this.baseLayer && this.baseLayer.wrapDateLine) {
|
1857
|
-
var resolution, resolutions = this.baseLayer.resolutions,
|
1858
|
-
maxResolution = this.getMaxExtent().getWidth() / this.size.w;
|
1859
|
-
if (this.getResolutionForZoom(zoom) > maxResolution) {
|
1860
|
-
if (this.fractionalZoom) {
|
1861
|
-
zoom = this.getZoomForResolution(maxResolution);
|
1862
|
-
} else {
|
1863
|
-
for (var i=zoom|0, ii=resolutions.length; i<ii; ++i) {
|
1864
|
-
if (resolutions[i] <= maxResolution) {
|
1865
|
-
zoom = i;
|
1866
|
-
break;
|
1867
|
-
}
|
1868
|
-
}
|
1869
|
-
}
|
1870
|
-
}
|
1871
|
-
}
|
1872
|
-
return zoom;
|
1873
|
-
},
|
1874
|
-
|
1875
|
-
/**
|
1876
|
-
* APIMethod: getMinZoom
|
1877
|
-
* Returns the minimum zoom level for the current map view. If the base
|
1878
|
-
* layer is configured with <wrapDateLine> set to true, this will be the
|
1879
|
-
* first zoom level that shows no more than one world width in the current
|
1880
|
-
* map viewport. Components that rely on this value (e.g. zoom sliders)
|
1881
|
-
* should also listen to the map's "updatesize" event and call this method
|
1882
|
-
* in the "updatesize" listener.
|
1883
|
-
*
|
1884
|
-
* Returns:
|
1885
|
-
* {Number} Minimum zoom level that shows a map not wider than its
|
1886
|
-
* <baseLayer>'s maxExtent. This is an Integer value, unless the map is
|
1887
|
-
* configured with <fractionalZoom> set to true.
|
1888
|
-
*/
|
1889
|
-
getMinZoom: function() {
|
1890
|
-
return this.adjustZoom(0);
|
1891
|
-
},
|
1892
|
-
|
1893
|
-
/**
|
1894
|
-
* Method: moveTo
|
1895
|
-
*
|
1896
|
-
* Parameters:
|
1897
|
-
* lonlat - {<OpenLayers.LonLat>}
|
1898
|
-
* zoom - {Integer}
|
1899
|
-
* options - {Object}
|
1900
|
-
*/
|
1901
|
-
moveTo: function(lonlat, zoom, options) {
|
1902
|
-
if (lonlat != null && !(lonlat instanceof OpenLayers.LonLat)) {
|
1903
|
-
lonlat = new OpenLayers.LonLat(lonlat);
|
1904
|
-
}
|
1905
|
-
if (!options) {
|
1906
|
-
options = {};
|
1907
|
-
}
|
1908
|
-
if (zoom != null) {
|
1909
|
-
zoom = parseFloat(zoom);
|
1910
|
-
if (!this.fractionalZoom) {
|
1911
|
-
zoom = Math.round(zoom);
|
1912
|
-
}
|
1913
|
-
}
|
1914
|
-
var requestedZoom = zoom;
|
1915
|
-
zoom = this.adjustZoom(zoom);
|
1916
|
-
if (zoom !== requestedZoom) {
|
1917
|
-
// zoom was adjusted, so keep old lonlat to avoid panning
|
1918
|
-
lonlat = this.getCenter();
|
1919
|
-
}
|
1920
|
-
// dragging is false by default
|
1921
|
-
var dragging = options.dragging || this.dragging;
|
1922
|
-
// forceZoomChange is false by default
|
1923
|
-
var forceZoomChange = options.forceZoomChange;
|
1924
|
-
|
1925
|
-
if (!this.getCachedCenter() && !this.isValidLonLat(lonlat)) {
|
1926
|
-
lonlat = this.maxExtent.getCenterLonLat();
|
1927
|
-
this.center = lonlat.clone();
|
1928
|
-
}
|
1929
|
-
|
1930
|
-
if(this.restrictedExtent != null) {
|
1931
|
-
// In 3.0, decide if we want to change interpretation of maxExtent.
|
1932
|
-
if(lonlat == null) {
|
1933
|
-
lonlat = this.center;
|
1934
|
-
}
|
1935
|
-
if(zoom == null) {
|
1936
|
-
zoom = this.getZoom();
|
1937
|
-
}
|
1938
|
-
var resolution = this.getResolutionForZoom(zoom);
|
1939
|
-
var extent = this.calculateBounds(lonlat, resolution);
|
1940
|
-
if(!this.restrictedExtent.containsBounds(extent)) {
|
1941
|
-
var maxCenter = this.restrictedExtent.getCenterLonLat();
|
1942
|
-
if(extent.getWidth() > this.restrictedExtent.getWidth()) {
|
1943
|
-
lonlat = new OpenLayers.LonLat(maxCenter.lon, lonlat.lat);
|
1944
|
-
} else if(extent.left < this.restrictedExtent.left) {
|
1945
|
-
lonlat = lonlat.add(this.restrictedExtent.left -
|
1946
|
-
extent.left, 0);
|
1947
|
-
} else if(extent.right > this.restrictedExtent.right) {
|
1948
|
-
lonlat = lonlat.add(this.restrictedExtent.right -
|
1949
|
-
extent.right, 0);
|
1950
|
-
}
|
1951
|
-
if(extent.getHeight() > this.restrictedExtent.getHeight()) {
|
1952
|
-
lonlat = new OpenLayers.LonLat(lonlat.lon, maxCenter.lat);
|
1953
|
-
} else if(extent.bottom < this.restrictedExtent.bottom) {
|
1954
|
-
lonlat = lonlat.add(0, this.restrictedExtent.bottom -
|
1955
|
-
extent.bottom);
|
1956
|
-
}
|
1957
|
-
else if(extent.top > this.restrictedExtent.top) {
|
1958
|
-
lonlat = lonlat.add(0, this.restrictedExtent.top -
|
1959
|
-
extent.top);
|
1960
|
-
}
|
1961
|
-
}
|
1962
|
-
}
|
1963
|
-
|
1964
|
-
var zoomChanged = forceZoomChange || (
|
1965
|
-
(this.isValidZoomLevel(zoom)) &&
|
1966
|
-
(zoom != this.getZoom()) );
|
1967
|
-
|
1968
|
-
var centerChanged = (this.isValidLonLat(lonlat)) &&
|
1969
|
-
(!lonlat.equals(this.center));
|
1970
|
-
|
1971
|
-
// if neither center nor zoom will change, no need to do anything
|
1972
|
-
if (zoomChanged || centerChanged || dragging) {
|
1973
|
-
dragging || this.events.triggerEvent("movestart", {
|
1974
|
-
zoomChanged: zoomChanged
|
1975
|
-
});
|
1976
|
-
|
1977
|
-
if (centerChanged) {
|
1978
|
-
if (!zoomChanged && this.center) {
|
1979
|
-
// if zoom hasnt changed, just slide layerContainer
|
1980
|
-
// (must be done before setting this.center to new value)
|
1981
|
-
this.centerLayerContainer(lonlat);
|
1982
|
-
}
|
1983
|
-
this.center = lonlat.clone();
|
1984
|
-
}
|
1985
|
-
|
1986
|
-
var res = zoomChanged ?
|
1987
|
-
this.getResolutionForZoom(zoom) : this.getResolution();
|
1988
|
-
// (re)set the layerContainerDiv's location
|
1989
|
-
if (zoomChanged || this.layerContainerOrigin == null) {
|
1990
|
-
this.layerContainerOrigin = this.getCachedCenter();
|
1991
|
-
this.layerContainerOriginPx.x = 0;
|
1992
|
-
this.layerContainerOriginPx.y = 0;
|
1993
|
-
this.applyTransform();
|
1994
|
-
var maxExtent = this.getMaxExtent({restricted: true});
|
1995
|
-
var maxExtentCenter = maxExtent.getCenterLonLat();
|
1996
|
-
var lonDelta = this.center.lon - maxExtentCenter.lon;
|
1997
|
-
var latDelta = maxExtentCenter.lat - this.center.lat;
|
1998
|
-
var extentWidth = Math.round(maxExtent.getWidth() / res);
|
1999
|
-
var extentHeight = Math.round(maxExtent.getHeight() / res);
|
2000
|
-
this.minPx = {
|
2001
|
-
x: (this.size.w - extentWidth) / 2 - lonDelta / res,
|
2002
|
-
y: (this.size.h - extentHeight) / 2 - latDelta / res
|
2003
|
-
};
|
2004
|
-
this.maxPx = {
|
2005
|
-
x: this.minPx.x + Math.round(maxExtent.getWidth() / res),
|
2006
|
-
y: this.minPx.y + Math.round(maxExtent.getHeight() / res)
|
2007
|
-
};
|
2008
|
-
}
|
2009
|
-
|
2010
|
-
if (zoomChanged) {
|
2011
|
-
this.zoom = zoom;
|
2012
|
-
this.resolution = res;
|
2013
|
-
}
|
2014
|
-
|
2015
|
-
var bounds = this.getExtent();
|
2016
|
-
|
2017
|
-
//send the move call to the baselayer and all the overlays
|
2018
|
-
|
2019
|
-
if(this.baseLayer.visibility) {
|
2020
|
-
this.baseLayer.moveTo(bounds, zoomChanged, options.dragging);
|
2021
|
-
options.dragging || this.baseLayer.events.triggerEvent(
|
2022
|
-
"moveend", {zoomChanged: zoomChanged}
|
2023
|
-
);
|
2024
|
-
}
|
2025
|
-
|
2026
|
-
bounds = this.baseLayer.getExtent();
|
2027
|
-
|
2028
|
-
for (var i=this.layers.length-1; i>=0; --i) {
|
2029
|
-
var layer = this.layers[i];
|
2030
|
-
if (layer !== this.baseLayer && !layer.isBaseLayer) {
|
2031
|
-
var inRange = layer.calculateInRange();
|
2032
|
-
if (layer.inRange != inRange) {
|
2033
|
-
// the inRange property has changed. If the layer is
|
2034
|
-
// no longer in range, we turn it off right away. If
|
2035
|
-
// the layer is no longer out of range, the moveTo
|
2036
|
-
// call below will turn on the layer.
|
2037
|
-
layer.inRange = inRange;
|
2038
|
-
if (!inRange) {
|
2039
|
-
layer.display(false);
|
2040
|
-
}
|
2041
|
-
this.events.triggerEvent("changelayer", {
|
2042
|
-
layer: layer, property: "visibility"
|
2043
|
-
});
|
2044
|
-
}
|
2045
|
-
if (inRange && layer.visibility) {
|
2046
|
-
layer.moveTo(bounds, zoomChanged, options.dragging);
|
2047
|
-
options.dragging || layer.events.triggerEvent(
|
2048
|
-
"moveend", {zoomChanged: zoomChanged}
|
2049
|
-
);
|
2050
|
-
}
|
2051
|
-
}
|
2052
|
-
}
|
2053
|
-
|
2054
|
-
this.events.triggerEvent("move");
|
2055
|
-
dragging || this.events.triggerEvent("moveend");
|
2056
|
-
|
2057
|
-
if (zoomChanged) {
|
2058
|
-
//redraw popups
|
2059
|
-
for (var i=0, len=this.popups.length; i<len; i++) {
|
2060
|
-
this.popups[i].updatePosition();
|
2061
|
-
}
|
2062
|
-
this.events.triggerEvent("zoomend");
|
2063
|
-
}
|
2064
|
-
}
|
2065
|
-
},
|
2066
|
-
|
2067
|
-
/**
|
2068
|
-
* Method: centerLayerContainer
|
2069
|
-
* This function takes care to recenter the layerContainerDiv.
|
2070
|
-
*
|
2071
|
-
* Parameters:
|
2072
|
-
* lonlat - {<OpenLayers.LonLat>}
|
2073
|
-
*/
|
2074
|
-
centerLayerContainer: function (lonlat) {
|
2075
|
-
var originPx = this.getViewPortPxFromLonLat(this.layerContainerOrigin);
|
2076
|
-
var newPx = this.getViewPortPxFromLonLat(lonlat);
|
2077
|
-
|
2078
|
-
if ((originPx != null) && (newPx != null)) {
|
2079
|
-
var oldLeft = this.layerContainerOriginPx.x;
|
2080
|
-
var oldTop = this.layerContainerOriginPx.y;
|
2081
|
-
var newLeft = Math.round(originPx.x - newPx.x);
|
2082
|
-
var newTop = Math.round(originPx.y - newPx.y);
|
2083
|
-
this.applyTransform(
|
2084
|
-
(this.layerContainerOriginPx.x = newLeft),
|
2085
|
-
(this.layerContainerOriginPx.y = newTop));
|
2086
|
-
var dx = oldLeft - newLeft;
|
2087
|
-
var dy = oldTop - newTop;
|
2088
|
-
this.minPx.x -= dx;
|
2089
|
-
this.maxPx.x -= dx;
|
2090
|
-
this.minPx.y -= dy;
|
2091
|
-
this.maxPx.y -= dy;
|
2092
|
-
}
|
2093
|
-
},
|
2094
|
-
|
2095
|
-
/**
|
2096
|
-
* Method: isValidZoomLevel
|
2097
|
-
*
|
2098
|
-
* Parameters:
|
2099
|
-
* zoomLevel - {Integer}
|
2100
|
-
*
|
2101
|
-
* Returns:
|
2102
|
-
* {Boolean} Whether or not the zoom level passed in is non-null and
|
2103
|
-
* within the min/max range of zoom levels.
|
2104
|
-
*/
|
2105
|
-
isValidZoomLevel: function(zoomLevel) {
|
2106
|
-
return ( (zoomLevel != null) &&
|
2107
|
-
(zoomLevel >= 0) &&
|
2108
|
-
(zoomLevel < this.getNumZoomLevels()) );
|
2109
|
-
},
|
2110
|
-
|
2111
|
-
/**
|
2112
|
-
* Method: isValidLonLat
|
2113
|
-
*
|
2114
|
-
* Parameters:
|
2115
|
-
* lonlat - {<OpenLayers.LonLat>}
|
2116
|
-
*
|
2117
|
-
* Returns:
|
2118
|
-
* {Boolean} Whether or not the lonlat passed in is non-null and within
|
2119
|
-
* the maxExtent bounds
|
2120
|
-
*/
|
2121
|
-
isValidLonLat: function(lonlat) {
|
2122
|
-
var valid = false;
|
2123
|
-
if (lonlat != null) {
|
2124
|
-
var maxExtent = this.getMaxExtent();
|
2125
|
-
var worldBounds = this.baseLayer.wrapDateLine && maxExtent;
|
2126
|
-
valid = maxExtent.containsLonLat(lonlat, {worldBounds: worldBounds});
|
2127
|
-
}
|
2128
|
-
return valid;
|
2129
|
-
},
|
2130
|
-
|
2131
|
-
/********************************************************/
|
2132
|
-
/* */
|
2133
|
-
/* Layer Options */
|
2134
|
-
/* */
|
2135
|
-
/* Accessor functions to Layer Options parameters */
|
2136
|
-
/* */
|
2137
|
-
/********************************************************/
|
2138
|
-
|
2139
|
-
/**
|
2140
|
-
* APIMethod: getProjection
|
2141
|
-
* This method returns a string representing the projection. In
|
2142
|
-
* the case of projection support, this will be the srsCode which
|
2143
|
-
* is loaded -- otherwise it will simply be the string value that
|
2144
|
-
* was passed to the projection at startup.
|
2145
|
-
*
|
2146
|
-
* FIXME: In 3.0, we will remove getProjectionObject, and instead
|
2147
|
-
* return a Projection object from this function.
|
2148
|
-
*
|
2149
|
-
* Returns:
|
2150
|
-
* {String} The Projection string from the base layer or null.
|
2151
|
-
*/
|
2152
|
-
getProjection: function() {
|
2153
|
-
var projection = this.getProjectionObject();
|
2154
|
-
return projection ? projection.getCode() : null;
|
2155
|
-
},
|
2156
|
-
|
2157
|
-
/**
|
2158
|
-
* APIMethod: getProjectionObject
|
2159
|
-
* Returns the projection obect from the baselayer.
|
2160
|
-
*
|
2161
|
-
* Returns:
|
2162
|
-
* {<OpenLayers.Projection>} The Projection of the base layer.
|
2163
|
-
*/
|
2164
|
-
getProjectionObject: function() {
|
2165
|
-
var projection = null;
|
2166
|
-
if (this.baseLayer != null) {
|
2167
|
-
projection = this.baseLayer.projection;
|
2168
|
-
}
|
2169
|
-
return projection;
|
2170
|
-
},
|
2171
|
-
|
2172
|
-
/**
|
2173
|
-
* APIMethod: getMaxResolution
|
2174
|
-
*
|
2175
|
-
* Returns:
|
2176
|
-
* {String} The Map's Maximum Resolution
|
2177
|
-
*/
|
2178
|
-
getMaxResolution: function() {
|
2179
|
-
var maxResolution = null;
|
2180
|
-
if (this.baseLayer != null) {
|
2181
|
-
maxResolution = this.baseLayer.maxResolution;
|
2182
|
-
}
|
2183
|
-
return maxResolution;
|
2184
|
-
},
|
2185
|
-
|
2186
|
-
/**
|
2187
|
-
* APIMethod: getMaxExtent
|
2188
|
-
*
|
2189
|
-
* Parameters:
|
2190
|
-
* options - {Object}
|
2191
|
-
*
|
2192
|
-
* Allowed Options:
|
2193
|
-
* restricted - {Boolean} If true, returns restricted extent (if it is
|
2194
|
-
* available.)
|
2195
|
-
*
|
2196
|
-
* Returns:
|
2197
|
-
* {<OpenLayers.Bounds>} The maxExtent property as set on the current
|
2198
|
-
* baselayer, unless the 'restricted' option is set, in which case
|
2199
|
-
* the 'restrictedExtent' option from the map is returned (if it
|
2200
|
-
* is set).
|
2201
|
-
*/
|
2202
|
-
getMaxExtent: function (options) {
|
2203
|
-
var maxExtent = null;
|
2204
|
-
if(options && options.restricted && this.restrictedExtent){
|
2205
|
-
maxExtent = this.restrictedExtent;
|
2206
|
-
} else if (this.baseLayer != null) {
|
2207
|
-
maxExtent = this.baseLayer.maxExtent;
|
2208
|
-
}
|
2209
|
-
return maxExtent;
|
2210
|
-
},
|
2211
|
-
|
2212
|
-
/**
|
2213
|
-
* APIMethod: getNumZoomLevels
|
2214
|
-
*
|
2215
|
-
* Returns:
|
2216
|
-
* {Integer} The total number of zoom levels that can be displayed by the
|
2217
|
-
* current baseLayer.
|
2218
|
-
*/
|
2219
|
-
getNumZoomLevels: function() {
|
2220
|
-
var numZoomLevels = null;
|
2221
|
-
if (this.baseLayer != null) {
|
2222
|
-
numZoomLevels = this.baseLayer.numZoomLevels;
|
2223
|
-
}
|
2224
|
-
return numZoomLevels;
|
2225
|
-
},
|
2226
|
-
|
2227
|
-
/********************************************************/
|
2228
|
-
/* */
|
2229
|
-
/* Baselayer Functions */
|
2230
|
-
/* */
|
2231
|
-
/* The following functions, all publicly exposed */
|
2232
|
-
/* in the API?, are all merely wrappers to the */
|
2233
|
-
/* the same calls on whatever layer is set as */
|
2234
|
-
/* the current base layer */
|
2235
|
-
/* */
|
2236
|
-
/********************************************************/
|
2237
|
-
|
2238
|
-
/**
|
2239
|
-
* APIMethod: getExtent
|
2240
|
-
*
|
2241
|
-
* Returns:
|
2242
|
-
* {<OpenLayers.Bounds>} A Bounds object which represents the lon/lat
|
2243
|
-
* bounds of the current viewPort.
|
2244
|
-
* If no baselayer is set, returns null.
|
2245
|
-
*/
|
2246
|
-
getExtent: function () {
|
2247
|
-
var extent = null;
|
2248
|
-
if (this.baseLayer != null) {
|
2249
|
-
extent = this.baseLayer.getExtent();
|
2250
|
-
}
|
2251
|
-
return extent;
|
2252
|
-
},
|
2253
|
-
|
2254
|
-
/**
|
2255
|
-
* APIMethod: getResolution
|
2256
|
-
*
|
2257
|
-
* Returns:
|
2258
|
-
* {Float} The current resolution of the map.
|
2259
|
-
* If no baselayer is set, returns null.
|
2260
|
-
*/
|
2261
|
-
getResolution: function () {
|
2262
|
-
var resolution = null;
|
2263
|
-
if (this.baseLayer != null) {
|
2264
|
-
resolution = this.baseLayer.getResolution();
|
2265
|
-
} else if(this.allOverlays === true && this.layers.length > 0) {
|
2266
|
-
// while adding the 1st layer to the map in allOverlays mode,
|
2267
|
-
// this.baseLayer is not set yet when we need the resolution
|
2268
|
-
// for calculateInRange.
|
2269
|
-
resolution = this.layers[0].getResolution();
|
2270
|
-
}
|
2271
|
-
return resolution;
|
2272
|
-
},
|
2273
|
-
|
2274
|
-
/**
|
2275
|
-
* APIMethod: getUnits
|
2276
|
-
*
|
2277
|
-
* Returns:
|
2278
|
-
* {Float} The current units of the map.
|
2279
|
-
* If no baselayer is set, returns null.
|
2280
|
-
*/
|
2281
|
-
getUnits: function () {
|
2282
|
-
var units = null;
|
2283
|
-
if (this.baseLayer != null) {
|
2284
|
-
units = this.baseLayer.units;
|
2285
|
-
}
|
2286
|
-
return units;
|
2287
|
-
},
|
2288
|
-
|
2289
|
-
/**
|
2290
|
-
* APIMethod: getScale
|
2291
|
-
*
|
2292
|
-
* Returns:
|
2293
|
-
* {Float} The current scale denominator of the map.
|
2294
|
-
* If no baselayer is set, returns null.
|
2295
|
-
*/
|
2296
|
-
getScale: function () {
|
2297
|
-
var scale = null;
|
2298
|
-
if (this.baseLayer != null) {
|
2299
|
-
var res = this.getResolution();
|
2300
|
-
var units = this.baseLayer.units;
|
2301
|
-
scale = OpenLayers.Util.getScaleFromResolution(res, units);
|
2302
|
-
}
|
2303
|
-
return scale;
|
2304
|
-
},
|
2305
|
-
|
2306
|
-
|
2307
|
-
/**
|
2308
|
-
* APIMethod: getZoomForExtent
|
2309
|
-
*
|
2310
|
-
* Parameters:
|
2311
|
-
* bounds - {<OpenLayers.Bounds>}
|
2312
|
-
* closest - {Boolean} Find the zoom level that most closely fits the
|
2313
|
-
* specified bounds. Note that this may result in a zoom that does
|
2314
|
-
* not exactly contain the entire extent.
|
2315
|
-
* Default is false.
|
2316
|
-
*
|
2317
|
-
* Returns:
|
2318
|
-
* {Integer} A suitable zoom level for the specified bounds.
|
2319
|
-
* If no baselayer is set, returns null.
|
2320
|
-
*/
|
2321
|
-
getZoomForExtent: function (bounds, closest) {
|
2322
|
-
var zoom = null;
|
2323
|
-
if (this.baseLayer != null) {
|
2324
|
-
zoom = this.baseLayer.getZoomForExtent(bounds, closest);
|
2325
|
-
}
|
2326
|
-
return zoom;
|
2327
|
-
},
|
2328
|
-
|
2329
|
-
/**
|
2330
|
-
* APIMethod: getResolutionForZoom
|
2331
|
-
*
|
2332
|
-
* Parameters:
|
2333
|
-
* zoom - {Float}
|
2334
|
-
*
|
2335
|
-
* Returns:
|
2336
|
-
* {Float} A suitable resolution for the specified zoom. If no baselayer
|
2337
|
-
* is set, returns null.
|
2338
|
-
*/
|
2339
|
-
getResolutionForZoom: function(zoom) {
|
2340
|
-
var resolution = null;
|
2341
|
-
if(this.baseLayer) {
|
2342
|
-
resolution = this.baseLayer.getResolutionForZoom(zoom);
|
2343
|
-
}
|
2344
|
-
return resolution;
|
2345
|
-
},
|
2346
|
-
|
2347
|
-
/**
|
2348
|
-
* APIMethod: getZoomForResolution
|
2349
|
-
*
|
2350
|
-
* Parameters:
|
2351
|
-
* resolution - {Float}
|
2352
|
-
* closest - {Boolean} Find the zoom level that corresponds to the absolute
|
2353
|
-
* closest resolution, which may result in a zoom whose corresponding
|
2354
|
-
* resolution is actually smaller than we would have desired (if this
|
2355
|
-
* is being called from a getZoomForExtent() call, then this means that
|
2356
|
-
* the returned zoom index might not actually contain the entire
|
2357
|
-
* extent specified... but it'll be close).
|
2358
|
-
* Default is false.
|
2359
|
-
*
|
2360
|
-
* Returns:
|
2361
|
-
* {Integer} A suitable zoom level for the specified resolution.
|
2362
|
-
* If no baselayer is set, returns null.
|
2363
|
-
*/
|
2364
|
-
getZoomForResolution: function(resolution, closest) {
|
2365
|
-
var zoom = null;
|
2366
|
-
if (this.baseLayer != null) {
|
2367
|
-
zoom = this.baseLayer.getZoomForResolution(resolution, closest);
|
2368
|
-
}
|
2369
|
-
return zoom;
|
2370
|
-
},
|
2371
|
-
|
2372
|
-
/********************************************************/
|
2373
|
-
/* */
|
2374
|
-
/* Zooming Functions */
|
2375
|
-
/* */
|
2376
|
-
/* The following functions, all publicly exposed */
|
2377
|
-
/* in the API, are all merely wrappers to the */
|
2378
|
-
/* the setCenter() function */
|
2379
|
-
/* */
|
2380
|
-
/********************************************************/
|
2381
|
-
|
2382
|
-
/**
|
2383
|
-
* APIMethod: zoomTo
|
2384
|
-
* Zoom to a specific zoom level. Zooming will be animated unless the map
|
2385
|
-
* is configured with {zoomMethod: null}. To zoom without animation, use
|
2386
|
-
* <setCenter> without a lonlat argument.
|
2387
|
-
*
|
2388
|
-
* Parameters:
|
2389
|
-
* zoom - {Integer}
|
2390
|
-
*/
|
2391
|
-
zoomTo: function(zoom, xy) {
|
2392
|
-
// non-API arguments:
|
2393
|
-
// xy - {<OpenLayers.Pixel>} optional zoom origin
|
2394
|
-
|
2395
|
-
var map = this;
|
2396
|
-
if (map.isValidZoomLevel(zoom)) {
|
2397
|
-
if (map.baseLayer.wrapDateLine) {
|
2398
|
-
zoom = map.adjustZoom(zoom);
|
2399
|
-
}
|
2400
|
-
if (map.zoomTween) {
|
2401
|
-
var currentRes = map.getResolution(),
|
2402
|
-
targetRes = map.getResolutionForZoom(zoom),
|
2403
|
-
start = {scale: 1},
|
2404
|
-
end = {scale: currentRes / targetRes};
|
2405
|
-
if (map.zoomTween.playing && map.zoomTween.duration < 3 * map.zoomDuration) {
|
2406
|
-
// update the end scale, and reuse the running zoomTween
|
2407
|
-
map.zoomTween.finish = {
|
2408
|
-
scale: map.zoomTween.finish.scale * end.scale
|
2409
|
-
};
|
2410
|
-
} else {
|
2411
|
-
if (!xy) {
|
2412
|
-
var size = map.getSize();
|
2413
|
-
xy = {x: size.w / 2, y: size.h / 2};
|
2414
|
-
}
|
2415
|
-
map.zoomTween.start(start, end, map.zoomDuration, {
|
2416
|
-
minFrameRate: 50, // don't spend much time zooming
|
2417
|
-
callbacks: {
|
2418
|
-
eachStep: function(data) {
|
2419
|
-
var containerOrigin = map.layerContainerOriginPx,
|
2420
|
-
scale = data.scale,
|
2421
|
-
dx = ((scale - 1) * (containerOrigin.x - xy.x)) | 0,
|
2422
|
-
dy = ((scale - 1) * (containerOrigin.y - xy.y)) | 0;
|
2423
|
-
map.applyTransform(containerOrigin.x + dx, containerOrigin.y + dy, scale);
|
2424
|
-
},
|
2425
|
-
done: function(data) {
|
2426
|
-
map.applyTransform();
|
2427
|
-
var resolution = map.getResolution() / data.scale,
|
2428
|
-
zoom = map.getZoomForResolution(resolution, true)
|
2429
|
-
map.moveTo(map.getZoomTargetCenter(xy, resolution), zoom, true);
|
2430
|
-
}
|
2431
|
-
}
|
2432
|
-
});
|
2433
|
-
}
|
2434
|
-
} else {
|
2435
|
-
var center = xy ?
|
2436
|
-
map.getZoomTargetCenter(xy, map.getResolutionForZoom(zoom)) :
|
2437
|
-
null;
|
2438
|
-
map.setCenter(center, zoom);
|
2439
|
-
}
|
2440
|
-
}
|
2441
|
-
},
|
2442
|
-
|
2443
|
-
/**
|
2444
|
-
* APIMethod: zoomIn
|
2445
|
-
*
|
2446
|
-
*/
|
2447
|
-
zoomIn: function() {
|
2448
|
-
this.zoomTo(this.getZoom() + 1);
|
2449
|
-
},
|
2450
|
-
|
2451
|
-
/**
|
2452
|
-
* APIMethod: zoomOut
|
2453
|
-
*
|
2454
|
-
*/
|
2455
|
-
zoomOut: function() {
|
2456
|
-
this.zoomTo(this.getZoom() - 1);
|
2457
|
-
},
|
2458
|
-
|
2459
|
-
/**
|
2460
|
-
* APIMethod: zoomToExtent
|
2461
|
-
* Zoom to the passed in bounds, recenter
|
2462
|
-
*
|
2463
|
-
* Parameters:
|
2464
|
-
* bounds - {<OpenLayers.Bounds>|Array} If provided as an array, the array
|
2465
|
-
* should consist of four values (left, bottom, right, top).
|
2466
|
-
* closest - {Boolean} Find the zoom level that most closely fits the
|
2467
|
-
* specified bounds. Note that this may result in a zoom that does
|
2468
|
-
* not exactly contain the entire extent.
|
2469
|
-
* Default is false.
|
2470
|
-
*
|
2471
|
-
*/
|
2472
|
-
zoomToExtent: function(bounds, closest) {
|
2473
|
-
if (!(bounds instanceof OpenLayers.Bounds)) {
|
2474
|
-
bounds = new OpenLayers.Bounds(bounds);
|
2475
|
-
}
|
2476
|
-
var center = bounds.getCenterLonLat();
|
2477
|
-
if (this.baseLayer.wrapDateLine) {
|
2478
|
-
var maxExtent = this.getMaxExtent();
|
2479
|
-
|
2480
|
-
//fix straddling bounds (in the case of a bbox that straddles the
|
2481
|
-
// dateline, it's left and right boundaries will appear backwards.
|
2482
|
-
// we fix this by allowing a right value that is greater than the
|
2483
|
-
// max value at the dateline -- this allows us to pass a valid
|
2484
|
-
// bounds to calculate zoom)
|
2485
|
-
//
|
2486
|
-
bounds = bounds.clone();
|
2487
|
-
while (bounds.right < bounds.left) {
|
2488
|
-
bounds.right += maxExtent.getWidth();
|
2489
|
-
}
|
2490
|
-
//if the bounds was straddling (see above), then the center point
|
2491
|
-
// we got from it was wrong. So we take our new bounds and ask it
|
2492
|
-
// for the center.
|
2493
|
-
//
|
2494
|
-
center = bounds.getCenterLonLat().wrapDateLine(maxExtent);
|
2495
|
-
}
|
2496
|
-
this.setCenter(center, this.getZoomForExtent(bounds, closest));
|
2497
|
-
},
|
2498
|
-
|
2499
|
-
/**
|
2500
|
-
* APIMethod: zoomToMaxExtent
|
2501
|
-
* Zoom to the full extent and recenter.
|
2502
|
-
*
|
2503
|
-
* Parameters:
|
2504
|
-
* options - {Object}
|
2505
|
-
*
|
2506
|
-
* Allowed Options:
|
2507
|
-
* restricted - {Boolean} True to zoom to restricted extent if it is
|
2508
|
-
* set. Defaults to true.
|
2509
|
-
*/
|
2510
|
-
zoomToMaxExtent: function(options) {
|
2511
|
-
//restricted is true by default
|
2512
|
-
var restricted = (options) ? options.restricted : true;
|
2513
|
-
|
2514
|
-
var maxExtent = this.getMaxExtent({
|
2515
|
-
'restricted': restricted
|
2516
|
-
});
|
2517
|
-
this.zoomToExtent(maxExtent);
|
2518
|
-
},
|
2519
|
-
|
2520
|
-
/**
|
2521
|
-
* APIMethod: zoomToScale
|
2522
|
-
* Zoom to a specified scale
|
2523
|
-
*
|
2524
|
-
* Parameters:
|
2525
|
-
* scale - {float}
|
2526
|
-
* closest - {Boolean} Find the zoom level that most closely fits the
|
2527
|
-
* specified scale. Note that this may result in a zoom that does
|
2528
|
-
* not exactly contain the entire extent.
|
2529
|
-
* Default is false.
|
2530
|
-
*
|
2531
|
-
*/
|
2532
|
-
zoomToScale: function(scale, closest) {
|
2533
|
-
var res = OpenLayers.Util.getResolutionFromScale(scale,
|
2534
|
-
this.baseLayer.units);
|
2535
|
-
|
2536
|
-
var halfWDeg = (this.size.w * res) / 2;
|
2537
|
-
var halfHDeg = (this.size.h * res) / 2;
|
2538
|
-
var center = this.getCachedCenter();
|
2539
|
-
|
2540
|
-
var extent = new OpenLayers.Bounds(center.lon - halfWDeg,
|
2541
|
-
center.lat - halfHDeg,
|
2542
|
-
center.lon + halfWDeg,
|
2543
|
-
center.lat + halfHDeg);
|
2544
|
-
this.zoomToExtent(extent, closest);
|
2545
|
-
},
|
2546
|
-
|
2547
|
-
/********************************************************/
|
2548
|
-
/* */
|
2549
|
-
/* Translation Functions */
|
2550
|
-
/* */
|
2551
|
-
/* The following functions translate between */
|
2552
|
-
/* LonLat, LayerPx, and ViewPortPx */
|
2553
|
-
/* */
|
2554
|
-
/********************************************************/
|
2555
|
-
|
2556
|
-
//
|
2557
|
-
// TRANSLATION: LonLat <-> ViewPortPx
|
2558
|
-
//
|
2559
|
-
|
2560
|
-
/**
|
2561
|
-
* Method: getLonLatFromViewPortPx
|
2562
|
-
*
|
2563
|
-
* Parameters:
|
2564
|
-
* viewPortPx - {<OpenLayers.Pixel>|Object} An OpenLayers.Pixel or
|
2565
|
-
* an object with a 'x'
|
2566
|
-
* and 'y' properties.
|
2567
|
-
*
|
2568
|
-
* Returns:
|
2569
|
-
* {<OpenLayers.LonLat>} An OpenLayers.LonLat which is the passed-in view
|
2570
|
-
* port <OpenLayers.Pixel>, translated into lon/lat
|
2571
|
-
* by the current base layer.
|
2572
|
-
*/
|
2573
|
-
getLonLatFromViewPortPx: function (viewPortPx) {
|
2574
|
-
var lonlat = null;
|
2575
|
-
if (this.baseLayer != null) {
|
2576
|
-
lonlat = this.baseLayer.getLonLatFromViewPortPx(viewPortPx);
|
2577
|
-
}
|
2578
|
-
return lonlat;
|
2579
|
-
},
|
2580
|
-
|
2581
|
-
/**
|
2582
|
-
* APIMethod: getViewPortPxFromLonLat
|
2583
|
-
*
|
2584
|
-
* Parameters:
|
2585
|
-
* lonlat - {<OpenLayers.LonLat>}
|
2586
|
-
*
|
2587
|
-
* Returns:
|
2588
|
-
* {<OpenLayers.Pixel>} An OpenLayers.Pixel which is the passed-in
|
2589
|
-
* <OpenLayers.LonLat>, translated into view port
|
2590
|
-
* pixels by the current base layer.
|
2591
|
-
*/
|
2592
|
-
getViewPortPxFromLonLat: function (lonlat) {
|
2593
|
-
var px = null;
|
2594
|
-
if (this.baseLayer != null) {
|
2595
|
-
px = this.baseLayer.getViewPortPxFromLonLat(lonlat);
|
2596
|
-
}
|
2597
|
-
return px;
|
2598
|
-
},
|
2599
|
-
|
2600
|
-
/**
|
2601
|
-
* Method: getZoomTargetCenter
|
2602
|
-
*
|
2603
|
-
* Parameters:
|
2604
|
-
* xy - {<OpenLayers.Pixel>} The zoom origin pixel location on the screen
|
2605
|
-
* resolution - {Float} The resolution we want to get the center for
|
2606
|
-
*
|
2607
|
-
* Returns:
|
2608
|
-
* {<OpenLayers.LonLat>} The location of the map center after the
|
2609
|
-
* transformation described by the origin xy and the target resolution.
|
2610
|
-
*/
|
2611
|
-
getZoomTargetCenter: function (xy, resolution) {
|
2612
|
-
var lonlat = null,
|
2613
|
-
size = this.getSize(),
|
2614
|
-
deltaX = size.w/2 - xy.x,
|
2615
|
-
deltaY = xy.y - size.h/2,
|
2616
|
-
zoomPoint = this.getLonLatFromPixel(xy);
|
2617
|
-
if (zoomPoint) {
|
2618
|
-
lonlat = new OpenLayers.LonLat(
|
2619
|
-
zoomPoint.lon + deltaX * resolution,
|
2620
|
-
zoomPoint.lat + deltaY * resolution
|
2621
|
-
);
|
2622
|
-
}
|
2623
|
-
return lonlat;
|
2624
|
-
},
|
2625
|
-
|
2626
|
-
//
|
2627
|
-
// CONVENIENCE TRANSLATION FUNCTIONS FOR API
|
2628
|
-
//
|
2629
|
-
|
2630
|
-
/**
|
2631
|
-
* APIMethod: getLonLatFromPixel
|
2632
|
-
*
|
2633
|
-
* Parameters:
|
2634
|
-
* px - {<OpenLayers.Pixel>|Object} An OpenLayers.Pixel or an object with
|
2635
|
-
* a 'x' and 'y' properties.
|
2636
|
-
*
|
2637
|
-
* Returns:
|
2638
|
-
* {<OpenLayers.LonLat>} An OpenLayers.LonLat corresponding to the given
|
2639
|
-
* OpenLayers.Pixel, translated into lon/lat by the
|
2640
|
-
* current base layer
|
2641
|
-
*/
|
2642
|
-
getLonLatFromPixel: function (px) {
|
2643
|
-
return this.getLonLatFromViewPortPx(px);
|
2644
|
-
},
|
2645
|
-
|
2646
|
-
/**
|
2647
|
-
* APIMethod: getPixelFromLonLat
|
2648
|
-
* Returns a pixel location given a map location. The map location is
|
2649
|
-
* translated to an integer pixel location (in viewport pixel
|
2650
|
-
* coordinates) by the current base layer.
|
2651
|
-
*
|
2652
|
-
* Parameters:
|
2653
|
-
* lonlat - {<OpenLayers.LonLat>} A map location.
|
2654
|
-
*
|
2655
|
-
* Returns:
|
2656
|
-
* {<OpenLayers.Pixel>} An OpenLayers.Pixel corresponding to the
|
2657
|
-
* <OpenLayers.LonLat> translated into view port pixels by the current
|
2658
|
-
* base layer.
|
2659
|
-
*/
|
2660
|
-
getPixelFromLonLat: function (lonlat) {
|
2661
|
-
var px = this.getViewPortPxFromLonLat(lonlat);
|
2662
|
-
px.x = Math.round(px.x);
|
2663
|
-
px.y = Math.round(px.y);
|
2664
|
-
return px;
|
2665
|
-
},
|
2666
|
-
|
2667
|
-
/**
|
2668
|
-
* Method: getGeodesicPixelSize
|
2669
|
-
*
|
2670
|
-
* Parameters:
|
2671
|
-
* px - {<OpenLayers.Pixel>} The pixel to get the geodesic length for. If
|
2672
|
-
* not provided, the center pixel of the map viewport will be used.
|
2673
|
-
*
|
2674
|
-
* Returns:
|
2675
|
-
* {<OpenLayers.Size>} The geodesic size of the pixel in kilometers.
|
2676
|
-
*/
|
2677
|
-
getGeodesicPixelSize: function(px) {
|
2678
|
-
var lonlat = px ? this.getLonLatFromPixel(px) : (
|
2679
|
-
this.getCachedCenter() || new OpenLayers.LonLat(0, 0));
|
2680
|
-
var res = this.getResolution();
|
2681
|
-
var left = lonlat.add(-res / 2, 0);
|
2682
|
-
var right = lonlat.add(res / 2, 0);
|
2683
|
-
var bottom = lonlat.add(0, -res / 2);
|
2684
|
-
var top = lonlat.add(0, res / 2);
|
2685
|
-
var dest = new OpenLayers.Projection("EPSG:4326");
|
2686
|
-
var source = this.getProjectionObject() || dest;
|
2687
|
-
if(!source.equals(dest)) {
|
2688
|
-
left.transform(source, dest);
|
2689
|
-
right.transform(source, dest);
|
2690
|
-
bottom.transform(source, dest);
|
2691
|
-
top.transform(source, dest);
|
2692
|
-
}
|
2693
|
-
|
2694
|
-
return new OpenLayers.Size(
|
2695
|
-
OpenLayers.Util.distVincenty(left, right),
|
2696
|
-
OpenLayers.Util.distVincenty(bottom, top)
|
2697
|
-
);
|
2698
|
-
},
|
2699
|
-
|
2700
|
-
|
2701
|
-
|
2702
|
-
//
|
2703
|
-
// TRANSLATION: ViewPortPx <-> LayerPx
|
2704
|
-
//
|
2705
|
-
|
2706
|
-
/**
|
2707
|
-
* APIMethod: getViewPortPxFromLayerPx
|
2708
|
-
*
|
2709
|
-
* Parameters:
|
2710
|
-
* layerPx - {<OpenLayers.Pixel>}
|
2711
|
-
*
|
2712
|
-
* Returns:
|
2713
|
-
* {<OpenLayers.Pixel>} Layer Pixel translated into ViewPort Pixel
|
2714
|
-
* coordinates
|
2715
|
-
*/
|
2716
|
-
getViewPortPxFromLayerPx:function(layerPx) {
|
2717
|
-
var viewPortPx = null;
|
2718
|
-
if (layerPx != null) {
|
2719
|
-
var dX = this.layerContainerOriginPx.x;
|
2720
|
-
var dY = this.layerContainerOriginPx.y;
|
2721
|
-
viewPortPx = layerPx.add(dX, dY);
|
2722
|
-
}
|
2723
|
-
return viewPortPx;
|
2724
|
-
},
|
2725
|
-
|
2726
|
-
/**
|
2727
|
-
* APIMethod: getLayerPxFromViewPortPx
|
2728
|
-
*
|
2729
|
-
* Parameters:
|
2730
|
-
* viewPortPx - {<OpenLayers.Pixel>}
|
2731
|
-
*
|
2732
|
-
* Returns:
|
2733
|
-
* {<OpenLayers.Pixel>} ViewPort Pixel translated into Layer Pixel
|
2734
|
-
* coordinates
|
2735
|
-
*/
|
2736
|
-
getLayerPxFromViewPortPx:function(viewPortPx) {
|
2737
|
-
var layerPx = null;
|
2738
|
-
if (viewPortPx != null) {
|
2739
|
-
var dX = -this.layerContainerOriginPx.x;
|
2740
|
-
var dY = -this.layerContainerOriginPx.y;
|
2741
|
-
layerPx = viewPortPx.add(dX, dY);
|
2742
|
-
if (isNaN(layerPx.x) || isNaN(layerPx.y)) {
|
2743
|
-
layerPx = null;
|
2744
|
-
}
|
2745
|
-
}
|
2746
|
-
return layerPx;
|
2747
|
-
},
|
2748
|
-
|
2749
|
-
//
|
2750
|
-
// TRANSLATION: LonLat <-> LayerPx
|
2751
|
-
//
|
2752
|
-
|
2753
|
-
/**
|
2754
|
-
* Method: getLonLatFromLayerPx
|
2755
|
-
*
|
2756
|
-
* Parameters:
|
2757
|
-
* px - {<OpenLayers.Pixel>}
|
2758
|
-
*
|
2759
|
-
* Returns:
|
2760
|
-
* {<OpenLayers.LonLat>}
|
2761
|
-
*/
|
2762
|
-
getLonLatFromLayerPx: function (px) {
|
2763
|
-
//adjust for displacement of layerContainerDiv
|
2764
|
-
px = this.getViewPortPxFromLayerPx(px);
|
2765
|
-
return this.getLonLatFromViewPortPx(px);
|
2766
|
-
},
|
2767
|
-
|
2768
|
-
/**
|
2769
|
-
* APIMethod: getLayerPxFromLonLat
|
2770
|
-
*
|
2771
|
-
* Parameters:
|
2772
|
-
* lonlat - {<OpenLayers.LonLat>} lonlat
|
2773
|
-
*
|
2774
|
-
* Returns:
|
2775
|
-
* {<OpenLayers.Pixel>} An OpenLayers.Pixel which is the passed-in
|
2776
|
-
* <OpenLayers.LonLat>, translated into layer pixels
|
2777
|
-
* by the current base layer
|
2778
|
-
*/
|
2779
|
-
getLayerPxFromLonLat: function (lonlat) {
|
2780
|
-
//adjust for displacement of layerContainerDiv
|
2781
|
-
var px = this.getPixelFromLonLat(lonlat);
|
2782
|
-
return this.getLayerPxFromViewPortPx(px);
|
2783
|
-
},
|
2784
|
-
|
2785
|
-
/**
|
2786
|
-
* Method: applyTransform
|
2787
|
-
* Applies the given transform to the <layerContainerDiv>. This method has
|
2788
|
-
* a 2-stage fallback from translate3d/scale3d via translate/scale to plain
|
2789
|
-
* style.left/style.top, in which case no scaling is supported.
|
2790
|
-
*
|
2791
|
-
* Parameters:
|
2792
|
-
* x - {Number} x parameter for the translation. Defaults to the x value of
|
2793
|
-
* the map's <layerContainerOriginPx>
|
2794
|
-
* y - {Number} y parameter for the translation. Defaults to the y value of
|
2795
|
-
* the map's <layerContainerOriginPx>
|
2796
|
-
* scale - {Number} scale. Defaults to 1 if not provided.
|
2797
|
-
*/
|
2798
|
-
applyTransform: function(x, y, scale) {
|
2799
|
-
scale = scale || 1;
|
2800
|
-
var origin = this.layerContainerOriginPx,
|
2801
|
-
needTransform = scale !== 1;
|
2802
|
-
x = x || origin.x;
|
2803
|
-
y = y || origin.y;
|
2804
|
-
|
2805
|
-
var style = this.layerContainerDiv.style,
|
2806
|
-
transform = this.applyTransform.transform,
|
2807
|
-
template = this.applyTransform.template;
|
2808
|
-
|
2809
|
-
if (transform === undefined) {
|
2810
|
-
transform = OpenLayers.Util.vendorPrefix.style('transform');
|
2811
|
-
this.applyTransform.transform = transform;
|
2812
|
-
if (transform) {
|
2813
|
-
// Try translate3d, but only if the viewPortDiv has a transform
|
2814
|
-
// defined in a stylesheet
|
2815
|
-
var computedStyle = OpenLayers.Element.getStyle(this.viewPortDiv,
|
2816
|
-
OpenLayers.Util.vendorPrefix.css('transform'));
|
2817
|
-
if (!computedStyle || computedStyle !== 'none') {
|
2818
|
-
template = ['translate3d(', ',0) ', 'scale3d(', ',1)'];
|
2819
|
-
style[transform] = [template[0], '0,0', template[1]].join('');
|
2820
|
-
}
|
2821
|
-
// If no transform is defined in the stylesheet or translate3d
|
2822
|
-
// does not stick, use translate and scale
|
2823
|
-
if (!template || !~style[transform].indexOf(template[0])) {
|
2824
|
-
template = ['translate(', ') ', 'scale(', ')'];
|
2825
|
-
}
|
2826
|
-
this.applyTransform.template = template;
|
2827
|
-
}
|
2828
|
-
}
|
2829
|
-
|
2830
|
-
// If we do 3d transforms, we always want to use them. If we do 2d
|
2831
|
-
// transforms, we only use them when we need to.
|
2832
|
-
if (transform !== null && (template[0] === 'translate3d(' || needTransform === true)) {
|
2833
|
-
// Our 2d transforms are combined with style.left and style.top, so
|
2834
|
-
// adjust x and y values and set the origin as left and top
|
2835
|
-
if (needTransform === true && template[0] === 'translate(') {
|
2836
|
-
x -= origin.x;
|
2837
|
-
y -= origin.y;
|
2838
|
-
style.left = origin.x + 'px';
|
2839
|
-
style.top = origin.y + 'px';
|
2840
|
-
}
|
2841
|
-
style[transform] = [
|
2842
|
-
template[0], x, 'px,', y, 'px', template[1],
|
2843
|
-
template[2], scale, ',', scale, template[3]
|
2844
|
-
].join('');
|
2845
|
-
} else {
|
2846
|
-
style.left = x + 'px';
|
2847
|
-
style.top = y + 'px';
|
2848
|
-
// We previously might have had needTransform, so remove transform
|
2849
|
-
if (transform !== null) {
|
2850
|
-
style[transform] = '';
|
2851
|
-
}
|
2852
|
-
}
|
2853
|
-
},
|
2854
|
-
|
2855
|
-
CLASS_NAME: "OpenLayers.Map"
|
2856
|
-
});
|
2857
|
-
|
2858
|
-
/**
|
2859
|
-
* Constant: TILE_WIDTH
|
2860
|
-
* {Integer} 256 Default tile width (unless otherwise specified)
|
2861
|
-
*/
|
2862
|
-
OpenLayers.Map.TILE_WIDTH = 256;
|
2863
|
-
/**
|
2864
|
-
* Constant: TILE_HEIGHT
|
2865
|
-
* {Integer} 256 Default tile height (unless otherwise specified)
|
2866
|
-
*/
|
2867
|
-
OpenLayers.Map.TILE_HEIGHT = 256;
|