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.
- data/LICENSE.md +259 -0
- data/README.rdoc +90 -0
- data/Rakefile +40 -0
- data/app/assets/javascripts/Assets/Assets.profile.js +8 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
- data/app/assets/javascripts/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/waterNormals.jpg +0 -0
- data/app/assets/javascripts/Assets/package.json +6 -0
- data/app/assets/javascripts/Cesium.js +320 -0
- data/app/assets/javascripts/Core/AnimationController.js +148 -0
- data/app/assets/javascripts/Core/AxisAlignedBoundingBox.js +243 -0
- data/app/assets/javascripts/Core/BoundingRectangle.js +364 -0
- data/app/assets/javascripts/Core/BoundingSphere.js +819 -0
- data/app/assets/javascripts/Core/BoxTessellator.js +93 -0
- data/app/assets/javascripts/Core/Cartesian2.js +762 -0
- data/app/assets/javascripts/Core/Cartesian3.js +861 -0
- data/app/assets/javascripts/Core/Cartesian4.js +762 -0
- data/app/assets/javascripts/Core/Cartographic.js +211 -0
- data/app/assets/javascripts/Core/CatmullRomSpline.js +232 -0
- data/app/assets/javascripts/Core/Clock.js +195 -0
- data/app/assets/javascripts/Core/ClockRange.js +37 -0
- data/app/assets/javascripts/Core/ClockStep.js +32 -0
- data/app/assets/javascripts/Core/Color.js +1629 -0
- data/app/assets/javascripts/Core/ComponentDatatype.js +119 -0
- data/app/assets/javascripts/Core/Core.profile.js +8 -0
- data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +198 -0
- data/app/assets/javascripts/Core/CubicRealPolynomial.js +251 -0
- data/app/assets/javascripts/Core/DefaultProxy.js +30 -0
- data/app/assets/javascripts/Core/DeveloperError.js +60 -0
- data/app/assets/javascripts/Core/EarthOrientationParameters.js +383 -0
- data/app/assets/javascripts/Core/EarthOrientationParametersSample.js +50 -0
- data/app/assets/javascripts/Core/Ellipsoid.js +539 -0
- data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +207 -0
- data/app/assets/javascripts/Core/EllipsoidalOccluder.js +151 -0
- data/app/assets/javascripts/Core/EncodedCartesian3.js +197 -0
- data/app/assets/javascripts/Core/Enumeration.js +67 -0
- data/app/assets/javascripts/Core/Event.js +122 -0
- data/app/assets/javascripts/Core/Extent.js +383 -0
- data/app/assets/javascripts/Core/ExtentTessellator.js +384 -0
- data/app/assets/javascripts/Core/FAR.js +13 -0
- data/app/assets/javascripts/Core/FeatureDetection.js +126 -0
- data/app/assets/javascripts/Core/Fullscreen.js +235 -0
- data/app/assets/javascripts/Core/GeographicProjection.js +107 -0
- data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +176 -0
- data/app/assets/javascripts/Core/HermiteSpline.js +234 -0
- data/app/assets/javascripts/Core/Iau2006XysData.js +259 -0
- data/app/assets/javascripts/Core/Iau2006XysSample.js +36 -0
- data/app/assets/javascripts/Core/IndexDatatype.js +28 -0
- data/app/assets/javascripts/Core/Intersect.js +40 -0
- data/app/assets/javascripts/Core/IntersectionTests.js +359 -0
- data/app/assets/javascripts/Core/Interval.js +27 -0
- data/app/assets/javascripts/Core/Iso8601.js +46 -0
- data/app/assets/javascripts/Core/JulianDate.js +1228 -0
- data/app/assets/javascripts/Core/KeyboardEventModifier.js +38 -0
- data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +96 -0
- data/app/assets/javascripts/Core/LeapSecond.js +158 -0
- data/app/assets/javascripts/Core/LinearApproximation.js +98 -0
- data/app/assets/javascripts/Core/Math.js +532 -0
- data/app/assets/javascripts/Core/Matrix2.js +833 -0
- data/app/assets/javascripts/Core/Matrix3.js +1099 -0
- data/app/assets/javascripts/Core/Matrix4.js +2164 -0
- data/app/assets/javascripts/Core/MeshFilters.js +568 -0
- data/app/assets/javascripts/Core/Occluder.js +474 -0
- data/app/assets/javascripts/Core/OrientationInterpolator.js +109 -0
- data/app/assets/javascripts/Core/PlaneTessellator.js +74 -0
- data/app/assets/javascripts/Core/PolygonPipeline.js +792 -0
- data/app/assets/javascripts/Core/PolylinePipeline.js +90 -0
- data/app/assets/javascripts/Core/PrimitiveType.js +80 -0
- data/app/assets/javascripts/Core/QuadraticRealPolynomial.js +146 -0
- data/app/assets/javascripts/Core/QuarticRealPolynomial.js +339 -0
- data/app/assets/javascripts/Core/Quaternion.js +947 -0
- data/app/assets/javascripts/Core/Queue.js +95 -0
- data/app/assets/javascripts/Core/Ray.js +64 -0
- data/app/assets/javascripts/Core/ReferenceFrame.js +25 -0
- data/app/assets/javascripts/Core/RequestErrorEvent.js +35 -0
- data/app/assets/javascripts/Core/RuntimeError.js +59 -0
- data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +658 -0
- data/app/assets/javascripts/Core/ScreenSpaceEventType.js +149 -0
- data/app/assets/javascripts/Core/Shapes.js +230 -0
- data/app/assets/javascripts/Core/Spherical.js +192 -0
- data/app/assets/javascripts/Core/TaskProcessor.js +131 -0
- data/app/assets/javascripts/Core/TimeConstants.js +85 -0
- data/app/assets/javascripts/Core/TimeInterval.js +305 -0
- data/app/assets/javascripts/Core/TimeIntervalCollection.js +543 -0
- data/app/assets/javascripts/Core/TimeStandard.js +31 -0
- data/app/assets/javascripts/Core/Tipsify.js +285 -0
- data/app/assets/javascripts/Core/Transforms.js +614 -0
- data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +102 -0
- data/app/assets/javascripts/Core/Visibility.js +38 -0
- data/app/assets/javascripts/Core/WebMercatorProjection.js +154 -0
- data/app/assets/javascripts/Core/WindingOrder.js +40 -0
- data/app/assets/javascripts/Core/binarySearch.js +69 -0
- data/app/assets/javascripts/Core/buildModuleUrl.js +77 -0
- data/app/assets/javascripts/Core/clone.js +21 -0
- data/app/assets/javascripts/Core/combine.js +81 -0
- data/app/assets/javascripts/Core/computeSunPosition.js +116 -0
- data/app/assets/javascripts/Core/createGuid.js +25 -0
- data/app/assets/javascripts/Core/defaultValue.js +22 -0
- data/app/assets/javascripts/Core/destroyObject.js +61 -0
- data/app/assets/javascripts/Core/freezeObject.js +20 -0
- data/app/assets/javascripts/Core/getImagePixels.js +46 -0
- data/app/assets/javascripts/Core/isLeapYear.js +30 -0
- data/app/assets/javascripts/Core/jsonp.js +116 -0
- data/app/assets/javascripts/Core/loadArrayBuffer.js +76 -0
- data/app/assets/javascripts/Core/loadImage.js +85 -0
- data/app/assets/javascripts/Core/loadJson.js +54 -0
- data/app/assets/javascripts/Core/loadText.js +78 -0
- data/app/assets/javascripts/Core/loadXML.js +76 -0
- data/app/assets/javascripts/Core/package.json +6 -0
- data/app/assets/javascripts/Core/pointInsideTriangle2D.js +41 -0
- data/app/assets/javascripts/Core/requestAnimationFrame.js +61 -0
- data/app/assets/javascripts/Core/throttleRequestByServer.js +74 -0
- data/app/assets/javascripts/Core/writeTextToCanvas.js +92 -0
- data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +254 -0
- data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +57 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +96 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +99 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +125 -0
- data/app/assets/javascripts/DynamicScene/CzmlColor.js +127 -0
- data/app/assets/javascripts/DynamicScene/CzmlDefaults.js +135 -0
- data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +59 -0
- data/app/assets/javascripts/DynamicScene/CzmlImage.js +61 -0
- data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +59 -0
- data/app/assets/javascripts/DynamicScene/CzmlNumber.js +82 -0
- data/app/assets/javascripts/DynamicScene/CzmlString.js +56 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +99 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +172 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +98 -0
- data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +59 -0
- data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +245 -0
- data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +347 -0
- data/app/assets/javascripts/DynamicScene/DynamicColorMaterial.js +78 -0
- data/app/assets/javascripts/DynamicScene/DynamicCone.js +291 -0
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +350 -0
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +389 -0
- data/app/assets/javascripts/DynamicScene/DynamicDirectionsProperty.js +163 -0
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoid.js +158 -0
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +277 -0
- data/app/assets/javascripts/DynamicScene/DynamicImageMaterial.js +136 -0
- data/app/assets/javascripts/DynamicScene/DynamicLabel.js +286 -0
- data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +341 -0
- data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +125 -0
- data/app/assets/javascripts/DynamicScene/DynamicObject.js +364 -0
- data/app/assets/javascripts/DynamicScene/DynamicObjectCollection.js +137 -0
- data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +299 -0
- data/app/assets/javascripts/DynamicScene/DynamicPath.js +214 -0
- data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +402 -0
- data/app/assets/javascripts/DynamicScene/DynamicPoint.js +184 -0
- data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +323 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolygon.js +138 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +251 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +183 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +268 -0
- data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +525 -0
- data/app/assets/javascripts/DynamicScene/DynamicProperty.js +352 -0
- data/app/assets/javascripts/DynamicScene/DynamicPyramid.js +204 -0
- data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +302 -0
- data/app/assets/javascripts/DynamicScene/DynamicScene.profile.js +8 -0
- data/app/assets/javascripts/DynamicScene/DynamicVertexPositionsProperty.js +199 -0
- data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +155 -0
- data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +181 -0
- data/app/assets/javascripts/DynamicScene/package.json +6 -0
- data/app/assets/javascripts/DynamicScene/processCzml.js +77 -0
- data/app/assets/javascripts/Renderer/BlendEquation.js +52 -0
- data/app/assets/javascripts/Renderer/BlendFunction.js +158 -0
- data/app/assets/javascripts/Renderer/BlendingState.js +64 -0
- data/app/assets/javascripts/Renderer/Buffer.js +141 -0
- data/app/assets/javascripts/Renderer/BufferUsage.js +48 -0
- data/app/assets/javascripts/Renderer/ClearCommand.js +40 -0
- data/app/assets/javascripts/Renderer/CommandLists.js +42 -0
- data/app/assets/javascripts/Renderer/Context.js +2805 -0
- data/app/assets/javascripts/Renderer/CubeMap.js +358 -0
- data/app/assets/javascripts/Renderer/CubeMapFace.js +202 -0
- data/app/assets/javascripts/Renderer/CullFace.js +50 -0
- data/app/assets/javascripts/Renderer/DepthFunction.js +95 -0
- data/app/assets/javascripts/Renderer/DrawCommand.js +96 -0
- data/app/assets/javascripts/Renderer/Framebuffer.js +435 -0
- data/app/assets/javascripts/Renderer/MipmapHint.js +50 -0
- data/app/assets/javascripts/Renderer/PickFramebuffer.js +178 -0
- data/app/assets/javascripts/Renderer/PixelDatatype.js +86 -0
- data/app/assets/javascripts/Renderer/PixelFormat.js +113 -0
- data/app/assets/javascripts/Renderer/Renderbuffer.js +102 -0
- data/app/assets/javascripts/Renderer/RenderbufferFormat.js +77 -0
- data/app/assets/javascripts/Renderer/Renderer.profile.js +8 -0
- data/app/assets/javascripts/Renderer/ShaderCache.js +121 -0
- data/app/assets/javascripts/Renderer/ShaderProgram.js +2402 -0
- data/app/assets/javascripts/Renderer/StencilFunction.js +95 -0
- data/app/assets/javascripts/Renderer/StencilOperation.js +95 -0
- data/app/assets/javascripts/Renderer/Texture.js +395 -0
- data/app/assets/javascripts/Renderer/TextureAtlas.js +472 -0
- data/app/assets/javascripts/Renderer/TextureAtlasBuilder.js +133 -0
- data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +41 -0
- data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +77 -0
- data/app/assets/javascripts/Renderer/TextureWrap.js +50 -0
- data/app/assets/javascripts/Renderer/UniformDatatype.js +218 -0
- data/app/assets/javascripts/Renderer/UniformState.js +799 -0
- data/app/assets/javascripts/Renderer/VertexArray.js +365 -0
- data/app/assets/javascripts/Renderer/VertexArrayFacade.js +574 -0
- data/app/assets/javascripts/Renderer/VertexLayout.js +49 -0
- data/app/assets/javascripts/Renderer/loadCubeMap.js +92 -0
- data/app/assets/javascripts/Renderer/package.json +6 -0
- data/app/assets/javascripts/Scene/AnimationCollection.js +249 -0
- data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +384 -0
- data/app/assets/javascripts/Scene/Billboard.js +680 -0
- data/app/assets/javascripts/Scene/BillboardCollection.js +1209 -0
- data/app/assets/javascripts/Scene/BingMapsImageryProvider.js +460 -0
- data/app/assets/javascripts/Scene/BingMapsStyle.js +55 -0
- data/app/assets/javascripts/Scene/Camera.js +358 -0
- data/app/assets/javascripts/Scene/CameraColumbusViewMode.js +30 -0
- data/app/assets/javascripts/Scene/CameraController.js +1258 -0
- data/app/assets/javascripts/Scene/CameraEventAggregator.js +270 -0
- data/app/assets/javascripts/Scene/CameraEventType.js +53 -0
- data/app/assets/javascripts/Scene/CameraFlightPath.js +495 -0
- data/app/assets/javascripts/Scene/CentralBody.js +817 -0
- data/app/assets/javascripts/Scene/CentralBodySurface.js +1120 -0
- data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +107 -0
- data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +511 -0
- data/app/assets/javascripts/Scene/CompositePrimitive.js +454 -0
- data/app/assets/javascripts/Scene/CullingVolume.js +59 -0
- data/app/assets/javascripts/Scene/CustomSensorVolume.js +440 -0
- data/app/assets/javascripts/Scene/DiscardMissingTileImagePolicy.js +134 -0
- data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +412 -0
- data/app/assets/javascripts/Scene/EllipsoidTerrainProvider.js +182 -0
- data/app/assets/javascripts/Scene/FrameState.js +86 -0
- data/app/assets/javascripts/Scene/FrustumCommands.js +32 -0
- data/app/assets/javascripts/Scene/GeographicTilingScheme.js +265 -0
- data/app/assets/javascripts/Scene/HorizontalOrigin.js +39 -0
- data/app/assets/javascripts/Scene/Imagery.js +85 -0
- data/app/assets/javascripts/Scene/ImageryLayer.js +876 -0
- data/app/assets/javascripts/Scene/ImageryLayerCollection.js +403 -0
- data/app/assets/javascripts/Scene/ImageryProvider.js +185 -0
- data/app/assets/javascripts/Scene/ImageryProviderError.js +149 -0
- data/app/assets/javascripts/Scene/ImageryState.js +20 -0
- data/app/assets/javascripts/Scene/Label.js +706 -0
- data/app/assets/javascripts/Scene/LabelCollection.js +697 -0
- data/app/assets/javascripts/Scene/LabelStyle.js +39 -0
- data/app/assets/javascripts/Scene/Material.js +1177 -0
- data/app/assets/javascripts/Scene/NeverTileDiscardPolicy.js +38 -0
- data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +282 -0
- data/app/assets/javascripts/Scene/OrthographicFrustum.js +345 -0
- data/app/assets/javascripts/Scene/PerformanceDisplay.js +183 -0
- data/app/assets/javascripts/Scene/PerspectiveFrustum.js +239 -0
- data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +394 -0
- data/app/assets/javascripts/Scene/Polygon.js +886 -0
- data/app/assets/javascripts/Scene/Polyline.js +441 -0
- data/app/assets/javascripts/Scene/PolylineCollection.js +1532 -0
- data/app/assets/javascripts/Scene/Projections.js +93 -0
- data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +224 -0
- data/app/assets/javascripts/Scene/Scene.js +632 -0
- data/app/assets/javascripts/Scene/Scene.profile.js +8 -0
- data/app/assets/javascripts/Scene/SceneMode.js +51 -0
- data/app/assets/javascripts/Scene/SceneTransitioner.js +776 -0
- data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1063 -0
- data/app/assets/javascripts/Scene/SensorVolumeCollection.js +192 -0
- data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +295 -0
- data/app/assets/javascripts/Scene/SkyAtmosphere.js +239 -0
- data/app/assets/javascripts/Scene/SkyBox.js +231 -0
- data/app/assets/javascripts/Scene/TerrainProvider.js +229 -0
- data/app/assets/javascripts/Scene/TexturePool.js +154 -0
- data/app/assets/javascripts/Scene/Tile.js +322 -0
- data/app/assets/javascripts/Scene/TileDiscardPolicy.js +42 -0
- data/app/assets/javascripts/Scene/TileImagery.js +36 -0
- data/app/assets/javascripts/Scene/TileLoadQueue.js +123 -0
- data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +337 -0
- data/app/assets/javascripts/Scene/TileReplacementQueue.js +139 -0
- data/app/assets/javascripts/Scene/TileState.js +19 -0
- data/app/assets/javascripts/Scene/TilingScheme.js +213 -0
- data/app/assets/javascripts/Scene/VerticalOrigin.js +39 -0
- data/app/assets/javascripts/Scene/ViewportQuad.js +256 -0
- data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +374 -0
- data/app/assets/javascripts/Scene/WebMercatorTilingScheme.js +291 -0
- data/app/assets/javascripts/Scene/package.json +6 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.glsl +30 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +31 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +68 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +54 -0
- data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +927 -0
- data/app/assets/javascripts/Shaders/BuiltinFunctions.js +322 -0
- data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +106 -0
- data/app/assets/javascripts/Shaders/CentralBodyFS.js +82 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.glsl +20 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +22 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.glsl +29 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +28 -0
- data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +88 -0
- data/app/assets/javascripts/Shaders/CentralBodyVS.js +69 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.glsl +9 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +13 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.glsl +12 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +15 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +448 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +361 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +19 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +20 -0
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +886 -0
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +586 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +126 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.glsl +14 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +18 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +40 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.js +38 -0
- data/app/assets/javascripts/Shaders/EllipsoidVS.glsl +26 -0
- data/app/assets/javascripts/Shaders/EllipsoidVS.js +16 -0
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.glsl +25 -0
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +23 -0
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.glsl +42 -0
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +36 -0
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.glsl +29 -0
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +27 -0
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.glsl +19 -0
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +20 -0
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +38 -0
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -0
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.glsl +17 -0
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +18 -0
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.glsl +23 -0
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +24 -0
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.glsl +12 -0
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +15 -0
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.glsl +28 -0
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +26 -0
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.glsl +19 -0
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +21 -0
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.glsl +13 -0
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +16 -0
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.glsl +14 -0
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +17 -0
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +29 -0
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +26 -0
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.glsl +17 -0
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/Water.glsl +91 -0
- data/app/assets/javascripts/Shaders/Materials/Water.js +60 -0
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.glsl +36 -0
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +31 -0
- data/app/assets/javascripts/Shaders/Noise.glsl +453 -0
- data/app/assets/javascripts/Shaders/Noise.js +242 -0
- data/app/assets/javascripts/Shaders/PolygonFS.glsl +27 -0
- data/app/assets/javascripts/Shaders/PolygonFS.js +23 -0
- data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +6 -0
- data/app/assets/javascripts/Shaders/PolygonFSPick.js +11 -0
- data/app/assets/javascripts/Shaders/PolygonVS.glsl +38 -0
- data/app/assets/javascripts/Shaders/PolygonVS.js +39 -0
- data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +30 -0
- data/app/assets/javascripts/Shaders/PolygonVSPick.js +32 -0
- data/app/assets/javascripts/Shaders/PolylineFS.glsl +6 -0
- data/app/assets/javascripts/Shaders/PolylineFS.js +11 -0
- data/app/assets/javascripts/Shaders/PolylineVS.glsl +34 -0
- data/app/assets/javascripts/Shaders/PolylineVS.js +35 -0
- data/app/assets/javascripts/Shaders/Ray.glsl +532 -0
- data/app/assets/javascripts/Shaders/Ray.js +357 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +26 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +22 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +11 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +14 -0
- data/app/assets/javascripts/Shaders/SensorVolume.glsl +43 -0
- data/app/assets/javascripts/Shaders/SensorVolume.js +31 -0
- data/app/assets/javascripts/Shaders/Shaders.profile.js +8 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +70 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +62 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.glsl +131 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +115 -0
- data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +10 -0
- data/app/assets/javascripts/Shaders/SkyBoxFS.js +14 -0
- data/app/assets/javascripts/Shaders/SkyBoxVS.glsl +10 -0
- data/app/assets/javascripts/Shaders/SkyBoxVS.js +14 -0
- data/app/assets/javascripts/Shaders/ViewportQuadFS.glsl +16 -0
- data/app/assets/javascripts/Shaders/ViewportQuadFS.js +17 -0
- data/app/assets/javascripts/Shaders/ViewportQuadVS.glsl +10 -0
- data/app/assets/javascripts/Shaders/ViewportQuadVS.js +14 -0
- data/app/assets/javascripts/Shaders/package.json +6 -0
- data/app/assets/javascripts/ThirdParty/ThirdParty.profile.js +8 -0
- data/app/assets/javascripts/ThirdParty/Tween.js +678 -0
- data/app/assets/javascripts/ThirdParty/Uri.js +277 -0
- data/app/assets/javascripts/ThirdParty/measureText.js +197 -0
- data/app/assets/javascripts/ThirdParty/package.json +6 -0
- data/app/assets/javascripts/ThirdParty/sprintf.js +319 -0
- data/app/assets/javascripts/ThirdParty/when.js +748 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +175 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +52 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +1237 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +4 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +349 -0
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +1 -0
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +47 -0
- data/app/assets/javascripts/Widgets/Dojo/checkForChromeFrame.js +71 -0
- data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
- data/app/assets/javascripts/Widgets/Images/Cesium_Logo_overlay.png +0 -0
- data/app/assets/javascripts/Widgets/Images/TimelineIcons.png +0 -0
- data/app/assets/javascripts/Widgets/Images/ajax-loader.gif +0 -0
- data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
- data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
- data/app/assets/javascripts/Widgets/Timeline.css +113 -0
- data/app/assets/javascripts/Widgets/Timeline.js +629 -0
- data/app/assets/javascripts/Widgets/TimelineHighlightRange.js +51 -0
- data/app/assets/javascripts/Widgets/TimelineTrack.js +54 -0
- data/app/assets/javascripts/Widgets/Widgets.profile.js +8 -0
- data/app/assets/javascripts/Widgets/package.json +6 -0
- data/app/assets/javascripts/Workers/Workers.profile.js +8 -0
- data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +2015 -0
- data/app/assets/javascripts/Workers/createTaskProcessorWorker.js +55 -0
- data/app/assets/javascripts/Workers/createVerticesFromExtent.js +24 -0
- data/app/assets/javascripts/Workers/package.json +6 -0
- data/app/assets/javascripts/copyrightHeader.js +22 -0
- data/app/assets/javascripts/main.js +10 -0
- data/app/assets/stylesheets/cesium.css +4 -0
- data/app/controllers/cesium_controller.rb +4 -0
- data/app/helpers/cesium_helper.rb +2 -0
- data/app/views/cesium/index.html.erb +3 -0
- data/config/routes.rb +3 -0
- data/lib/cesium.rb +4 -0
- data/lib/cesium/engine.rb +4 -0
- data/lib/cesium/version.rb +3 -0
- data/lib/tasks/cesium_tasks.rake +4 -0
- data/test/cesium_test.rb +7 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js.coffee +4 -0
- data/test/dummy/app/assets/javascripts/app.js.coffee +11 -0
- data/test/dummy/app/assets/javascripts/application.js.coffee +73 -0
- data/test/dummy/app/assets/stylesheets/application.css +12 -0
- data/test/dummy/app/controllers/application_controller.rb +4 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +21 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/requirejs.yml +10 -0
- data/test/dummy/config/routes.rb +3 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/functional/cesium_controller_test.rb +9 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +15 -0
- data/test/unit/helpers/cesium_helper_test.rb +4 -0
- 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
|
+
});
|