cesium 0.13.0

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 (491) hide show
  1. data/LICENSE.md +259 -0
  2. data/README.rdoc +90 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/javascripts/Assets/Assets.profile.js +8 -0
  5. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
  6. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
  7. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
  8. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
  9. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
  10. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
  11. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
  12. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
  13. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
  14. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
  15. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
  16. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
  17. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
  18. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
  19. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
  20. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
  21. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
  22. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
  23. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
  24. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
  25. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
  26. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
  27. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
  28. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
  29. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
  30. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
  31. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
  32. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
  33. data/app/assets/javascripts/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg +0 -0
  34. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  35. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  36. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  37. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  38. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  39. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  40. data/app/assets/javascripts/Assets/Textures/waterNormals.jpg +0 -0
  41. data/app/assets/javascripts/Assets/package.json +6 -0
  42. data/app/assets/javascripts/Cesium.js +320 -0
  43. data/app/assets/javascripts/Core/AnimationController.js +148 -0
  44. data/app/assets/javascripts/Core/AxisAlignedBoundingBox.js +243 -0
  45. data/app/assets/javascripts/Core/BoundingRectangle.js +364 -0
  46. data/app/assets/javascripts/Core/BoundingSphere.js +819 -0
  47. data/app/assets/javascripts/Core/BoxTessellator.js +93 -0
  48. data/app/assets/javascripts/Core/Cartesian2.js +762 -0
  49. data/app/assets/javascripts/Core/Cartesian3.js +861 -0
  50. data/app/assets/javascripts/Core/Cartesian4.js +762 -0
  51. data/app/assets/javascripts/Core/Cartographic.js +211 -0
  52. data/app/assets/javascripts/Core/CatmullRomSpline.js +232 -0
  53. data/app/assets/javascripts/Core/Clock.js +195 -0
  54. data/app/assets/javascripts/Core/ClockRange.js +37 -0
  55. data/app/assets/javascripts/Core/ClockStep.js +32 -0
  56. data/app/assets/javascripts/Core/Color.js +1629 -0
  57. data/app/assets/javascripts/Core/ComponentDatatype.js +119 -0
  58. data/app/assets/javascripts/Core/Core.profile.js +8 -0
  59. data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +198 -0
  60. data/app/assets/javascripts/Core/CubicRealPolynomial.js +251 -0
  61. data/app/assets/javascripts/Core/DefaultProxy.js +30 -0
  62. data/app/assets/javascripts/Core/DeveloperError.js +60 -0
  63. data/app/assets/javascripts/Core/EarthOrientationParameters.js +383 -0
  64. data/app/assets/javascripts/Core/EarthOrientationParametersSample.js +50 -0
  65. data/app/assets/javascripts/Core/Ellipsoid.js +539 -0
  66. data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +207 -0
  67. data/app/assets/javascripts/Core/EllipsoidalOccluder.js +151 -0
  68. data/app/assets/javascripts/Core/EncodedCartesian3.js +197 -0
  69. data/app/assets/javascripts/Core/Enumeration.js +67 -0
  70. data/app/assets/javascripts/Core/Event.js +122 -0
  71. data/app/assets/javascripts/Core/Extent.js +383 -0
  72. data/app/assets/javascripts/Core/ExtentTessellator.js +384 -0
  73. data/app/assets/javascripts/Core/FAR.js +13 -0
  74. data/app/assets/javascripts/Core/FeatureDetection.js +126 -0
  75. data/app/assets/javascripts/Core/Fullscreen.js +235 -0
  76. data/app/assets/javascripts/Core/GeographicProjection.js +107 -0
  77. data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +176 -0
  78. data/app/assets/javascripts/Core/HermiteSpline.js +234 -0
  79. data/app/assets/javascripts/Core/Iau2006XysData.js +259 -0
  80. data/app/assets/javascripts/Core/Iau2006XysSample.js +36 -0
  81. data/app/assets/javascripts/Core/IndexDatatype.js +28 -0
  82. data/app/assets/javascripts/Core/Intersect.js +40 -0
  83. data/app/assets/javascripts/Core/IntersectionTests.js +359 -0
  84. data/app/assets/javascripts/Core/Interval.js +27 -0
  85. data/app/assets/javascripts/Core/Iso8601.js +46 -0
  86. data/app/assets/javascripts/Core/JulianDate.js +1228 -0
  87. data/app/assets/javascripts/Core/KeyboardEventModifier.js +38 -0
  88. data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +96 -0
  89. data/app/assets/javascripts/Core/LeapSecond.js +158 -0
  90. data/app/assets/javascripts/Core/LinearApproximation.js +98 -0
  91. data/app/assets/javascripts/Core/Math.js +532 -0
  92. data/app/assets/javascripts/Core/Matrix2.js +833 -0
  93. data/app/assets/javascripts/Core/Matrix3.js +1099 -0
  94. data/app/assets/javascripts/Core/Matrix4.js +2164 -0
  95. data/app/assets/javascripts/Core/MeshFilters.js +568 -0
  96. data/app/assets/javascripts/Core/Occluder.js +474 -0
  97. data/app/assets/javascripts/Core/OrientationInterpolator.js +109 -0
  98. data/app/assets/javascripts/Core/PlaneTessellator.js +74 -0
  99. data/app/assets/javascripts/Core/PolygonPipeline.js +792 -0
  100. data/app/assets/javascripts/Core/PolylinePipeline.js +90 -0
  101. data/app/assets/javascripts/Core/PrimitiveType.js +80 -0
  102. data/app/assets/javascripts/Core/QuadraticRealPolynomial.js +146 -0
  103. data/app/assets/javascripts/Core/QuarticRealPolynomial.js +339 -0
  104. data/app/assets/javascripts/Core/Quaternion.js +947 -0
  105. data/app/assets/javascripts/Core/Queue.js +95 -0
  106. data/app/assets/javascripts/Core/Ray.js +64 -0
  107. data/app/assets/javascripts/Core/ReferenceFrame.js +25 -0
  108. data/app/assets/javascripts/Core/RequestErrorEvent.js +35 -0
  109. data/app/assets/javascripts/Core/RuntimeError.js +59 -0
  110. data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +658 -0
  111. data/app/assets/javascripts/Core/ScreenSpaceEventType.js +149 -0
  112. data/app/assets/javascripts/Core/Shapes.js +230 -0
  113. data/app/assets/javascripts/Core/Spherical.js +192 -0
  114. data/app/assets/javascripts/Core/TaskProcessor.js +131 -0
  115. data/app/assets/javascripts/Core/TimeConstants.js +85 -0
  116. data/app/assets/javascripts/Core/TimeInterval.js +305 -0
  117. data/app/assets/javascripts/Core/TimeIntervalCollection.js +543 -0
  118. data/app/assets/javascripts/Core/TimeStandard.js +31 -0
  119. data/app/assets/javascripts/Core/Tipsify.js +285 -0
  120. data/app/assets/javascripts/Core/Transforms.js +614 -0
  121. data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +102 -0
  122. data/app/assets/javascripts/Core/Visibility.js +38 -0
  123. data/app/assets/javascripts/Core/WebMercatorProjection.js +154 -0
  124. data/app/assets/javascripts/Core/WindingOrder.js +40 -0
  125. data/app/assets/javascripts/Core/binarySearch.js +69 -0
  126. data/app/assets/javascripts/Core/buildModuleUrl.js +77 -0
  127. data/app/assets/javascripts/Core/clone.js +21 -0
  128. data/app/assets/javascripts/Core/combine.js +81 -0
  129. data/app/assets/javascripts/Core/computeSunPosition.js +116 -0
  130. data/app/assets/javascripts/Core/createGuid.js +25 -0
  131. data/app/assets/javascripts/Core/defaultValue.js +22 -0
  132. data/app/assets/javascripts/Core/destroyObject.js +61 -0
  133. data/app/assets/javascripts/Core/freezeObject.js +20 -0
  134. data/app/assets/javascripts/Core/getImagePixels.js +46 -0
  135. data/app/assets/javascripts/Core/isLeapYear.js +30 -0
  136. data/app/assets/javascripts/Core/jsonp.js +116 -0
  137. data/app/assets/javascripts/Core/loadArrayBuffer.js +76 -0
  138. data/app/assets/javascripts/Core/loadImage.js +85 -0
  139. data/app/assets/javascripts/Core/loadJson.js +54 -0
  140. data/app/assets/javascripts/Core/loadText.js +78 -0
  141. data/app/assets/javascripts/Core/loadXML.js +76 -0
  142. data/app/assets/javascripts/Core/package.json +6 -0
  143. data/app/assets/javascripts/Core/pointInsideTriangle2D.js +41 -0
  144. data/app/assets/javascripts/Core/requestAnimationFrame.js +61 -0
  145. data/app/assets/javascripts/Core/throttleRequestByServer.js +74 -0
  146. data/app/assets/javascripts/Core/writeTextToCanvas.js +92 -0
  147. data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +254 -0
  148. data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +57 -0
  149. data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +96 -0
  150. data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +99 -0
  151. data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +125 -0
  152. data/app/assets/javascripts/DynamicScene/CzmlColor.js +127 -0
  153. data/app/assets/javascripts/DynamicScene/CzmlDefaults.js +135 -0
  154. data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +59 -0
  155. data/app/assets/javascripts/DynamicScene/CzmlImage.js +61 -0
  156. data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +59 -0
  157. data/app/assets/javascripts/DynamicScene/CzmlNumber.js +82 -0
  158. data/app/assets/javascripts/DynamicScene/CzmlString.js +56 -0
  159. data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +99 -0
  160. data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +172 -0
  161. data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +98 -0
  162. data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +59 -0
  163. data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +245 -0
  164. data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +347 -0
  165. data/app/assets/javascripts/DynamicScene/DynamicColorMaterial.js +78 -0
  166. data/app/assets/javascripts/DynamicScene/DynamicCone.js +291 -0
  167. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +350 -0
  168. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +389 -0
  169. data/app/assets/javascripts/DynamicScene/DynamicDirectionsProperty.js +163 -0
  170. data/app/assets/javascripts/DynamicScene/DynamicEllipsoid.js +158 -0
  171. data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +277 -0
  172. data/app/assets/javascripts/DynamicScene/DynamicImageMaterial.js +136 -0
  173. data/app/assets/javascripts/DynamicScene/DynamicLabel.js +286 -0
  174. data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +341 -0
  175. data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +125 -0
  176. data/app/assets/javascripts/DynamicScene/DynamicObject.js +364 -0
  177. data/app/assets/javascripts/DynamicScene/DynamicObjectCollection.js +137 -0
  178. data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +299 -0
  179. data/app/assets/javascripts/DynamicScene/DynamicPath.js +214 -0
  180. data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +402 -0
  181. data/app/assets/javascripts/DynamicScene/DynamicPoint.js +184 -0
  182. data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +323 -0
  183. data/app/assets/javascripts/DynamicScene/DynamicPolygon.js +138 -0
  184. data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +251 -0
  185. data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +183 -0
  186. data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +268 -0
  187. data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +525 -0
  188. data/app/assets/javascripts/DynamicScene/DynamicProperty.js +352 -0
  189. data/app/assets/javascripts/DynamicScene/DynamicPyramid.js +204 -0
  190. data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +302 -0
  191. data/app/assets/javascripts/DynamicScene/DynamicScene.profile.js +8 -0
  192. data/app/assets/javascripts/DynamicScene/DynamicVertexPositionsProperty.js +199 -0
  193. data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +155 -0
  194. data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +181 -0
  195. data/app/assets/javascripts/DynamicScene/package.json +6 -0
  196. data/app/assets/javascripts/DynamicScene/processCzml.js +77 -0
  197. data/app/assets/javascripts/Renderer/BlendEquation.js +52 -0
  198. data/app/assets/javascripts/Renderer/BlendFunction.js +158 -0
  199. data/app/assets/javascripts/Renderer/BlendingState.js +64 -0
  200. data/app/assets/javascripts/Renderer/Buffer.js +141 -0
  201. data/app/assets/javascripts/Renderer/BufferUsage.js +48 -0
  202. data/app/assets/javascripts/Renderer/ClearCommand.js +40 -0
  203. data/app/assets/javascripts/Renderer/CommandLists.js +42 -0
  204. data/app/assets/javascripts/Renderer/Context.js +2805 -0
  205. data/app/assets/javascripts/Renderer/CubeMap.js +358 -0
  206. data/app/assets/javascripts/Renderer/CubeMapFace.js +202 -0
  207. data/app/assets/javascripts/Renderer/CullFace.js +50 -0
  208. data/app/assets/javascripts/Renderer/DepthFunction.js +95 -0
  209. data/app/assets/javascripts/Renderer/DrawCommand.js +96 -0
  210. data/app/assets/javascripts/Renderer/Framebuffer.js +435 -0
  211. data/app/assets/javascripts/Renderer/MipmapHint.js +50 -0
  212. data/app/assets/javascripts/Renderer/PickFramebuffer.js +178 -0
  213. data/app/assets/javascripts/Renderer/PixelDatatype.js +86 -0
  214. data/app/assets/javascripts/Renderer/PixelFormat.js +113 -0
  215. data/app/assets/javascripts/Renderer/Renderbuffer.js +102 -0
  216. data/app/assets/javascripts/Renderer/RenderbufferFormat.js +77 -0
  217. data/app/assets/javascripts/Renderer/Renderer.profile.js +8 -0
  218. data/app/assets/javascripts/Renderer/ShaderCache.js +121 -0
  219. data/app/assets/javascripts/Renderer/ShaderProgram.js +2402 -0
  220. data/app/assets/javascripts/Renderer/StencilFunction.js +95 -0
  221. data/app/assets/javascripts/Renderer/StencilOperation.js +95 -0
  222. data/app/assets/javascripts/Renderer/Texture.js +395 -0
  223. data/app/assets/javascripts/Renderer/TextureAtlas.js +472 -0
  224. data/app/assets/javascripts/Renderer/TextureAtlasBuilder.js +133 -0
  225. data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +41 -0
  226. data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +77 -0
  227. data/app/assets/javascripts/Renderer/TextureWrap.js +50 -0
  228. data/app/assets/javascripts/Renderer/UniformDatatype.js +218 -0
  229. data/app/assets/javascripts/Renderer/UniformState.js +799 -0
  230. data/app/assets/javascripts/Renderer/VertexArray.js +365 -0
  231. data/app/assets/javascripts/Renderer/VertexArrayFacade.js +574 -0
  232. data/app/assets/javascripts/Renderer/VertexLayout.js +49 -0
  233. data/app/assets/javascripts/Renderer/loadCubeMap.js +92 -0
  234. data/app/assets/javascripts/Renderer/package.json +6 -0
  235. data/app/assets/javascripts/Scene/AnimationCollection.js +249 -0
  236. data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +384 -0
  237. data/app/assets/javascripts/Scene/Billboard.js +680 -0
  238. data/app/assets/javascripts/Scene/BillboardCollection.js +1209 -0
  239. data/app/assets/javascripts/Scene/BingMapsImageryProvider.js +460 -0
  240. data/app/assets/javascripts/Scene/BingMapsStyle.js +55 -0
  241. data/app/assets/javascripts/Scene/Camera.js +358 -0
  242. data/app/assets/javascripts/Scene/CameraColumbusViewMode.js +30 -0
  243. data/app/assets/javascripts/Scene/CameraController.js +1258 -0
  244. data/app/assets/javascripts/Scene/CameraEventAggregator.js +270 -0
  245. data/app/assets/javascripts/Scene/CameraEventType.js +53 -0
  246. data/app/assets/javascripts/Scene/CameraFlightPath.js +495 -0
  247. data/app/assets/javascripts/Scene/CentralBody.js +817 -0
  248. data/app/assets/javascripts/Scene/CentralBodySurface.js +1120 -0
  249. data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +107 -0
  250. data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +511 -0
  251. data/app/assets/javascripts/Scene/CompositePrimitive.js +454 -0
  252. data/app/assets/javascripts/Scene/CullingVolume.js +59 -0
  253. data/app/assets/javascripts/Scene/CustomSensorVolume.js +440 -0
  254. data/app/assets/javascripts/Scene/DiscardMissingTileImagePolicy.js +134 -0
  255. data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +412 -0
  256. data/app/assets/javascripts/Scene/EllipsoidTerrainProvider.js +182 -0
  257. data/app/assets/javascripts/Scene/FrameState.js +86 -0
  258. data/app/assets/javascripts/Scene/FrustumCommands.js +32 -0
  259. data/app/assets/javascripts/Scene/GeographicTilingScheme.js +265 -0
  260. data/app/assets/javascripts/Scene/HorizontalOrigin.js +39 -0
  261. data/app/assets/javascripts/Scene/Imagery.js +85 -0
  262. data/app/assets/javascripts/Scene/ImageryLayer.js +876 -0
  263. data/app/assets/javascripts/Scene/ImageryLayerCollection.js +403 -0
  264. data/app/assets/javascripts/Scene/ImageryProvider.js +185 -0
  265. data/app/assets/javascripts/Scene/ImageryProviderError.js +149 -0
  266. data/app/assets/javascripts/Scene/ImageryState.js +20 -0
  267. data/app/assets/javascripts/Scene/Label.js +706 -0
  268. data/app/assets/javascripts/Scene/LabelCollection.js +697 -0
  269. data/app/assets/javascripts/Scene/LabelStyle.js +39 -0
  270. data/app/assets/javascripts/Scene/Material.js +1177 -0
  271. data/app/assets/javascripts/Scene/NeverTileDiscardPolicy.js +38 -0
  272. data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +282 -0
  273. data/app/assets/javascripts/Scene/OrthographicFrustum.js +345 -0
  274. data/app/assets/javascripts/Scene/PerformanceDisplay.js +183 -0
  275. data/app/assets/javascripts/Scene/PerspectiveFrustum.js +239 -0
  276. data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +394 -0
  277. data/app/assets/javascripts/Scene/Polygon.js +886 -0
  278. data/app/assets/javascripts/Scene/Polyline.js +441 -0
  279. data/app/assets/javascripts/Scene/PolylineCollection.js +1532 -0
  280. data/app/assets/javascripts/Scene/Projections.js +93 -0
  281. data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +224 -0
  282. data/app/assets/javascripts/Scene/Scene.js +632 -0
  283. data/app/assets/javascripts/Scene/Scene.profile.js +8 -0
  284. data/app/assets/javascripts/Scene/SceneMode.js +51 -0
  285. data/app/assets/javascripts/Scene/SceneTransitioner.js +776 -0
  286. data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1063 -0
  287. data/app/assets/javascripts/Scene/SensorVolumeCollection.js +192 -0
  288. data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +295 -0
  289. data/app/assets/javascripts/Scene/SkyAtmosphere.js +239 -0
  290. data/app/assets/javascripts/Scene/SkyBox.js +231 -0
  291. data/app/assets/javascripts/Scene/TerrainProvider.js +229 -0
  292. data/app/assets/javascripts/Scene/TexturePool.js +154 -0
  293. data/app/assets/javascripts/Scene/Tile.js +322 -0
  294. data/app/assets/javascripts/Scene/TileDiscardPolicy.js +42 -0
  295. data/app/assets/javascripts/Scene/TileImagery.js +36 -0
  296. data/app/assets/javascripts/Scene/TileLoadQueue.js +123 -0
  297. data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +337 -0
  298. data/app/assets/javascripts/Scene/TileReplacementQueue.js +139 -0
  299. data/app/assets/javascripts/Scene/TileState.js +19 -0
  300. data/app/assets/javascripts/Scene/TilingScheme.js +213 -0
  301. data/app/assets/javascripts/Scene/VerticalOrigin.js +39 -0
  302. data/app/assets/javascripts/Scene/ViewportQuad.js +256 -0
  303. data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +374 -0
  304. data/app/assets/javascripts/Scene/WebMercatorTilingScheme.js +291 -0
  305. data/app/assets/javascripts/Scene/package.json +6 -0
  306. data/app/assets/javascripts/Shaders/BillboardCollectionFS.glsl +30 -0
  307. data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +31 -0
  308. data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +68 -0
  309. data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +54 -0
  310. data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +927 -0
  311. data/app/assets/javascripts/Shaders/BuiltinFunctions.js +322 -0
  312. data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +106 -0
  313. data/app/assets/javascripts/Shaders/CentralBodyFS.js +82 -0
  314. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.glsl +20 -0
  315. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +22 -0
  316. data/app/assets/javascripts/Shaders/CentralBodyFSPole.glsl +29 -0
  317. data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +28 -0
  318. data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +88 -0
  319. data/app/assets/javascripts/Shaders/CentralBodyVS.js +69 -0
  320. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.glsl +9 -0
  321. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +13 -0
  322. data/app/assets/javascripts/Shaders/CentralBodyVSPole.glsl +12 -0
  323. data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +15 -0
  324. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +448 -0
  325. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +361 -0
  326. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +19 -0
  327. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +20 -0
  328. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +886 -0
  329. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +586 -0
  330. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +126 -0
  331. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -0
  332. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.glsl +14 -0
  333. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +18 -0
  334. data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +40 -0
  335. data/app/assets/javascripts/Shaders/EllipsoidFS.js +38 -0
  336. data/app/assets/javascripts/Shaders/EllipsoidVS.glsl +26 -0
  337. data/app/assets/javascripts/Shaders/EllipsoidVS.js +16 -0
  338. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.glsl +25 -0
  339. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +23 -0
  340. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.glsl +18 -0
  341. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +19 -0
  342. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.glsl +42 -0
  343. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +36 -0
  344. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.glsl +29 -0
  345. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +27 -0
  346. data/app/assets/javascripts/Shaders/Materials/CementMaterial.glsl +19 -0
  347. data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +20 -0
  348. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +38 -0
  349. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -0
  350. data/app/assets/javascripts/Shaders/Materials/DotMaterial.glsl +17 -0
  351. data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +18 -0
  352. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.glsl +23 -0
  353. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +24 -0
  354. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.glsl +18 -0
  355. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +19 -0
  356. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.glsl +12 -0
  357. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +15 -0
  358. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.glsl +28 -0
  359. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +26 -0
  360. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.glsl +19 -0
  361. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +21 -0
  362. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.glsl +13 -0
  363. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +16 -0
  364. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.glsl +14 -0
  365. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +17 -0
  366. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.glsl +18 -0
  367. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +19 -0
  368. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +29 -0
  369. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +26 -0
  370. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.glsl +17 -0
  371. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +19 -0
  372. data/app/assets/javascripts/Shaders/Materials/Water.glsl +91 -0
  373. data/app/assets/javascripts/Shaders/Materials/Water.js +60 -0
  374. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.glsl +36 -0
  375. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +31 -0
  376. data/app/assets/javascripts/Shaders/Noise.glsl +453 -0
  377. data/app/assets/javascripts/Shaders/Noise.js +242 -0
  378. data/app/assets/javascripts/Shaders/PolygonFS.glsl +27 -0
  379. data/app/assets/javascripts/Shaders/PolygonFS.js +23 -0
  380. data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +6 -0
  381. data/app/assets/javascripts/Shaders/PolygonFSPick.js +11 -0
  382. data/app/assets/javascripts/Shaders/PolygonVS.glsl +38 -0
  383. data/app/assets/javascripts/Shaders/PolygonVS.js +39 -0
  384. data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +30 -0
  385. data/app/assets/javascripts/Shaders/PolygonVSPick.js +32 -0
  386. data/app/assets/javascripts/Shaders/PolylineFS.glsl +6 -0
  387. data/app/assets/javascripts/Shaders/PolylineFS.js +11 -0
  388. data/app/assets/javascripts/Shaders/PolylineVS.glsl +34 -0
  389. data/app/assets/javascripts/Shaders/PolylineVS.js +35 -0
  390. data/app/assets/javascripts/Shaders/Ray.glsl +532 -0
  391. data/app/assets/javascripts/Shaders/Ray.js +357 -0
  392. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +26 -0
  393. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +22 -0
  394. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +11 -0
  395. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +14 -0
  396. data/app/assets/javascripts/Shaders/SensorVolume.glsl +43 -0
  397. data/app/assets/javascripts/Shaders/SensorVolume.js +31 -0
  398. data/app/assets/javascripts/Shaders/Shaders.profile.js +8 -0
  399. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +70 -0
  400. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +62 -0
  401. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.glsl +131 -0
  402. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +115 -0
  403. data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +10 -0
  404. data/app/assets/javascripts/Shaders/SkyBoxFS.js +14 -0
  405. data/app/assets/javascripts/Shaders/SkyBoxVS.glsl +10 -0
  406. data/app/assets/javascripts/Shaders/SkyBoxVS.js +14 -0
  407. data/app/assets/javascripts/Shaders/ViewportQuadFS.glsl +16 -0
  408. data/app/assets/javascripts/Shaders/ViewportQuadFS.js +17 -0
  409. data/app/assets/javascripts/Shaders/ViewportQuadVS.glsl +10 -0
  410. data/app/assets/javascripts/Shaders/ViewportQuadVS.js +14 -0
  411. data/app/assets/javascripts/Shaders/package.json +6 -0
  412. data/app/assets/javascripts/ThirdParty/ThirdParty.profile.js +8 -0
  413. data/app/assets/javascripts/ThirdParty/Tween.js +678 -0
  414. data/app/assets/javascripts/ThirdParty/Uri.js +277 -0
  415. data/app/assets/javascripts/ThirdParty/measureText.js +197 -0
  416. data/app/assets/javascripts/ThirdParty/package.json +6 -0
  417. data/app/assets/javascripts/ThirdParty/sprintf.js +319 -0
  418. data/app/assets/javascripts/ThirdParty/when.js +748 -0
  419. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +175 -0
  420. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +52 -0
  421. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +1237 -0
  422. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +4 -0
  423. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +349 -0
  424. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +1 -0
  425. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +47 -0
  426. data/app/assets/javascripts/Widgets/Dojo/checkForChromeFrame.js +71 -0
  427. data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
  428. data/app/assets/javascripts/Widgets/Images/Cesium_Logo_overlay.png +0 -0
  429. data/app/assets/javascripts/Widgets/Images/TimelineIcons.png +0 -0
  430. data/app/assets/javascripts/Widgets/Images/ajax-loader.gif +0 -0
  431. data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
  432. data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
  433. data/app/assets/javascripts/Widgets/Timeline.css +113 -0
  434. data/app/assets/javascripts/Widgets/Timeline.js +629 -0
  435. data/app/assets/javascripts/Widgets/TimelineHighlightRange.js +51 -0
  436. data/app/assets/javascripts/Widgets/TimelineTrack.js +54 -0
  437. data/app/assets/javascripts/Widgets/Widgets.profile.js +8 -0
  438. data/app/assets/javascripts/Widgets/package.json +6 -0
  439. data/app/assets/javascripts/Workers/Workers.profile.js +8 -0
  440. data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +2015 -0
  441. data/app/assets/javascripts/Workers/createTaskProcessorWorker.js +55 -0
  442. data/app/assets/javascripts/Workers/createVerticesFromExtent.js +24 -0
  443. data/app/assets/javascripts/Workers/package.json +6 -0
  444. data/app/assets/javascripts/copyrightHeader.js +22 -0
  445. data/app/assets/javascripts/main.js +10 -0
  446. data/app/assets/stylesheets/cesium.css +4 -0
  447. data/app/controllers/cesium_controller.rb +4 -0
  448. data/app/helpers/cesium_helper.rb +2 -0
  449. data/app/views/cesium/index.html.erb +3 -0
  450. data/config/routes.rb +3 -0
  451. data/lib/cesium.rb +4 -0
  452. data/lib/cesium/engine.rb +4 -0
  453. data/lib/cesium/version.rb +3 -0
  454. data/lib/tasks/cesium_tasks.rake +4 -0
  455. data/test/cesium_test.rb +7 -0
  456. data/test/dummy/README.rdoc +261 -0
  457. data/test/dummy/Rakefile +7 -0
  458. data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js.coffee +4 -0
  459. data/test/dummy/app/assets/javascripts/app.js.coffee +11 -0
  460. data/test/dummy/app/assets/javascripts/application.js.coffee +73 -0
  461. data/test/dummy/app/assets/stylesheets/application.css +12 -0
  462. data/test/dummy/app/controllers/application_controller.rb +4 -0
  463. data/test/dummy/app/helpers/application_helper.rb +2 -0
  464. data/test/dummy/app/views/layouts/application.html.erb +21 -0
  465. data/test/dummy/config.ru +4 -0
  466. data/test/dummy/config/application.rb +59 -0
  467. data/test/dummy/config/boot.rb +10 -0
  468. data/test/dummy/config/database.yml +25 -0
  469. data/test/dummy/config/environment.rb +5 -0
  470. data/test/dummy/config/environments/development.rb +37 -0
  471. data/test/dummy/config/environments/production.rb +67 -0
  472. data/test/dummy/config/environments/test.rb +37 -0
  473. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  474. data/test/dummy/config/initializers/inflections.rb +15 -0
  475. data/test/dummy/config/initializers/mime_types.rb +5 -0
  476. data/test/dummy/config/initializers/secret_token.rb +7 -0
  477. data/test/dummy/config/initializers/session_store.rb +8 -0
  478. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  479. data/test/dummy/config/locales/en.yml +5 -0
  480. data/test/dummy/config/requirejs.yml +10 -0
  481. data/test/dummy/config/routes.rb +3 -0
  482. data/test/dummy/public/404.html +26 -0
  483. data/test/dummy/public/422.html +26 -0
  484. data/test/dummy/public/500.html +25 -0
  485. data/test/dummy/public/favicon.ico +0 -0
  486. data/test/dummy/script/rails +6 -0
  487. data/test/functional/cesium_controller_test.rb +9 -0
  488. data/test/integration/navigation_test.rb +10 -0
  489. data/test/test_helper.rb +15 -0
  490. data/test/unit/helpers/cesium_helper_test.rb +4 -0
  491. metadata +641 -0
@@ -0,0 +1,374 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/clone',
4
+ '../Core/defaultValue',
5
+ '../Core/freezeObject',
6
+ '../Core/writeTextToCanvas',
7
+ '../Core/DeveloperError',
8
+ '../Core/Event',
9
+ '../Core/Extent',
10
+ './ImageryProvider',
11
+ './WebMercatorTilingScheme',
12
+ './GeographicTilingScheme'
13
+ ], function(
14
+ clone,
15
+ defaultValue,
16
+ freezeObject,
17
+ writeTextToCanvas,
18
+ DeveloperError,
19
+ Event,
20
+ Extent,
21
+ ImageryProvider,
22
+ WebMercatorTilingScheme,
23
+ GeographicTilingScheme) {
24
+ "use strict";
25
+
26
+ /**
27
+ * Provides tiled imagery hosted by a Web Map Service (WMS) server.
28
+ *
29
+ * @alias WebMapServiceImageryProvider
30
+ * @constructor
31
+ *
32
+ * @param {String} description.url The URL of the WMS service.
33
+ * @param {String} description.layers The layers to include, separated by commas.
34
+ * @param {Object} [description.parameters=WebMapServiceImageryProvider.DefaultParameters] Additional parameters to pass to the WMS server in the GetMap URL.
35
+ * @param {Extent} [description.extent=Extent.MAX_VALUE] The extent of the layer.
36
+ * @param {Number} [description.maximumLevel] The maximum level-of-detail supported by the imagery provider.
37
+ * If not specified, there is no limit.
38
+ * @param {String} [description.credit] A string crediting the data source, which is displayed on the canvas.
39
+ * @param {Object} [description.proxy] A proxy to use for requests. This object is
40
+ * expected to have a getURL function which returns the proxied URL, if needed.
41
+ *
42
+ * @exception {DeveloperError} <code>description.url</code> is required.
43
+ * @exception {DeveloperError} <code>description.layers</code> is required.
44
+ *
45
+ * @see ArcGisMapServerImageryProvider
46
+ * @see BingMapsImageryProvider
47
+ * @see SingleTileImageryProvider
48
+ * @see TileMapServiceImageryProvider
49
+ * @see OpenStreetMapImageryProvider
50
+ *
51
+ * @see <a href='http://resources.esri.com/help/9.3/arcgisserver/apis/rest/'>ArcGIS Server REST API</a>
52
+ * @see <a href='http://www.w3.org/TR/cors/'>Cross-Origin Resource Sharing</a>
53
+ *
54
+ * @example
55
+ * var provider = new WebMapServiceImageryProvider({
56
+ * url: 'http://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/WMSServer',
57
+ * layers : '0',
58
+ * proxy: new Cesium.DefaultProxy('/proxy/')
59
+ * });
60
+ */
61
+ var WebMapServiceImageryProvider = function WebMapServiceImageryProvider(description) {
62
+ description = defaultValue(description, {});
63
+
64
+ if (typeof description.url === 'undefined') {
65
+ throw new DeveloperError('description.url is required.');
66
+ }
67
+
68
+ if (typeof description.layers === 'undefined') {
69
+ throw new DeveloperError('description.layers is required.');
70
+ }
71
+
72
+ this._url = description.url;
73
+ this._tileDiscardPolicy = description.tileDiscardPolicy;
74
+ this._proxy = description.proxy;
75
+ this._layers = description.layers;
76
+
77
+ // Merge the parameters with the defaults, and make all parameter names lowercase
78
+ var parameters = clone(WebMapServiceImageryProvider.DefaultParameters);
79
+ if (typeof description.parameters !== 'undefined') {
80
+ for (var parameter in description.parameters) {
81
+ if (description.parameters.hasOwnProperty(parameter)) {
82
+ var parameterLowerCase = parameter.toLowerCase();
83
+ parameters[parameterLowerCase] = description.parameters[parameter];
84
+ }
85
+ }
86
+ }
87
+
88
+ this._parameters = parameters;
89
+
90
+ this._tileWidth = 256;
91
+ this._tileHeight = 256;
92
+ this._maximumLevel = description.maximumLevel; // undefined means no limit
93
+
94
+ var extent = defaultValue(description.extent, Extent.MAX_VALUE);
95
+ this._tilingScheme = new GeographicTilingScheme({
96
+ extent : extent
97
+ });
98
+
99
+ if (typeof description.credit !== 'undefined') {
100
+ this._logo = writeTextToCanvas(description.credit, {
101
+ font : '12px sans-serif'
102
+ });
103
+ }
104
+
105
+ this._errorEvent = new Event();
106
+
107
+ this._ready = true;
108
+ };
109
+
110
+ function buildImageUrl(imageryProvider, x, y, level) {
111
+ var url = imageryProvider._url;
112
+ var indexOfQuestionMark = url.indexOf('?');
113
+ if (indexOfQuestionMark >= 0 && indexOfQuestionMark < url.length - 1) {
114
+ if (url[url.length - 1] !== '&') {
115
+ url += '&';
116
+ }
117
+ } else if (indexOfQuestionMark < 0) {
118
+ url += '?';
119
+ }
120
+
121
+ var parameters = imageryProvider._parameters;
122
+ for (var parameter in parameters) {
123
+ if (parameters.hasOwnProperty(parameter)) {
124
+ url += parameter + '=' + parameters[parameter] + '&';
125
+ }
126
+ }
127
+
128
+ if (typeof parameters.layers === 'undefined') {
129
+ url += 'layers=' + imageryProvider._layers + '&';
130
+ }
131
+
132
+ if (typeof parameters.srs === 'undefined') {
133
+ url += 'srs=EPSG:4326&';
134
+ }
135
+
136
+ if (typeof parameters.bbox === 'undefined') {
137
+ var nativeExtent = imageryProvider._tilingScheme.tileXYToNativeExtent(x, y, level);
138
+ var bbox = nativeExtent.west + ',' + nativeExtent.south + ',' + nativeExtent.east + ',' + nativeExtent.north;
139
+ url += 'bbox=' + bbox + '&';
140
+ }
141
+
142
+ if (typeof parameters.width === 'undefined') {
143
+ url += 'width=256&';
144
+ }
145
+
146
+ if (typeof parameters.height === 'undefined') {
147
+ url += 'height=256&';
148
+ }
149
+
150
+ var proxy = imageryProvider._proxy;
151
+ if (typeof proxy !== 'undefined') {
152
+ url = proxy.getURL(url);
153
+ }
154
+
155
+ return url;
156
+ }
157
+
158
+ /**
159
+ * Gets the URL of the WMS server.
160
+ *
161
+ * @memberof WebMapServiceImageryProvider
162
+ *
163
+ * @returns {String} The URL.
164
+ */
165
+ WebMapServiceImageryProvider.prototype.getUrl = function() {
166
+ return this._url;
167
+ };
168
+
169
+ /**
170
+ * Gets the names of the WMS layers, separated by commas.
171
+ *
172
+ * @memberof WebMapServiceImageryProvider
173
+ *
174
+ * @returns {String} The layer names.
175
+ */
176
+ WebMapServiceImageryProvider.prototype.getLayers = function() {
177
+ return this._layers;
178
+ };
179
+
180
+ /**
181
+ * Gets the width of each tile, in pixels. This function should
182
+ * not be called before {@link WebMapServiceImageryProvider#isReady} returns true.
183
+ *
184
+ * @memberof WebMapServiceImageryProvider
185
+ *
186
+ * @returns {Number} The width.
187
+ *
188
+ * @exception {DeveloperError} <code>getTileWidth</code> must not be called before the imagery provider is ready.
189
+ */
190
+ WebMapServiceImageryProvider.prototype.getTileWidth = function() {
191
+ if (!this._ready) {
192
+ throw new DeveloperError('getTileWidth must not be called before the imagery provider is ready.');
193
+ }
194
+ return this._tileWidth;
195
+ };
196
+
197
+ /**
198
+ * Gets the height of each tile, in pixels. This function should
199
+ * not be called before {@link WebMapServiceImageryProvider#isReady} returns true.
200
+ *
201
+ * @memberof WebMapServiceImageryProvider
202
+ *
203
+ * @returns {Number} The height.
204
+ *
205
+ * @exception {DeveloperError} <code>getTileHeight</code> must not be called before the imagery provider is ready.
206
+ */
207
+ WebMapServiceImageryProvider.prototype.getTileHeight = function() {
208
+ if (!this._ready) {
209
+ throw new DeveloperError('getTileHeight must not be called before the imagery provider is ready.');
210
+ }
211
+ return this._tileHeight;
212
+ };
213
+
214
+ /**
215
+ * Gets the maximum level-of-detail that can be requested. This function should
216
+ * not be called before {@link WebMapServiceImageryProvider#isReady} returns true.
217
+ *
218
+ * @memberof WebMapServiceImageryProvider
219
+ *
220
+ * @returns {Number} The maximum level.
221
+ *
222
+ * @exception {DeveloperError} <code>getMaximumLevel</code> must not be called before the imagery provider is ready.
223
+ */
224
+ WebMapServiceImageryProvider.prototype.getMaximumLevel = function() {
225
+ if (!this._ready) {
226
+ throw new DeveloperError('getMaximumLevel must not be called before the imagery provider is ready.');
227
+ }
228
+ return this._maximumLevel;
229
+ };
230
+
231
+ /**
232
+ * Gets the tiling scheme used by this provider. This function should
233
+ * not be called before {@link WebMapServiceImageryProvider#isReady} returns true.
234
+ *
235
+ * @memberof WebMapServiceImageryProvider
236
+ *
237
+ * @returns {TilingScheme} The tiling scheme.
238
+ * @see WebMercatorTilingScheme
239
+ * @see GeographicTilingScheme
240
+ *
241
+ * @exception {DeveloperError} <code>getTilingScheme</code> must not be called before the imagery provider is ready.
242
+ */
243
+ WebMapServiceImageryProvider.prototype.getTilingScheme = function() {
244
+ if (!this._ready) {
245
+ throw new DeveloperError('getTilingScheme must not be called before the imagery provider is ready.');
246
+ }
247
+ return this._tilingScheme;
248
+ };
249
+
250
+ /**
251
+ * Gets the extent, in radians, of the imagery provided by this instance. This function should
252
+ * not be called before {@link WebMapServiceImageryProvider#isReady} returns true.
253
+ *
254
+ * @memberof WebMapServiceImageryProvider
255
+ *
256
+ * @returns {Extent} The extent.
257
+ *
258
+ * @exception {DeveloperError} <code>getExtent</code> must not be called before the imagery provider is ready.
259
+ */
260
+ WebMapServiceImageryProvider.prototype.getExtent = function() {
261
+ if (!this._ready) {
262
+ throw new DeveloperError('getExtent must not be called before the imagery provider is ready.');
263
+ }
264
+ return this._tilingScheme.getExtent();
265
+ };
266
+
267
+ /**
268
+ * Gets the tile discard policy. If not undefined, the discard policy is responsible
269
+ * for filtering out "missing" tiles via its shouldDiscardImage function. If this function
270
+ * returns undefined, no tiles are filtered. This function should
271
+ * not be called before {@link WebMapServiceImageryProvider#isReady} returns true.
272
+ *
273
+ * @memberof WebMapServiceImageryProvider
274
+ *
275
+ * @returns {TileDiscardPolicy} The discard policy.
276
+ *
277
+ * @see DiscardMissingTileImagePolicy
278
+ * @see NeverTileDiscardPolicy
279
+ *
280
+ * @exception {DeveloperError} <code>getTileDiscardPolicy</code> must not be called before the imagery provider is ready.
281
+ */
282
+ WebMapServiceImageryProvider.prototype.getTileDiscardPolicy = function() {
283
+ if (!this._ready) {
284
+ throw new DeveloperError('getTileDiscardPolicy must not be called before the imagery provider is ready.');
285
+ }
286
+ return this._tileDiscardPolicy;
287
+ };
288
+
289
+ /**
290
+ * Gets an event that is raised when the imagery provider encounters an asynchronous error. By subscribing
291
+ * to the event, you will be notified of the error and can potentially recover from it. Event listeners
292
+ * are passed an instance of {@link ImageryProviderError}.
293
+ *
294
+ * @memberof WebMapServiceImageryProvider
295
+ *
296
+ * @returns {Event} The event.
297
+ */
298
+ WebMapServiceImageryProvider.prototype.getErrorEvent = function() {
299
+ return this._errorEvent;
300
+ };
301
+
302
+ /**
303
+ * Gets a value indicating whether or not the provider is ready for use.
304
+ *
305
+ * @memberof WebMapServiceImageryProvider
306
+ *
307
+ * @returns {Boolean} True if the provider is ready to use; otherwise, false.
308
+ */
309
+ WebMapServiceImageryProvider.prototype.isReady = function() {
310
+ return this._ready;
311
+ };
312
+
313
+ /**
314
+ * Requests the image for a given tile. This function should
315
+ * not be called before {@link WebMapServiceImageryProvider#isReady} returns true.
316
+ *
317
+ * @memberof WebMapServiceImageryProvider
318
+ *
319
+ * @param {Number} x The tile X coordinate.
320
+ * @param {Number} y The tile Y coordinate.
321
+ * @param {Number} level The tile level.
322
+ *
323
+ * @returns {Promise} A promise for the image that will resolve when the image is available, or
324
+ * undefined if there are too many active requests to the server, and the request
325
+ * should be retried later. The resolved image may be either an
326
+ * Image or a Canvas DOM object.
327
+ *
328
+ * @exception {DeveloperError} <code>requestImage</code> must not be called before the imagery provider is ready.
329
+ */
330
+ WebMapServiceImageryProvider.prototype.requestImage = function(x, y, level) {
331
+ if (!this._ready) {
332
+ throw new DeveloperError('requestImage must not be called before the imagery provider is ready.');
333
+ }
334
+ var url = buildImageUrl(this, x, y, level);
335
+ return ImageryProvider.loadImage(url);
336
+ };
337
+
338
+ /**
339
+ * Gets the logo to display when this imagery provider is active. Typically this is used to credit
340
+ * the source of the imagery. This function should not be called before {@link WebMapServiceImageryProvider#isReady} returns true.
341
+ *
342
+ * @memberof WebMapServiceImageryProvider
343
+ *
344
+ * @returns {Image|Canvas} A canvas or image containing the log to display, or undefined if there is no logo.
345
+ *
346
+ * @exception {DeveloperError} <code>getLogo</code> must not be called before the imagery provider is ready.
347
+ */
348
+ WebMapServiceImageryProvider.prototype.getLogo = function() {
349
+ if (!this._ready) {
350
+ throw new DeveloperError('getLogo must not be called before the imagery provider is ready.');
351
+ }
352
+ return this._logo;
353
+ };
354
+
355
+ /**
356
+ * The default parameters to include in the WMS URL to obtain images. The values are as follows:
357
+ * service=WMS
358
+ * version=1.1.1
359
+ * request=GetMap
360
+ * styles=
361
+ * format=image/jpeg
362
+ *
363
+ * @memberof WebMapServiceImageryProvider
364
+ */
365
+ WebMapServiceImageryProvider.DefaultParameters = freezeObject({
366
+ service : 'WMS',
367
+ version : '1.1.1',
368
+ request : 'GetMap',
369
+ styles : '',
370
+ format : 'image/jpeg'
371
+ });
372
+
373
+ return WebMapServiceImageryProvider;
374
+ });
@@ -0,0 +1,291 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/defaultValue',
4
+ '../Core/DeveloperError',
5
+ '../Core/Math',
6
+ '../Core/Ellipsoid',
7
+ '../Core/Extent',
8
+ '../Core/Cartesian2',
9
+ '../Core/Cartographic',
10
+ '../Core/WebMercatorProjection',
11
+ './TilingScheme'
12
+ ], function(
13
+ defaultValue,
14
+ DeveloperError,
15
+ CesiumMath,
16
+ Ellipsoid,
17
+ Extent,
18
+ Cartesian2,
19
+ Cartographic,
20
+ WebMercatorProjection,
21
+ TilingScheme) {
22
+ "use strict";
23
+
24
+ /**
25
+ * A tiling scheme for geometry referenced to a {@link WebMercatorProjection}, EPSG:3857. This is
26
+ * the tiling scheme used by Google Maps, Microsoft Bing Maps, and most of ESRI ArcGIS Online.
27
+ *
28
+ * @alias WebMercatorTilingScheme
29
+ * @constructor
30
+ *
31
+ * @param {Ellipsoid} [description.ellipsoid=Ellipsoid.WGS84] The ellipsoid whose surface is being tiled. Defaults to
32
+ * the WGS84 ellipsoid.
33
+ * @param {Number} [description.numberOfLevelZeroTilesX=1] The number of tiles in the X direction at level zero of
34
+ * the tile tree.
35
+ * @param {Number} [description.numberOfLevelZeroTilesY=1] The number of tiles in the Y direction at level zero of
36
+ * the tile tree.
37
+ * @param {Cartesian2} [description.extentSouthwestInMeters] The southwest corner of the extent covered by the
38
+ * tiling scheme, in meters. If this parameter or extentNortheastInMeters is not specified, the entire
39
+ * globe is covered in the longitude direction and an equal distance is covered in the latitude
40
+ * direction, resulting in a square projection.
41
+ * @param {Cartesian2} [description.extentNortheastInMeters] The northeast corner of the extent covered by the
42
+ * tiling scheme, in meters. If this parameter or extentSouthwestInMeters is not specified, the entire
43
+ * globe is covered in the longitude direction and an equal distance is covered in the latitude
44
+ * direction, resulting in a square projection.
45
+ */
46
+ var WebMercatorTilingScheme = function WebMercatorTilingScheme(description) {
47
+ description = defaultValue(description, {});
48
+
49
+ this._ellipsoid = defaultValue(description.ellipsoid, Ellipsoid.WGS84);
50
+ this._numberOfLevelZeroTilesX = defaultValue(description.numberOfLevelZeroTilesX, 1);
51
+ this._numberOfLevelZeroTilesY = defaultValue(description.numberOfLevelZeroTilesY, 1);
52
+
53
+ this._projection = new WebMercatorProjection(this._ellipsoid);
54
+
55
+ if (typeof description.extentSouthwestInMeters !== 'undefined' &&
56
+ typeof description.extentNortheastInMeters !== 'undefined') {
57
+ this._extentSouthwestInMeters = description.extentSouthwestInMeters;
58
+ this._extentNortheastInMeters = description.extentNortheastInMeters;
59
+ } else {
60
+ var semimajorAxisTimesPi = this._ellipsoid.getMaximumRadius() * Math.PI;
61
+ this._extentSouthwestInMeters = new Cartesian2(-semimajorAxisTimesPi, -semimajorAxisTimesPi);
62
+ this._extentNortheastInMeters = new Cartesian2(semimajorAxisTimesPi, semimajorAxisTimesPi);
63
+ }
64
+
65
+ var southwest = this._projection.unproject(this._extentSouthwestInMeters);
66
+ var northeast = this._projection.unproject(this._extentNortheastInMeters);
67
+ this._extent = new Extent(southwest.longitude, southwest.latitude,
68
+ northeast.longitude, northeast.latitude);
69
+ };
70
+
71
+ /**
72
+ * Gets the ellipsoid that is tiled by this tiling scheme.
73
+ *
74
+ * @memberof WebMercatorTilingScheme
75
+ *
76
+ * @returns {Ellipsoid} The ellipsoid.
77
+ */
78
+ WebMercatorTilingScheme.prototype.getEllipsoid = function() {
79
+ return this._ellipsoid;
80
+ };
81
+
82
+ /**
83
+ * Gets the extent, in radians, covered by this tiling scheme.
84
+ *
85
+ * @memberof WebMercatorTilingScheme
86
+ *
87
+ * @returns {Extent} The extent.
88
+ */
89
+ WebMercatorTilingScheme.prototype.getExtent = function() {
90
+ return this._extent;
91
+ };
92
+
93
+ /**
94
+ * Gets the map projection used by this tiling scheme.
95
+ *
96
+ * @memberof WebMercatorTilingScheme
97
+ *
98
+ * @returns {Projection} The map projection.
99
+ */
100
+ WebMercatorTilingScheme.prototype.getProjection = function() {
101
+ return this._projection;
102
+ };
103
+
104
+ /**
105
+ * Gets the total number of tiles in the X direction at a specified level-of-detail.
106
+ *
107
+ * @memberof WebMercatorTilingScheme
108
+ *
109
+ * @param {Number} level The level-of-detail.
110
+ * @returns {Number} The number of tiles in the X direction at the given level.
111
+ */
112
+ WebMercatorTilingScheme.prototype.getNumberOfXTilesAtLevel = function(level) {
113
+ return this._numberOfLevelZeroTilesX << level;
114
+ };
115
+
116
+ /**
117
+ * Gets the total number of tiles in the Y direction at a specified level-of-detail.
118
+ *
119
+ * @memberof WebMercatorTilingScheme
120
+ *
121
+ * @param {Number} level The level-of-detail.
122
+ * @returns {Number} The number of tiles in the Y direction at the given level.
123
+ */
124
+ WebMercatorTilingScheme.prototype.getNumberOfYTilesAtLevel = function(level) {
125
+ return this._numberOfLevelZeroTilesY << level;
126
+ };
127
+
128
+ /**
129
+ * Creates the tile or tiles at level of detail zero, the coarsest, least detailed level.
130
+ *
131
+ * @memberof WebMercatorTilingScheme
132
+ *
133
+ * @returns {Array} An array containing the tiles at level of detail zero, starting with the
134
+ * tile in the northwest corner of the globe and followed by the tile (if any) to its east.
135
+ */
136
+ WebMercatorTilingScheme.prototype.createLevelZeroTiles = function() {
137
+ return TilingScheme.createRectangleOfLevelZeroTiles(this, this._numberOfLevelZeroTilesX, this._numberOfLevelZeroTilesY);
138
+ };
139
+
140
+ /**
141
+ * Transforms an extent specified in geodetic radians to the native coordinate system
142
+ * of this tiling scheme.
143
+ *
144
+ * @memberof WebMercatorTilingScheme
145
+ *
146
+ * @param {Extent} extent The extent to transform.
147
+ * @param {Extent} [result] The instance to which to copy the result, or undefined if a new instance
148
+ * should be created.
149
+ * @returns {Extent} The specified 'result', or a new object containing the native extent if 'result'
150
+ * is undefined.
151
+ */
152
+ WebMercatorTilingScheme.prototype.extentToNativeExtent = function(extent, result) {
153
+ var projection = this._projection;
154
+ var southwest = projection.project(extent.getSouthwest());
155
+ var northeast = projection.project(extent.getNortheast());
156
+
157
+ if (typeof result === 'undefined') {
158
+ return new Extent(southwest.x, southwest.y, northeast.x, northeast.y);
159
+ }
160
+
161
+ result.west = southwest.x;
162
+ result.south = southwest.y;
163
+ result.east = northeast.x;
164
+ result.north = northeast.y;
165
+ return result;
166
+ };
167
+
168
+ /**
169
+ * Converts tile x, y coordinates and level to an extent expressed in the native coordinates
170
+ * of the tiling scheme.
171
+ *
172
+ * @memberof WebMercatorTilingScheme
173
+ *
174
+ * @param {Number} x The integer x coordinate of the tile.
175
+ * @param {Number} y The integer y coordinate of the tile.
176
+ * @param {Number} level The tile level-of-detail. Zero is the least detailed.
177
+ * @param {Object} [result] The instance to which to copy the result, or undefined if a new instance
178
+ * should be created.
179
+ *
180
+ * @returns {Extent} The specified 'result', or a new object containing the extent
181
+ * if 'result' is undefined.
182
+ */
183
+ WebMercatorTilingScheme.prototype.tileXYToNativeExtent = function(x, y, level, result) {
184
+ var xTiles = this.getNumberOfXTilesAtLevel(level);
185
+ var yTiles = this.getNumberOfYTilesAtLevel(level);
186
+
187
+ var xTileWidth = (this._extentNortheastInMeters.x - this._extentSouthwestInMeters.x) / xTiles;
188
+ var west = this._extentSouthwestInMeters.x + x * xTileWidth;
189
+ var east = this._extentSouthwestInMeters.x + (x + 1) * xTileWidth;
190
+
191
+ var yTileHeight = (this._extentNortheastInMeters.y - this._extentSouthwestInMeters.y) / yTiles;
192
+ var north = this._extentNortheastInMeters.y - y * yTileHeight;
193
+ var south = this._extentNortheastInMeters.y - (y + 1) * yTileHeight;
194
+
195
+ if (typeof result === 'undefined') {
196
+ return new Extent(west, south, east, north);
197
+ }
198
+
199
+ result.west = west;
200
+ result.south = south;
201
+ result.east = east;
202
+ result.north = north;
203
+ return result;
204
+ };
205
+
206
+ /**
207
+ * Converts tile x, y coordinates and level to a cartographic extent in radians.
208
+ *
209
+ * @memberof GeographicTilingScheme
210
+ *
211
+ * @param {Number} x The integer x coordinate of the tile.
212
+ * @param {Number} y The integer y coordinate of the tile.
213
+ * @param {Number} level The tile level-of-detail. Zero is the least detailed.
214
+ * @param {Object} [result] The instance to which to copy the result, or undefined if a new instance
215
+ * should be created.
216
+ *
217
+ * @returns {Extent} The specified 'result', or a new object containing the extent
218
+ * if 'result' is undefined.
219
+ */
220
+ WebMercatorTilingScheme.prototype.tileXYToExtent = function(x, y, level, result) {
221
+ var nativeExtent = this.tileXYToNativeExtent(x, y, level, result);
222
+
223
+ var projection = this._projection;
224
+ var southwest = projection.unproject(new Cartesian2(nativeExtent.west, nativeExtent.south));
225
+ var northeast = projection.unproject(new Cartesian2(nativeExtent.east, nativeExtent.north));
226
+
227
+ nativeExtent.west = southwest.longitude;
228
+ nativeExtent.south = southwest.latitude;
229
+ nativeExtent.east = northeast.longitude;
230
+ nativeExtent.north = northeast.latitude;
231
+ return nativeExtent;
232
+ };
233
+
234
+ /**
235
+ * Calculates the tile x, y coordinates of the tile containing
236
+ * a given cartographic position.
237
+ *
238
+ * @memberof GeographicTilingScheme
239
+ *
240
+ * @param {Cartographic} position The position.
241
+ * @param {Number} level The tile level-of-detail. Zero is the least detailed.
242
+ * @param {Cartesian} [result] The instance to which to copy the result, or undefined if a new instance
243
+ * should be created.
244
+ *
245
+ * @returns {Cartesian2} The specified 'result', or a new object containing the tile x, y coordinates
246
+ * if 'result' is undefined.
247
+ */
248
+ WebMercatorTilingScheme.prototype.positionToTileXY = function(position, level, result) {
249
+ var extent = this._extent;
250
+ if (position.latitude > extent.north ||
251
+ position.latitude < extent.south ||
252
+ position.longitude < extent.west ||
253
+ position.longitude > extent.east) {
254
+ // outside the bounds of the tiling scheme
255
+ return undefined;
256
+ }
257
+
258
+ var xTiles = this.getNumberOfXTilesAtLevel(level);
259
+ var yTiles = this.getNumberOfYTilesAtLevel(level);
260
+
261
+ var overallWidth = this._extentNortheastInMeters.x - this._extentSouthwestInMeters.x;
262
+ var xTileWidth = overallWidth / xTiles;
263
+ var overallHeight = this._extentNortheastInMeters.y - this._extentSouthwestInMeters.y;
264
+ var yTileHeight = overallHeight / yTiles;
265
+
266
+ var projection = this._projection;
267
+
268
+ var webMercatorPosition = projection.project(position);
269
+ var distanceFromWest = webMercatorPosition.x - this._extentSouthwestInMeters.x;
270
+ var distanceFromNorth = this._extentNortheastInMeters.y - webMercatorPosition.y;
271
+
272
+ var xTileCoordinate = distanceFromWest / xTileWidth | 0;
273
+ if (xTileCoordinate >= xTiles) {
274
+ xTileCoordinate = xTiles - 1;
275
+ }
276
+ var yTileCoordinate = distanceFromNorth / yTileHeight | 0;
277
+ if (yTileCoordinate >= yTiles) {
278
+ yTileCoordinate = yTiles - 1;
279
+ }
280
+
281
+ if (typeof result === 'undefined') {
282
+ return new Cartesian2(xTileCoordinate, yTileCoordinate);
283
+ }
284
+
285
+ result.x = xTileCoordinate;
286
+ result.y = yTileCoordinate;
287
+ return result;
288
+ };
289
+
290
+ return WebMercatorTilingScheme;
291
+ });