postrunner 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1225) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -3
  3. data/lib/postrunner/ActivitiesDB.rb +8 -9
  4. data/lib/postrunner/Activity.rb +7 -1
  5. data/lib/postrunner/ActivityView.rb +10 -2
  6. data/lib/postrunner/DataSources.rb +100 -0
  7. data/lib/postrunner/DeviceList.rb +40 -17
  8. data/lib/postrunner/Log.rb +25 -0
  9. data/lib/postrunner/Main.rb +9 -8
  10. data/lib/postrunner/RuntimeConfig.rb +1 -0
  11. data/lib/postrunner/TrackView.rb +39 -62
  12. data/lib/postrunner/version.rb +1 -1
  13. data/misc/openlayers/ol.css +1 -0
  14. data/misc/openlayers/ol.js +948 -0
  15. data/postrunner.gemspec +2 -2
  16. data/spec/PostRunner_spec.rb +22 -23
  17. data/spec/spec_helper.rb +34 -4
  18. metadata +11 -1214
  19. data/misc/openlayers/.gitignore +0 -7
  20. data/misc/openlayers/OpenLayers.debug.js +0 -85622
  21. data/misc/openlayers/OpenLayers.js +0 -1443
  22. data/misc/openlayers/OpenLayers.light.debug.js +0 -37230
  23. data/misc/openlayers/OpenLayers.light.js +0 -592
  24. data/misc/openlayers/OpenLayers.mobile.debug.js +0 -41831
  25. data/misc/openlayers/OpenLayers.mobile.js +0 -681
  26. data/misc/openlayers/apidoc_config/Languages.txt +0 -113
  27. data/misc/openlayers/apidoc_config/Menu.txt +0 -520
  28. data/misc/openlayers/apidoc_config/OL.css +0 -20
  29. data/misc/openlayers/apidoc_config/Topics.txt +0 -105
  30. data/misc/openlayers/art/arrows.svg +0 -127
  31. data/misc/openlayers/art/layer-switcher-maximize.svg +0 -128
  32. data/misc/openlayers/art/layer-switcher-minimize.svg +0 -142
  33. data/misc/openlayers/art/marker.svg +0 -25
  34. data/misc/openlayers/art/measuring-stick-off.svg +0 -36
  35. data/misc/openlayers/art/measuring-stick-on.svg +0 -36
  36. data/misc/openlayers/art/panning-hand-off.svg +0 -44
  37. data/misc/openlayers/art/panning-hand-on.svg +0 -44
  38. data/misc/openlayers/art/slider.svg +0 -71
  39. data/misc/openlayers/art/zoom-world.svg +0 -193
  40. data/misc/openlayers/art/zoombar.svg +0 -73
  41. data/misc/openlayers/authors.txt +0 -56
  42. data/misc/openlayers/build/README.txt +0 -46
  43. data/misc/openlayers/build/build.py +0 -158
  44. data/misc/openlayers/build/buildUncompressed.py +0 -25
  45. data/misc/openlayers/build/closure-compiler/Externs.js +0 -50
  46. data/misc/openlayers/build/full.cfg +0 -14
  47. data/misc/openlayers/build/license.txt +0 -57
  48. data/misc/openlayers/build/light.cfg +0 -32
  49. data/misc/openlayers/build/lite.cfg +0 -17
  50. data/misc/openlayers/build/mobile.cfg +0 -36
  51. data/misc/openlayers/build/tests.cfg +0 -11
  52. data/misc/openlayers/doc_config/Data/ClassHierarchy.nd +0 -0
  53. data/misc/openlayers/doc_config/Data/ConfigFileInfo.nd +0 -0
  54. data/misc/openlayers/doc_config/Data/FileInfo.nd +0 -323
  55. data/misc/openlayers/doc_config/Data/ImageFileInfo.nd +0 -0
  56. data/misc/openlayers/doc_config/Data/ImageReferenceTable.nd +0 -0
  57. data/misc/openlayers/doc_config/Data/IndexInfo.nd +0 -0
  58. data/misc/openlayers/doc_config/Data/PreviousMenuState.nd +0 -0
  59. data/misc/openlayers/doc_config/Data/PreviousSettings.nd +0 -0
  60. data/misc/openlayers/doc_config/Data/SymbolTable.nd +0 -0
  61. data/misc/openlayers/doc_config/Languages.txt +0 -113
  62. data/misc/openlayers/doc_config/Menu.txt +0 -520
  63. data/misc/openlayers/doc_config/OL.css +0 -20
  64. data/misc/openlayers/doc_config/Topics.txt +0 -102
  65. data/misc/openlayers/examples/Jugl.js +0 -8
  66. data/misc/openlayers/examples/KMLParser.html +0 -57
  67. data/misc/openlayers/examples/SLDSelect.html +0 -202
  68. data/misc/openlayers/examples/WMSDescribeLayerParser.html +0 -52
  69. data/misc/openlayers/examples/accelerometer.html +0 -100
  70. data/misc/openlayers/examples/accessible-click-control.html +0 -69
  71. data/misc/openlayers/examples/accessible-click-control.js +0 -199
  72. data/misc/openlayers/examples/accessible-panel.html +0 -130
  73. data/misc/openlayers/examples/accessible-panel.js +0 -64
  74. data/misc/openlayers/examples/accessible.html +0 -167
  75. data/misc/openlayers/examples/all-overlays-google.html +0 -34
  76. data/misc/openlayers/examples/all-overlays-google.js +0 -19
  77. data/misc/openlayers/examples/all-overlays.html +0 -76
  78. data/misc/openlayers/examples/anchor-permalink.html +0 -29
  79. data/misc/openlayers/examples/anchor-permalink.js +0 -13
  80. data/misc/openlayers/examples/animated_panning.html +0 -98
  81. data/misc/openlayers/examples/animator.js +0 -670
  82. data/misc/openlayers/examples/arcgis93rest.html +0 -69
  83. data/misc/openlayers/examples/arcgiscache_ags.html +0 -221
  84. data/misc/openlayers/examples/arcgiscache_direct.html +0 -108
  85. data/misc/openlayers/examples/arcgiscache_jsonp.html +0 -106
  86. data/misc/openlayers/examples/arcims-thematic.html +0 -82
  87. data/misc/openlayers/examples/arcims.html +0 -57
  88. data/misc/openlayers/examples/attribution.html +0 -60
  89. data/misc/openlayers/examples/behavior-fixed-http-gml.html +0 -56
  90. data/misc/openlayers/examples/bing-tiles-restrictedzoom.html +0 -43
  91. data/misc/openlayers/examples/bing-tiles-restrictedzoom.js +0 -37
  92. data/misc/openlayers/examples/bing-tiles.html +0 -39
  93. data/misc/openlayers/examples/bing-tiles.js +0 -31
  94. data/misc/openlayers/examples/bing.html +0 -64
  95. data/misc/openlayers/examples/bootstrap.html +0 -81
  96. data/misc/openlayers/examples/bootstrap.js +0 -31
  97. data/misc/openlayers/examples/boxes-vector.html +0 -59
  98. data/misc/openlayers/examples/boxes.html +0 -58
  99. data/misc/openlayers/examples/browser.html +0 -152
  100. data/misc/openlayers/examples/browser.js +0 -241
  101. data/misc/openlayers/examples/buffer.html +0 -54
  102. data/misc/openlayers/examples/cache-read.html +0 -36
  103. data/misc/openlayers/examples/cache-read.js +0 -36
  104. data/misc/openlayers/examples/cache-write.html +0 -37
  105. data/misc/openlayers/examples/cache-write.js +0 -46
  106. data/misc/openlayers/examples/canvas-hit-detection.html +0 -31
  107. data/misc/openlayers/examples/canvas-hit-detection.js +0 -88
  108. data/misc/openlayers/examples/canvas-inspector.html +0 -53
  109. data/misc/openlayers/examples/canvas-inspector.js +0 -91
  110. data/misc/openlayers/examples/canvas.html +0 -35
  111. data/misc/openlayers/examples/canvas.js +0 -57
  112. data/misc/openlayers/examples/cartodb-geojson.html +0 -71
  113. data/misc/openlayers/examples/click-handler.html +0 -232
  114. data/misc/openlayers/examples/click.html +0 -91
  115. data/misc/openlayers/examples/clientzoom.html +0 -72
  116. data/misc/openlayers/examples/clientzoom.js +0 -39
  117. data/misc/openlayers/examples/controls.html +0 -86
  118. data/misc/openlayers/examples/cql-format.html +0 -54
  119. data/misc/openlayers/examples/cql-format.js +0 -61
  120. data/misc/openlayers/examples/cross-origin-xml.html +0 -32
  121. data/misc/openlayers/examples/cross-origin-xml.js +0 -25
  122. data/misc/openlayers/examples/cross-origin.html +0 -36
  123. data/misc/openlayers/examples/cross-origin.js +0 -39
  124. data/misc/openlayers/examples/custom-control.html +0 -68
  125. data/misc/openlayers/examples/custom-style.html +0 -66
  126. data/misc/openlayers/examples/data/4_m_citylights_lg.gif +0 -0
  127. data/misc/openlayers/examples/data/line.json +0 -10
  128. data/misc/openlayers/examples/data/point.json +0 -8
  129. data/misc/openlayers/examples/data/poly.json +0 -9
  130. data/misc/openlayers/examples/data/roads.json +0 -349
  131. data/misc/openlayers/examples/data/tazdem.tiff +0 -0
  132. data/misc/openlayers/examples/debug.html +0 -77
  133. data/misc/openlayers/examples/document-drag.html +0 -43
  134. data/misc/openlayers/examples/donut.html +0 -62
  135. data/misc/openlayers/examples/donut.js +0 -44
  136. data/misc/openlayers/examples/drag-feature.html +0 -114
  137. data/misc/openlayers/examples/draw-feature.html +0 -143
  138. data/misc/openlayers/examples/draw-undo-redo.html +0 -38
  139. data/misc/openlayers/examples/draw-undo-redo.js +0 -45
  140. data/misc/openlayers/examples/dynamic-text-layer.html +0 -101
  141. data/misc/openlayers/examples/editing-methods.html +0 -58
  142. data/misc/openlayers/examples/editing-methods.js +0 -83
  143. data/misc/openlayers/examples/editingtoolbar-outside.html +0 -56
  144. data/misc/openlayers/examples/editingtoolbar.html +0 -55
  145. data/misc/openlayers/examples/encoded-polyline.html +0 -47
  146. data/misc/openlayers/examples/events.html +0 -155
  147. data/misc/openlayers/examples/example-list.html +0 -302
  148. data/misc/openlayers/examples/example.html +0 -25
  149. data/misc/openlayers/examples/example.js +0 -23
  150. data/misc/openlayers/examples/feature-events.html +0 -46
  151. data/misc/openlayers/examples/feature-events.js +0 -67
  152. data/misc/openlayers/examples/filter-strategy.html +0 -54
  153. data/misc/openlayers/examples/filter-strategy.js +0 -84
  154. data/misc/openlayers/examples/filter.html +0 -107
  155. data/misc/openlayers/examples/fractional-zoom.html +0 -72
  156. data/misc/openlayers/examples/fullScreen.html +0 -53
  157. data/misc/openlayers/examples/fullScreen.js +0 -20
  158. data/misc/openlayers/examples/fusiontables.html +0 -35
  159. data/misc/openlayers/examples/fusiontables.js +0 -51
  160. data/misc/openlayers/examples/game-accel-ball.html +0 -82
  161. data/misc/openlayers/examples/geojson-reprojected.html +0 -46
  162. data/misc/openlayers/examples/geojson-reprojected.js +0 -27
  163. data/misc/openlayers/examples/geojson-reprojected.json +0 -1
  164. data/misc/openlayers/examples/geojson.html +0 -77
  165. data/misc/openlayers/examples/geolocation.html +0 -41
  166. data/misc/openlayers/examples/geolocation.js +0 -112
  167. data/misc/openlayers/examples/georss-flickr.html +0 -119
  168. data/misc/openlayers/examples/georss-markers.html +0 -45
  169. data/misc/openlayers/examples/georss.html +0 -63
  170. data/misc/openlayers/examples/georss.xml +0 -378
  171. data/misc/openlayers/examples/getfeature-wfs.html +0 -84
  172. data/misc/openlayers/examples/getfeatureinfo-control.html +0 -221
  173. data/misc/openlayers/examples/getfeatureinfo-popup.html +0 -96
  174. data/misc/openlayers/examples/gml-layer.html +0 -48
  175. data/misc/openlayers/examples/gml/line.xml +0 -42
  176. data/misc/openlayers/examples/gml/multipoint.xml +0 -70
  177. data/misc/openlayers/examples/gml/multipolygon.xml +0 -106
  178. data/misc/openlayers/examples/gml/owls.xml +0 -156
  179. data/misc/openlayers/examples/gml/point.xml +0 -42
  180. data/misc/openlayers/examples/gml/polygon.xml +0 -89
  181. data/misc/openlayers/examples/google-static.html +0 -39
  182. data/misc/openlayers/examples/google-static.js +0 -61
  183. data/misc/openlayers/examples/google-v3-alloverlays.html +0 -33
  184. data/misc/openlayers/examples/google-v3-alloverlays.js +0 -35
  185. data/misc/openlayers/examples/google-v3.html +0 -35
  186. data/misc/openlayers/examples/google-v3.js +0 -39
  187. data/misc/openlayers/examples/google.html +0 -69
  188. data/misc/openlayers/examples/graphic-name.html +0 -42
  189. data/misc/openlayers/examples/graphic-name.js +0 -67
  190. data/misc/openlayers/examples/graticule.html +0 -116
  191. data/misc/openlayers/examples/gutter.html +0 -55
  192. data/misc/openlayers/examples/highlight-feature.html +0 -88
  193. data/misc/openlayers/examples/hover-handler.html +0 -216
  194. data/misc/openlayers/examples/image-layer.html +0 -76
  195. data/misc/openlayers/examples/img/check-round-green.png +0 -0
  196. data/misc/openlayers/examples/img/check-round-grey.png +0 -0
  197. data/misc/openlayers/examples/img/list.png +0 -0
  198. data/misc/openlayers/examples/img/locate.png +0 -0
  199. data/misc/openlayers/examples/img/marker_shadow.png +0 -0
  200. data/misc/openlayers/examples/img/minus1.png +0 -0
  201. data/misc/openlayers/examples/img/mobile-layers.png +0 -0
  202. data/misc/openlayers/examples/img/mobile-loc.png +0 -0
  203. data/misc/openlayers/examples/img/mobile-zoombar.png +0 -0
  204. data/misc/openlayers/examples/img/openlayers.png +0 -0
  205. data/misc/openlayers/examples/img/popupMatrix.jpg +0 -0
  206. data/misc/openlayers/examples/img/small.jpg +0 -0
  207. data/misc/openlayers/examples/img/thinlong.jpg +0 -0
  208. data/misc/openlayers/examples/img/widelong.jpg +0 -0
  209. data/misc/openlayers/examples/img/wideshort.jpg +0 -0
  210. data/misc/openlayers/examples/intersects.html +0 -193
  211. data/misc/openlayers/examples/kamap.html +0 -45
  212. data/misc/openlayers/examples/kamap.txt +0 -508
  213. data/misc/openlayers/examples/kinetic.html +0 -44
  214. data/misc/openlayers/examples/kinetic.js +0 -27
  215. data/misc/openlayers/examples/kml-layer.html +0 -36
  216. data/misc/openlayers/examples/kml-layer.js +0 -22
  217. data/misc/openlayers/examples/kml-pointtrack.html +0 -40
  218. data/misc/openlayers/examples/kml-pointtrack.js +0 -52
  219. data/misc/openlayers/examples/kml-track.html +0 -42
  220. data/misc/openlayers/examples/kml-track.js +0 -40
  221. data/misc/openlayers/examples/kml-track.kml +0 -3359
  222. data/misc/openlayers/examples/kml/lines.kml +0 -275
  223. data/misc/openlayers/examples/kml/styles.kml +0 -21
  224. data/misc/openlayers/examples/kml/sundials.kml +0 -2273
  225. data/misc/openlayers/examples/label-scale.html +0 -34
  226. data/misc/openlayers/examples/label-scale.js +0 -72
  227. data/misc/openlayers/examples/late-render.html +0 -48
  228. data/misc/openlayers/examples/layer-opacity.html +0 -95
  229. data/misc/openlayers/examples/layerLoadMonitoring.html +0 -135
  230. data/misc/openlayers/examples/layerswitcher.html +0 -60
  231. data/misc/openlayers/examples/light-basic.html +0 -35
  232. data/misc/openlayers/examples/light-basic.js +0 -67
  233. data/misc/openlayers/examples/lite.html +0 -39
  234. data/misc/openlayers/examples/mapbox.html +0 -30
  235. data/misc/openlayers/examples/mapbox.js +0 -21
  236. data/misc/openlayers/examples/mapguide.html +0 -155
  237. data/misc/openlayers/examples/mapquest.html +0 -28
  238. data/misc/openlayers/examples/mapquest.js +0 -36
  239. data/misc/openlayers/examples/mapserver.html +0 -41
  240. data/misc/openlayers/examples/mapserver_untiled.html +0 -43
  241. data/misc/openlayers/examples/marker-shadow.html +0 -152
  242. data/misc/openlayers/examples/markerResize.html +0 -60
  243. data/misc/openlayers/examples/markers.html +0 -59
  244. data/misc/openlayers/examples/markersTextLayer.html +0 -41
  245. data/misc/openlayers/examples/measure.html +0 -203
  246. data/misc/openlayers/examples/mobile-base.js +0 -167
  247. data/misc/openlayers/examples/mobile-drawing.html +0 -52
  248. data/misc/openlayers/examples/mobile-drawing.js +0 -71
  249. data/misc/openlayers/examples/mobile-jq.html +0 -76
  250. data/misc/openlayers/examples/mobile-jq.js +0 -159
  251. data/misc/openlayers/examples/mobile-layers.html +0 -62
  252. data/misc/openlayers/examples/mobile-layers.js +0 -71
  253. data/misc/openlayers/examples/mobile-navigation.html +0 -52
  254. data/misc/openlayers/examples/mobile-navigation.js +0 -24
  255. data/misc/openlayers/examples/mobile-sencha.html +0 -184
  256. data/misc/openlayers/examples/mobile-sencha.js +0 -198
  257. data/misc/openlayers/examples/mobile-wmts-vienna.css +0 -205
  258. data/misc/openlayers/examples/mobile-wmts-vienna.html +0 -27
  259. data/misc/openlayers/examples/mobile-wmts-vienna.js +0 -281
  260. data/misc/openlayers/examples/mobile.html +0 -56
  261. data/misc/openlayers/examples/mobile.js +0 -39
  262. data/misc/openlayers/examples/modify-feature.html +0 -193
  263. data/misc/openlayers/examples/mouse-position.html +0 -67
  264. data/misc/openlayers/examples/mousewheel-interval.html +0 -63
  265. data/misc/openlayers/examples/multiserver.html +0 -52
  266. data/misc/openlayers/examples/multitouch.html +0 -28
  267. data/misc/openlayers/examples/mvs.html +0 -129
  268. data/misc/openlayers/examples/navigation-control.html +0 -44
  269. data/misc/openlayers/examples/navigation-history.html +0 -62
  270. data/misc/openlayers/examples/navtoolbar-alwaysZoom.html +0 -85
  271. data/misc/openlayers/examples/navtoolbar-outsidemap.html +0 -47
  272. data/misc/openlayers/examples/navtoolbar.html +0 -46
  273. data/misc/openlayers/examples/offline-storage.html +0 -44
  274. data/misc/openlayers/examples/offline-storage.js +0 -199
  275. data/misc/openlayers/examples/openls.html +0 -88
  276. data/misc/openlayers/examples/ordering.html +0 -221
  277. data/misc/openlayers/examples/osm-google.html +0 -32
  278. data/misc/openlayers/examples/osm-google.js +0 -23
  279. data/misc/openlayers/examples/osm-grayscale.html +0 -77
  280. data/misc/openlayers/examples/osm-marker-popup.html +0 -32
  281. data/misc/openlayers/examples/osm-marker-popup.js +0 -39
  282. data/misc/openlayers/examples/osm.html +0 -41
  283. data/misc/openlayers/examples/osm/sutton_coldfield.osm +0 -662
  284. data/misc/openlayers/examples/overviewmap.html +0 -120
  285. data/misc/openlayers/examples/pan-zoom-panels.html +0 -97
  286. data/misc/openlayers/examples/panel.html +0 -99
  287. data/misc/openlayers/examples/point-grid.html +0 -75
  288. data/misc/openlayers/examples/point-grid.js +0 -33
  289. data/misc/openlayers/examples/point-track-markers.html +0 -72
  290. data/misc/openlayers/examples/polar-projections.html +0 -41
  291. data/misc/openlayers/examples/polar-projections.js +0 -84
  292. data/misc/openlayers/examples/popupMatrix.html +0 -652
  293. data/misc/openlayers/examples/proxy.cgi +0 -81
  294. data/misc/openlayers/examples/regular-polygons.html +0 -177
  295. data/misc/openlayers/examples/resize-features.html +0 -101
  296. data/misc/openlayers/examples/restricted-extent.html +0 -77
  297. data/misc/openlayers/examples/rotate-features.html +0 -113
  298. data/misc/openlayers/examples/select-feature-multilayer.html +0 -129
  299. data/misc/openlayers/examples/select-feature-openpopup.html +0 -106
  300. data/misc/openlayers/examples/select-feature.html +0 -170
  301. data/misc/openlayers/examples/setextent.html +0 -39
  302. data/misc/openlayers/examples/simplify-linestring.html +0 -103
  303. data/misc/openlayers/examples/simplify-linestring.js +0 -599
  304. data/misc/openlayers/examples/single-tile.html +0 -33
  305. data/misc/openlayers/examples/single-tile.js +0 -20
  306. data/misc/openlayers/examples/sld-parser.html +0 -70
  307. data/misc/openlayers/examples/sld.html +0 -31
  308. data/misc/openlayers/examples/sld.js +0 -102
  309. data/misc/openlayers/examples/snap-grid.html +0 -78
  310. data/misc/openlayers/examples/snap-grid.js +0 -81
  311. data/misc/openlayers/examples/snap-split.html +0 -281
  312. data/misc/openlayers/examples/snapping.html +0 -324
  313. data/misc/openlayers/examples/sos.html +0 -189
  314. data/misc/openlayers/examples/spherical-mercator.html +0 -120
  315. data/misc/openlayers/examples/split-feature.html +0 -116
  316. data/misc/openlayers/examples/strategy-bbox.html +0 -106
  317. data/misc/openlayers/examples/strategy-cluster-extended.html +0 -125
  318. data/misc/openlayers/examples/strategy-cluster-extended.js +0 -247
  319. data/misc/openlayers/examples/strategy-cluster-threshold.html +0 -149
  320. data/misc/openlayers/examples/strategy-cluster.html +0 -238
  321. data/misc/openlayers/examples/strategy-paging.html +0 -115
  322. data/misc/openlayers/examples/style-rules.html +0 -49
  323. data/misc/openlayers/examples/style-rules.js +0 -99
  324. data/misc/openlayers/examples/style.css +0 -143
  325. data/misc/openlayers/examples/style.mobile-jq.css +0 -62
  326. data/misc/openlayers/examples/stylemap.html +0 -100
  327. data/misc/openlayers/examples/styles-context.html +0 -117
  328. data/misc/openlayers/examples/styles-rotation.html +0 -93
  329. data/misc/openlayers/examples/styles-unique.html +0 -109
  330. data/misc/openlayers/examples/sundials-spherical-mercator.html +0 -111
  331. data/misc/openlayers/examples/sundials.html +0 -107
  332. data/misc/openlayers/examples/symbolizers-fill-stroke-graphic.html +0 -141
  333. data/misc/openlayers/examples/tasmania/TasmaniaCities.xml +0 -40
  334. data/misc/openlayers/examples/tasmania/TasmaniaRoads.xml +0 -204
  335. data/misc/openlayers/examples/tasmania/TasmaniaStateBoundaries.xml +0 -92
  336. data/misc/openlayers/examples/tasmania/TasmaniaWaterBodies.xml +0 -162
  337. data/misc/openlayers/examples/tasmania/sld-tasmania.xml +0 -594
  338. data/misc/openlayers/examples/teleportation.html +0 -76
  339. data/misc/openlayers/examples/textfile.txt +0 -4
  340. data/misc/openlayers/examples/tile-origin.html +0 -38
  341. data/misc/openlayers/examples/tile-origin.js +0 -16
  342. data/misc/openlayers/examples/tilecache.html +0 -58
  343. data/misc/openlayers/examples/tms.html +0 -62
  344. data/misc/openlayers/examples/transform-feature.html +0 -123
  345. data/misc/openlayers/examples/transition.html +0 -70
  346. data/misc/openlayers/examples/using-proj4js.html +0 -109
  347. data/misc/openlayers/examples/using-proj4js.js +0 -132
  348. data/misc/openlayers/examples/utfgrid-geography-class.html +0 -51
  349. data/misc/openlayers/examples/utfgrid-geography-class.js +0 -62
  350. data/misc/openlayers/examples/utfgrid.html +0 -64
  351. data/misc/openlayers/examples/utfgrid.js +0 -61
  352. data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/0/0.json +0 -1
  353. data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/0/1.json +0 -1
  354. data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/0/2.json +0 -1
  355. data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/1/0.json +0 -1
  356. data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/1/1.json +0 -1
  357. data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/1/2.json +0 -1
  358. data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/2/0.json +0 -1
  359. data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/2/1.json +0 -1
  360. data/misc/openlayers/examples/utfgrid/bio_utfgrid/1/2/2.json +0 -1
  361. data/misc/openlayers/examples/utfgrid/geography-class/0/0/0.grid.json +0 -1
  362. data/misc/openlayers/examples/utfgrid/geography-class/1/0/0.grid.json +0 -1
  363. data/misc/openlayers/examples/utfgrid/geography-class/1/0/1.grid.json +0 -1
  364. data/misc/openlayers/examples/utfgrid/geography-class/1/1/0.grid.json +0 -1
  365. data/misc/openlayers/examples/utfgrid/geography-class/1/1/1.grid.json +0 -1
  366. data/misc/openlayers/examples/utfgrid/geography-class/2/0/0.grid.json +0 -1
  367. data/misc/openlayers/examples/utfgrid/geography-class/2/0/1.grid.json +0 -1
  368. data/misc/openlayers/examples/utfgrid/geography-class/2/0/2.grid.json +0 -1
  369. data/misc/openlayers/examples/utfgrid/geography-class/2/0/3.grid.json +0 -1
  370. data/misc/openlayers/examples/utfgrid/geography-class/2/1/0.grid.json +0 -1
  371. data/misc/openlayers/examples/utfgrid/geography-class/2/1/1.grid.json +0 -1
  372. data/misc/openlayers/examples/utfgrid/geography-class/2/1/2.grid.json +0 -1
  373. data/misc/openlayers/examples/utfgrid/geography-class/2/1/3.grid.json +0 -1
  374. data/misc/openlayers/examples/utfgrid/geography-class/2/2/0.grid.json +0 -1
  375. data/misc/openlayers/examples/utfgrid/geography-class/2/2/1.grid.json +0 -1
  376. data/misc/openlayers/examples/utfgrid/geography-class/2/2/2.grid.json +0 -1
  377. data/misc/openlayers/examples/utfgrid/geography-class/2/2/3.grid.json +0 -1
  378. data/misc/openlayers/examples/utfgrid/geography-class/2/3/0.grid.json +0 -1
  379. data/misc/openlayers/examples/utfgrid/geography-class/2/3/1.grid.json +0 -1
  380. data/misc/openlayers/examples/utfgrid/geography-class/2/3/2.grid.json +0 -1
  381. data/misc/openlayers/examples/utfgrid/geography-class/2/3/3.grid.json +0 -1
  382. data/misc/openlayers/examples/utfgrid/world_utfgrid/1/0/0.json +0 -1
  383. data/misc/openlayers/examples/utfgrid/world_utfgrid/1/0/1.json +0 -1
  384. data/misc/openlayers/examples/utfgrid/world_utfgrid/1/0/2.json +0 -1
  385. data/misc/openlayers/examples/utfgrid/world_utfgrid/1/1/0.json +0 -1
  386. data/misc/openlayers/examples/utfgrid/world_utfgrid/1/1/1.json +0 -1
  387. data/misc/openlayers/examples/utfgrid/world_utfgrid/1/1/2.json +0 -1
  388. data/misc/openlayers/examples/utfgrid/world_utfgrid/1/2/0.json +0 -1
  389. data/misc/openlayers/examples/utfgrid/world_utfgrid/1/2/1.json +0 -1
  390. data/misc/openlayers/examples/utfgrid/world_utfgrid/1/2/2.json +0 -1
  391. data/misc/openlayers/examples/utfgrid_twogrids.html +0 -51
  392. data/misc/openlayers/examples/utfgrid_twogrids.js +0 -70
  393. data/misc/openlayers/examples/vector-features-with-text.html +0 -138
  394. data/misc/openlayers/examples/vector-features.html +0 -149
  395. data/misc/openlayers/examples/vector-formats.html +0 -240
  396. data/misc/openlayers/examples/web-mercator.html +0 -50
  397. data/misc/openlayers/examples/web-mercator.js +0 -37
  398. data/misc/openlayers/examples/wfs-filter.html +0 -35
  399. data/misc/openlayers/examples/wfs-filter.js +0 -48
  400. data/misc/openlayers/examples/wfs-protocol-transactions.html +0 -104
  401. data/misc/openlayers/examples/wfs-protocol-transactions.js +0 -106
  402. data/misc/openlayers/examples/wfs-protocol.html +0 -55
  403. data/misc/openlayers/examples/wfs-reprojection.html +0 -42
  404. data/misc/openlayers/examples/wfs-reprojection.js +0 -60
  405. data/misc/openlayers/examples/wfs-snap-split.html +0 -292
  406. data/misc/openlayers/examples/wfs-spatial-filter.html +0 -37
  407. data/misc/openlayers/examples/wfs-spatial-filter.js +0 -36
  408. data/misc/openlayers/examples/wfs-states.html +0 -34
  409. data/misc/openlayers/examples/wfs-states.js +0 -35
  410. data/misc/openlayers/examples/wmc.html +0 -150
  411. data/misc/openlayers/examples/wms-long-url.html +0 -44
  412. data/misc/openlayers/examples/wms-long-url.js +0 -26
  413. data/misc/openlayers/examples/wms-untiled.html +0 -48
  414. data/misc/openlayers/examples/wms-v13.html +0 -57
  415. data/misc/openlayers/examples/wms.html +0 -49
  416. data/misc/openlayers/examples/wmst.html +0 -63
  417. data/misc/openlayers/examples/wmts-capabilities.html +0 -43
  418. data/misc/openlayers/examples/wmts-capabilities.js +0 -58
  419. data/misc/openlayers/examples/wmts-getfeatureinfo.html +0 -74
  420. data/misc/openlayers/examples/wmts-getfeatureinfo.js +0 -94
  421. data/misc/openlayers/examples/wmts.html +0 -41
  422. data/misc/openlayers/examples/wmts.js +0 -35
  423. data/misc/openlayers/examples/wps-client.html +0 -31
  424. data/misc/openlayers/examples/wps-client.js +0 -75
  425. data/misc/openlayers/examples/wps.html +0 -89
  426. data/misc/openlayers/examples/wps.js +0 -353
  427. data/misc/openlayers/examples/wrapDateLine.html +0 -73
  428. data/misc/openlayers/examples/xhtml.html +0 -42
  429. data/misc/openlayers/examples/xml.html +0 -161
  430. data/misc/openlayers/examples/xml/features.xml +0 -2
  431. data/misc/openlayers/examples/xml/georss-flickr.xml +0 -730
  432. data/misc/openlayers/examples/xml/track1.xml +0 -98
  433. data/misc/openlayers/examples/xml/wmsdescribelayer.xml +0 -5
  434. data/misc/openlayers/examples/xyz-esri.html +0 -45
  435. data/misc/openlayers/examples/yelp-georss.xml +0 -147
  436. data/misc/openlayers/examples/zoom.html +0 -68
  437. data/misc/openlayers/examples/zoom.js +0 -34
  438. data/misc/openlayers/examples/zoomLevels.html +0 -81
  439. data/misc/openlayers/examples/zoomify.html +0 -70
  440. data/misc/openlayers/img/blank.gif +0 -0
  441. data/misc/openlayers/img/cloud-popup-relative.png +0 -0
  442. data/misc/openlayers/img/drag-rectangle-off.png +0 -0
  443. data/misc/openlayers/img/drag-rectangle-on.png +0 -0
  444. data/misc/openlayers/img/east-mini.png +0 -0
  445. data/misc/openlayers/img/layer-switcher-maximize.png +0 -0
  446. data/misc/openlayers/img/layer-switcher-minimize.png +0 -0
  447. data/misc/openlayers/img/marker-blue.png +0 -0
  448. data/misc/openlayers/img/marker-gold.png +0 -0
  449. data/misc/openlayers/img/marker-green.png +0 -0
  450. data/misc/openlayers/img/marker.png +0 -0
  451. data/misc/openlayers/img/measuring-stick-off.png +0 -0
  452. data/misc/openlayers/img/measuring-stick-on.png +0 -0
  453. data/misc/openlayers/img/north-mini.png +0 -0
  454. data/misc/openlayers/img/panning-hand-off.png +0 -0
  455. data/misc/openlayers/img/panning-hand-on.png +0 -0
  456. data/misc/openlayers/img/slider.png +0 -0
  457. data/misc/openlayers/img/south-mini.png +0 -0
  458. data/misc/openlayers/img/west-mini.png +0 -0
  459. data/misc/openlayers/img/zoom-minus-mini.png +0 -0
  460. data/misc/openlayers/img/zoom-plus-mini.png +0 -0
  461. data/misc/openlayers/img/zoom-world-mini.png +0 -0
  462. data/misc/openlayers/img/zoombar.png +0 -0
  463. data/misc/openlayers/lib/Firebug/errorIcon.png +0 -0
  464. data/misc/openlayers/lib/Firebug/firebug.css +0 -209
  465. data/misc/openlayers/lib/Firebug/firebug.html +0 -23
  466. data/misc/openlayers/lib/Firebug/firebug.js +0 -674
  467. data/misc/openlayers/lib/Firebug/firebugx.js +0 -10
  468. data/misc/openlayers/lib/Firebug/infoIcon.png +0 -0
  469. data/misc/openlayers/lib/Firebug/license.txt +0 -30
  470. data/misc/openlayers/lib/Firebug/readme.txt +0 -13
  471. data/misc/openlayers/lib/Firebug/warningIcon.png +0 -0
  472. data/misc/openlayers/lib/OpenLayers.js +0 -429
  473. data/misc/openlayers/lib/OpenLayers/Animation.js +0 -102
  474. data/misc/openlayers/lib/OpenLayers/BaseTypes.js +0 -463
  475. data/misc/openlayers/lib/OpenLayers/BaseTypes/Bounds.js +0 -837
  476. data/misc/openlayers/lib/OpenLayers/BaseTypes/Class.js +0 -121
  477. data/misc/openlayers/lib/OpenLayers/BaseTypes/Date.js +0 -123
  478. data/misc/openlayers/lib/OpenLayers/BaseTypes/Element.js +0 -189
  479. data/misc/openlayers/lib/OpenLayers/BaseTypes/LonLat.js +0 -215
  480. data/misc/openlayers/lib/OpenLayers/BaseTypes/Pixel.js +0 -143
  481. data/misc/openlayers/lib/OpenLayers/BaseTypes/Size.js +0 -89
  482. data/misc/openlayers/lib/OpenLayers/Console.js +0 -250
  483. data/misc/openlayers/lib/OpenLayers/Control.js +0 -371
  484. data/misc/openlayers/lib/OpenLayers/Control/ArgParser.js +0 -182
  485. data/misc/openlayers/lib/OpenLayers/Control/Attribution.js +0 -104
  486. data/misc/openlayers/lib/OpenLayers/Control/Button.js +0 -44
  487. data/misc/openlayers/lib/OpenLayers/Control/CacheRead.js +0 -156
  488. data/misc/openlayers/lib/OpenLayers/Control/CacheWrite.js +0 -257
  489. data/misc/openlayers/lib/OpenLayers/Control/DragFeature.js +0 -366
  490. data/misc/openlayers/lib/OpenLayers/Control/DragPan.js +0 -156
  491. data/misc/openlayers/lib/OpenLayers/Control/DrawFeature.js +0 -229
  492. data/misc/openlayers/lib/OpenLayers/Control/EditingToolbar.js +0 -81
  493. data/misc/openlayers/lib/OpenLayers/Control/Geolocate.js +0 -192
  494. data/misc/openlayers/lib/OpenLayers/Control/GetFeature.js +0 -597
  495. data/misc/openlayers/lib/OpenLayers/Control/Graticule.js +0 -377
  496. data/misc/openlayers/lib/OpenLayers/Control/KeyboardDefaults.js +0 -142
  497. data/misc/openlayers/lib/OpenLayers/Control/LayerSwitcher.js +0 -521
  498. data/misc/openlayers/lib/OpenLayers/Control/Measure.js +0 -379
  499. data/misc/openlayers/lib/OpenLayers/Control/ModifyFeature.js +0 -835
  500. data/misc/openlayers/lib/OpenLayers/Control/MousePosition.js +0 -227
  501. data/misc/openlayers/lib/OpenLayers/Control/NavToolbar.js +0 -57
  502. data/misc/openlayers/lib/OpenLayers/Control/Navigation.js +0 -345
  503. data/misc/openlayers/lib/OpenLayers/Control/NavigationHistory.js +0 -423
  504. data/misc/openlayers/lib/OpenLayers/Control/OverviewMap.js +0 -750
  505. data/misc/openlayers/lib/OpenLayers/Control/Pan.js +0 -95
  506. data/misc/openlayers/lib/OpenLayers/Control/PanPanel.js +0 -73
  507. data/misc/openlayers/lib/OpenLayers/Control/PanZoom.js +0 -233
  508. data/misc/openlayers/lib/OpenLayers/Control/PanZoomBar.js +0 -408
  509. data/misc/openlayers/lib/OpenLayers/Control/Panel.js +0 -431
  510. data/misc/openlayers/lib/OpenLayers/Control/Permalink.js +0 -257
  511. data/misc/openlayers/lib/OpenLayers/Control/PinchZoom.js +0 -157
  512. data/misc/openlayers/lib/OpenLayers/Control/SLDSelect.js +0 -567
  513. data/misc/openlayers/lib/OpenLayers/Control/Scale.js +0 -100
  514. data/misc/openlayers/lib/OpenLayers/Control/ScaleLine.js +0 -220
  515. data/misc/openlayers/lib/OpenLayers/Control/SelectFeature.js +0 -643
  516. data/misc/openlayers/lib/OpenLayers/Control/Snapping.js +0 -560
  517. data/misc/openlayers/lib/OpenLayers/Control/Split.js +0 -494
  518. data/misc/openlayers/lib/OpenLayers/Control/TouchNavigation.js +0 -182
  519. data/misc/openlayers/lib/OpenLayers/Control/TransformFeature.js +0 -624
  520. data/misc/openlayers/lib/OpenLayers/Control/UTFGrid.js +0 -240
  521. data/misc/openlayers/lib/OpenLayers/Control/WMSGetFeatureInfo.js +0 -532
  522. data/misc/openlayers/lib/OpenLayers/Control/WMTSGetFeatureInfo.js +0 -400
  523. data/misc/openlayers/lib/OpenLayers/Control/Zoom.js +0 -138
  524. data/misc/openlayers/lib/OpenLayers/Control/ZoomBox.js +0 -129
  525. data/misc/openlayers/lib/OpenLayers/Control/ZoomIn.js +0 -29
  526. data/misc/openlayers/lib/OpenLayers/Control/ZoomOut.js +0 -29
  527. data/misc/openlayers/lib/OpenLayers/Control/ZoomPanel.js +0 -54
  528. data/misc/openlayers/lib/OpenLayers/Control/ZoomToMaxExtent.js +0 -35
  529. data/misc/openlayers/lib/OpenLayers/Events.js +0 -1170
  530. data/misc/openlayers/lib/OpenLayers/Events/buttonclick.js +0 -206
  531. data/misc/openlayers/lib/OpenLayers/Events/featureclick.js +0 -321
  532. data/misc/openlayers/lib/OpenLayers/Feature.js +0 -225
  533. data/misc/openlayers/lib/OpenLayers/Feature/Vector.js +0 -510
  534. data/misc/openlayers/lib/OpenLayers/Filter.js +0 -87
  535. data/misc/openlayers/lib/OpenLayers/Filter/Comparison.js +0 -267
  536. data/misc/openlayers/lib/OpenLayers/Filter/FeatureId.js +0 -87
  537. data/misc/openlayers/lib/OpenLayers/Filter/Function.js +0 -49
  538. data/misc/openlayers/lib/OpenLayers/Filter/Logical.js +0 -121
  539. data/misc/openlayers/lib/OpenLayers/Filter/Spatial.js +0 -122
  540. data/misc/openlayers/lib/OpenLayers/Format.js +0 -123
  541. data/misc/openlayers/lib/OpenLayers/Format/ArcXML.js +0 -1028
  542. data/misc/openlayers/lib/OpenLayers/Format/ArcXML/Features.js +0 -46
  543. data/misc/openlayers/lib/OpenLayers/Format/Atom.js +0 -712
  544. data/misc/openlayers/lib/OpenLayers/Format/CQL.js +0 -452
  545. data/misc/openlayers/lib/OpenLayers/Format/CSWGetDomain.js +0 -34
  546. data/misc/openlayers/lib/OpenLayers/Format/CSWGetDomain/v2_0_2.js +0 -240
  547. data/misc/openlayers/lib/OpenLayers/Format/CSWGetRecords.js +0 -34
  548. data/misc/openlayers/lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js +0 -457
  549. data/misc/openlayers/lib/OpenLayers/Format/Context.js +0 -334
  550. data/misc/openlayers/lib/OpenLayers/Format/EncodedPolyline.js +0 -557
  551. data/misc/openlayers/lib/OpenLayers/Format/Filter.js +0 -53
  552. data/misc/openlayers/lib/OpenLayers/Format/Filter/v1.js +0 -504
  553. data/misc/openlayers/lib/OpenLayers/Format/Filter/v1_0_0.js +0 -184
  554. data/misc/openlayers/lib/OpenLayers/Format/Filter/v1_1_0.js +0 -222
  555. data/misc/openlayers/lib/OpenLayers/Format/GML.js +0 -923
  556. data/misc/openlayers/lib/OpenLayers/Format/GML/Base.js +0 -645
  557. data/misc/openlayers/lib/OpenLayers/Format/GML/v2.js +0 -193
  558. data/misc/openlayers/lib/OpenLayers/Format/GML/v3.js +0 -477
  559. data/misc/openlayers/lib/OpenLayers/Format/GPX.js +0 -385
  560. data/misc/openlayers/lib/OpenLayers/Format/GeoJSON.js +0 -716
  561. data/misc/openlayers/lib/OpenLayers/Format/GeoRSS.js +0 -409
  562. data/misc/openlayers/lib/OpenLayers/Format/JSON.js +0 -398
  563. data/misc/openlayers/lib/OpenLayers/Format/KML.js +0 -1517
  564. data/misc/openlayers/lib/OpenLayers/Format/OGCExceptionReport.js +0 -108
  565. data/misc/openlayers/lib/OpenLayers/Format/OSM.js +0 -465
  566. data/misc/openlayers/lib/OpenLayers/Format/OWSCommon.js +0 -78
  567. data/misc/openlayers/lib/OpenLayers/Format/OWSCommon/v1.js +0 -318
  568. data/misc/openlayers/lib/OpenLayers/Format/OWSCommon/v1_0_0.js +0 -62
  569. data/misc/openlayers/lib/OpenLayers/Format/OWSCommon/v1_1_0.js +0 -116
  570. data/misc/openlayers/lib/OpenLayers/Format/OWSContext.js +0 -86
  571. data/misc/openlayers/lib/OpenLayers/Format/OWSContext/v0_3_1.js +0 -595
  572. data/misc/openlayers/lib/OpenLayers/Format/QueryStringFilter.js +0 -183
  573. data/misc/openlayers/lib/OpenLayers/Format/SLD.js +0 -81
  574. data/misc/openlayers/lib/OpenLayers/Format/SLD/v1.js +0 -1309
  575. data/misc/openlayers/lib/OpenLayers/Format/SLD/v1_0_0.js +0 -46
  576. data/misc/openlayers/lib/OpenLayers/Format/SLD/v1_0_0_GeoServer.js +0 -149
  577. data/misc/openlayers/lib/OpenLayers/Format/SOSCapabilities.js +0 -48
  578. data/misc/openlayers/lib/OpenLayers/Format/SOSCapabilities/v1_0_0.js +0 -158
  579. data/misc/openlayers/lib/OpenLayers/Format/SOSGetFeatureOfInterest.js +0 -190
  580. data/misc/openlayers/lib/OpenLayers/Format/SOSGetObservation.js +0 -302
  581. data/misc/openlayers/lib/OpenLayers/Format/Text.js +0 -151
  582. data/misc/openlayers/lib/OpenLayers/Format/WCSCapabilities.js +0 -47
  583. data/misc/openlayers/lib/OpenLayers/Format/WCSCapabilities/v1.js +0 -55
  584. data/misc/openlayers/lib/OpenLayers/Format/WCSCapabilities/v1_0_0.js +0 -170
  585. data/misc/openlayers/lib/OpenLayers/Format/WCSCapabilities/v1_1_0.js +0 -109
  586. data/misc/openlayers/lib/OpenLayers/Format/WCSGetCoverage.js +0 -199
  587. data/misc/openlayers/lib/OpenLayers/Format/WFS.js +0 -223
  588. data/misc/openlayers/lib/OpenLayers/Format/WFSCapabilities.js +0 -47
  589. data/misc/openlayers/lib/OpenLayers/Format/WFSCapabilities/v1.js +0 -129
  590. data/misc/openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_0_0.js +0 -115
  591. data/misc/openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_1_0.js +0 -63
  592. data/misc/openlayers/lib/OpenLayers/Format/WFSDescribeFeatureType.js +0 -234
  593. data/misc/openlayers/lib/OpenLayers/Format/WFST.js +0 -34
  594. data/misc/openlayers/lib/OpenLayers/Format/WFST/v1.js +0 -446
  595. data/misc/openlayers/lib/OpenLayers/Format/WFST/v1_0_0.js +0 -174
  596. data/misc/openlayers/lib/OpenLayers/Format/WFST/v1_1_0.js +0 -189
  597. data/misc/openlayers/lib/OpenLayers/Format/WKT.js +0 -392
  598. data/misc/openlayers/lib/OpenLayers/Format/WMC.js +0 -182
  599. data/misc/openlayers/lib/OpenLayers/Format/WMC/v1.js +0 -1267
  600. data/misc/openlayers/lib/OpenLayers/Format/WMC/v1_0_0.js +0 -104
  601. data/misc/openlayers/lib/OpenLayers/Format/WMC/v1_1_0.js +0 -149
  602. data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities.js +0 -56
  603. data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1.js +0 -368
  604. data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1.js +0 -122
  605. data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1_0.js +0 -57
  606. data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1_1.js +0 -60
  607. data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1_1_WMSC.js +0 -85
  608. data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_3.js +0 -128
  609. data/misc/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_3_0.js +0 -30
  610. data/misc/openlayers/lib/OpenLayers/Format/WMSDescribeLayer.js +0 -53
  611. data/misc/openlayers/lib/OpenLayers/Format/WMSDescribeLayer/v1_1.js +0 -122
  612. data/misc/openlayers/lib/OpenLayers/Format/WMSGetFeatureInfo.js +0 -296
  613. data/misc/openlayers/lib/OpenLayers/Format/WMTSCapabilities.js +0 -230
  614. data/misc/openlayers/lib/OpenLayers/Format/WMTSCapabilities/v1_0_0.js +0 -251
  615. data/misc/openlayers/lib/OpenLayers/Format/WPSCapabilities.js +0 -48
  616. data/misc/openlayers/lib/OpenLayers/Format/WPSCapabilities/v1_0_0.js +0 -119
  617. data/misc/openlayers/lib/OpenLayers/Format/WPSDescribeProcess.js +0 -185
  618. data/misc/openlayers/lib/OpenLayers/Format/WPSExecute.js +0 -395
  619. data/misc/openlayers/lib/OpenLayers/Format/XLS.js +0 -68
  620. data/misc/openlayers/lib/OpenLayers/Format/XLS/v1.js +0 -304
  621. data/misc/openlayers/lib/OpenLayers/Format/XLS/v1_1_0.js +0 -48
  622. data/misc/openlayers/lib/OpenLayers/Format/XML.js +0 -897
  623. data/misc/openlayers/lib/OpenLayers/Format/XML/VersionedOGC.js +0 -212
  624. data/misc/openlayers/lib/OpenLayers/Geometry.js +0 -500
  625. data/misc/openlayers/lib/OpenLayers/Geometry/Collection.js +0 -563
  626. data/misc/openlayers/lib/OpenLayers/Geometry/Curve.js +0 -89
  627. data/misc/openlayers/lib/OpenLayers/Geometry/LineString.js +0 -646
  628. data/misc/openlayers/lib/OpenLayers/Geometry/LinearRing.js +0 -433
  629. data/misc/openlayers/lib/OpenLayers/Geometry/MultiLineString.js +0 -258
  630. data/misc/openlayers/lib/OpenLayers/Geometry/MultiPoint.js +0 -66
  631. data/misc/openlayers/lib/OpenLayers/Geometry/MultiPolygon.js +0 -42
  632. data/misc/openlayers/lib/OpenLayers/Geometry/Point.js +0 -283
  633. data/misc/openlayers/lib/OpenLayers/Geometry/Polygon.js +0 -255
  634. data/misc/openlayers/lib/OpenLayers/Handler.js +0 -325
  635. data/misc/openlayers/lib/OpenLayers/Handler/Box.js +0 -244
  636. data/misc/openlayers/lib/OpenLayers/Handler/Click.js +0 -505
  637. data/misc/openlayers/lib/OpenLayers/Handler/Drag.js +0 -547
  638. data/misc/openlayers/lib/OpenLayers/Handler/Feature.js +0 -434
  639. data/misc/openlayers/lib/OpenLayers/Handler/Hover.js +0 -180
  640. data/misc/openlayers/lib/OpenLayers/Handler/Keyboard.js +0 -117
  641. data/misc/openlayers/lib/OpenLayers/Handler/MouseWheel.js +0 -264
  642. data/misc/openlayers/lib/OpenLayers/Handler/Path.js +0 -543
  643. data/misc/openlayers/lib/OpenLayers/Handler/Pinch.js +0 -239
  644. data/misc/openlayers/lib/OpenLayers/Handler/Point.js +0 -556
  645. data/misc/openlayers/lib/OpenLayers/Handler/Polygon.js +0 -305
  646. data/misc/openlayers/lib/OpenLayers/Handler/RegularPolygon.js +0 -429
  647. data/misc/openlayers/lib/OpenLayers/Icon.js +0 -243
  648. data/misc/openlayers/lib/OpenLayers/Kinetic.js +0 -178
  649. data/misc/openlayers/lib/OpenLayers/Lang.js +0 -134
  650. data/misc/openlayers/lib/OpenLayers/Lang/ar.js +0 -32
  651. data/misc/openlayers/lib/OpenLayers/Lang/be-tarask.js +0 -54
  652. data/misc/openlayers/lib/OpenLayers/Lang/bg.js +0 -25
  653. data/misc/openlayers/lib/OpenLayers/Lang/br.js +0 -53
  654. data/misc/openlayers/lib/OpenLayers/Lang/ca.js +0 -89
  655. data/misc/openlayers/lib/OpenLayers/Lang/cs-CZ.js +0 -45
  656. data/misc/openlayers/lib/OpenLayers/Lang/da-DK.js +0 -80
  657. data/misc/openlayers/lib/OpenLayers/Lang/de.js +0 -55
  658. data/misc/openlayers/lib/OpenLayers/Lang/el.js +0 -19
  659. data/misc/openlayers/lib/OpenLayers/Lang/en-CA.js +0 -21
  660. data/misc/openlayers/lib/OpenLayers/Lang/en.js +0 -89
  661. data/misc/openlayers/lib/OpenLayers/Lang/es.js +0 -90
  662. data/misc/openlayers/lib/OpenLayers/Lang/fi.js +0 -32
  663. data/misc/openlayers/lib/OpenLayers/Lang/fr.js +0 -53
  664. data/misc/openlayers/lib/OpenLayers/Lang/fur.js +0 -35
  665. data/misc/openlayers/lib/OpenLayers/Lang/gl.js +0 -53
  666. data/misc/openlayers/lib/OpenLayers/Lang/gsw.js +0 -53
  667. data/misc/openlayers/lib/OpenLayers/Lang/hr.js +0 -37
  668. data/misc/openlayers/lib/OpenLayers/Lang/hsb.js +0 -53
  669. data/misc/openlayers/lib/OpenLayers/Lang/hu.js +0 -54
  670. data/misc/openlayers/lib/OpenLayers/Lang/ia.js +0 -53
  671. data/misc/openlayers/lib/OpenLayers/Lang/id.js +0 -54
  672. data/misc/openlayers/lib/OpenLayers/Lang/io.js +0 -19
  673. data/misc/openlayers/lib/OpenLayers/Lang/is.js +0 -27
  674. data/misc/openlayers/lib/OpenLayers/Lang/it.js +0 -80
  675. data/misc/openlayers/lib/OpenLayers/Lang/ja.js +0 -54
  676. data/misc/openlayers/lib/OpenLayers/Lang/km.js +0 -23
  677. data/misc/openlayers/lib/OpenLayers/Lang/ksh.js +0 -53
  678. data/misc/openlayers/lib/OpenLayers/Lang/lt.js +0 -47
  679. data/misc/openlayers/lib/OpenLayers/Lang/nb.js +0 -82
  680. data/misc/openlayers/lib/OpenLayers/Lang/nds.js +0 -37
  681. data/misc/openlayers/lib/OpenLayers/Lang/nl.js +0 -53
  682. data/misc/openlayers/lib/OpenLayers/Lang/nn.js +0 -19
  683. data/misc/openlayers/lib/OpenLayers/Lang/oc.js +0 -53
  684. data/misc/openlayers/lib/OpenLayers/Lang/pl.js +0 -89
  685. data/misc/openlayers/lib/OpenLayers/Lang/pt-BR.js +0 -54
  686. data/misc/openlayers/lib/OpenLayers/Lang/pt.js +0 -55
  687. data/misc/openlayers/lib/OpenLayers/Lang/ro.js +0 -69
  688. data/misc/openlayers/lib/OpenLayers/Lang/ru.js +0 -56
  689. data/misc/openlayers/lib/OpenLayers/Lang/sk.js +0 -44
  690. data/misc/openlayers/lib/OpenLayers/Lang/sv-SE.js +0 -45
  691. data/misc/openlayers/lib/OpenLayers/Lang/te.js +0 -27
  692. data/misc/openlayers/lib/OpenLayers/Lang/vi.js +0 -53
  693. data/misc/openlayers/lib/OpenLayers/Lang/zh-CN.js +0 -80
  694. data/misc/openlayers/lib/OpenLayers/Lang/zh-TW.js +0 -81
  695. data/misc/openlayers/lib/OpenLayers/Layer.js +0 -1377
  696. data/misc/openlayers/lib/OpenLayers/Layer/ArcGIS93Rest.js +0 -225
  697. data/misc/openlayers/lib/OpenLayers/Layer/ArcGISCache.js +0 -480
  698. data/misc/openlayers/lib/OpenLayers/Layer/ArcIMS.js +0 -425
  699. data/misc/openlayers/lib/OpenLayers/Layer/Bing.js +0 -333
  700. data/misc/openlayers/lib/OpenLayers/Layer/Boxes.js +0 -76
  701. data/misc/openlayers/lib/OpenLayers/Layer/EventPane.js +0 -441
  702. data/misc/openlayers/lib/OpenLayers/Layer/FixedZoomLevels.js +0 -319
  703. data/misc/openlayers/lib/OpenLayers/Layer/GeoRSS.js +0 -265
  704. data/misc/openlayers/lib/OpenLayers/Layer/Google.js +0 -809
  705. data/misc/openlayers/lib/OpenLayers/Layer/Google/v3.js +0 -351
  706. data/misc/openlayers/lib/OpenLayers/Layer/Grid.js +0 -1343
  707. data/misc/openlayers/lib/OpenLayers/Layer/HTTPRequest.js +0 -230
  708. data/misc/openlayers/lib/OpenLayers/Layer/Image.js +0 -259
  709. data/misc/openlayers/lib/OpenLayers/Layer/KaMap.js +0 -192
  710. data/misc/openlayers/lib/OpenLayers/Layer/KaMapCache.js +0 -143
  711. data/misc/openlayers/lib/OpenLayers/Layer/MapGuide.js +0 -443
  712. data/misc/openlayers/lib/OpenLayers/Layer/MapServer.js +0 -181
  713. data/misc/openlayers/lib/OpenLayers/Layer/Markers.js +0 -187
  714. data/misc/openlayers/lib/OpenLayers/Layer/OSM.js +0 -123
  715. data/misc/openlayers/lib/OpenLayers/Layer/PointGrid.js +0 -299
  716. data/misc/openlayers/lib/OpenLayers/Layer/PointTrack.js +0 -125
  717. data/misc/openlayers/lib/OpenLayers/Layer/SphericalMercator.js +0 -146
  718. data/misc/openlayers/lib/OpenLayers/Layer/TMS.js +0 -202
  719. data/misc/openlayers/lib/OpenLayers/Layer/Text.js +0 -267
  720. data/misc/openlayers/lib/OpenLayers/Layer/TileCache.js +0 -140
  721. data/misc/openlayers/lib/OpenLayers/Layer/UTFGrid.js +0 -184
  722. data/misc/openlayers/lib/OpenLayers/Layer/Vector.js +0 -1007
  723. data/misc/openlayers/lib/OpenLayers/Layer/Vector/RootContainer.js +0 -154
  724. data/misc/openlayers/lib/OpenLayers/Layer/WMS.js +0 -267
  725. data/misc/openlayers/lib/OpenLayers/Layer/WMTS.js +0 -510
  726. data/misc/openlayers/lib/OpenLayers/Layer/WorldWind.js +0 -105
  727. data/misc/openlayers/lib/OpenLayers/Layer/XYZ.js +0 -172
  728. data/misc/openlayers/lib/OpenLayers/Layer/Zoomify.js +0 -260
  729. data/misc/openlayers/lib/OpenLayers/Map.js +0 -2867
  730. data/misc/openlayers/lib/OpenLayers/Marker.js +0 -241
  731. data/misc/openlayers/lib/OpenLayers/Marker/Box.js +0 -120
  732. data/misc/openlayers/lib/OpenLayers/Popup.js +0 -1065
  733. data/misc/openlayers/lib/OpenLayers/Popup/Anchored.js +0 -195
  734. data/misc/openlayers/lib/OpenLayers/Popup/Framed.js +0 -343
  735. data/misc/openlayers/lib/OpenLayers/Popup/FramedCloud.js +0 -227
  736. data/misc/openlayers/lib/OpenLayers/Projection.js +0 -322
  737. data/misc/openlayers/lib/OpenLayers/Protocol.js +0 -291
  738. data/misc/openlayers/lib/OpenLayers/Protocol/CSW.js +0 -30
  739. data/misc/openlayers/lib/OpenLayers/Protocol/CSW/v2_0_2.js +0 -127
  740. data/misc/openlayers/lib/OpenLayers/Protocol/HTTP.js +0 -580
  741. data/misc/openlayers/lib/OpenLayers/Protocol/SOS.js +0 -33
  742. data/misc/openlayers/lib/OpenLayers/Protocol/SOS/v1_0_0.js +0 -133
  743. data/misc/openlayers/lib/OpenLayers/Protocol/Script.js +0 -377
  744. data/misc/openlayers/lib/OpenLayers/Protocol/WFS.js +0 -86
  745. data/misc/openlayers/lib/OpenLayers/Protocol/WFS/v1.js +0 -453
  746. data/misc/openlayers/lib/OpenLayers/Protocol/WFS/v1_0_0.js +0 -44
  747. data/misc/openlayers/lib/OpenLayers/Protocol/WFS/v1_1_0.js +0 -68
  748. data/misc/openlayers/lib/OpenLayers/Renderer.js +0 -432
  749. data/misc/openlayers/lib/OpenLayers/Renderer/Canvas.js +0 -906
  750. data/misc/openlayers/lib/OpenLayers/Renderer/Elements.js +0 -1053
  751. data/misc/openlayers/lib/OpenLayers/Renderer/SVG.js +0 -1012
  752. data/misc/openlayers/lib/OpenLayers/Renderer/VML.js +0 -985
  753. data/misc/openlayers/lib/OpenLayers/Request.js +0 -429
  754. data/misc/openlayers/lib/OpenLayers/Request/XMLHttpRequest.js +0 -458
  755. data/misc/openlayers/lib/OpenLayers/Rule.js +0 -236
  756. data/misc/openlayers/lib/OpenLayers/SingleFile.js +0 -78
  757. data/misc/openlayers/lib/OpenLayers/Spherical.js +0 -67
  758. data/misc/openlayers/lib/OpenLayers/Strategy.js +0 -121
  759. data/misc/openlayers/lib/OpenLayers/Strategy/BBOX.js +0 -290
  760. data/misc/openlayers/lib/OpenLayers/Strategy/Cluster.js +0 -283
  761. data/misc/openlayers/lib/OpenLayers/Strategy/Filter.js +0 -159
  762. data/misc/openlayers/lib/OpenLayers/Strategy/Fixed.js +0 -135
  763. data/misc/openlayers/lib/OpenLayers/Strategy/Paging.js +0 -233
  764. data/misc/openlayers/lib/OpenLayers/Strategy/Refresh.js +0 -141
  765. data/misc/openlayers/lib/OpenLayers/Strategy/Save.js +0 -231
  766. data/misc/openlayers/lib/OpenLayers/Style.js +0 -448
  767. data/misc/openlayers/lib/OpenLayers/Style2.js +0 -112
  768. data/misc/openlayers/lib/OpenLayers/StyleMap.js +0 -161
  769. data/misc/openlayers/lib/OpenLayers/Symbolizer.js +0 -55
  770. data/misc/openlayers/lib/OpenLayers/Symbolizer/Line.js +0 -74
  771. data/misc/openlayers/lib/OpenLayers/Symbolizer/Point.js +0 -157
  772. data/misc/openlayers/lib/OpenLayers/Symbolizer/Polygon.js +0 -88
  773. data/misc/openlayers/lib/OpenLayers/Symbolizer/Raster.js +0 -34
  774. data/misc/openlayers/lib/OpenLayers/Symbolizer/Text.js +0 -70
  775. data/misc/openlayers/lib/OpenLayers/Tile.js +0 -292
  776. data/misc/openlayers/lib/OpenLayers/Tile/Image.js +0 -510
  777. data/misc/openlayers/lib/OpenLayers/Tile/Image/IFrame.js +0 -233
  778. data/misc/openlayers/lib/OpenLayers/Tile/UTFGrid.js +0 -252
  779. data/misc/openlayers/lib/OpenLayers/TileManager.js +0 -462
  780. data/misc/openlayers/lib/OpenLayers/Tween.js +0 -361
  781. data/misc/openlayers/lib/OpenLayers/Util.js +0 -1773
  782. data/misc/openlayers/lib/OpenLayers/Util/vendorPrefix.js +0 -131
  783. data/misc/openlayers/lib/OpenLayers/WPSClient.js +0 -223
  784. data/misc/openlayers/lib/OpenLayers/WPSProcess.js +0 -501
  785. data/misc/openlayers/lib/Rico/Color.js +0 -253
  786. data/misc/openlayers/lib/Rico/Corner.js +0 -339
  787. data/misc/openlayers/lib/Rico/license.js +0 -19
  788. data/misc/openlayers/lib/deprecated.js +0 -5842
  789. data/misc/openlayers/license.txt +0 -27
  790. data/misc/openlayers/licenses/APACHE-2.0.txt +0 -202
  791. data/misc/openlayers/licenses/BSD-LICENSE.txt +0 -28
  792. data/misc/openlayers/licenses/MIT-LICENSE.txt +0 -18
  793. data/misc/openlayers/notes/2.12.md +0 -391
  794. data/misc/openlayers/notes/2.13.md +0 -159
  795. data/misc/openlayers/readme.md +0 -79
  796. data/misc/openlayers/tests/Animation.html +0 -96
  797. data/misc/openlayers/tests/BaseTypes.html +0 -387
  798. data/misc/openlayers/tests/BaseTypes/Bounds.html +0 -738
  799. data/misc/openlayers/tests/BaseTypes/Class.html +0 -350
  800. data/misc/openlayers/tests/BaseTypes/Date.html +0 -191
  801. data/misc/openlayers/tests/BaseTypes/Element.html +0 -195
  802. data/misc/openlayers/tests/BaseTypes/LonLat.html +0 -241
  803. data/misc/openlayers/tests/BaseTypes/Pixel.html +0 -123
  804. data/misc/openlayers/tests/BaseTypes/Size.html +0 -67
  805. data/misc/openlayers/tests/Console.html +0 -39
  806. data/misc/openlayers/tests/Control.html +0 -107
  807. data/misc/openlayers/tests/Control/ArgParser.html +0 -26
  808. data/misc/openlayers/tests/Control/Attribution.html +0 -60
  809. data/misc/openlayers/tests/Control/Button.html +0 -17
  810. data/misc/openlayers/tests/Control/CacheRead.html +0 -108
  811. data/misc/openlayers/tests/Control/CacheWrite.html +0 -90
  812. data/misc/openlayers/tests/Control/DragFeature.html +0 -383
  813. data/misc/openlayers/tests/Control/DragPan.html +0 -104
  814. data/misc/openlayers/tests/Control/DrawFeature.html +0 -160
  815. data/misc/openlayers/tests/Control/EditingToolbar.html +0 -33
  816. data/misc/openlayers/tests/Control/Geolocate.html +0 -129
  817. data/misc/openlayers/tests/Control/GetFeature.html +0 -177
  818. data/misc/openlayers/tests/Control/Graticule.html +0 -66
  819. data/misc/openlayers/tests/Control/KeyboardDefaults.html +0 -173
  820. data/misc/openlayers/tests/Control/LayerSwitcher.html +0 -249
  821. data/misc/openlayers/tests/Control/Measure.html +0 -386
  822. data/misc/openlayers/tests/Control/ModifyFeature.html +0 -828
  823. data/misc/openlayers/tests/Control/MousePosition.html +0 -109
  824. data/misc/openlayers/tests/Control/NavToolbar.html +0 -45
  825. data/misc/openlayers/tests/Control/Navigation.html +0 -200
  826. data/misc/openlayers/tests/Control/NavigationHistory.html +0 -245
  827. data/misc/openlayers/tests/Control/OverviewMap.html +0 -266
  828. data/misc/openlayers/tests/Control/Pan.html +0 -201
  829. data/misc/openlayers/tests/Control/PanPanel.html +0 -61
  830. data/misc/openlayers/tests/Control/PanZoom.html +0 -244
  831. data/misc/openlayers/tests/Control/PanZoomBar.html +0 -245
  832. data/misc/openlayers/tests/Control/Panel.html +0 -382
  833. data/misc/openlayers/tests/Control/Permalink.html +0 -453
  834. data/misc/openlayers/tests/Control/PinchZoom.html +0 -134
  835. data/misc/openlayers/tests/Control/SLDSelect.html +0 -239
  836. data/misc/openlayers/tests/Control/Scale.html +0 -54
  837. data/misc/openlayers/tests/Control/ScaleLine.html +0 -187
  838. data/misc/openlayers/tests/Control/SelectFeature.html +0 -632
  839. data/misc/openlayers/tests/Control/Snapping.html +0 -448
  840. data/misc/openlayers/tests/Control/Split.html +0 -319
  841. data/misc/openlayers/tests/Control/TouchNavigation.html +0 -155
  842. data/misc/openlayers/tests/Control/TransformFeature.html +0 -129
  843. data/misc/openlayers/tests/Control/UTFGrid.html +0 -120
  844. data/misc/openlayers/tests/Control/WMSGetFeatureInfo.html +0 -644
  845. data/misc/openlayers/tests/Control/WMTSGetFeatureInfo.html +0 -334
  846. data/misc/openlayers/tests/Control/Zoom.html +0 -83
  847. data/misc/openlayers/tests/Control/ZoomBox.html +0 -54
  848. data/misc/openlayers/tests/Control/ZoomIn.html +0 -101
  849. data/misc/openlayers/tests/Control/ZoomOut.html +0 -100
  850. data/misc/openlayers/tests/Control/ZoomToMaxExtent.html +0 -102
  851. data/misc/openlayers/tests/Events.html +0 -487
  852. data/misc/openlayers/tests/Events/buttonclick.html +0 -214
  853. data/misc/openlayers/tests/Events/featureclick.html +0 -91
  854. data/misc/openlayers/tests/Extras.html +0 -21
  855. data/misc/openlayers/tests/Feature.html +0 -205
  856. data/misc/openlayers/tests/Feature/Vector.html +0 -170
  857. data/misc/openlayers/tests/Filter.html +0 -31
  858. data/misc/openlayers/tests/Filter/Comparison.html +0 -373
  859. data/misc/openlayers/tests/Filter/FeatureId.html +0 -67
  860. data/misc/openlayers/tests/Filter/Logical.html +0 -144
  861. data/misc/openlayers/tests/Filter/Spatial.html +0 -112
  862. data/misc/openlayers/tests/Format.html +0 -23
  863. data/misc/openlayers/tests/Format/ArcXML.html +0 -277
  864. data/misc/openlayers/tests/Format/ArcXML/Features.html +0 -69
  865. data/misc/openlayers/tests/Format/Atom.html +0 -450
  866. data/misc/openlayers/tests/Format/CQL.html +0 -364
  867. data/misc/openlayers/tests/Format/CSWGetDomain.html +0 -23
  868. data/misc/openlayers/tests/Format/CSWGetDomain/v2_0_2.html +0 -56
  869. data/misc/openlayers/tests/Format/CSWGetDomain/v2_0_2.js +0 -18
  870. data/misc/openlayers/tests/Format/CSWGetRecords.html +0 -23
  871. data/misc/openlayers/tests/Format/CSWGetRecords/v2_0_2.html +0 -88
  872. data/misc/openlayers/tests/Format/CSWGetRecords/v2_0_2.js +0 -50
  873. data/misc/openlayers/tests/Format/EncodedPolyline.html +0 -372
  874. data/misc/openlayers/tests/Format/Filter.html +0 -21
  875. data/misc/openlayers/tests/Format/Filter/v1.html +0 -404
  876. data/misc/openlayers/tests/Format/Filter/v1_0_0.html +0 -295
  877. data/misc/openlayers/tests/Format/Filter/v1_1_0.html +0 -402
  878. data/misc/openlayers/tests/Format/GML.html +0 -462
  879. data/misc/openlayers/tests/Format/GML/cases.js +0 -232
  880. data/misc/openlayers/tests/Format/GML/v2.html +0 -684
  881. data/misc/openlayers/tests/Format/GML/v3.html +0 -828
  882. data/misc/openlayers/tests/Format/GPX.html +0 -179
  883. data/misc/openlayers/tests/Format/GeoJSON.html +0 -468
  884. data/misc/openlayers/tests/Format/GeoRSS.html +0 -122
  885. data/misc/openlayers/tests/Format/JSON.html +0 -53
  886. data/misc/openlayers/tests/Format/KML.html +0 -1437
  887. data/misc/openlayers/tests/Format/OGCExceptionReport.html +0 -100
  888. data/misc/openlayers/tests/Format/OSM.html +0 -115
  889. data/misc/openlayers/tests/Format/OWSCommon/v1_0_0.html +0 -34
  890. data/misc/openlayers/tests/Format/OWSCommon/v1_1_0.html +0 -34
  891. data/misc/openlayers/tests/Format/OWSContext/v0_3_1.html +0 -278
  892. data/misc/openlayers/tests/Format/QueryStringFilter.html +0 -306
  893. data/misc/openlayers/tests/Format/SLD.html +0 -36
  894. data/misc/openlayers/tests/Format/SLD/v1_0_0.html +0 -1028
  895. data/misc/openlayers/tests/Format/SLD/v1_0_0_GeoServer.html +0 -228
  896. data/misc/openlayers/tests/Format/SOSCapabilities/v1_0_0.html +0 -80
  897. data/misc/openlayers/tests/Format/SOSCapabilities/v1_0_0.js +0 -484
  898. data/misc/openlayers/tests/Format/SOSGetFeatureOfInterest.html +0 -80
  899. data/misc/openlayers/tests/Format/SOSGetObservation.html +0 -183
  900. data/misc/openlayers/tests/Format/Text.html +0 -49
  901. data/misc/openlayers/tests/Format/WCSCapabilities.html +0 -43
  902. data/misc/openlayers/tests/Format/WCSCapabilities/v1.html +0 -87
  903. data/misc/openlayers/tests/Format/WCSGetCoverage.html +0 -80
  904. data/misc/openlayers/tests/Format/WFS.html +0 -81
  905. data/misc/openlayers/tests/Format/WFSCapabilities.html +0 -43
  906. data/misc/openlayers/tests/Format/WFSCapabilities/v1.html +0 -179
  907. data/misc/openlayers/tests/Format/WFSDescribeFeatureType.html +0 -436
  908. data/misc/openlayers/tests/Format/WFST.html +0 -23
  909. data/misc/openlayers/tests/Format/WFST/v1.html +0 -455
  910. data/misc/openlayers/tests/Format/WFST/v1_0_0.html +0 -135
  911. data/misc/openlayers/tests/Format/WFST/v1_1_0.html +0 -236
  912. data/misc/openlayers/tests/Format/WKT.html +0 -297
  913. data/misc/openlayers/tests/Format/WMC.html +0 -315
  914. data/misc/openlayers/tests/Format/WMC/v1.html +0 -266
  915. data/misc/openlayers/tests/Format/WMC/v1_1_0.html +0 -86
  916. data/misc/openlayers/tests/Format/WMSCapabilities.html +0 -20
  917. data/misc/openlayers/tests/Format/WMSCapabilities/v1_1_1.html +0 -5209
  918. data/misc/openlayers/tests/Format/WMSCapabilities/v1_1_1_WMSC.html +0 -348
  919. data/misc/openlayers/tests/Format/WMSCapabilities/v1_3_0.html +0 -614
  920. data/misc/openlayers/tests/Format/WMSDescribeLayer.html +0 -65
  921. data/misc/openlayers/tests/Format/WMSGetFeatureInfo.html +0 -319
  922. data/misc/openlayers/tests/Format/WMTSCapabilities.html +0 -20
  923. data/misc/openlayers/tests/Format/WMTSCapabilities/v1_0_0.html +0 -1042
  924. data/misc/openlayers/tests/Format/WPSCapabilities/v1_0_0.html +0 -30
  925. data/misc/openlayers/tests/Format/WPSCapabilities/v1_0_0.js +0 -112
  926. data/misc/openlayers/tests/Format/WPSDescribeProcess.html +0 -206
  927. data/misc/openlayers/tests/Format/WPSExecute.html +0 -549
  928. data/misc/openlayers/tests/Format/XLS/v1_1_0.html +0 -98
  929. data/misc/openlayers/tests/Format/XML.html +0 -900
  930. data/misc/openlayers/tests/Format/XML/VersionedOGC.html +0 -51
  931. data/misc/openlayers/tests/Geometry.html +0 -356
  932. data/misc/openlayers/tests/Geometry/Collection.html +0 -431
  933. data/misc/openlayers/tests/Geometry/Curve.html +0 -157
  934. data/misc/openlayers/tests/Geometry/LineString.html +0 -443
  935. data/misc/openlayers/tests/Geometry/LinearRing.html +0 -362
  936. data/misc/openlayers/tests/Geometry/MultiLineString.html +0 -267
  937. data/misc/openlayers/tests/Geometry/MultiPoint.html +0 -130
  938. data/misc/openlayers/tests/Geometry/MultiPolygon.html +0 -34
  939. data/misc/openlayers/tests/Geometry/Point.html +0 -244
  940. data/misc/openlayers/tests/Geometry/Polygon.html +0 -420
  941. data/misc/openlayers/tests/Handler.html +0 -265
  942. data/misc/openlayers/tests/Handler/Box.html +0 -106
  943. data/misc/openlayers/tests/Handler/Click.html +0 -735
  944. data/misc/openlayers/tests/Handler/Drag.html +0 -603
  945. data/misc/openlayers/tests/Handler/Feature.html +0 -698
  946. data/misc/openlayers/tests/Handler/Hover.html +0 -136
  947. data/misc/openlayers/tests/Handler/Keyboard.html +0 -150
  948. data/misc/openlayers/tests/Handler/MouseWheel.html +0 -182
  949. data/misc/openlayers/tests/Handler/Path.html +0 -1464
  950. data/misc/openlayers/tests/Handler/Pinch.html +0 -285
  951. data/misc/openlayers/tests/Handler/Point.html +0 -600
  952. data/misc/openlayers/tests/Handler/Polygon.html +0 -1161
  953. data/misc/openlayers/tests/Handler/RegularPolygon.html +0 -235
  954. data/misc/openlayers/tests/Icon.html +0 -68
  955. data/misc/openlayers/tests/Kinetic.html +0 -132
  956. data/misc/openlayers/tests/Lang.html +0 -106
  957. data/misc/openlayers/tests/Layer.html +0 -910
  958. data/misc/openlayers/tests/Layer/ArcGIS93Rest.html +0 -324
  959. data/misc/openlayers/tests/Layer/ArcGISCache.html +0 -256
  960. data/misc/openlayers/tests/Layer/ArcGISCache.json +0 -334
  961. data/misc/openlayers/tests/Layer/ArcIMS.html +0 -123
  962. data/misc/openlayers/tests/Layer/Bing.html +0 -200
  963. data/misc/openlayers/tests/Layer/EventPane.html +0 -172
  964. data/misc/openlayers/tests/Layer/FixedZoomLevels.html +0 -137
  965. data/misc/openlayers/tests/Layer/GeoRSS.html +0 -210
  966. data/misc/openlayers/tests/Layer/Google.html +0 -369
  967. data/misc/openlayers/tests/Layer/Google/v3.html +0 -337
  968. data/misc/openlayers/tests/Layer/Grid.html +0 -1593
  969. data/misc/openlayers/tests/Layer/HTTPRequest.html +0 -229
  970. data/misc/openlayers/tests/Layer/Image.html +0 -164
  971. data/misc/openlayers/tests/Layer/KaMap.html +0 -287
  972. data/misc/openlayers/tests/Layer/MapGuide.html +0 -177
  973. data/misc/openlayers/tests/Layer/MapServer.html +0 -238
  974. data/misc/openlayers/tests/Layer/Markers.html +0 -156
  975. data/misc/openlayers/tests/Layer/OSM.html +0 -16
  976. data/misc/openlayers/tests/Layer/PointGrid.html +0 -232
  977. data/misc/openlayers/tests/Layer/PointTrack.html +0 -79
  978. data/misc/openlayers/tests/Layer/SphericalMercator.html +0 -126
  979. data/misc/openlayers/tests/Layer/TMS.html +0 -262
  980. data/misc/openlayers/tests/Layer/Text.html +0 -211
  981. data/misc/openlayers/tests/Layer/TileCache.html +0 -203
  982. data/misc/openlayers/tests/Layer/UTFGrid.html +0 -131
  983. data/misc/openlayers/tests/Layer/Vector.html +0 -879
  984. data/misc/openlayers/tests/Layer/Vector/RootContainer.html +0 -63
  985. data/misc/openlayers/tests/Layer/WMS.html +0 -583
  986. data/misc/openlayers/tests/Layer/WMTS.html +0 -1491
  987. data/misc/openlayers/tests/Layer/WrapDateLine.html +0 -188
  988. data/misc/openlayers/tests/Layer/XYZ.html +0 -266
  989. data/misc/openlayers/tests/Layer/atom-1.0.xml +0 -34
  990. data/misc/openlayers/tests/Layer/data_Layer_Text_textfile.txt +0 -3
  991. data/misc/openlayers/tests/Layer/data_Layer_Text_textfile_2.txt +0 -3
  992. data/misc/openlayers/tests/Layer/data_Layer_Text_textfile_overflow.txt +0 -3
  993. data/misc/openlayers/tests/Layer/georss.txt +0 -378
  994. data/misc/openlayers/tests/Map.html +0 -2255
  995. data/misc/openlayers/tests/Marker.html +0 -163
  996. data/misc/openlayers/tests/Marker/Box.html +0 -183
  997. data/misc/openlayers/tests/OLLoader.js +0 -26
  998. data/misc/openlayers/tests/OpenLayers1.html +0 -18
  999. data/misc/openlayers/tests/OpenLayers2.html +0 -19
  1000. data/misc/openlayers/tests/OpenLayers3.html +0 -19
  1001. data/misc/openlayers/tests/OpenLayers4.html +0 -18
  1002. data/misc/openlayers/tests/OpenLayersJsFiles.html +0 -27
  1003. data/misc/openlayers/tests/Popup.html +0 -219
  1004. data/misc/openlayers/tests/Popup/Anchored.html +0 -37
  1005. data/misc/openlayers/tests/Popup/FramedCloud.html +0 -18
  1006. data/misc/openlayers/tests/Projection.html +0 -87
  1007. data/misc/openlayers/tests/Protocol.html +0 -63
  1008. data/misc/openlayers/tests/Protocol/CSW.html +0 -90
  1009. data/misc/openlayers/tests/Protocol/HTTP.html +0 -842
  1010. data/misc/openlayers/tests/Protocol/SOS.html +0 -57
  1011. data/misc/openlayers/tests/Protocol/Script.html +0 -282
  1012. data/misc/openlayers/tests/Protocol/WFS.html +0 -471
  1013. data/misc/openlayers/tests/README.txt +0 -16
  1014. data/misc/openlayers/tests/Renderer.html +0 -96
  1015. data/misc/openlayers/tests/Renderer/Canvas.html +0 -501
  1016. data/misc/openlayers/tests/Renderer/Elements.html +0 -651
  1017. data/misc/openlayers/tests/Renderer/SVG.html +0 -441
  1018. data/misc/openlayers/tests/Renderer/VML.html +0 -454
  1019. data/misc/openlayers/tests/Request.html +0 -524
  1020. data/misc/openlayers/tests/Request/XMLHttpRequest.html +0 -59
  1021. data/misc/openlayers/tests/Rule.html +0 -123
  1022. data/misc/openlayers/tests/SingleFile1.html +0 -15
  1023. data/misc/openlayers/tests/SingleFile2.html +0 -15
  1024. data/misc/openlayers/tests/SingleFile3.html +0 -15
  1025. data/misc/openlayers/tests/Strategy.html +0 -94
  1026. data/misc/openlayers/tests/Strategy/BBOX.html +0 -361
  1027. data/misc/openlayers/tests/Strategy/Cluster.html +0 -148
  1028. data/misc/openlayers/tests/Strategy/Filter.html +0 -135
  1029. data/misc/openlayers/tests/Strategy/Fixed.html +0 -253
  1030. data/misc/openlayers/tests/Strategy/Paging.html +0 -113
  1031. data/misc/openlayers/tests/Strategy/Refresh.html +0 -177
  1032. data/misc/openlayers/tests/Strategy/Save.html +0 -127
  1033. data/misc/openlayers/tests/Style.html +0 -426
  1034. data/misc/openlayers/tests/Style2.html +0 -56
  1035. data/misc/openlayers/tests/StyleMap.html +0 -44
  1036. data/misc/openlayers/tests/Symbolizer.html +0 -31
  1037. data/misc/openlayers/tests/Symbolizer/Line.html +0 -42
  1038. data/misc/openlayers/tests/Symbolizer/Point.html +0 -52
  1039. data/misc/openlayers/tests/Symbolizer/Polygon.html +0 -44
  1040. data/misc/openlayers/tests/Symbolizer/Raster.html +0 -32
  1041. data/misc/openlayers/tests/Symbolizer/Text.html +0 -42
  1042. data/misc/openlayers/tests/Test.AnotherWay.baseadditions.js +0 -191
  1043. data/misc/openlayers/tests/Test.AnotherWay.css +0 -243
  1044. data/misc/openlayers/tests/Test.AnotherWay.geom_eq.js +0 -139
  1045. data/misc/openlayers/tests/Test.AnotherWay.js +0 -2498
  1046. data/misc/openlayers/tests/Test.AnotherWay.xml_eq.js +0 -311
  1047. data/misc/openlayers/tests/Tile.html +0 -130
  1048. data/misc/openlayers/tests/Tile/Image.html +0 -490
  1049. data/misc/openlayers/tests/Tile/Image/IFrame.html +0 -183
  1050. data/misc/openlayers/tests/Tile/UTFGrid.html +0 -306
  1051. data/misc/openlayers/tests/TileManager.html +0 -137
  1052. data/misc/openlayers/tests/Tween.html +0 -116
  1053. data/misc/openlayers/tests/Util.html +0 -1180
  1054. data/misc/openlayers/tests/Util/vendorPrefix.html +0 -117
  1055. data/misc/openlayers/tests/Util_common.js +0 -64
  1056. data/misc/openlayers/tests/Util_w3c.html +0 -35
  1057. data/misc/openlayers/tests/WPSClient.html +0 -108
  1058. data/misc/openlayers/tests/WPSProcess.html +0 -188
  1059. data/misc/openlayers/tests/atom-1.0.xml +0 -34
  1060. data/misc/openlayers/tests/auto-tests.html +0 -2447
  1061. data/misc/openlayers/tests/data/geos_wkt_intersects.js +0 -495
  1062. data/misc/openlayers/tests/data/osm.js +0 -14
  1063. data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/0/0.json +0 -1
  1064. data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/0/1.json +0 -1
  1065. data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/0/2.json +0 -1
  1066. data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/1/0.json +0 -1
  1067. data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/1/1.json +0 -1
  1068. data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/1/2.json +0 -1
  1069. data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/2/0.json +0 -1
  1070. data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/2/1.json +0 -1
  1071. data/misc/openlayers/tests/data/utfgrid/bio_utfgrid/1/2/2.json +0 -1
  1072. data/misc/openlayers/tests/data/utfgrid/demo-1.1.json +0 -1
  1073. data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/0/0.json +0 -1
  1074. data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/0/1.json +0 -1
  1075. data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/0/2.json +0 -1
  1076. data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/1/0.json +0 -1
  1077. data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/1/1.json +0 -1
  1078. data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/1/2.json +0 -1
  1079. data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/2/0.json +0 -1
  1080. data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/2/1.json +0 -1
  1081. data/misc/openlayers/tests/data/utfgrid/world_utfgrid/1/2/2.json +0 -1
  1082. data/misc/openlayers/tests/data_Layer_Text_textfile.txt +0 -3
  1083. data/misc/openlayers/tests/data_Layer_Text_textfile_2.txt +0 -3
  1084. data/misc/openlayers/tests/data_Layer_Text_textfile_overflow.txt +0 -3
  1085. data/misc/openlayers/tests/deprecated/Ajax.html +0 -28
  1086. data/misc/openlayers/tests/deprecated/BaseTypes/Class.html +0 -142
  1087. data/misc/openlayers/tests/deprecated/BaseTypes/Element.html +0 -56
  1088. data/misc/openlayers/tests/deprecated/Control/MouseToolbar.html +0 -60
  1089. data/misc/openlayers/tests/deprecated/Geometry/Rectangle.html +0 -77
  1090. data/misc/openlayers/tests/deprecated/Layer/GML.html +0 -61
  1091. data/misc/openlayers/tests/deprecated/Layer/MapServer.html +0 -59
  1092. data/misc/openlayers/tests/deprecated/Layer/MapServer/Untiled.html +0 -158
  1093. data/misc/openlayers/tests/deprecated/Layer/WFS.html +0 -178
  1094. data/misc/openlayers/tests/deprecated/Layer/WMS.html +0 -60
  1095. data/misc/openlayers/tests/deprecated/Layer/WMS/Post.html +0 -89
  1096. data/misc/openlayers/tests/deprecated/Layer/Yahoo.html +0 -121
  1097. data/misc/openlayers/tests/deprecated/Layer/mice.xml +0 -156
  1098. data/misc/openlayers/tests/deprecated/Layer/owls.xml +0 -156
  1099. data/misc/openlayers/tests/deprecated/Popup/AnchoredBubble.html +0 -61
  1100. data/misc/openlayers/tests/deprecated/Protocol/SQL.html +0 -24
  1101. data/misc/openlayers/tests/deprecated/Protocol/SQL/Gears.html +0 -474
  1102. data/misc/openlayers/tests/deprecated/Renderer/SVG2.html +0 -399
  1103. data/misc/openlayers/tests/deprecated/Tile/WFS.html +0 -215
  1104. data/misc/openlayers/tests/deprecated/Util.html +0 -20
  1105. data/misc/openlayers/tests/georss.txt +0 -378
  1106. data/misc/openlayers/tests/grid_inittiles.html +0 -30
  1107. data/misc/openlayers/tests/index.html +0 -6
  1108. data/misc/openlayers/tests/list-tests.html +0 -260
  1109. data/misc/openlayers/tests/manual/ajax.html +0 -49
  1110. data/misc/openlayers/tests/manual/ajax.txt +0 -1
  1111. data/misc/openlayers/tests/manual/alloverlays-mixed.html +0 -55
  1112. data/misc/openlayers/tests/manual/arcims-2117.html +0 -103
  1113. data/misc/openlayers/tests/manual/arkansas.rss +0 -9
  1114. data/misc/openlayers/tests/manual/big-georss.html +0 -33
  1115. data/misc/openlayers/tests/manual/box-quirks.html +0 -52
  1116. data/misc/openlayers/tests/manual/box-strict.html +0 -46
  1117. data/misc/openlayers/tests/manual/clip-features-svg.html +0 -128
  1118. data/misc/openlayers/tests/manual/dateline-sketch.html +0 -66
  1119. data/misc/openlayers/tests/manual/dateline-smallextent.html +0 -61
  1120. data/misc/openlayers/tests/manual/draw-feature.html +0 -73
  1121. data/misc/openlayers/tests/manual/feature-handler.html +0 -126
  1122. data/misc/openlayers/tests/manual/geodesic.html +0 -160
  1123. data/misc/openlayers/tests/manual/geojson-geomcoll-reprojection.html +0 -74
  1124. data/misc/openlayers/tests/manual/google-fullscreen-overlay.html +0 -54
  1125. data/misc/openlayers/tests/manual/google-panning.html +0 -122
  1126. data/misc/openlayers/tests/manual/google-resize.html +0 -55
  1127. data/misc/openlayers/tests/manual/google-tilt.html +0 -37
  1128. data/misc/openlayers/tests/manual/google-v3-resize.html +0 -54
  1129. data/misc/openlayers/tests/manual/loadend.html +0 -73
  1130. data/misc/openlayers/tests/manual/map-events.html +0 -38
  1131. data/misc/openlayers/tests/manual/memory/Marker-2258.html +0 -60
  1132. data/misc/openlayers/tests/manual/memory/PanZoom-2323.html +0 -41
  1133. data/misc/openlayers/tests/manual/memory/RemoveChild-2170.html +0 -56
  1134. data/misc/openlayers/tests/manual/memory/VML-2170.html +0 -49
  1135. data/misc/openlayers/tests/manual/multiple-google-layers.html +0 -135
  1136. data/misc/openlayers/tests/manual/overviewmap-projection.html +0 -70
  1137. data/misc/openlayers/tests/manual/page-position.html +0 -103
  1138. data/misc/openlayers/tests/manual/pan-redraw-svg.html +0 -58
  1139. data/misc/openlayers/tests/manual/popup-keepInMap.html +0 -100
  1140. data/misc/openlayers/tests/manual/reflow.html +0 -59
  1141. data/misc/openlayers/tests/manual/renderedDimensions.html +0 -113
  1142. data/misc/openlayers/tests/manual/select-feature-right-click.html +0 -86
  1143. data/misc/openlayers/tests/manual/select-feature.html +0 -75
  1144. data/misc/openlayers/tests/manual/tiles-loading.html +0 -122
  1145. data/misc/openlayers/tests/manual/tween.html +0 -82
  1146. data/misc/openlayers/tests/manual/vector-features-performance.html +0 -149
  1147. data/misc/openlayers/tests/manual/vector-layer-zindex.html +0 -143
  1148. data/misc/openlayers/tests/mice.xml +0 -156
  1149. data/misc/openlayers/tests/node.js/mockdom.js +0 -104
  1150. data/misc/openlayers/tests/node.js/node-tests.cfg +0 -12
  1151. data/misc/openlayers/tests/node.js/node.js +0 -1
  1152. data/misc/openlayers/tests/node.js/run-test.js +0 -26
  1153. data/misc/openlayers/tests/node.js/run.sh +0 -10
  1154. data/misc/openlayers/tests/owls.xml +0 -156
  1155. data/misc/openlayers/tests/run-tests.html +0 -155
  1156. data/misc/openlayers/tests/selenium/remotecontrol/config.cfg +0 -48
  1157. data/misc/openlayers/tests/selenium/remotecontrol/selenium.py +0 -1846
  1158. data/misc/openlayers/tests/selenium/remotecontrol/setup.txt +0 -8
  1159. data/misc/openlayers/tests/selenium/remotecontrol/test_ol.py +0 -95
  1160. data/misc/openlayers/tests/speed/geometry.html +0 -43
  1161. data/misc/openlayers/tests/speed/string_format.html +0 -29
  1162. data/misc/openlayers/tests/speed/vector-renderers.html +0 -25
  1163. data/misc/openlayers/tests/speed/vector-renderers.js +0 -70
  1164. data/misc/openlayers/tests/speed/wmc_speed.html +0 -30
  1165. data/misc/openlayers/tests/speed/wmscaps.html +0 -52
  1166. data/misc/openlayers/tests/speed/wmscaps.js +0 -4956
  1167. data/misc/openlayers/tests/speed/wmscaps.xml +0 -4954
  1168. data/misc/openlayers/tests/throws.js +0 -82
  1169. data/misc/openlayers/theme/default/google.css +0 -9
  1170. data/misc/openlayers/theme/default/google.tidy.css +0 -1
  1171. data/misc/openlayers/theme/default/ie6-style.css +0 -10
  1172. data/misc/openlayers/theme/default/ie6-style.tidy.css +0 -1
  1173. data/misc/openlayers/theme/default/img/add_point_off.png +0 -0
  1174. data/misc/openlayers/theme/default/img/add_point_on.png +0 -0
  1175. data/misc/openlayers/theme/default/img/blank.gif +0 -0
  1176. data/misc/openlayers/theme/default/img/close.gif +0 -0
  1177. data/misc/openlayers/theme/default/img/drag-rectangle-off.png +0 -0
  1178. data/misc/openlayers/theme/default/img/drag-rectangle-on.png +0 -0
  1179. data/misc/openlayers/theme/default/img/draw_line_off.png +0 -0
  1180. data/misc/openlayers/theme/default/img/draw_line_on.png +0 -0
  1181. data/misc/openlayers/theme/default/img/draw_point_off.png +0 -0
  1182. data/misc/openlayers/theme/default/img/draw_point_on.png +0 -0
  1183. data/misc/openlayers/theme/default/img/draw_polygon_off.png +0 -0
  1184. data/misc/openlayers/theme/default/img/draw_polygon_on.png +0 -0
  1185. data/misc/openlayers/theme/default/img/editing_tool_bar.png +0 -0
  1186. data/misc/openlayers/theme/default/img/move_feature_off.png +0 -0
  1187. data/misc/openlayers/theme/default/img/move_feature_on.png +0 -0
  1188. data/misc/openlayers/theme/default/img/navigation_history.png +0 -0
  1189. data/misc/openlayers/theme/default/img/overview_replacement.gif +0 -0
  1190. data/misc/openlayers/theme/default/img/pan-panel-NOALPHA.png +0 -0
  1191. data/misc/openlayers/theme/default/img/pan-panel.png +0 -0
  1192. data/misc/openlayers/theme/default/img/pan_off.png +0 -0
  1193. data/misc/openlayers/theme/default/img/pan_on.png +0 -0
  1194. data/misc/openlayers/theme/default/img/panning-hand-off.png +0 -0
  1195. data/misc/openlayers/theme/default/img/panning-hand-on.png +0 -0
  1196. data/misc/openlayers/theme/default/img/remove_point_off.png +0 -0
  1197. data/misc/openlayers/theme/default/img/remove_point_on.png +0 -0
  1198. data/misc/openlayers/theme/default/img/ruler.png +0 -0
  1199. data/misc/openlayers/theme/default/img/save_features_off.png +0 -0
  1200. data/misc/openlayers/theme/default/img/save_features_on.png +0 -0
  1201. data/misc/openlayers/theme/default/img/view_next_off.png +0 -0
  1202. data/misc/openlayers/theme/default/img/view_next_on.png +0 -0
  1203. data/misc/openlayers/theme/default/img/view_previous_off.png +0 -0
  1204. data/misc/openlayers/theme/default/img/view_previous_on.png +0 -0
  1205. data/misc/openlayers/theme/default/img/zoom-panel-NOALPHA.png +0 -0
  1206. data/misc/openlayers/theme/default/img/zoom-panel.png +0 -0
  1207. data/misc/openlayers/theme/default/style.css +0 -516
  1208. data/misc/openlayers/theme/default/style.mobile.css +0 -70
  1209. data/misc/openlayers/theme/default/style.mobile.tidy.css +0 -1
  1210. data/misc/openlayers/theme/default/style.tidy.css +0 -1
  1211. data/misc/openlayers/tools/BeautifulSoup.py +0 -1767
  1212. data/misc/openlayers/tools/README.txt +0 -14
  1213. data/misc/openlayers/tools/closure_library_jscompiler.py +0 -71
  1214. data/misc/openlayers/tools/closure_ws.py +0 -28
  1215. data/misc/openlayers/tools/exampleparser.py +0 -251
  1216. data/misc/openlayers/tools/jsmin.c +0 -272
  1217. data/misc/openlayers/tools/jsmin.py +0 -216
  1218. data/misc/openlayers/tools/mergejs.py +0 -287
  1219. data/misc/openlayers/tools/minimize.py +0 -47
  1220. data/misc/openlayers/tools/oldot.py +0 -43
  1221. data/misc/openlayers/tools/release.sh +0 -71
  1222. data/misc/openlayers/tools/shrinksafe.py +0 -54
  1223. data/misc/openlayers/tools/toposort.py +0 -35
  1224. data/misc/openlayers/tools/uglify_js.py +0 -35
  1225. 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;