postrunner 0.0.10 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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;