postrunner 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- 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;
|